postext 1.29.2 → 1.30.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/__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 @@
|
|
|
1
|
+
{"version":3,"file":"wordPieces.d.ts","sourceRoot":"","sources":["../src/wordPieces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAIrD;sBACsB;AACtB,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAoBD,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAE1D;AAaD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,SAAS,UAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,CAyCjJ;AAmDD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,cAAc,EAAE,GAAG,SAAS,CAIzJ;AAED;qEACqE;AACrE,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IACvC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACtC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAO3I;AAmHD;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAM1D"}
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
import { isCjkGrapheme } from './measure/cjkClasses';
|
|
2
|
+
import { graphemesOf } from './measure/graphemes';
|
|
3
|
+
/** What two pieces may carry and still be joined, when both carry the
|
|
4
|
+
* same: their style, their link, their language, and the level a
|
|
5
|
+
* left-to-right run has inside right-to-left text (`level`, an even one:
|
|
6
|
+
* a run painted right to left carries `rtl`). A segment with anything
|
|
7
|
+
* else (a reference, a script of its own, a ruby, styled runs, a
|
|
8
|
+
* direction) is set as it is. */
|
|
9
|
+
const SHARED = new Set(['kind', 'text', 'width', 'bold', 'italic', 'href', 'captionLabel', 'fontString', 'color', 'script', 'baselineShift', 'lang', 'level']);
|
|
10
|
+
const JOINED = ['bold', 'italic', 'href', 'captionLabel', 'fontString', 'color', 'script', 'baselineShift', 'lang', 'level'];
|
|
11
|
+
/** Text of the scripts a line sets word by word: nothing from the CJK
|
|
12
|
+
* blocks on, whose characters the layout measures one by one. */
|
|
13
|
+
const WORD_TEXT_RE = /^[\u0000-\u2E7F]+$/;
|
|
14
|
+
/** How far two widths of a word may be apart and still be the same, as a
|
|
15
|
+
* part of the wider: above the rounding of two sums of advances, below
|
|
16
|
+
* any kerned pair. */
|
|
17
|
+
const SAME_WIDTH = 0.0005;
|
|
18
|
+
/** Whether a text set `a` px wide is as wide as the `b` px measured. */
|
|
19
|
+
export function sameSetWidth(a, b) {
|
|
20
|
+
return Math.abs(a - b) <= SAME_WIDTH * Math.max(Math.abs(a), Math.abs(b));
|
|
21
|
+
}
|
|
22
|
+
const sameWidth = sameSetWidth;
|
|
23
|
+
function joinable(seg) {
|
|
24
|
+
if (seg.kind !== 'text' || !WORD_TEXT_RE.test(seg.text))
|
|
25
|
+
return false;
|
|
26
|
+
for (const key in seg)
|
|
27
|
+
if (!SHARED.has(key))
|
|
28
|
+
return false;
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
function sameStyle(a, b) {
|
|
32
|
+
return JOINED.every((key) => a[key] === b[key]);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The stretches of `pieces` that are set as one text, each as `[from,
|
|
36
|
+
* to)`: pieces that follow each other with no space, in one style, whose
|
|
37
|
+
* text set whole is as wide as the layout measured them together, where
|
|
38
|
+
* one of them set alone is not as wide as its place. `widthOf` is the
|
|
39
|
+
* width the output gives a text in the pieces' style, with the line's
|
|
40
|
+
* tracking. `opensLine`: the pieces open their line, so the first may be
|
|
41
|
+
* the rest of a word broken at the line before; when it is off alone, a
|
|
42
|
+
* stretch from it on is also one text when it is off by as much. The
|
|
43
|
+
* longest stretch from each piece on wins; a piece in no stretch is set
|
|
44
|
+
* alone. Empty when every piece is as wide alone as measured (a plain
|
|
45
|
+
* paragraph's, a word with nothing across its cuts).
|
|
46
|
+
*/
|
|
47
|
+
export function joinedWordPieces(pieces, widthOf, opensLine = false) {
|
|
48
|
+
const stretches = [];
|
|
49
|
+
const n = pieces.length;
|
|
50
|
+
if (n < 2)
|
|
51
|
+
return stretches;
|
|
52
|
+
// The pieces not as wide alone as their place: a stretch holds one.
|
|
53
|
+
let lastOff = -1;
|
|
54
|
+
// How much wider each piece is alone than its place.
|
|
55
|
+
const over = pieces.map((piece) => widthOf(piece.text) - piece.width);
|
|
56
|
+
const off = pieces.map((piece, i) => {
|
|
57
|
+
const differs = !sameWidth(piece.width + over[i], piece.width);
|
|
58
|
+
if (differs)
|
|
59
|
+
lastOff = i;
|
|
60
|
+
return differs;
|
|
61
|
+
});
|
|
62
|
+
for (let from = 0; from < n - 1 && from <= lastOff;) {
|
|
63
|
+
let end = 0;
|
|
64
|
+
// No stretch ends before the first of its pieces that is off.
|
|
65
|
+
let firstOff = from;
|
|
66
|
+
while (!off[firstOff])
|
|
67
|
+
firstOff++;
|
|
68
|
+
for (let to = n; to > from + 1 && to > firstOff; to--) {
|
|
69
|
+
let text = '';
|
|
70
|
+
let measured = 0;
|
|
71
|
+
for (let k = from; k < to; k++) {
|
|
72
|
+
text += pieces[k].text;
|
|
73
|
+
measured += pieces[k].width;
|
|
74
|
+
}
|
|
75
|
+
// As wide as measured; or, from the piece that opens the line on,
|
|
76
|
+
// off by what that piece carries from the line before.
|
|
77
|
+
const whole = widthOf(text);
|
|
78
|
+
if (sameWidth(whole, measured) || (opensLine && from === 0 && off[0] && sameWidth(whole - over[0], measured))) {
|
|
79
|
+
end = to;
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (end > 0) {
|
|
84
|
+
stretches.push([from, end]);
|
|
85
|
+
from = end;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
from++;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return stretches;
|
|
92
|
+
}
|
|
93
|
+
/** `pieces` with each of `stretches` as one segment: the first piece's
|
|
94
|
+
* style, the text of all, the width the layout measured them together. */
|
|
95
|
+
function joinStretches(pieces, stretches) {
|
|
96
|
+
const out = [];
|
|
97
|
+
let at = 0;
|
|
98
|
+
for (const [from, to] of stretches) {
|
|
99
|
+
for (; at < from; at++)
|
|
100
|
+
out.push(pieces[at]);
|
|
101
|
+
let text = '';
|
|
102
|
+
let width = 0;
|
|
103
|
+
for (; at < to; at++) {
|
|
104
|
+
text += pieces[at].text;
|
|
105
|
+
width += pieces[at].width;
|
|
106
|
+
}
|
|
107
|
+
out.push({ ...pieces[from], text, width });
|
|
108
|
+
}
|
|
109
|
+
for (; at < pieces.length; at++)
|
|
110
|
+
out.push(pieces[at]);
|
|
111
|
+
return out;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* The segments a run of pieces in one style is set from, or undefined
|
|
115
|
+
* when they are set as they are. `opensLine`: the run opens its line.
|
|
116
|
+
* `endsLine`: it closes a line that ends inside a word, so its last piece
|
|
117
|
+
* may carry the hyphen the layout added (see the module comment).
|
|
118
|
+
*/
|
|
119
|
+
function setPieces(pieces, opensLine, endsLine, advanceOf) {
|
|
120
|
+
// Each text is asked for once, whatever the stretches tried.
|
|
121
|
+
const widths = new Map();
|
|
122
|
+
const widthOf = (text) => {
|
|
123
|
+
let width = widths.get(text);
|
|
124
|
+
if (width === undefined)
|
|
125
|
+
widths.set(text, width = advanceOf(text));
|
|
126
|
+
return width;
|
|
127
|
+
};
|
|
128
|
+
const stretches = joinedWordPieces(pieces, widthOf, opensLine);
|
|
129
|
+
const last = pieces[pieces.length - 1];
|
|
130
|
+
const joinsLast = stretches.length > 0 && stretches[stretches.length - 1][1] === pieces.length;
|
|
131
|
+
if (endsLine && !joinsLast && last.text.length > 1 && last.text.endsWith('-') && !sameWidth(widthOf(last.text), last.width)) {
|
|
132
|
+
const hyphen = widthOf('-');
|
|
133
|
+
const body = { ...last, text: last.text.slice(0, -1), width: last.width - hyphen };
|
|
134
|
+
const bodies = [...pieces.slice(0, -1), body];
|
|
135
|
+
const apart = joinedWordPieces(bodies, widthOf, opensLine);
|
|
136
|
+
const joinsBody = apart.length > 0 && apart[apart.length - 1][1] === bodies.length;
|
|
137
|
+
if (joinsBody || sameWidth(widthOf(body.text), body.width)) {
|
|
138
|
+
return [...joinStretches(bodies, apart), { ...last, text: '-', width: hyphen }];
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return stretches.length > 0 ? joinStretches(pieces, stretches) : undefined;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* The segments a line is set from: its own, with the pieces of a word
|
|
145
|
+
* joined into one segment where the word was measured whole, and the
|
|
146
|
+
* hyphen of a line end set apart where it was measured apart (see the
|
|
147
|
+
* module comment). `advanceOf` is the advance the output gives `text` in
|
|
148
|
+
* the style of the segment `seg` (px, with the line's tracking).
|
|
149
|
+
*
|
|
150
|
+
* The line's own array when nothing changes: a line of the CJK composer
|
|
151
|
+
* or down a vertical page (`composed`), a line that carries directions
|
|
152
|
+
* (its `order` counts its segments: {@link lineWordSegmentsInOrder} sets
|
|
153
|
+
* those), a line whose pieces are each as wide alone as measured. A
|
|
154
|
+
* joined segment carries what its first piece does; the line's segments
|
|
155
|
+
* are not touched, so what reads a piece's box from them (a link's area,
|
|
156
|
+
* a selection) reads the same boxes.
|
|
157
|
+
*/
|
|
158
|
+
export function lineWordSegments(line, composed, advanceOf) {
|
|
159
|
+
const segments = line.segments;
|
|
160
|
+
if (!segments || composed || line.order !== undefined || segments.some((s) => s.rtl))
|
|
161
|
+
return segments;
|
|
162
|
+
return setLine(line, segments, undefined, advanceOf).segments;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* {@link lineWordSegments} for any line, one that carries directions
|
|
166
|
+
* included: the segments it is set from and the `order` they advance in.
|
|
167
|
+
*
|
|
168
|
+
* A line with right-to-left text, and every line of a right-to-left page,
|
|
169
|
+
* lists its segments in the order they stand along the line
|
|
170
|
+
* (`VDTLine.order`). The pieces of a left-to-right word stand side by side
|
|
171
|
+
* there, in reading order or, on a mirrored page, against it; they are
|
|
172
|
+
* joined as on any line, and the order is written again for the segments
|
|
173
|
+
* that result: the joined word where its pieces stood. A right-to-left
|
|
174
|
+
* segment is one shaped run already and is never a piece. The line's own
|
|
175
|
+
* segments and order when nothing changes.
|
|
176
|
+
*/
|
|
177
|
+
export function lineWordSegmentsInOrder(line, composed, advanceOf) {
|
|
178
|
+
const segments = line.segments;
|
|
179
|
+
const order = segments && line.order?.length === segments.length ? line.order : undefined;
|
|
180
|
+
if (!segments || composed)
|
|
181
|
+
return { segments, order };
|
|
182
|
+
// Directions with no order to advance in: set as it is.
|
|
183
|
+
if (!order && (line.order !== undefined || segments.some((s) => s.rtl)))
|
|
184
|
+
return { segments, order };
|
|
185
|
+
return setLine(line, segments, order, advanceOf);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* The way left-to-right text runs along a line whose segments stand at
|
|
189
|
+
* `place`: 1 along it, -1 against it (the line of a mirrored page), 0
|
|
190
|
+
* when the line does not tell. Read off two left-to-right words with one
|
|
191
|
+
* space between them, or two pieces that touch: a space beside a
|
|
192
|
+
* right-to-left word may stand on either side of it.
|
|
193
|
+
*/
|
|
194
|
+
function leftToRightStep(segments, place) {
|
|
195
|
+
const word = (seg) => seg !== undefined && seg.kind === 'text' && !seg.rtl;
|
|
196
|
+
for (let i = 0; i + 1 < segments.length; i++) {
|
|
197
|
+
if (!word(segments[i]))
|
|
198
|
+
continue;
|
|
199
|
+
const next = word(segments[i + 1]) ? i + 1 : segments[i + 1].kind === 'space' && word(segments[i + 2]) ? i + 2 : -1;
|
|
200
|
+
if (next < 0)
|
|
201
|
+
continue;
|
|
202
|
+
const step = place[next] - place[i];
|
|
203
|
+
if (Math.abs(step) === next - i)
|
|
204
|
+
return Math.sign(step);
|
|
205
|
+
}
|
|
206
|
+
return 0;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* {@link lineWordSegmentsInOrder} of a line set word by word. `order`:
|
|
210
|
+
* the order its segments advance in, when it carries one; a run of pieces
|
|
211
|
+
* is then joined only where its pieces follow each other along the line,
|
|
212
|
+
* one step apart, all the same way.
|
|
213
|
+
*/
|
|
214
|
+
function setLine(line, segments, order, advanceOf) {
|
|
215
|
+
// Where each segment stands along the line.
|
|
216
|
+
let place;
|
|
217
|
+
if (order) {
|
|
218
|
+
place = new Array(segments.length);
|
|
219
|
+
order.forEach((index, at) => (place[index] = at));
|
|
220
|
+
}
|
|
221
|
+
let set;
|
|
222
|
+
// Each run set otherwise: its first piece, how many pieces it had, how
|
|
223
|
+
// many segments it is set from, and whether they follow each other
|
|
224
|
+
// along the line or stand against it.
|
|
225
|
+
const runs = [];
|
|
226
|
+
// The way left-to-right text runs along an ordered line, asked once.
|
|
227
|
+
let along;
|
|
228
|
+
// Whether a text was met on the line: the run before any opens it.
|
|
229
|
+
let opened = false;
|
|
230
|
+
for (let from = 0; from < segments.length;) {
|
|
231
|
+
const first = segments[from];
|
|
232
|
+
let to = from + 1;
|
|
233
|
+
const opensLine = !opened;
|
|
234
|
+
if (first.kind !== 'space')
|
|
235
|
+
opened = true;
|
|
236
|
+
if (!joinable(first)) {
|
|
237
|
+
set?.push(first);
|
|
238
|
+
from = to;
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
const step = place && to < segments.length ? place[to] - place[from] : 1;
|
|
242
|
+
while (to < segments.length && joinable(segments[to]) && sameStyle(first, segments[to])
|
|
243
|
+
&& (!place || (Math.abs(step) === 1 && place[to] - place[to - 1] === step)))
|
|
244
|
+
to++;
|
|
245
|
+
const pieces = segments.slice(from, to);
|
|
246
|
+
const endsLine = line.hyphenated === true && to === segments.length;
|
|
247
|
+
// One piece on an ordered line may still be cut from its hyphen: the
|
|
248
|
+
// two are then placed the way the line's left-to-right text runs.
|
|
249
|
+
const way = !place ? 1 : pieces.length > 1 ? step : (along ??= leftToRightStep(segments, place));
|
|
250
|
+
const run = way !== 0 && (pieces.length > 1 || endsLine) ? setPieces(pieces, opensLine, endsLine, (text) => advanceOf(first, text)) : undefined;
|
|
251
|
+
if (run) {
|
|
252
|
+
(set ??= segments.slice(0, from)).push(...run);
|
|
253
|
+
runs.push({ from, pieces: pieces.length, set: run.length, forward: way > 0 });
|
|
254
|
+
}
|
|
255
|
+
else
|
|
256
|
+
set?.push(...pieces);
|
|
257
|
+
from = to;
|
|
258
|
+
}
|
|
259
|
+
if (!set)
|
|
260
|
+
return { segments, order };
|
|
261
|
+
if (!order || !place)
|
|
262
|
+
return { segments: set, order: undefined };
|
|
263
|
+
// The order again: every segment under its new index, a run's segments
|
|
264
|
+
// where its pieces stood, the way they followed each other.
|
|
265
|
+
const index = new Array(segments.length);
|
|
266
|
+
const runAt = new Map();
|
|
267
|
+
let shift = 0;
|
|
268
|
+
let next = 0;
|
|
269
|
+
for (let i = 0; i < segments.length; i++) {
|
|
270
|
+
const run = runs[next];
|
|
271
|
+
if (run && run.from === i) {
|
|
272
|
+
for (let k = 0; k < run.pieces; k++) {
|
|
273
|
+
index[i + k] = i + shift;
|
|
274
|
+
runAt.set(i + k, run);
|
|
275
|
+
}
|
|
276
|
+
shift += run.set - run.pieces;
|
|
277
|
+
i += run.pieces - 1;
|
|
278
|
+
next++;
|
|
279
|
+
}
|
|
280
|
+
else
|
|
281
|
+
index[i] = i + shift;
|
|
282
|
+
}
|
|
283
|
+
const written = [];
|
|
284
|
+
const done = new Set();
|
|
285
|
+
for (const i of order) {
|
|
286
|
+
const run = runAt.get(i);
|
|
287
|
+
if (!run) {
|
|
288
|
+
written.push(index[i]);
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
if (done.has(run.from))
|
|
292
|
+
continue;
|
|
293
|
+
done.add(run.from);
|
|
294
|
+
for (let k = 0; k < run.set; k++)
|
|
295
|
+
written.push(index[run.from] + (run.forward ? k : run.set - 1 - k));
|
|
296
|
+
}
|
|
297
|
+
return { segments: set, order: written };
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* The cells of `text`, a segment of a line of the CJK composer
|
|
301
|
+
* (`VDTLine.cjkComposed`), a ruby base or a run of composed design text:
|
|
302
|
+
* its characters when there are two or more and each is one the composer
|
|
303
|
+
* measures alone (`isCjkGrapheme`: a Han character, a kana, a CJK mark, a
|
|
304
|
+
* dash or a quote it treats as one). Undefined for any other text: a
|
|
305
|
+
* Western run, which was measured whole with its kerning, and a single
|
|
306
|
+
* character.
|
|
307
|
+
*/
|
|
308
|
+
export function cellsOf(text) {
|
|
309
|
+
if (text.length < 2 || text.charCodeAt(0) < 0x80)
|
|
310
|
+
return undefined;
|
|
311
|
+
const cells = graphemesOf(text);
|
|
312
|
+
if (cells.length < 2)
|
|
313
|
+
return undefined;
|
|
314
|
+
for (const cell of cells)
|
|
315
|
+
if (!isCjkGrapheme(cell))
|
|
316
|
+
return undefined;
|
|
317
|
+
return cells;
|
|
318
|
+
}
|
|
319
|
+
//# sourceMappingURL=wordPieces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wordPieces.js","sourceRoot":"","sources":["../src/wordPieces.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "postext",
|
|
3
3
|
"description": "A programmable typesetter for the web. Layout engine that applies professional editorial rules — columns, orphan/widow prevention, balanced columns, resource placement, running heads — to semantic content. Built on @chenglou/pretext for DOM-free text measurement.",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.30.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://postext.dev/",
|