postext 1.27.0 → 1.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/bundle/balloonPlacementPin.test.d.ts +2 -0
- package/dist/__tests__/bundle/balloonPlacementPin.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/balloonPlacementPin.test.js +71 -0
- package/dist/__tests__/bundle/balloonPlacementPin.test.js.map +1 -0
- package/dist/__tests__/bundle/cjkRulesPin.test.js +131 -7
- package/dist/__tests__/bundle/cjkRulesPin.test.js.map +1 -1
- package/dist/__tests__/bundle/designOverflowPin.test.js +3 -3
- package/dist/__tests__/bundle/designOverflowPin.test.js.map +1 -1
- package/dist/__tests__/bundle/flowColumnsPin.test.js +3 -1
- package/dist/__tests__/bundle/flowColumnsPin.test.js.map +1 -1
- package/dist/__tests__/bundle/gridBalancingPin.test.js +14 -5
- package/dist/__tests__/bundle/gridBalancingPin.test.js.map +1 -1
- package/dist/__tests__/bundle/gridBreakRulesPin.test.d.ts +2 -0
- package/dist/__tests__/bundle/gridBreakRulesPin.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/gridBreakRulesPin.test.js +144 -0
- package/dist/__tests__/bundle/gridBreakRulesPin.test.js.map +1 -0
- package/dist/__tests__/bundle/indexGroupSplitPin.test.d.ts +2 -0
- package/dist/__tests__/bundle/indexGroupSplitPin.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/indexGroupSplitPin.test.js +55 -0
- package/dist/__tests__/bundle/indexGroupSplitPin.test.js.map +1 -0
- package/dist/__tests__/bundle/inlineCaptionSidePin.test.d.ts +2 -0
- package/dist/__tests__/bundle/inlineCaptionSidePin.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/inlineCaptionSidePin.test.js +60 -0
- package/dist/__tests__/bundle/inlineCaptionSidePin.test.js.map +1 -0
- package/dist/__tests__/bundle/inlineTableSplitPin.test.js +3 -1
- package/dist/__tests__/bundle/inlineTableSplitPin.test.js.map +1 -1
- package/dist/__tests__/bundle/looseOrderPin.test.d.ts +2 -0
- package/dist/__tests__/bundle/looseOrderPin.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/looseOrderPin.test.js +76 -0
- package/dist/__tests__/bundle/looseOrderPin.test.js.map +1 -0
- package/dist/__tests__/bundle/openerHeadFloatsPin.test.js +2 -1
- package/dist/__tests__/bundle/openerHeadFloatsPin.test.js.map +1 -1
- package/dist/__tests__/bundle/refLabelBreaksPin.test.d.ts +2 -0
- package/dist/__tests__/bundle/refLabelBreaksPin.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/refLabelBreaksPin.test.js +72 -0
- package/dist/__tests__/bundle/refLabelBreaksPin.test.js.map +1 -0
- package/dist/__tests__/bundle/scriptContextPin.test.d.ts +2 -0
- package/dist/__tests__/bundle/scriptContextPin.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/scriptContextPin.test.js +66 -0
- package/dist/__tests__/bundle/scriptContextPin.test.js.map +1 -0
- package/dist/__tests__/bundle/trailingStepPin.test.d.ts +2 -0
- package/dist/__tests__/bundle/trailingStepPin.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/trailingStepPin.test.js +59 -0
- package/dist/__tests__/bundle/trailingStepPin.test.js.map +1 -0
- package/dist/__tests__/bundle/wideFloatStretchPin.test.d.ts +2 -0
- package/dist/__tests__/bundle/wideFloatStretchPin.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/wideFloatStretchPin.test.js +59 -0
- package/dist/__tests__/bundle/wideFloatStretchPin.test.js.map +1 -0
- package/dist/__tests__/bundle.test.js +8 -6
- package/dist/__tests__/bundle.test.js.map +1 -1
- package/dist/__tests__/cjk/annotations.test.js +223 -0
- package/dist/__tests__/cjk/annotations.test.js.map +1 -1
- package/dist/__tests__/cjk/annotationsRender.test.js +3 -3
- package/dist/__tests__/cjk/annotationsRender.test.js.map +1 -1
- package/dist/__tests__/cjk/chipLatinSpacing.test.js +13 -2
- package/dist/__tests__/cjk/chipLatinSpacing.test.js.map +1 -1
- package/dist/__tests__/cjk/designNumberSeams.test.d.ts +2 -0
- package/dist/__tests__/cjk/designNumberSeams.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/designNumberSeams.test.js +221 -0
- package/dist/__tests__/cjk/designNumberSeams.test.js.map +1 -0
- package/dist/__tests__/cjk/grid.test.js +1 -1
- package/dist/__tests__/cjk/grid.test.js.map +1 -1
- package/dist/__tests__/cjk/gridBalancing.test.js +3 -1
- package/dist/__tests__/cjk/gridBalancing.test.js.map +1 -1
- package/dist/__tests__/cjk/japaneseSpacing.test.js +3 -1
- package/dist/__tests__/cjk/japaneseSpacing.test.js.map +1 -1
- package/dist/__tests__/cjk/keepAll.test.js +3 -1
- package/dist/__tests__/cjk/keepAll.test.js.map +1 -1
- package/dist/__tests__/cjk/keepAllLatinQuotation.test.d.ts +2 -0
- package/dist/__tests__/cjk/keepAllLatinQuotation.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/keepAllLatinQuotation.test.js +166 -0
- package/dist/__tests__/cjk/keepAllLatinQuotation.test.js.map +1 -0
- package/dist/__tests__/cjk/latinSpacingEdge.test.d.ts +2 -0
- package/dist/__tests__/cjk/latinSpacingEdge.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/latinSpacingEdge.test.js +179 -0
- package/dist/__tests__/cjk/latinSpacingEdge.test.js.map +1 -0
- package/dist/__tests__/cjk/runt.test.js +92 -1
- package/dist/__tests__/cjk/runt.test.js.map +1 -1
- package/dist/__tests__/codeBlocks.test.js +1 -1
- package/dist/__tests__/columnBalancing.test.js +216 -0
- package/dist/__tests__/columnBalancing.test.js.map +1 -1
- package/dist/__tests__/columnRuleBands.test.js +78 -0
- package/dist/__tests__/columnRuleBands.test.js.map +1 -1
- package/dist/__tests__/comics/readingDirection.test.js +52 -0
- package/dist/__tests__/comics/readingDirection.test.js.map +1 -1
- package/dist/__tests__/comics/script.test.js +5 -0
- package/dist/__tests__/comics/script.test.js.map +1 -1
- package/dist/__tests__/contrast.test.d.ts +2 -0
- package/dist/__tests__/contrast.test.d.ts.map +1 -0
- package/dist/__tests__/contrast.test.js +258 -0
- package/dist/__tests__/contrast.test.js.map +1 -0
- package/dist/__tests__/defaults/cjk.test.js +4 -4
- package/dist/__tests__/defaults/cjk.test.js.map +1 -1
- package/dist/__tests__/defaults/gridBreakRules.test.d.ts +2 -0
- package/dist/__tests__/defaults/gridBreakRules.test.d.ts.map +1 -0
- package/dist/__tests__/defaults/gridBreakRules.test.js +152 -0
- package/dist/__tests__/defaults/gridBreakRules.test.js.map +1 -0
- package/dist/__tests__/defaults/headingsBalancing.test.js +25 -0
- package/dist/__tests__/defaults/headingsBalancing.test.js.map +1 -1
- package/dist/__tests__/defaults/stripContextDefaults.test.js +41 -0
- package/dist/__tests__/defaults/stripContextDefaults.test.js.map +1 -1
- package/dist/__tests__/defaults/stripRoundTrip.test.js +8 -5
- package/dist/__tests__/defaults/stripRoundTrip.test.js.map +1 -1
- package/dist/__tests__/exports.test.js +30 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/__tests__/fontUsage.test.d.ts +2 -0
- package/dist/__tests__/fontUsage.test.d.ts.map +1 -0
- package/dist/__tests__/fontUsage.test.js +113 -0
- package/dist/__tests__/fontUsage.test.js.map +1 -0
- package/dist/__tests__/hardBreaks.test.js +1 -1
- package/dist/__tests__/headingInlineMarks.test.js +7 -5
- package/dist/__tests__/headingInlineMarks.test.js.map +1 -1
- package/dist/__tests__/hyphenationRules.test.d.ts +2 -0
- package/dist/__tests__/hyphenationRules.test.d.ts.map +1 -0
- package/dist/__tests__/hyphenationRules.test.js +295 -0
- package/dist/__tests__/hyphenationRules.test.js.map +1 -0
- package/dist/__tests__/indexGroupSplit.test.d.ts +2 -0
- package/dist/__tests__/indexGroupSplit.test.d.ts.map +1 -0
- package/dist/__tests__/indexGroupSplit.test.js +175 -0
- package/dist/__tests__/indexGroupSplit.test.js.map +1 -0
- package/dist/__tests__/mathSizeMigration.test.js +7 -5
- package/dist/__tests__/mathSizeMigration.test.js.map +1 -1
- package/dist/__tests__/multipleColumns.test.js +19 -0
- package/dist/__tests__/multipleColumns.test.js.map +1 -1
- package/dist/__tests__/pipeline/calloutInlineResourceGap.test.js +1 -1
- package/dist/__tests__/pipeline/calloutSplitMinLinesChild.test.js +3 -3
- package/dist/__tests__/pipeline/calloutSplitMinLinesChild.test.js.map +1 -1
- package/dist/__tests__/pipeline/closingBandUnderOpener.test.d.ts +2 -0
- package/dist/__tests__/pipeline/closingBandUnderOpener.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/closingBandUnderOpener.test.js +90 -0
- package/dist/__tests__/pipeline/closingBandUnderOpener.test.js.map +1 -0
- package/dist/__tests__/pipeline/colonListRoom.test.js +5 -4
- package/dist/__tests__/pipeline/colonListRoom.test.js.map +1 -1
- package/dist/__tests__/pipeline/columnHeadSpace.test.d.ts +2 -0
- package/dist/__tests__/pipeline/columnHeadSpace.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/columnHeadSpace.test.js +175 -0
- package/dist/__tests__/pipeline/columnHeadSpace.test.js.map +1 -0
- package/dist/__tests__/pipeline/compoundBreaks.test.js +6 -6
- package/dist/__tests__/pipeline/compoundBreaks.test.js.map +1 -1
- package/dist/__tests__/pipeline/dashBreaks.test.js +5 -5
- package/dist/__tests__/pipeline/dashBreaks.test.js.map +1 -1
- package/dist/__tests__/pipeline/flowColumns.test.js +100 -0
- package/dist/__tests__/pipeline/flowColumns.test.js.map +1 -1
- package/dist/__tests__/pipeline/headingShortBand.test.js +2 -1
- package/dist/__tests__/pipeline/headingShortBand.test.js.map +1 -1
- package/dist/__tests__/pipeline/headingSplitOrphans.test.js +6 -5
- package/dist/__tests__/pipeline/headingSplitOrphans.test.js.map +1 -1
- package/dist/__tests__/pipeline/hyphenAcrossColumns.test.js +188 -1
- package/dist/__tests__/pipeline/hyphenAcrossColumns.test.js.map +1 -1
- package/dist/__tests__/pipeline/inlineCaptionSide.test.d.ts +2 -0
- package/dist/__tests__/pipeline/inlineCaptionSide.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/inlineCaptionSide.test.js +270 -0
- package/dist/__tests__/pipeline/inlineCaptionSide.test.js.map +1 -0
- package/dist/__tests__/pipeline/inlineFigureSpace.test.js +5 -5
- package/dist/__tests__/pipeline/inlineFigureSpace.test.js.map +1 -1
- package/dist/__tests__/pipeline/inlineRefRender.test.js +8 -6
- package/dist/__tests__/pipeline/inlineRefRender.test.js.map +1 -1
- package/dist/__tests__/pipeline/looseBeforeHeadingLines.test.d.ts +2 -0
- package/dist/__tests__/pipeline/looseBeforeHeadingLines.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/looseBeforeHeadingLines.test.js +73 -0
- package/dist/__tests__/pipeline/looseBeforeHeadingLines.test.js.map +1 -0
- package/dist/__tests__/pipeline/openerFloats.test.d.ts +2 -0
- package/dist/__tests__/pipeline/openerFloats.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/openerFloats.test.js +137 -0
- package/dist/__tests__/pipeline/openerFloats.test.js.map +1 -0
- package/dist/__tests__/pipeline/orderedNumberWidthItem.test.d.ts +2 -0
- package/dist/__tests__/pipeline/orderedNumberWidthItem.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/orderedNumberWidthItem.test.js +162 -0
- package/dist/__tests__/pipeline/orderedNumberWidthItem.test.js.map +1 -0
- package/dist/__tests__/pipeline/paragraphContainerTail.test.js +68 -8
- package/dist/__tests__/pipeline/paragraphContainerTail.test.js.map +1 -1
- package/dist/__tests__/pipeline/paragraphStyleFaces.test.js +1 -1
- package/dist/__tests__/pipeline/paragraphStyleFaces.test.js.map +1 -1
- package/dist/__tests__/pipeline/raggedLineAndRuntFix.test.d.ts +2 -0
- package/dist/__tests__/pipeline/raggedLineAndRuntFix.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/raggedLineAndRuntFix.test.js +151 -0
- package/dist/__tests__/pipeline/raggedLineAndRuntFix.test.js.map +1 -0
- package/dist/__tests__/pipeline/raggedOptimal.test.js +6 -6
- package/dist/__tests__/pipeline/raggedOptimal.test.js.map +1 -1
- package/dist/__tests__/pipeline/refLabelBreaks.test.d.ts +2 -0
- package/dist/__tests__/pipeline/refLabelBreaks.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/refLabelBreaks.test.js +324 -0
- package/dist/__tests__/pipeline/refLabelBreaks.test.js.map +1 -0
- package/dist/__tests__/pipeline/resourceTemplateStyles.test.d.ts +2 -0
- package/dist/__tests__/pipeline/resourceTemplateStyles.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/resourceTemplateStyles.test.js +145 -0
- package/dist/__tests__/pipeline/resourceTemplateStyles.test.js.map +1 -0
- package/dist/__tests__/pipeline/shortListSplit.test.d.ts +2 -0
- package/dist/__tests__/pipeline/shortListSplit.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/shortListSplit.test.js +181 -0
- package/dist/__tests__/pipeline/shortListSplit.test.js.map +1 -0
- package/dist/__tests__/pipeline/snapTailAtColumnFoot.test.d.ts +2 -0
- package/dist/__tests__/pipeline/snapTailAtColumnFoot.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/snapTailAtColumnFoot.test.js +133 -0
- package/dist/__tests__/pipeline/snapTailAtColumnFoot.test.js.map +1 -0
- package/dist/__tests__/pipeline/stretchAfterDisplays.test.d.ts +2 -0
- package/dist/__tests__/pipeline/stretchAfterDisplays.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/stretchAfterDisplays.test.js +51 -0
- package/dist/__tests__/pipeline/stretchAfterDisplays.test.js.map +1 -0
- package/dist/__tests__/pipeline/trailingCapFloatHead.test.js +26 -0
- package/dist/__tests__/pipeline/trailingCapFloatHead.test.js.map +1 -1
- package/dist/__tests__/pipeline/trailingStep.test.d.ts +2 -0
- package/dist/__tests__/pipeline/trailingStep.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/trailingStep.test.js +187 -0
- package/dist/__tests__/pipeline/trailingStep.test.js.map +1 -0
- package/dist/__tests__/pipeline/wideFloatStretch.test.d.ts +2 -0
- package/dist/__tests__/pipeline/wideFloatStretch.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/wideFloatStretch.test.js +84 -0
- package/dist/__tests__/pipeline/wideFloatStretch.test.js.map +1 -0
- package/dist/__tests__/scriptContext.test.d.ts +2 -0
- package/dist/__tests__/scriptContext.test.d.ts.map +1 -0
- package/dist/__tests__/scriptContext.test.js +919 -0
- package/dist/__tests__/scriptContext.test.js.map +1 -0
- package/dist/__tests__/softHyphenEdges.test.d.ts +2 -0
- package/dist/__tests__/softHyphenEdges.test.d.ts.map +1 -0
- package/dist/__tests__/softHyphenEdges.test.js +217 -0
- package/dist/__tests__/softHyphenEdges.test.js.map +1 -0
- package/dist/__tests__/spaceLimitRatio.test.d.ts +2 -0
- package/dist/__tests__/spaceLimitRatio.test.d.ts.map +1 -0
- package/dist/__tests__/spaceLimitRatio.test.js +226 -0
- package/dist/__tests__/spaceLimitRatio.test.js.map +1 -0
- package/dist/__tests__/trackedLigatures.test.js +365 -24
- package/dist/__tests__/trackedLigatures.test.js.map +1 -1
- package/dist/__tests__/verseLines.test.js +9 -7
- package/dist/__tests__/verseLines.test.js.map +1 -1
- package/dist/bundle/configVersion.d.ts +201 -6
- package/dist/bundle/configVersion.d.ts.map +1 -1
- package/dist/bundle/configVersion.js +440 -6
- package/dist/bundle/configVersion.js.map +1 -1
- package/dist/bundle/index.d.ts +8 -0
- package/dist/bundle/index.d.ts.map +1 -1
- package/dist/bundle/index.js +8 -0
- package/dist/bundle/index.js.map +1 -1
- package/dist/canvas-backend/blockRender.d.ts.map +1 -1
- package/dist/canvas-backend/blockRender.js +3 -2
- package/dist/canvas-backend/blockRender.js.map +1 -1
- package/dist/canvas-backend/chip.js +1 -1
- package/dist/canvas-backend/chip.js.map +1 -1
- package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
- package/dist/canvas-backend/headerFooter.js +17 -2
- package/dist/canvas-backend/headerFooter.js.map +1 -1
- package/dist/canvas-backend/runDirection.d.ts +10 -6
- package/dist/canvas-backend/runDirection.d.ts.map +1 -1
- package/dist/canvas-backend/runDirection.js +12 -7
- package/dist/canvas-backend/runDirection.js.map +1 -1
- package/dist/canvas-backend/scriptText.d.ts +11 -0
- package/dist/canvas-backend/scriptText.d.ts.map +1 -0
- package/dist/canvas-backend/scriptText.js +75 -0
- package/dist/canvas-backend/scriptText.js.map +1 -0
- package/dist/canvas-backend/segmentText.d.ts.map +1 -1
- package/dist/canvas-backend/segmentText.js +9 -1
- package/dist/canvas-backend/segmentText.js.map +1 -1
- package/dist/canvas-backend/trackedText.d.ts +35 -20
- package/dist/canvas-backend/trackedText.d.ts.map +1 -1
- package/dist/canvas-backend/trackedText.js +58 -22
- package/dist/canvas-backend/trackedText.js.map +1 -1
- package/dist/canvas-backend/verticalText.d.ts.map +1 -1
- package/dist/canvas-backend/verticalText.js +10 -2
- package/dist/canvas-backend/verticalText.js.map +1 -1
- package/dist/canvas-backend/wordRuns.d.ts +14 -5
- package/dist/canvas-backend/wordRuns.d.ts.map +1 -1
- package/dist/canvas-backend/wordRuns.js +20 -7
- package/dist/canvas-backend/wordRuns.js.map +1 -1
- package/dist/citations/names.d.ts +8 -0
- package/dist/citations/names.d.ts.map +1 -0
- package/dist/citations/names.js +25 -0
- package/dist/citations/names.js.map +1 -0
- package/dist/columnClip.d.ts +8 -1
- package/dist/columnClip.d.ts.map +1 -1
- package/dist/columnClip.js +32 -3
- package/dist/columnClip.js.map +1 -1
- package/dist/columnRule.d.ts +6 -3
- package/dist/columnRule.d.ts.map +1 -1
- package/dist/columnRule.js +6 -3
- package/dist/columnRule.js.map +1 -1
- package/dist/comics/layoutPage.d.ts.map +1 -1
- package/dist/comics/layoutPage.js +51 -22
- package/dist/comics/layoutPage.js.map +1 -1
- package/dist/comics/lettering/__tests__/bystanderFaces.test.d.ts +2 -0
- package/dist/comics/lettering/__tests__/bystanderFaces.test.d.ts.map +1 -0
- package/dist/comics/lettering/__tests__/bystanderFaces.test.js +204 -0
- package/dist/comics/lettering/__tests__/bystanderFaces.test.js.map +1 -0
- package/dist/comics/lettering/__tests__/shapeTextDash.test.d.ts +2 -0
- package/dist/comics/lettering/__tests__/shapeTextDash.test.d.ts.map +1 -0
- package/dist/comics/lettering/__tests__/shapeTextDash.test.js +173 -0
- package/dist/comics/lettering/__tests__/shapeTextDash.test.js.map +1 -0
- package/dist/comics/lettering/__tests__/strictPlacement.test.d.ts +2 -0
- package/dist/comics/lettering/__tests__/strictPlacement.test.d.ts.map +1 -0
- package/dist/comics/lettering/__tests__/strictPlacement.test.js +130 -0
- package/dist/comics/lettering/__tests__/strictPlacement.test.js.map +1 -0
- package/dist/comics/lettering/letter.js +21 -8
- package/dist/comics/lettering/letter.js.map +1 -1
- package/dist/comics/lettering/placement.d.ts.map +1 -1
- package/dist/comics/lettering/placement.js +12 -3
- package/dist/comics/lettering/placement.js.map +1 -1
- package/dist/comics/lettering/shape-text.d.ts +3 -0
- package/dist/comics/lettering/shape-text.d.ts.map +1 -1
- package/dist/comics/lettering/shape-text.js +71 -12
- package/dist/comics/lettering/shape-text.js.map +1 -1
- package/dist/comics/lettering/text.d.ts +5 -0
- package/dist/comics/lettering/text.d.ts.map +1 -1
- package/dist/comics/lettering/text.js +6 -1
- package/dist/comics/lettering/text.js.map +1 -1
- package/dist/comics/lettering/types.d.ts +12 -2
- package/dist/comics/lettering/types.d.ts.map +1 -1
- package/dist/comics/script.js +1 -1
- package/dist/comics/script.js.map +1 -1
- package/dist/comics/types.d.ts +7 -3
- package/dist/comics/types.d.ts.map +1 -1
- package/dist/configWarnings.d.ts.map +1 -1
- package/dist/configWarnings.js +33 -6
- package/dist/configWarnings.js.map +1 -1
- package/dist/contrast.d.ts +188 -0
- package/dist/contrast.d.ts.map +1 -0
- package/dist/contrast.js +583 -0
- package/dist/contrast.js.map +1 -0
- package/dist/defaults/bodyText.d.ts +31 -3
- package/dist/defaults/bodyText.d.ts.map +1 -1
- package/dist/defaults/bodyText.js +76 -8
- package/dist/defaults/bodyText.js.map +1 -1
- package/dist/defaults/citations.d.ts.map +1 -1
- package/dist/defaults/citations.js +4 -0
- package/dist/defaults/citations.js.map +1 -1
- package/dist/defaults/cjk.d.ts +11 -1
- package/dist/defaults/cjk.d.ts.map +1 -1
- package/dist/defaults/cjk.js +41 -3
- package/dist/defaults/cjk.js.map +1 -1
- package/dist/defaults/comics.d.ts.map +1 -1
- package/dist/defaults/comics.js +2 -0
- package/dist/defaults/comics.js.map +1 -1
- package/dist/defaults/contrast.d.ts +11 -0
- package/dist/defaults/contrast.d.ts.map +1 -0
- package/dist/defaults/contrast.js +65 -0
- package/dist/defaults/contrast.js.map +1 -0
- package/dist/defaults/crossRefs.d.ts +1 -1
- package/dist/defaults/crossRefs.d.ts.map +1 -1
- package/dist/defaults/crossRefs.js +6 -1
- package/dist/defaults/crossRefs.js.map +1 -1
- package/dist/defaults/footnotes.d.ts.map +1 -1
- package/dist/defaults/footnotes.js +5 -0
- package/dist/defaults/footnotes.js.map +1 -1
- package/dist/defaults/headings.d.ts +5 -1
- package/dist/defaults/headings.d.ts.map +1 -1
- package/dist/defaults/headings.js +41 -1
- package/dist/defaults/headings.js.map +1 -1
- package/dist/defaults/index.d.ts +3 -2
- package/dist/defaults/index.d.ts.map +1 -1
- package/dist/defaults/index.js +15 -4
- package/dist/defaults/index.js.map +1 -1
- package/dist/defaults/indexConfig.d.ts +1 -0
- package/dist/defaults/indexConfig.d.ts.map +1 -1
- package/dist/defaults/indexConfig.js +7 -1
- package/dist/defaults/indexConfig.js.map +1 -1
- package/dist/defaults/layout.d.ts.map +1 -1
- package/dist/defaults/layout.js +13 -1
- package/dist/defaults/layout.js.map +1 -1
- package/dist/defaults/orderedLists.js +1 -1
- package/dist/defaults/orderedLists.js.map +1 -1
- package/dist/defaults/paragraphStyles.d.ts.map +1 -1
- package/dist/defaults/paragraphStyles.js +5 -0
- package/dist/defaults/paragraphStyles.js.map +1 -1
- package/dist/defaults/shared.d.ts +4 -1
- package/dist/defaults/shared.d.ts.map +1 -1
- package/dist/defaults/shared.js +5 -0
- package/dist/defaults/shared.js.map +1 -1
- package/dist/design/cjkText.d.ts +7 -2
- package/dist/design/cjkText.d.ts.map +1 -1
- package/dist/design/cjkText.js +8 -2
- package/dist/design/cjkText.js.map +1 -1
- package/dist/design/layout.d.ts.map +1 -1
- package/dist/design/layout.js +85 -12
- package/dist/design/layout.js.map +1 -1
- package/dist/design/richText.d.ts.map +1 -1
- package/dist/design/richText.js +7 -3
- package/dist/design/richText.js.map +1 -1
- package/dist/fonts/usage.d.ts.map +1 -1
- package/dist/fonts/usage.js +89 -0
- package/dist/fonts/usage.js.map +1 -1
- package/dist/html-backend.d.ts.map +1 -1
- package/dist/html-backend.js +97 -27
- package/dist/html-backend.js.map +1 -1
- package/dist/hyphenate.d.ts +58 -1
- package/dist/hyphenate.d.ts.map +1 -1
- package/dist/hyphenate.js +228 -19
- package/dist/hyphenate.js.map +1 -1
- package/dist/hyphenationExceptions.d.ts +10 -0
- package/dist/hyphenationExceptions.d.ts.map +1 -0
- package/dist/hyphenationExceptions.js +29 -0
- package/dist/hyphenationExceptions.js.map +1 -0
- package/dist/index.d.ts +12 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/dist/knuthPlass/pretextAdapter.d.ts.map +1 -1
- package/dist/knuthPlass/pretextAdapter.js +4 -17
- package/dist/knuthPlass/pretextAdapter.js.map +1 -1
- package/dist/knuthPlass/richAdapter.d.ts +9 -0
- package/dist/knuthPlass/richAdapter.d.ts.map +1 -1
- package/dist/knuthPlass/richAdapter.js +15 -18
- package/dist/knuthPlass/richAdapter.js.map +1 -1
- package/dist/looseLines.d.ts +15 -4
- package/dist/looseLines.d.ts.map +1 -1
- package/dist/looseLines.js +17 -4
- package/dist/looseLines.js.map +1 -1
- package/dist/measure/cache.d.ts.map +1 -1
- package/dist/measure/cache.js +14 -4
- package/dist/measure/cache.js.map +1 -1
- package/dist/measure/canvas.d.ts +18 -0
- package/dist/measure/canvas.d.ts.map +1 -1
- package/dist/measure/canvas.js +104 -0
- package/dist/measure/canvas.js.map +1 -1
- package/dist/measure/cjkAnnotate.d.ts +11 -6
- package/dist/measure/cjkAnnotate.d.ts.map +1 -1
- package/dist/measure/cjkAnnotate.js +27 -11
- package/dist/measure/cjkAnnotate.js.map +1 -1
- package/dist/measure/cjkCompose.d.ts +6 -2
- package/dist/measure/cjkCompose.d.ts.map +1 -1
- package/dist/measure/cjkCompose.js +146 -30
- package/dist/measure/cjkCompose.js.map +1 -1
- package/dist/measure/cjkPunctuation.d.ts +17 -0
- package/dist/measure/cjkPunctuation.d.ts.map +1 -1
- package/dist/measure/cjkPunctuation.js +15 -1
- package/dist/measure/cjkPunctuation.js.map +1 -1
- package/dist/measure/font.d.ts +2 -1
- package/dist/measure/font.d.ts.map +1 -1
- package/dist/measure/font.js +4 -2
- package/dist/measure/font.js.map +1 -1
- package/dist/measure/hardBreaks.d.ts.map +1 -1
- package/dist/measure/hardBreaks.js +6 -2
- package/dist/measure/hardBreaks.js.map +1 -1
- package/dist/measure/kashida.d.ts.map +1 -1
- package/dist/measure/kashida.js +8 -11
- package/dist/measure/kashida.js.map +1 -1
- package/dist/measure/plain.d.ts +3 -0
- package/dist/measure/plain.d.ts.map +1 -1
- package/dist/measure/plain.js +70 -5
- package/dist/measure/plain.js.map +1 -1
- package/dist/measure/rich.d.ts +32 -0
- package/dist/measure/rich.d.ts.map +1 -1
- package/dist/measure/rich.js +227 -35
- package/dist/measure/rich.js.map +1 -1
- package/dist/measure/script.d.ts +180 -0
- package/dist/measure/script.d.ts.map +1 -0
- package/dist/measure/script.js +329 -0
- package/dist/measure/script.js.map +1 -0
- package/dist/measure/spaceRatios.d.ts +28 -0
- package/dist/measure/spaceRatios.d.ts.map +1 -0
- package/dist/measure/spaceRatios.js +48 -0
- package/dist/measure/spaceRatios.js.map +1 -0
- package/dist/measure/spaces.d.ts +10 -0
- package/dist/measure/spaces.d.ts.map +1 -1
- package/dist/measure/spaces.js +36 -0
- package/dist/measure/spaces.js.map +1 -1
- package/dist/measure/types.d.ts +9 -0
- package/dist/measure/types.d.ts.map +1 -1
- package/dist/measure/types.js.map +1 -1
- package/dist/numbering.d.ts +5 -0
- package/dist/numbering.d.ts.map +1 -1
- package/dist/numbering.js +5 -1
- package/dist/numbering.js.map +1 -1
- package/dist/parse/types.d.ts +13 -0
- package/dist/parse/types.d.ts.map +1 -1
- package/dist/pipeline/bandCaps.d.ts +35 -1
- package/dist/pipeline/bandCaps.d.ts.map +1 -1
- package/dist/pipeline/bandCaps.js +95 -3
- package/dist/pipeline/bandCaps.js.map +1 -1
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +754 -49
- package/dist/pipeline/build.js.map +1 -1
- package/dist/pipeline/buildHelpers.d.ts.map +1 -1
- package/dist/pipeline/buildHelpers.js +5 -1
- package/dist/pipeline/buildHelpers.js.map +1 -1
- package/dist/pipeline/buildMeasurement.d.ts +9 -0
- package/dist/pipeline/buildMeasurement.d.ts.map +1 -1
- package/dist/pipeline/buildMeasurement.js +3 -2
- package/dist/pipeline/buildMeasurement.js.map +1 -1
- package/dist/pipeline/calloutLayout.d.ts +10 -1
- package/dist/pipeline/calloutLayout.d.ts.map +1 -1
- package/dist/pipeline/calloutLayout.js +45 -9
- package/dist/pipeline/calloutLayout.js.map +1 -1
- package/dist/pipeline/columnBalancing.d.ts +44 -7
- package/dist/pipeline/columnBalancing.d.ts.map +1 -1
- package/dist/pipeline/columnBalancing.js +167 -40
- package/dist/pipeline/columnBalancing.js.map +1 -1
- package/dist/pipeline/config.d.ts +2 -2
- package/dist/pipeline/config.d.ts.map +1 -1
- package/dist/pipeline/config.js +18 -3
- package/dist/pipeline/config.js.map +1 -1
- package/dist/pipeline/contentWarnings.d.ts +6 -0
- package/dist/pipeline/contentWarnings.d.ts.map +1 -1
- package/dist/pipeline/contentWarnings.js +32 -0
- package/dist/pipeline/contentWarnings.js.map +1 -1
- package/dist/pipeline/crossRefs.d.ts +12 -1
- package/dist/pipeline/crossRefs.d.ts.map +1 -1
- package/dist/pipeline/crossRefs.js +22 -14
- package/dist/pipeline/crossRefs.js.map +1 -1
- package/dist/pipeline/flowColumns.d.ts +2 -1
- package/dist/pipeline/flowColumns.d.ts.map +1 -1
- package/dist/pipeline/flowColumns.js +12 -2
- package/dist/pipeline/flowColumns.js.map +1 -1
- package/dist/pipeline/footnotes.d.ts.map +1 -1
- package/dist/pipeline/footnotes.js +3 -0
- package/dist/pipeline/footnotes.js.map +1 -1
- package/dist/pipeline/indexDirective.d.ts.map +1 -1
- package/dist/pipeline/indexDirective.js +15 -0
- package/dist/pipeline/indexDirective.js.map +1 -1
- package/dist/pipeline/lists.d.ts +1 -1
- package/dist/pipeline/lists.d.ts.map +1 -1
- package/dist/pipeline/lists.js +9 -1
- package/dist/pipeline/lists.js.map +1 -1
- package/dist/pipeline/measureContentBlock.d.ts +18 -0
- package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
- package/dist/pipeline/measureContentBlock.js +13 -3
- package/dist/pipeline/measureContentBlock.js.map +1 -1
- package/dist/pipeline/paragraphContainers.d.ts +4 -1
- package/dist/pipeline/paragraphContainers.d.ts.map +1 -1
- package/dist/pipeline/paragraphContainers.js +2 -0
- package/dist/pipeline/paragraphContainers.js.map +1 -1
- package/dist/pipeline/placement.d.ts +15 -0
- package/dist/pipeline/placement.d.ts.map +1 -1
- package/dist/pipeline/placement.js +36 -4
- package/dist/pipeline/placement.js.map +1 -1
- package/dist/pipeline/raggedLines.d.ts +8 -6
- package/dist/pipeline/raggedLines.d.ts.map +1 -1
- package/dist/pipeline/raggedLines.js +13 -10
- package/dist/pipeline/raggedLines.js.map +1 -1
- package/dist/pipeline/resourceLayout.d.ts +4 -0
- package/dist/pipeline/resourceLayout.d.ts.map +1 -1
- package/dist/pipeline/resourceLayout.js +22 -7
- package/dist/pipeline/resourceLayout.js.map +1 -1
- package/dist/pipeline/resourceNumbering.d.ts +6 -3
- package/dist/pipeline/resourceNumbering.d.ts.map +1 -1
- package/dist/pipeline/resourceNumbering.js +36 -19
- package/dist/pipeline/resourceNumbering.js.map +1 -1
- package/dist/pipeline/toc.d.ts +0 -3
- package/dist/pipeline/toc.d.ts.map +1 -1
- package/dist/pipeline/toc.js +19 -2
- package/dist/pipeline/toc.js.map +1 -1
- package/dist/types.d.ts +411 -15
- package/dist/types.d.ts.map +1 -1
- package/dist/vdt.d.ts +90 -7
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { buildDocument } from '../../pipeline/build';
|
|
3
|
+
import { createMeasurementCache } from '../../measure';
|
|
4
|
+
import { formatWarning } from '../../pipeline/contentWarnings';
|
|
5
|
+
import { collectConfigWarnings } from '../../configWarnings';
|
|
6
|
+
import { resolveBodyTextConfig, stripBodyTextDefaults } from '../../defaults/bodyText';
|
|
7
|
+
// Deterministic text measurement stub (no DOM in the node test env).
|
|
8
|
+
class StubCtx {
|
|
9
|
+
font = '';
|
|
10
|
+
measureText(s) {
|
|
11
|
+
return { width: s.length * 7 };
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
globalThis.OffscreenCanvas = class {
|
|
15
|
+
getContext() {
|
|
16
|
+
return new StubCtx();
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
// A page of ten lines, one column: one-line fillers, then a list.
|
|
20
|
+
const mm = (value) => ({ value, unit: 'mm' });
|
|
21
|
+
const pt = (value) => ({ value, unit: 'pt' });
|
|
22
|
+
const LEAD = 13.2;
|
|
23
|
+
const config = (shortListSplit, extra = {}) => ({
|
|
24
|
+
page: {
|
|
25
|
+
dpi: 96,
|
|
26
|
+
width: mm(100),
|
|
27
|
+
height: { value: 20 + (10 * LEAD * 25.4) / 72, unit: 'mm' },
|
|
28
|
+
margins: { top: mm(10), bottom: mm(10), left: mm(15), right: mm(15) },
|
|
29
|
+
},
|
|
30
|
+
layout: { layoutType: 'single' },
|
|
31
|
+
bodyText: {
|
|
32
|
+
fontSize: pt(9.4), lineHeight: pt(LEAD), textAlign: 'left', firstLineIndent: pt(0),
|
|
33
|
+
...(shortListSplit ? { shortListSplit } : {}),
|
|
34
|
+
...extra,
|
|
35
|
+
},
|
|
36
|
+
unorderedLists: { marginTop: pt(0), marginBottom: pt(0) },
|
|
37
|
+
headings: {
|
|
38
|
+
levels: [{ level: 2, fontSize: pt(9.4), lineHeight: pt(LEAD), marginTop: pt(0), marginBottom: pt(0), breakBefore: { enabled: false } }],
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
const fillers = (n) => Array.from({ length: n }, (_, i) => `Filler line ${i + 1}.`);
|
|
42
|
+
const LIST = ['- item one', '- item two', '- item three'].join('\n');
|
|
43
|
+
const doc = (parts, cfg) => buildDocument({ markdown: parts.join('\n\n') }, cfg, createMeasurementCache());
|
|
44
|
+
const blockWith = (d, text) => d.blocks.find((b) => b.lines.some((l) => l.text.includes(text)));
|
|
45
|
+
const pagesOf = (d, ...texts) => texts.map((t) => blockWith(d, t).pageIndex);
|
|
46
|
+
const splits = (d) => (d.contentWarnings ?? []).filter((w) => w.kind === 'shortListSplit');
|
|
47
|
+
describe('bodyText.shortListSplit (#749)', () => {
|
|
48
|
+
it('is off by default: a list of three is cut 1 + 2 where the column ends, and nothing is reported', () => {
|
|
49
|
+
const d = doc([...fillers(9), LIST], config());
|
|
50
|
+
expect(pagesOf(d, 'item one', 'item two', 'item three')).toEqual([0, 1, 1]);
|
|
51
|
+
expect(splits(d)).toEqual([]);
|
|
52
|
+
// The explicit default lays out the same.
|
|
53
|
+
const allowed = doc([...fillers(9), LIST], config('allow'));
|
|
54
|
+
expect(pagesOf(allowed, 'item one', 'item two', 'item three')).toEqual([0, 1, 1]);
|
|
55
|
+
expect(splits(allowed)).toEqual([]);
|
|
56
|
+
});
|
|
57
|
+
it('warn: the same layout, and one warning for the list', () => {
|
|
58
|
+
const markdown = [...fillers(9), LIST].join('\n\n');
|
|
59
|
+
const d = doc([...fillers(9), LIST], config('warn'));
|
|
60
|
+
expect(pagesOf(d, 'item one', 'item two', 'item three')).toEqual([0, 1, 1]);
|
|
61
|
+
const found = splits(d);
|
|
62
|
+
expect(found).toHaveLength(1);
|
|
63
|
+
expect(found[0]).toMatchObject({ kind: 'shortListSplit', items: 3, pageIndex: 0 });
|
|
64
|
+
expect(markdown.slice(found[0].sourceStart, found[0].sourceEnd)).toBe(LIST);
|
|
65
|
+
expect(formatWarning(found[0])).toContain('A list of 3 items is cut between two columns');
|
|
66
|
+
});
|
|
67
|
+
it('warn: a list that fits its column is not reported', () => {
|
|
68
|
+
expect(splits(doc([...fillers(7), LIST], config('warn')))).toEqual([]);
|
|
69
|
+
});
|
|
70
|
+
it('avoid: the list opens the next column whole', () => {
|
|
71
|
+
for (const n of [8, 9]) {
|
|
72
|
+
const d = doc([...fillers(n), LIST], config('avoid'));
|
|
73
|
+
expect(pagesOf(d, 'item one', 'item two', 'item three'), `${n} fillers`).toEqual([1, 1, 1]);
|
|
74
|
+
expect(splits(d), `${n} fillers`).toEqual([]);
|
|
75
|
+
}
|
|
76
|
+
// One that fits stays where it is.
|
|
77
|
+
expect(pagesOf(doc([...fillers(7), LIST], config('avoid')), 'item one', 'item three')).toEqual([0, 0]);
|
|
78
|
+
});
|
|
79
|
+
it('avoid: the heading right above the list goes with it', () => {
|
|
80
|
+
const d = doc([...fillers(7), '## A heading', LIST], config('avoid'));
|
|
81
|
+
expect(pagesOf(d, 'A heading', 'item one', 'item two', 'item three')).toEqual([1, 1, 1, 1]);
|
|
82
|
+
expect(blockWith(d, 'Filler line 7').pageIndex).toBe(0);
|
|
83
|
+
});
|
|
84
|
+
it('avoid: the colon line that introduces the list goes with it', () => {
|
|
85
|
+
const d = doc([...fillers(7), 'Look for these signs:', LIST], config('avoid'));
|
|
86
|
+
expect(pagesOf(d, 'Look for these signs:', 'item one', 'item two', 'item three')).toEqual([1, 1, 1, 1]);
|
|
87
|
+
// With the colon rule off the list moves on alone.
|
|
88
|
+
const loose = doc([...fillers(7), 'Look for these signs:', LIST], config('avoid', { keepColonWithList: false }));
|
|
89
|
+
expect(pagesOf(loose, 'Look for these signs:', 'item one', 'item three')).toEqual([0, 1, 1]);
|
|
90
|
+
});
|
|
91
|
+
it('avoid: a list longer than shortListMaxItems is cut as any other', () => {
|
|
92
|
+
const four = `${LIST}\n- item four`;
|
|
93
|
+
const d = doc([...fillers(8), four], config('avoid'));
|
|
94
|
+
expect(pagesOf(d, 'item one', 'item two', 'item three', 'item four')).toEqual([0, 0, 1, 1]);
|
|
95
|
+
expect(splits(d)).toEqual([]);
|
|
96
|
+
// …and kept whole once the limit takes it in.
|
|
97
|
+
const kept = doc([...fillers(8), four], config('avoid', { shortListMaxItems: 4 }));
|
|
98
|
+
expect(pagesOf(kept, 'item one', 'item four')).toEqual([1, 1]);
|
|
99
|
+
});
|
|
100
|
+
it('avoid: nested items count, and stay with their list', () => {
|
|
101
|
+
const nested = ['- item one', ' - nested a', '- item two'].join('\n');
|
|
102
|
+
const d = doc([...fillers(9), nested], config('avoid'));
|
|
103
|
+
expect(pagesOf(d, 'item one', 'nested a', 'item two')).toEqual([1, 1, 1]);
|
|
104
|
+
});
|
|
105
|
+
it('avoid: a list taller than an empty column is cut, and reported', () => {
|
|
106
|
+
const long = (label) => `- ${label} ${Array.from({ length: 30 }, () => 'word').join(' ')}`;
|
|
107
|
+
const tall = [long('first'), long('second'), long('third')].join('\n');
|
|
108
|
+
const d = doc([...fillers(4), tall], config('avoid'));
|
|
109
|
+
// Non-vacuous: the three items take more than the ten lines of a page.
|
|
110
|
+
const lines = ['first', 'second', 'third'].reduce((n, t) => n + d.blocks.filter((b) => b.lines.some((l) => l.text.includes(t)) || false).length, 0);
|
|
111
|
+
expect(lines).toBeGreaterThan(0);
|
|
112
|
+
expect(blockWith(d, 'first').pageIndex).toBe(0);
|
|
113
|
+
expect(splits(d)).toHaveLength(1);
|
|
114
|
+
});
|
|
115
|
+
describe('beside a figure the text above it cites', () => {
|
|
116
|
+
// Two columns; the paragraph before the list cites a figure, which
|
|
117
|
+
// takes the foot of its column once that line is placed.
|
|
118
|
+
const figure = {
|
|
119
|
+
id: 'f1', typeId: 'figure', kind: 'bitmap', caption: 'Figure f1.', createdAt: 0, updatedAt: 0,
|
|
120
|
+
bitmap: { fileId: 'f1.png', format: 'png', width: 400, height: 200 },
|
|
121
|
+
};
|
|
122
|
+
const two = (shortListSplit) => ({
|
|
123
|
+
page: { width: pt(400), height: pt(400), margins: { top: pt(20), bottom: pt(20), left: pt(20), right: pt(20) } },
|
|
124
|
+
headings: { balancing: { enabled: false }, levels: [{ level: 1, breakBefore: { enabled: false } }] },
|
|
125
|
+
bodyText: { shortListSplit },
|
|
126
|
+
});
|
|
127
|
+
const para = (i) => `Paragraph ${i} carries enough words to take a few lines of the narrow column so the flow advances steadily.`;
|
|
128
|
+
const book = (n, lead, rule) => buildDocument({
|
|
129
|
+
markdown: [...Array.from({ length: n }, (_, i) => para(i)), lead, LIST, ...Array.from({ length: 6 }, (_, i) => para(50 + i))].join('\n\n'),
|
|
130
|
+
resources: [figure],
|
|
131
|
+
}, two(rule), createMeasurementCache());
|
|
132
|
+
const columnsOf = (d, ...texts) => texts.map((t) => { const b = blockWith(d, t); return `${b.pageIndex}:${b.columnIndex}`; });
|
|
133
|
+
const figureAt = (d) => {
|
|
134
|
+
const page = d.pages.find((p) => (p.floats ?? []).length > 0);
|
|
135
|
+
return `${page.index}:${page.floats[0].columnIndex}`;
|
|
136
|
+
};
|
|
137
|
+
const PLAIN = 'As shown in :ref{id="f1"}, look for these.';
|
|
138
|
+
const COLON = 'As shown in :ref{id="f1"}, look for these:';
|
|
139
|
+
it('the figure yields the foot of the column that holds the list whole', () => {
|
|
140
|
+
const cut = book(10, PLAIN, 'warn');
|
|
141
|
+
expect(columnsOf(cut, 'item one', 'item two', 'item three')).toEqual(['0:0', '0:1', '0:1']);
|
|
142
|
+
expect(figureAt(cut)).toBe('0:0');
|
|
143
|
+
expect(splits(cut)).toHaveLength(1);
|
|
144
|
+
const kept = book(10, PLAIN, 'avoid');
|
|
145
|
+
expect(columnsOf(kept, 'look for these', 'item one', 'item two', 'item three')).toEqual(['0:0', '0:0', '0:0', '0:0']);
|
|
146
|
+
expect(figureAt(kept)).toBe('0:1');
|
|
147
|
+
expect(splits(kept)).toEqual([]);
|
|
148
|
+
});
|
|
149
|
+
it('the colon line that cites the figure moves on with the list, and the figure follows', () => {
|
|
150
|
+
const cut = book(10, COLON, 'warn');
|
|
151
|
+
expect(columnsOf(cut, 'look for these', 'item one', 'item two')).toEqual(['0:0', '0:0', '0:1']);
|
|
152
|
+
expect(splits(cut)).toHaveLength(1);
|
|
153
|
+
const kept = book(10, COLON, 'avoid');
|
|
154
|
+
expect(columnsOf(kept, 'look for these', 'item one', 'item two', 'item three')).toEqual(['0:1', '0:1', '0:1', '0:1']);
|
|
155
|
+
expect(figureAt(kept)).toBe('0:1');
|
|
156
|
+
expect(splits(kept)).toEqual([]);
|
|
157
|
+
});
|
|
158
|
+
it('a figure the column cannot hold under the colon line takes nothing from the list', () => {
|
|
159
|
+
// The figure goes to the head of the next column either way: the
|
|
160
|
+
// list stays under its colon line, as without the rule.
|
|
161
|
+
for (const rule of ['warn', 'avoid']) {
|
|
162
|
+
const d = book(12, COLON, rule);
|
|
163
|
+
expect(columnsOf(d, 'look for these', 'item one', 'item three'), rule).toEqual(['0:0', '0:0', '0:0']);
|
|
164
|
+
expect(figureAt(d), rule).toBe('0:1');
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
it('resolves and strips its two settings', () => {
|
|
169
|
+
expect(resolveBodyTextConfig({}).shortListSplit).toBe('allow');
|
|
170
|
+
expect(resolveBodyTextConfig({}).shortListMaxItems).toBe(3);
|
|
171
|
+
expect(resolveBodyTextConfig({ shortListSplit: 'avoid', shortListMaxItems: 5 })).toMatchObject({ shortListSplit: 'avoid', shortListMaxItems: 5 });
|
|
172
|
+
// An unknown level and a count that is no whole number of items read as the defaults.
|
|
173
|
+
expect(resolveBodyTextConfig({ shortListSplit: 'never', shortListMaxItems: 0 })).toMatchObject({ shortListSplit: 'allow', shortListMaxItems: 3 });
|
|
174
|
+
expect(stripBodyTextDefaults({ shortListSplit: 'allow', shortListMaxItems: 3 })).toBeUndefined();
|
|
175
|
+
expect(stripBodyTextDefaults({ shortListSplit: 'warn', shortListMaxItems: 2 })).toEqual({ shortListSplit: 'warn', shortListMaxItems: 2 });
|
|
176
|
+
expect(collectConfigWarnings({ bodyText: { shortListSplit: 'never' } })).toContainEqual({
|
|
177
|
+
kind: 'unknownConfigValue', path: 'bodyText.shortListSplit', value: 'never', used: 'allow',
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
//# sourceMappingURL=shortListSplit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shortListSplit.test.js","sourceRoot":"","sources":["../../../src/__tests__/pipeline/shortListSplit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapTailAtColumnFoot.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/pipeline/snapTailAtColumnFoot.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { buildDocument } from '../../pipeline/build';
|
|
3
|
+
import { createMeasurementCache } from '../../measure';
|
|
4
|
+
// A block that snaps the flow to the grid under itself, set at the foot of a
|
|
5
|
+
// column whose foot is off the grid (notes reserved there) or whose last line
|
|
6
|
+
// it stands on with a bottom margin, ends at the column's foot (#716): its box
|
|
7
|
+
// does not reach into the notes, and the column's room never reads negative.
|
|
8
|
+
class StubCtx {
|
|
9
|
+
font = '';
|
|
10
|
+
measureText(s) {
|
|
11
|
+
return { width: s.length * 7 };
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
globalThis.OffscreenCanvas = class {
|
|
15
|
+
getContext() {
|
|
16
|
+
return new StubCtx();
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const pt = (value) => ({ value, unit: 'pt' });
|
|
20
|
+
/** 300 × 400 pt page at 72 dpi (1 pt = 1 px), 12 pt grid from y = 20, a
|
|
21
|
+
* 260 pt column: four eight-letter words to the line. */
|
|
22
|
+
const cfg = (extra = {}) => ({
|
|
23
|
+
page: { dpi: 72, width: pt(300), height: pt(400), margins: { top: pt(20), bottom: pt(20), left: pt(20), right: pt(20) } },
|
|
24
|
+
layout: { layoutType: 'single' },
|
|
25
|
+
bodyText: { fontSize: pt(10), lineHeight: pt(12), textAlign: 'left', hyphenation: { enabled: false }, firstLineIndent: pt(0) },
|
|
26
|
+
footnotes: { placement: 'column', fontSize: pt(8), lineHeight: pt(10.2), spaceBetween: pt(2.2) },
|
|
27
|
+
paragraphStyles: [{ id: 'colophon', fontSize: pt(7), lineHeight: pt(9.2), textAlign: 'left', firstLineIndent: pt(0), marginTop: pt(12) }],
|
|
28
|
+
header: { elements: [] },
|
|
29
|
+
footer: { elements: [] },
|
|
30
|
+
...extra,
|
|
31
|
+
});
|
|
32
|
+
const words = (n) => Array.from({ length: n }, () => 'abcdefgh').join(' ');
|
|
33
|
+
const build = (markdown, config) => buildDocument({ markdown }, config, createMeasurementCache());
|
|
34
|
+
const foot = (c) => c.bbox.y + c.bbox.height;
|
|
35
|
+
const boxFoot = (b) => b.bbox.y + b.bbox.height;
|
|
36
|
+
const textFoot = (b) => {
|
|
37
|
+
const last = b.lines[b.lines.length - 1];
|
|
38
|
+
return last.bbox.y + last.bbox.height;
|
|
39
|
+
};
|
|
40
|
+
/** Every block's box inside its column, and no column with negative room. */
|
|
41
|
+
function expectBoxesInsideColumns(doc) {
|
|
42
|
+
for (const page of doc.pages) {
|
|
43
|
+
for (const col of page.columns) {
|
|
44
|
+
expect(col.availableHeight).toBeGreaterThanOrEqual(-0.01);
|
|
45
|
+
for (const b of col.blocks)
|
|
46
|
+
expect(boxFoot(b)).toBeLessThanOrEqual(foot(col) + 0.01);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
describe('a snapped block at a column foot (#716)', () => {
|
|
51
|
+
const colophonDoc = (bodyLines) => `${words(bodyLines * 4 - 2)} note.[^a]\n\n[^a]: ${words(7)}\n\n:::paragraphs{style="colophon"}\n${words(9)}\n:::`;
|
|
52
|
+
it('keeps a container tail above the notes of its column for every body length', () => {
|
|
53
|
+
for (const bodyLines of [18, 19, 20, 21, 22, 23, 24]) {
|
|
54
|
+
const doc = build(colophonDoc(bodyLines), cfg());
|
|
55
|
+
expectBoxesInsideColumns(doc);
|
|
56
|
+
const area = doc.pages[0].footnoteAreas[0];
|
|
57
|
+
for (const b of doc.pages[0].columns[0].blocks)
|
|
58
|
+
expect(boxFoot(b)).toBeLessThanOrEqual(area.bbox.y + 0.01);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
it('ends the box at the foot when the next grid line lies under it, with the lines where they were', () => {
|
|
62
|
+
// 23 body lines: the snap (344) is above the foot (350.1) and stays.
|
|
63
|
+
const above = build(colophonDoc(23), cfg());
|
|
64
|
+
const colA = above.pages[0].columns[0];
|
|
65
|
+
const tailA = colA.blocks[colA.blocks.length - 1];
|
|
66
|
+
expect(textFoot(tailA)).toBeCloseTo(335.6, 1);
|
|
67
|
+
expect(boxFoot(tailA)).toBeCloseTo(344, 1);
|
|
68
|
+
expect(colA.availableHeight).toBeCloseTo(6.1, 1);
|
|
69
|
+
// 24 body lines: the text ends at 347.6, the next grid line is 356 and
|
|
70
|
+
// the column's foot 350.1.
|
|
71
|
+
const at = build(colophonDoc(24), cfg());
|
|
72
|
+
const colB = at.pages[0].columns[0];
|
|
73
|
+
const tailB = colB.blocks[colB.blocks.length - 1];
|
|
74
|
+
expect(at.pages).toHaveLength(1);
|
|
75
|
+
expect(tailB.lines).toHaveLength(3);
|
|
76
|
+
expect(tailB.bbox.y).toBeCloseTo(320, 1);
|
|
77
|
+
expect(textFoot(tailB)).toBeCloseTo(347.6, 1);
|
|
78
|
+
expect(boxFoot(tailB)).toBeCloseTo(foot(colB), 2);
|
|
79
|
+
expect(colB.availableHeight).toBeCloseTo(0, 2);
|
|
80
|
+
});
|
|
81
|
+
it('holds for the last item of a list with a bottom margin on the column\'s last lines', () => {
|
|
82
|
+
const config = cfg({ footnotes: {}, unorderedLists: { marginBottom: pt(14) } });
|
|
83
|
+
for (const bodyLines of [24, 25, 26, 27]) {
|
|
84
|
+
const doc = build(`${words(bodyLines * 4 - 2)}\n\n- ${words(3)}\n- ${words(3)}\n\n${words(30)}`, config);
|
|
85
|
+
expectBoxesInsideColumns(doc);
|
|
86
|
+
}
|
|
87
|
+
const doc = build(`${words(26 * 4 - 2)}\n\n- ${words(3)}\n- ${words(3)}\n\n${words(30)}`, config);
|
|
88
|
+
const col = doc.pages[0].columns[0];
|
|
89
|
+
const item = col.blocks[col.blocks.length - 1];
|
|
90
|
+
expect(item.type).toBe('listItem');
|
|
91
|
+
expect(textFoot(item)).toBeCloseTo(371, 1);
|
|
92
|
+
expect(boxFoot(item)).toBeCloseTo(380, 2);
|
|
93
|
+
// The text after the list opens the next page at its head.
|
|
94
|
+
expect(doc.pages[1].columns[0].blocks[0].bbox.y).toBeCloseTo(20, 2);
|
|
95
|
+
});
|
|
96
|
+
it('holds for a heading whose text opens the next column', () => {
|
|
97
|
+
const config = cfg({
|
|
98
|
+
footnotes: {},
|
|
99
|
+
headings: { keepWithNext: false, balancing: { enabled: false }, levels: [{ level: 2, marginBottom: pt(14) }] },
|
|
100
|
+
});
|
|
101
|
+
for (const bodyLines of [24, 25, 26, 27]) {
|
|
102
|
+
expectBoxesInsideColumns(build(`${words(bodyLines * 4 - 2)}\n\n## Head\n\n${words(30)}`, config));
|
|
103
|
+
}
|
|
104
|
+
const doc = build(`${words(26 * 4 - 2)}\n\n## Head\n\n${words(30)}`, config);
|
|
105
|
+
const col = doc.pages[0].columns[0];
|
|
106
|
+
const head = col.blocks[col.blocks.length - 1];
|
|
107
|
+
expect(head.type).toBe('heading');
|
|
108
|
+
expect(boxFoot(head)).toBeCloseTo(380, 2);
|
|
109
|
+
expect(col.availableHeight).toBeCloseTo(0, 2);
|
|
110
|
+
const next = doc.pages[1].columns[0].blocks[0];
|
|
111
|
+
expect(next.type).toBe('paragraph');
|
|
112
|
+
expect(next.bbox.y).toBeCloseTo(20, 2);
|
|
113
|
+
});
|
|
114
|
+
it('proposes the same level cut for a closing band with notes and a container tail at a column foot', () => {
|
|
115
|
+
const md = `${words(23 * 2 - 1)} note.[^a]\n\n[^a]: ${words(5)}\n\n:::paragraphs{style="colophon"}\n${words(5)}\n:::\n\n${words(11)}`;
|
|
116
|
+
const two = (trailing) => cfg({ layout: { layoutType: 'double' }, headings: { balancing: { enabled: true, trailing } } });
|
|
117
|
+
// Without the cut the tail stands at the foot of the column with notes.
|
|
118
|
+
const open = build(md, two(false));
|
|
119
|
+
expectBoxesInsideColumns(open);
|
|
120
|
+
const first = open.pages[0].columns[0];
|
|
121
|
+
expect(boxFoot(first.blocks[first.blocks.length - 1])).toBeCloseTo(foot(first), 2);
|
|
122
|
+
// With it, both columns are cut on the 17th line, as before.
|
|
123
|
+
const level = build(md, two(true));
|
|
124
|
+
expect(level.pages).toHaveLength(1);
|
|
125
|
+
for (const col of level.pages[0].columns) {
|
|
126
|
+
expect(col.trailingCap).toBe(true);
|
|
127
|
+
expect(foot(col)).toBeCloseTo(20 + 17 * 12, 2);
|
|
128
|
+
}
|
|
129
|
+
expect(level.pages[0].columns[0].blocks.map((b) => b.lines.length)).toEqual([17]);
|
|
130
|
+
expect(level.pages[0].columns[1].blocks.map((b) => b.lines.length)).toEqual([6, 3, 6]);
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
//# sourceMappingURL=snapTailAtColumnFoot.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapTailAtColumnFoot.test.js","sourceRoot":"","sources":["../../../src/__tests__/pipeline/snapTailAtColumnFoot.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stretchAfterDisplays.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/pipeline/stretchAfterDisplays.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { buildDocument } from '../../pipeline/build';
|
|
3
|
+
import { createMeasurementCache } from '../../measure';
|
|
4
|
+
// `headings.balancing.stretchAfterDisplays: false` (#710): column balancing
|
|
5
|
+
// adds no grid line under a display formula or a callout box.
|
|
6
|
+
class StubCtx {
|
|
7
|
+
font = '';
|
|
8
|
+
measureText(s) {
|
|
9
|
+
return { width: s.length * 7 };
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
globalThis.OffscreenCanvas = class {
|
|
13
|
+
getContext() {
|
|
14
|
+
return new StubCtx();
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const words = 'the lake froze late that year and the ferry kept running until the first week of december when the ice closed over the middle'.split(' ');
|
|
18
|
+
const para = (n, seed) => `${Array.from({ length: n }, (_, i) => words[(i * 7 + seed) % words.length]).join(' ')}.`;
|
|
19
|
+
/** Paragraphs and short boxes over several two-column pages: no heading and
|
|
20
|
+
* no list, so a short column's first whole-line lever is the one under a
|
|
21
|
+
* box. */
|
|
22
|
+
const markdown = () => {
|
|
23
|
+
const parts = [];
|
|
24
|
+
for (let i = 0; i < 40; i++) {
|
|
25
|
+
parts.push(para(60 + (i * 13) % 31, i));
|
|
26
|
+
if (i % 3 === 1)
|
|
27
|
+
parts.push(`:::callout{title="Note ${i}"}\n${para(18 + (i % 5) * 4, i + 3)}\n:::`);
|
|
28
|
+
}
|
|
29
|
+
return parts.join('\n\n');
|
|
30
|
+
};
|
|
31
|
+
const build = (balancing) => buildDocument({ markdown: markdown() }, {
|
|
32
|
+
page: { sizePreset: '17x24' },
|
|
33
|
+
layout: { layoutType: 'double' },
|
|
34
|
+
bodyText: { orphanMinLines: 3, widowMinLines: 3 },
|
|
35
|
+
headings: { balancing },
|
|
36
|
+
}, createMeasurementCache());
|
|
37
|
+
const levered = (doc, lever) => doc.pages.flatMap((p) => p.columns.flatMap((c) => c.blocks)).filter((b) => b.balancing?.levers.includes(lever));
|
|
38
|
+
describe('headings.balancing.stretchAfterDisplays (#710)', () => {
|
|
39
|
+
it('adds a line under a box by default and none when switched off', () => {
|
|
40
|
+
const on = build({ looseParagraphs: false });
|
|
41
|
+
expect(levered(on, 'afterDisplay').length).toBeGreaterThan(0);
|
|
42
|
+
// Unset and `true` are the same layout.
|
|
43
|
+
expect(JSON.stringify(build({ looseParagraphs: false, stretchAfterDisplays: true }).pages)).toBe(JSON.stringify(on.pages));
|
|
44
|
+
const off = build({ looseParagraphs: false, stretchAfterDisplays: false });
|
|
45
|
+
expect(levered(off, 'afterDisplay')).toEqual([]);
|
|
46
|
+
// The other levers still run.
|
|
47
|
+
const loose = build({ stretchAfterDisplays: false });
|
|
48
|
+
expect(levered(loose, 'afterDisplay')).toEqual([]);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=stretchAfterDisplays.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stretchAfterDisplays.test.js","sourceRoot":"","sources":["../../../src/__tests__/pipeline/stretchAfterDisplays.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,6 +64,32 @@ describe('a closing band cut under a float that heads its empty columns (#681)',
|
|
|
64
64
|
expect(foot.bbox.y).toBeGreaterThanOrEqual(bottom(text[0]) - 0.5);
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
|
+
it('closes the band at its text when the story ends level with the picture\'s band (#713)', () => {
|
|
68
|
+
// 60 words: the first column ends one line under the picture's band,
|
|
69
|
+
// level with the columns under the picture, so no cap is proposed. The
|
|
70
|
+
// band is closed where it stands: before, its columns kept their boxes
|
|
71
|
+
// down to the page's foot, through the picture hugged under the text.
|
|
72
|
+
const doc = story(true, 60);
|
|
73
|
+
const page = doc.pages[0];
|
|
74
|
+
const head = page.floats.find((f) => f.resourceBlock?.resource.id === 'head');
|
|
75
|
+
const foot = page.floats.find((f) => f.resourceBlock?.resource.id === 'foot');
|
|
76
|
+
const text = page.columns.filter((c) => c.kind !== 'span');
|
|
77
|
+
const used = text[0].bbox.y + text[0].bbox.height - text[0].availableHeight;
|
|
78
|
+
expect(text[0].trailingCap ?? false).toBe(false);
|
|
79
|
+
for (const c of text)
|
|
80
|
+
expect(bottom(c)).toBeCloseTo(used, 1);
|
|
81
|
+
expect(used - (head.bbox.y + head.bbox.height)).toBeLessThanOrEqual(3 * doc.baselineGrid);
|
|
82
|
+
for (const c of text.slice(1)) {
|
|
83
|
+
expect(c.blocks).toHaveLength(0);
|
|
84
|
+
expect(c.bbox.height).toBeLessThanOrEqual(doc.baselineGrid + 0.5);
|
|
85
|
+
}
|
|
86
|
+
// The picture at the foot is where it was: hugged one line under the text.
|
|
87
|
+
expect(foot.bbox.y).toBeCloseTo(743.1, 0);
|
|
88
|
+
expect(foot.bbox.y).toBeGreaterThanOrEqual(bottom(text[0]) - 0.5);
|
|
89
|
+
// A story two words longer takes a cap, as before.
|
|
90
|
+
const longer = story(true, 62).pages[0].columns.filter((c) => c.kind !== 'span');
|
|
91
|
+
expect(longer[0].trailingCap).toBe(true);
|
|
92
|
+
});
|
|
67
93
|
it('keeps the text room between two float bands in a column no cap cut', () => {
|
|
68
94
|
// A long story: the first page flows on, and the picture at the head of
|
|
69
95
|
// a column with the other at its foot leaves at least three lines.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trailingCapFloatHead.test.js","sourceRoot":"","sources":["../../../src/__tests__/pipeline/trailingCapFloatHead.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trailingCapFloatHead.test.js","sourceRoot":"","sources":["../../../src/__tests__/pipeline/trailingCapFloatHead.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trailingStep.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/pipeline/trailingStep.test.ts"],"names":[],"mappings":""}
|