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,492 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Punctuation widths, Han–Latin spacing and hanging punctuation of CJK
|
|
3
|
+
* text (clreq §6.1.3, §6.2.2, §6.3.2, §6.3.3), for the CJK composer
|
|
4
|
+
* (`cjkCompose.ts`).
|
|
5
|
+
*
|
|
6
|
+
* The model is additive, as in metal type and every CJK composer since: a
|
|
7
|
+
* full-width mark is half an em of glyph and half an em of blank on one
|
|
8
|
+
* side — before the glyph for an opening bracket or quote, after it for a
|
|
9
|
+
* closing one and for the mainland's pause and stop marks (set in the
|
|
10
|
+
* corner of their box), a quarter em on each side for the marks Taiwan and
|
|
11
|
+
* Hong Kong centre. What is adjusted is the blank, never the glyph: a mark
|
|
12
|
+
* that gives up blank on its start side is painted that far before its box
|
|
13
|
+
* (`VDTLineSegment.inkOffset`), so its ink stays where the reader expects
|
|
14
|
+
* it.
|
|
15
|
+
*
|
|
16
|
+
* The width decisions go through {@link punctuationBox} (the style and the
|
|
17
|
+
* region), {@link compressPair} (two marks that meet), the line edges
|
|
18
|
+
* ({@link lineStartTrim}, {@link lineEndTrim}) and the reduction a line
|
|
19
|
+
* makes to take one more character ({@link punctuationShrink}). All of them
|
|
20
|
+
* work on the inline axis only: vertical text passes `vertical: true`,
|
|
21
|
+
* which fixes :;?! at one em (clreq §6.3.2.1), and otherwise reuses them
|
|
22
|
+
* as they are.
|
|
23
|
+
*
|
|
24
|
+
* Which blank a region's glyphs carry is decided by the region, not by the
|
|
25
|
+
* font: a Traditional Chinese font set under a mainland tag (or the
|
|
26
|
+
* reverse) puts its marks where its designer did, and compression then
|
|
27
|
+
* trims the wrong side. Books should be set in a face of their region
|
|
28
|
+
* (Noto Serif SC for the mainland, TC for Taiwan, HK for Hong Kong).
|
|
29
|
+
*/
|
|
30
|
+
import { dimensionToPx } from '../units';
|
|
31
|
+
import { languageOf } from '../locale';
|
|
32
|
+
/** The composition outside a build: every mark at its full advance, no
|
|
33
|
+
* compression, no hanging, no Han–Latin space — CJK text set as the
|
|
34
|
+
* composer set it before these settings existed. A build replaces it with
|
|
35
|
+
* the document's (`setCjkComposition`). */
|
|
36
|
+
export const PLAIN_CJK_COMPOSITION = {
|
|
37
|
+
region: 'mainland',
|
|
38
|
+
punctuationWidth: 'fullwidth',
|
|
39
|
+
compressAdjacent: false,
|
|
40
|
+
trimLineStart: false,
|
|
41
|
+
hangingPunctuation: 'none',
|
|
42
|
+
latinSpacing: { em: 0 },
|
|
43
|
+
};
|
|
44
|
+
let documentComposition = PLAIN_CJK_COMPOSITION;
|
|
45
|
+
/** Set the composition CJK text is set with when a measurement names none
|
|
46
|
+
* (the build does, from the resolved `cjk`), as `setCjkLineBreak` sets the
|
|
47
|
+
* line-break level. `undefined` restores {@link PLAIN_CJK_COMPOSITION}. */
|
|
48
|
+
export function setCjkComposition(composition) {
|
|
49
|
+
documentComposition = composition ?? PLAIN_CJK_COMPOSITION;
|
|
50
|
+
}
|
|
51
|
+
/** The composition set by {@link setCjkComposition}. */
|
|
52
|
+
export function getCjkComposition() {
|
|
53
|
+
return documentComposition;
|
|
54
|
+
}
|
|
55
|
+
/** The composition of a resolved `cjk` config: `latinSpacing` in em when it
|
|
56
|
+
* is written in em (or rem), else converted to px at `dpi`. `locale` is
|
|
57
|
+
* the document language (`language`). */
|
|
58
|
+
export function cjkCompositionOf(cjk, dpi, locale) {
|
|
59
|
+
const ls = cjk.latinSpacing;
|
|
60
|
+
const language = languageOf(locale);
|
|
61
|
+
return {
|
|
62
|
+
region: cjk.region,
|
|
63
|
+
punctuationWidth: cjk.punctuationWidth,
|
|
64
|
+
compressAdjacent: cjk.compressAdjacent,
|
|
65
|
+
trimLineStart: cjk.trimLineStart,
|
|
66
|
+
hangingPunctuation: cjk.hangingPunctuation,
|
|
67
|
+
latinSpacing: ls.unit === 'em' || ls.unit === 'rem' ? { em: Math.max(0, ls.value) } : { px: Math.max(0, dimensionToPx(ls, dpi)) },
|
|
68
|
+
...(language ? { language } : {}),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/** Kana and hangul: a paragraph holding them is Japanese or Korean. */
|
|
72
|
+
const KANA_HANGUL_RE = /[ᄀ-ᇿ-ゟ゠-ヿ-ㇰ-ㇿꥠ-가-ힰ-ヲ-゚]/;
|
|
73
|
+
/** Whether the composition sets Japanese or Korean text. */
|
|
74
|
+
function japaneseOrKorean(c) {
|
|
75
|
+
return c.language === 'ja' || c.language === 'ko';
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Whether the marks Latin text shares with Chinese (“ ” ‘ ’ … — ·) may take
|
|
79
|
+
* a Chinese mark's box in a paragraph of `text` (clreq's context routing,
|
|
80
|
+
* `cjkCompose.ts`). They do in Chinese text: in a Chinese document, and in
|
|
81
|
+
* a CJK paragraph of a document in another language (or none) unless it
|
|
82
|
+
* holds kana or hangul. Never in a Japanese or Korean document, whose
|
|
83
|
+
* typography sets them otherwise (Korean at their proportional width).
|
|
84
|
+
*/
|
|
85
|
+
export function routesSharedMarks(c, text) {
|
|
86
|
+
if (japaneseOrKorean(c))
|
|
87
|
+
return false;
|
|
88
|
+
return c.language === 'zh' || !KANA_HANGUL_RE.test(text);
|
|
89
|
+
}
|
|
90
|
+
const verticalOf = new WeakMap();
|
|
91
|
+
/** `c` for text set in the writing mode `vertical` names: the same
|
|
92
|
+
* composition, flagged `vertical` when the text runs down the page (the
|
|
93
|
+
* composer derives it from the writing mode it measures in, so a
|
|
94
|
+
* horizontal heading in a vertical book, or a caption, is set as
|
|
95
|
+
* horizontal text). */
|
|
96
|
+
export function compositionFor(c, vertical) {
|
|
97
|
+
if (!!c.vertical === vertical)
|
|
98
|
+
return c;
|
|
99
|
+
let hit = verticalOf.get(c);
|
|
100
|
+
if (!hit) {
|
|
101
|
+
hit = { ...c };
|
|
102
|
+
if (vertical)
|
|
103
|
+
hit.vertical = true;
|
|
104
|
+
else
|
|
105
|
+
delete hit.vertical;
|
|
106
|
+
verticalOf.set(c, hit);
|
|
107
|
+
}
|
|
108
|
+
return hit;
|
|
109
|
+
}
|
|
110
|
+
/** The settings of a composition as a cache key: measurements of CJK text
|
|
111
|
+
* under other settings never share an entry. */
|
|
112
|
+
export function cjkCompositionKey(c) {
|
|
113
|
+
const ls = c.latinSpacing.px !== undefined ? `${c.latinSpacing.px}px` : `${c.latinSpacing.em}em`;
|
|
114
|
+
// The language counts where it changes a measurement: Japanese and
|
|
115
|
+
// Korean route no shared marks, and only a Chinese document routes them
|
|
116
|
+
// in a paragraph with kana.
|
|
117
|
+
const lang = japaneseOrKorean(c) ? ':jk' : c.language === 'zh' ? ':zh' : '';
|
|
118
|
+
return `${c.region}:${c.punctuationWidth}:${c.compressAdjacent ? 1 : 0}:${c.trimLineStart ? 1 : 0}:${c.hangingPunctuation}:${ls}${c.vertical ? ':v' : ''}${lang}`;
|
|
119
|
+
}
|
|
120
|
+
/** Whether a composition changes nothing: the text is set as without it. */
|
|
121
|
+
export function isPlainComposition(c) {
|
|
122
|
+
return c.punctuationWidth === 'fullwidth' && !c.compressAdjacent && !c.trimLineStart
|
|
123
|
+
&& c.hangingPunctuation === 'none' && (c.latinSpacing.px ?? c.latinSpacing.em ?? 0) === 0;
|
|
124
|
+
}
|
|
125
|
+
/** ?! and their doubles. */
|
|
126
|
+
const QUESTION_EXCLAMATION = new Set(['?', '!', '?', '!', '‼', '⁇', '⁈', '⁉', '﹖', '﹗', '︖', '︕']);
|
|
127
|
+
/** :;, fixed at one em in vertical text. */
|
|
128
|
+
const COLON_SEMICOLON = new Set([':', ';', '﹕', '﹔', '︓', '︔']);
|
|
129
|
+
/**
|
|
130
|
+
* The side of a mark's blank along the line (clreq §6.3.2.1): opening
|
|
131
|
+
* brackets and quotes before their glyph, closing ones after it; the
|
|
132
|
+
* mainland's pause and stop marks (、,。.;:?!, in the corner of their
|
|
133
|
+
* box) after it; the marks Taiwan and Hong Kong centre (、,。.;:) and
|
|
134
|
+
* interpuncts on both sides. ?! are fixed at one em in horizontal Taiwan
|
|
135
|
+
* and Hong Kong text, and :;?! in vertical text everywhere. Any other
|
|
136
|
+
* character has no blank.
|
|
137
|
+
*/
|
|
138
|
+
export function punctuationSide(grapheme, cls, region, vertical = false) {
|
|
139
|
+
switch (cls) {
|
|
140
|
+
case 'opening':
|
|
141
|
+
return 'start';
|
|
142
|
+
case 'closing':
|
|
143
|
+
return 'end';
|
|
144
|
+
case 'interpunct':
|
|
145
|
+
return 'both';
|
|
146
|
+
case 'pause':
|
|
147
|
+
case 'stop':
|
|
148
|
+
if (vertical && (QUESTION_EXCLAMATION.has(grapheme) || COLON_SEMICOLON.has(grapheme)))
|
|
149
|
+
return 'none';
|
|
150
|
+
if (region === 'mainland')
|
|
151
|
+
return 'end';
|
|
152
|
+
return QUESTION_EXCLAMATION.has(grapheme) ? 'none' : 'both';
|
|
153
|
+
default:
|
|
154
|
+
return 'none';
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/** A mark's advance now: its full advance less the blank it gave up. */
|
|
158
|
+
export function boxCut(box) {
|
|
159
|
+
return box.cutStart + box.cutEnd;
|
|
160
|
+
}
|
|
161
|
+
/** The blank a mark still holds on each side. */
|
|
162
|
+
function blankStart(box) {
|
|
163
|
+
if (box.side === 'start')
|
|
164
|
+
return box.blank - box.cutStart;
|
|
165
|
+
if (box.side === 'both')
|
|
166
|
+
return box.blank / 2 - box.cutStart;
|
|
167
|
+
return 0;
|
|
168
|
+
}
|
|
169
|
+
function blankEnd(box) {
|
|
170
|
+
if (box.side === 'end')
|
|
171
|
+
return box.blank - box.cutEnd;
|
|
172
|
+
if (box.side === 'both')
|
|
173
|
+
return box.blank / 2 - box.cutEnd;
|
|
174
|
+
return 0;
|
|
175
|
+
}
|
|
176
|
+
/** Give up `amount` px of blank, on the mark's own side (half each side for
|
|
177
|
+
* a centred mark); never more than it holds. Returns what was given up. */
|
|
178
|
+
function giveUp(box, amount) {
|
|
179
|
+
if (amount <= 0)
|
|
180
|
+
return 0;
|
|
181
|
+
if (box.side === 'start') {
|
|
182
|
+
const take = Math.min(amount, blankStart(box));
|
|
183
|
+
box.cutStart += take;
|
|
184
|
+
return take;
|
|
185
|
+
}
|
|
186
|
+
if (box.side === 'end') {
|
|
187
|
+
const take = Math.min(amount, blankEnd(box));
|
|
188
|
+
box.cutEnd += take;
|
|
189
|
+
return take;
|
|
190
|
+
}
|
|
191
|
+
if (box.side === 'both') {
|
|
192
|
+
const each = Math.min(amount / 2, blankStart(box), blankEnd(box));
|
|
193
|
+
box.cutStart += each;
|
|
194
|
+
box.cutEnd += each;
|
|
195
|
+
return each * 2;
|
|
196
|
+
}
|
|
197
|
+
return 0;
|
|
198
|
+
}
|
|
199
|
+
/** Stop marks (。.!?): the Kaiming style keeps them one em inside the
|
|
200
|
+
* line. */
|
|
201
|
+
function isStop(box) {
|
|
202
|
+
return box.cls === 'stop';
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* A mark (`grapheme` of class `cls`, full advance `advance` px, font em
|
|
206
|
+
* `em` px) with the blank its style sets aside (clreq §6.3.2.1): none under
|
|
207
|
+
* `fullwidth` and `lineEndHalf`, all of it under `halfwidth`, and under
|
|
208
|
+
* `kaiming` all but for the stop marks 。.?!. The mainland interpunct is
|
|
209
|
+
* half an em under every style (GB/T 15834, clreq §5.1), centred, in either
|
|
210
|
+
* writing mode: a full-width glyph gives up its blank here, and in vertical
|
|
211
|
+
* text its cell is half an em already (`verticalCellEms`), so it is no
|
|
212
|
+
* adjustable mark there. Undefined for a character that is no adjustable
|
|
213
|
+
* mark.
|
|
214
|
+
*/
|
|
215
|
+
export function punctuationBox(grapheme, cls, advance, em, c) {
|
|
216
|
+
const side = punctuationSide(grapheme, cls, c.region, c.vertical);
|
|
217
|
+
if (side === 'none' || em <= 0 || advance < em * 0.75)
|
|
218
|
+
return undefined;
|
|
219
|
+
const box = { cls, grapheme, side, em, blank: Math.max(0, advance - em / 2), cutStart: 0, cutEnd: 0 };
|
|
220
|
+
const style = c.punctuationWidth;
|
|
221
|
+
if (style === 'halfwidth' || (style === 'kaiming' && !isStop(box)) || (cls === 'interpunct' && c.region === 'mainland'))
|
|
222
|
+
giveUp(box, box.blank);
|
|
223
|
+
return box;
|
|
224
|
+
}
|
|
225
|
+
/** Whether a mark takes part in the adjacent-mark rules. */
|
|
226
|
+
function isMarkClass(cls) {
|
|
227
|
+
return cls === 'opening' || cls === 'closing' || cls === 'pause' || cls === 'stop' || cls === 'interpunct';
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Two marks that meet (`a` then `b`) give up the blank between them, so the
|
|
231
|
+
* pair takes 1.5 em instead of 2 (clreq §6.3.2.2, the eight rules of the
|
|
232
|
+
* earlier clreq drafts): a closing bracket after another or after a
|
|
233
|
+
* mainland pause or stop mark (。」, not the centred marks of Taiwan and
|
|
234
|
+
* Hong Kong), a pause or stop mark after a closing bracket (」,), an
|
|
235
|
+
* opening bracket after any of them or after another opening one (,「
|
|
236
|
+
* 》( 「『); a quarter em between an interpunct and a closing bracket
|
|
237
|
+
* before it or an opening one after it. Only the blank between the two is
|
|
238
|
+
* given up — the bracket's first — and never more than takes the pair to
|
|
239
|
+
* 1.5 em, so a Kaiming pair that already takes 1.5 em (。”) keeps it.
|
|
240
|
+
*/
|
|
241
|
+
export function compressPair(a, b) {
|
|
242
|
+
if (!isMarkClass(a.cls) || !isMarkClass(b.cls))
|
|
243
|
+
return;
|
|
244
|
+
let limit = Math.max(a.em, b.em) / 2;
|
|
245
|
+
let ok = false;
|
|
246
|
+
if (b.cls === 'closing' && (a.cls === 'closing' || ((a.cls === 'pause' || a.cls === 'stop') && a.side === 'end')))
|
|
247
|
+
ok = true;
|
|
248
|
+
else if (a.cls === 'closing' && (b.cls === 'pause' || b.cls === 'stop'))
|
|
249
|
+
ok = true;
|
|
250
|
+
else if (b.cls === 'opening' && a.cls !== 'interpunct')
|
|
251
|
+
ok = true;
|
|
252
|
+
else if ((a.cls === 'closing' && b.cls === 'interpunct') || (a.cls === 'interpunct' && b.cls === 'opening')) {
|
|
253
|
+
ok = true;
|
|
254
|
+
limit = Math.max(a.em, b.em) / 4;
|
|
255
|
+
}
|
|
256
|
+
if (!ok)
|
|
257
|
+
return;
|
|
258
|
+
// The pair's advance over 1.5 em: what may go.
|
|
259
|
+
const over = (a.blank - boxCut(a)) + (b.blank - boxCut(b)) - Math.max(a.em, b.em) / 2;
|
|
260
|
+
let want = Math.min(limit, over);
|
|
261
|
+
if (want <= 1e-9)
|
|
262
|
+
return;
|
|
263
|
+
// The blank between them: a's end side, b's start side — a bracket's
|
|
264
|
+
// half-em blank before a centred mark's quarter.
|
|
265
|
+
const takeEnd = (box, n) => {
|
|
266
|
+
const t = Math.min(n, Math.max(0, blankEnd(box)));
|
|
267
|
+
box.cutEnd += t;
|
|
268
|
+
if (t > 0)
|
|
269
|
+
box.pairEnd = (box.pairEnd ?? 0) + t;
|
|
270
|
+
return t;
|
|
271
|
+
};
|
|
272
|
+
const takeStart = (box, n) => {
|
|
273
|
+
const t = Math.min(n, Math.max(0, blankStart(box)));
|
|
274
|
+
box.cutStart += t;
|
|
275
|
+
if (t > 0)
|
|
276
|
+
box.pairStart = (box.pairStart ?? 0) + t;
|
|
277
|
+
return t;
|
|
278
|
+
};
|
|
279
|
+
if (a.side === 'end' || a.side === 'start') {
|
|
280
|
+
want -= takeEnd(a, want);
|
|
281
|
+
want -= takeStart(b, want);
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
want -= takeStart(b, want);
|
|
285
|
+
want -= takeEnd(a, want);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Under Kaiming a stop mark keeps its blank inside the line and a closing
|
|
290
|
+
* mark gives its own up, so where the two meet (。” ?” 。)) the stop's half
|
|
291
|
+
* em would stand between them and the quote would read as the next
|
|
292
|
+
* character's. The blank goes after the closing mark instead: 。”␣, the
|
|
293
|
+
* glyphs together, as full width with `compressAdjacent` sets them; the
|
|
294
|
+
* pair keeps its width. A closing mark after that one takes the blank on
|
|
295
|
+
* (。”)␣). The blank is still the stop's: it goes at a line end
|
|
296
|
+
* ({@link lineEndTrim}), gives way with the stop marks' to take in a
|
|
297
|
+
* character ({@link punctuationShrink}), and returns to the stop when the
|
|
298
|
+
* line breaks between the two. Mainland marks only (in the corner of their
|
|
299
|
+
* box): a centred mark keeps its blank on both sides.
|
|
300
|
+
*/
|
|
301
|
+
export function carryStopBlank(a, b) {
|
|
302
|
+
if (b.cls !== 'closing' || b.side !== 'end' || a.side !== 'end')
|
|
303
|
+
return;
|
|
304
|
+
if (!isStop(a) && !a.carry)
|
|
305
|
+
return;
|
|
306
|
+
const moved = Math.min(Math.max(0, blankEnd(a)), b.cutEnd);
|
|
307
|
+
if (moved <= 1e-9)
|
|
308
|
+
return;
|
|
309
|
+
a.cutEnd += moved;
|
|
310
|
+
a.pairEnd = (a.pairEnd ?? 0) + moved;
|
|
311
|
+
if (a.carry)
|
|
312
|
+
a.carry = Math.max(0, a.carry - moved);
|
|
313
|
+
b.cutEnd -= moved;
|
|
314
|
+
b.carry = (b.carry ?? 0) + moved;
|
|
315
|
+
}
|
|
316
|
+
/** The blank a mark gives up when it opens a line: an opening bracket or
|
|
317
|
+
* quote its start half, with `trimLineStart` (clreq §6.3.2.3). */
|
|
318
|
+
export function lineStartTrim(box, c) {
|
|
319
|
+
if (!box || !c.trimLineStart || box.cls !== 'opening')
|
|
320
|
+
return 0;
|
|
321
|
+
return Math.max(0, blankStart(box));
|
|
322
|
+
}
|
|
323
|
+
/** The blank a mark gives up when it ends a line: every mark under
|
|
324
|
+
* `lineEndHalf` (GB/T 15834—2011 §5.1.10), the stop marks under
|
|
325
|
+
* `kaiming` (the rest are half already, but for a closing mark holding a
|
|
326
|
+
* stop's blank, {@link carryStopBlank}), a closing bracket or quote with
|
|
327
|
+
* `trimLineStart` (clreq §6.3.2.3). A centred mark gives up a quarter em
|
|
328
|
+
* each side. */
|
|
329
|
+
export function lineEndTrim(box, c) {
|
|
330
|
+
if (!box || box.side === 'start')
|
|
331
|
+
return 0;
|
|
332
|
+
const rest = box.side === 'both' ? Math.max(0, blankStart(box)) + Math.max(0, blankEnd(box)) : Math.max(0, blankEnd(box));
|
|
333
|
+
if (c.punctuationWidth === 'lineEndHalf')
|
|
334
|
+
return rest;
|
|
335
|
+
if (c.punctuationWidth === 'kaiming' && (isStop(box) || box.cls === 'closing'))
|
|
336
|
+
return rest;
|
|
337
|
+
if (c.trimLineStart && box.cls === 'closing')
|
|
338
|
+
return rest;
|
|
339
|
+
return 0;
|
|
340
|
+
}
|
|
341
|
+
/** Apply the edge trims of a line to a mark: `start` from
|
|
342
|
+
* {@link lineStartTrim}, `end` from {@link lineEndTrim}. */
|
|
343
|
+
export function applyLineTrim(box, start, end) {
|
|
344
|
+
if (start > 0)
|
|
345
|
+
box.cutStart += start;
|
|
346
|
+
if (end <= 0)
|
|
347
|
+
return;
|
|
348
|
+
if (box.side === 'both') {
|
|
349
|
+
// A centred mark gives up what it holds on both sides.
|
|
350
|
+
const s = Math.min(end, Math.max(0, blankStart(box)));
|
|
351
|
+
box.cutStart += s;
|
|
352
|
+
box.cutEnd += end - s;
|
|
353
|
+
}
|
|
354
|
+
else
|
|
355
|
+
box.cutEnd += end;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* A mark at a line edge — it opens the line (`start`), ends it (`end`) or
|
|
359
|
+
* both: the blank it gave up to the mark across the break comes back, as
|
|
360
|
+
* the two no longer meet (clreq §6.3.2.2 compresses marks that meet on a
|
|
361
|
+
* line), then the edge trims apply ({@link lineStartTrim},
|
|
362
|
+
* {@link lineEndTrim}). Changes `box`; returns the blank given up at the
|
|
363
|
+
* edges less the blank that came back, px (negative when the mark grows:
|
|
364
|
+
* a full-width `,` whose `「` went to the next line is one em again).
|
|
365
|
+
*/
|
|
366
|
+
export function applyLineEdges(box, c, start, end) {
|
|
367
|
+
const before = boxCut(box);
|
|
368
|
+
if (start) {
|
|
369
|
+
if (box.pairStart) {
|
|
370
|
+
box.cutStart -= box.pairStart;
|
|
371
|
+
box.pairStart = 0;
|
|
372
|
+
}
|
|
373
|
+
if (box.carry) {
|
|
374
|
+
// The stop whose blank it held ends the line before.
|
|
375
|
+
box.cutEnd += box.carry;
|
|
376
|
+
box.carry = 0;
|
|
377
|
+
}
|
|
378
|
+
applyLineTrim(box, lineStartTrim(box, c), 0);
|
|
379
|
+
}
|
|
380
|
+
if (end) {
|
|
381
|
+
if (box.pairEnd) {
|
|
382
|
+
box.cutEnd -= box.pairEnd;
|
|
383
|
+
box.pairEnd = 0;
|
|
384
|
+
}
|
|
385
|
+
applyLineTrim(box, 0, lineEndTrim(box, c));
|
|
386
|
+
}
|
|
387
|
+
return boxCut(box) - before;
|
|
388
|
+
}
|
|
389
|
+
/** What {@link applyLineEdges} would give up at the edges, leaving `box`
|
|
390
|
+
* as it is. */
|
|
391
|
+
export function lineEdgeCut(box, c, start, end) {
|
|
392
|
+
if (!(start && (box.pairStart || box.carry)) && !(end && box.pairEnd)) {
|
|
393
|
+
// Nothing comes back: the trims alone (an opening mark's start trim and
|
|
394
|
+
// an end trim never touch the same blank).
|
|
395
|
+
return (start ? lineStartTrim(box, c) : 0) + (end ? lineEndTrim(box, c) : 0);
|
|
396
|
+
}
|
|
397
|
+
return applyLineEdges({ ...box }, c, start, end);
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* The blank a mark may still give up when its line is compressed to take
|
|
401
|
+
* one more character that may not open the next line (push-in, clreq
|
|
402
|
+
* §6.2.2.3), after its style, its neighbours and the line edges took
|
|
403
|
+
* theirs. `fullwidth` marks give up nothing (a full-width book keeps its
|
|
404
|
+
* grid); `halfwidth` marks have nothing left; `kaiming` lets its stop marks
|
|
405
|
+
* go down to half an em, last (only to resolve a prohibition: a line that
|
|
406
|
+
* merely falls short is spread, so Kaiming keeps 。?! one em inside the
|
|
407
|
+
* line), and with them the stop's blank a closing mark holds
|
|
408
|
+
* ({@link carryStopBlank}); `lineEndHalf` lets every mark go down to half an
|
|
409
|
+
* em.
|
|
410
|
+
*/
|
|
411
|
+
export function punctuationShrink(box, c) {
|
|
412
|
+
if (!box)
|
|
413
|
+
return 0;
|
|
414
|
+
const rest = Math.max(0, box.blank - boxCut(box));
|
|
415
|
+
switch (c.punctuationWidth) {
|
|
416
|
+
case 'kaiming':
|
|
417
|
+
return isStop(box) || box.carry ? rest : 0;
|
|
418
|
+
case 'lineEndHalf':
|
|
419
|
+
return rest;
|
|
420
|
+
default:
|
|
421
|
+
return 0;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
/** Give up `amount` px of a mark's blank to compress its line (see
|
|
425
|
+
* {@link punctuationShrink}); returns what it gave. */
|
|
426
|
+
export function shrinkPunctuation(box, amount) {
|
|
427
|
+
return giveUp(box, amount);
|
|
428
|
+
}
|
|
429
|
+
/** The step of clreq §6.2.2.3's reduction order a mark belongs to:
|
|
430
|
+
* interpuncts, then brackets, then pause marks, then (after the Han–Latin
|
|
431
|
+
* spaces) stop marks, and a closing mark holding a stop's blank. */
|
|
432
|
+
export function shrinkStep(box) {
|
|
433
|
+
if (box.carry)
|
|
434
|
+
return 6;
|
|
435
|
+
switch (box.cls) {
|
|
436
|
+
case 'interpunct': return 2;
|
|
437
|
+
case 'opening':
|
|
438
|
+
case 'closing': return 3;
|
|
439
|
+
case 'pause': return 4;
|
|
440
|
+
default: return 6;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* The advance of one mark and where its glyph is painted, px — the width
|
|
445
|
+
* decision of {@link punctuationBox} and the line edges, for a single mark
|
|
446
|
+
* with no neighbour: the reuse point for renderers and vertical text.
|
|
447
|
+
* Characters that are no adjustable mark keep `advance`.
|
|
448
|
+
*/
|
|
449
|
+
export function punctuationAdvance(grapheme, cls, advance, em, c, edges = {}) {
|
|
450
|
+
const box = punctuationBox(grapheme, cls, advance, em, c);
|
|
451
|
+
if (!box)
|
|
452
|
+
return { advance, inkOffset: 0 };
|
|
453
|
+
applyLineTrim(box, edges.lineStart ? lineStartTrim(box, c) : 0, edges.lineEnd ? lineEndTrim(box, c) : 0);
|
|
454
|
+
return { advance: advance - boxCut(box), inkOffset: box.cutStart > 0 ? -box.cutStart : 0 };
|
|
455
|
+
}
|
|
456
|
+
/** Marks that may hang in any region: 、,。. */
|
|
457
|
+
const HANG_ANYWHERE = new Set(['、', ',', '。', '.', '、', '。']);
|
|
458
|
+
/**
|
|
459
|
+
* Whether a mark may hang past the end of its line
|
|
460
|
+
* (`cjk.hangingPunctuation`, clreq §6.1.3): 、,。. everywhere and, on the
|
|
461
|
+
* mainland (whose marks sit at the start of their box), every pause and
|
|
462
|
+
* stop mark; under `'allow'`, never in horizontal Taiwan and Hong Kong
|
|
463
|
+
* text, whose centred marks look cut off.
|
|
464
|
+
*/
|
|
465
|
+
export function mayHang(grapheme, cls, c) {
|
|
466
|
+
if (c.hangingPunctuation === 'none')
|
|
467
|
+
return false;
|
|
468
|
+
if (cls !== 'pause' && cls !== 'stop')
|
|
469
|
+
return false;
|
|
470
|
+
if (c.hangingPunctuation === 'allow' && c.region !== 'mainland' && !c.vertical)
|
|
471
|
+
return false;
|
|
472
|
+
return HANG_ANYWHERE.has(grapheme) || c.region === 'mainland';
|
|
473
|
+
}
|
|
474
|
+
/** Han characters, kana, bopomofo and 〇々: what takes the Han–Latin
|
|
475
|
+
* space on one side. */
|
|
476
|
+
const HAN_RE = /^[々〇〡-〩〸-〻-ゟ゠-ヿ-ㄯㆠ-ㆿㇰ-ㇿ㐀-䶿一-鿿豈-\u{20000}-\u{3FFFF}]/u;
|
|
477
|
+
const LATIN_RE = /[\p{L}\p{N}]/u;
|
|
478
|
+
/** Whether a grapheme takes the Han–Latin space on its Latin side: a letter
|
|
479
|
+
* or a digit (not a sign such as ¥ or %). */
|
|
480
|
+
export function isLatinSpacingLatin(grapheme) {
|
|
481
|
+
return grapheme !== undefined && LATIN_RE.test(grapheme);
|
|
482
|
+
}
|
|
483
|
+
/** Whether a grapheme takes the Han–Latin space on its Han side. */
|
|
484
|
+
export function isLatinSpacingHan(grapheme) {
|
|
485
|
+
return grapheme !== undefined && HAN_RE.test(grapheme);
|
|
486
|
+
}
|
|
487
|
+
/** The Han–Latin space in px for text whose CJK font has an em of `em`
|
|
488
|
+
* px. */
|
|
489
|
+
export function latinSpacingPx(c, em) {
|
|
490
|
+
return c.latinSpacing.px ?? (c.latinSpacing.em ?? 0) * em;
|
|
491
|
+
}
|
|
492
|
+
//# sourceMappingURL=cjkPunctuation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cjkPunctuation.js","sourceRoot":"","sources":["../../src/measure/cjkPunctuation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graphemes: what canvas `letterSpacing` and CSS `letter-spacing` space
|
|
3
|
+
* apart. Tracking is counted per grapheme, not per UTF-16 unit, so a
|
|
4
|
+
* supplementary-plane ideograph (𠺕), an emoji or a letter with a combining
|
|
5
|
+
* accent takes one share of it, as the renderers paint it.
|
|
6
|
+
*/
|
|
7
|
+
/** How many graphemes `text` holds. */
|
|
8
|
+
export declare function graphemeCount(text: string): number;
|
|
9
|
+
/** The graphemes of `text`, in order. */
|
|
10
|
+
export declare function graphemesOf(text: string): string[];
|
|
11
|
+
/** The last grapheme of `text` ('' when empty). */
|
|
12
|
+
export declare function lastGrapheme(text: string): string;
|
|
13
|
+
//# sourceMappingURL=graphemes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphemes.d.ts","sourceRoot":"","sources":["../../src/measure/graphemes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,uCAAuC;AACvC,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,yCAAyC;AACzC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAGlD;AAED,mDAAmD;AACnD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMjD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graphemes: what canvas `letterSpacing` and CSS `letter-spacing` space
|
|
3
|
+
* apart. Tracking is counted per grapheme, not per UTF-16 unit, so a
|
|
4
|
+
* supplementary-plane ideograph (𠺕), an emoji or a letter with a combining
|
|
5
|
+
* accent takes one share of it, as the renderers paint it.
|
|
6
|
+
*/
|
|
7
|
+
const segmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });
|
|
8
|
+
/** Text whose graphemes are not one UTF-16 unit each: combining marks,
|
|
9
|
+
* joiners and variation selectors, surrogate pairs, CR LF and conjoining
|
|
10
|
+
* Hangul jamo. Anything else counts its length. */
|
|
11
|
+
const COMPLEX_RE = /[\p{M}\u200D\uFE00-\uFE0F\u1100-\u11FF\u{10000}-\u{10FFFF}\uD800-\uDFFF]|\r\n/u;
|
|
12
|
+
/** How many graphemes `text` holds. */
|
|
13
|
+
export function graphemeCount(text) {
|
|
14
|
+
if (!COMPLEX_RE.test(text))
|
|
15
|
+
return text.length;
|
|
16
|
+
let n = 0;
|
|
17
|
+
const it = segmenter.segment(text)[Symbol.iterator]();
|
|
18
|
+
while (!it.next().done)
|
|
19
|
+
n++;
|
|
20
|
+
return n;
|
|
21
|
+
}
|
|
22
|
+
/** The graphemes of `text`, in order. */
|
|
23
|
+
export function graphemesOf(text) {
|
|
24
|
+
if (!COMPLEX_RE.test(text))
|
|
25
|
+
return Array.from(text);
|
|
26
|
+
return Array.from(segmenter.segment(text), (g) => g.segment);
|
|
27
|
+
}
|
|
28
|
+
/** The last grapheme of `text` ('' when empty). */
|
|
29
|
+
export function lastGrapheme(text) {
|
|
30
|
+
if (text.length === 0)
|
|
31
|
+
return '';
|
|
32
|
+
const tail = text.length > 24 ? text.slice(-24) : text;
|
|
33
|
+
if (!COMPLEX_RE.test(tail))
|
|
34
|
+
return text[text.length - 1];
|
|
35
|
+
const all = graphemesOf(tail);
|
|
36
|
+
return all[all.length - 1] ?? '';
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=graphemes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphemes.js","sourceRoot":"","sources":["../../src/measure/graphemes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;AAE7E;;oDAEoD;AACpD,MAAM,UAAU,GAAG,gFAAgF,CAAC;AAEpG,uCAAuC;AACvC,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IAC/C,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACtD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI;QAAE,CAAC,EAAE,CAAC;IAC5B,OAAO,CAAC,CAAC;AACX,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC/D,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IAC1D,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACnC,CAAC"}
|
package/dist/measure/index.d.ts
CHANGED
|
@@ -5,6 +5,9 @@ export { buildFontString, initHyphenator, clearMeasurementCache, createMeasureme
|
|
|
5
5
|
export { measureGlyphWidth, measureTextWidth } from './canvas';
|
|
6
6
|
export { measureBlock } from './plain';
|
|
7
7
|
export { measureRichBlock } from './rich';
|
|
8
|
+
export { setCjkLineBreak, getCjkLineBreak } from './cjkClasses';
|
|
9
|
+
export { setCjkComposition, getCjkComposition, cjkCompositionOf, cjkCompositionKey, punctuationAdvance, punctuationSide, PLAIN_CJK_COMPOSITION } from './cjkPunctuation';
|
|
10
|
+
export type { CjkComposition, PunctuationSide } from './cjkPunctuation';
|
|
8
11
|
/** {@link measureBlock} through `cache`: the same text, font, width,
|
|
9
12
|
* leading and options measured before come back from it (a copy). A
|
|
10
13
|
* measurement with `options.keepBreaks` or `options.restWidths` is never
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/measure/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAMpF,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC/G,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AACxG,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/measure/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAMpF,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC/G,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AACxG,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzK,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAwCxE;;;;;;;+CAO+C;AAC/C,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,mBAAmB,GAAG,SAAS,EACxC,KAAK,EAAE,gBAAgB,GACtB,aAAa,CAIf;AAED;;4CAE4C;AAC5C,wBAAgB,sBAAsB,CACpC,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,EACxC,KAAK,EAAE,gBAAgB,GACtB,aAAa,CAIf"}
|
package/dist/measure/index.js
CHANGED
|
@@ -6,6 +6,8 @@ export { buildFontString, initHyphenator, clearMeasurementCache, createMeasureme
|
|
|
6
6
|
export { measureGlyphWidth, measureTextWidth } from './canvas';
|
|
7
7
|
export { measureBlock } from './plain';
|
|
8
8
|
export { measureRichBlock } from './rich';
|
|
9
|
+
export { setCjkLineBreak, getCjkLineBreak } from './cjkClasses';
|
|
10
|
+
export { setCjkComposition, getCjkComposition, cjkCompositionOf, cjkCompositionKey, punctuationAdvance, punctuationSide, PLAIN_CJK_COMPOSITION } from './cjkPunctuation';
|
|
9
11
|
/** The caches that hold measurements made with the line-breaking options
|
|
10
12
|
* added after postext 1.4 (`breakAfterDashes`, `optimalRagged`,
|
|
11
13
|
* `breakAfterHyphens`, `hyphenateCompounds: false`, `repeatHyphen`), per
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/measure/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,kBAAkB,IAAI,gBAAgB,EAAE,sBAAsB,IAAI,eAAe,EAAE,MAAM,SAAS,CAAC;AAC5G,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AACxG,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/measure/index.ts"],"names":[],"mappings":"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"}
|
package/dist/measure/links.d.ts
CHANGED
|
@@ -8,8 +8,12 @@ import type { InlineSpan } from '../parse';
|
|
|
8
8
|
* and the hyphen a break adds — and a
|
|
9
9
|
* segment holding any linked character takes that link's `href` (a word
|
|
10
10
|
* glued to the link text, like its closing full stop, is part of the link
|
|
11
|
-
* area).
|
|
12
|
-
*
|
|
11
|
+
* area). Characters the layout added (`inserted`: the 《》 of
|
|
12
|
+
* `cjk.bookTitleMark: 'brackets'`, which are spans, and a warichu note's
|
|
13
|
+
* brackets, which the composer adds and no span holds) are no character of
|
|
14
|
+
* the text: their spans and segments are passed over, and never linked.
|
|
15
|
+
* Returns `lines` itself when nothing is linked, or when the segments
|
|
16
|
+
* cannot be matched (the block then simply has no live links).
|
|
13
17
|
*/
|
|
14
18
|
export declare function linkSegments(lines: VDTLine[], spans: readonly InlineSpan[]): VDTLine[];
|
|
15
19
|
//# sourceMappingURL=links.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/measure/links.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,QAAQ,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/measure/links.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,QAAQ,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA4B3C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,OAAO,EAAE,CAoEtF"}
|