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
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ligatures of a tracked text, as the measurer sees them (#663, #770).
|
|
3
|
+
*
|
|
4
|
+
* A tracked word is measured at its natural width, the ligatures of the
|
|
5
|
+
* face counted, plus the tracking times its letters. A browser sets no
|
|
6
|
+
* optional ligature under a letter-spacing, on the canvas or in a box, so
|
|
7
|
+
* the word painted with the spacing alone is wider than its place: Chrome
|
|
8
|
+
* 154 at 40 px, `first` 4.56 px in Newsreader and 2.76 px in Source Serif
|
|
9
|
+
* 4, `office` 7 px in EB Garamond. The canvas paints such a word in
|
|
10
|
+
* pieces (`canvas-backend/trackedText.ts`): each ligature alone under no
|
|
11
|
+
* letter-spacing, the letters between them tracked, every piece where the
|
|
12
|
+
* natural shaping puts it and the tracking of every letter before it
|
|
13
|
+
* further on. This module finds the same pieces with the engine's own
|
|
14
|
+
* measurer, for an output that has no painting context to ask (the HTML).
|
|
15
|
+
*
|
|
16
|
+
* Which letters: two neighbours whose width under a letter-spacing, the
|
|
17
|
+
* spacing taken off, is not their natural width are a ligature, and a
|
|
18
|
+
* third joins them the same way (f + f + i). A face whose ligature is as
|
|
19
|
+
* wide as its letters (Geist's `fi`) shows nothing here, and needs
|
|
20
|
+
* nothing: set apart under the letter-spacing its letters stand where the
|
|
21
|
+
* layout counted them.
|
|
22
|
+
*
|
|
23
|
+
* A form by the neighbours is no ligature. Under a letter-spacing the
|
|
24
|
+
* browser takes the contextual alternates of a face away with its
|
|
25
|
+
* ligatures, and two neighbours with such forms read as a ligature to the
|
|
26
|
+
* probe above (Playpen Sans: `FO`, `OR`, most pairs). A zero width
|
|
27
|
+
* non-joiner between the two tells: it dissolves a ligature and leaves a
|
|
28
|
+
* form by the neighbours (`canvas-backend/trackedText.ts` has the widths
|
|
29
|
+
* measured). Two neighbours as wide across a non-joiner as without one
|
|
30
|
+
* are left in the letters around them: the HTML sets a word with such
|
|
31
|
+
* forms whole, at the letter-spacing that ends it where it was measured,
|
|
32
|
+
* as the canvas paints it in a document shaped in its own language. Only
|
|
33
|
+
* such a document asks here.
|
|
34
|
+
*
|
|
35
|
+
* In the language measured in (`getMeasureLanguage`): a face ligates
|
|
36
|
+
* otherwise under a language (no `fi` in Turkish).
|
|
37
|
+
*/
|
|
38
|
+
/** One piece of a tracked text set apart from the rest. */
|
|
39
|
+
export interface LigaturePiece {
|
|
40
|
+
text: string;
|
|
41
|
+
/** Where the piece starts in the text's natural shaping, px from its
|
|
42
|
+
* start, the kerning before it counted. */
|
|
43
|
+
offset: number;
|
|
44
|
+
/** Its natural width, px: alone, under no letter-spacing. */
|
|
45
|
+
width: number;
|
|
46
|
+
/** Its letters (graphemes): each takes the tracking once. */
|
|
47
|
+
letters: number;
|
|
48
|
+
/** A ligature: set under no letter-spacing. */
|
|
49
|
+
ligature: boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The pieces a tracked `text` (a word, or any text set as one run) is set
|
|
53
|
+
* in, in `font` and the language measured in, or null when it is set
|
|
54
|
+
* whole: the browser shapes it the same under a letter-spacing, the
|
|
55
|
+
* canvas measures none, or the text holds a joining letter or a
|
|
56
|
+
* right-to-left one.
|
|
57
|
+
*/
|
|
58
|
+
export declare function trackedLigaturePieces(text: string, font: string): readonly LigaturePiece[] | null;
|
|
59
|
+
//# sourceMappingURL=trackedLigatures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackedLigatures.d.ts","sourceRoot":"","sources":["../../src/measure/trackedLigatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAOH,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb;gDAC4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAC;CACnB;AA+ED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,aAAa,EAAE,GAAG,IAAI,CAYjG"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ligatures of a tracked text, as the measurer sees them (#663, #770).
|
|
3
|
+
*
|
|
4
|
+
* A tracked word is measured at its natural width, the ligatures of the
|
|
5
|
+
* face counted, plus the tracking times its letters. A browser sets no
|
|
6
|
+
* optional ligature under a letter-spacing, on the canvas or in a box, so
|
|
7
|
+
* the word painted with the spacing alone is wider than its place: Chrome
|
|
8
|
+
* 154 at 40 px, `first` 4.56 px in Newsreader and 2.76 px in Source Serif
|
|
9
|
+
* 4, `office` 7 px in EB Garamond. The canvas paints such a word in
|
|
10
|
+
* pieces (`canvas-backend/trackedText.ts`): each ligature alone under no
|
|
11
|
+
* letter-spacing, the letters between them tracked, every piece where the
|
|
12
|
+
* natural shaping puts it and the tracking of every letter before it
|
|
13
|
+
* further on. This module finds the same pieces with the engine's own
|
|
14
|
+
* measurer, for an output that has no painting context to ask (the HTML).
|
|
15
|
+
*
|
|
16
|
+
* Which letters: two neighbours whose width under a letter-spacing, the
|
|
17
|
+
* spacing taken off, is not their natural width are a ligature, and a
|
|
18
|
+
* third joins them the same way (f + f + i). A face whose ligature is as
|
|
19
|
+
* wide as its letters (Geist's `fi`) shows nothing here, and needs
|
|
20
|
+
* nothing: set apart under the letter-spacing its letters stand where the
|
|
21
|
+
* layout counted them.
|
|
22
|
+
*
|
|
23
|
+
* A form by the neighbours is no ligature. Under a letter-spacing the
|
|
24
|
+
* browser takes the contextual alternates of a face away with its
|
|
25
|
+
* ligatures, and two neighbours with such forms read as a ligature to the
|
|
26
|
+
* probe above (Playpen Sans: `FO`, `OR`, most pairs). A zero width
|
|
27
|
+
* non-joiner between the two tells: it dissolves a ligature and leaves a
|
|
28
|
+
* form by the neighbours (`canvas-backend/trackedText.ts` has the widths
|
|
29
|
+
* measured). Two neighbours as wide across a non-joiner as without one
|
|
30
|
+
* are left in the letters around them: the HTML sets a word with such
|
|
31
|
+
* forms whole, at the letter-spacing that ends it where it was measured,
|
|
32
|
+
* as the canvas paints it in a document shaped in its own language. Only
|
|
33
|
+
* such a document asks here.
|
|
34
|
+
*
|
|
35
|
+
* In the language measured in (`getMeasureLanguage`): a face ligates
|
|
36
|
+
* otherwise under a language (no `fi` in Turkish).
|
|
37
|
+
*/
|
|
38
|
+
import { needsBidi } from '../bidi';
|
|
39
|
+
import { measureLanguageKey, measureSpacedWidth, measureTextWidth, onTextWidthCacheClear } from './canvas';
|
|
40
|
+
import { graphemesOf } from './graphemes';
|
|
41
|
+
import { joiningScriptIn } from './joining';
|
|
42
|
+
/** Letter-spacing the texts are probed with, px. */
|
|
43
|
+
const PROBE = 1;
|
|
44
|
+
/** Least difference, px, between a text's natural width and its width
|
|
45
|
+
* under letter-spacing (the spacing taken off) that counts as another
|
|
46
|
+
* shaping: above the noise of `measureText`, below any ligature. The
|
|
47
|
+
* canvas painter's own (`trackedText.ts`). */
|
|
48
|
+
const TOLERANCE = 0.05;
|
|
49
|
+
/** Texts remembered per font before the memory starts over. */
|
|
50
|
+
const MAX_TEXTS = 8192;
|
|
51
|
+
/** Language key and font string → text → its pieces, null for a text set
|
|
52
|
+
* whole. */
|
|
53
|
+
let known = new Map();
|
|
54
|
+
onTextWidthCacheClear(() => {
|
|
55
|
+
known = new Map();
|
|
56
|
+
});
|
|
57
|
+
/** Whether `text` may be set in pieces at all: left to right, with no
|
|
58
|
+
* letter of a joining script. A right-to-left word is left whole here:
|
|
59
|
+
* the outputs give its ligatures the tracking they did. */
|
|
60
|
+
function divisible(text) {
|
|
61
|
+
return !joiningScriptIn(text) && !needsBidi(text);
|
|
62
|
+
}
|
|
63
|
+
/** Whether the browser shapes `text` otherwise once a letter-spacing is
|
|
64
|
+
* set. False where the canvas measures no letter-spacing. */
|
|
65
|
+
function shapedOtherwise(text, font) {
|
|
66
|
+
const one = measureSpacedWidth(text, font, PROBE);
|
|
67
|
+
const two = measureSpacedWidth(text, font, 2 * PROBE);
|
|
68
|
+
if (one === undefined || two === undefined)
|
|
69
|
+
return false;
|
|
70
|
+
// What one more unit of spacing adds: the spacing after each letter.
|
|
71
|
+
const step = two - one;
|
|
72
|
+
// A measurer that takes no letter-spacing (a test stub, an old browser).
|
|
73
|
+
if (!(step > PROBE / 2))
|
|
74
|
+
return false;
|
|
75
|
+
return Math.abs(one - step - measureTextWidth(text, font)) > TOLERANCE;
|
|
76
|
+
}
|
|
77
|
+
/** ZERO WIDTH NON-JOINER: between two letters it asks for no ligature of
|
|
78
|
+
* them. */
|
|
79
|
+
const ZWNJ = '\u200C';
|
|
80
|
+
/** Whether two neighbours the letter-spacing reshapes are a ligature: a
|
|
81
|
+
* non-joiner between them changes their natural width (see the module
|
|
82
|
+
* comment). */
|
|
83
|
+
function ligated(first, second, font) {
|
|
84
|
+
return Math.abs(measureTextWidth(first + ZWNJ + second, font) - measureTextWidth(first + second, font)) > TOLERANCE;
|
|
85
|
+
}
|
|
86
|
+
function piecesOf(text, font) {
|
|
87
|
+
if (!divisible(text))
|
|
88
|
+
return null;
|
|
89
|
+
const letters = graphemesOf(text);
|
|
90
|
+
if (letters.length < 2 || !shapedOtherwise(text, font))
|
|
91
|
+
return null;
|
|
92
|
+
const groups = [];
|
|
93
|
+
let ligatures = 0;
|
|
94
|
+
for (let k = 0; k < letters.length;) {
|
|
95
|
+
let end = k + 1;
|
|
96
|
+
while (end < letters.length && shapedOtherwise(letters[end - 1] + letters[end], font) && ligated(letters[end - 1], letters[end], font))
|
|
97
|
+
end++;
|
|
98
|
+
const ligature = end - k > 1;
|
|
99
|
+
const last = groups[groups.length - 1];
|
|
100
|
+
if (!ligature && last && !last.ligature)
|
|
101
|
+
last.end = end;
|
|
102
|
+
else
|
|
103
|
+
groups.push({ start: k, end, ligature });
|
|
104
|
+
if (ligature)
|
|
105
|
+
ligatures++;
|
|
106
|
+
k = end;
|
|
107
|
+
}
|
|
108
|
+
// Shaped otherwise as a whole but by no ligature of two neighbours: left
|
|
109
|
+
// whole.
|
|
110
|
+
if (ligatures === 0)
|
|
111
|
+
return null;
|
|
112
|
+
const natural = (from, to) => measureTextWidth(letters.slice(from, to).join(''), font);
|
|
113
|
+
return groups.map((g) => ({
|
|
114
|
+
text: letters.slice(g.start, g.end).join(''),
|
|
115
|
+
offset: g.start === 0 ? 0 : natural(0, g.start + 1) - natural(g.start, g.start + 1),
|
|
116
|
+
width: natural(g.start, g.end),
|
|
117
|
+
letters: g.end - g.start,
|
|
118
|
+
ligature: g.ligature,
|
|
119
|
+
}));
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* The pieces a tracked `text` (a word, or any text set as one run) is set
|
|
123
|
+
* in, in `font` and the language measured in, or null when it is set
|
|
124
|
+
* whole: the browser shapes it the same under a letter-spacing, the
|
|
125
|
+
* canvas measures none, or the text holds a joining letter or a
|
|
126
|
+
* right-to-left one.
|
|
127
|
+
*/
|
|
128
|
+
export function trackedLigaturePieces(text, font) {
|
|
129
|
+
if (text.length < 2)
|
|
130
|
+
return null;
|
|
131
|
+
const key = measureLanguageKey() + font;
|
|
132
|
+
let byText = known.get(key);
|
|
133
|
+
if (!byText)
|
|
134
|
+
known.set(key, byText = new Map());
|
|
135
|
+
let pieces = byText.get(text);
|
|
136
|
+
if (pieces === undefined) {
|
|
137
|
+
pieces = piecesOf(text, font);
|
|
138
|
+
if (byText.size >= MAX_TEXTS)
|
|
139
|
+
byText.clear();
|
|
140
|
+
byText.set(text, pieces);
|
|
141
|
+
}
|
|
142
|
+
return pieces;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=trackedLigatures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackedLigatures.js","sourceRoot":"","sources":["../../src/measure/trackedLigatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAC3G,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAgB5C,oDAAoD;AACpD,MAAM,KAAK,GAAG,CAAC,CAAC;AAChB;;;+CAG+C;AAC/C,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,+DAA+D;AAC/D,MAAM,SAAS,GAAG,IAAI,CAAC;AAEvB;aACa;AACb,IAAI,KAAK,GAAG,IAAI,GAAG,EAAwD,CAAC;AAC5E,qBAAqB,CAAC,GAAG,EAAE;IACzB,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH;;4DAE4D;AAC5D,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC;AAED;8DAC8D;AAC9D,SAAS,eAAe,CAAC,IAAY,EAAE,IAAY;IACjD,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;IACtD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACzD,qEAAqE;IACrE,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;IACvB,yEAAyE;IACzE,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;AACzE,CAAC;AAED;YACY;AACZ,MAAM,IAAI,GAAG,QAAQ,CAAC;AAEtB;;gBAEgB;AAChB,SAAS,OAAO,CAAC,KAAa,EAAE,MAAc,EAAE,IAAY;IAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,GAAG,MAAM,EAAE,IAAI,CAAC,GAAG,gBAAgB,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;AACtH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,IAAY;IAC1C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACpE,MAAM,MAAM,GAAwD,EAAE,CAAC;IACvE,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;QACpC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAE,GAAG,OAAO,CAAC,GAAG,CAAE,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAE,EAAE,OAAO,CAAC,GAAG,CAAE,EAAE,IAAI,CAAC;YAAE,GAAG,EAAE,CAAC;QAClJ,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;;YACnD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9C,IAAI,QAAQ;YAAE,SAAS,EAAE,CAAC;QAC1B,CAAC,GAAG,GAAG,CAAC;IACV,CAAC;IACD,yEAAyE;IACzE,SAAS;IACT,IAAI,SAAS,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAU,EAAU,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/G,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QACnF,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC;QAC9B,OAAO,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK;QACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;KACrB,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,IAAY;IAC9D,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,GAAG,GAAG,kBAAkB,EAAE,GAAG,IAAI,CAAC;IACxC,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,MAAM;QAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;IAChD,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS;YAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/pipeline/build.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/pipeline/build.ts"],"names":[],"mappings":"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"}
|
package/dist/pipeline/build.js
CHANGED
|
@@ -320,9 +320,10 @@ function placeDocumentPass(content, config, cache, options, hints) {
|
|
|
320
320
|
setMeasureArabicNumbers(arabicNumbersOf(resolved));
|
|
321
321
|
// A word with no letter is shaped in the script of the text around it,
|
|
322
322
|
// and with no letter near in the script of the document's language (#725).
|
|
323
|
-
// The text is measured in the
|
|
324
|
-
//
|
|
325
|
-
//
|
|
323
|
+
// The text is measured in the document's language, the same on a page
|
|
324
|
+
// in any language and in a worker (#764, the default since postext 1.30,
|
|
325
|
+
// #770); in the host's for a configuration that asks for it, as up to
|
|
326
|
+
// postext 1.28.
|
|
326
327
|
setMeasureLanguage(shapingLanguageOf(resolved));
|
|
327
328
|
// A Chinese or Japanese document sets its doubled ellipsis and dash as
|
|
328
329
|
// Han text wherever they are cited.
|