1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- 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';
- 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
|