postext 1.15.1 → 1.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/arabic/harakatProfile.test.d.ts +2 -0
- package/dist/__tests__/arabic/harakatProfile.test.d.ts.map +1 -0
- package/dist/__tests__/arabic/harakatProfile.test.js +105 -0
- package/dist/__tests__/arabic/harakatProfile.test.js.map +1 -0
- package/dist/__tests__/bundleLocaleAndBytes.test.js +9 -9
- package/dist/__tests__/bundleLocaleAndBytes.test.js.map +1 -1
- package/dist/__tests__/chineseLocale.test.js +10 -5
- package/dist/__tests__/chineseLocale.test.js.map +1 -1
- package/dist/__tests__/cjk/annotationsRender.test.js +5 -2
- package/dist/__tests__/cjk/annotationsRender.test.js.map +1 -1
- package/dist/__tests__/cjk/chipLatinSpacing.test.d.ts +2 -0
- package/dist/__tests__/cjk/chipLatinSpacing.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/chipLatinSpacing.test.js +137 -0
- package/dist/__tests__/cjk/chipLatinSpacing.test.js.map +1 -0
- package/dist/__tests__/cjk/chipTracking.test.d.ts +2 -0
- package/dist/__tests__/cjk/chipTracking.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/chipTracking.test.js +56 -0
- package/dist/__tests__/cjk/chipTracking.test.js.map +1 -0
- package/dist/__tests__/cjk/japaneseHtml.test.d.ts +2 -0
- package/dist/__tests__/cjk/japaneseHtml.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/japaneseHtml.test.js +163 -0
- package/dist/__tests__/cjk/japaneseHtml.test.js.map +1 -0
- package/dist/__tests__/cjk/japaneseMarks.test.d.ts +2 -0
- package/dist/__tests__/cjk/japaneseMarks.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/japaneseMarks.test.js +289 -0
- package/dist/__tests__/cjk/japaneseMarks.test.js.map +1 -0
- package/dist/__tests__/cjk/japaneseMarksRender.test.d.ts +2 -0
- package/dist/__tests__/cjk/japaneseMarksRender.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/japaneseMarksRender.test.js +161 -0
- package/dist/__tests__/cjk/japaneseMarksRender.test.js.map +1 -0
- package/dist/__tests__/cjk/japaneseRuby.test.d.ts +2 -0
- package/dist/__tests__/cjk/japaneseRuby.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/japaneseRuby.test.js +457 -0
- package/dist/__tests__/cjk/japaneseRuby.test.js.map +1 -0
- package/dist/__tests__/cjk/japaneseSegmentLanguage.test.d.ts +2 -0
- package/dist/__tests__/cjk/japaneseSegmentLanguage.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/japaneseSegmentLanguage.test.js +50 -0
- package/dist/__tests__/cjk/japaneseSegmentLanguage.test.js.map +1 -0
- package/dist/__tests__/cjk/japaneseSpacing.test.d.ts +2 -0
- package/dist/__tests__/cjk/japaneseSpacing.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/japaneseSpacing.test.js +417 -0
- package/dist/__tests__/cjk/japaneseSpacing.test.js.map +1 -0
- package/dist/__tests__/cjk/kanbunKunten.test.d.ts +2 -0
- package/dist/__tests__/cjk/kanbunKunten.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/kanbunKunten.test.js +230 -0
- package/dist/__tests__/cjk/kanbunKunten.test.js.map +1 -0
- package/dist/__tests__/cjk/kanbunKuntenRender.test.d.ts +2 -0
- package/dist/__tests__/cjk/kanbunKuntenRender.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/kanbunKuntenRender.test.js +127 -0
- package/dist/__tests__/cjk/kanbunKuntenRender.test.js.map +1 -0
- package/dist/__tests__/cjk/keepAll.test.d.ts +2 -0
- package/dist/__tests__/cjk/keepAll.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/keepAll.test.js +146 -0
- package/dist/__tests__/cjk/keepAll.test.js.map +1 -0
- package/dist/__tests__/cjk/kinsokuJa.test.d.ts +2 -0
- package/dist/__tests__/cjk/kinsokuJa.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/kinsokuJa.test.js +388 -0
- package/dist/__tests__/cjk/kinsokuJa.test.js.map +1 -0
- package/dist/__tests__/cjk/kinsokuJaBuild.test.d.ts +2 -0
- package/dist/__tests__/cjk/kinsokuJaBuild.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/kinsokuJaBuild.test.js +38 -0
- package/dist/__tests__/cjk/kinsokuJaBuild.test.js.map +1 -0
- package/dist/__tests__/cjk/resourceAnnotations.test.d.ts +2 -0
- package/dist/__tests__/cjk/resourceAnnotations.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/resourceAnnotations.test.js +223 -0
- package/dist/__tests__/cjk/resourceAnnotations.test.js.map +1 -0
- package/dist/__tests__/defaults/cjk.test.js +10 -2
- package/dist/__tests__/defaults/cjk.test.js.map +1 -1
- package/dist/__tests__/exports.test.js +37 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/__tests__/headingLetterSpacing.test.js +2 -1
- package/dist/__tests__/headingLetterSpacing.test.js.map +1 -1
- package/dist/__tests__/indexChinese.test.js +1 -1
- package/dist/__tests__/indexJapanese.test.d.ts +2 -0
- package/dist/__tests__/indexJapanese.test.d.ts.map +1 -0
- package/dist/__tests__/indexJapanese.test.js +242 -0
- package/dist/__tests__/indexJapanese.test.js.map +1 -0
- package/dist/__tests__/japaneseCaptions.test.d.ts +2 -0
- package/dist/__tests__/japaneseCaptions.test.d.ts.map +1 -0
- package/dist/__tests__/japaneseCaptions.test.js +79 -0
- package/dist/__tests__/japaneseCaptions.test.js.map +1 -0
- package/dist/__tests__/japaneseHeadings.test.d.ts +2 -0
- package/dist/__tests__/japaneseHeadings.test.d.ts.map +1 -0
- package/dist/__tests__/japaneseHeadings.test.js +364 -0
- package/dist/__tests__/japaneseHeadings.test.js.map +1 -0
- package/dist/__tests__/japaneseLocale.test.d.ts +2 -0
- package/dist/__tests__/japaneseLocale.test.d.ts.map +1 -0
- package/dist/__tests__/japaneseLocale.test.js +201 -0
- package/dist/__tests__/japaneseLocale.test.js.map +1 -0
- package/dist/__tests__/japaneseNotes.test.d.ts +2 -0
- package/dist/__tests__/japaneseNotes.test.d.ts.map +1 -0
- package/dist/__tests__/japaneseNotes.test.js +336 -0
- package/dist/__tests__/japaneseNotes.test.js.map +1 -0
- package/dist/__tests__/japaneseNumbering.test.d.ts +2 -0
- package/dist/__tests__/japaneseNumbering.test.d.ts.map +1 -0
- package/dist/__tests__/japaneseNumbering.test.js +292 -0
- package/dist/__tests__/japaneseNumbering.test.js.map +1 -0
- package/dist/__tests__/parse/listNesting.test.d.ts +2 -0
- package/dist/__tests__/parse/listNesting.test.d.ts.map +1 -0
- package/dist/__tests__/parse/listNesting.test.js +142 -0
- package/dist/__tests__/parse/listNesting.test.js.map +1 -0
- package/dist/__tests__/pipeline/citationsJapanese.test.d.ts +2 -0
- package/dist/__tests__/pipeline/citationsJapanese.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/citationsJapanese.test.js +110 -0
- package/dist/__tests__/pipeline/citationsJapanese.test.js.map +1 -0
- package/dist/__tests__/pipeline/listNestingLayout.test.d.ts +2 -0
- package/dist/__tests__/pipeline/listNestingLayout.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/listNestingLayout.test.js +90 -0
- package/dist/__tests__/pipeline/listNestingLayout.test.js.map +1 -0
- package/dist/__tests__/pipeline/paragraphStyleFaces.test.js +2 -2
- package/dist/__tests__/pipeline/paragraphStyleFaces.test.js.map +1 -1
- package/dist/__tests__/pipeline/safeArea.test.d.ts +2 -0
- package/dist/__tests__/pipeline/safeArea.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/safeArea.test.js +207 -0
- package/dist/__tests__/pipeline/safeArea.test.js.map +1 -0
- package/dist/__tests__/vertical/compositionPaint.test.js +6 -5
- package/dist/__tests__/vertical/compositionPaint.test.js.map +1 -1
- package/dist/__tests__/vertical/japaneseVertical.test.d.ts +2 -0
- package/dist/__tests__/vertical/japaneseVertical.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/japaneseVertical.test.js +247 -0
- package/dist/__tests__/vertical/japaneseVertical.test.js.map +1 -0
- package/dist/__tests__/vertical/verticalSpans.d.ts +2 -1
- package/dist/__tests__/vertical/verticalSpans.d.ts.map +1 -1
- package/dist/__tests__/vertical/verticalSpans.js +3 -2
- package/dist/__tests__/vertical/verticalSpans.js.map +1 -1
- package/dist/__tests__/video.test.d.ts +2 -0
- package/dist/__tests__/video.test.d.ts.map +1 -0
- package/dist/__tests__/video.test.js +305 -0
- package/dist/__tests__/video.test.js.map +1 -0
- package/dist/arabicMarks.d.ts +11 -1
- package/dist/arabicMarks.d.ts.map +1 -1
- package/dist/arabicMarks.js +72 -5
- package/dist/arabicMarks.js.map +1 -1
- package/dist/bundle/adapters.d.ts +6 -0
- package/dist/bundle/adapters.d.ts.map +1 -1
- package/dist/bundle/adapters.js +30 -0
- package/dist/bundle/adapters.js.map +1 -1
- package/dist/bundle/codec.d.ts.map +1 -1
- package/dist/bundle/codec.js +67 -3
- package/dist/bundle/codec.js.map +1 -1
- package/dist/bundle/index.d.ts +2 -2
- package/dist/bundle/index.d.ts.map +1 -1
- package/dist/bundle/index.js +2 -2
- package/dist/bundle/index.js.map +1 -1
- package/dist/bundle/manifest.d.ts +8 -0
- package/dist/bundle/manifest.d.ts.map +1 -1
- package/dist/bundle/manifest.js +48 -1
- package/dist/bundle/manifest.js.map +1 -1
- package/dist/bundle/types.d.ts +5 -0
- package/dist/bundle/types.d.ts.map +1 -1
- package/dist/bundle/zip.js +1 -1
- package/dist/bundle/zip.js.map +1 -1
- package/dist/canvas-backend/annotations.d.ts +20 -5
- package/dist/canvas-backend/annotations.d.ts.map +1 -1
- package/dist/canvas-backend/annotations.js +59 -6
- package/dist/canvas-backend/annotations.js.map +1 -1
- package/dist/canvas-backend/blockRender.d.ts.map +1 -1
- package/dist/canvas-backend/blockRender.js +29 -3
- package/dist/canvas-backend/blockRender.js.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.d.ts +6 -1
- package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.js +124 -5
- package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
- package/dist/canvas-backend/verticalText.d.ts +9 -4
- package/dist/canvas-backend/verticalText.d.ts.map +1 -1
- package/dist/canvas-backend/verticalText.js +20 -9
- package/dist/canvas-backend/verticalText.js.map +1 -1
- package/dist/chineseNumerals.d.ts +3 -2
- package/dist/chineseNumerals.d.ts.map +1 -1
- package/dist/chineseNumerals.js +11 -8
- package/dist/chineseNumerals.js.map +1 -1
- package/dist/citations/bibtex.d.ts.map +1 -1
- package/dist/citations/bibtex.js +4 -0
- package/dist/citations/bibtex.js.map +1 -1
- package/dist/citations/data.d.ts.map +1 -1
- package/dist/citations/data.js +6 -1
- package/dist/citations/data.js.map +1 -1
- package/dist/citations/types.d.ts +8 -0
- package/dist/citations/types.d.ts.map +1 -1
- package/dist/cjkMarks.d.ts +23 -14
- package/dist/cjkMarks.d.ts.map +1 -1
- package/dist/cjkMarks.js +251 -49
- package/dist/cjkMarks.js.map +1 -1
- package/dist/configWarnings.js +10 -4
- package/dist/configWarnings.js.map +1 -1
- package/dist/defaults/captionStyle.d.ts +19 -4
- package/dist/defaults/captionStyle.d.ts.map +1 -1
- package/dist/defaults/captionStyle.js +27 -8
- package/dist/defaults/captionStyle.js.map +1 -1
- package/dist/defaults/cjk.d.ts +64 -14
- package/dist/defaults/cjk.d.ts.map +1 -1
- package/dist/defaults/cjk.js +209 -29
- package/dist/defaults/cjk.js.map +1 -1
- package/dist/defaults/footnotes.d.ts +27 -4
- package/dist/defaults/footnotes.d.ts.map +1 -1
- package/dist/defaults/footnotes.js +95 -36
- package/dist/defaults/footnotes.js.map +1 -1
- package/dist/defaults/headings.d.ts +5 -0
- package/dist/defaults/headings.d.ts.map +1 -1
- package/dist/defaults/headings.js +46 -1
- package/dist/defaults/headings.js.map +1 -1
- package/dist/defaults/index.d.ts +4 -3
- package/dist/defaults/index.d.ts.map +1 -1
- package/dist/defaults/index.js +14 -5
- package/dist/defaults/index.js.map +1 -1
- package/dist/defaults/indexConfig.d.ts.map +1 -1
- package/dist/defaults/indexConfig.js +7 -4
- package/dist/defaults/indexConfig.js.map +1 -1
- package/dist/defaults/paragraphStyles.d.ts.map +1 -1
- package/dist/defaults/paragraphStyles.js +8 -0
- package/dist/defaults/paragraphStyles.js.map +1 -1
- package/dist/defaults/resourceTypes.d.ts +16 -3
- package/dist/defaults/resourceTypes.d.ts.map +1 -1
- package/dist/defaults/resourceTypes.js +56 -8
- package/dist/defaults/resourceTypes.js.map +1 -1
- package/dist/defaults/shared.d.ts.map +1 -1
- package/dist/defaults/shared.js +21 -0
- package/dist/defaults/shared.js.map +1 -1
- package/dist/defaults/tableStyle.d.ts.map +1 -1
- package/dist/defaults/tableStyle.js +4 -1
- package/dist/defaults/tableStyle.js.map +1 -1
- package/dist/defaults/videoStyle.d.ts +9 -0
- package/dist/defaults/videoStyle.d.ts.map +1 -0
- package/dist/defaults/videoStyle.js +130 -0
- package/dist/defaults/videoStyle.js.map +1 -0
- package/dist/design/placeholders.d.ts.map +1 -1
- package/dist/design/placeholders.js +5 -3
- package/dist/design/placeholders.js.map +1 -1
- package/dist/html-backend.d.ts +13 -0
- package/dist/html-backend.d.ts.map +1 -1
- package/dist/html-backend.js +233 -26
- package/dist/html-backend.js.map +1 -1
- package/dist/htmlAnnotations.d.ts +47 -9
- package/dist/htmlAnnotations.d.ts.map +1 -1
- package/dist/htmlAnnotations.js +89 -17
- package/dist/htmlAnnotations.js.map +1 -1
- package/dist/index.d.ts +13 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/dist/japaneseNumerals.d.ts +44 -0
- package/dist/japaneseNumerals.d.ts.map +1 -0
- package/dist/japaneseNumerals.js +100 -0
- package/dist/japaneseNumerals.js.map +1 -0
- package/dist/knuthPlass/richAdapter.d.ts +5 -1
- package/dist/knuthPlass/richAdapter.d.ts.map +1 -1
- package/dist/knuthPlass/richAdapter.js +2 -0
- package/dist/knuthPlass/richAdapter.js.map +1 -1
- package/dist/locale.d.ts +19 -12
- package/dist/locale.d.ts.map +1 -1
- package/dist/locale.js +24 -12
- package/dist/locale.js.map +1 -1
- package/dist/measure/cache.d.ts.map +1 -1
- package/dist/measure/cache.js +20 -9
- package/dist/measure/cache.js.map +1 -1
- package/dist/measure/canvas.d.ts +21 -0
- package/dist/measure/canvas.d.ts.map +1 -1
- package/dist/measure/canvas.js +82 -0
- package/dist/measure/canvas.js.map +1 -1
- package/dist/measure/cjk.d.ts +3 -1
- package/dist/measure/cjk.d.ts.map +1 -1
- package/dist/measure/cjk.js +4 -2
- package/dist/measure/cjk.js.map +1 -1
- package/dist/measure/cjkAnnotate.d.ts +62 -3
- package/dist/measure/cjkAnnotate.d.ts.map +1 -1
- package/dist/measure/cjkAnnotate.js +99 -2
- package/dist/measure/cjkAnnotate.js.map +1 -1
- package/dist/measure/cjkClasses.d.ts +93 -13
- package/dist/measure/cjkClasses.d.ts.map +1 -1
- package/dist/measure/cjkClasses.js +204 -14
- package/dist/measure/cjkClasses.js.map +1 -1
- package/dist/measure/cjkCompose.d.ts +10 -4
- package/dist/measure/cjkCompose.d.ts.map +1 -1
- package/dist/measure/cjkCompose.js +834 -85
- package/dist/measure/cjkCompose.js.map +1 -1
- package/dist/measure/cjkPunctuation.d.ts +73 -14
- package/dist/measure/cjkPunctuation.d.ts.map +1 -1
- package/dist/measure/cjkPunctuation.js +97 -21
- package/dist/measure/cjkPunctuation.js.map +1 -1
- package/dist/measure/plain.js +2 -2
- package/dist/measure/plain.js.map +1 -1
- package/dist/measure/rich.d.ts +12 -2
- package/dist/measure/rich.d.ts.map +1 -1
- package/dist/measure/rich.js +46 -8
- package/dist/measure/rich.js.map +1 -1
- package/dist/measure/rubyJis.d.ts +96 -0
- package/dist/measure/rubyJis.d.ts.map +1 -0
- package/dist/measure/rubyJis.js +245 -0
- package/dist/measure/rubyJis.js.map +1 -0
- package/dist/measure/types.d.ts +6 -1
- package/dist/measure/types.d.ts.map +1 -1
- package/dist/measure/types.js.map +1 -1
- package/dist/measure/vertical.d.ts +13 -5
- package/dist/measure/vertical.d.ts.map +1 -1
- package/dist/measure/vertical.js +16 -6
- package/dist/measure/vertical.js.map +1 -1
- package/dist/numberWords.d.ts +4 -3
- package/dist/numberWords.d.ts.map +1 -1
- package/dist/numberWords.js +15 -5
- package/dist/numberWords.js.map +1 -1
- package/dist/numbering.d.ts +24 -12
- package/dist/numbering.d.ts.map +1 -1
- package/dist/numbering.js +57 -11
- package/dist/numbering.js.map +1 -1
- package/dist/parse/annotations.d.ts +21 -18
- package/dist/parse/annotations.d.ts.map +1 -1
- package/dist/parse/annotations.js +140 -51
- package/dist/parse/annotations.js.map +1 -1
- package/dist/parse/blockParser.d.ts.map +1 -1
- package/dist/parse/blockParser.js +12 -1
- package/dist/parse/blockParser.js.map +1 -1
- package/dist/parse/index.d.ts +1 -1
- package/dist/parse/index.d.ts.map +1 -1
- package/dist/parse/index.js.map +1 -1
- package/dist/parse/indexMarks.d.ts.map +1 -1
- package/dist/parse/indexMarks.js +42 -0
- package/dist/parse/indexMarks.js.map +1 -1
- package/dist/parse/inlineFormatting.d.ts +4 -3
- package/dist/parse/inlineFormatting.d.ts.map +1 -1
- package/dist/parse/inlineFormatting.js +9 -8
- package/dist/parse/inlineFormatting.js.map +1 -1
- package/dist/parse/listNesting.d.ts +47 -0
- package/dist/parse/listNesting.d.ts.map +1 -0
- package/dist/parse/listNesting.js +65 -0
- package/dist/parse/listNesting.js.map +1 -0
- package/dist/parse/types.d.ts +93 -5
- package/dist/parse/types.d.ts.map +1 -1
- package/dist/pipeline/annotations.d.ts +25 -15
- package/dist/pipeline/annotations.d.ts.map +1 -1
- package/dist/pipeline/annotations.js +102 -16
- package/dist/pipeline/annotations.js.map +1 -1
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +284 -31
- package/dist/pipeline/build.js.map +1 -1
- package/dist/pipeline/buildBlockKind.d.ts +7 -0
- package/dist/pipeline/buildBlockKind.d.ts.map +1 -1
- package/dist/pipeline/buildBlockKind.js +25 -2
- package/dist/pipeline/buildBlockKind.js.map +1 -1
- package/dist/pipeline/buildHelpers.d.ts +2 -0
- package/dist/pipeline/buildHelpers.d.ts.map +1 -1
- package/dist/pipeline/buildHelpers.js +17 -0
- package/dist/pipeline/buildHelpers.js.map +1 -1
- package/dist/pipeline/buildMeasurement.d.ts +3 -0
- package/dist/pipeline/buildMeasurement.d.ts.map +1 -1
- package/dist/pipeline/buildMeasurement.js +1 -0
- package/dist/pipeline/buildMeasurement.js.map +1 -1
- package/dist/pipeline/calloutLayout.d.ts +2 -0
- package/dist/pipeline/calloutLayout.d.ts.map +1 -1
- package/dist/pipeline/calloutLayout.js +5 -5
- package/dist/pipeline/calloutLayout.js.map +1 -1
- package/dist/pipeline/citations.d.ts +1 -1
- package/dist/pipeline/citations.d.ts.map +1 -1
- package/dist/pipeline/citations.js +15 -7
- package/dist/pipeline/citations.js.map +1 -1
- package/dist/pipeline/columnBalancing.d.ts +22 -0
- package/dist/pipeline/columnBalancing.d.ts.map +1 -1
- package/dist/pipeline/columnBalancing.js +80 -3
- package/dist/pipeline/columnBalancing.js.map +1 -1
- package/dist/pipeline/config.d.ts.map +1 -1
- package/dist/pipeline/config.js +4 -3
- package/dist/pipeline/config.js.map +1 -1
- package/dist/pipeline/contentWarnings.d.ts.map +1 -1
- package/dist/pipeline/contentWarnings.js +19 -0
- package/dist/pipeline/contentWarnings.js.map +1 -1
- package/dist/pipeline/continuation.d.ts.map +1 -1
- package/dist/pipeline/continuation.js +3 -3
- package/dist/pipeline/continuation.js.map +1 -1
- package/dist/pipeline/crossRefs.d.ts.map +1 -1
- package/dist/pipeline/crossRefs.js +3 -0
- package/dist/pipeline/crossRefs.js.map +1 -1
- package/dist/pipeline/footnotes.d.ts +20 -12
- package/dist/pipeline/footnotes.d.ts.map +1 -1
- package/dist/pipeline/footnotes.js +62 -16
- package/dist/pipeline/footnotes.js.map +1 -1
- package/dist/pipeline/headingStyles.js +1 -1
- package/dist/pipeline/headingStyles.js.map +1 -1
- package/dist/pipeline/indexDirective.d.ts.map +1 -1
- package/dist/pipeline/indexDirective.js +89 -12
- package/dist/pipeline/indexDirective.js.map +1 -1
- package/dist/pipeline/indexGroups.d.ts +5 -3
- package/dist/pipeline/indexGroups.d.ts.map +1 -1
- package/dist/pipeline/indexGroups.js +9 -4
- package/dist/pipeline/indexGroups.js.map +1 -1
- package/dist/pipeline/indexJapanese.d.ts +75 -0
- package/dist/pipeline/indexJapanese.d.ts.map +1 -0
- package/dist/pipeline/indexJapanese.js +264 -0
- package/dist/pipeline/indexJapanese.js.map +1 -0
- package/dist/pipeline/lineSpan.d.ts +36 -0
- package/dist/pipeline/lineSpan.d.ts.map +1 -0
- package/dist/pipeline/lineSpan.js +36 -0
- package/dist/pipeline/lineSpan.js.map +1 -0
- package/dist/pipeline/lists.js +2 -2
- package/dist/pipeline/lists.js.map +1 -1
- package/dist/pipeline/measureContentBlock.d.ts +4 -0
- package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
- package/dist/pipeline/measureContentBlock.js +57 -5
- package/dist/pipeline/measureContentBlock.js.map +1 -1
- package/dist/pipeline/outline.d.ts.map +1 -1
- package/dist/pipeline/outline.js +3 -1
- package/dist/pipeline/outline.js.map +1 -1
- package/dist/pipeline/paragraphContainers.d.ts +25 -2
- package/dist/pipeline/paragraphContainers.d.ts.map +1 -1
- package/dist/pipeline/paragraphContainers.js +82 -2
- package/dist/pipeline/paragraphContainers.js.map +1 -1
- package/dist/pipeline/parts.d.ts +2 -2
- package/dist/pipeline/parts.js +3 -3
- package/dist/pipeline/parts.js.map +1 -1
- package/dist/pipeline/placement.d.ts.map +1 -1
- package/dist/pipeline/placement.js +2 -2
- package/dist/pipeline/placement.js.map +1 -1
- package/dist/pipeline/resourceLayout.d.ts +6 -0
- package/dist/pipeline/resourceLayout.d.ts.map +1 -1
- package/dist/pipeline/resourceLayout.js +93 -17
- package/dist/pipeline/resourceLayout.js.map +1 -1
- package/dist/pipeline/resourceNumbering.d.ts +5 -2
- package/dist/pipeline/resourceNumbering.d.ts.map +1 -1
- package/dist/pipeline/resourceNumbering.js +12 -7
- package/dist/pipeline/resourceNumbering.js.map +1 -1
- package/dist/pipeline/safeArea.d.ts +29 -0
- package/dist/pipeline/safeArea.d.ts.map +1 -0
- package/dist/pipeline/safeArea.js +89 -0
- package/dist/pipeline/safeArea.js.map +1 -0
- package/dist/pipeline/styles.d.ts +16 -1
- package/dist/pipeline/styles.d.ts.map +1 -1
- package/dist/pipeline/styles.js +8 -1
- package/dist/pipeline/styles.js.map +1 -1
- package/dist/pipeline/verse.d.ts +3 -0
- package/dist/pipeline/verse.d.ts.map +1 -1
- package/dist/pipeline/verse.js +1 -1
- package/dist/pipeline/verse.js.map +1 -1
- package/dist/pipeline/verticalMetrics.d.ts.map +1 -1
- package/dist/pipeline/verticalMetrics.js +4 -0
- package/dist/pipeline/verticalMetrics.js.map +1 -1
- package/dist/pipeline/videoOverlay.d.ts +24 -0
- package/dist/pipeline/videoOverlay.d.ts.map +1 -0
- package/dist/pipeline/videoOverlay.js +134 -0
- package/dist/pipeline/videoOverlay.js.map +1 -0
- package/dist/types.d.ts +594 -50
- package/dist/types.d.ts.map +1 -1
- package/dist/uprightArabic.js +1 -1
- package/dist/uprightArabic.js.map +1 -1
- package/dist/vdt.d.ts +221 -17
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.js.map +1 -1
- package/dist/video/qr.d.ts +21 -0
- package/dist/video/qr.d.ts.map +1 -0
- package/dist/video/qr.js +326 -0
- package/dist/video/qr.js.map +1 -0
- package/dist/video/url.d.ts +62 -0
- package/dist/video/url.d.ts.map +1 -0
- package/dist/video/url.js +206 -0
- package/dist/video/url.js.map +1 -0
- package/dist/writingMode.d.ts +74 -20
- package/dist/writingMode.d.ts.map +1 -1
- package/dist/writingMode.js +146 -27
- package/dist/writingMode.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Japanese ruby geometry (furigana, #422), after JIS X 4051 §12 and JLReq
|
|
3
|
+
* §3.3: where a reading sits on its base, how far a longer one may run
|
|
4
|
+
* past the base before the base is spread, and how the readings of a
|
|
5
|
+
* jukugo ruby (熟語ルビ) share a word.
|
|
6
|
+
*
|
|
7
|
+
* Pure arithmetic along the line, in px of the flow frame: the composer
|
|
8
|
+
* (`cjkCompose.ts`) gives each base's advance and its reading's
|
|
9
|
+
* characters, and how far the reading may pass the base on each side
|
|
10
|
+
* (`allow`: what the neighbour outside takes, 0 at a line edge, where
|
|
11
|
+
* the reading is set flush with the edge and the base moves in); it gets
|
|
12
|
+
* back each base's box (its advance on the line), where the base's first
|
|
13
|
+
* glyph starts in the box (`inset`), the spacing after each base
|
|
14
|
+
* character (`tracking`) and the reading's pieces, placed from the box's
|
|
15
|
+
* start.
|
|
16
|
+
*
|
|
17
|
+
* - A reading no longer than its base (JLReq §3.3.6 a) leaves the box as
|
|
18
|
+
* the base: `center` centres it, `start` sets it from the base's start,
|
|
19
|
+
* `jis` spreads it 1:2:1 (half a unit before the first character and
|
|
20
|
+
* after the last, a unit between characters), or, when that half unit
|
|
21
|
+
* would be more than a ruby character, from one end of the base to the
|
|
22
|
+
* other (space-between). One character is centred by either.
|
|
23
|
+
* - A longer reading (§3.3.6 b) runs past the base as far as each side
|
|
24
|
+
* allows, evenly while both sides can take it; what is left spreads the
|
|
25
|
+
* base: 1:2:1 under `jis` (half a unit before the first character and
|
|
26
|
+
* after the last, a unit between), centred in its box otherwise. The
|
|
27
|
+
* reading is set solid.
|
|
28
|
+
* - A jukugo ruby (§3.3.7) is set as mono ruby while every reading fits
|
|
29
|
+
* its base. When one does not, each reading stays by its own base and
|
|
30
|
+
* may run onto the next or the previous base of the word by up to one
|
|
31
|
+
* ruby character, the readings never overlapping, the first and the
|
|
32
|
+
* last passing the word by what the neighbours outside allow. When even
|
|
33
|
+
* that does not hold them, the word takes its readings as one, a group
|
|
34
|
+
* ruby over the whole word.
|
|
35
|
+
*/
|
|
36
|
+
/** A ruby base and its reading. */
|
|
37
|
+
export interface JisRubyBase {
|
|
38
|
+
/** The base's advance (its characters at their own spacing), px. */
|
|
39
|
+
width: number;
|
|
40
|
+
/** How many characters (graphemes) the base holds. */
|
|
41
|
+
graphemes: number;
|
|
42
|
+
/** The reading's characters as painted, with their advances (px). */
|
|
43
|
+
reading: readonly {
|
|
44
|
+
text: string;
|
|
45
|
+
width: number;
|
|
46
|
+
}[];
|
|
47
|
+
}
|
|
48
|
+
/** Where a reading sits (see `CjkRubyAlign`). */
|
|
49
|
+
export type JisRubyAlign = 'center' | 'jis' | 'start';
|
|
50
|
+
/** How far a reading may pass its base, or a jukugo word, on each side, px. */
|
|
51
|
+
export interface JisRubyAllow {
|
|
52
|
+
start: number;
|
|
53
|
+
end: number;
|
|
54
|
+
}
|
|
55
|
+
/** A piece of a reading: its text, its advance and where it starts, px
|
|
56
|
+
* from the start of its base's box (negative: before the box). */
|
|
57
|
+
export interface JisRubyPiece {
|
|
58
|
+
text: string;
|
|
59
|
+
dx: number;
|
|
60
|
+
width: number;
|
|
61
|
+
}
|
|
62
|
+
/** How a ruby base is set (see the module comment). */
|
|
63
|
+
export interface JisRubyBox {
|
|
64
|
+
/** The box's advance on the line, px. */
|
|
65
|
+
width: number;
|
|
66
|
+
/** Where the base's first glyph starts in the box, px. */
|
|
67
|
+
inset: number;
|
|
68
|
+
/** Space after each base character (a spread base of two or more), px;
|
|
69
|
+
* counted in `width`. */
|
|
70
|
+
tracking: number;
|
|
71
|
+
pieces: JisRubyPiece[];
|
|
72
|
+
}
|
|
73
|
+
/** How far a longer reading passes its base on each side: evenly while
|
|
74
|
+
* both sides take it, then the side that takes more (`start` alignment:
|
|
75
|
+
* only after the base). */
|
|
76
|
+
export declare function overhangs(need: number, allow: JisRubyAllow, align: JisRubyAlign): {
|
|
77
|
+
start: number;
|
|
78
|
+
end: number;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* One base and its reading: a mono ruby's character, or a group ruby's
|
|
82
|
+
* base (see the module comment). `rubyEm` is the reading's em, for the
|
|
83
|
+
* limit of the 1:2:1 spread.
|
|
84
|
+
*/
|
|
85
|
+
export declare function layoutJisRuby(base: JisRubyBase, align: JisRubyAlign, rubyEm: number, allow: JisRubyAllow): JisRubyBox;
|
|
86
|
+
/**
|
|
87
|
+
* A jukugo ruby's characters (a word, or the part of it on a line): one
|
|
88
|
+
* box per base (see the module comment). `allow` is what the word's
|
|
89
|
+
* neighbours outside it take.
|
|
90
|
+
*/
|
|
91
|
+
export declare function layoutJukugo(bases: readonly JisRubyBase[], align: JisRubyAlign, rubyEm: number, allow: JisRubyAllow): JisRubyBox[];
|
|
92
|
+
/** The total advance of boxes. */
|
|
93
|
+
export declare function boxesWidth(boxes: readonly JisRubyBox[]): number;
|
|
94
|
+
/** A reading with its small kana full size (がっこう → がつこう). */
|
|
95
|
+
export declare function fullSizeKana(reading: string): string;
|
|
96
|
+
//# sourceMappingURL=rubyJis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rubyJis.d.ts","sourceRoot":"","sources":["../../src/measure/rubyJis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,mCAAmC;AACnC,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,OAAO,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACrD;AAED,iDAAiD;AACjD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;AAEtD,+EAA+E;AAC/E,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED;mEACmE;AACnE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd;8BAC0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAsCD;;4BAE4B;AAC5B,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAahH;AA2CD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,UAAU,CAGrH;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,UAAU,EAAE,CAwElI;AAED,kCAAkC;AAClC,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,CAI/D;AAWD,6DAA6D;AAC7D,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD"}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Japanese ruby geometry (furigana, #422), after JIS X 4051 §12 and JLReq
|
|
3
|
+
* §3.3: where a reading sits on its base, how far a longer one may run
|
|
4
|
+
* past the base before the base is spread, and how the readings of a
|
|
5
|
+
* jukugo ruby (熟語ルビ) share a word.
|
|
6
|
+
*
|
|
7
|
+
* Pure arithmetic along the line, in px of the flow frame: the composer
|
|
8
|
+
* (`cjkCompose.ts`) gives each base's advance and its reading's
|
|
9
|
+
* characters, and how far the reading may pass the base on each side
|
|
10
|
+
* (`allow`: what the neighbour outside takes, 0 at a line edge, where
|
|
11
|
+
* the reading is set flush with the edge and the base moves in); it gets
|
|
12
|
+
* back each base's box (its advance on the line), where the base's first
|
|
13
|
+
* glyph starts in the box (`inset`), the spacing after each base
|
|
14
|
+
* character (`tracking`) and the reading's pieces, placed from the box's
|
|
15
|
+
* start.
|
|
16
|
+
*
|
|
17
|
+
* - A reading no longer than its base (JLReq §3.3.6 a) leaves the box as
|
|
18
|
+
* the base: `center` centres it, `start` sets it from the base's start,
|
|
19
|
+
* `jis` spreads it 1:2:1 (half a unit before the first character and
|
|
20
|
+
* after the last, a unit between characters), or, when that half unit
|
|
21
|
+
* would be more than a ruby character, from one end of the base to the
|
|
22
|
+
* other (space-between). One character is centred by either.
|
|
23
|
+
* - A longer reading (§3.3.6 b) runs past the base as far as each side
|
|
24
|
+
* allows, evenly while both sides can take it; what is left spreads the
|
|
25
|
+
* base: 1:2:1 under `jis` (half a unit before the first character and
|
|
26
|
+
* after the last, a unit between), centred in its box otherwise. The
|
|
27
|
+
* reading is set solid.
|
|
28
|
+
* - A jukugo ruby (§3.3.7) is set as mono ruby while every reading fits
|
|
29
|
+
* its base. When one does not, each reading stays by its own base and
|
|
30
|
+
* may run onto the next or the previous base of the word by up to one
|
|
31
|
+
* ruby character, the readings never overlapping, the first and the
|
|
32
|
+
* last passing the word by what the neighbours outside allow. When even
|
|
33
|
+
* that does not hold them, the word takes its readings as one, a group
|
|
34
|
+
* ruby over the whole word.
|
|
35
|
+
*/
|
|
36
|
+
const EPS = 1e-9;
|
|
37
|
+
/** The sum of the advances. */
|
|
38
|
+
function advance(reading) {
|
|
39
|
+
let w = 0;
|
|
40
|
+
for (const r of reading)
|
|
41
|
+
w += r.width;
|
|
42
|
+
return w;
|
|
43
|
+
}
|
|
44
|
+
/** Where each character of a reading starts when the first starts at `x`
|
|
45
|
+
* with `gap` after each but the last. */
|
|
46
|
+
function charStarts(reading, x, gap) {
|
|
47
|
+
const out = [];
|
|
48
|
+
let at = x;
|
|
49
|
+
for (const r of reading) {
|
|
50
|
+
out.push(at);
|
|
51
|
+
at += r.width + gap;
|
|
52
|
+
}
|
|
53
|
+
return out;
|
|
54
|
+
}
|
|
55
|
+
/** A reading's characters at `xs` as pieces: characters set solid share a
|
|
56
|
+
* piece. */
|
|
57
|
+
function piecesAt(reading, xs) {
|
|
58
|
+
const out = [];
|
|
59
|
+
reading.forEach((r, i) => {
|
|
60
|
+
const x = xs[i];
|
|
61
|
+
const last = out[out.length - 1];
|
|
62
|
+
if (last && Math.abs(last.dx + last.width - x) < EPS) {
|
|
63
|
+
last.text += r.text;
|
|
64
|
+
last.width += r.width;
|
|
65
|
+
}
|
|
66
|
+
else
|
|
67
|
+
out.push({ text: r.text, dx: x, width: r.width });
|
|
68
|
+
});
|
|
69
|
+
return out;
|
|
70
|
+
}
|
|
71
|
+
/** How far a longer reading passes its base on each side: evenly while
|
|
72
|
+
* both sides take it, then the side that takes more (`start` alignment:
|
|
73
|
+
* only after the base). */
|
|
74
|
+
export function overhangs(need, allow, align) {
|
|
75
|
+
const a = Math.max(0, allow.start);
|
|
76
|
+
const b = Math.max(0, allow.end);
|
|
77
|
+
if (align === 'start')
|
|
78
|
+
return { start: 0, end: Math.min(b, need) };
|
|
79
|
+
let start = Math.min(a, need / 2);
|
|
80
|
+
let end = Math.min(b, need / 2);
|
|
81
|
+
const left = need - start - end;
|
|
82
|
+
if (left > EPS) {
|
|
83
|
+
const more = Math.min(a - start, left);
|
|
84
|
+
start += more;
|
|
85
|
+
end += Math.min(b - end, left - more);
|
|
86
|
+
}
|
|
87
|
+
return { start, end };
|
|
88
|
+
}
|
|
89
|
+
/** {@link layoutJisRuby} with the reading's characters' starts (`xs`)
|
|
90
|
+
* instead of its pieces. */
|
|
91
|
+
function placeReading(base, align, rubyEm, allow) {
|
|
92
|
+
const reading = base.reading;
|
|
93
|
+
const r = advance(reading);
|
|
94
|
+
const b = base.width;
|
|
95
|
+
if (r <= b + EPS) {
|
|
96
|
+
const slack = Math.max(0, b - r);
|
|
97
|
+
const n = reading.length;
|
|
98
|
+
let x = slack / 2;
|
|
99
|
+
let gap = 0;
|
|
100
|
+
if (align === 'start')
|
|
101
|
+
x = 0;
|
|
102
|
+
else if (align === 'jis' && n > 1) {
|
|
103
|
+
// 1:2:1 (space-around); flush with both ends (space-between) when
|
|
104
|
+
// the half unit at each end would be more than a ruby character.
|
|
105
|
+
const unit = slack / n;
|
|
106
|
+
if (unit / 2 > rubyEm + EPS) {
|
|
107
|
+
x = 0;
|
|
108
|
+
gap = slack / (n - 1);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
x = unit / 2;
|
|
112
|
+
gap = unit;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return { width: b, inset: 0, tracking: 0, xs: charStarts(reading, x, gap) };
|
|
116
|
+
}
|
|
117
|
+
const over = overhangs(r - b, allow, align);
|
|
118
|
+
const spread = Math.max(0, r - b - over.start - over.end);
|
|
119
|
+
const m = Math.max(1, base.graphemes);
|
|
120
|
+
let inset = spread / 2;
|
|
121
|
+
let tracking = 0;
|
|
122
|
+
if (align === 'start')
|
|
123
|
+
inset = 0;
|
|
124
|
+
else if (align === 'jis' && m > 1) {
|
|
125
|
+
// The base spread 1:2:1: half a unit before its first character and
|
|
126
|
+
// after its last, a unit between.
|
|
127
|
+
tracking = spread / m;
|
|
128
|
+
inset = tracking / 2;
|
|
129
|
+
}
|
|
130
|
+
return { width: b + spread, inset, tracking, xs: charStarts(reading, 0 - over.start, 0) };
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* One base and its reading: a mono ruby's character, or a group ruby's
|
|
134
|
+
* base (see the module comment). `rubyEm` is the reading's em, for the
|
|
135
|
+
* limit of the 1:2:1 spread.
|
|
136
|
+
*/
|
|
137
|
+
export function layoutJisRuby(base, align, rubyEm, allow) {
|
|
138
|
+
const { xs, ...box } = placeReading(base, align, rubyEm, allow);
|
|
139
|
+
return { ...box, pieces: piecesAt(base.reading, xs) };
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* A jukugo ruby's characters (a word, or the part of it on a line): one
|
|
143
|
+
* box per base (see the module comment). `allow` is what the word's
|
|
144
|
+
* neighbours outside it take.
|
|
145
|
+
*/
|
|
146
|
+
export function layoutJukugo(bases, align, rubyEm, allow) {
|
|
147
|
+
if (bases.length === 1)
|
|
148
|
+
return [layoutJisRuby(bases[0], align, rubyEm, allow)];
|
|
149
|
+
// Every reading fits its base: mono ruby.
|
|
150
|
+
if (bases.every((b) => advance(b.reading) <= b.width + EPS)) {
|
|
151
|
+
return bases.map((b) => layoutJisRuby(b, align, rubyEm, { start: 0, end: 0 }));
|
|
152
|
+
}
|
|
153
|
+
// Each reading by its own base, running onto the bases next to it by up
|
|
154
|
+
// to a ruby character, never onto another reading: from the centred
|
|
155
|
+
// places, pushed after the reading before, then pulled back inside
|
|
156
|
+
// their limits.
|
|
157
|
+
const n = bases.length;
|
|
158
|
+
const starts = [];
|
|
159
|
+
let total = 0;
|
|
160
|
+
for (const b of bases) {
|
|
161
|
+
starts.push(total);
|
|
162
|
+
total += b.width;
|
|
163
|
+
}
|
|
164
|
+
const w = bases.map((b) => advance(b.reading));
|
|
165
|
+
const lo = bases.map((_, i) => starts[i] - (i === 0 ? Math.max(0, allow.start) : rubyEm));
|
|
166
|
+
const hi = bases.map((b, i) => starts[i] + b.width + (i === n - 1 ? Math.max(0, allow.end) : rubyEm));
|
|
167
|
+
const x = bases.map((b, i) => (align === 'start' ? starts[i] : starts[i] + (b.width - w[i]) / 2));
|
|
168
|
+
for (let i = 0; i < n; i++)
|
|
169
|
+
x[i] = Math.max(x[i], lo[i], i > 0 ? x[i - 1] + w[i - 1] : -Infinity);
|
|
170
|
+
for (let i = n - 1; i >= 0; i--)
|
|
171
|
+
x[i] = Math.min(x[i], hi[i] - w[i], i < n - 1 ? x[i + 1] - w[i] : Infinity);
|
|
172
|
+
const fits = x.every((xi, i) => xi >= lo[i] - EPS && xi + w[i] <= hi[i] + EPS && (i === 0 || xi >= x[i - 1] + w[i - 1] - EPS));
|
|
173
|
+
if (fits) {
|
|
174
|
+
return bases.map((b, i) => ({
|
|
175
|
+
width: b.width,
|
|
176
|
+
inset: 0,
|
|
177
|
+
tracking: 0,
|
|
178
|
+
pieces: piecesAt(b.reading, charStarts(b.reading, x[i] - starts[i], 0)),
|
|
179
|
+
}));
|
|
180
|
+
}
|
|
181
|
+
// The word shares its reading: a group ruby over it. Each base keeps a
|
|
182
|
+
// box of its own (its share of the word's spread) and its own
|
|
183
|
+
// characters of the reading, so the parts of a word broken across lines
|
|
184
|
+
// and the HTML `<ruby>` still pair each base with its reading.
|
|
185
|
+
const graphemes = bases.reduce((g, b) => g + Math.max(1, b.graphemes), 0);
|
|
186
|
+
const flat = bases.flatMap((b) => b.reading);
|
|
187
|
+
const word = placeReading({ width: total, graphemes, reading: flat }, align, rubyEm, allow);
|
|
188
|
+
const spread = word.width - total;
|
|
189
|
+
const boxes = [];
|
|
190
|
+
let boxAt = 0;
|
|
191
|
+
let ci = 0;
|
|
192
|
+
bases.forEach((b, i) => {
|
|
193
|
+
const m = Math.max(1, b.graphemes);
|
|
194
|
+
let width = b.width;
|
|
195
|
+
let inset = 0;
|
|
196
|
+
let tracking = 0;
|
|
197
|
+
if (spread > EPS) {
|
|
198
|
+
if (word.tracking > 0) {
|
|
199
|
+
// The word spread 1:2:1 over its characters: each base takes its
|
|
200
|
+
// characters' units, half of one before its first.
|
|
201
|
+
const unit = word.tracking;
|
|
202
|
+
width += unit * m;
|
|
203
|
+
inset = unit / 2;
|
|
204
|
+
tracking = m > 1 ? unit : 0;
|
|
205
|
+
}
|
|
206
|
+
else if (align === 'start') {
|
|
207
|
+
if (i === n - 1)
|
|
208
|
+
width += spread;
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
// Centred: the spread before the first base and after the last.
|
|
212
|
+
if (i === 0) {
|
|
213
|
+
width += word.inset;
|
|
214
|
+
inset = word.inset;
|
|
215
|
+
}
|
|
216
|
+
if (i === n - 1)
|
|
217
|
+
width += spread - word.inset;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
const xs = b.reading.map(() => word.xs[ci++] - boxAt);
|
|
221
|
+
boxes.push({ width, inset, tracking, pieces: piecesAt(b.reading, xs) });
|
|
222
|
+
boxAt += width;
|
|
223
|
+
});
|
|
224
|
+
return boxes;
|
|
225
|
+
}
|
|
226
|
+
/** The total advance of boxes. */
|
|
227
|
+
export function boxesWidth(boxes) {
|
|
228
|
+
let w = 0;
|
|
229
|
+
for (const b of boxes)
|
|
230
|
+
w += b.width;
|
|
231
|
+
return w;
|
|
232
|
+
}
|
|
233
|
+
/** Small kana and their full-size forms (`cjk.ruby.smallKana: 'full'`). */
|
|
234
|
+
const FULL_KANA = {
|
|
235
|
+
'ぁ': 'あ', 'ぃ': 'い', 'ぅ': 'う', 'ぇ': 'え', 'ぉ': 'お', 'っ': 'つ', 'ゃ': 'や', 'ゅ': 'ゆ', 'ょ': 'よ', 'ゎ': 'わ', 'ゕ': 'か', 'ゖ': 'け',
|
|
236
|
+
'ァ': 'ア', 'ィ': 'イ', 'ゥ': 'ウ', 'ェ': 'エ', 'ォ': 'オ', 'ッ': 'ツ', 'ャ': 'ヤ', 'ュ': 'ユ', 'ョ': 'ヨ', 'ヮ': 'ワ', 'ヵ': 'カ', 'ヶ': 'ケ',
|
|
237
|
+
'ㇰ': 'ク', 'ㇱ': 'シ', 'ㇲ': 'ス', 'ㇳ': 'ト', 'ㇴ': 'ヌ', 'ㇵ': 'ハ', 'ㇶ': 'ヒ', 'ㇷ': 'フ', 'ㇸ': 'ヘ', 'ㇹ': 'ホ', 'ㇺ': 'ム', 'ㇻ': 'ラ', 'ㇼ': 'リ', 'ㇽ': 'ル', 'ㇾ': 'レ', 'ㇿ': 'ロ',
|
|
238
|
+
'ァ': 'ア', 'ィ': 'イ', 'ゥ': 'ウ', 'ェ': 'エ', 'ォ': 'オ', 'ャ': 'ヤ', 'ュ': 'ユ', 'ョ': 'ヨ', 'ッ': 'ツ',
|
|
239
|
+
};
|
|
240
|
+
const SMALL_KANA_RE = /[ぁぃぅぇぉっゃゅょゎゕゖァィゥェォッャュョヮヵヶㇰ-ㇿァ-ッ]/g;
|
|
241
|
+
/** A reading with its small kana full size (がっこう → がつこう). */
|
|
242
|
+
export function fullSizeKana(reading) {
|
|
243
|
+
return reading.replace(SMALL_KANA_RE, (c) => FULL_KANA[c] ?? c);
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=rubyJis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rubyJis.js","sourceRoot":"","sources":["../../src/measure/rubyJis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAyCH,MAAM,GAAG,GAAG,IAAI,CAAC;AAEjB,+BAA+B;AAC/B,SAAS,OAAO,CAAC,OAAqC;IACpD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;IACtC,OAAO,CAAC,CAAC;AACX,CAAC;AAED;0CAC0C;AAC1C,SAAS,UAAU,CAAC,OAAqC,EAAE,CAAS,EAAE,GAAW;IAC/E,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,EAAE,IAAI,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;aACa;AACb,SAAS,QAAQ,CAAC,OAAmD,EAAE,EAAqB;IAC1F,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC;QACjB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;YACrD,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC;YACpB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC;QACxB,CAAC;;YAAM,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;4BAE4B;AAC5B,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,KAAmB,EAAE,KAAmB;IAC9E,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;IACnE,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;IAClC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC;IAChC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;QACvC,KAAK,IAAI,IAAI,CAAC;QACd,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACxB,CAAC;AAED;6BAC6B;AAC7B,SAAS,YAAY,CAAC,IAAiB,EAAE,KAAmB,EAAE,MAAc,EAAE,KAAmB;IAC/F,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7B,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;IACrB,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAClB,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,KAAK,KAAK,OAAO;YAAE,CAAC,GAAG,CAAC,CAAC;aACxB,IAAI,KAAK,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,kEAAkE;YAClE,iEAAiE;YACjE,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;YACvB,IAAI,IAAI,GAAG,CAAC,GAAG,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC5B,CAAC,GAAG,CAAC,CAAC;gBACN,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;gBACb,GAAG,GAAG,IAAI,CAAC;YACb,CAAC;QACH,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAC9E,CAAC;IACD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1D,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;IACvB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,KAAK,KAAK,OAAO;QAAE,KAAK,GAAG,CAAC,CAAC;SAC5B,IAAI,KAAK,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,oEAAoE;QACpE,kCAAkC;QAClC,QAAQ,GAAG,MAAM,GAAG,CAAC,CAAC;QACtB,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;AAC5F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAAiB,EAAE,KAAmB,EAAE,MAAc,EAAE,KAAmB;IACvG,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAChE,OAAO,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAA6B,EAAE,KAAmB,EAAE,MAAc,EAAE,KAAmB;IAClH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAChF,0CAA0C;IAC1C,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACjF,CAAC;IACD,wEAAwE;IACxE,oEAAoE;IACpE,mEAAmE;IACnE,gBAAgB;IAChB,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACvG,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACtG,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;QAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAClH,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAE,GAAG,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,IAAI,EAAE,CAAC,CAAC,CAAE,GAAG,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACpI,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAE,GAAG,MAAM,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC;SAC1E,CAAC,CAAC,CAAC;IACN,CAAC;IACD,uEAAuE;IACvE,8DAA8D;IAC9D,wEAAwE;IACxE,+DAA+D;IAC/D,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5F,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAClC,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QACpB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACtB,iEAAiE;gBACjE,mDAAmD;gBACnD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC3B,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC;gBAClB,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;gBACjB,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC;iBAAM,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;oBAAE,KAAK,IAAI,MAAM,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,gEAAgE;gBAChE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACZ,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;oBACpB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBACrB,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;oBAAE,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;YAChD,CAAC;QACH,CAAC;QACD,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,GAAG,KAAK,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QACxE,KAAK,IAAI,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,UAAU,CAAC,KAA4B;IACrD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;IACpC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,2EAA2E;AAC3E,MAAM,SAAS,GAA2B;IACxC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IACtH,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IACtH,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC9J,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CACzF,CAAC;AACF,MAAM,aAAa,GAAG,mCAAmC,CAAC;AAE1D,6DAA6D;AAC7D,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,CAAC"}
|
package/dist/measure/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { VDTLine } from '../vdt';
|
|
2
|
-
import type { TextAlign, WritingMode } from '../types';
|
|
2
|
+
import type { CjkWordBreak, TextAlign, WritingMode } from '../types';
|
|
3
3
|
import type { CjkLineBreakLevel } from './cjkClasses';
|
|
4
4
|
import type { CjkComposition } from './cjkPunctuation';
|
|
5
5
|
/** Where the Knuth–Plass breaker broke a paragraph: the path it ran on
|
|
@@ -153,6 +153,11 @@ export interface MeasureBlockOptions {
|
|
|
153
153
|
* `CjkLineBreakLevel`. Unset: the document's level, which the build sets
|
|
154
154
|
* (`setCjkLineBreak`); `gb` outside a build. Only CJK text reads it. */
|
|
155
155
|
cjkLineBreak?: CjkLineBreakLevel;
|
|
156
|
+
/** Where CJK text breaks between characters, for this paragraph alone (a
|
|
157
|
+
* paragraph style's `wordBreak`): `'keep-all'` only at spaces and next
|
|
158
|
+
* to punctuation, `'normal'` between any two characters. Unset: the
|
|
159
|
+
* composition's (`cjk.wordBreak`). Only CJK text reads it. */
|
|
160
|
+
cjkWordBreak?: CjkWordBreak;
|
|
156
161
|
/** The writing mode the text is measured in: `'vertical-rl'` gives every
|
|
157
162
|
* character that stands in a cell of its own in vertical text its cell
|
|
158
163
|
* (CJK characters, Chinese marks, the signs Unicode sets upright: see
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/measure/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/measure/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/measure/types.ts"],"names":[],"mappings":"AAsBA;oDACoD;AACpD,MAAM,UAAU,WAAW,CAAC,UAAkB,EAAE,KAA2C,EAAE,SAAiB;IAC5G,IAAI,KAAK,GAAG,UAAU,CAAC;IACvB,IAAI,KAAK;QAAE,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,IAAI,CAAC,CAAC,QAAQ,IAAI,SAAS;gBAAE,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC;IACpF,OAAO,KAAK,CAAC;AACf,CAAC;AAED;4CAC4C;AAC5C,MAAM,UAAU,kBAAkB,CAAC,KAA2C;IAC5E,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK;QAAE,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IACpE,OAAO,IAAI,CAAC;AACd,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/measure/types.ts"],"names":[],"mappings":"AAsBA;oDACoD;AACpD,MAAM,UAAU,WAAW,CAAC,UAAkB,EAAE,KAA2C,EAAE,SAAiB;IAC5G,IAAI,KAAK,GAAG,UAAU,CAAC;IACvB,IAAI,KAAK;QAAE,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,IAAI,CAAC,CAAC,QAAQ,IAAI,SAAS;gBAAE,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC;IACpF,OAAO,KAAK,CAAC;AACf,CAAC;AAED;4CAC4C;AAC5C,MAAM,UAAU,kBAAkB,CAAC,KAA2C;IAC5E,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK;QAAE,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IACpE,OAAO,IAAI,CAAC;AACd,CAAC;AAkKD,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC"}
|
|
@@ -17,8 +17,9 @@
|
|
|
17
17
|
import type { CjkRegion, WritingMode } from '../types';
|
|
18
18
|
import type { CjkClass } from './cjkClasses';
|
|
19
19
|
import { type UprightDigits } from '../writingMode';
|
|
20
|
-
/** Set the writing mode text is measured in, and the
|
|
21
|
-
* cells it uses (the mainland interpunct takes half a cell
|
|
20
|
+
/** Set the writing mode text is measured in, and the CJK region whose
|
|
21
|
+
* cells it uses (the mainland interpunct takes half a cell, Japan sets
|
|
22
|
+
* !? upright). The build
|
|
22
23
|
* does, from the layout of the pages it is placing (a styled section may
|
|
23
24
|
* change it), and puts back what it found when it is done. */
|
|
24
25
|
export declare function setMeasureWritingMode(mode: WritingMode, region?: CjkRegion): void;
|
|
@@ -31,7 +32,8 @@ export declare function getMeasureWritingMode(): WritingMode;
|
|
|
31
32
|
export declare function setMeasureUprightDigits(digits: UprightDigits): void;
|
|
32
33
|
/** See {@link setMeasureUprightDigits}; 2 outside a build. */
|
|
33
34
|
export declare function getMeasureUprightDigits(): UprightDigits;
|
|
34
|
-
/** The
|
|
35
|
+
/** The CJK region (Chinese or Japanese) vertical cells are measured
|
|
36
|
+
* for. */
|
|
35
37
|
export declare function getMeasureRegion(): CjkRegion;
|
|
36
38
|
/** Whether text is measured vertically now. */
|
|
37
39
|
export declare function measuringVertically(): boolean;
|
|
@@ -66,10 +68,16 @@ export declare function verticalTrackCount(text: string): number;
|
|
|
66
68
|
* The advance of text painted in the page's flow (design text, list
|
|
67
69
|
* markers, contents rows, box titles): `measureTextWidth`, except in
|
|
68
70
|
* vertical text, where what stands in a cell advances its cell
|
|
69
|
-
* ({@link verticalTextWidth}), as the renderers paint it. ASCII text
|
|
70
|
-
* the same either way.
|
|
71
|
+
* ({@link verticalTextWidth}), as the renderers paint it. ASCII text with
|
|
72
|
+
* no cell reads the same either way ({@link mayHoldVerticalCell}).
|
|
71
73
|
*/
|
|
72
74
|
export declare function flowTextWidth(text: string, font: string): number;
|
|
75
|
+
/** Whether `text` may hold a cell in vertical text (see `verticalRuns`):
|
|
76
|
+
* any non-ASCII character, a digit when short numbers stand in one cell
|
|
77
|
+
* (`cjk.uprightDigits`), two exclamation or question marks in Japanese
|
|
78
|
+
* text (`isUprightMarkPair`). ASCII text with none of them runs sideways
|
|
79
|
+
* whole. */
|
|
80
|
+
export declare function mayHoldVerticalCell(text: string): boolean;
|
|
73
81
|
/** A font string's first family, unquoted: the key of
|
|
74
82
|
* `VDTFlowFrame.centralBaselines`. */
|
|
75
83
|
export declare function fontFamilyOf(font: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vertical.d.ts","sourceRoot":"","sources":["../../src/measure/vertical.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAiD,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAUnG
|
|
1
|
+
{"version":3,"file":"vertical.d.ts","sourceRoot":"","sources":["../../src/measure/vertical.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAiD,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAUnG;;;;+DAI+D;AAC/D,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,GAAE,SAAyB,GAAG,IAAI,CAGhG;AAED;kCACkC;AAClC,wBAAgB,qBAAqB,IAAI,WAAW,CAEnD;AAED;;sEAEsE;AACtE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAEnE;AAED,8DAA8D;AAC9D,wBAAgB,uBAAuB,IAAI,aAAa,CAEvD;AAED;WACW;AACX,wBAAgB,gBAAgB,IAAI,SAAS,CAE5C;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED;oDACoD;AACpD,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAE,SAAyB,GAAG,CAAC,CAW9G;AAED,uEAAuE;AACvE,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG3C;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,MAAM,CAGrG;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAA6C,GAAG,MAAM,CAMhJ;AAED;;uBAEuB;AACvB,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMvD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGhE;AAED;;;;aAIa;AACb,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;uCACuC;AACvC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;AAID,8CAA8C;AAC9C,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAW7D;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG7E"}
|
package/dist/measure/vertical.js
CHANGED
|
@@ -22,8 +22,9 @@ const FONT_SIZE_RE = /(\d*\.?\d+)px/;
|
|
|
22
22
|
let measureWritingMode = 'horizontal-tb';
|
|
23
23
|
let measureRegion = 'mainland';
|
|
24
24
|
let measureUprightDigits = 2;
|
|
25
|
-
/** Set the writing mode text is measured in, and the
|
|
26
|
-
* cells it uses (the mainland interpunct takes half a cell
|
|
25
|
+
/** Set the writing mode text is measured in, and the CJK region whose
|
|
26
|
+
* cells it uses (the mainland interpunct takes half a cell, Japan sets
|
|
27
|
+
* !? upright). The build
|
|
27
28
|
* does, from the layout of the pages it is placing (a styled section may
|
|
28
29
|
* change it), and puts back what it found when it is done. */
|
|
29
30
|
export function setMeasureWritingMode(mode, region = measureRegion) {
|
|
@@ -45,7 +46,8 @@ export function setMeasureUprightDigits(digits) {
|
|
|
45
46
|
export function getMeasureUprightDigits() {
|
|
46
47
|
return measureUprightDigits;
|
|
47
48
|
}
|
|
48
|
-
/** The
|
|
49
|
+
/** The CJK region (Chinese or Japanese) vertical cells are measured
|
|
50
|
+
* for. */
|
|
49
51
|
export function getMeasureRegion() {
|
|
50
52
|
return measureRegion;
|
|
51
53
|
}
|
|
@@ -116,14 +118,22 @@ export function verticalTrackCount(text) {
|
|
|
116
118
|
* The advance of text painted in the page's flow (design text, list
|
|
117
119
|
* markers, contents rows, box titles): `measureTextWidth`, except in
|
|
118
120
|
* vertical text, where what stands in a cell advances its cell
|
|
119
|
-
* ({@link verticalTextWidth}), as the renderers paint it. ASCII text
|
|
120
|
-
* the same either way.
|
|
121
|
+
* ({@link verticalTextWidth}), as the renderers paint it. ASCII text with
|
|
122
|
+
* no cell reads the same either way ({@link mayHoldVerticalCell}).
|
|
121
123
|
*/
|
|
122
124
|
export function flowTextWidth(text, font) {
|
|
123
|
-
if (measureWritingMode === 'vertical-rl' && (
|
|
125
|
+
if (measureWritingMode === 'vertical-rl' && mayHoldVerticalCell(text))
|
|
124
126
|
return verticalTextWidth(text, font);
|
|
125
127
|
return measureTextWidth(text, font);
|
|
126
128
|
}
|
|
129
|
+
/** Whether `text` may hold a cell in vertical text (see `verticalRuns`):
|
|
130
|
+
* any non-ASCII character, a digit when short numbers stand in one cell
|
|
131
|
+
* (`cjk.uprightDigits`), two exclamation or question marks in Japanese
|
|
132
|
+
* text (`isUprightMarkPair`). ASCII text with none of them runs sideways
|
|
133
|
+
* whole. */
|
|
134
|
+
export function mayHoldVerticalCell(text) {
|
|
135
|
+
return /[^\u0000-\u007F]/.test(text) || (measureUprightDigits > 0 && /[0-9]/.test(text)) || (measureRegion === 'japan' && /[!?][!?]/.test(text));
|
|
136
|
+
}
|
|
127
137
|
/** A font string's first family, unquoted: the key of
|
|
128
138
|
* `VDTFlowFrame.centralBaselines`. */
|
|
129
139
|
export function fontFamilyOf(font) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vertical.js","sourceRoot":"","sources":["../../src/measure/vertical.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAElD,MAAM,YAAY,GAAG,eAAe,CAAC;AAErC,IAAI,kBAAkB,GAAgB,eAAe,CAAC;AACtD,IAAI,aAAa,GAAc,UAAU,CAAC;AAC1C,IAAI,oBAAoB,GAAkB,CAAC,CAAC;AAE5C
|
|
1
|
+
{"version":3,"file":"vertical.js","sourceRoot":"","sources":["../../src/measure/vertical.ts"],"names":[],"mappings":"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"}
|
package/dist/numberWords.d.ts
CHANGED
|
@@ -14,9 +14,10 @@ export interface NumberWordsOptions {
|
|
|
14
14
|
/**
|
|
15
15
|
* `n` spelled out in lower case, in the document language (`locale`:
|
|
16
16
|
* `'es'` or a Spanish tag gives Spanish, a Chinese tag Chinese numerals in
|
|
17
|
-
* its script,
|
|
18
|
-
* `options`, anything else English).
|
|
19
|
-
*
|
|
17
|
+
* its script, a Japanese tag Japanese kanji numerals, an Arabic tag Arabic
|
|
18
|
+
* words in the gender and spelling of `options`, anything else English).
|
|
19
|
+
* Numbers past 999 999 (Spanish ordinals: past 999; Chinese and Japanese:
|
|
20
|
+
* past 10¹⁶ − 1; Arabic: cardinals past
|
|
20
21
|
* 99 999, ordinals past 9 999) print in digits; zero and below print
|
|
21
22
|
* nothing, like the other numeral formats.
|
|
22
23
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numberWords.d.ts","sourceRoot":"","sources":["../src/numberWords.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"numberWords.d.ts","sourceRoot":"","sources":["../src/numberWords.ts"],"names":[],"mappings":"AAeA,OAAO,EAAiC,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE5G,2DAA2D;AAC3D,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,SAAS,CAAC;AAErD;6DAC6D;AAC7D,MAAM,WAAW,kBAAkB;IACjC;uDACmD;IACnD,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;mCAC+B;IAC/B,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AA8HD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,eAA4B,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,MAAM,CAsBtI;AAED;oBACoB;AACpB,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAMtF"}
|
package/dist/numberWords.js
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* "vigesimoprimero", 二十一, 第二十一, الحادي والعشرون — for heading numbering
|
|
4
4
|
* templates (`{1:words}`, `{1:ordinal}`) and the `{numberWords}` /
|
|
5
5
|
* `{numberOrdinalWords}` design placeholders. English, Spanish, Chinese
|
|
6
|
-
* (in the document's script: 一万 / 一萬)
|
|
6
|
+
* (in the document's script: 一万 / 一萬), Japanese (百一, where Chinese
|
|
7
|
+
* writes 一百零一) and Arabic; any other language
|
|
7
8
|
* takes the English words, like the other localised strings (table
|
|
8
9
|
* continuation labels). Masculine forms by default, as a chapter or a part
|
|
9
10
|
* is numbered ("capítulo primero", الفصل الأول); Arabic also has the
|
|
@@ -11,13 +12,14 @@
|
|
|
11
12
|
*/
|
|
12
13
|
import { stringsKeyOf } from './locale';
|
|
13
14
|
import { chineseNumeral } from './chineseNumerals';
|
|
15
|
+
import { japaneseNumeral } from './japaneseNumerals';
|
|
14
16
|
import { arabicCardinal, arabicOrdinal } from './arabicNumberWords';
|
|
15
17
|
/** Largest number spelled out; anything past it prints in digits. */
|
|
16
18
|
const MAX_CARDINAL = 999_999;
|
|
17
19
|
const MAX_ORDINAL_ES = 999;
|
|
18
20
|
function language(locale) {
|
|
19
21
|
const key = stringsKeyOf(locale ?? 'en');
|
|
20
|
-
return key === 'es' || key === 'zh-hans' || key === 'zh-hant' || key === 'ar' ? key : 'en';
|
|
22
|
+
return key === 'es' || key === 'zh-hans' || key === 'zh-hant' || key === 'ja' || key === 'ar' ? key : 'en';
|
|
21
23
|
}
|
|
22
24
|
// --- English ---------------------------------------------------------------
|
|
23
25
|
const EN_ONES = [
|
|
@@ -135,9 +137,10 @@ function esOrdinal(n) {
|
|
|
135
137
|
/**
|
|
136
138
|
* `n` spelled out in lower case, in the document language (`locale`:
|
|
137
139
|
* `'es'` or a Spanish tag gives Spanish, a Chinese tag Chinese numerals in
|
|
138
|
-
* its script,
|
|
139
|
-
* `options`, anything else English).
|
|
140
|
-
*
|
|
140
|
+
* its script, a Japanese tag Japanese kanji numerals, an Arabic tag Arabic
|
|
141
|
+
* words in the gender and spelling of `options`, anything else English).
|
|
142
|
+
* Numbers past 999 999 (Spanish ordinals: past 999; Chinese and Japanese:
|
|
143
|
+
* past 10¹⁶ − 1; Arabic: cardinals past
|
|
141
144
|
* 99 999, ordinals past 9 999) print in digits; zero and below print
|
|
142
145
|
* nothing, like the other numeral formats.
|
|
143
146
|
*/
|
|
@@ -152,6 +155,13 @@ export function numberToWords(n, kind = 'cardinal', locale, options = {}) {
|
|
|
152
155
|
const numeral = chineseNumeral(n, 'informal', lang === 'zh-hant');
|
|
153
156
|
return kind === 'ordinal' ? `第${numeral}` : numeral;
|
|
154
157
|
}
|
|
158
|
+
if (lang === 'ja') {
|
|
159
|
+
// The counted kanji numerals as they are read (二十一, 百一, 一万一:
|
|
160
|
+
// no 一 before 十百千, no 零 for a gap); the ordinal is 第 before
|
|
161
|
+
// them (第一, 第二十一), as chapters are numbered (第一章).
|
|
162
|
+
const numeral = japaneseNumeral(n, 'informal');
|
|
163
|
+
return kind === 'ordinal' ? `第${numeral}` : numeral;
|
|
164
|
+
}
|
|
155
165
|
if (kind === 'ordinal') {
|
|
156
166
|
if (lang === 'es')
|
|
157
167
|
return n <= MAX_ORDINAL_ES ? esOrdinal(n) : String(n);
|