postext 1.8.6 → 1.9.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/__bench__/cjkChapter.bench.test.d.ts +2 -0
- package/dist/__bench__/cjkChapter.bench.test.d.ts.map +1 -0
- package/dist/__bench__/cjkChapter.bench.test.js +71 -0
- package/dist/__bench__/cjkChapter.bench.test.js.map +1 -0
- package/dist/__tests__/bundle.test.js +16 -0
- package/dist/__tests__/bundle.test.js.map +1 -1
- package/dist/__tests__/canvasDirection.test.d.ts +2 -0
- package/dist/__tests__/canvasDirection.test.d.ts.map +1 -0
- package/dist/__tests__/canvasDirection.test.js +45 -0
- package/dist/__tests__/canvasDirection.test.js.map +1 -0
- package/dist/__tests__/chineseLocale.test.d.ts +2 -0
- package/dist/__tests__/chineseLocale.test.d.ts.map +1 -0
- package/dist/__tests__/chineseLocale.test.js +253 -0
- package/dist/__tests__/chineseLocale.test.js.map +1 -0
- package/dist/__tests__/chineseNumbering.test.d.ts +2 -0
- package/dist/__tests__/chineseNumbering.test.d.ts.map +1 -0
- package/dist/__tests__/chineseNumbering.test.js +376 -0
- package/dist/__tests__/chineseNumbering.test.js.map +1 -0
- package/dist/__tests__/cjk/annotations.test.d.ts +2 -0
- package/dist/__tests__/cjk/annotations.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/annotations.test.js +483 -0
- package/dist/__tests__/cjk/annotations.test.js.map +1 -0
- package/dist/__tests__/cjk/annotationsRender.test.d.ts +2 -0
- package/dist/__tests__/cjk/annotationsRender.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/annotationsRender.test.js +263 -0
- package/dist/__tests__/cjk/annotationsRender.test.js.map +1 -0
- package/dist/__tests__/cjk/composer.test.d.ts +2 -0
- package/dist/__tests__/cjk/composer.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/composer.test.js +237 -0
- package/dist/__tests__/cjk/composer.test.js.map +1 -0
- package/dist/__tests__/cjk/composerEdges.test.d.ts +2 -0
- package/dist/__tests__/cjk/composerEdges.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/composerEdges.test.js +352 -0
- package/dist/__tests__/cjk/composerEdges.test.js.map +1 -0
- package/dist/__tests__/cjk/dashRule.test.d.ts +2 -0
- package/dist/__tests__/cjk/dashRule.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/dashRule.test.js +261 -0
- package/dist/__tests__/cjk/dashRule.test.js.map +1 -0
- package/dist/__tests__/cjk/fuzz.test.d.ts +2 -0
- package/dist/__tests__/cjk/fuzz.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/fuzz.test.js +102 -0
- package/dist/__tests__/cjk/fuzz.test.js.map +1 -0
- package/dist/__tests__/cjk/grid.test.d.ts +2 -0
- package/dist/__tests__/cjk/grid.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/grid.test.js +261 -0
- package/dist/__tests__/cjk/grid.test.js.map +1 -0
- package/dist/__tests__/cjk/justifyRender.test.d.ts +2 -0
- package/dist/__tests__/cjk/justifyRender.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/justifyRender.test.js +139 -0
- package/dist/__tests__/cjk/justifyRender.test.js.map +1 -0
- package/dist/__tests__/cjk/latinFastPath.test.d.ts +2 -0
- package/dist/__tests__/cjk/latinFastPath.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/latinFastPath.test.js +208 -0
- package/dist/__tests__/cjk/latinFastPath.test.js.map +1 -0
- package/dist/__tests__/cjk/markCutsLatin.test.d.ts +2 -0
- package/dist/__tests__/cjk/markCutsLatin.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/markCutsLatin.test.js +69 -0
- package/dist/__tests__/cjk/markCutsLatin.test.js.map +1 -0
- package/dist/__tests__/cjk/markRuns.test.d.ts +2 -0
- package/dist/__tests__/cjk/markRuns.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/markRuns.test.js +347 -0
- package/dist/__tests__/cjk/markRuns.test.js.map +1 -0
- package/dist/__tests__/cjk/punctuation.test.d.ts +2 -0
- package/dist/__tests__/cjk/punctuation.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/punctuation.test.js +440 -0
- package/dist/__tests__/cjk/punctuation.test.js.map +1 -0
- package/dist/__tests__/cjk/punctuationRender.test.d.ts +2 -0
- package/dist/__tests__/cjk/punctuationRender.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/punctuationRender.test.js +135 -0
- package/dist/__tests__/cjk/punctuationRender.test.js.map +1 -0
- package/dist/__tests__/cjk/rubyDescenders.test.d.ts +2 -0
- package/dist/__tests__/cjk/rubyDescenders.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/rubyDescenders.test.js +77 -0
- package/dist/__tests__/cjk/rubyDescenders.test.js.map +1 -0
- package/dist/__tests__/cjk/runt.test.d.ts +2 -0
- package/dist/__tests__/cjk/runt.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/runt.test.js +103 -0
- package/dist/__tests__/cjk/runt.test.js.map +1 -0
- package/dist/__tests__/cjk/sharedMarks.test.d.ts +2 -0
- package/dist/__tests__/cjk/sharedMarks.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/sharedMarks.test.js +347 -0
- package/dist/__tests__/cjk/sharedMarks.test.js.map +1 -0
- package/dist/__tests__/cjk/uprightDots.test.d.ts +2 -0
- package/dist/__tests__/cjk/uprightDots.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/uprightDots.test.js +47 -0
- package/dist/__tests__/cjk/uprightDots.test.js.map +1 -0
- package/dist/__tests__/cjk/wordJoiner.test.d.ts +2 -0
- package/dist/__tests__/cjk/wordJoiner.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/wordJoiner.test.js +47 -0
- package/dist/__tests__/cjk/wordJoiner.test.js.map +1 -0
- package/dist/__tests__/cjk/zhuyinTones.test.d.ts +2 -0
- package/dist/__tests__/cjk/zhuyinTones.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/zhuyinTones.test.js +72 -0
- package/dist/__tests__/cjk/zhuyinTones.test.js.map +1 -0
- package/dist/__tests__/contentLocale.test.d.ts +2 -0
- package/dist/__tests__/contentLocale.test.d.ts.map +1 -0
- package/dist/__tests__/contentLocale.test.js +167 -0
- package/dist/__tests__/contentLocale.test.js.map +1 -0
- package/dist/__tests__/defaults/cjk.test.d.ts +2 -0
- package/dist/__tests__/defaults/cjk.test.d.ts.map +1 -0
- package/dist/__tests__/defaults/cjk.test.js +70 -0
- package/dist/__tests__/defaults/cjk.test.js.map +1 -0
- package/dist/__tests__/design/designTextRender.test.js +31 -0
- package/dist/__tests__/design/designTextRender.test.js.map +1 -1
- package/dist/__tests__/design/imageAltText.test.d.ts +2 -0
- package/dist/__tests__/design/imageAltText.test.d.ts.map +1 -0
- package/dist/__tests__/design/imageAltText.test.js +126 -0
- package/dist/__tests__/design/imageAltText.test.js.map +1 -0
- package/dist/__tests__/exports.test.js +61 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/__tests__/headingLetterSpacing.test.js +1 -1
- package/dist/__tests__/headingLetterSpacing.test.js.map +1 -1
- package/dist/__tests__/indexChinese.test.d.ts +2 -0
- package/dist/__tests__/indexChinese.test.d.ts.map +1 -0
- package/dist/__tests__/indexChinese.test.js +190 -0
- package/dist/__tests__/indexChinese.test.js.map +1 -0
- package/dist/__tests__/parse/annotations.test.d.ts +2 -0
- package/dist/__tests__/parse/annotations.test.d.ts.map +1 -0
- package/dist/__tests__/parse/annotations.test.js +175 -0
- package/dist/__tests__/parse/annotations.test.js.map +1 -0
- package/dist/__tests__/parse/attrQuoting.test.js +10 -8
- package/dist/__tests__/parse/attrQuoting.test.js.map +1 -1
- package/dist/__tests__/parse/chineseText.test.d.ts +2 -0
- package/dist/__tests__/parse/chineseText.test.d.ts.map +1 -0
- package/dist/__tests__/parse/chineseText.test.js +352 -0
- package/dist/__tests__/parse/chineseText.test.js.map +1 -0
- package/dist/__tests__/parts.test.js +25 -0
- package/dist/__tests__/parts.test.js.map +1 -1
- package/dist/__tests__/pipeline/colonListRoom.test.js +20 -0
- package/dist/__tests__/pipeline/colonListRoom.test.js.map +1 -1
- package/dist/__tests__/presets/hongloumeng.test.d.ts +2 -0
- package/dist/__tests__/presets/hongloumeng.test.d.ts.map +1 -0
- package/dist/__tests__/presets/hongloumeng.test.js +485 -0
- package/dist/__tests__/presets/hongloumeng.test.js.map +1 -0
- package/dist/__tests__/vertical/canvasPaint.test.d.ts +2 -0
- package/dist/__tests__/vertical/canvasPaint.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/canvasPaint.test.js +229 -0
- package/dist/__tests__/vertical/canvasPaint.test.js.map +1 -0
- package/dist/__tests__/vertical/compositionPaint.test.d.ts +2 -0
- package/dist/__tests__/vertical/compositionPaint.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/compositionPaint.test.js +538 -0
- package/dist/__tests__/vertical/compositionPaint.test.js.map +1 -0
- package/dist/__tests__/vertical/geometry.test.d.ts +2 -0
- package/dist/__tests__/vertical/geometry.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/geometry.test.js +276 -0
- package/dist/__tests__/vertical/geometry.test.js.map +1 -0
- package/dist/__tests__/vertical/htmlSmoke.test.d.ts +2 -0
- package/dist/__tests__/vertical/htmlSmoke.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/htmlSmoke.test.js +25 -0
- package/dist/__tests__/vertical/htmlSmoke.test.js.map +1 -0
- package/dist/__tests__/vertical/htmlTurnedCells.test.d.ts +2 -0
- package/dist/__tests__/vertical/htmlTurnedCells.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/htmlTurnedCells.test.js +99 -0
- package/dist/__tests__/vertical/htmlTurnedCells.test.js.map +1 -0
- package/dist/__tests__/vertical/htmlVertical.test.d.ts +2 -0
- package/dist/__tests__/vertical/htmlVertical.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/htmlVertical.test.js +145 -0
- package/dist/__tests__/vertical/htmlVertical.test.js.map +1 -0
- package/dist/__tests__/vertical/lineAxis.test.d.ts +2 -0
- package/dist/__tests__/vertical/lineAxis.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/lineAxis.test.js +128 -0
- package/dist/__tests__/vertical/lineAxis.test.js.map +1 -0
- package/dist/__tests__/vertical/measurePaint.test.d.ts +2 -0
- package/dist/__tests__/vertical/measurePaint.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/measurePaint.test.js +259 -0
- package/dist/__tests__/vertical/measurePaint.test.js.map +1 -0
- package/dist/__tests__/vertical/orientation.test.d.ts +2 -0
- package/dist/__tests__/vertical/orientation.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/orientation.test.js +153 -0
- package/dist/__tests__/vertical/orientation.test.js.map +1 -0
- package/dist/__tests__/vertical/stub.d.ts +8 -0
- package/dist/__tests__/vertical/stub.d.ts.map +1 -0
- package/dist/__tests__/vertical/stub.js +37 -0
- package/dist/__tests__/vertical/stub.js.map +1 -0
- package/dist/__tests__/vertical/tateChuYoko.test.d.ts +2 -0
- package/dist/__tests__/vertical/tateChuYoko.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/tateChuYoko.test.js +270 -0
- package/dist/__tests__/vertical/tateChuYoko.test.js.map +1 -0
- package/dist/__tests__/vertical/uprightResources.test.d.ts +2 -0
- package/dist/__tests__/vertical/uprightResources.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/uprightResources.test.js +182 -0
- package/dist/__tests__/vertical/uprightResources.test.js.map +1 -0
- package/dist/__tests__/vertical/verticalDesignText.test.d.ts +2 -0
- package/dist/__tests__/vertical/verticalDesignText.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/verticalDesignText.test.js +190 -0
- package/dist/__tests__/vertical/verticalDesignText.test.js.map +1 -0
- package/dist/__tests__/vertical/verticalSpans.d.ts +25 -0
- package/dist/__tests__/vertical/verticalSpans.d.ts.map +1 -0
- package/dist/__tests__/vertical/verticalSpans.js +39 -0
- package/dist/__tests__/vertical/verticalSpans.js.map +1 -0
- package/dist/__tests__/vertical/verticalTwins.test.d.ts +2 -0
- package/dist/__tests__/vertical/verticalTwins.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/verticalTwins.test.js +71 -0
- package/dist/__tests__/vertical/verticalTwins.test.js.map +1 -0
- package/dist/bundle/adapters.d.ts +14 -5
- package/dist/bundle/adapters.d.ts.map +1 -1
- package/dist/bundle/adapters.js +4 -3
- package/dist/bundle/adapters.js.map +1 -1
- package/dist/bundle/codec.d.ts.map +1 -1
- package/dist/bundle/codec.js +27 -4
- package/dist/bundle/codec.js.map +1 -1
- package/dist/bundle/index.d.ts +1 -1
- package/dist/bundle/index.d.ts.map +1 -1
- package/dist/bundle/manifest.d.ts +6 -4
- package/dist/bundle/manifest.d.ts.map +1 -1
- package/dist/bundle/manifest.js +31 -32
- package/dist/bundle/manifest.js.map +1 -1
- package/dist/bundle/types.d.ts +7 -2
- package/dist/bundle/types.d.ts.map +1 -1
- package/dist/canvas-backend/annotations.d.ts +31 -0
- package/dist/canvas-backend/annotations.d.ts.map +1 -0
- package/dist/canvas-backend/annotations.js +120 -0
- package/dist/canvas-backend/annotations.js.map +1 -0
- package/dist/canvas-backend/blockRender.d.ts.map +1 -1
- package/dist/canvas-backend/blockRender.js +195 -15
- package/dist/canvas-backend/blockRender.js.map +1 -1
- package/dist/canvas-backend/decorations.d.ts +5 -0
- package/dist/canvas-backend/decorations.d.ts.map +1 -1
- package/dist/canvas-backend/decorations.js +27 -0
- package/dist/canvas-backend/decorations.js.map +1 -1
- package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
- package/dist/canvas-backend/headerFooter.js +32 -16
- package/dist/canvas-backend/headerFooter.js.map +1 -1
- package/dist/canvas-backend/index.d.ts +2 -0
- package/dist/canvas-backend/index.d.ts.map +1 -1
- package/dist/canvas-backend/index.js +62 -2
- 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 +42 -5
- package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
- package/dist/canvas-backend/segmentText.d.ts +23 -0
- package/dist/canvas-backend/segmentText.d.ts.map +1 -0
- package/dist/canvas-backend/segmentText.js +41 -0
- package/dist/canvas-backend/segmentText.js.map +1 -0
- package/dist/canvas-backend/verticalText.d.ts +113 -0
- package/dist/canvas-backend/verticalText.d.ts.map +1 -0
- package/dist/canvas-backend/verticalText.js +437 -0
- package/dist/canvas-backend/verticalText.js.map +1 -0
- package/dist/chineseNumerals.d.ts +39 -0
- package/dist/chineseNumerals.d.ts.map +1 -0
- package/dist/chineseNumerals.js +192 -0
- package/dist/chineseNumerals.js.map +1 -0
- package/dist/cjkMarks.d.ts +61 -0
- package/dist/cjkMarks.d.ts.map +1 -0
- package/dist/cjkMarks.js +441 -0
- package/dist/cjkMarks.js.map +1 -0
- package/dist/columnClip.d.ts +13 -4
- package/dist/columnClip.d.ts.map +1 -1
- package/dist/columnClip.js +33 -5
- package/dist/columnClip.js.map +1 -1
- package/dist/configWarnings.d.ts.map +1 -1
- package/dist/configWarnings.js +18 -3
- package/dist/configWarnings.js.map +1 -1
- package/dist/defaults/bodyText.d.ts +4 -1
- package/dist/defaults/bodyText.d.ts.map +1 -1
- package/dist/defaults/bodyText.js +27 -5
- package/dist/defaults/bodyText.js.map +1 -1
- package/dist/defaults/calloutStyles.js +1 -1
- package/dist/defaults/calloutStyles.js.map +1 -1
- package/dist/defaults/captionStyle.d.ts.map +1 -1
- package/dist/defaults/captionStyle.js +14 -0
- package/dist/defaults/captionStyle.js.map +1 -1
- package/dist/defaults/cjk.d.ts +33 -0
- package/dist/defaults/cjk.d.ts.map +1 -0
- package/dist/defaults/cjk.js +234 -0
- package/dist/defaults/cjk.js.map +1 -0
- package/dist/defaults/headerFooter.d.ts.map +1 -1
- package/dist/defaults/headerFooter.js +2 -0
- package/dist/defaults/headerFooter.js.map +1 -1
- package/dist/defaults/headingStyles.d.ts.map +1 -1
- package/dist/defaults/headingStyles.js +4 -0
- package/dist/defaults/headingStyles.js.map +1 -1
- package/dist/defaults/headings.d.ts.map +1 -1
- package/dist/defaults/headings.js +13 -6
- package/dist/defaults/headings.js.map +1 -1
- package/dist/defaults/index.d.ts +1 -0
- package/dist/defaults/index.d.ts.map +1 -1
- package/dist/defaults/index.js +10 -1
- package/dist/defaults/index.js.map +1 -1
- package/dist/defaults/indexConfig.d.ts +2 -1
- package/dist/defaults/indexConfig.d.ts.map +1 -1
- package/dist/defaults/indexConfig.js +5 -0
- package/dist/defaults/indexConfig.js.map +1 -1
- package/dist/defaults/layout.d.ts.map +1 -1
- package/dist/defaults/layout.js +7 -0
- package/dist/defaults/layout.js.map +1 -1
- package/dist/defaults/orderedLists.d.ts +5 -2
- package/dist/defaults/orderedLists.d.ts.map +1 -1
- package/dist/defaults/orderedLists.js +20 -5
- package/dist/defaults/orderedLists.js.map +1 -1
- package/dist/defaults/page.d.ts +8 -2
- package/dist/defaults/page.d.ts.map +1 -1
- package/dist/defaults/page.js +24 -7
- package/dist/defaults/page.js.map +1 -1
- package/dist/defaults/resourceTypes.d.ts +3 -3
- package/dist/defaults/resourceTypes.d.ts.map +1 -1
- package/dist/defaults/resourceTypes.js +23 -9
- package/dist/defaults/resourceTypes.js.map +1 -1
- package/dist/defaults/tableStyle.d.ts.map +1 -1
- package/dist/defaults/tableStyle.js +8 -5
- package/dist/defaults/tableStyle.js.map +1 -1
- package/dist/design/layout.d.ts +33 -0
- package/dist/design/layout.d.ts.map +1 -1
- package/dist/design/layout.js +124 -18
- package/dist/design/layout.js.map +1 -1
- package/dist/design/placeholders.d.ts.map +1 -1
- package/dist/design/placeholders.js +5 -1
- package/dist/design/placeholders.js.map +1 -1
- package/dist/design/richText.d.ts +24 -4
- package/dist/design/richText.d.ts.map +1 -1
- package/dist/design/richText.js +77 -16
- package/dist/design/richText.js.map +1 -1
- package/dist/html-backend.d.ts.map +1 -1
- package/dist/html-backend.js +635 -25
- package/dist/html-backend.js.map +1 -1
- package/dist/htmlAnnotations.d.ts +29 -0
- package/dist/htmlAnnotations.d.ts.map +1 -0
- package/dist/htmlAnnotations.js +86 -0
- package/dist/htmlAnnotations.js.map +1 -0
- package/dist/hyphenate.js +2 -1
- package/dist/hyphenate.js.map +1 -1
- package/dist/index.d.ts +28 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -8
- package/dist/index.js.map +1 -1
- package/dist/knuthPlass/pretextAdapter.d.ts +4 -1
- package/dist/knuthPlass/pretextAdapter.d.ts.map +1 -1
- package/dist/knuthPlass/pretextAdapter.js +9 -5
- package/dist/knuthPlass/pretextAdapter.js.map +1 -1
- package/dist/knuthPlass/richAdapter.d.ts +15 -2
- package/dist/knuthPlass/richAdapter.d.ts.map +1 -1
- package/dist/knuthPlass/richAdapter.js +16 -6
- package/dist/knuthPlass/richAdapter.js.map +1 -1
- package/dist/knuthPlass/tracking.d.ts +1 -1
- package/dist/knuthPlass/tracking.d.ts.map +1 -1
- package/dist/knuthPlass/tracking.js +4 -3
- package/dist/knuthPlass/tracking.js.map +1 -1
- package/dist/knuthPlass/types.d.ts +3 -0
- package/dist/knuthPlass/types.d.ts.map +1 -1
- package/dist/lineInk.d.ts +13 -0
- package/dist/lineInk.d.ts.map +1 -1
- package/dist/lineInk.js +28 -1
- package/dist/lineInk.js.map +1 -1
- package/dist/locale.d.ts +91 -3
- package/dist/locale.d.ts.map +1 -1
- package/dist/locale.js +245 -1
- package/dist/locale.js.map +1 -1
- package/dist/looseLines.d.ts +11 -1
- package/dist/looseLines.d.ts.map +1 -1
- package/dist/looseLines.js +26 -1
- package/dist/looseLines.js.map +1 -1
- package/dist/measure/cache.d.ts.map +1 -1
- package/dist/measure/cache.js +51 -3
- package/dist/measure/cache.js.map +1 -1
- package/dist/measure/canvas.d.ts +25 -0
- package/dist/measure/canvas.d.ts.map +1 -1
- package/dist/measure/canvas.js +90 -1
- package/dist/measure/canvas.js.map +1 -1
- package/dist/measure/cjk.d.ts +8 -13
- package/dist/measure/cjk.d.ts.map +1 -1
- package/dist/measure/cjk.js +29 -53
- package/dist/measure/cjk.js.map +1 -1
- package/dist/measure/cjkAnnotate.d.ts +96 -0
- package/dist/measure/cjkAnnotate.d.ts.map +1 -0
- package/dist/measure/cjkAnnotate.js +237 -0
- package/dist/measure/cjkAnnotate.js.map +1 -0
- package/dist/measure/cjkClasses.d.ts +133 -0
- package/dist/measure/cjkClasses.d.ts.map +1 -0
- package/dist/measure/cjkClasses.js +273 -0
- package/dist/measure/cjkClasses.js.map +1 -0
- package/dist/measure/cjkCompose.d.ts +86 -0
- package/dist/measure/cjkCompose.d.ts.map +1 -0
- package/dist/measure/cjkCompose.js +2022 -0
- package/dist/measure/cjkCompose.js.map +1 -0
- package/dist/measure/cjkPunctuation.d.ts +248 -0
- package/dist/measure/cjkPunctuation.d.ts.map +1 -0
- package/dist/measure/cjkPunctuation.js +492 -0
- package/dist/measure/cjkPunctuation.js.map +1 -0
- package/dist/measure/graphemes.d.ts +13 -0
- package/dist/measure/graphemes.d.ts.map +1 -0
- package/dist/measure/graphemes.js +38 -0
- package/dist/measure/graphemes.js.map +1 -0
- package/dist/measure/index.d.ts +3 -0
- package/dist/measure/index.d.ts.map +1 -1
- package/dist/measure/index.js +2 -0
- package/dist/measure/index.js.map +1 -1
- package/dist/measure/links.d.ts +6 -2
- package/dist/measure/links.d.ts.map +1 -1
- package/dist/measure/links.js +15 -5
- package/dist/measure/links.js.map +1 -1
- package/dist/measure/markCuts.d.ts +37 -0
- package/dist/measure/markCuts.d.ts.map +1 -0
- package/dist/measure/markCuts.js +77 -0
- package/dist/measure/markCuts.js.map +1 -0
- package/dist/measure/plain.d.ts.map +1 -1
- package/dist/measure/plain.js +33 -11
- package/dist/measure/plain.js.map +1 -1
- package/dist/measure/rich.d.ts +88 -1
- package/dist/measure/rich.d.ts.map +1 -1
- package/dist/measure/rich.js +233 -111
- package/dist/measure/rich.js.map +1 -1
- package/dist/measure/rubyLift.d.ts +11 -0
- package/dist/measure/rubyLift.d.ts.map +1 -0
- package/dist/measure/rubyLift.js +57 -0
- package/dist/measure/rubyLift.js.map +1 -0
- package/dist/measure/spaces.d.ts +12 -2
- package/dist/measure/spaces.d.ts.map +1 -1
- package/dist/measure/spaces.js +21 -7
- package/dist/measure/spaces.js.map +1 -1
- package/dist/measure/types.d.ts +20 -1
- package/dist/measure/types.d.ts.map +1 -1
- package/dist/measure/types.js.map +1 -1
- package/dist/measure/vertical.d.ts +104 -0
- package/dist/measure/vertical.d.ts.map +1 -0
- package/dist/measure/vertical.js +184 -0
- package/dist/measure/vertical.js.map +1 -0
- package/dist/numberWords.d.ts +3 -10
- package/dist/numberWords.d.ts.map +1 -1
- package/dist/numberWords.js +21 -9
- package/dist/numberWords.js.map +1 -1
- package/dist/numbering.d.ts +23 -5
- package/dist/numbering.d.ts.map +1 -1
- package/dist/numbering.js +99 -14
- package/dist/numbering.js.map +1 -1
- package/dist/parse/annotations.d.ts +101 -0
- package/dist/parse/annotations.d.ts.map +1 -0
- package/dist/parse/annotations.js +556 -0
- package/dist/parse/annotations.js.map +1 -0
- package/dist/parse/attrs.d.ts +48 -1
- package/dist/parse/attrs.d.ts.map +1 -1
- package/dist/parse/attrs.js +121 -8
- package/dist/parse/attrs.js.map +1 -1
- package/dist/parse/blockParser.d.ts.map +1 -1
- package/dist/parse/blockParser.js +50 -24
- package/dist/parse/blockParser.js.map +1 -1
- package/dist/parse/index.d.ts +3 -1
- package/dist/parse/index.d.ts.map +1 -1
- package/dist/parse/index.js +1 -0
- package/dist/parse/index.js.map +1 -1
- package/dist/parse/injectSpans.d.ts +3 -1
- package/dist/parse/injectSpans.d.ts.map +1 -1
- package/dist/parse/injectSpans.js +29 -8
- package/dist/parse/injectSpans.js.map +1 -1
- package/dist/parse/inlineFormatting.d.ts +38 -6
- package/dist/parse/inlineFormatting.d.ts.map +1 -1
- package/dist/parse/inlineFormatting.js +139 -26
- package/dist/parse/inlineFormatting.js.map +1 -1
- package/dist/parse/inlineSnippet.d.ts +2 -1
- package/dist/parse/inlineSnippet.d.ts.map +1 -1
- package/dist/parse/inlineSnippet.js +6 -2
- package/dist/parse/inlineSnippet.js.map +1 -1
- package/dist/parse/orientationMarks.d.ts +49 -0
- package/dist/parse/orientationMarks.d.ts.map +1 -0
- package/dist/parse/orientationMarks.js +138 -0
- package/dist/parse/orientationMarks.js.map +1 -0
- package/dist/parse/softBreaks.d.ts +56 -0
- package/dist/parse/softBreaks.d.ts.map +1 -0
- package/dist/parse/softBreaks.js +271 -0
- package/dist/parse/softBreaks.js.map +1 -0
- package/dist/parse/sourceMapping.d.ts.map +1 -1
- package/dist/parse/sourceMapping.js +41 -0
- package/dist/parse/sourceMapping.js.map +1 -1
- package/dist/parse/types.d.ts +84 -0
- package/dist/parse/types.d.ts.map +1 -1
- package/dist/pipeline/annotations.d.ts +56 -0
- package/dist/pipeline/annotations.d.ts.map +1 -0
- package/dist/pipeline/annotations.js +181 -0
- package/dist/pipeline/annotations.js.map +1 -0
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +158 -47
- package/dist/pipeline/build.js.map +1 -1
- package/dist/pipeline/buildBlockKind.d.ts +3 -0
- package/dist/pipeline/buildBlockKind.d.ts.map +1 -1
- package/dist/pipeline/buildBlockKind.js +5 -3
- package/dist/pipeline/buildBlockKind.js.map +1 -1
- package/dist/pipeline/buildHelpers.d.ts +36 -6
- package/dist/pipeline/buildHelpers.d.ts.map +1 -1
- package/dist/pipeline/buildHelpers.js +55 -8
- package/dist/pipeline/buildHelpers.js.map +1 -1
- package/dist/pipeline/buildMeasurement.d.ts +4 -0
- package/dist/pipeline/buildMeasurement.d.ts.map +1 -1
- package/dist/pipeline/buildMeasurement.js +3 -1
- package/dist/pipeline/buildMeasurement.js.map +1 -1
- package/dist/pipeline/calloutLayout.d.ts.map +1 -1
- package/dist/pipeline/calloutLayout.js +25 -11
- package/dist/pipeline/calloutLayout.js.map +1 -1
- package/dist/pipeline/cjkGrid.d.ts +133 -0
- package/dist/pipeline/cjkGrid.d.ts.map +1 -0
- package/dist/pipeline/cjkGrid.js +191 -0
- package/dist/pipeline/cjkGrid.js.map +1 -0
- package/dist/pipeline/config.d.ts +13 -9
- package/dist/pipeline/config.d.ts.map +1 -1
- package/dist/pipeline/config.js +43 -18
- package/dist/pipeline/config.js.map +1 -1
- package/dist/pipeline/contentWarnings.d.ts +10 -0
- package/dist/pipeline/contentWarnings.d.ts.map +1 -1
- package/dist/pipeline/contentWarnings.js +174 -2
- package/dist/pipeline/contentWarnings.js.map +1 -1
- package/dist/pipeline/floatPlacement.d.ts +9 -3
- package/dist/pipeline/floatPlacement.d.ts.map +1 -1
- package/dist/pipeline/floatPlacement.js +17 -6
- package/dist/pipeline/floatPlacement.js.map +1 -1
- package/dist/pipeline/headerFooter.d.ts +5 -2
- package/dist/pipeline/headerFooter.d.ts.map +1 -1
- package/dist/pipeline/headerFooter.js +123 -28
- package/dist/pipeline/headerFooter.js.map +1 -1
- package/dist/pipeline/headingDesignCuts.d.ts.map +1 -1
- package/dist/pipeline/headingDesignCuts.js +3 -1
- package/dist/pipeline/headingDesignCuts.js.map +1 -1
- package/dist/pipeline/headingStyles.d.ts +9 -3
- package/dist/pipeline/headingStyles.d.ts.map +1 -1
- package/dist/pipeline/headingStyles.js +23 -5
- package/dist/pipeline/headingStyles.js.map +1 -1
- package/dist/pipeline/indexDirective.d.ts.map +1 -1
- package/dist/pipeline/indexDirective.js +64 -20
- package/dist/pipeline/indexDirective.js.map +1 -1
- package/dist/pipeline/indexGroups.d.ts +55 -0
- package/dist/pipeline/indexGroups.d.ts.map +1 -0
- package/dist/pipeline/indexGroups.js +151 -0
- package/dist/pipeline/indexGroups.js.map +1 -0
- package/dist/pipeline/lists.d.ts +17 -0
- package/dist/pipeline/lists.d.ts.map +1 -1
- package/dist/pipeline/lists.js +43 -51
- package/dist/pipeline/lists.js.map +1 -1
- package/dist/pipeline/measureContentBlock.d.ts +3 -0
- package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
- package/dist/pipeline/measureContentBlock.js +31 -4
- package/dist/pipeline/measureContentBlock.js.map +1 -1
- package/dist/pipeline/outline.d.ts.map +1 -1
- package/dist/pipeline/outline.js +13 -8
- package/dist/pipeline/outline.js.map +1 -1
- package/dist/pipeline/parts.d.ts +6 -3
- package/dist/pipeline/parts.d.ts.map +1 -1
- package/dist/pipeline/parts.js +28 -5
- package/dist/pipeline/parts.js.map +1 -1
- package/dist/pipeline/placeholders.d.ts +11 -0
- package/dist/pipeline/placeholders.d.ts.map +1 -1
- package/dist/pipeline/placeholders.js +48 -18
- package/dist/pipeline/placeholders.js.map +1 -1
- package/dist/pipeline/placement.d.ts +10 -6
- package/dist/pipeline/placement.d.ts.map +1 -1
- package/dist/pipeline/placement.js +33 -16
- package/dist/pipeline/placement.js.map +1 -1
- package/dist/pipeline/resourceLayout.d.ts +18 -1
- package/dist/pipeline/resourceLayout.d.ts.map +1 -1
- package/dist/pipeline/resourceLayout.js +109 -21
- package/dist/pipeline/resourceLayout.js.map +1 -1
- package/dist/pipeline/toc.d.ts.map +1 -1
- package/dist/pipeline/toc.js +6 -5
- package/dist/pipeline/toc.js.map +1 -1
- package/dist/pipeline/verticalMetrics.d.ts +14 -0
- package/dist/pipeline/verticalMetrics.d.ts.map +1 -0
- package/dist/pipeline/verticalMetrics.js +154 -0
- package/dist/pipeline/verticalMetrics.js.map +1 -0
- package/dist/types.d.ts +344 -13
- package/dist/types.d.ts.map +1 -1
- package/dist/vdt.d.ts +396 -6
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.js +49 -0
- package/dist/vdt.js.map +1 -1
- package/dist/writingMode.d.ts +156 -0
- package/dist/writingMode.d.ts.map +1 -0
- package/dist/writingMode.js +291 -0
- package/dist/writingMode.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
export const CJK_LINE_BREAK_LEVELS = ['none', 'basic', 'gb', 'strict'];
|
|
2
|
+
/** The level lines of CJK text break at when a measurement names none:
|
|
3
|
+
* the document's `cjk.lineBreak`, which the build sets before it lays the
|
|
4
|
+
* document out (as it sets the hyphenation language), so captions, table
|
|
5
|
+
* cells, notes and boxes break like the body. */
|
|
6
|
+
let documentLineBreak = 'gb';
|
|
7
|
+
/** Set the level {@link getCjkLineBreak} returns (the build does, from the
|
|
8
|
+
* resolved `cjk.lineBreak`). */
|
|
9
|
+
export function setCjkLineBreak(level) {
|
|
10
|
+
documentLineBreak = level;
|
|
11
|
+
}
|
|
12
|
+
/** The document's line-break level for CJK text (see
|
|
13
|
+
* {@link setCjkLineBreak}); `gb` until a build sets another. */
|
|
14
|
+
export function getCjkLineBreak() {
|
|
15
|
+
return documentLineBreak;
|
|
16
|
+
}
|
|
17
|
+
/** Whether a line may break between two graphemes that touch: `a` (class
|
|
18
|
+
* `aCls`, a CJK grapheme when `aCjk`) and `b` after it. Only next to a CJK
|
|
19
|
+
* grapheme — two Western graphemes never part here — and never before the
|
|
20
|
+
* ideographic space; at `level`, no prohibited mark opens or closes a
|
|
21
|
+
* line. */
|
|
22
|
+
export function cjkBreakAllowed(aCls, aCjk, bCls, bCjk, level) {
|
|
23
|
+
if (aCls === 'zwsp' || bCls === 'zwsp')
|
|
24
|
+
return true;
|
|
25
|
+
if (!aCjk && !bCjk)
|
|
26
|
+
return false;
|
|
27
|
+
if (bCls === 'ideoSpace')
|
|
28
|
+
return false;
|
|
29
|
+
return !isLineStartProhibited(bCls, level) && !isLineEndProhibited(aCls, level);
|
|
30
|
+
}
|
|
31
|
+
/** Whether a grapheme of `cls` may not open a line at `level`. */
|
|
32
|
+
export function isLineStartProhibited(cls, level) {
|
|
33
|
+
switch (level) {
|
|
34
|
+
case 'none':
|
|
35
|
+
return false;
|
|
36
|
+
case 'strict':
|
|
37
|
+
if (cls === 'dash' || cls === 'ellipsis')
|
|
38
|
+
return true;
|
|
39
|
+
// falls through
|
|
40
|
+
case 'gb':
|
|
41
|
+
if (cls === 'solidus')
|
|
42
|
+
return true;
|
|
43
|
+
// falls through
|
|
44
|
+
case 'basic':
|
|
45
|
+
return cls === 'pause' || cls === 'stop' || cls === 'closing' || cls === 'connector'
|
|
46
|
+
|| cls === 'interpunct' || cls === 'iteration' || cls === 'postfix';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** Whether a grapheme of `cls` may not close a line at `level`. */
|
|
50
|
+
export function isLineEndProhibited(cls, level) {
|
|
51
|
+
switch (level) {
|
|
52
|
+
case 'none':
|
|
53
|
+
return false;
|
|
54
|
+
case 'strict':
|
|
55
|
+
case 'gb':
|
|
56
|
+
if (cls === 'solidus')
|
|
57
|
+
return true;
|
|
58
|
+
// falls through
|
|
59
|
+
case 'basic':
|
|
60
|
+
return cls === 'opening' || cls === 'prefix';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const OPENING = new Set('(〔[{【〖《〈「『〘〚〝“‘([{«‹︵︷︹︻︽︿﹁﹃﹇﹙﹛﹝︗⦅「⦅');
|
|
64
|
+
const CLOSING = new Set(')〕]}】〗》〉」』〙〛〞〟”’)]}»›︶︸︺︼︾﹀﹂﹄﹈﹚﹜﹞︘⦆」⦆');
|
|
65
|
+
const PAUSE = new Set('、,;:,;:﹐﹑﹔﹕︐︑︓︔、');
|
|
66
|
+
const STOP = new Set('。.!?.!?‼⁇⁈⁉﹒﹖﹗︒︕︖。');
|
|
67
|
+
const INTERPUNCT = new Set('·‧・・');
|
|
68
|
+
const ITERATION = new Set('々〻ゝゞヽヾーー〱〲〳〴〵');
|
|
69
|
+
const DASH = new Set('—―⸺⸻︱︲﹘');
|
|
70
|
+
const ELLIPSIS = new Set('…‥⋯︙︰');
|
|
71
|
+
const CONNECTOR = new Set('–~〜~〰゠');
|
|
72
|
+
const SOLIDUS = new Set('//');
|
|
73
|
+
const PREFIX = new Set('¥$€£₩¥$£₩±−+﹩₽₹');
|
|
74
|
+
const POSTFIX = new Set('%‰‱°℃℉′″%¢﹪');
|
|
75
|
+
/** The squared Latin abbreviations of units in the CJK compatibility
|
|
76
|
+
* block: ㍱ hPa to ㍺ IU, ㎀ pA to ㏟ A∕m, ㏿ gal. They follow a number as
|
|
77
|
+
* % does, in any script, and are no CJK text. */
|
|
78
|
+
export function isUnitSquare(cp) {
|
|
79
|
+
return (cp >= 0x3371 && cp <= 0x337A) || (cp >= 0x3380 && cp <= 0x33DF) || cp === 0x33FF;
|
|
80
|
+
}
|
|
81
|
+
/** Fullwidth digits 0–9. */
|
|
82
|
+
export function isFullwidthDigit(cp) {
|
|
83
|
+
return cp >= 0xFF10 && cp <= 0xFF19;
|
|
84
|
+
}
|
|
85
|
+
/** Fullwidth digits and Latin letters (0–9, A–Z, a–z): set one em
|
|
86
|
+
* wide like ideographs, but a number or a word a line never breaks
|
|
87
|
+
* inside. */
|
|
88
|
+
export function isFullwidthAlnum(cp) {
|
|
89
|
+
return (cp >= 0xFF10 && cp <= 0xFF19) || (cp >= 0xFF21 && cp <= 0xFF3A) || (cp >= 0xFF41 && cp <= 0xFF5A);
|
|
90
|
+
}
|
|
91
|
+
/** Code points of the CJK scripts and their symbol blocks, classed
|
|
92
|
+
* `ideograph` unless a punctuation set above names them. */
|
|
93
|
+
function isCjkCodePoint(cp) {
|
|
94
|
+
if (cp >= 0x3371 && cp <= 0x33FF && isUnitSquare(cp))
|
|
95
|
+
return false;
|
|
96
|
+
return (cp >= 0x1100 && cp <= 0x11FF) // Hangul Jamo
|
|
97
|
+
|| (cp >= 0x2E80 && cp <= 0x2FDF) // CJK and Kangxi radicals
|
|
98
|
+
|| (cp >= 0x2FF0 && cp <= 0x2FFF) // ideographic description characters
|
|
99
|
+
|| (cp >= 0x3000 && cp <= 0x303F) // CJK symbols and punctuation
|
|
100
|
+
|| (cp >= 0x3040 && cp <= 0x30FF) // kana
|
|
101
|
+
|| (cp >= 0x3100 && cp <= 0x312F) // bopomofo
|
|
102
|
+
|| (cp >= 0x3130 && cp <= 0x318F) // Hangul compatibility Jamo
|
|
103
|
+
|| (cp >= 0x3190 && cp <= 0x31FF) // kanbun, bopomofo extended, CJK strokes, katakana extension
|
|
104
|
+
|| (cp >= 0x3200 && cp <= 0x33FF) // enclosed CJK, CJK compatibility
|
|
105
|
+
|| (cp >= 0x3400 && cp <= 0x4DBF) // Extension A
|
|
106
|
+
|| (cp >= 0x4E00 && cp <= 0x9FFF) // unified ideographs
|
|
107
|
+
|| (cp >= 0xA960 && cp <= 0xA97F) // Hangul Jamo extended A
|
|
108
|
+
|| (cp >= 0xAC00 && cp <= 0xD7FF) // Hangul syllables, Jamo extended B
|
|
109
|
+
|| (cp >= 0xF900 && cp <= 0xFAFF) // compatibility ideographs
|
|
110
|
+
|| (cp >= 0xFE10 && cp <= 0xFE1F) // vertical forms
|
|
111
|
+
|| (cp >= 0xFE30 && cp <= 0xFE6F) // CJK compatibility forms, small form variants
|
|
112
|
+
|| (cp >= 0xFF00 && cp <= 0xFFEF) // halfwidth and fullwidth forms
|
|
113
|
+
|| (cp >= 0x16FE0 && cp <= 0x16FFF) // ideographic symbols (small 儿)
|
|
114
|
+
|| (cp >= 0x1B000 && cp <= 0x1B16F) // kana supplement and extended
|
|
115
|
+
|| (cp >= 0x1F200 && cp <= 0x1F2FF) // enclosed ideographic supplement
|
|
116
|
+
|| (cp >= 0x20000 && cp <= 0x3FFFF); // Extensions B and later
|
|
117
|
+
}
|
|
118
|
+
const PICTOGRAPHIC_RE = /\p{Extended_Pictographic}/u;
|
|
119
|
+
/** The class of a grapheme, read from its first code point. */
|
|
120
|
+
export function cjkClassOf(grapheme) {
|
|
121
|
+
const ch = grapheme.length === 1 ? grapheme : String.fromCodePoint(grapheme.codePointAt(0));
|
|
122
|
+
if (ch === '\u3000')
|
|
123
|
+
return 'ideoSpace';
|
|
124
|
+
if (ch === '\u200B')
|
|
125
|
+
return 'zwsp';
|
|
126
|
+
if (OPENING.has(ch))
|
|
127
|
+
return 'opening';
|
|
128
|
+
if (CLOSING.has(ch))
|
|
129
|
+
return 'closing';
|
|
130
|
+
if (PAUSE.has(ch))
|
|
131
|
+
return 'pause';
|
|
132
|
+
if (STOP.has(ch))
|
|
133
|
+
return 'stop';
|
|
134
|
+
if (INTERPUNCT.has(ch))
|
|
135
|
+
return 'interpunct';
|
|
136
|
+
if (ITERATION.has(ch))
|
|
137
|
+
return 'iteration';
|
|
138
|
+
if (DASH.has(ch))
|
|
139
|
+
return 'dash';
|
|
140
|
+
if (ELLIPSIS.has(ch))
|
|
141
|
+
return 'ellipsis';
|
|
142
|
+
if (CONNECTOR.has(ch))
|
|
143
|
+
return 'connector';
|
|
144
|
+
if (SOLIDUS.has(ch))
|
|
145
|
+
return 'solidus';
|
|
146
|
+
if (PREFIX.has(ch))
|
|
147
|
+
return 'prefix';
|
|
148
|
+
if (POSTFIX.has(ch))
|
|
149
|
+
return 'postfix';
|
|
150
|
+
const cp = ch.codePointAt(0);
|
|
151
|
+
if (isUnitSquare(cp))
|
|
152
|
+
return 'postfix';
|
|
153
|
+
if (isCjkCodePoint(cp))
|
|
154
|
+
return 'ideograph';
|
|
155
|
+
if (cp >= 0x2190 && PICTOGRAPHIC_RE.test(ch))
|
|
156
|
+
return 'ideograph';
|
|
157
|
+
return 'western';
|
|
158
|
+
}
|
|
159
|
+
/** Whether a grapheme is set as a Chinese character in a CJK paragraph: it
|
|
160
|
+
* opens a unit of its own instead of joining a Western run. The ASCII
|
|
161
|
+
* marks (`,` `.` `(` `%`…) and the signs of numbers stay in the Western
|
|
162
|
+
* run they touch; the marks Chinese shares with Latin text (— … · “ ” ‘ ’
|
|
163
|
+
* – ~) are Chinese marks, except the apostrophe or the interpunct of a
|
|
164
|
+
* Latin word, which the unit builder keeps in it. */
|
|
165
|
+
export function isCjkGrapheme(grapheme) {
|
|
166
|
+
const cp = grapheme.codePointAt(0);
|
|
167
|
+
if (cp < 0x80)
|
|
168
|
+
return false;
|
|
169
|
+
if (isCjkCodePoint(cp))
|
|
170
|
+
return true;
|
|
171
|
+
switch (grapheme[0]) {
|
|
172
|
+
case '\u2014':
|
|
173
|
+
case '\u2015':
|
|
174
|
+
case '\u2E3A':
|
|
175
|
+
case '\u2E3B': // — ― ⸺ ⸻
|
|
176
|
+
case '\u2026':
|
|
177
|
+
case '\u2025':
|
|
178
|
+
case '\u22EF': // … ‥ ⋯
|
|
179
|
+
case '\u00B7':
|
|
180
|
+
case '\u2027': // · ‧
|
|
181
|
+
case '\u201C':
|
|
182
|
+
case '\u201D':
|
|
183
|
+
case '\u2018':
|
|
184
|
+
case '\u2019': // “ ” ‘ ’
|
|
185
|
+
case '\u2013': // –
|
|
186
|
+
case '\u200B':
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
189
|
+
return cp >= 0x2190 && PICTOGRAPHIC_RE.test(grapheme);
|
|
190
|
+
}
|
|
191
|
+
/** Whether a grapheme is a letter or digit of Western text (the neighbours
|
|
192
|
+
* of an apostrophe or an interpunct kept inside a word). */
|
|
193
|
+
export function isWesternWordChar(grapheme) {
|
|
194
|
+
if (grapheme === undefined)
|
|
195
|
+
return false;
|
|
196
|
+
const cp = grapheme.codePointAt(0);
|
|
197
|
+
if (isCjkCodePoint(cp))
|
|
198
|
+
return false;
|
|
199
|
+
return /[\p{L}\p{N}]/u.test(grapheme);
|
|
200
|
+
}
|
|
201
|
+
/** Whether an apostrophe or an interpunct sits inside a Latin word
|
|
202
|
+
* ("don’t", "l·l"): between two letters or digits of Western text. It
|
|
203
|
+
* belongs to the word then — the composer keeps it in the word's run, and
|
|
204
|
+
* vertical text sets it sideways with the word — not to the Chinese text
|
|
205
|
+
* around it. */
|
|
206
|
+
export function isWordInnerMark(grapheme, prev, next) {
|
|
207
|
+
return (grapheme === '\u2019' || grapheme === '\u00B7') && isWesternWordChar(prev) && isWesternWordChar(next);
|
|
208
|
+
}
|
|
209
|
+
/** Whether a code point is a mark a browser sets half width when it meets
|
|
210
|
+
* another (CSS `text-spacing-trim`, OpenType `chws`/`halt`): an opening or
|
|
211
|
+
* closing bracket or quote, a pause or stop mark, an interpunct, the
|
|
212
|
+
* ideographic space. The marks of the CJK blocks always; the marks Latin
|
|
213
|
+
* text shares with Chinese (“ ” ‘ ’ · ‧ « »…) only when `shared` is set
|
|
214
|
+
* (the text is Chinese). ASCII never. */
|
|
215
|
+
export function isTrimmableMark(cp, shared) {
|
|
216
|
+
if (cp < 0xAB)
|
|
217
|
+
return false;
|
|
218
|
+
if (cp < 0x2E80 && !shared)
|
|
219
|
+
return false;
|
|
220
|
+
switch (cjkClassOf(String.fromCodePoint(cp))) {
|
|
221
|
+
case 'opening':
|
|
222
|
+
case 'closing':
|
|
223
|
+
case 'pause':
|
|
224
|
+
case 'stop':
|
|
225
|
+
case 'interpunct':
|
|
226
|
+
case 'ideoSpace':
|
|
227
|
+
return true;
|
|
228
|
+
default:
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Where to cut `text` so that no piece holds two CJK marks side by side:
|
|
234
|
+
* the offsets (UTF-16) between each such pair. Chrome (CSS
|
|
235
|
+
* `text-spacing-trim: normal`, and fonts with `chws`) sets the first of
|
|
236
|
+
* `)》`, `”“`, `》。` or `。《` half width when a run is measured or painted
|
|
237
|
+
* whole — `本)》录` in Noto Serif SC is 3.5 em as one run and 4 em
|
|
238
|
+
* character by character — while the CJK composer measures every
|
|
239
|
+
* character alone and adjusts the marks itself (`cjk.punctuationWidth`).
|
|
240
|
+
* Measuring and painting such text piece by piece keeps the browser out of
|
|
241
|
+
* it. `shared` counts the marks Latin text shares with Chinese (“ ” ‘ ’ ·):
|
|
242
|
+
* set it for Chinese text only, so a Latin `’”` is never cut. Empty for
|
|
243
|
+
* text with no such pair.
|
|
244
|
+
*/
|
|
245
|
+
export function cjkMarkCuts(text, shared) {
|
|
246
|
+
let cuts;
|
|
247
|
+
let prev = false;
|
|
248
|
+
for (let i = 0; i < text.length; i++) {
|
|
249
|
+
const cp = text.codePointAt(i);
|
|
250
|
+
const mark = isTrimmableMark(cp, shared);
|
|
251
|
+
if (mark && prev)
|
|
252
|
+
(cuts ??= []).push(i);
|
|
253
|
+
prev = mark;
|
|
254
|
+
if (cp > 0xFFFF)
|
|
255
|
+
i++;
|
|
256
|
+
}
|
|
257
|
+
return cuts ?? [];
|
|
258
|
+
}
|
|
259
|
+
/** `text` cut at {@link cjkMarkCuts}: one piece when there is no cut. */
|
|
260
|
+
export function cjkMarkPieces(text, shared) {
|
|
261
|
+
const cuts = cjkMarkCuts(text, shared);
|
|
262
|
+
if (cuts.length === 0)
|
|
263
|
+
return [text];
|
|
264
|
+
const out = [];
|
|
265
|
+
let from = 0;
|
|
266
|
+
for (const at of cuts) {
|
|
267
|
+
out.push(text.slice(from, at));
|
|
268
|
+
from = at;
|
|
269
|
+
}
|
|
270
|
+
out.push(text.slice(from));
|
|
271
|
+
return out;
|
|
272
|
+
}
|
|
273
|
+
//# sourceMappingURL=cjkClasses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cjkClasses.js","sourceRoot":"","sources":["../../src/measure/cjkClasses.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The CJK line composer: Chinese (and Japanese, Korean) paragraphs, on both
|
|
3
|
+
* the plain and the formatted path, broken between characters under the
|
|
4
|
+
* clreq prohibitions of the document's `cjk.lineBreak` and, when justified,
|
|
5
|
+
* spread between characters.
|
|
6
|
+
*
|
|
7
|
+
* Linear in the paragraph: every unit (one grapheme, a Western run a line
|
|
8
|
+
* never breaks inside, a 2-em dash or ellipsis, an atomic box) is measured
|
|
9
|
+
* once — the width cache holds single characters, not prefixes — and the
|
|
10
|
+
* breaker walks the units once with a running width. A line that would
|
|
11
|
+
* start with a prohibited mark gives up characters to the next line
|
|
12
|
+
* (push-out), back to the last break the rules allow.
|
|
13
|
+
*
|
|
14
|
+
* Justification (clreq §6.2.2.4): a justified line that is not its
|
|
15
|
+
* paragraph's last is stretched to the measure — word spaces first, up to
|
|
16
|
+
* ½ em each, then every gap between characters equally, never inside a
|
|
17
|
+
* Western run (a word, a number with its signs), a 2-em dash or ellipsis,
|
|
18
|
+
* and never next to a connector or a solidus. The spread is carried as
|
|
19
|
+
* segment `tracking` (px after each grapheme, in the segment's width); a
|
|
20
|
+
* Western run or a dash pair that a gap follows gives its last grapheme a
|
|
21
|
+
* segment of its own. A line that needs more than the cap (½ em, or
|
|
22
|
+
* `bodyText.maxJustifyTracking` when set) is set with the cap and flagged
|
|
23
|
+
* `cjkLoose` and `ragged`; a line with no CJK character on it (the head of
|
|
24
|
+
* a long web address) is set `ragged` without the flag.
|
|
25
|
+
*
|
|
26
|
+
* Segments: a Western run keeps one of its own, and single characters
|
|
27
|
+
* share one only when they have one style, link and spacing and advance
|
|
28
|
+
* alike, so a caret spread evenly over a segment lands on its characters
|
|
29
|
+
* and a Markdown link covers only its own.
|
|
30
|
+
*/
|
|
31
|
+
import type { InlineSpan } from '../parse';
|
|
32
|
+
import type { VDTSegmentMarks } from '../vdt';
|
|
33
|
+
import { type MeasuredBlock, type MeasureBlockOptions } from './types';
|
|
34
|
+
import { type CjkLineBreakLevel } from './cjkClasses';
|
|
35
|
+
/**
|
|
36
|
+
* Whether a paragraph is set by the CJK composer: it holds more CJK letters
|
|
37
|
+
* than word spaces. A word space is a run of spaces between two characters
|
|
38
|
+
* that are not CJK. A space that touches a CJK character or mark is the
|
|
39
|
+
* one web text types at each boundary (`2026 年 9 月 28 日`, `安装 Node.js
|
|
40
|
+
* 和 Git`), which the composer replaces with the Han–Latin space.
|
|
41
|
+
* A Latin paragraph that quotes a Chinese title or name ("the novel 紅樓夢
|
|
42
|
+
* was …") has more word spaces, stays with Knuth–Plass and breaks next to
|
|
43
|
+
* the characters it quotes; a Chinese paragraph with Latin words in it
|
|
44
|
+
* ("用 iPhone 拍照") is composed, with its typed spaces or without them.
|
|
45
|
+
*/
|
|
46
|
+
export declare function isCjkParagraph(text: string): boolean;
|
|
47
|
+
/** Whether the CJK composer sets a paragraph of this text: it holds CJK
|
|
48
|
+
* text (not only unit squares or marks Latin shares with Chinese) and more
|
|
49
|
+
* CJK letters than word spaces (see {@link isCjkParagraph}). Both
|
|
50
|
+
* measuring paths ask this, so they agree. */
|
|
51
|
+
export declare function composesAsCjk(text: string): boolean;
|
|
52
|
+
/** The marks a span sets on its characters (#193), the emphasis dots'
|
|
53
|
+
* defaults filled in: a filled dot (an open circle), under the text, or
|
|
54
|
+
* right of it in vertical text. */
|
|
55
|
+
export declare function spanMarks(span: InlineSpan, vertical: boolean): VDTSegmentMarks | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* Set a Chinese, Japanese or Korean paragraph (see the module comment):
|
|
58
|
+
* `options.cjkLineBreak` (else the document's level) decides where lines
|
|
59
|
+
* may break; `textAlign: 'justify'` spreads every line but the last to the
|
|
60
|
+
* measure. First-line and hanging indents, the block's tracking
|
|
61
|
+
* (`letterSpacingPx`), other measures for later lines (`restWidths`) and a
|
|
62
|
+
* positive `looseness` (one line more, for column balancing: the lines are
|
|
63
|
+
* broken a little short of the measure and spread to it) are honoured;
|
|
64
|
+
* Knuth–Plass options are not used.
|
|
65
|
+
*/
|
|
66
|
+
export declare function composeCjkParagraph(spans: InlineSpan[], normalFont: string, boldFont: string, italicFont: string, boldItalicFont: string, maxWidthPx: number, lineHeightPx: number, options: MeasureBlockOptions | undefined): MeasuredBlock;
|
|
67
|
+
/** Where a word that holds CJK characters may break, and its widths: see
|
|
68
|
+
* {@link cjkWordBreaks}. */
|
|
69
|
+
export interface CjkWordBreaks {
|
|
70
|
+
/** Offsets into the word a line may break at, ascending. */
|
|
71
|
+
breaks: number[];
|
|
72
|
+
/** The word's advance: the sum of its units'. */
|
|
73
|
+
width: number;
|
|
74
|
+
/** The advance of the word's first `idx` characters. */
|
|
75
|
+
widthBefore: (idx: number) => number;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The breaks of one word (no breaking space inside) that holds CJK
|
|
79
|
+
* characters, in a paragraph set by the word-by-word breaker (a Latin
|
|
80
|
+
* paragraph quoting CJK): next to its CJK characters, under the document's
|
|
81
|
+
* line-break rules. Each unit is measured once and the widths before a
|
|
82
|
+
* break come from their running sums, so a long run of ideographs costs
|
|
83
|
+
* linear time.
|
|
84
|
+
*/
|
|
85
|
+
export declare function cjkWordBreaks(word: string, font: string, smallCaps: boolean | undefined, letterSpacingPx: number, level?: CjkLineBreakLevel): CjkWordBreaks;
|
|
86
|
+
//# sourceMappingURL=cjkCompose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cjkCompose.d.ts","sourceRoot":"","sources":["../../src/measure/cjkCompose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAc,UAAU,EAAiB,MAAM,UAAU,CAAC;AACtE,OAAO,KAAK,EAA6C,eAAe,EAAc,MAAM,QAAQ,CAAC;AAErG,OAAO,EAAe,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAkBpF,OAAO,EAWL,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AA4CtB;;;;;;;;;;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;AA6GD;;oCAEoC;AACpC,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,CAc1F;AA2rDD;;;;;;;;;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,CA4Ff;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;;;;;;;GAOG;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,GAAG,aAAa,CAoC9K"}
|