@lightningjs/renderer 2.16.0 → 2.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/core/CoreTextureManager.js +1 -1
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.js +14 -32
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/core/CoreTextureManager.ts +1 -1
- package/src/core/TextureMemoryManager.ts +21 -38
- package/dist/exports/canvas-shaders.d.ts +0 -10
- package/dist/exports/canvas-shaders.js +0 -27
- package/dist/exports/canvas-shaders.js.map +0 -1
- package/dist/exports/webgl-shaders.d.ts +0 -11
- package/dist/exports/webgl-shaders.js +0 -28
- package/dist/exports/webgl-shaders.js.map +0 -1
- package/dist/src/core/platforms/Platform.d.ts +0 -37
- package/dist/src/core/platforms/Platform.js +0 -22
- package/dist/src/core/platforms/Platform.js.map +0 -1
- package/dist/src/core/platforms/web/WebPlatform.d.ts +0 -9
- package/dist/src/core/platforms/web/WebPlatform.js +0 -58
- package/dist/src/core/platforms/web/WebPlatform.js.map +0 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +0 -59
- package/dist/src/core/renderers/CoreShaderNode.js +0 -113
- package/dist/src/core/renderers/CoreShaderNode.js.map +0 -1
- package/dist/src/core/renderers/CoreShaderProgram.d.ts +0 -4
- package/dist/src/core/renderers/CoreShaderProgram.js +0 -20
- package/dist/src/core/renderers/CoreShaderProgram.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +0 -37
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +0 -215
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +0 -21
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +0 -57
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +0 -16
- package/dist/src/core/renderers/canvas/CanvasTexture.js +0 -124
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +0 -12
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +0 -55
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +0 -9
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +0 -38
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +0 -57
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +0 -224
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -44
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -125
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +0 -136
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +0 -573
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +0 -222
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js +0 -331
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +0 -35
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +0 -201
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +0 -1
- package/dist/src/core/shaders/canvas/Border.d.ts +0 -9
- package/dist/src/core/shaders/canvas/Border.js +0 -57
- package/dist/src/core/shaders/canvas/Border.js.map +0 -1
- package/dist/src/core/shaders/canvas/HolePunch.d.ts +0 -7
- package/dist/src/core/shaders/canvas/HolePunch.js +0 -38
- package/dist/src/core/shaders/canvas/HolePunch.js.map +0 -1
- package/dist/src/core/shaders/canvas/LinearGradient.d.ts +0 -10
- package/dist/src/core/shaders/canvas/LinearGradient.js +0 -48
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +0 -1
- package/dist/src/core/shaders/canvas/RadialGradient.d.ts +0 -11
- package/dist/src/core/shaders/canvas/RadialGradient.js +0 -70
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +0 -1
- package/dist/src/core/shaders/canvas/Rounded.d.ts +0 -7
- package/dist/src/core/shaders/canvas/Rounded.js +0 -33
- package/dist/src/core/shaders/canvas/Rounded.js.map +0 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +0 -7
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +0 -43
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +0 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +0 -8
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +0 -41
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +0 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +0 -7
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +0 -40
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +0 -1
- package/dist/src/core/shaders/canvas/Shadow.d.ts +0 -8
- package/dist/src/core/shaders/canvas/Shadow.js +0 -31
- package/dist/src/core/shaders/canvas/Shadow.js.map +0 -1
- package/dist/src/core/shaders/canvas/utils/render.d.ts +0 -5
- package/dist/src/core/shaders/canvas/utils/render.js +0 -84
- package/dist/src/core/shaders/canvas/utils/render.js.map +0 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +0 -37
- package/dist/src/core/shaders/templates/BorderTemplate.js +0 -73
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +0 -46
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +0 -35
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +0 -23
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js +0 -47
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +0 -31
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +0 -49
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +0 -29
- package/dist/src/core/shaders/templates/RoundedTemplate.js +0 -67
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +0 -7
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +0 -24
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +0 -6
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +0 -23
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +0 -6
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +0 -23
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +0 -34
- package/dist/src/core/shaders/templates/ShadowTemplate.js +0 -66
- package/dist/src/core/shaders/templates/ShadowTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/shaderUtils.d.ts +0 -5
- package/dist/src/core/shaders/templates/shaderUtils.js +0 -41
- package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
- package/dist/src/core/shaders/utils.d.ts +0 -5
- package/dist/src/core/shaders/utils.js +0 -41
- package/dist/src/core/shaders/utils.js.map +0 -1
- package/dist/src/core/shaders/webgl/Border.d.ts +0 -3
- package/dist/src/core/shaders/webgl/Border.js +0 -110
- package/dist/src/core/shaders/webgl/Border.js.map +0 -1
- package/dist/src/core/shaders/webgl/Default.d.ts +0 -2
- package/dist/src/core/shaders/webgl/Default.js +0 -86
- package/dist/src/core/shaders/webgl/Default.js.map +0 -1
- package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +0 -2
- package/dist/src/core/shaders/webgl/DefaultBatched.js +0 -104
- package/dist/src/core/shaders/webgl/DefaultBatched.js.map +0 -1
- package/dist/src/core/shaders/webgl/HolePunch.d.ts +0 -3
- package/dist/src/core/shaders/webgl/HolePunch.js +0 -65
- package/dist/src/core/shaders/webgl/HolePunch.js.map +0 -1
- package/dist/src/core/shaders/webgl/LinearGradient.d.ts +0 -3
- package/dist/src/core/shaders/webgl/LinearGradient.js +0 -76
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +0 -1
- package/dist/src/core/shaders/webgl/RadialGradient.d.ts +0 -3
- package/dist/src/core/shaders/webgl/RadialGradient.js +0 -74
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +0 -1
- package/dist/src/core/shaders/webgl/Rounded.d.ts +0 -7
- package/dist/src/core/shaders/webgl/Rounded.js +0 -86
- package/dist/src/core/shaders/webgl/Rounded.js.map +0 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +0 -3
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +0 -140
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +0 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +0 -3
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +0 -162
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +0 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +0 -3
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +0 -84
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +0 -1
- package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -32
- package/dist/src/core/shaders/webgl/SdfShader.js +0 -116
- package/dist/src/core/shaders/webgl/SdfShader.js.map +0 -1
- package/dist/src/core/shaders/webgl/Shadow.d.ts +0 -3
- package/dist/src/core/shaders/webgl/Shadow.js +0 -110
- package/dist/src/core/shaders/webgl/Shadow.js.map +0 -1
- package/dist/src/core/shaders/webgl/Spinner.d.ts +0 -1
- package/dist/src/core/shaders/webgl/Spinner.js +0 -2
- package/dist/src/core/shaders/webgl/Spinner.js.map +0 -1
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +0 -25
- package/dist/src/core/text-rendering/CanvasFontHandler.js +0 -117
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +0 -1
- package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +0 -6
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +0 -139
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +0 -137
- package/dist/src/core/text-rendering/SdfFontHandler.js +0 -336
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +0 -1
- package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +0 -21
- package/dist/src/core/text-rendering/SdfTextRenderer.js +0 -324
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/TextRenderer.d.ts +0 -425
- package/dist/src/core/text-rendering/TextRenderer.js +0 -70
- package/dist/src/core/text-rendering/TextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/Utils.d.ts +0 -71
- package/dist/src/core/text-rendering/Utils.js +0 -212
- package/dist/src/core/text-rendering/Utils.js.map +0 -1
- package/dist/src/core/text-rendering/canvas/Settings.d.ts +0 -53
- package/dist/src/core/text-rendering/canvas/Settings.js +0 -20
- package/dist/src/core/text-rendering/canvas/Settings.js.map +0 -1
- package/dist/src/core/text-rendering/canvas/Utils.d.ts +0 -19
- package/dist/src/core/text-rendering/canvas/Utils.js +0 -139
- package/dist/src/core/text-rendering/canvas/Utils.js.map +0 -1
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.d.ts +0 -37
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js +0 -188
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js.map +0 -1
- package/dist/src/core/text-rendering/canvas/draw.d.ts +0 -12
- package/dist/src/core/text-rendering/canvas/draw.js +0 -133
- package/dist/src/core/text-rendering/canvas/draw.js.map +0 -1
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.d.ts +0 -12
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.js +0 -61
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.js.map +0 -1
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.d.ts +0 -45
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js +0 -69
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js.map +0 -1
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
-
* following copyright and licenses apply:
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2025 Comcast Cable Communications Management, LLC.
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
|
-
import { calculateFontMetrics } from '../Utils.js';
|
|
20
|
-
import { wrapText, wrapWord, measureText, calcHeight } from './Utils.js';
|
|
21
|
-
import { getFontMetrics, setFontMetrics } from '../CanvasFontHandler.js';
|
|
22
|
-
import { TextAlign, TextBaselineValueToKey } from '../TextRenderer.js';
|
|
23
|
-
export function calculateRenderInfo({ context, settings, }) {
|
|
24
|
-
const precision = settings.precision;
|
|
25
|
-
const paddingLeft = settings.paddingLeft * precision;
|
|
26
|
-
const paddingRight = settings.paddingRight * precision;
|
|
27
|
-
const fontSize = settings.fontSize * precision;
|
|
28
|
-
let offsetY = settings.offsetY === null ? null : settings.offsetY * precision;
|
|
29
|
-
const w = settings.w * precision;
|
|
30
|
-
const h = settings.h * precision;
|
|
31
|
-
let wordWrapWidth = settings.wordWrapWidth * precision;
|
|
32
|
-
const cutSx = settings.cutSx * precision;
|
|
33
|
-
const cutEx = settings.cutEx * precision;
|
|
34
|
-
const cutSy = settings.cutSy * precision;
|
|
35
|
-
const cutEy = settings.cutEy * precision;
|
|
36
|
-
const letterSpacing = (settings.letterSpacing || 0) * precision;
|
|
37
|
-
const textIndent = settings.textIndent * precision;
|
|
38
|
-
const fontFamily = settings.fontFamily;
|
|
39
|
-
// Set font properties
|
|
40
|
-
context.font = `${settings.fontStyle} ${fontSize}px ${fontFamily}`;
|
|
41
|
-
context.textBaseline = TextBaselineValueToKey[settings.textBaseline];
|
|
42
|
-
let metrics = getFontMetrics(fontFamily);
|
|
43
|
-
if (metrics === null) {
|
|
44
|
-
metrics = calculateFontMetrics(context, fontFamily, fontSize);
|
|
45
|
-
setFontMetrics(fontFamily, metrics);
|
|
46
|
-
}
|
|
47
|
-
const defLineHeight = fontSize *
|
|
48
|
-
(metrics.ascender - metrics.descender + metrics.lineGap) *
|
|
49
|
-
precision;
|
|
50
|
-
const lineHeight = settings.lineHeight !== null
|
|
51
|
-
? settings.lineHeight * precision
|
|
52
|
-
: defLineHeight;
|
|
53
|
-
const maxHeight = settings.maxHeight;
|
|
54
|
-
const containedMaxLines = maxHeight !== null && lineHeight > 0
|
|
55
|
-
? Math.floor(maxHeight / lineHeight)
|
|
56
|
-
: 0;
|
|
57
|
-
const setMaxLines = settings.maxLines;
|
|
58
|
-
const calcMaxLines = containedMaxLines > 0 && setMaxLines > 0
|
|
59
|
-
? Math.min(containedMaxLines, setMaxLines)
|
|
60
|
-
: Math.max(containedMaxLines, setMaxLines);
|
|
61
|
-
const textOverflow = settings.textOverflow;
|
|
62
|
-
const wordWrap = settings.wordWrap;
|
|
63
|
-
// Total width
|
|
64
|
-
let width = w || 2048 / precision;
|
|
65
|
-
// Inner width
|
|
66
|
-
let innerWidth = width - paddingLeft;
|
|
67
|
-
if (innerWidth < 10) {
|
|
68
|
-
width += 10 - innerWidth;
|
|
69
|
-
innerWidth = 10;
|
|
70
|
-
}
|
|
71
|
-
if (wordWrapWidth === 0) {
|
|
72
|
-
wordWrapWidth = innerWidth;
|
|
73
|
-
}
|
|
74
|
-
// Text overflow
|
|
75
|
-
let text = settings.text;
|
|
76
|
-
if (textOverflow !== null && wordWrap === false) {
|
|
77
|
-
let suffix;
|
|
78
|
-
switch (textOverflow) {
|
|
79
|
-
case 'clip':
|
|
80
|
-
suffix = '';
|
|
81
|
-
break;
|
|
82
|
-
case 'ellipsis':
|
|
83
|
-
suffix = settings.overflowSuffix;
|
|
84
|
-
break;
|
|
85
|
-
default:
|
|
86
|
-
suffix = String(textOverflow);
|
|
87
|
-
}
|
|
88
|
-
text = wrapWord(context, text, wordWrapWidth - textIndent, suffix, letterSpacing);
|
|
89
|
-
}
|
|
90
|
-
// Word wrap
|
|
91
|
-
let linesInfo;
|
|
92
|
-
if (wordWrap === true) {
|
|
93
|
-
linesInfo = wrapText(context, text, wordWrapWidth, letterSpacing, textIndent);
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
linesInfo = { l: text.split(/(?:\r\n|\r|\n)/), n: [] };
|
|
97
|
-
const n = linesInfo.l.length;
|
|
98
|
-
for (let i = 0; i < n - 1; i++) {
|
|
99
|
-
linesInfo.n.push(i);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
let lines = linesInfo.l;
|
|
103
|
-
let remainingText = '';
|
|
104
|
-
let moreTextLines = false;
|
|
105
|
-
if (calcMaxLines > 0 && lines.length > calcMaxLines) {
|
|
106
|
-
const usedLines = lines.slice(0, calcMaxLines);
|
|
107
|
-
let otherLines = [];
|
|
108
|
-
const overflowSuffix = settings.overflowSuffix;
|
|
109
|
-
if (overflowSuffix.length > 0) {
|
|
110
|
-
const w = measureText(context, overflowSuffix, letterSpacing);
|
|
111
|
-
const al = wrapText(context, usedLines[usedLines.length - 1], wordWrapWidth - w, letterSpacing, textIndent);
|
|
112
|
-
usedLines[usedLines.length - 1] = `${al.l[0]}${overflowSuffix}`;
|
|
113
|
-
otherLines = [al.l.length > 1 ? al.l[1] : ''];
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
otherLines = [''];
|
|
117
|
-
}
|
|
118
|
-
// Re-assemble the remaining text
|
|
119
|
-
let i;
|
|
120
|
-
const n = lines.length;
|
|
121
|
-
let j = 0;
|
|
122
|
-
const m = linesInfo.n.length;
|
|
123
|
-
for (i = calcMaxLines; i < n; i++) {
|
|
124
|
-
otherLines[j] += `${otherLines[j] ? ' ' : ''}${lines[i] ?? ''}`;
|
|
125
|
-
if (i + 1 < m && linesInfo.n[i + 1] !== undefined) {
|
|
126
|
-
j++;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
remainingText = otherLines.join('\n');
|
|
130
|
-
moreTextLines = true;
|
|
131
|
-
lines = usedLines;
|
|
132
|
-
}
|
|
133
|
-
// Calculate text width
|
|
134
|
-
let maxLineWidth = 0;
|
|
135
|
-
const lineWidths = [];
|
|
136
|
-
for (let i = 0; i < lines.length; i++) {
|
|
137
|
-
const lineWidth = measureText(context, lines[i], letterSpacing) +
|
|
138
|
-
(i === 0 ? textIndent : 0);
|
|
139
|
-
lineWidths.push(lineWidth);
|
|
140
|
-
maxLineWidth = Math.max(maxLineWidth, lineWidth);
|
|
141
|
-
}
|
|
142
|
-
if (w === 0) {
|
|
143
|
-
width = maxLineWidth + paddingLeft + paddingRight;
|
|
144
|
-
innerWidth = maxLineWidth;
|
|
145
|
-
}
|
|
146
|
-
if (wordWrap === true &&
|
|
147
|
-
w > maxLineWidth &&
|
|
148
|
-
settings.textAlign === TextAlign.left &&
|
|
149
|
-
lines.length === 1) {
|
|
150
|
-
width = maxLineWidth + paddingLeft + paddingRight;
|
|
151
|
-
}
|
|
152
|
-
let height;
|
|
153
|
-
if (h > 0) {
|
|
154
|
-
height = h;
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
height = calcHeight(settings.textBaseline, fontSize, lineHeight, lines.length, offsetY);
|
|
158
|
-
}
|
|
159
|
-
if (offsetY === null) {
|
|
160
|
-
offsetY = fontSize;
|
|
161
|
-
}
|
|
162
|
-
return {
|
|
163
|
-
w: width,
|
|
164
|
-
h: height,
|
|
165
|
-
lines,
|
|
166
|
-
precision,
|
|
167
|
-
remainingText,
|
|
168
|
-
moreTextLines,
|
|
169
|
-
width,
|
|
170
|
-
innerWidth,
|
|
171
|
-
height,
|
|
172
|
-
fontSize,
|
|
173
|
-
cutSx,
|
|
174
|
-
cutSy,
|
|
175
|
-
cutEx,
|
|
176
|
-
cutEy,
|
|
177
|
-
lineHeight,
|
|
178
|
-
defLineHeight,
|
|
179
|
-
lineWidths,
|
|
180
|
-
offsetY: offsetY,
|
|
181
|
-
paddingLeft,
|
|
182
|
-
paddingRight,
|
|
183
|
-
letterSpacing,
|
|
184
|
-
textIndent,
|
|
185
|
-
metrics,
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
//# sourceMappingURL=calculateRenderInfo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"calculateRenderInfo.js","sourceRoot":"","sources":["../../../../../src/core/text-rendering/canvas/calculateRenderInfo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { RenderInfo } from './calculateRenderInfo.js';
|
|
2
|
-
import type { Settings } from './Settings.js';
|
|
3
|
-
export declare const draw: ({ canvas, context, renderInfo, settings, linesOverride, }: {
|
|
4
|
-
canvas: OffscreenCanvas | HTMLCanvasElement;
|
|
5
|
-
context: OffscreenCanvasRenderingContext2D | CanvasRenderingContext2D;
|
|
6
|
-
renderInfo: RenderInfo;
|
|
7
|
-
settings: Settings;
|
|
8
|
-
linesOverride?: {
|
|
9
|
-
lines: string[];
|
|
10
|
-
lineWidths: number[];
|
|
11
|
-
};
|
|
12
|
-
}) => void;
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
-
* following copyright and licenses apply:
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2025 Comcast Cable Communications Management, LLC.
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
|
-
import { getRgbaString } from '../../lib/utils.js';
|
|
20
|
-
import { calcHeight, measureText } from './Utils.js';
|
|
21
|
-
import { TextAlign, TextBaselineValueToKey, TextVerticalAlign } from '../TextRenderer.js';
|
|
22
|
-
const MAX_TEXTURE_DIMENSION = 4096;
|
|
23
|
-
export const draw = ({ canvas, context, renderInfo, settings, linesOverride, }) => {
|
|
24
|
-
const fontSize = renderInfo.fontSize;
|
|
25
|
-
const lineHeight = renderInfo.lineHeight;
|
|
26
|
-
const precision = settings.precision;
|
|
27
|
-
const lines = linesOverride?.lines || renderInfo.lines;
|
|
28
|
-
const lineWidths = linesOverride?.lineWidths || renderInfo.lineWidths;
|
|
29
|
-
const height = linesOverride !== undefined
|
|
30
|
-
? calcHeight(settings.textBaseline, fontSize, lineHeight, linesOverride.lines.length, settings.offsetY === null ? null : settings.offsetY * precision)
|
|
31
|
-
: renderInfo.height;
|
|
32
|
-
// Add extra margin to prevent issue with clipped text when scaling.
|
|
33
|
-
canvas.width = Math.min(Math.ceil(renderInfo.width + settings.textRenderIssueMargin), MAX_TEXTURE_DIMENSION);
|
|
34
|
-
canvas.height = Math.min(Math.ceil(height), MAX_TEXTURE_DIMENSION);
|
|
35
|
-
// Canvas context has been reset.
|
|
36
|
-
context.font = `${settings.fontStyle} ${fontSize}px ${settings.fontFamily}`;
|
|
37
|
-
context.textBaseline = TextBaselineValueToKey[settings.textBaseline];
|
|
38
|
-
if (fontSize >= 128) {
|
|
39
|
-
context.globalAlpha = 0.01;
|
|
40
|
-
context.fillRect(0, 0, 0.01, 0.01);
|
|
41
|
-
context.globalAlpha = 1.0;
|
|
42
|
-
}
|
|
43
|
-
if (renderInfo.cutSx || renderInfo.cutSy) {
|
|
44
|
-
context.translate(-renderInfo.cutSx, -renderInfo.cutSy);
|
|
45
|
-
}
|
|
46
|
-
let linePositionX;
|
|
47
|
-
let linePositionY;
|
|
48
|
-
const drawLines = [];
|
|
49
|
-
const metrics = renderInfo.metrics;
|
|
50
|
-
const ascenderPx = metrics ? metrics.ascender * fontSize : fontSize;
|
|
51
|
-
const bareLineHeightPx = metrics
|
|
52
|
-
? (metrics.ascender - metrics.descender) * fontSize
|
|
53
|
-
: fontSize;
|
|
54
|
-
for (let i = 0, n = lines.length; i < n; i++) {
|
|
55
|
-
linePositionX = i === 0 ? renderInfo.textIndent : 0;
|
|
56
|
-
linePositionY = i * lineHeight + ascenderPx;
|
|
57
|
-
if (settings.verticalAlign === TextVerticalAlign.middle) {
|
|
58
|
-
linePositionY += (lineHeight - bareLineHeightPx) / 2;
|
|
59
|
-
}
|
|
60
|
-
else if (settings.verticalAlign === TextVerticalAlign.bottom) {
|
|
61
|
-
linePositionY += lineHeight - bareLineHeightPx;
|
|
62
|
-
}
|
|
63
|
-
if (settings.textAlign === TextAlign.right) {
|
|
64
|
-
linePositionX += renderInfo.innerWidth - lineWidths[i];
|
|
65
|
-
}
|
|
66
|
-
else if (settings.textAlign === TextAlign.center) {
|
|
67
|
-
linePositionX += (renderInfo.innerWidth - lineWidths[i]) / 2;
|
|
68
|
-
}
|
|
69
|
-
linePositionX += renderInfo.paddingLeft;
|
|
70
|
-
drawLines.push({
|
|
71
|
-
text: lines[i],
|
|
72
|
-
x: linePositionX,
|
|
73
|
-
y: linePositionY,
|
|
74
|
-
w: lineWidths[i],
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
// Highlight
|
|
78
|
-
if (settings.highlight === true) {
|
|
79
|
-
const color = settings.highlightColor;
|
|
80
|
-
const hlHeight = settings.highlightHeight * precision || fontSize * 1.5;
|
|
81
|
-
const offset = settings.highlightOffset * precision;
|
|
82
|
-
const hlPaddingLeft = settings.highlightPaddingLeft !== null
|
|
83
|
-
? settings.highlightPaddingLeft * precision
|
|
84
|
-
: renderInfo.paddingLeft;
|
|
85
|
-
const hlPaddingRight = settings.highlightPaddingRight !== null
|
|
86
|
-
? settings.highlightPaddingRight * precision
|
|
87
|
-
: renderInfo.paddingRight;
|
|
88
|
-
context.fillStyle = getRgbaString(color);
|
|
89
|
-
for (let i = 0; i < drawLines.length; i++) {
|
|
90
|
-
const drawLine = drawLines[i];
|
|
91
|
-
context.fillRect(drawLine.x - hlPaddingLeft, drawLine.y - renderInfo.offsetY + offset, drawLine.w + hlPaddingRight + hlPaddingLeft, hlHeight);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
// Text shadow
|
|
95
|
-
let prevShadowSettings = null;
|
|
96
|
-
if (settings.shadow === true) {
|
|
97
|
-
prevShadowSettings = [
|
|
98
|
-
context.shadowColor,
|
|
99
|
-
context.shadowOffsetX,
|
|
100
|
-
context.shadowOffsetY,
|
|
101
|
-
context.shadowBlur,
|
|
102
|
-
];
|
|
103
|
-
context.shadowColor = getRgbaString(settings.shadowColor);
|
|
104
|
-
context.shadowOffsetX = settings.shadowOffsetX * precision;
|
|
105
|
-
context.shadowOffsetY = settings.shadowOffsetY * precision;
|
|
106
|
-
context.shadowBlur = settings.shadowBlur * precision;
|
|
107
|
-
}
|
|
108
|
-
context.fillStyle = getRgbaString(settings.textColor);
|
|
109
|
-
for (let i = 0, n = drawLines.length; i < n; i++) {
|
|
110
|
-
const drawLine = drawLines[i];
|
|
111
|
-
if (renderInfo.letterSpacing === 0) {
|
|
112
|
-
context.fillText(drawLine.text, drawLine.x, drawLine.y);
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
const textSplit = drawLine.text.split('');
|
|
116
|
-
let x = drawLine.x;
|
|
117
|
-
for (let i = 0, j = textSplit.length; i < j; i++) {
|
|
118
|
-
context.fillText(textSplit[i], x, drawLine.y);
|
|
119
|
-
x += measureText(context, textSplit[i], renderInfo.letterSpacing);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
if (prevShadowSettings) {
|
|
124
|
-
context.shadowColor = prevShadowSettings[0];
|
|
125
|
-
context.shadowOffsetX = prevShadowSettings[1];
|
|
126
|
-
context.shadowOffsetY = prevShadowSettings[2];
|
|
127
|
-
context.shadowBlur = prevShadowSettings[3];
|
|
128
|
-
}
|
|
129
|
-
if (renderInfo.cutSx || renderInfo.cutSy) {
|
|
130
|
-
context.translate(renderInfo.cutSx, renderInfo.cutSy);
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
//# sourceMappingURL=draw.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"draw.js","sourceRoot":"","sources":["../../../../../src/core/text-rendering/canvas/draw.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A wrapper Generator class that makes a generator peekable.
|
|
3
|
-
*/
|
|
4
|
-
export declare class PeekableIterator<T = unknown, TReturn = any, TNext = unknown> implements Iterator<T, TReturn, TNext> {
|
|
5
|
-
private iterator;
|
|
6
|
-
private peekBuffer;
|
|
7
|
-
private _lastIndex;
|
|
8
|
-
constructor(iterator: Iterator<T, TReturn, TNext>, indexBase?: number);
|
|
9
|
-
next(): IteratorResult<T, TReturn>;
|
|
10
|
-
peek(): IteratorResult<T, TReturn>;
|
|
11
|
-
get lastIndex(): number;
|
|
12
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
-
* following copyright and licenses apply:
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2023 Comcast Cable Communications Management, LLC.
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
|
-
/**
|
|
20
|
-
* A wrapper Generator class that makes a generator peekable.
|
|
21
|
-
*/
|
|
22
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
23
|
-
export class PeekableIterator {
|
|
24
|
-
iterator;
|
|
25
|
-
peekBuffer = [];
|
|
26
|
-
_lastIndex = -1;
|
|
27
|
-
constructor(iterator, indexBase = 0) {
|
|
28
|
-
this.iterator = iterator;
|
|
29
|
-
this.iterator = iterator;
|
|
30
|
-
this._lastIndex = indexBase - 1;
|
|
31
|
-
this.peekBuffer = [];
|
|
32
|
-
}
|
|
33
|
-
next() {
|
|
34
|
-
const nextResult = this.peekBuffer.length > 0
|
|
35
|
-
? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
36
|
-
this.peekBuffer.pop()
|
|
37
|
-
: this.iterator.next();
|
|
38
|
-
if (nextResult.done === true) {
|
|
39
|
-
this._lastIndex = -1;
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
this._lastIndex++;
|
|
43
|
-
}
|
|
44
|
-
return nextResult;
|
|
45
|
-
}
|
|
46
|
-
peek() {
|
|
47
|
-
if (this.peekBuffer.length > 0) {
|
|
48
|
-
// We know that the buffer is not empty, so we can safely use the
|
|
49
|
-
// non-null assertion operator
|
|
50
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
51
|
-
return this.peekBuffer[0];
|
|
52
|
-
}
|
|
53
|
-
const result = this.iterator.next();
|
|
54
|
-
this.peekBuffer.push(result);
|
|
55
|
-
return result;
|
|
56
|
-
}
|
|
57
|
-
get lastIndex() {
|
|
58
|
-
return this._lastIndex;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=PeekableGenerator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PeekableGenerator.js","sourceRoot":"","sources":["../../../../../src/core/text-rendering/sdf/PeekableGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;GAEG;AACH,8DAA8D;AAC9D,MAAM,OAAO,gBAAgB;IAMP;IAHZ,UAAU,GAAiC,EAAE,CAAC;IAC9C,UAAU,GAAG,CAAC,CAAC,CAAC;IAExB,YAAoB,QAAqC,EAAE,SAAS,GAAG,CAAC;QAApD,aAAQ,GAAR,QAAQ,CAA6B;QACvD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;IAED,IAAI;QACF,MAAM,UAAU,GACd,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YACxB,CAAC,CAAC,oEAAoE;gBACpE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAG;YACxB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE3B,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,iEAAiE;YACjE,8BAA8B;YAC9B,oEAAoE;YACpE,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC;QAC7B,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import type { PeekableIterator } from './PeekableGenerator.js';
|
|
2
|
-
/**
|
|
3
|
-
* Minimal glyph info for performance-focused text shaping
|
|
4
|
-
*/
|
|
5
|
-
export interface SimpleGlyphInfo {
|
|
6
|
-
/**
|
|
7
|
-
* Whether the character was successfully mapped to a glyph
|
|
8
|
-
*/
|
|
9
|
-
mapped: boolean;
|
|
10
|
-
/**
|
|
11
|
-
* Unicode codepoint
|
|
12
|
-
*/
|
|
13
|
-
codepoint: number;
|
|
14
|
-
/**
|
|
15
|
-
* How much to advance horizontally after rendering this glyph
|
|
16
|
-
*/
|
|
17
|
-
xAdvance: number;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Minimal font shaper properties
|
|
21
|
-
*/
|
|
22
|
-
export interface FontShaperProps {
|
|
23
|
-
/**
|
|
24
|
-
* Font family name
|
|
25
|
-
*/
|
|
26
|
-
fontFamily: string;
|
|
27
|
-
/**
|
|
28
|
-
* Font size in pixels
|
|
29
|
-
*/
|
|
30
|
-
fontSize: number;
|
|
31
|
-
/**
|
|
32
|
-
* Letter spacing in pixels
|
|
33
|
-
*/
|
|
34
|
-
letterSpacing: number;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Functional font shaper interface
|
|
38
|
-
*/
|
|
39
|
-
export interface FontShaper {
|
|
40
|
-
shapeText: (props: FontShaperProps, codepoints: PeekableIterator<number>) => Generator<SimpleGlyphInfo, void>;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Create a simple SDF font shaper
|
|
44
|
-
*/
|
|
45
|
-
export declare const createSdfFontShaper: () => FontShaper;
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
-
* following copyright and licenses apply:
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2025 Comcast Cable Communications Management, LLC.
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
|
-
import * as SdfFontHandler from '../SdfFontHandler.js';
|
|
20
|
-
/**
|
|
21
|
-
* Create a simple SDF font shaper
|
|
22
|
-
*/
|
|
23
|
-
export const createSdfFontShaper = () => ({
|
|
24
|
-
shapeText: function* (props, codepoints) {
|
|
25
|
-
// Host paths on top
|
|
26
|
-
const fontFamily = props.fontFamily;
|
|
27
|
-
const fontSize = props.fontSize;
|
|
28
|
-
const letterSpacing = props.letterSpacing;
|
|
29
|
-
const fontData = SdfFontHandler.getFontData(fontFamily);
|
|
30
|
-
if (fontData === null)
|
|
31
|
-
return;
|
|
32
|
-
const fontScale = fontSize / fontData.common.lineHeight;
|
|
33
|
-
let prevCodepoint = 0;
|
|
34
|
-
while (true) {
|
|
35
|
-
const result = codepoints.next();
|
|
36
|
-
if (result.done)
|
|
37
|
-
break;
|
|
38
|
-
const codepoint = result.value;
|
|
39
|
-
if (!codepoint)
|
|
40
|
-
continue;
|
|
41
|
-
// Get glyph data
|
|
42
|
-
const glyph = SdfFontHandler.getGlyph(fontFamily, codepoint);
|
|
43
|
-
if (glyph === null) {
|
|
44
|
-
yield {
|
|
45
|
-
mapped: false,
|
|
46
|
-
codepoint,
|
|
47
|
-
xAdvance: 0,
|
|
48
|
-
};
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
51
|
-
// Calculate advance with kerning
|
|
52
|
-
let advance = glyph.xadvance * fontScale;
|
|
53
|
-
// Add kerning if there's a previous character
|
|
54
|
-
if (prevCodepoint !== 0) {
|
|
55
|
-
const kerning = SdfFontHandler.getKerning(fontFamily, prevCodepoint, codepoint);
|
|
56
|
-
advance += kerning * fontScale;
|
|
57
|
-
}
|
|
58
|
-
// Add letter spacing
|
|
59
|
-
advance += letterSpacing;
|
|
60
|
-
yield {
|
|
61
|
-
mapped: true,
|
|
62
|
-
codepoint,
|
|
63
|
-
xAdvance: advance,
|
|
64
|
-
};
|
|
65
|
-
prevCodepoint = codepoint;
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
});
|
|
69
|
-
//# sourceMappingURL=SimpleFontShaper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleFontShaper.js","sourceRoot":"","sources":["../../../../../src/core/text-rendering/sdf/SimpleFontShaper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AAgDvD;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAe,EAAE,CAAC,CAAC;IACpD,SAAS,EAAE,QAAQ,CAAC,EAClB,KAAsB,EACtB,UAAoC;QAEpC,oBAAoB;QACpB,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QAE1C,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO;QAE9B,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;QACxD,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,IAAI;gBAAE,MAAM;YAEvB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,SAAS;gBAAE,SAAS;YAEzB,iBAAiB;YACjB,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC7D,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,MAAM;oBACJ,MAAM,EAAE,KAAK;oBACb,SAAS;oBACT,QAAQ,EAAE,CAAC;iBACZ,CAAC;gBACF,SAAS;YACX,CAAC;YAED,iCAAiC;YACjC,IAAI,OAAO,GAAG,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;YAEzC,8CAA8C;YAC9C,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CACvC,UAAU,EACV,aAAa,EACb,SAAS,CACV,CAAC;gBACF,OAAO,IAAI,OAAO,GAAG,SAAS,CAAC;YACjC,CAAC;YAED,qBAAqB;YACrB,OAAO,IAAI,aAAa,CAAC;YAEzB,MAAM;gBACJ,MAAM,EAAE,IAAI;gBACZ,SAAS;gBACT,QAAQ,EAAE,OAAO;aAClB,CAAC;YAEF,aAAa,GAAG,SAAS,CAAC;QAC5B,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
|