| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | "use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.FontMetrics = void 0;var util_1 = require("../core/util");var SAMPLE_TEXT = 'Hidden Text';var FontMetrics = /** @class */ (function () {    function FontMetrics(document) {        this._data = {};        this._document = document;    }    FontMetrics.prototype.parseMetrics = function (fontFamily, fontSize) {        var container = this._document.createElement('div');        var img = this._document.createElement('img');        var span = this._document.createElement('span');        var body = this._document.body;        container.style.visibility = 'hidden';        container.style.fontFamily = fontFamily;        container.style.fontSize = fontSize;        container.style.margin = '0';        container.style.padding = '0';        container.style.whiteSpace = 'nowrap';        body.appendChild(container);        img.src = util_1.SMALL_IMAGE;        img.width = 1;        img.height = 1;        img.style.margin = '0';        img.style.padding = '0';        img.style.verticalAlign = 'baseline';        span.style.fontFamily = fontFamily;        span.style.fontSize = fontSize;        span.style.margin = '0';        span.style.padding = '0';        span.appendChild(this._document.createTextNode(SAMPLE_TEXT));        container.appendChild(span);        container.appendChild(img);        var baseline = img.offsetTop - span.offsetTop + 2;        container.removeChild(span);        container.appendChild(this._document.createTextNode(SAMPLE_TEXT));        container.style.lineHeight = 'normal';        img.style.verticalAlign = 'super';        var middle = img.offsetTop - container.offsetTop + 2;        body.removeChild(container);        return { baseline: baseline, middle: middle };    };    FontMetrics.prototype.getMetrics = function (fontFamily, fontSize) {        var key = fontFamily + " " + fontSize;        if (typeof this._data[key] === 'undefined') {            this._data[key] = this.parseMetrics(fontFamily, fontSize);        }        return this._data[key];    };    return FontMetrics;}());exports.FontMetrics = FontMetrics;//# sourceMappingURL=font-metrics.js.map
 |