postext 1.29.2 → 1.30.1
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/__tests__/arabicLocale.test.js +5 -5
- package/dist/__tests__/arabicLocale.test.js.map +1 -1
- package/dist/__tests__/bundle/balloonPlacementPin.test.js +5 -4
- package/dist/__tests__/bundle/balloonPlacementPin.test.js.map +1 -1
- package/dist/__tests__/bundle/cjkRulesPin.test.js +8 -6
- package/dist/__tests__/bundle/cjkRulesPin.test.js.map +1 -1
- package/dist/__tests__/bundle/designOverflowPin.test.js +1 -1
- package/dist/__tests__/bundle/flowColumnsPin.test.js +4 -3
- package/dist/__tests__/bundle/flowColumnsPin.test.js.map +1 -1
- package/dist/__tests__/bundle/gridBalancingPin.test.js +5 -4
- package/dist/__tests__/bundle/gridBalancingPin.test.js.map +1 -1
- package/dist/__tests__/bundle/gridBreakRulesPin.test.js +14 -10
- package/dist/__tests__/bundle/gridBreakRulesPin.test.js.map +1 -1
- package/dist/__tests__/bundle/indexGroupSplitPin.test.js +4 -3
- package/dist/__tests__/bundle/indexGroupSplitPin.test.js.map +1 -1
- package/dist/__tests__/bundle/looseOrderPin.test.js +5 -4
- package/dist/__tests__/bundle/looseOrderPin.test.js.map +1 -1
- package/dist/__tests__/bundle/refLabelBreaksPin.test.js +5 -4
- package/dist/__tests__/bundle/refLabelBreaksPin.test.js.map +1 -1
- package/dist/__tests__/bundle/scriptContextPin.test.js +6 -5
- package/dist/__tests__/bundle/scriptContextPin.test.js.map +1 -1
- package/dist/__tests__/bundle/shapingLanguagePin.test.js +142 -46
- package/dist/__tests__/bundle/shapingLanguagePin.test.js.map +1 -1
- package/dist/__tests__/bundle/taskBoxPin.test.js +1 -1
- package/dist/__tests__/bundle/trailingStepPin.test.js +4 -3
- package/dist/__tests__/bundle/trailingStepPin.test.js.map +1 -1
- package/dist/__tests__/bundle/wideFloatStretchPin.test.js +4 -3
- package/dist/__tests__/bundle/wideFloatStretchPin.test.js.map +1 -1
- package/dist/__tests__/bundle.test.js +1 -1
- package/dist/__tests__/cellText.test.d.ts +2 -0
- package/dist/__tests__/cellText.test.d.ts.map +1 -0
- package/dist/__tests__/cellText.test.js +281 -0
- package/dist/__tests__/cellText.test.js.map +1 -0
- package/dist/__tests__/chineseLocale.test.js +13 -11
- package/dist/__tests__/chineseLocale.test.js.map +1 -1
- package/dist/__tests__/cjk/japaneseHtml.test.js +3 -3
- package/dist/__tests__/cjk/japaneseHtml.test.js.map +1 -1
- package/dist/__tests__/cjk/japaneseRuby.test.js +1 -1
- package/dist/__tests__/cjk/japaneseRuby.test.js.map +1 -1
- package/dist/__tests__/cjk/japaneseSegmentLanguage.test.js +3 -3
- package/dist/__tests__/cjk/japaneseSegmentLanguage.test.js.map +1 -1
- package/dist/__tests__/codeBlocks.test.js +1 -1
- package/dist/__tests__/contextText.test.d.ts +2 -0
- package/dist/__tests__/contextText.test.d.ts.map +1 -0
- package/dist/__tests__/contextText.test.js +371 -0
- package/dist/__tests__/contextText.test.js.map +1 -0
- package/dist/__tests__/design/designTextRender.test.js +8 -1
- package/dist/__tests__/design/designTextRender.test.js.map +1 -1
- package/dist/__tests__/exports.test.js +6 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/__tests__/fontUsage.test.js +40 -0
- package/dist/__tests__/fontUsage.test.js.map +1 -1
- package/dist/__tests__/hardBreaks.test.js +1 -1
- package/dist/__tests__/headingInlineMarks.test.js +1 -1
- package/dist/__tests__/html-backend.test.js +6 -2
- package/dist/__tests__/html-backend.test.js.map +1 -1
- package/dist/__tests__/japaneseNotes.test.js +4 -2
- package/dist/__tests__/japaneseNotes.test.js.map +1 -1
- package/dist/__tests__/lineEndPieces.test.d.ts +2 -0
- package/dist/__tests__/lineEndPieces.test.d.ts.map +1 -0
- package/dist/__tests__/lineEndPieces.test.js +374 -0
- package/dist/__tests__/lineEndPieces.test.js.map +1 -0
- package/dist/__tests__/mathSizeMigration.test.js +2 -2
- package/dist/__tests__/pipeline/calloutInlineResourceGap.test.js +1 -1
- package/dist/__tests__/pipeline/calloutSplitMinLinesChild.test.js +1 -1
- package/dist/__tests__/pipeline/colonListRoom.test.js +1 -1
- package/dist/__tests__/pipeline/compoundBreaks.test.js +1 -1
- package/dist/__tests__/pipeline/dashBreaks.test.js +1 -1
- package/dist/__tests__/pipeline/headingSplitOrphans.test.js +1 -1
- package/dist/__tests__/pipeline/inlineFigureSpace.test.js +1 -1
- package/dist/__tests__/pipeline/paragraphContainerTail.test.js +1 -1
- package/dist/__tests__/pipeline/raggedOptimal.test.js +1 -1
- package/dist/__tests__/plainGeminateHead.test.d.ts +2 -0
- package/dist/__tests__/plainGeminateHead.test.d.ts.map +1 -0
- package/dist/__tests__/plainGeminateHead.test.js +92 -0
- package/dist/__tests__/plainGeminateHead.test.js.map +1 -0
- package/dist/__tests__/presets/showcaseShapingLanguage.test.d.ts +2 -0
- package/dist/__tests__/presets/showcaseShapingLanguage.test.d.ts.map +1 -0
- package/dist/__tests__/presets/showcaseShapingLanguage.test.js +52 -0
- package/dist/__tests__/presets/showcaseShapingLanguage.test.js.map +1 -0
- package/dist/__tests__/reshapedTracking.test.d.ts +2 -0
- package/dist/__tests__/reshapedTracking.test.d.ts.map +1 -0
- package/dist/__tests__/reshapedTracking.test.js +358 -0
- package/dist/__tests__/reshapedTracking.test.js.map +1 -0
- package/dist/__tests__/rtl/designRunsPainted.test.d.ts +2 -0
- package/dist/__tests__/rtl/designRunsPainted.test.d.ts.map +1 -0
- package/dist/__tests__/rtl/designRunsPainted.test.js +184 -0
- package/dist/__tests__/rtl/designRunsPainted.test.js.map +1 -0
- package/dist/__tests__/rtl/designTextPaint.test.js +5 -1
- package/dist/__tests__/rtl/designTextPaint.test.js.map +1 -1
- package/dist/__tests__/rtl/htmlRtl.test.js +3 -3
- package/dist/__tests__/rtl/htmlRtl.test.js.map +1 -1
- package/dist/__tests__/rtl/listMarkerDirection.test.js +28 -28
- package/dist/__tests__/rtl/listMarkerDirection.test.js.map +1 -1
- package/dist/__tests__/rtl/tocNumberPainted.test.d.ts +2 -0
- package/dist/__tests__/rtl/tocNumberPainted.test.d.ts.map +1 -0
- package/dist/__tests__/rtl/tocNumberPainted.test.js +113 -0
- package/dist/__tests__/rtl/tocNumberPainted.test.js.map +1 -0
- package/dist/__tests__/scriptContext.test.js +141 -1
- package/dist/__tests__/scriptContext.test.js.map +1 -1
- package/dist/__tests__/shapingLanguage.test.js +54 -41
- package/dist/__tests__/shapingLanguage.test.js.map +1 -1
- package/dist/__tests__/trackedLetters.test.d.ts +2 -0
- package/dist/__tests__/trackedLetters.test.d.ts.map +1 -0
- package/dist/__tests__/trackedLetters.test.js +380 -0
- package/dist/__tests__/trackedLetters.test.js.map +1 -0
- package/dist/__tests__/trackedLigatures.test.js +17 -5
- package/dist/__tests__/trackedLigatures.test.js.map +1 -1
- package/dist/__tests__/verseLines.test.js +1 -1
- package/dist/__tests__/wordCacheOrder.test.d.ts +2 -0
- package/dist/__tests__/wordCacheOrder.test.d.ts.map +1 -0
- package/dist/__tests__/wordCacheOrder.test.js +352 -0
- package/dist/__tests__/wordCacheOrder.test.js.map +1 -0
- package/dist/__tests__/wordPieces.test.d.ts +2 -0
- package/dist/__tests__/wordPieces.test.d.ts.map +1 -0
- package/dist/__tests__/wordPieces.test.js +762 -0
- package/dist/__tests__/wordPieces.test.js.map +1 -0
- package/dist/bidi.d.ts +12 -0
- package/dist/bidi.d.ts.map +1 -1
- package/dist/bidi.js +23 -0
- package/dist/bidi.js.map +1 -1
- package/dist/bundle/configVersion.d.ts +49 -23
- package/dist/bundle/configVersion.d.ts.map +1 -1
- package/dist/bundle/configVersion.js +54 -25
- package/dist/bundle/configVersion.js.map +1 -1
- package/dist/canvas-backend/blockRender.d.ts.map +1 -1
- package/dist/canvas-backend/blockRender.js +58 -27
- package/dist/canvas-backend/blockRender.js.map +1 -1
- package/dist/canvas-backend/cellText.d.ts +12 -0
- package/dist/canvas-backend/cellText.d.ts.map +1 -0
- package/dist/canvas-backend/cellText.js +114 -0
- package/dist/canvas-backend/cellText.js.map +1 -0
- package/dist/canvas-backend/chip.d.ts.map +1 -1
- package/dist/canvas-backend/chip.js +2 -1
- package/dist/canvas-backend/chip.js.map +1 -1
- package/dist/canvas-backend/contextState.d.ts +7 -0
- package/dist/canvas-backend/contextState.d.ts.map +1 -1
- package/dist/canvas-backend/contextState.js +7 -0
- package/dist/canvas-backend/contextState.js.map +1 -1
- package/dist/canvas-backend/contextText.d.ts +76 -0
- package/dist/canvas-backend/contextText.d.ts.map +1 -0
- package/dist/canvas-backend/contextText.js +102 -0
- package/dist/canvas-backend/contextText.js.map +1 -0
- package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
- package/dist/canvas-backend/headerFooter.js +8 -1
- package/dist/canvas-backend/headerFooter.js.map +1 -1
- package/dist/canvas-backend/index.d.ts.map +1 -1
- package/dist/canvas-backend/index.js +19 -13
- package/dist/canvas-backend/index.js.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.js +12 -6
- package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
- package/dist/canvas-backend/scriptText.d.ts.map +1 -1
- package/dist/canvas-backend/scriptText.js +3 -2
- package/dist/canvas-backend/scriptText.js.map +1 -1
- package/dist/canvas-backend/segmentText.d.ts.map +1 -1
- package/dist/canvas-backend/segmentText.js +8 -2
- package/dist/canvas-backend/segmentText.js.map +1 -1
- package/dist/canvas-backend/trackedText.d.ts +75 -1
- package/dist/canvas-backend/trackedText.d.ts.map +1 -1
- package/dist/canvas-backend/trackedText.js +185 -22
- package/dist/canvas-backend/trackedText.js.map +1 -1
- package/dist/canvas-backend/verticalText.d.ts +9 -0
- package/dist/canvas-backend/verticalText.d.ts.map +1 -1
- package/dist/canvas-backend/verticalText.js +29 -7
- package/dist/canvas-backend/verticalText.js.map +1 -1
- package/dist/canvas-backend/wordPieces.d.ts +31 -0
- package/dist/canvas-backend/wordPieces.d.ts.map +1 -0
- package/dist/canvas-backend/wordPieces.js +132 -0
- package/dist/canvas-backend/wordPieces.js.map +1 -0
- package/dist/canvas-backend/wordRuns.d.ts +3 -1
- package/dist/canvas-backend/wordRuns.d.ts.map +1 -1
- package/dist/canvas-backend/wordRuns.js +10 -6
- package/dist/canvas-backend/wordRuns.js.map +1 -1
- package/dist/comics/lettering/__tests__/fitAsPainted.test.d.ts +2 -0
- package/dist/comics/lettering/__tests__/fitAsPainted.test.d.ts.map +1 -0
- package/dist/comics/lettering/__tests__/fitAsPainted.test.js +97 -0
- package/dist/comics/lettering/__tests__/fitAsPainted.test.js.map +1 -0
- package/dist/comics/lettering/shape-text.d.ts.map +1 -1
- package/dist/comics/lettering/shape-text.js +39 -11
- package/dist/comics/lettering/shape-text.js.map +1 -1
- package/dist/defaults/bodyText.d.ts.map +1 -1
- package/dist/defaults/bodyText.js +6 -5
- package/dist/defaults/bodyText.js.map +1 -1
- package/dist/design/bidiText.d.ts +45 -6
- package/dist/design/bidiText.d.ts.map +1 -1
- package/dist/design/bidiText.js +78 -10
- package/dist/design/bidiText.js.map +1 -1
- package/dist/design/cjkText.d.ts +3 -0
- package/dist/design/cjkText.d.ts.map +1 -1
- package/dist/design/cjkText.js +1 -1
- package/dist/design/cjkText.js.map +1 -1
- package/dist/design/layout.d.ts.map +1 -1
- package/dist/design/layout.js +36 -5
- package/dist/design/layout.js.map +1 -1
- package/dist/design/richText.d.ts +9 -1
- package/dist/design/richText.d.ts.map +1 -1
- package/dist/design/richText.js +8 -2
- package/dist/design/richText.js.map +1 -1
- package/dist/fonts/usage.d.ts +2 -0
- package/dist/fonts/usage.d.ts.map +1 -1
- package/dist/fonts/usage.js +18 -0
- package/dist/fonts/usage.js.map +1 -1
- package/dist/html-backend.d.ts.map +1 -1
- package/dist/html-backend.js +664 -84
- package/dist/html-backend.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/knuthPlass/breakpoints.d.ts.map +1 -1
- package/dist/knuthPlass/breakpoints.js +4 -2
- package/dist/knuthPlass/breakpoints.js.map +1 -1
- package/dist/knuthPlass/pretextAdapter.d.ts +6 -3
- package/dist/knuthPlass/pretextAdapter.d.ts.map +1 -1
- package/dist/knuthPlass/pretextAdapter.js +11 -3
- package/dist/knuthPlass/pretextAdapter.js.map +1 -1
- package/dist/knuthPlass/richAdapter.d.ts +13 -1
- package/dist/knuthPlass/richAdapter.d.ts.map +1 -1
- package/dist/knuthPlass/richAdapter.js +53 -5
- package/dist/knuthPlass/richAdapter.js.map +1 -1
- package/dist/knuthPlass/tracking.d.ts.map +1 -1
- package/dist/knuthPlass/tracking.js +3 -2
- package/dist/knuthPlass/tracking.js.map +1 -1
- package/dist/knuthPlass/types.d.ts +6 -0
- package/dist/knuthPlass/types.d.ts.map +1 -1
- package/dist/locale.d.ts +21 -17
- package/dist/locale.d.ts.map +1 -1
- package/dist/locale.js +23 -19
- package/dist/locale.js.map +1 -1
- package/dist/measure/canvas.d.ts +21 -0
- package/dist/measure/canvas.d.ts.map +1 -1
- package/dist/measure/canvas.js +165 -85
- package/dist/measure/canvas.js.map +1 -1
- package/dist/measure/cjkCompose.d.ts.map +1 -1
- package/dist/measure/cjkCompose.js +31 -5
- package/dist/measure/cjkCompose.js.map +1 -1
- package/dist/measure/plain.d.ts.map +1 -1
- package/dist/measure/plain.js +31 -6
- package/dist/measure/plain.js.map +1 -1
- package/dist/measure/pretextLanguage.d.ts.map +1 -1
- package/dist/measure/pretextLanguage.js +49 -7
- package/dist/measure/pretextLanguage.js.map +1 -1
- package/dist/measure/rich.d.ts +18 -1
- package/dist/measure/rich.d.ts.map +1 -1
- package/dist/measure/rich.js +200 -29
- package/dist/measure/rich.js.map +1 -1
- package/dist/measure/script.d.ts +17 -1
- package/dist/measure/script.d.ts.map +1 -1
- package/dist/measure/script.js +17 -1
- package/dist/measure/script.js.map +1 -1
- package/dist/measure/trackedLigatures.d.ts +59 -0
- package/dist/measure/trackedLigatures.d.ts.map +1 -0
- package/dist/measure/trackedLigatures.js +144 -0
- package/dist/measure/trackedLigatures.js.map +1 -0
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +4 -3
- package/dist/pipeline/build.js.map +1 -1
- package/dist/pipeline/calloutLayout.d.ts.map +1 -1
- package/dist/pipeline/calloutLayout.js +26 -7
- package/dist/pipeline/calloutLayout.js.map +1 -1
- package/dist/pipeline/lists.d.ts +13 -4
- package/dist/pipeline/lists.d.ts.map +1 -1
- package/dist/pipeline/lists.js +49 -12
- package/dist/pipeline/lists.js.map +1 -1
- package/dist/pipeline/toc.d.ts.map +1 -1
- package/dist/pipeline/toc.js +33 -9
- package/dist/pipeline/toc.js.map +1 -1
- package/dist/types.d.ts +35 -26
- package/dist/types.d.ts.map +1 -1
- package/dist/wordPieces.d.ts +120 -0
- package/dist/wordPieces.d.ts.map +1 -0
- package/dist/wordPieces.js +319 -0
- package/dist/wordPieces.js.map +1 -0
- package/package.json +1 -1
package/dist/measure/canvas.js
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { cjkMarkPieces } from './cjkClasses';
|
|
2
2
|
import { hasCJK } from './cjk';
|
|
3
3
|
import { fontStringFamily } from './fontString';
|
|
4
|
-
let _measureCtx = null;
|
|
5
|
-
/** Font string currently set on the measure context, to skip redundant
|
|
6
|
-
* `ctx.font` assignments (each assignment re-parses the shorthand). */
|
|
7
|
-
let _currentFont = '';
|
|
8
4
|
// The language text is measured in (#764).
|
|
9
5
|
//
|
|
10
6
|
// A 2D context has a language (`ctx.lang`, Chrome 136 and later), which the
|
|
@@ -27,30 +23,141 @@ let _currentFont = '';
|
|
|
27
23
|
const HOST_LANGUAGE = 'inherit';
|
|
28
24
|
/** The language set by {@link setMeasureLanguage}; undefined: the host's. */
|
|
29
25
|
let _language;
|
|
30
|
-
/** What `lang` of the measuring context was last set to. */
|
|
31
|
-
let _ctxLanguage = HOST_LANGUAGE;
|
|
32
26
|
/** Give `ctx` the language measured in, where the context has one. */
|
|
33
27
|
function applyLanguage(ctx, language) {
|
|
34
28
|
if ('lang' in ctx)
|
|
35
29
|
ctx.lang = language ?? HOST_LANGUAGE;
|
|
36
30
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
31
|
+
// A width that does not depend on what was measured before (#770).
|
|
32
|
+
//
|
|
33
|
+
// Chrome's canvas keeps the words it shaped, by context, font and
|
|
34
|
+
// language, under the word's text alone: a word is what stands between
|
|
35
|
+
// two spaces in one bidi run, cut before a Han character. The key says
|
|
36
|
+
// nothing of how the word was shaped, and there are two ways. A string of
|
|
37
|
+
// Latin-1 characters reaches the shaper one byte a character and is all
|
|
38
|
+
// Latin script to it. A string with any character past U+00FF, and a long
|
|
39
|
+
// slice of such a text (13 characters or more are a view of their parent
|
|
40
|
+
// in V8, still two bytes each), is cut into script runs word by word, and
|
|
41
|
+
// a word with no letter (`2026`, `(1)`, `.`, `"`) has no script there:
|
|
42
|
+
// the font draws it by its default rules, not its Latin ones. Noto Serif
|
|
43
|
+
// SC sets `2026` 22 px wide at 10 px in English the first way and
|
|
44
|
+
// 22.31 px the second, Amiri a full stop 2.02 px and 3.17 px. The first
|
|
45
|
+
// shape to enter the cache answers for both from then on: `2026` after
|
|
46
|
+
// `2026 — 2027`, the stop of `كتاب.` (a run of its own in a left-to-right
|
|
47
|
+
// context) after `.` was measured alone. So a width depended on the
|
|
48
|
+
// strings measured before it on the page: on the chapter laid out first,
|
|
49
|
+
// on the document the worker had before this one.
|
|
50
|
+
//
|
|
51
|
+
// A document shaped in its own language is measured on two contexts: one
|
|
52
|
+
// that only ever takes strings of Latin-1 characters, each rebuilt
|
|
53
|
+
// character by character so that it is one byte a character whatever text
|
|
54
|
+
// it was cut from, and one that only takes strings with a wider character.
|
|
55
|
+
// On each of them a word has one shape, so a string has one width: the one
|
|
56
|
+
// a context that never measured anything gives it. Measured in Chrome 154,
|
|
57
|
+
// on a page and in a worker: 182 strings in six orders, twelve pairs of
|
|
58
|
+
// face and language, no width moves (30 to 37 of them move on one context
|
|
59
|
+
// in Noto Serif SC and Amiri).
|
|
60
|
+
//
|
|
61
|
+
// A document in its host's language (`_language` undefined) is measured on
|
|
62
|
+
// one context, as up to postext 1.29: its widths are the ones it had.
|
|
63
|
+
/** A character past Latin-1: a string that holds one is two bytes a
|
|
64
|
+
* character to the browser. */
|
|
65
|
+
const WIDE_RE = /[^\u0000-\u00FF]/;
|
|
66
|
+
/** The one context of a document measured in its host's language. */
|
|
67
|
+
let _host = null;
|
|
68
|
+
/** The contexts of a document measured in its own: Latin-1 strings on one,
|
|
69
|
+
* strings with a wider character on the other. */
|
|
70
|
+
let _narrow = null;
|
|
71
|
+
let _wide = null;
|
|
72
|
+
function newMeasurer() {
|
|
73
|
+
const ctx = typeof OffscreenCanvas !== 'undefined'
|
|
74
|
+
? new OffscreenCanvas(1, 1).getContext('2d')
|
|
75
|
+
: document.createElement('canvas').getContext('2d');
|
|
76
|
+
return { ctx, font: '', language: HOST_LANGUAGE };
|
|
77
|
+
}
|
|
78
|
+
/** `text` as a string of one byte a character (V8 keeps a string built
|
|
79
|
+
* from single Latin-1 characters that way; a slice of a text with a wider
|
|
80
|
+
* character is two bytes a character, and Chrome shapes it otherwise).
|
|
81
|
+
* For a text of Latin-1 characters only. */
|
|
82
|
+
function oneByte(text) {
|
|
83
|
+
let out = '';
|
|
84
|
+
for (let i = 0; i < text.length; i++)
|
|
85
|
+
out += text[i];
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
88
|
+
/** `text` as the measurer hands it to the canvas in a document shaped in
|
|
89
|
+
* its own language: a Latin-1 text one byte a character, any other as it
|
|
90
|
+
* is. A painter that hands its strings the same way has them shaped as
|
|
91
|
+
* they were measured. */
|
|
92
|
+
export function canvasText(text) {
|
|
93
|
+
return _language === undefined || WIDE_RE.test(text) ? text : oneByte(text);
|
|
94
|
+
}
|
|
95
|
+
/** The metrics of `text` in `font`, in the language measured in: on the
|
|
96
|
+
* context its kind of string is measured on (see above). `rtl`: in a
|
|
97
|
+
* context set right to left, as a right-to-left word is painted (its
|
|
98
|
+
* brackets mirrored). */
|
|
99
|
+
function metricsOf(text, font, rtl = false, spacingPx = 0) {
|
|
100
|
+
let measurer;
|
|
101
|
+
let handed = text;
|
|
102
|
+
if (_language === undefined) {
|
|
103
|
+
measurer = _host ??= newMeasurer();
|
|
47
104
|
}
|
|
105
|
+
else if (WIDE_RE.test(text)) {
|
|
106
|
+
measurer = _wide ??= newMeasurer();
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
measurer = _narrow ??= newMeasurer();
|
|
110
|
+
handed = oneByte(text);
|
|
111
|
+
}
|
|
112
|
+
const ctx = measurer.ctx;
|
|
48
113
|
const wanted = _language ?? HOST_LANGUAGE;
|
|
49
|
-
if (wanted !==
|
|
50
|
-
applyLanguage(
|
|
51
|
-
|
|
114
|
+
if (wanted !== measurer.language) {
|
|
115
|
+
applyLanguage(ctx, _language);
|
|
116
|
+
measurer.language = wanted;
|
|
117
|
+
}
|
|
118
|
+
if (font !== measurer.font) {
|
|
119
|
+
ctx.font = font;
|
|
120
|
+
measurer.font = font;
|
|
121
|
+
}
|
|
122
|
+
if (spacingPx !== 0) {
|
|
123
|
+
// Only {@link measureSpacedWidth} asks, of a context that has the
|
|
124
|
+
// attribute: it goes back to no spacing, what every other measure is
|
|
125
|
+
// taken at.
|
|
126
|
+
ctx.letterSpacing = `${spacingPx}px`;
|
|
127
|
+
const metrics = ctx.measureText(handed);
|
|
128
|
+
ctx.letterSpacing = '0px';
|
|
129
|
+
return metrics;
|
|
52
130
|
}
|
|
53
|
-
|
|
131
|
+
if (!rtl || !('direction' in ctx))
|
|
132
|
+
return ctx.measureText(handed);
|
|
133
|
+
const direction = ctx.direction;
|
|
134
|
+
ctx.direction = 'rtl';
|
|
135
|
+
const metrics = ctx.measureText(handed);
|
|
136
|
+
ctx.direction = direction;
|
|
137
|
+
return metrics;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* The width of `text` in `font` under a letter-spacing of `spacingPx`
|
|
141
|
+
* (`ctx.letterSpacing`: the spacing after every letter counted in), in
|
|
142
|
+
* the language measured in and on the context its kind of string is
|
|
143
|
+
* measured on, kept nowhere. Undefined where the canvas has no
|
|
144
|
+
* letter-spacing. For what asks how the browser shapes a tracked text
|
|
145
|
+
* (`measure/trackedLigatures.ts`): under a letter-spacing it sets no
|
|
146
|
+
* optional ligature.
|
|
147
|
+
*/
|
|
148
|
+
export function measureSpacedWidth(text, font, spacingPx) {
|
|
149
|
+
const probe = _language === undefined ? (_host ??= newMeasurer()) : WIDE_RE.test(text) ? (_wide ??= newMeasurer()) : (_narrow ??= newMeasurer());
|
|
150
|
+
if (!('letterSpacing' in probe.ctx))
|
|
151
|
+
return undefined;
|
|
152
|
+
return metricsOf(text, font, false, spacingPx).width;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* The width of `text` in `font` as the canvas gives it, in the language
|
|
156
|
+
* measured in, kept nowhere: for a caller with a cache of its own (the
|
|
157
|
+
* text library's segments, `measure/pretextLanguage.ts`).
|
|
158
|
+
*/
|
|
159
|
+
export function measureUncachedWidth(text, font) {
|
|
160
|
+
return metricsOf(text, font).width;
|
|
54
161
|
}
|
|
55
162
|
const newCaches = () => ({ width: new Map(), widthEntries: 0, run: new Map(), runEntries: 0, marked: new Map(), markedEntries: 0, sensitive: new Map() });
|
|
56
163
|
/** The caches of each language measured in (`''` under the key of the
|
|
@@ -121,21 +228,16 @@ export function measureTextWidth(text, font) {
|
|
|
121
228
|
const cached = byText.get(text);
|
|
122
229
|
if (cached !== undefined)
|
|
123
230
|
return cached;
|
|
124
|
-
const ctx = getMeasureCtx();
|
|
125
|
-
if (font !== _currentFont) {
|
|
126
|
-
ctx.font = font;
|
|
127
|
-
_currentFont = font;
|
|
128
|
-
}
|
|
129
231
|
// Two CJK marks side by side (`)》`, `”“`) are measured apart: the
|
|
130
232
|
// browser would set the first half width in one run (see
|
|
131
233
|
// `cjkMarkCuts`), and the renderers paint them apart. Text with no CJK
|
|
132
234
|
// is never cut (`markCuts`): one measure, with no cut to look for.
|
|
133
235
|
let width = 0;
|
|
134
236
|
if (!hasCJK(text))
|
|
135
|
-
width +=
|
|
237
|
+
width += metricsOf(text, font).width;
|
|
136
238
|
else
|
|
137
239
|
for (const piece of cjkMarkPieces(text, true))
|
|
138
|
-
width +=
|
|
240
|
+
width += metricsOf(piece, font).width;
|
|
139
241
|
if (C.widthEntries >= MAX_WIDTH_CACHE_ENTRIES) {
|
|
140
242
|
C.width = new Map();
|
|
141
243
|
C.widthEntries = 0;
|
|
@@ -162,12 +264,7 @@ export function measureRunWidth(text, font) {
|
|
|
162
264
|
const cached = byText.get(text);
|
|
163
265
|
if (cached !== undefined)
|
|
164
266
|
return cached;
|
|
165
|
-
const
|
|
166
|
-
if (font !== _currentFont) {
|
|
167
|
-
ctx.font = font;
|
|
168
|
-
_currentFont = font;
|
|
169
|
-
}
|
|
170
|
-
const width = ctx.measureText(text).width;
|
|
267
|
+
const width = metricsOf(text, font).width;
|
|
171
268
|
if (C.runEntries >= MAX_WIDTH_CACHE_ENTRIES) {
|
|
172
269
|
C.run = new Map();
|
|
173
270
|
C.runEntries = 0;
|
|
@@ -179,16 +276,6 @@ export function measureRunWidth(text, font) {
|
|
|
179
276
|
return width;
|
|
180
277
|
}
|
|
181
278
|
// Widths of words with no letter, measured in a script (#725): `C.marked`.
|
|
182
|
-
function rawWidth(ctx, text, rtl) {
|
|
183
|
-
// A right-to-left word is measured as it is painted: its brackets mirrored.
|
|
184
|
-
if (!rtl || !('direction' in ctx))
|
|
185
|
-
return ctx.measureText(text).width;
|
|
186
|
-
const direction = ctx.direction;
|
|
187
|
-
ctx.direction = 'rtl';
|
|
188
|
-
const width = ctx.measureText(text).width;
|
|
189
|
-
ctx.direction = direction;
|
|
190
|
-
return width;
|
|
191
|
-
}
|
|
192
279
|
/**
|
|
193
280
|
* The width of `text` set between `lead` and `trail`, less theirs: `text`
|
|
194
281
|
* as the browser shapes it in the script of the mark beside it (#725, see
|
|
@@ -207,19 +294,15 @@ export function measureMarkedWidth(text, font, lead, trail, rtl) {
|
|
|
207
294
|
const cached = byText.get(key);
|
|
208
295
|
if (cached !== undefined)
|
|
209
296
|
return cached;
|
|
210
|
-
|
|
211
|
-
if (font !== _currentFont) {
|
|
212
|
-
ctx.font = font;
|
|
213
|
-
_currentFont = font;
|
|
214
|
-
}
|
|
297
|
+
// A right-to-left word is measured as it is painted: its brackets mirrored.
|
|
215
298
|
const markKey = `${rtl ? '<' : '>'}${lead}\x00${trail}`;
|
|
216
299
|
let mark = byText.get(markKey);
|
|
217
300
|
if (mark === undefined) {
|
|
218
|
-
mark =
|
|
301
|
+
mark = metricsOf(lead + trail, font, rtl).width;
|
|
219
302
|
byText.set(markKey, mark);
|
|
220
303
|
C.markedEntries++;
|
|
221
304
|
}
|
|
222
|
-
const width = Math.max(0,
|
|
305
|
+
const width = Math.max(0, metricsOf(lead + text + trail, font, rtl).width - mark);
|
|
223
306
|
if (C.markedEntries >= MAX_WIDTH_CACHE_ENTRIES) {
|
|
224
307
|
C.marked = new Map();
|
|
225
308
|
C.markedEntries = 0;
|
|
@@ -249,15 +332,10 @@ export function scriptSensitive(font, marks) {
|
|
|
249
332
|
const known = C.sensitive.get(font);
|
|
250
333
|
if (known !== undefined)
|
|
251
334
|
return known;
|
|
252
|
-
const ctx = getMeasureCtx();
|
|
253
|
-
if (font !== _currentFont) {
|
|
254
|
-
ctx.font = font;
|
|
255
|
-
_currentFont = font;
|
|
256
|
-
}
|
|
257
335
|
let lo = Infinity;
|
|
258
336
|
let hi = -Infinity;
|
|
259
337
|
for (const mark of marks) {
|
|
260
|
-
const width =
|
|
338
|
+
const width = metricsOf(SCRIPT_PROBE + mark, font).width - metricsOf(mark, font).width;
|
|
261
339
|
if (width < lo)
|
|
262
340
|
lo = width;
|
|
263
341
|
if (width > hi)
|
|
@@ -340,8 +418,10 @@ export function evictTextWidths(families) {
|
|
|
340
418
|
}
|
|
341
419
|
}
|
|
342
420
|
}
|
|
343
|
-
//
|
|
344
|
-
|
|
421
|
+
// Each context resolves its font again on the next measure.
|
|
422
|
+
for (const measurer of [_host, _narrow, _wide])
|
|
423
|
+
if (measurer)
|
|
424
|
+
measurer.font = '';
|
|
345
425
|
_generation++;
|
|
346
426
|
_evictions.push({ generation: _generation, families: set });
|
|
347
427
|
if (_evictions.length > MAX_EVICTIONS)
|
|
@@ -359,19 +439,34 @@ export function onTextWidthCacheClear(listener) {
|
|
|
359
439
|
* baseline (px), or null when the measurer gives no ink metrics. Not
|
|
360
440
|
* cached. */
|
|
361
441
|
export function measureInkBox(text, font) {
|
|
362
|
-
const
|
|
363
|
-
if (font !== _currentFont) {
|
|
364
|
-
ctx.font = font;
|
|
365
|
-
_currentFont = font;
|
|
366
|
-
}
|
|
367
|
-
const m = ctx.measureText(text);
|
|
442
|
+
const m = metricsOf(text, font);
|
|
368
443
|
const ascent = m.actualBoundingBoxAscent;
|
|
369
444
|
const descent = m.actualBoundingBoxDescent;
|
|
370
445
|
if (typeof ascent !== 'number' || typeof descent !== 'number' || !Number.isFinite(ascent) || !Number.isFinite(descent))
|
|
371
446
|
return null;
|
|
372
447
|
return { ascent, descent };
|
|
373
448
|
}
|
|
374
|
-
|
|
449
|
+
/** The contexts inks are painted on and read back from, made on first use
|
|
450
|
+
* (null: none can be made): one for each kind of string, as the measuring
|
|
451
|
+
* ones (#770), so the ink is the ink of the shape that was measured. */
|
|
452
|
+
const _profileCtx = {};
|
|
453
|
+
function profileContext(kind) {
|
|
454
|
+
let ctx = _profileCtx[kind];
|
|
455
|
+
if (ctx === undefined) {
|
|
456
|
+
ctx = null;
|
|
457
|
+
try {
|
|
458
|
+
const canvas = typeof OffscreenCanvas !== 'undefined' ? new OffscreenCanvas(1, 1) : typeof document !== 'undefined' ? document.createElement('canvas') : null;
|
|
459
|
+
const made = canvas?.getContext('2d', { willReadFrequently: true });
|
|
460
|
+
if (made && typeof made.fillText === 'function' && typeof made.getImageData === 'function')
|
|
461
|
+
ctx = made;
|
|
462
|
+
}
|
|
463
|
+
catch {
|
|
464
|
+
ctx = null;
|
|
465
|
+
}
|
|
466
|
+
_profileCtx[kind] = ctx;
|
|
467
|
+
}
|
|
468
|
+
return ctx;
|
|
469
|
+
}
|
|
375
470
|
/** Alpha under which a pixel is left out: a faint fringe. */
|
|
376
471
|
const INK_ALPHA = 32;
|
|
377
472
|
/**
|
|
@@ -382,23 +477,13 @@ const INK_ALPHA = 32;
|
|
|
382
477
|
* the text has no ink. Not cached.
|
|
383
478
|
*/
|
|
384
479
|
export function measureInkProfile(text, font) {
|
|
385
|
-
|
|
386
|
-
_profileCtx = null;
|
|
387
|
-
try {
|
|
388
|
-
const canvas = typeof OffscreenCanvas !== 'undefined' ? new OffscreenCanvas(1, 1) : typeof document !== 'undefined' ? document.createElement('canvas') : null;
|
|
389
|
-
const ctx = canvas?.getContext('2d', { willReadFrequently: true });
|
|
390
|
-
if (ctx && typeof ctx.fillText === 'function' && typeof ctx.getImageData === 'function')
|
|
391
|
-
_profileCtx = ctx;
|
|
392
|
-
}
|
|
393
|
-
catch {
|
|
394
|
-
_profileCtx = null;
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
const ctx = _profileCtx;
|
|
480
|
+
const ctx = profileContext(_language === undefined ? 'host' : WIDE_RE.test(text) ? 'wide' : 'narrow');
|
|
398
481
|
if (!ctx)
|
|
399
482
|
return null;
|
|
400
483
|
try {
|
|
401
|
-
// The ink is the ink of the glyphs measured: the same language
|
|
484
|
+
// The ink is the ink of the glyphs measured: the same language, and
|
|
485
|
+
// the string handed over the same way.
|
|
486
|
+
text = canvasText(text);
|
|
402
487
|
applyLanguage(ctx, _language);
|
|
403
488
|
ctx.font = font;
|
|
404
489
|
const m = ctx.measureText(text);
|
|
@@ -460,12 +545,7 @@ export function measureInkProfile(text, font) {
|
|
|
460
545
|
* it), or null when the measurer gives no ink metrics or the text has no
|
|
461
546
|
* ink. Not cached. */
|
|
462
547
|
export function measureInkExtent(text, font) {
|
|
463
|
-
const
|
|
464
|
-
if (font !== _currentFont) {
|
|
465
|
-
ctx.font = font;
|
|
466
|
-
_currentFont = font;
|
|
467
|
-
}
|
|
468
|
-
const m = ctx.measureText(text);
|
|
548
|
+
const m = metricsOf(text, font);
|
|
469
549
|
const left = m.actualBoundingBoxLeft;
|
|
470
550
|
const right = m.actualBoundingBoxRight;
|
|
471
551
|
if (typeof left !== 'number' || typeof right !== 'number' || !Number.isFinite(left) || !Number.isFinite(right))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../src/measure/canvas.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../src/measure/canvas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cjkCompose.d.ts","sourceRoot":"","sources":["../../src/measure/cjkCompose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAA4B,UAAU,EAAiB,MAAM,UAAU,CAAC;AACpF,OAAO,KAAK,EAAwD,eAAe,EAAc,MAAM,QAAQ,CAAC;AAGhH,OAAO,EAA2D,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAqBhI,OAAO,EAeL,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AAUtB,OAAO,EAyBL,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAC;AAgB1B;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAsBpD;AAED;;;+CAG+C;AAC/C,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAKD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,GAAE,cAAoC,GAAG,OAAO,CAE9F;AA2ID;;;;uCAIuC;AACvC,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,CAqB1F;
|
|
1
|
+
{"version":3,"file":"cjkCompose.d.ts","sourceRoot":"","sources":["../../src/measure/cjkCompose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAA4B,UAAU,EAAiB,MAAM,UAAU,CAAC;AACpF,OAAO,KAAK,EAAwD,eAAe,EAAc,MAAM,QAAQ,CAAC;AAGhH,OAAO,EAA2D,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAqBhI,OAAO,EAeL,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AAUtB,OAAO,EAyBL,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAC;AAgB1B;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAsBpD;AAED;;;+CAG+C;AAC/C,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAKD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,GAAE,cAAoC,GAAG,OAAO,CAE9F;AA2ID;;;;uCAIuC;AACvC,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,CAqB1F;AAipFD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,EAAE,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,mBAAmB,GAAG,SAAS,GACvC,aAAa,CA+If;AAaD;6BAC6B;AAC7B,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CACtC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,GAAE,iBAAqC,EAAE,OAAO,UAAQ,GAAG,aAAa,CAqC/L"}
|
|
@@ -1958,13 +1958,36 @@ function overflowAt(u, room, letterSpacingPx) {
|
|
|
1958
1958
|
}
|
|
1959
1959
|
return over;
|
|
1960
1960
|
}
|
|
1961
|
-
/**
|
|
1962
|
-
|
|
1961
|
+
/** How many characters of the rest of a run are measured with what
|
|
1962
|
+
* follows the cut (see {@link runTail}), as `REST_WINDOW` of
|
|
1963
|
+
* `measure/rich.ts`. */
|
|
1964
|
+
const TAIL_WINDOW = 32;
|
|
1965
|
+
/** The rest of a run after its first `from` UTF-16 units (`cutWidth` px).
|
|
1966
|
+
*
|
|
1967
|
+
* In a document shaped in its own language the rest is as wide as the
|
|
1968
|
+
* text that opens the next line (#770), not the run less what stayed
|
|
1969
|
+
* above: the browser measured the run whole, and what the face draws
|
|
1970
|
+
* across the cut is not painted on either line. The address of the
|
|
1971
|
+
* GB/T 7714 paper, cut before `.w3.org/TR/clreq/`, left that rest
|
|
1972
|
+
* 1.67 px (0.82 pt) narrower than it is painted alone. Its first
|
|
1973
|
+
* {@link TAIL_WINDOW} characters are measured from the cut and the
|
|
1974
|
+
* others as the run grew by them, so a run many lines long still costs
|
|
1975
|
+
* what a line of it does. Vertical text keeps the widths it had. */
|
|
1976
|
+
function runTail(u, from, cutWidth, letterSpacingPx) {
|
|
1963
1977
|
const tail = u.text.slice(from);
|
|
1978
|
+
let width = u.width - cutWidth;
|
|
1979
|
+
if (getMeasureLanguage() !== undefined && getMeasureWritingMode() !== 'vertical-rl') {
|
|
1980
|
+
let end = Math.min(u.text.length, from + TAIL_WINDOW);
|
|
1981
|
+
if (end < u.text.length && (u.text.charCodeAt(end) & 0xFC00) === 0xDC00)
|
|
1982
|
+
end++;
|
|
1983
|
+
const head = u.text.slice(from, end);
|
|
1984
|
+
const own = textWidth(head, u.style.font, u.style.smallCaps) + (letterSpacingPx === 0 ? 0 : letterSpacingPx * graphemeCount(head));
|
|
1985
|
+
width = end === u.text.length ? own : own + u.width - prefixWidth(u, end, letterSpacingPx);
|
|
1986
|
+
}
|
|
1964
1987
|
return {
|
|
1965
1988
|
...u,
|
|
1966
1989
|
text: tail,
|
|
1967
|
-
width
|
|
1990
|
+
width,
|
|
1968
1991
|
graphemes: u.graphemes - graphemeCount(u.text.slice(0, from)),
|
|
1969
1992
|
first: cjkClassOf(tail),
|
|
1970
1993
|
at: u.at + from,
|
|
@@ -1988,7 +2011,7 @@ function cutAtJoint(u, room, letterSpacingPx) {
|
|
|
1988
2011
|
continue;
|
|
1989
2012
|
return {
|
|
1990
2013
|
head: { ...u, text: head, width: w, graphemes: graphemeCount(head), last: cjkClassOf(lastGrapheme(head)), url: false },
|
|
1991
|
-
tail: runTail(u, idx, w),
|
|
2014
|
+
tail: runTail(u, idx, w, letterSpacingPx),
|
|
1992
2015
|
};
|
|
1993
2016
|
}
|
|
1994
2017
|
return null;
|
|
@@ -2020,7 +2043,10 @@ function divideRun(u, room, letterSpacingPx) {
|
|
|
2020
2043
|
const from = text.length - split.tail.text.length;
|
|
2021
2044
|
return {
|
|
2022
2045
|
head: { ...u, text: headText, width: split.head.width, graphemes: graphemeCount(headText), last: cjkClassOf(lastGrapheme(headText)), url: false },
|
|
2023
|
-
|
|
2046
|
+
// What stayed on the line: the truncated text less its rest, or, where
|
|
2047
|
+
// that rest was measured as a text of its own (#770), the advance of
|
|
2048
|
+
// the characters before it.
|
|
2049
|
+
tail: runTail(u, from, split.tail.ownPieces !== undefined ? prefixWidth(u, from, letterSpacingPx) : width - split.tail.width, letterSpacingPx),
|
|
2024
2050
|
hyphen,
|
|
2025
2051
|
hard: split.hard === true,
|
|
2026
2052
|
};
|