goog.provide('webfont.FontRuler'); /** * An element that can be used to measure the metrics * of a given font and string. * @constructor * @param {webfont.DomHelper} domHelper * @param {string} fontTestString */ webfont.FontRuler = function (domHelper, fontTestString) { this.domHelper_ = domHelper; this.fontTestString_ = fontTestString; this.el_ = this.domHelper_.createElement('span', { "aria-hidden": "true" }, this.fontTestString_); }; goog.scope(function () { var FontRuler = webfont.FontRuler; /** * @param {webfont.Font} font */ FontRuler.prototype.setFont = function(font) { this.domHelper_.setStyle(this.el_, this.computeStyleString_(font)); }; /** * Inserts the ruler into the DOM. */ FontRuler.prototype.insert = function() { this.domHelper_.insertInto('body', this.el_); }; /** * @private * @param {webfont.Font} font * @return {string} */ FontRuler.prototype.computeStyleString_ = function(font) { return "display:block;position:absolute;top:-9999px;left:-9999px;" + "font-size:300px;width:auto;height:auto;line-height:normal;margin:0;" + "padding:0;font-variant:normal;white-space:nowrap;font-family:" + font.getCssName() + ";" + font.getCssVariation(); }; /** * @return {number} */ FontRuler.prototype.getWidth = function() { return this.el_.offsetWidth; }; /** * Removes the ruler element from the DOM. */ FontRuler.prototype.remove = function() { this.domHelper_.removeElement(this.el_); }; });