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
package/dist/measure/canvas.d.ts
CHANGED
|
@@ -1,7 +1,32 @@
|
|
|
1
1
|
export declare function measureTextWidth(text: string, font: string): number;
|
|
2
|
+
/**
|
|
3
|
+
* The width of `text` set in one run, as the browser paints it: two CJK
|
|
4
|
+
* marks that meet are not measured apart (see {@link measureTextWidth}).
|
|
5
|
+
* For the pieces a renderer paints apart (`markPieces`), each of which
|
|
6
|
+
* holds only pairs the layout measured whole.
|
|
7
|
+
*/
|
|
8
|
+
export declare function measureRunWidth(text: string, font: string): number;
|
|
2
9
|
/** Drop all cached text widths. Must be called whenever font faces are
|
|
3
10
|
* (un)registered: widths measured against fallback glyphs are stale. */
|
|
4
11
|
export declare function clearTextWidthCache(): void;
|
|
12
|
+
/** Called whenever {@link clearTextWidthCache} drops the widths (fonts
|
|
13
|
+
* changed): other font-dependent caches clear with it. */
|
|
14
|
+
export declare function onTextWidthCacheClear(listener: () => void): void;
|
|
15
|
+
/** The ink box of `text` in `font` above and below the alphabetic
|
|
16
|
+
* baseline (px), or null when the measurer gives no ink metrics. Not
|
|
17
|
+
* cached. */
|
|
18
|
+
export declare function measureInkBox(text: string, font: string): {
|
|
19
|
+
ascent: number;
|
|
20
|
+
descent: number;
|
|
21
|
+
} | null;
|
|
22
|
+
/** Where the ink of `text` in `font` starts and ends along the line, px
|
|
23
|
+
* from the pen's origin (the start is negative when the ink overhangs
|
|
24
|
+
* it), or null when the measurer gives no ink metrics or the text has no
|
|
25
|
+
* ink. Not cached. */
|
|
26
|
+
export declare function measureInkExtent(text: string, font: string): {
|
|
27
|
+
start: number;
|
|
28
|
+
end: number;
|
|
29
|
+
} | null;
|
|
5
30
|
/** Measure a short glyph (e.g. a list bullet) in the given font. */
|
|
6
31
|
export declare function measureGlyphWidth(text: string, font: string): number;
|
|
7
32
|
/** Compute the normal space width for a given font, used to express justified
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../src/measure/canvas.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../src/measure/canvas.ts"],"names":[],"mappings":"AA6BA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CA+BnE;AAMD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAuBlE;AAED;yEACyE;AACzE,wBAAgB,mBAAmB,IAAI,IAAI,CAM1C;AAID;2DAC2D;AAC3D,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAEhE;AAED;;cAEc;AACd,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAWpG;AAED;;;uBAGuB;AACvB,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAYlG;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED;oDACoD;AACpD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD"}
|
package/dist/measure/canvas.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { cjkMarkPieces } from './cjkClasses';
|
|
2
|
+
import { hasCJK } from './cjk';
|
|
1
3
|
let _measureCtx = null;
|
|
2
4
|
/** Font string currently set on the measure context, to skip redundant
|
|
3
5
|
* `ctx.font` assignments (each assignment re-parses the shorthand). */
|
|
@@ -36,7 +38,16 @@ export function measureTextWidth(text, font) {
|
|
|
36
38
|
ctx.font = font;
|
|
37
39
|
_currentFont = font;
|
|
38
40
|
}
|
|
39
|
-
|
|
41
|
+
// Two CJK marks side by side (`)》`, `”“`) are measured apart: the
|
|
42
|
+
// browser would set the first half width in one run (see
|
|
43
|
+
// `cjkMarkCuts`), and the renderers paint them apart. Text with no CJK
|
|
44
|
+
// is never cut (`markCuts`): one measure, with no cut to look for.
|
|
45
|
+
let width = 0;
|
|
46
|
+
if (!hasCJK(text))
|
|
47
|
+
width += ctx.measureText(text).width;
|
|
48
|
+
else
|
|
49
|
+
for (const piece of cjkMarkPieces(text, true))
|
|
50
|
+
width += ctx.measureText(piece).width;
|
|
40
51
|
if (_widthCacheEntries >= MAX_WIDTH_CACHE_ENTRIES) {
|
|
41
52
|
_widthCaches = new Map();
|
|
42
53
|
_widthCacheEntries = 0;
|
|
@@ -47,11 +58,89 @@ export function measureTextWidth(text, font) {
|
|
|
47
58
|
_widthCacheEntries++;
|
|
48
59
|
return width;
|
|
49
60
|
}
|
|
61
|
+
// Widths of runs as the browser sets them (see `measureRunWidth`).
|
|
62
|
+
let _runCaches = new Map();
|
|
63
|
+
let _runCacheEntries = 0;
|
|
64
|
+
/**
|
|
65
|
+
* The width of `text` set in one run, as the browser paints it: two CJK
|
|
66
|
+
* marks that meet are not measured apart (see {@link measureTextWidth}).
|
|
67
|
+
* For the pieces a renderer paints apart (`markPieces`), each of which
|
|
68
|
+
* holds only pairs the layout measured whole.
|
|
69
|
+
*/
|
|
70
|
+
export function measureRunWidth(text, font) {
|
|
71
|
+
let byText = _runCaches.get(font);
|
|
72
|
+
if (byText === undefined) {
|
|
73
|
+
byText = new Map();
|
|
74
|
+
_runCaches.set(font, byText);
|
|
75
|
+
}
|
|
76
|
+
const cached = byText.get(text);
|
|
77
|
+
if (cached !== undefined)
|
|
78
|
+
return cached;
|
|
79
|
+
const ctx = getMeasureCtx();
|
|
80
|
+
if (font !== _currentFont) {
|
|
81
|
+
ctx.font = font;
|
|
82
|
+
_currentFont = font;
|
|
83
|
+
}
|
|
84
|
+
const width = ctx.measureText(text).width;
|
|
85
|
+
if (_runCacheEntries >= MAX_WIDTH_CACHE_ENTRIES) {
|
|
86
|
+
_runCaches = new Map();
|
|
87
|
+
_runCacheEntries = 0;
|
|
88
|
+
byText = new Map();
|
|
89
|
+
_runCaches.set(font, byText);
|
|
90
|
+
}
|
|
91
|
+
byText.set(text, width);
|
|
92
|
+
_runCacheEntries++;
|
|
93
|
+
return width;
|
|
94
|
+
}
|
|
50
95
|
/** Drop all cached text widths. Must be called whenever font faces are
|
|
51
96
|
* (un)registered: widths measured against fallback glyphs are stale. */
|
|
52
97
|
export function clearTextWidthCache() {
|
|
53
98
|
_widthCaches = new Map();
|
|
54
99
|
_widthCacheEntries = 0;
|
|
100
|
+
_runCaches = new Map();
|
|
101
|
+
_runCacheEntries = 0;
|
|
102
|
+
for (const listener of _fontChangeListeners)
|
|
103
|
+
listener();
|
|
104
|
+
}
|
|
105
|
+
const _fontChangeListeners = new Set();
|
|
106
|
+
/** Called whenever {@link clearTextWidthCache} drops the widths (fonts
|
|
107
|
+
* changed): other font-dependent caches clear with it. */
|
|
108
|
+
export function onTextWidthCacheClear(listener) {
|
|
109
|
+
_fontChangeListeners.add(listener);
|
|
110
|
+
}
|
|
111
|
+
/** The ink box of `text` in `font` above and below the alphabetic
|
|
112
|
+
* baseline (px), or null when the measurer gives no ink metrics. Not
|
|
113
|
+
* cached. */
|
|
114
|
+
export function measureInkBox(text, font) {
|
|
115
|
+
const ctx = getMeasureCtx();
|
|
116
|
+
if (font !== _currentFont) {
|
|
117
|
+
ctx.font = font;
|
|
118
|
+
_currentFont = font;
|
|
119
|
+
}
|
|
120
|
+
const m = ctx.measureText(text);
|
|
121
|
+
const ascent = m.actualBoundingBoxAscent;
|
|
122
|
+
const descent = m.actualBoundingBoxDescent;
|
|
123
|
+
if (typeof ascent !== 'number' || typeof descent !== 'number' || !Number.isFinite(ascent) || !Number.isFinite(descent))
|
|
124
|
+
return null;
|
|
125
|
+
return { ascent, descent };
|
|
126
|
+
}
|
|
127
|
+
/** Where the ink of `text` in `font` starts and ends along the line, px
|
|
128
|
+
* from the pen's origin (the start is negative when the ink overhangs
|
|
129
|
+
* it), or null when the measurer gives no ink metrics or the text has no
|
|
130
|
+
* ink. Not cached. */
|
|
131
|
+
export function measureInkExtent(text, font) {
|
|
132
|
+
const ctx = getMeasureCtx();
|
|
133
|
+
if (font !== _currentFont) {
|
|
134
|
+
ctx.font = font;
|
|
135
|
+
_currentFont = font;
|
|
136
|
+
}
|
|
137
|
+
const m = ctx.measureText(text);
|
|
138
|
+
const left = m.actualBoundingBoxLeft;
|
|
139
|
+
const right = m.actualBoundingBoxRight;
|
|
140
|
+
if (typeof left !== 'number' || typeof right !== 'number' || !Number.isFinite(left) || !Number.isFinite(right))
|
|
141
|
+
return null;
|
|
142
|
+
const start = -left;
|
|
143
|
+
return right > start ? { start, end: right } : null;
|
|
55
144
|
}
|
|
56
145
|
/** Measure a short glyph (e.g. a list bullet) in the given font. */
|
|
57
146
|
export function measureGlyphWidth(text, font) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../src/measure/canvas.ts"],"names":[],"mappings":"AAAA,IAAI,WAAW,GAAwE,IAAI,CAAC;AAC5F;wEACwE;AACxE,IAAI,YAAY,GAAG,EAAE,CAAC;AAEtB,SAAS,aAAa;IACpB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,IAAI,OAAO,eAAe,KAAK,WAAW,EAAE,CAAC;YAC3C,WAAW,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC;QACnE,CAAC;QACD,YAAY,GAAG,EAAE,CAAC;IACpB,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,yEAAyE;AACzE,yEAAyE;AACzE,0EAA0E;AAC1E,0EAA0E;AAC1E,6DAA6D;AAC7D,MAAM,uBAAuB,GAAG,OAAO,CAAC;AACxC,IAAI,YAAY,GAAG,IAAI,GAAG,EAA+B,CAAC;AAC1D,IAAI,kBAAkB,GAAG,CAAC,CAAC;AAE3B,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAAY;IACzD,IAAI,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACnB,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAExC,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAChB,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,
|
|
1
|
+
{"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../src/measure/canvas.ts"],"names":[],"mappings":"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"}
|
package/dist/measure/cjk.d.ts
CHANGED
|
@@ -1,19 +1,14 @@
|
|
|
1
|
+
import { type CjkLineBreakLevel } from './cjkClasses';
|
|
1
2
|
/** Whether the text holds any CJK character. */
|
|
2
3
|
export declare function hasCJK(text: string): boolean;
|
|
3
4
|
/** Whether the text holds words set without spaces between them (see
|
|
4
|
-
* {@link CJK_RUN_RE})
|
|
5
|
-
* line breaking breaks at spaces and hyphenation points. */
|
|
5
|
+
* {@link CJK_RUN_RE}): such a paragraph breaks between characters. */
|
|
6
6
|
export declare function hasCJKRun(text: string): boolean;
|
|
7
|
-
/**
|
|
8
|
-
* Where a line may break inside a run of text with no spaces, as pretext's
|
|
9
|
-
* own breaker finds it: between two characters when either is CJK. Pretext's
|
|
10
|
-
* segments carry its kinsoku rules, so no line starts with closing
|
|
11
|
-
* punctuation (。、」ー…) and none ends with an opening bracket (「(…).
|
|
12
|
-
* Offsets into `text`, ascending; none when the run holds no CJK.
|
|
13
|
-
*/
|
|
14
|
-
export declare function cjkBreakIndices(text: string, font: string): number[];
|
|
15
7
|
/** Whether a line may break where two runs meet with no space between them
|
|
16
|
-
* (`**日本**語`)
|
|
17
|
-
*
|
|
18
|
-
|
|
8
|
+
* (`**日本**語`), in a paragraph set word by word: next to a CJK character
|
|
9
|
+
* only — the marks Latin text shares with Chinese (— … “ ”) count as
|
|
10
|
+
* Latin here — under the prohibitions of `level` (the document's
|
|
11
|
+
* `cjk.lineBreak` by default), so no line starts with closing punctuation
|
|
12
|
+
* (。、」…) and none ends with an opening bracket (「(…). */
|
|
13
|
+
export declare function cjkJoinBreaks(left: string, right: string, level?: CjkLineBreakLevel): boolean;
|
|
19
14
|
//# sourceMappingURL=cjk.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cjk.d.ts","sourceRoot":"","sources":["../../src/measure/cjk.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cjk.d.ts","sourceRoot":"","sources":["../../src/measure/cjk.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+D,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAYnH,gDAAgD;AAChD,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE5C;AAWD;uEACuE;AACvE,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;;;;0DAK0D;AAC1D,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,iBAAqC,GAAG,OAAO,CAShH"}
|
package/dist/measure/cjk.js
CHANGED
|
@@ -1,70 +1,46 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { cjkBreakAllowed, cjkClassOf, getCjkLineBreak, isCjkGrapheme } from './cjkClasses';
|
|
2
|
+
import { lastGrapheme } from './graphemes';
|
|
2
3
|
/**
|
|
3
4
|
* Chinese, Japanese and Korean: scripts set without spaces between words.
|
|
4
|
-
* The
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* The Han, kana and hangul ranges, the CJK punctuation and symbol blocks,
|
|
6
|
+
* and the halfwidth and fullwidth forms — never the marks Latin text shares
|
|
7
|
+
* with Chinese (— … · “ ”), nor the unit squares (㎡ ㎏ ㏄, see
|
|
8
|
+
* `isUnitSquare`), which alone say nothing about the language.
|
|
7
9
|
*/
|
|
8
|
-
const CJK_RE = /[\u3000-\
|
|
10
|
+
const CJK_RE = /[\u1100-\u11FF\u2E80-\u2FDF\u2FF0-\u2FFF\u3000-\u3370\u337B-\u337F\u33E0-\u33FE\u3400-\u4DBF\u4E00-\u9FFF\uA960-\uA97F\uAC00-\uD7FF\uF900-\uFAFF\uFE10-\uFE1F\uFE30-\uFE6F\uFF00-\uFFEF\u{16FE0}-\u{16FFF}\u{1B000}-\u{1B16F}\u{1F200}-\u{1F2FF}\u{20000}-\u{3FFFF}]/u;
|
|
9
11
|
/** Whether the text holds any CJK character. */
|
|
10
12
|
export function hasCJK(text) {
|
|
11
13
|
return CJK_RE.test(text);
|
|
12
14
|
}
|
|
13
15
|
/**
|
|
14
|
-
* Words set without spaces: two ideographs, kana or hangul
|
|
15
|
-
* row (the iteration marks 々 〆 〇 count as ideographs). CJK
|
|
16
|
-
* brackets (〈 「), the middle dot ・ alone and fullwidth signs
|
|
17
|
-
* not: quoted in Latin text they need no break between
|
|
16
|
+
* Words set without spaces: two ideographs, kana, bopomofo or hangul
|
|
17
|
+
* syllables in a row (the iteration marks 々 〆 〇 count as ideographs). CJK
|
|
18
|
+
* punctuation, brackets (〈 「), the middle dot ・ alone and fullwidth signs
|
|
19
|
+
* (% +) do not: quoted in Latin text they need no break between
|
|
20
|
+
* characters.
|
|
18
21
|
*/
|
|
19
|
-
const CJK_RUN_RE = /[\u3005-\u3007\u3040-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3400-\u4DBF\u4E00-\u9FFF\uAC00-\uD7AF\uF900-\uFAFF\uFF66-\uFF9F\u{20000}-\u{
|
|
22
|
+
const CJK_RUN_RE = /[\u3005-\u3007\u3040-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3100-\u312F\u31A0-\u31BF\u3400-\u4DBF\u4E00-\u9FFF\uAC00-\uD7AF\uF900-\uFAFF\uFF66-\uFF9F\u{20000}-\u{3FFFF}]{2}/u;
|
|
20
23
|
/** Whether the text holds words set without spaces between them (see
|
|
21
|
-
* {@link CJK_RUN_RE})
|
|
22
|
-
* line breaking breaks at spaces and hyphenation points. */
|
|
24
|
+
* {@link CJK_RUN_RE}): such a paragraph breaks between characters. */
|
|
23
25
|
export function hasCJKRun(text) {
|
|
24
26
|
return CJK_RUN_RE.test(text);
|
|
25
27
|
}
|
|
26
|
-
/**
|
|
27
|
-
* Where a line may break inside a run of text with no spaces, as pretext's
|
|
28
|
-
* own breaker finds it: between two characters when either is CJK. Pretext's
|
|
29
|
-
* segments carry its kinsoku rules, so no line starts with closing
|
|
30
|
-
* punctuation (。、」ー…) and none ends with an opening bracket (「(…).
|
|
31
|
-
* Offsets into `text`, ascending; none when the run holds no CJK.
|
|
32
|
-
*/
|
|
33
|
-
export function cjkBreakIndices(text, font) {
|
|
34
|
-
if (!CJK_RE.test(text))
|
|
35
|
-
return [];
|
|
36
|
-
const segments = prepareWithSegments(text, font).segments;
|
|
37
|
-
if (segments.join('') !== text)
|
|
38
|
-
return [];
|
|
39
|
-
const out = [];
|
|
40
|
-
let at = 0;
|
|
41
|
-
for (let k = 0; k < segments.length; k++) {
|
|
42
|
-
const seg = segments[k];
|
|
43
|
-
if (k > 0 && at > 0 && (CJK_RE.test(lastChar(segments[k - 1])) || CJK_RE.test(firstChar(seg))))
|
|
44
|
-
out.push(at);
|
|
45
|
-
at += seg.length;
|
|
46
|
-
}
|
|
47
|
-
return out;
|
|
48
|
-
}
|
|
49
28
|
/** Whether a line may break where two runs meet with no space between them
|
|
50
|
-
* (`**日本**語`)
|
|
51
|
-
*
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
29
|
+
* (`**日本**語`), in a paragraph set word by word: next to a CJK character
|
|
30
|
+
* only — the marks Latin text shares with Chinese (— … “ ”) count as
|
|
31
|
+
* Latin here — under the prohibitions of `level` (the document's
|
|
32
|
+
* `cjk.lineBreak` by default), so no line starts with closing punctuation
|
|
33
|
+
* (。、」…) and none ends with an opening bracket (「(…). */
|
|
34
|
+
export function cjkJoinBreaks(left, right, level = getCjkLineBreak()) {
|
|
35
|
+
const a = lastGrapheme(left);
|
|
36
|
+
const cp = right.codePointAt(0);
|
|
37
|
+
if (a === '' || cp === undefined)
|
|
56
38
|
return false;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
function lastChar(text) {
|
|
64
|
-
if (text.length === 0)
|
|
65
|
-
return '';
|
|
66
|
-
const low = text.charCodeAt(text.length - 1);
|
|
67
|
-
const start = low >= 0xdc00 && low <= 0xdfff && text.length > 1 ? text.length - 2 : text.length - 1;
|
|
68
|
-
return text.slice(start);
|
|
39
|
+
const b = String.fromCodePoint(cp);
|
|
40
|
+
const aCjk = CJK_RE.test(a);
|
|
41
|
+
const bCjk = CJK_RE.test(b);
|
|
42
|
+
if (!aCjk && !bCjk)
|
|
43
|
+
return false;
|
|
44
|
+
return cjkBreakAllowed(cjkClassOf(a), isCjkGrapheme(a), cjkClassOf(b), isCjkGrapheme(b), level);
|
|
69
45
|
}
|
|
70
46
|
//# sourceMappingURL=cjk.js.map
|
package/dist/measure/cjk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cjk.js","sourceRoot":"","sources":["../../src/measure/cjk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cjk.js","sourceRoot":"","sources":["../../src/measure/cjk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAA0B,MAAM,cAAc,CAAC;AACnH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,MAAM,GAAG,uQAAuQ,CAAC;AAEvR,gDAAgD;AAChD,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,GAAG,0KAA0K,CAAC;AAE9L;uEACuE;AACvE,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;0DAK0D;AAC1D,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,KAAa,EAAE,QAA2B,eAAe,EAAE;IACrG,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACjC,OAAO,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAClG,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Geometry of ruby readings (#194) and warichu notes (#195) inside a line,
|
|
3
|
+
* for the CJK composer.
|
|
4
|
+
*
|
|
5
|
+
* Everything is in the flow frame: `dx` along the line from where the
|
|
6
|
+
* annotated segment starts, `dy` across it from the line's baseline to the
|
|
7
|
+
* annotation's baseline, positive towards the line's foot (down in
|
|
8
|
+
* horizontal text, left in vertical text). A character's em box is centred
|
|
9
|
+
* on the font's central axis, {@link CENTRAL} em above the baseline, the
|
|
10
|
+
* axis vertical text is set on (`VDTFlowFrame.centralBaselines`) and the
|
|
11
|
+
* middle of a CJK face's ideographic em box in horizontal text.
|
|
12
|
+
*
|
|
13
|
+
* - Ruby over or under the base sits in the line gap, against the base's em
|
|
14
|
+
* box, centred on the base; a reading wider than its base widens the base's
|
|
15
|
+
* box (the base is centred in it) less what it may pass the base by: a
|
|
16
|
+
* quarter of the ruby em onto a neighbour without ruby, none past a line
|
|
17
|
+
* edge (the composer shifts it back), and it keeps a quarter of the ruby
|
|
18
|
+
* em from a neighbour's reading (two zhuyin readings: a quarter of the
|
|
19
|
+
* symbols' em).
|
|
20
|
+
* - Zhuyin right of the base (horizontal text) stacks its symbols in a
|
|
21
|
+
* column beside each character, at 60 % of the ruby size (0.3 em by
|
|
22
|
+
* default, clreq §5.5.3.2), the tone mark right of the column with half
|
|
23
|
+
* of its ink above the top of the last symbol (§5.5.3.3), the
|
|
24
|
+
* neutral-tone dot above the first in a tenth of an em; the character's
|
|
25
|
+
* box grows by the column. Zhuyin over the base of vertical text is the
|
|
26
|
+
* same column down the line, its tone mark and dot standing upright.
|
|
27
|
+
* Tone marks and the dot are placed by their ink (the measurer's ink
|
|
28
|
+
* box): fonts set these modifier letters high in their em box.
|
|
29
|
+
* - A warichu note's part on a line folds into two rows of the note size,
|
|
30
|
+
* centred on the line's axis with no gap between them: the upper row
|
|
31
|
+
* takes characters until it is at least half the part (the second row is
|
|
32
|
+
* never the longer), and one more while the lower row would open with a
|
|
33
|
+
* mark that may not start a line or the upper row would end with one
|
|
34
|
+
* that may not end a line (an opening bracket).
|
|
35
|
+
*/
|
|
36
|
+
import type { VDTAnnotationRun } from '../vdt';
|
|
37
|
+
/** The central axis of a face, in em above its baseline. */
|
|
38
|
+
export declare const CENTRAL = 0.38;
|
|
39
|
+
/** Zhuyin is set at this fraction of the ruby size (0.3 em of the text for
|
|
40
|
+
* the default half-em ruby). */
|
|
41
|
+
export declare const ZHUYIN_SIZE_RATIO = 0.6;
|
|
42
|
+
/** Whether a reading is zhuyin (bopomofo). */
|
|
43
|
+
export declare function isZhuyin(reading: string): boolean;
|
|
44
|
+
/** `font` at `sizePx`, style, weight and family kept. */
|
|
45
|
+
export declare function withFontSize(font: string, sizePx: number): string;
|
|
46
|
+
/** What a ruby base is set with. */
|
|
47
|
+
export interface RubyInput {
|
|
48
|
+
reading: string;
|
|
49
|
+
fontString: string;
|
|
50
|
+
/** `over` / `under` the base, or `right` of each character in the line
|
|
51
|
+
* (zhuyin, horizontal text). */
|
|
52
|
+
position: 'over' | 'under' | 'right';
|
|
53
|
+
/** The base's advance and the text's em (px). */
|
|
54
|
+
baseWidth: number;
|
|
55
|
+
em: number;
|
|
56
|
+
/** How far the reading may pass the base's box on each side (px): a
|
|
57
|
+
* quarter of the ruby em onto a neighbour without ruby, 0 at a line
|
|
58
|
+
* edge, negative (keep apart) next to another reading. */
|
|
59
|
+
allowLeft: number;
|
|
60
|
+
allowRight: number;
|
|
61
|
+
}
|
|
62
|
+
/** How a ruby base is set: its box's advance, where the base sits in it
|
|
63
|
+
* (`inset`), the reading's advance and the runs painted. */
|
|
64
|
+
export interface RubyGeometry {
|
|
65
|
+
width: number;
|
|
66
|
+
inset: number;
|
|
67
|
+
rtWidth: number;
|
|
68
|
+
runs: VDTAnnotationRun[];
|
|
69
|
+
/** What the reading could pass the box by on each side (the input's). */
|
|
70
|
+
allowLeft: number;
|
|
71
|
+
allowRight: number;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The geometry of a ruby base (see the module comment). Measured in the
|
|
75
|
+
* writing mode the composer runs in: a vertical reading advances cell by
|
|
76
|
+
* cell down the line.
|
|
77
|
+
*/
|
|
78
|
+
export declare function rubyGeometry(input: RubyInput): RubyGeometry;
|
|
79
|
+
/** The advance of a reading along the line (a zhuyin reading: its
|
|
80
|
+
* symbols' column, tone marks aside), before its base is sized. */
|
|
81
|
+
export declare function readingAdvance(reading: string, fontString: string, position: 'over' | 'under' | 'right'): number;
|
|
82
|
+
/** Where the upper row of a warichu part ends (units `[0, at)`): see the
|
|
83
|
+
* module comment. `startProhibited[i]`: unit `i` may not open a row;
|
|
84
|
+
* `endProhibited[i]`: unit `i` may not close one (an opening bracket), so
|
|
85
|
+
* the upper row takes the unit after it too. */
|
|
86
|
+
export declare function splitNote(widths: readonly number[], startProhibited: readonly boolean[], endProhibited?: readonly boolean[]): number;
|
|
87
|
+
/** The advance of a warichu part folded at `at`: the wider row. */
|
|
88
|
+
export declare function foldWidth(widths: readonly number[], at: number): number;
|
|
89
|
+
/** The baselines of a warichu part's rows (px from the line's baseline):
|
|
90
|
+
* the upper row's em box ends at the line's axis, the lower one's starts
|
|
91
|
+
* there. */
|
|
92
|
+
export declare function noteRowBaselines(em: number, noteEm: number): {
|
|
93
|
+
upper: number;
|
|
94
|
+
lower: number;
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=cjkAnnotate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cjkAnnotate.d.ts","sourceRoot":"","sources":["../../src/measure/cjkAnnotate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAO/C,4DAA4D;AAC5D,eAAO,MAAM,OAAO,OAA2B,CAAC;AAEhD;iCACiC;AACjC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAQrC,8CAA8C;AAC9C,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIjE;AAQD,oCAAoC;AACpC,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB;qCACiC;IACjC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACrC,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX;;+DAE2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;6DAC6D;AAC7D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAkCD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,YAAY,CAuF3D;AAED;oEACoE;AACpE,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAMhH;AAED;;;iDAGiD;AACjD,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,eAAe,EAAE,SAAS,OAAO,EAAE,EAAE,aAAa,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CASpI;AAED,mEAAmE;AACnE,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAQvE;AAED;;aAEa;AACb,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAG7F"}
|