1 | "use strict";
|
---|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
---|
3 | exports.FontMetrics = void 0;
|
---|
4 | var util_1 = require("../core/util");
|
---|
5 | var SAMPLE_TEXT = 'Hidden Text';
|
---|
6 | var FontMetrics = /** @class */ (function () {
|
---|
7 | function FontMetrics(document) {
|
---|
8 | this._data = {};
|
---|
9 | this._document = document;
|
---|
10 | }
|
---|
11 | FontMetrics.prototype.parseMetrics = function (fontFamily, fontSize) {
|
---|
12 | var container = this._document.createElement('div');
|
---|
13 | var img = this._document.createElement('img');
|
---|
14 | var span = this._document.createElement('span');
|
---|
15 | var body = this._document.body;
|
---|
16 | container.style.visibility = 'hidden';
|
---|
17 | container.style.fontFamily = fontFamily;
|
---|
18 | container.style.fontSize = fontSize;
|
---|
19 | container.style.margin = '0';
|
---|
20 | container.style.padding = '0';
|
---|
21 | container.style.whiteSpace = 'nowrap';
|
---|
22 | body.appendChild(container);
|
---|
23 | img.src = util_1.SMALL_IMAGE;
|
---|
24 | img.width = 1;
|
---|
25 | img.height = 1;
|
---|
26 | img.style.margin = '0';
|
---|
27 | img.style.padding = '0';
|
---|
28 | img.style.verticalAlign = 'baseline';
|
---|
29 | span.style.fontFamily = fontFamily;
|
---|
30 | span.style.fontSize = fontSize;
|
---|
31 | span.style.margin = '0';
|
---|
32 | span.style.padding = '0';
|
---|
33 | span.appendChild(this._document.createTextNode(SAMPLE_TEXT));
|
---|
34 | container.appendChild(span);
|
---|
35 | container.appendChild(img);
|
---|
36 | var baseline = img.offsetTop - span.offsetTop + 2;
|
---|
37 | container.removeChild(span);
|
---|
38 | container.appendChild(this._document.createTextNode(SAMPLE_TEXT));
|
---|
39 | container.style.lineHeight = 'normal';
|
---|
40 | img.style.verticalAlign = 'super';
|
---|
41 | var middle = img.offsetTop - container.offsetTop + 2;
|
---|
42 | body.removeChild(container);
|
---|
43 | return { baseline: baseline, middle: middle };
|
---|
44 | };
|
---|
45 | FontMetrics.prototype.getMetrics = function (fontFamily, fontSize) {
|
---|
46 | var key = fontFamily + " " + fontSize;
|
---|
47 | if (typeof this._data[key] === 'undefined') {
|
---|
48 | this._data[key] = this.parseMetrics(fontFamily, fontSize);
|
---|
49 | }
|
---|
50 | return this._data[key];
|
---|
51 | };
|
---|
52 | return FontMetrics;
|
---|
53 | }());
|
---|
54 | exports.FontMetrics = FontMetrics;
|
---|
55 | //# sourceMappingURL=font-metrics.js.map |
---|