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
package/dist/contrast.js
ADDED
|
@@ -0,0 +1,583 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contrast check (#748): the text of a laid-out document against the
|
|
3
|
+
* ground it is set on, found on the VDT so it runs as soon as a page is
|
|
4
|
+
* laid out. A tagged PDF says what the text is; this says whether it can
|
|
5
|
+
* be read.
|
|
6
|
+
*
|
|
7
|
+
* Two renditions, since the same pages go to a screen and to a press:
|
|
8
|
+
*
|
|
9
|
+
* - `screen`: the WCAG 2 contrast ratio of the sRGB colours, as the
|
|
10
|
+
* canvas, the HTML and an RGB PDF show them.
|
|
11
|
+
* - `print`: the same ratio worked out from the luminance each colour has
|
|
12
|
+
* on paper — its separation on the job's output profile (the values of
|
|
13
|
+
* a colour authored in CMYK as they are), read back through the profile
|
|
14
|
+
* and taken relative to the bare paper, which is the white of a printed
|
|
15
|
+
* page as the display's white is the white of a screen. Ink is never a
|
|
16
|
+
* perfect black, least of all on uncoated stock: black on newsprint is
|
|
17
|
+
* about 5:1 where a screen gives 21:1, and the number says so. Needs
|
|
18
|
+
* the profile's transform (`options.transform`); without it only the
|
|
19
|
+
* reversed text is checked.
|
|
20
|
+
*
|
|
21
|
+
* The threshold follows the text's size and weight (large text: 18 pt, or
|
|
22
|
+
* 14 pt bold) and the level asked (`contrast.level`, AA or AAA).
|
|
23
|
+
*
|
|
24
|
+
* In print, text knocked out of an inked ground is reported on its own
|
|
25
|
+
* (`reversedText`) when it is small, italic or light: its strokes fill in
|
|
26
|
+
* on press whatever the ratio says.
|
|
27
|
+
*
|
|
28
|
+
* What it reads: the lines of every block (inline bold, italic, reference
|
|
29
|
+
* and chip colours included), list markers, drop caps, captions, notes and
|
|
30
|
+
* table cells, and the text of design slots (running heads, openers,
|
|
31
|
+
* heading designs, box titles). The ground is the topmost fill under the
|
|
32
|
+
* text: a design box, a callout, a caption bar, a table cell, a chip, else
|
|
33
|
+
* the page's paper colour; a translucent colour is blended with what is
|
|
34
|
+
* under it. Text over a picture is skipped (its ground is not a colour),
|
|
35
|
+
* as are comic lettering, ruby and formulas.
|
|
36
|
+
*/
|
|
37
|
+
import { flowRectToPage, tableCellFill } from './vdt';
|
|
38
|
+
import { labToXyz } from './color/transform';
|
|
39
|
+
import { authoredCmykColors } from './color/authored';
|
|
40
|
+
import { resolveContrastConfig } from './defaults/contrast';
|
|
41
|
+
import { parseFontString } from './measure/fontString';
|
|
42
|
+
import { dimensionToPx } from './units';
|
|
43
|
+
function parseColor(color) {
|
|
44
|
+
if (!color)
|
|
45
|
+
return undefined;
|
|
46
|
+
const c = color.trim().toLowerCase();
|
|
47
|
+
if (c === 'transparent')
|
|
48
|
+
return { r: 255, g: 255, b: 255, a: 0 };
|
|
49
|
+
let m = /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/.exec(c);
|
|
50
|
+
if (m)
|
|
51
|
+
return { r: parseInt(m[1], 16), g: parseInt(m[2], 16), b: parseInt(m[3], 16), a: m[4] ? parseInt(m[4], 16) / 255 : 1 };
|
|
52
|
+
m = /^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/.exec(c);
|
|
53
|
+
if (m)
|
|
54
|
+
return { r: parseInt(m[1] + m[1], 16), g: parseInt(m[2] + m[2], 16), b: parseInt(m[3] + m[3], 16), a: m[4] ? parseInt(m[4] + m[4], 16) / 255 : 1 };
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
const hexByte = (v) => Math.max(0, Math.min(255, Math.round(v))).toString(16).padStart(2, '0');
|
|
58
|
+
const toHex = (c) => `#${hexByte(c.r)}${hexByte(c.g)}${hexByte(c.b)}`;
|
|
59
|
+
function blend(top, under) {
|
|
60
|
+
if (top.a >= 1)
|
|
61
|
+
return top;
|
|
62
|
+
return { r: top.r * top.a + under.r * (1 - top.a), g: top.g * top.a + under.g * (1 - top.a), b: top.b * top.a + under.b * (1 - top.a) };
|
|
63
|
+
}
|
|
64
|
+
/** `top` painted over `under`, as `#rrggbb`: a translucent colour
|
|
65
|
+
* (`#rrggbbaa`) blended, an opaque one as it is. `under` reads as opaque.
|
|
66
|
+
* A colour that is no hex gives `under`. */
|
|
67
|
+
export function blendColors(top, under) {
|
|
68
|
+
const u = parseColor(under) ?? { r: 255, g: 255, b: 255, a: 1 };
|
|
69
|
+
const t = parseColor(top);
|
|
70
|
+
return toHex(t ? blend(t, u) : u);
|
|
71
|
+
}
|
|
72
|
+
const channel = (v) => {
|
|
73
|
+
const s = v / 255;
|
|
74
|
+
return s <= 0.04045 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;
|
|
75
|
+
};
|
|
76
|
+
/** The relative luminance of an sRGB colour (WCAG 2), 0 for black to 1 for
|
|
77
|
+
* white. Alpha is ignored; a colour that is no hex reads as black. */
|
|
78
|
+
export function relativeLuminance(color) {
|
|
79
|
+
const c = parseColor(color);
|
|
80
|
+
if (!c)
|
|
81
|
+
return 0;
|
|
82
|
+
return 0.2126 * channel(c.r) + 0.7152 * channel(c.g) + 0.0722 * channel(c.b);
|
|
83
|
+
}
|
|
84
|
+
const ratioOf = (l1, l2) => (Math.max(l1, l2) + 0.05) / (Math.min(l1, l2) + 0.05);
|
|
85
|
+
/** The WCAG 2 contrast ratio of two sRGB colours, 1 to 21. */
|
|
86
|
+
export function contrastRatio(a, b) {
|
|
87
|
+
return ratioOf(relativeLuminance(a), relativeLuminance(b));
|
|
88
|
+
}
|
|
89
|
+
/** Whether text counts as large (WCAG 2): 18 pt, or 14 pt at a weight of
|
|
90
|
+
* 700 and over. */
|
|
91
|
+
export function isLargeText(sizePt, weight = 400) {
|
|
92
|
+
return sizePt >= 18 - 1e-6 || (sizePt >= 14 - 1e-6 && weight >= 700);
|
|
93
|
+
}
|
|
94
|
+
/** The ratio a level asks: AA 4.5:1 (3:1 for large text), AAA 7:1
|
|
95
|
+
* (4.5:1). */
|
|
96
|
+
export function contrastThreshold(level, large) {
|
|
97
|
+
if (level === 'AAA')
|
|
98
|
+
return large ? 4.5 : 7;
|
|
99
|
+
return large ? 3 : 4.5;
|
|
100
|
+
}
|
|
101
|
+
/** The process values a colour prints with, percent: its authored CMYK,
|
|
102
|
+
* else its separation on the output profile. */
|
|
103
|
+
export function printSeparation(color, context) {
|
|
104
|
+
const c = parseColor(color) ?? { r: 0, g: 0, b: 0, a: 1 };
|
|
105
|
+
const exact = context.authored?.get(toHex(c));
|
|
106
|
+
if (exact)
|
|
107
|
+
return exact;
|
|
108
|
+
const k = context.transform.fromRgb(c.r / 255, c.g / 255, c.b / 255);
|
|
109
|
+
return { c: k.c * 100, m: k.m * 100, y: k.y * 100, k: k.k * 100 };
|
|
110
|
+
}
|
|
111
|
+
/** The luminance a colour has printed, relative to the bare paper: its
|
|
112
|
+
* separation read back through the profile (media-relative), 0 to 1.
|
|
113
|
+
* Paper is 1, as a display's white is in the screen measure; solid black
|
|
114
|
+
* is about 0.02 on coated stock and 0.1 to 0.17 on newsprint. */
|
|
115
|
+
export function printLuminance(color, context) {
|
|
116
|
+
const s = printSeparation(color, context);
|
|
117
|
+
const lab = context.transform.toLab({ c: s.c / 100, m: s.m / 100, y: s.y / 100, k: s.k / 100 });
|
|
118
|
+
return Math.max(0, Math.min(1, labToXyz(lab).Y));
|
|
119
|
+
}
|
|
120
|
+
/** The contrast ratio of two colours on paper: the WCAG formula over
|
|
121
|
+
* their printed luminances. */
|
|
122
|
+
export function printContrastRatio(a, b, context) {
|
|
123
|
+
return ratioOf(printLuminance(a, context), printLuminance(b, context));
|
|
124
|
+
}
|
|
125
|
+
/** The renditions a document is checked in under `contrast.mode`: with
|
|
126
|
+
* `'auto'`, the screen always and print for a book set up for print (a
|
|
127
|
+
* PDF/X standard, a CMYK PDF, or crop marks). */
|
|
128
|
+
export function contrastMedia(config, contrast = config.contrast ?? resolveContrastConfig()) {
|
|
129
|
+
if (contrast.mode === 'screen')
|
|
130
|
+
return ['screen'];
|
|
131
|
+
if (contrast.mode === 'print')
|
|
132
|
+
return ['print'];
|
|
133
|
+
if (contrast.mode === 'both')
|
|
134
|
+
return ['screen', 'print'];
|
|
135
|
+
const pdf = config.pdfGeneration;
|
|
136
|
+
const forPrint = (config.print !== undefined && config.print.standard !== 'none')
|
|
137
|
+
|| (!!pdf?.forceColorSpace && pdf.colorSpace === 'cmyk')
|
|
138
|
+
|| config.page.cutLines.enabled;
|
|
139
|
+
return forPrint ? ['screen', 'print'] : ['screen'];
|
|
140
|
+
}
|
|
141
|
+
// ---------------------------------------------------------------------------
|
|
142
|
+
// The walk
|
|
143
|
+
// ---------------------------------------------------------------------------
|
|
144
|
+
const EPS = 0.5;
|
|
145
|
+
function fontSizePx(fontString) {
|
|
146
|
+
const m = fontString ? /(\d*\.?\d+)px/.exec(fontString) : null;
|
|
147
|
+
return m ? Number(m[1]) : undefined;
|
|
148
|
+
}
|
|
149
|
+
const normal = (color) => color.trim().toLowerCase();
|
|
150
|
+
/**
|
|
151
|
+
* Every text and ground combination `doc` sets, with its ratio on screen
|
|
152
|
+
* and, when `options.transform` is given, on paper — passing or not, one
|
|
153
|
+
* entry per colours, size, weight and slant. Runs whatever
|
|
154
|
+
* `contrast.enabled` says: a host shows these beside its colour fields.
|
|
155
|
+
*/
|
|
156
|
+
export function contrastPairs(doc, options = {}) {
|
|
157
|
+
const contrast = options.contrast ?? doc.config.contrast ?? resolveContrastConfig();
|
|
158
|
+
const dpi = doc.config.page.dpi;
|
|
159
|
+
const pxToPt = (px) => (px / dpi) * 72;
|
|
160
|
+
const offset = doc.pageIndexOffset ?? 0;
|
|
161
|
+
const printContext = options.transform
|
|
162
|
+
? { transform: options.transform, authored: authoredCmykColors(doc.config) }
|
|
163
|
+
: undefined;
|
|
164
|
+
const authored = printContext?.authored ?? authoredCmykColors(doc.config);
|
|
165
|
+
const reversedCfg = contrast.reversedText;
|
|
166
|
+
const minPt = pxToPt(dimensionToPx(reversedCfg.minSize, dpi));
|
|
167
|
+
const minFinePt = pxToPt(dimensionToPx(reversedCfg.minFineSize, dpi));
|
|
168
|
+
const pairs = new Map();
|
|
169
|
+
const printLum = new Map();
|
|
170
|
+
const lumOnPaper = (hex) => {
|
|
171
|
+
let v = printLum.get(hex);
|
|
172
|
+
if (v === undefined)
|
|
173
|
+
printLum.set(hex, (v = printLuminance(hex, printContext)));
|
|
174
|
+
return v;
|
|
175
|
+
};
|
|
176
|
+
/** Inks of a colour: exact with the transform or an authored CMYK, else
|
|
177
|
+
* one for a neutral and three for any other colour. */
|
|
178
|
+
const inksOf = (hex) => {
|
|
179
|
+
const sep = authored.get(hex) ?? (printContext ? printSeparation(hex, printContext) : undefined);
|
|
180
|
+
if (sep)
|
|
181
|
+
return [sep.c, sep.m, sep.y, sep.k].filter((v) => v > EPS).length;
|
|
182
|
+
if (hex === '#ffffff')
|
|
183
|
+
return 0;
|
|
184
|
+
return hex.slice(1, 3) === hex.slice(3, 5) && hex.slice(3, 5) === hex.slice(5, 7) ? 1 : 3;
|
|
185
|
+
};
|
|
186
|
+
for (const page of doc.pages) {
|
|
187
|
+
const pageIndex = page.index + offset;
|
|
188
|
+
const sheet = (rect, inFlow) => (inFlow ? flowRectToPage(page, rect) : rect);
|
|
189
|
+
const paperRaw = page.background ?? doc.config.page.backgroundColor.hex;
|
|
190
|
+
const fills = [{
|
|
191
|
+
rect: { x: -Infinity, y: -Infinity, width: Infinity, height: Infinity },
|
|
192
|
+
color: parseColor(paperRaw) ?? { r: 255, g: 255, b: 255, a: 1 },
|
|
193
|
+
raw: normal(paperRaw),
|
|
194
|
+
}];
|
|
195
|
+
const fill = (rect, color) => {
|
|
196
|
+
const c = parseColor(color);
|
|
197
|
+
if (c && c.a > 0)
|
|
198
|
+
fills.push({ rect, color: c, raw: normal(color) });
|
|
199
|
+
};
|
|
200
|
+
const picture = (rect) => fills.push({ rect });
|
|
201
|
+
/** The ground at a point of the sheet: the fills there from the top
|
|
202
|
+
* one down to the first opaque one, blended over white. Undefined
|
|
203
|
+
* over a picture. */
|
|
204
|
+
const groundAt = (x, y) => {
|
|
205
|
+
const stack = [];
|
|
206
|
+
for (let i = fills.length - 1; i >= 0; i--) {
|
|
207
|
+
const f = fills[i];
|
|
208
|
+
const r = f.rect;
|
|
209
|
+
if (i > 0 && (x < r.x || y < r.y || x > r.x + r.width || y > r.y + r.height))
|
|
210
|
+
continue;
|
|
211
|
+
if (!f.color)
|
|
212
|
+
return undefined;
|
|
213
|
+
if (f.color.a <= 0)
|
|
214
|
+
continue;
|
|
215
|
+
stack.push(f);
|
|
216
|
+
if (f.color.a >= 1)
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
let under = { r: 255, g: 255, b: 255 };
|
|
220
|
+
for (let i = stack.length - 1; i >= 0; i--)
|
|
221
|
+
under = blend(stack[i].color, under);
|
|
222
|
+
return { hex: toHex(under), raw: stack[0]?.raw ?? '#ffffff' };
|
|
223
|
+
};
|
|
224
|
+
const groundIn = (rect) => groundAt(rect.x + rect.width / 2, rect.y + rect.height / 2);
|
|
225
|
+
/** A fill of the element's own over the ground beneath it. */
|
|
226
|
+
const over = (color, beneath) => {
|
|
227
|
+
const c = parseColor(color);
|
|
228
|
+
if (!c || c.a <= 0)
|
|
229
|
+
return beneath;
|
|
230
|
+
if (c.a >= 1)
|
|
231
|
+
return { hex: toHex(c), raw: normal(color) };
|
|
232
|
+
if (!beneath)
|
|
233
|
+
return undefined;
|
|
234
|
+
return { hex: blendColors(color, beneath.hex), raw: normal(color) };
|
|
235
|
+
};
|
|
236
|
+
const note = (color, font, text, ground, rect, role, src, sizeFont = font) => {
|
|
237
|
+
if (!ground)
|
|
238
|
+
return;
|
|
239
|
+
const c = parseColor(color);
|
|
240
|
+
const sizePx = fontSizePx(sizeFont);
|
|
241
|
+
if (!c || c.a <= 0 || sizePx === undefined || sizePx <= 0)
|
|
242
|
+
return;
|
|
243
|
+
const face = font ? parseFontString(font) : null;
|
|
244
|
+
const weight = face?.weight ?? 400;
|
|
245
|
+
const italic = face?.style === 'italic';
|
|
246
|
+
const hex = toHex(blend(c, parseColor(ground.hex)));
|
|
247
|
+
const sizePt = Math.round(pxToPt(sizePx) * 10) / 10;
|
|
248
|
+
const key = `${hex}|${ground.hex}|${normal(color)}|${ground.raw}|${sizePt}|${weight}|${italic ? 'i' : 'n'}`;
|
|
249
|
+
const seen = pairs.get(key);
|
|
250
|
+
if (seen) {
|
|
251
|
+
seen.count++;
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
const large = isLargeText(sizePt, weight);
|
|
255
|
+
const pair = {
|
|
256
|
+
color: hex,
|
|
257
|
+
background: ground.hex,
|
|
258
|
+
textColor: normal(color),
|
|
259
|
+
groundColor: ground.raw,
|
|
260
|
+
sizePt,
|
|
261
|
+
weight,
|
|
262
|
+
italic,
|
|
263
|
+
large,
|
|
264
|
+
role,
|
|
265
|
+
count: 1,
|
|
266
|
+
pageIndex,
|
|
267
|
+
rect,
|
|
268
|
+
...(src.start !== undefined ? { sourceStart: src.start, ...(src.end !== undefined ? { sourceEnd: src.end } : {}) } : {}),
|
|
269
|
+
text: text.trim().slice(0, 40),
|
|
270
|
+
required: contrastThreshold(contrast.level, large),
|
|
271
|
+
screen: contrastRatio(hex, ground.hex),
|
|
272
|
+
};
|
|
273
|
+
if (printContext)
|
|
274
|
+
pair.print = ratioOf(lumOnPaper(hex), lumOnPaper(ground.hex));
|
|
275
|
+
// Knocked out of an inked ground: lighter than it, and the ground
|
|
276
|
+
// is more than bare paper.
|
|
277
|
+
const lighter = printContext ? lumOnPaper(hex) > lumOnPaper(ground.hex) : relativeLuminance(hex) > relativeLuminance(ground.hex);
|
|
278
|
+
const inks = lighter ? inksOf(ground.hex) : 0;
|
|
279
|
+
if (inks > 0) {
|
|
280
|
+
const reasons = [];
|
|
281
|
+
if (sizePt < minPt - 1e-6)
|
|
282
|
+
reasons.push('small');
|
|
283
|
+
if (sizePt < minFinePt - 1e-6) {
|
|
284
|
+
if (italic)
|
|
285
|
+
reasons.push('italic');
|
|
286
|
+
if (weight <= reversedCfg.lightWeight)
|
|
287
|
+
reasons.push('light');
|
|
288
|
+
}
|
|
289
|
+
if (reasons.length > 0) {
|
|
290
|
+
const fine = reasons.includes('italic') || reasons.includes('light');
|
|
291
|
+
pair.reversed = { reasons, minimumPt: Math.round((fine ? minFinePt : minPt) * 10) / 10, inks };
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
pairs.set(key, pair);
|
|
295
|
+
};
|
|
296
|
+
/** The runs of laid-out lines, each in the colour and face the
|
|
297
|
+
* renderers paint it with. */
|
|
298
|
+
const noteLines = (lines, style, ground, rectOf, role, src) => {
|
|
299
|
+
for (const line of lines) {
|
|
300
|
+
const segs = line.segments ?? [];
|
|
301
|
+
const lineSrc = line.sourceStart !== undefined ? { start: line.sourceStart, end: line.sourceEnd } : src;
|
|
302
|
+
if (segs.length === 0) {
|
|
303
|
+
if (line.text.trim())
|
|
304
|
+
note(style.color, style.font, line.text, ground, rectOf(line), role, lineSrc);
|
|
305
|
+
continue;
|
|
306
|
+
}
|
|
307
|
+
const seen = new Set();
|
|
308
|
+
for (const seg of segs) {
|
|
309
|
+
const bold = !!seg.bold;
|
|
310
|
+
const italic = !!seg.italic;
|
|
311
|
+
const segColor = seg.color
|
|
312
|
+
?? (seg.refResourceId !== undefined && style.refColor ? style.refColor
|
|
313
|
+
: seg.captionLabel && style.labelColor ? style.labelColor
|
|
314
|
+
: bold && style.boldColor ? style.boldColor
|
|
315
|
+
: italic && style.italicColor ? style.italicColor
|
|
316
|
+
: style.color);
|
|
317
|
+
if (seg.kind === 'chip' && seg.chip) {
|
|
318
|
+
const chip = seg.chip;
|
|
319
|
+
const chipGround = over(chip.background, ground);
|
|
320
|
+
for (const run of chip.runs) {
|
|
321
|
+
if (run.text.trim())
|
|
322
|
+
note(chip.color ?? segColor, run.fontString, run.text, chipGround, rectOf(line), 'chip', lineSrc);
|
|
323
|
+
}
|
|
324
|
+
continue;
|
|
325
|
+
}
|
|
326
|
+
if (seg.kind !== 'text' || !seg.text.trim() || seg.sideMarker)
|
|
327
|
+
continue;
|
|
328
|
+
const base = (bold && italic && style.boldItalicFont) || (bold && style.boldFont) || (italic && style.italicFont) || style.font;
|
|
329
|
+
const font = seg.fontString ?? base;
|
|
330
|
+
const key = `${font}|${segColor}`;
|
|
331
|
+
if (seen.has(key))
|
|
332
|
+
continue;
|
|
333
|
+
seen.add(key);
|
|
334
|
+
// A superscript or subscript is judged at its text's size.
|
|
335
|
+
// An inline run in a face or colour of its own is quoted alone.
|
|
336
|
+
const own = bold || italic || seg.color !== undefined || seg.fontString !== undefined || seg.refResourceId !== undefined;
|
|
337
|
+
note(segColor, font, own ? seg.text : line.text, ground, rectOf(line), role, lineSrc, seg.script ? base : font);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
};
|
|
341
|
+
const walkSlot = (slot, inFlow, role) => {
|
|
342
|
+
for (const b of slot?.blocks ?? []) {
|
|
343
|
+
const rect = sheet(b.bbox, inFlow);
|
|
344
|
+
if (b.kind === 'box') {
|
|
345
|
+
fill(rect, b.box.backgroundColor);
|
|
346
|
+
}
|
|
347
|
+
else if (b.kind === 'image') {
|
|
348
|
+
picture(rect);
|
|
349
|
+
}
|
|
350
|
+
else if (b.kind === 'text') {
|
|
351
|
+
if (b.box)
|
|
352
|
+
fill(rect, b.box.backgroundColor);
|
|
353
|
+
const first = b.lines.find((l) => l.text.trim());
|
|
354
|
+
if (!first)
|
|
355
|
+
continue;
|
|
356
|
+
// Under the first line's ink (a horizontal block's lines start
|
|
357
|
+
// `xOffset` from its box's edge, on a baseline given in the
|
|
358
|
+
// slot's own coordinates), else under the box's middle.
|
|
359
|
+
const size = fontSizePx(b.fontString) ?? 0;
|
|
360
|
+
const probe = b.vertical
|
|
361
|
+
? rect
|
|
362
|
+
: sheet({ x: b.bbox.x + first.xOffset, y: first.baselineY - size * 0.7, width: Math.max(first.width, 1), height: Math.max(size * 0.7, 1) }, inFlow);
|
|
363
|
+
const ground = groundIn(probe);
|
|
364
|
+
// Hollow letters print their outline only.
|
|
365
|
+
const color = b.stroke?.hollow ? b.stroke.color : b.color;
|
|
366
|
+
const src = { start: b.sourceStart, end: b.sourceEnd };
|
|
367
|
+
const fonts = new Set();
|
|
368
|
+
for (const line of b.lines) {
|
|
369
|
+
if (!line.text.trim())
|
|
370
|
+
continue;
|
|
371
|
+
for (const font of line.runs?.length ? line.runs.filter((r) => r.text.trim()).map((r) => r.fontString) : [b.fontString]) {
|
|
372
|
+
if (fonts.has(font))
|
|
373
|
+
continue;
|
|
374
|
+
fonts.add(font);
|
|
375
|
+
note(color, font, line.text, ground, rect, role, src);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
};
|
|
381
|
+
const walkBlock = (block) => {
|
|
382
|
+
if (block.hidden)
|
|
383
|
+
return;
|
|
384
|
+
const src = { start: block.sourceStart, end: block.sourceEnd };
|
|
385
|
+
const heading = block.type === 'heading' || block.headingLevel !== undefined;
|
|
386
|
+
if (block.designOverlay) {
|
|
387
|
+
walkSlot(block.designOverlay, true, heading ? 'heading' : 'design');
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
390
|
+
const box = sheet(block.bbox, true);
|
|
391
|
+
const blockStyle = {
|
|
392
|
+
font: block.fontString,
|
|
393
|
+
boldFont: block.boldFontString,
|
|
394
|
+
italicFont: block.italicFontString,
|
|
395
|
+
boldItalicFont: block.boldItalicFontString,
|
|
396
|
+
color: block.color,
|
|
397
|
+
refColor: block.refColor,
|
|
398
|
+
};
|
|
399
|
+
if (block.comic) {
|
|
400
|
+
// A strip: its art is a picture; only its caption is text.
|
|
401
|
+
const caption = block.stripCaption;
|
|
402
|
+
if (caption) {
|
|
403
|
+
const ground = over(caption.bar?.background, groundIn(box));
|
|
404
|
+
noteLines(block.lines.slice(caption.firstLine, caption.firstLine + caption.lineCount), blockStyle, ground, () => box, 'caption', src);
|
|
405
|
+
}
|
|
406
|
+
picture(box);
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
const rb = block.resourceBlock;
|
|
410
|
+
if (rb) {
|
|
411
|
+
const beneath = groundIn(box);
|
|
412
|
+
const table = rb.table;
|
|
413
|
+
if (table) {
|
|
414
|
+
for (const cell of table.cells ?? []) {
|
|
415
|
+
if (cell.lines.length === 0)
|
|
416
|
+
continue;
|
|
417
|
+
const header = cell.isHeader;
|
|
418
|
+
noteLines(cell.lines, {
|
|
419
|
+
font: header ? table.headerFontString : table.fontString,
|
|
420
|
+
boldFont: header ? table.headerBoldFontString : table.boldFontString,
|
|
421
|
+
italicFont: header ? table.headerItalicFontString : table.italicFontString,
|
|
422
|
+
boldItalicFont: header ? table.headerBoldItalicFontString : table.boldItalicFontString,
|
|
423
|
+
color: header ? table.headerColor : table.color,
|
|
424
|
+
refColor: rb.linkColor,
|
|
425
|
+
}, over(tableCellFill(table, cell), beneath), () => box, 'table', src);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
if (rb.captionLines.length > 0) {
|
|
429
|
+
noteLines(rb.captionLines, {
|
|
430
|
+
font: rb.captionFontString,
|
|
431
|
+
boldFont: rb.captionBoldFontString,
|
|
432
|
+
italicFont: rb.captionItalicFontString,
|
|
433
|
+
boldItalicFont: rb.captionBoldItalicFontString,
|
|
434
|
+
color: rb.captionColor,
|
|
435
|
+
refColor: rb.linkColor,
|
|
436
|
+
labelColor: rb.captionLabelColor,
|
|
437
|
+
}, over(rb.captionBar?.background, beneath), () => box, 'caption', src);
|
|
438
|
+
}
|
|
439
|
+
const noteStyle = {
|
|
440
|
+
font: rb.noteFontString,
|
|
441
|
+
boldFont: rb.noteBoldFontString,
|
|
442
|
+
italicFont: rb.noteItalicFontString,
|
|
443
|
+
boldItalicFont: rb.noteBoldItalicFontString,
|
|
444
|
+
color: rb.noteColor,
|
|
445
|
+
refColor: rb.linkColor,
|
|
446
|
+
};
|
|
447
|
+
if (rb.noteLines.length > 0)
|
|
448
|
+
noteLines(rb.noteLines, noteStyle, beneath, () => box, 'caption', src);
|
|
449
|
+
if (rb.continuesLines.length > 0)
|
|
450
|
+
noteLines(rb.continuesLines, noteStyle, beneath, () => box, 'caption', src);
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
453
|
+
const role = heading ? 'heading' : 'body';
|
|
454
|
+
const ground = groundIn(box);
|
|
455
|
+
if (block.bulletText?.trim()) {
|
|
456
|
+
note(block.bulletColor ?? block.color, block.bulletFontString ?? block.fontString, block.bulletText, ground, box, 'marker', src);
|
|
457
|
+
}
|
|
458
|
+
if (block.dropCap)
|
|
459
|
+
note(block.dropCap.color, block.dropCap.fontString, block.dropCap.text, ground, box, role, src);
|
|
460
|
+
noteLines(block.lines, { ...blockStyle, boldColor: block.boldColor, italicColor: block.italicColor }, ground, (line) => sheet(line.bbox, true), role, src);
|
|
461
|
+
};
|
|
462
|
+
// In paint order: what is painted later lies over what came before.
|
|
463
|
+
walkSlot(page.openerBand, true, 'design');
|
|
464
|
+
for (const column of page.columns)
|
|
465
|
+
for (const block of column.blocks)
|
|
466
|
+
walkBlock(block);
|
|
467
|
+
for (const block of page.floats ?? [])
|
|
468
|
+
walkBlock(block);
|
|
469
|
+
for (const block of page.marginNotes)
|
|
470
|
+
walkBlock(block);
|
|
471
|
+
// A comic page is pictures and lettering from edge to edge.
|
|
472
|
+
if (page.comic)
|
|
473
|
+
picture({ x: 0, y: 0, width: page.width, height: page.height });
|
|
474
|
+
walkSlot(page.lineNumbers, false, 'marker');
|
|
475
|
+
walkSlot(page.header, false, 'runningHead');
|
|
476
|
+
walkSlot(page.footer, false, 'runningHead');
|
|
477
|
+
}
|
|
478
|
+
return [...pairs.values()];
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* The text of `doc` that does not read: every text and ground pair under
|
|
482
|
+
* the ratio its size, its weight and `contrast.level` ask, in the
|
|
483
|
+
* renditions `contrast.mode` names (`lowContrast`, one finding per pair
|
|
484
|
+
* and threshold, at its first occurrence), and in print the reversed text
|
|
485
|
+
* under the sizes of `contrast.reversedText` (`reversedText`). Worst
|
|
486
|
+
* ratio first. Empty when `contrast.enabled` is off.
|
|
487
|
+
*/
|
|
488
|
+
export function contrastDocument(doc, options = {}) {
|
|
489
|
+
const contrast = options.contrast ?? doc.config.contrast ?? resolveContrastConfig();
|
|
490
|
+
if (!contrast.enabled)
|
|
491
|
+
return [];
|
|
492
|
+
const media = options.media ?? contrastMedia(doc.config, contrast);
|
|
493
|
+
const screen = media.includes('screen');
|
|
494
|
+
const print = media.includes('print');
|
|
495
|
+
if (!screen && !print)
|
|
496
|
+
return [];
|
|
497
|
+
const pairs = options.pairs ?? contrastPairs(doc, { ...options, contrast });
|
|
498
|
+
const low = new Map();
|
|
499
|
+
const reversed = new Map();
|
|
500
|
+
// The finding of a pair is its first occurrence, at its smallest size.
|
|
501
|
+
const merge = (into, pair) => {
|
|
502
|
+
into.count += pair.count;
|
|
503
|
+
const earlier = pair.pageIndex < into.pageIndex;
|
|
504
|
+
if (pair.sizePt < into.sizePt) {
|
|
505
|
+
into.sizePt = pair.sizePt;
|
|
506
|
+
into.weight = pair.weight;
|
|
507
|
+
into.italic = pair.italic;
|
|
508
|
+
}
|
|
509
|
+
if (earlier) {
|
|
510
|
+
into.pageIndex = pair.pageIndex;
|
|
511
|
+
into.rect = pair.rect;
|
|
512
|
+
into.text = pair.text;
|
|
513
|
+
into.role = pair.role;
|
|
514
|
+
delete into.sourceStart;
|
|
515
|
+
delete into.sourceEnd;
|
|
516
|
+
if (pair.sourceStart !== undefined)
|
|
517
|
+
into.sourceStart = pair.sourceStart;
|
|
518
|
+
if (pair.sourceEnd !== undefined)
|
|
519
|
+
into.sourceEnd = pair.sourceEnd;
|
|
520
|
+
}
|
|
521
|
+
};
|
|
522
|
+
const base = (pair) => ({
|
|
523
|
+
pageIndex: pair.pageIndex,
|
|
524
|
+
rect: pair.rect,
|
|
525
|
+
...(pair.sourceStart !== undefined ? { sourceStart: pair.sourceStart } : {}),
|
|
526
|
+
...(pair.sourceEnd !== undefined ? { sourceEnd: pair.sourceEnd } : {}),
|
|
527
|
+
color: pair.color,
|
|
528
|
+
background: pair.background,
|
|
529
|
+
sizePt: pair.sizePt,
|
|
530
|
+
weight: pair.weight,
|
|
531
|
+
italic: pair.italic,
|
|
532
|
+
role: pair.role,
|
|
533
|
+
text: pair.text,
|
|
534
|
+
count: pair.count,
|
|
535
|
+
});
|
|
536
|
+
const round = (ratio) => Math.floor(ratio * 100) / 100;
|
|
537
|
+
for (const pair of pairs) {
|
|
538
|
+
const failing = [];
|
|
539
|
+
if (screen && pair.screen < pair.required)
|
|
540
|
+
failing.push('screen');
|
|
541
|
+
if (print && pair.print !== undefined && pair.print < pair.required)
|
|
542
|
+
failing.push('print');
|
|
543
|
+
if (failing.length > 0) {
|
|
544
|
+
const key = `${pair.color}|${pair.background}|${pair.required}`;
|
|
545
|
+
const seen = low.get(key);
|
|
546
|
+
if (seen) {
|
|
547
|
+
merge(seen, pair);
|
|
548
|
+
}
|
|
549
|
+
else {
|
|
550
|
+
low.set(key, {
|
|
551
|
+
...base(pair),
|
|
552
|
+
kind: 'lowContrast',
|
|
553
|
+
level: contrast.level,
|
|
554
|
+
large: pair.large,
|
|
555
|
+
required: pair.required,
|
|
556
|
+
...(screen ? { screen: round(pair.screen) } : {}),
|
|
557
|
+
...(print && pair.print !== undefined ? { print: round(pair.print) } : {}),
|
|
558
|
+
failing,
|
|
559
|
+
});
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
if (print && contrast.reversedText.enabled && pair.reversed) {
|
|
563
|
+
const key = `${pair.color}|${pair.background}`;
|
|
564
|
+
const seen = reversed.get(key);
|
|
565
|
+
if (seen) {
|
|
566
|
+
for (const reason of pair.reversed.reasons)
|
|
567
|
+
if (!seen.reasons.includes(reason))
|
|
568
|
+
seen.reasons.push(reason);
|
|
569
|
+
seen.minimumPt = Math.max(seen.minimumPt, pair.reversed.minimumPt);
|
|
570
|
+
merge(seen, pair);
|
|
571
|
+
}
|
|
572
|
+
else {
|
|
573
|
+
reversed.set(key, { ...base(pair), kind: 'reversedText', reasons: [...pair.reversed.reasons], minimumPt: pair.reversed.minimumPt, inks: pair.reversed.inks });
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
const worst = (issue) => Math.min(issue.screen ?? Infinity, issue.print ?? Infinity);
|
|
578
|
+
return [
|
|
579
|
+
...[...low.values()].sort((a, b) => worst(a) - worst(b) || a.pageIndex - b.pageIndex),
|
|
580
|
+
...[...reversed.values()].sort((a, b) => a.sizePt - b.sizePt || a.pageIndex - b.pageIndex),
|
|
581
|
+
];
|
|
582
|
+
}
|
|
583
|
+
//# sourceMappingURL=contrast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contrast.js","sourceRoot":"","sources":["../src/contrast.ts"],"names":[],"mappings":"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"}
|