postext 1.23.0 → 1.24.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/bitmapInfo.test.d.ts +2 -0
- package/dist/__tests__/bundle/bitmapInfo.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/bitmapInfo.test.js +78 -0
- package/dist/__tests__/bundle/bitmapInfo.test.js.map +1 -0
- package/dist/__tests__/bundle/designOverflowPin.test.d.ts +2 -0
- package/dist/__tests__/bundle/designOverflowPin.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/designOverflowPin.test.js +87 -0
- package/dist/__tests__/bundle/designOverflowPin.test.js.map +1 -0
- package/dist/__tests__/bundle.test.js +1 -1
- package/dist/__tests__/bundle.test.js.map +1 -1
- package/dist/__tests__/codeBlocks.test.js +1 -1
- package/dist/__tests__/codeBlocks.test.js.map +1 -1
- package/dist/__tests__/design/designTextOverflow.test.d.ts +2 -0
- package/dist/__tests__/design/designTextOverflow.test.d.ts.map +1 -0
- package/dist/__tests__/design/designTextOverflow.test.js +102 -0
- package/dist/__tests__/design/designTextOverflow.test.js.map +1 -0
- package/dist/__tests__/exports.test.js +11 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/__tests__/frontmatterInvalid.test.d.ts +2 -0
- package/dist/__tests__/frontmatterInvalid.test.d.ts.map +1 -0
- package/dist/__tests__/frontmatterInvalid.test.js +101 -0
- package/dist/__tests__/frontmatterInvalid.test.js.map +1 -0
- package/dist/__tests__/hardBreaks.test.js +1 -1
- package/dist/__tests__/hardBreaks.test.js.map +1 -1
- package/dist/__tests__/headingFirstLineIndent.test.d.ts +2 -0
- package/dist/__tests__/headingFirstLineIndent.test.d.ts.map +1 -0
- package/dist/__tests__/headingFirstLineIndent.test.js +185 -0
- package/dist/__tests__/headingFirstLineIndent.test.js.map +1 -0
- package/dist/__tests__/headingInlineMarks.test.js +1 -1
- package/dist/__tests__/headingInlineMarks.test.js.map +1 -1
- package/dist/__tests__/headingLetterSpacing.test.js +1 -1
- package/dist/__tests__/headingLetterSpacing.test.js.map +1 -1
- package/dist/__tests__/mathSizeMigration.test.js +2 -2
- package/dist/__tests__/mathSizeMigration.test.js.map +1 -1
- package/dist/__tests__/pipeline/bitmapResolution.test.d.ts +2 -0
- package/dist/__tests__/pipeline/bitmapResolution.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/bitmapResolution.test.js +139 -0
- package/dist/__tests__/pipeline/bitmapResolution.test.js.map +1 -0
- package/dist/__tests__/pipeline/calloutInlineResourceGap.test.js +1 -1
- package/dist/__tests__/pipeline/calloutInlineResourceGap.test.js.map +1 -1
- package/dist/__tests__/pipeline/calloutSplitMinLinesChild.test.js +1 -1
- package/dist/__tests__/pipeline/calloutSplitMinLinesChild.test.js.map +1 -1
- package/dist/__tests__/pipeline/colonListRoom.test.js +1 -1
- package/dist/__tests__/pipeline/colonListRoom.test.js.map +1 -1
- package/dist/__tests__/pipeline/compoundBreaks.test.js +1 -1
- package/dist/__tests__/pipeline/compoundBreaks.test.js.map +1 -1
- package/dist/__tests__/pipeline/dashBreaks.test.js +1 -1
- package/dist/__tests__/pipeline/dashBreaks.test.js.map +1 -1
- package/dist/__tests__/pipeline/designTextTruncated.test.d.ts +2 -0
- package/dist/__tests__/pipeline/designTextTruncated.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/designTextTruncated.test.js +116 -0
- package/dist/__tests__/pipeline/designTextTruncated.test.js.map +1 -0
- package/dist/__tests__/pipeline/floatPlacement.test.js +3 -3
- package/dist/__tests__/pipeline/floatPlacement.test.js.map +1 -1
- package/dist/__tests__/pipeline/floatShrink.test.d.ts +2 -0
- package/dist/__tests__/pipeline/floatShrink.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/floatShrink.test.js +298 -0
- package/dist/__tests__/pipeline/floatShrink.test.js.map +1 -0
- package/dist/__tests__/pipeline/headingSplitOrphans.test.js +1 -1
- package/dist/__tests__/pipeline/headingSplitOrphans.test.js.map +1 -1
- package/dist/__tests__/pipeline/inlineFigureSpace.test.js +1 -1
- package/dist/__tests__/pipeline/inlineFigureSpace.test.js.map +1 -1
- package/dist/__tests__/pipeline/paragraphContainerTail.test.js +1 -1
- package/dist/__tests__/pipeline/paragraphContainerTail.test.js.map +1 -1
- package/dist/__tests__/pipeline/raggedOptimal.test.js +1 -1
- package/dist/__tests__/pipeline/raggedOptimal.test.js.map +1 -1
- package/dist/__tests__/pipeline/textWrap.test.d.ts +2 -0
- package/dist/__tests__/pipeline/textWrap.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/textWrap.test.js +453 -0
- package/dist/__tests__/pipeline/textWrap.test.js.map +1 -0
- package/dist/__tests__/preflight.test.js +30 -1
- package/dist/__tests__/preflight.test.js.map +1 -1
- package/dist/__tests__/presets/showcaseDesignOverflow.test.d.ts +2 -0
- package/dist/__tests__/presets/showcaseDesignOverflow.test.d.ts.map +1 -0
- package/dist/__tests__/presets/showcaseDesignOverflow.test.js +58 -0
- package/dist/__tests__/presets/showcaseDesignOverflow.test.js.map +1 -0
- package/dist/__tests__/table/booktabs.test.d.ts +2 -0
- package/dist/__tests__/table/booktabs.test.d.ts.map +1 -0
- package/dist/__tests__/table/booktabs.test.js +290 -0
- package/dist/__tests__/table/booktabs.test.js.map +1 -0
- package/dist/__tests__/textWrapMeasure.test.d.ts +2 -0
- package/dist/__tests__/textWrapMeasure.test.d.ts.map +1 -0
- package/dist/__tests__/textWrapMeasure.test.js +162 -0
- package/dist/__tests__/textWrapMeasure.test.js.map +1 -0
- package/dist/__tests__/verseLines.test.js +134 -4
- package/dist/__tests__/verseLines.test.js.map +1 -1
- package/dist/bitmapResolution.d.ts +42 -0
- package/dist/bitmapResolution.d.ts.map +1 -0
- package/dist/bitmapResolution.js +82 -0
- package/dist/bitmapResolution.js.map +1 -0
- package/dist/bundle/codec.d.ts +9 -2
- package/dist/bundle/codec.d.ts.map +1 -1
- package/dist/bundle/codec.js +24 -2
- package/dist/bundle/codec.js.map +1 -1
- package/dist/bundle/configVersion.d.ts +49 -8
- package/dist/bundle/configVersion.d.ts.map +1 -1
- package/dist/bundle/configVersion.js +161 -6
- package/dist/bundle/configVersion.js.map +1 -1
- package/dist/bundle/index.d.ts +3 -3
- package/dist/bundle/index.d.ts.map +1 -1
- package/dist/bundle/index.js +2 -2
- package/dist/bundle/index.js.map +1 -1
- package/dist/bundle/manifest.d.ts +12 -2
- package/dist/bundle/manifest.d.ts.map +1 -1
- package/dist/bundle/manifest.js +132 -6
- package/dist/bundle/manifest.js.map +1 -1
- package/dist/bundle/types.d.ts +28 -2
- package/dist/bundle/types.d.ts.map +1 -1
- package/dist/canvas-backend/blockRender.d.ts.map +1 -1
- package/dist/canvas-backend/blockRender.js +6 -4
- package/dist/canvas-backend/blockRender.js.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.js +15 -1
- package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
- package/dist/configWarnings.js +29 -2
- package/dist/configWarnings.js.map +1 -1
- package/dist/defaults/headerFooter.d.ts +21 -6
- package/dist/defaults/headerFooter.d.ts.map +1 -1
- package/dist/defaults/headerFooter.js +37 -14
- package/dist/defaults/headerFooter.js.map +1 -1
- package/dist/defaults/headings.d.ts +5 -4
- package/dist/defaults/headings.d.ts.map +1 -1
- package/dist/defaults/headings.js +15 -4
- package/dist/defaults/headings.js.map +1 -1
- package/dist/defaults/index.d.ts +1 -1
- package/dist/defaults/index.d.ts.map +1 -1
- package/dist/defaults/index.js +1 -1
- package/dist/defaults/index.js.map +1 -1
- package/dist/defaults/layout.d.ts +30 -1
- package/dist/defaults/layout.d.ts.map +1 -1
- package/dist/defaults/layout.js +105 -1
- package/dist/defaults/layout.js.map +1 -1
- package/dist/defaults/parts.js +4 -4
- package/dist/defaults/parts.js.map +1 -1
- package/dist/defaults/tableStyle.d.ts.map +1 -1
- package/dist/defaults/tableStyle.js +44 -0
- package/dist/defaults/tableStyle.js.map +1 -1
- package/dist/defaults/toc.js +2 -2
- package/dist/defaults/verse.d.ts +2 -1
- package/dist/defaults/verse.d.ts.map +1 -1
- package/dist/defaults/verse.js +6 -1
- package/dist/defaults/verse.js.map +1 -1
- package/dist/design/layout.d.ts +15 -1
- package/dist/design/layout.d.ts.map +1 -1
- package/dist/design/layout.js +28 -4
- package/dist/design/layout.js.map +1 -1
- package/dist/frontmatter.d.ts +20 -0
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +69 -3
- package/dist/frontmatter.js.map +1 -1
- package/dist/html-backend.d.ts.map +1 -1
- package/dist/html-backend.js +22 -4
- package/dist/html-backend.js.map +1 -1
- package/dist/index.d.ts +13 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/measure/bidiLines.d.ts +4 -3
- package/dist/measure/bidiLines.d.ts.map +1 -1
- package/dist/measure/bidiLines.js +12 -7
- package/dist/measure/bidiLines.js.map +1 -1
- package/dist/measure/cjkCompose.d.ts.map +1 -1
- package/dist/measure/cjkCompose.js +7 -3
- package/dist/measure/cjkCompose.js.map +1 -1
- package/dist/measure/hardBreaks.d.ts.map +1 -1
- package/dist/measure/hardBreaks.js +13 -1
- package/dist/measure/hardBreaks.js.map +1 -1
- package/dist/measure/index.d.ts +3 -3
- package/dist/measure/index.d.ts.map +1 -1
- package/dist/measure/index.js +4 -4
- package/dist/measure/index.js.map +1 -1
- package/dist/measure/plain.d.ts.map +1 -1
- package/dist/measure/plain.js +11 -7
- package/dist/measure/plain.js.map +1 -1
- package/dist/measure/rich.d.ts.map +1 -1
- package/dist/measure/rich.js +9 -6
- package/dist/measure/rich.js.map +1 -1
- package/dist/measure/types.d.ts +49 -3
- package/dist/measure/types.d.ts.map +1 -1
- package/dist/measure/types.js +67 -3
- package/dist/measure/types.js.map +1 -1
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +488 -31
- package/dist/pipeline/build.js.map +1 -1
- package/dist/pipeline/buildBlockKind.d.ts +5 -0
- package/dist/pipeline/buildBlockKind.d.ts.map +1 -1
- package/dist/pipeline/buildBlockKind.js +14 -1
- package/dist/pipeline/buildBlockKind.js.map +1 -1
- package/dist/pipeline/buildMeasurement.js +1 -1
- package/dist/pipeline/buildMeasurement.js.map +1 -1
- package/dist/pipeline/columnBalancing.d.ts.map +1 -1
- package/dist/pipeline/columnBalancing.js +5 -0
- package/dist/pipeline/columnBalancing.js.map +1 -1
- package/dist/pipeline/contentWarnings.d.ts +16 -0
- package/dist/pipeline/contentWarnings.d.ts.map +1 -1
- package/dist/pipeline/contentWarnings.js +113 -17
- package/dist/pipeline/contentWarnings.js.map +1 -1
- package/dist/pipeline/floatPlacement.d.ts +34 -4
- package/dist/pipeline/floatPlacement.d.ts.map +1 -1
- package/dist/pipeline/floatPlacement.js +35 -5
- package/dist/pipeline/floatPlacement.js.map +1 -1
- package/dist/pipeline/floatSlots.d.ts +7 -0
- package/dist/pipeline/floatSlots.d.ts.map +1 -1
- package/dist/pipeline/floatSlots.js.map +1 -1
- package/dist/pipeline/headerFooter.d.ts +4 -1
- package/dist/pipeline/headerFooter.d.ts.map +1 -1
- package/dist/pipeline/headerFooter.js +19 -5
- package/dist/pipeline/headerFooter.js.map +1 -1
- package/dist/pipeline/measureContentBlock.d.ts +7 -0
- package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
- package/dist/pipeline/measureContentBlock.js +15 -6
- package/dist/pipeline/measureContentBlock.js.map +1 -1
- package/dist/pipeline/placement.d.ts.map +1 -1
- package/dist/pipeline/placement.js +7 -0
- package/dist/pipeline/placement.js.map +1 -1
- package/dist/pipeline/resourceLayout.d.ts +15 -0
- package/dist/pipeline/resourceLayout.d.ts.map +1 -1
- package/dist/pipeline/resourceLayout.js +95 -15
- package/dist/pipeline/resourceLayout.js.map +1 -1
- package/dist/pipeline/styles.d.ts.map +1 -1
- package/dist/pipeline/styles.js +8 -5
- package/dist/pipeline/styles.js.map +1 -1
- package/dist/pipeline/textWrap.d.ts +94 -0
- package/dist/pipeline/textWrap.d.ts.map +1 -0
- package/dist/pipeline/textWrap.js +188 -0
- package/dist/pipeline/textWrap.js.map +1 -0
- package/dist/pipeline/verseLines.d.ts +22 -2
- package/dist/pipeline/verseLines.d.ts.map +1 -1
- package/dist/pipeline/verseLines.js +52 -4
- package/dist/pipeline/verseLines.js.map +1 -1
- package/dist/preflight.d.ts +46 -1
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +42 -7
- package/dist/preflight.js.map +1 -1
- package/dist/table/booktabs.d.ts +37 -0
- package/dist/table/booktabs.d.ts.map +1 -0
- package/dist/table/booktabs.js +82 -0
- package/dist/table/booktabs.js.map +1 -0
- package/dist/types.d.ts +227 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/vdt.d.ts +131 -6
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.js +3 -2
- package/dist/vdt.js.map +1 -1
- package/dist/word/index.d.ts +1 -1
- package/dist/word/index.d.ts.map +1 -1
- package/dist/word/index.js +1 -1
- package/dist/word/index.js.map +1 -1
- package/dist/word/toMarkdown.d.ts +10 -0
- package/dist/word/toMarkdown.d.ts.map +1 -1
- package/dist/word/toMarkdown.js +16 -1
- package/dist/word/toMarkdown.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text wrap (#627): text running beside a picture or a box narrower than
|
|
3
|
+
* its column.
|
|
4
|
+
*
|
|
5
|
+
* The wrapped item is first placed as it would be without wrapping: an
|
|
6
|
+
* inline figure atomically at the cursor, a float in its band at the head
|
|
7
|
+
* or foot of its column. When the next block can run beside it (a
|
|
8
|
+
* paragraph, a quotation, a list item), the band is given back to the flow
|
|
9
|
+
* and recorded as an exclusion of the column (`VDTColumn.exclusions`): the
|
|
10
|
+
* flow's cursor may then run beside it, and every text block that takes
|
|
11
|
+
* lines next to it is broken with those lines set short
|
|
12
|
+
* (`MeasureBlockOptions.lineInsets`, `wrapInsetSteps`). A block that cannot
|
|
13
|
+
* run beside it (a heading, a display formula, a figure, a box, a table)
|
|
14
|
+
* settles the column first: below a picture at the head of the text, the
|
|
15
|
+
* cursor goes under it; above one at the column's foot, the column ends at
|
|
16
|
+
* its top. So does leaving the column. A block that never meets a wrap is
|
|
17
|
+
* set exactly as before.
|
|
18
|
+
*
|
|
19
|
+
* This module holds the pure parts: the settings as a resource reads them,
|
|
20
|
+
* the exclusions still open in each column (per pass: columns are created
|
|
21
|
+
* afresh by every placement pass) and the line insets they ask of a block.
|
|
22
|
+
*/
|
|
23
|
+
import { lineInsetsAt } from '../measure/types';
|
|
24
|
+
import { dimensionToPx } from '../units';
|
|
25
|
+
import { wrapWidthOf } from '../defaults/layout';
|
|
26
|
+
import { parseLengthText } from '../defaults/tabStops';
|
|
27
|
+
/** A `wrap` value as a side of the flow: `'start'` is `'left'`, `'end'` is
|
|
28
|
+
* `'right'`; `'none'` and anything else are no wrap. */
|
|
29
|
+
export function wrapSideOf(value) {
|
|
30
|
+
if (value === 'left' || value === 'start')
|
|
31
|
+
return 'left';
|
|
32
|
+
if (value === 'right' || value === 'end')
|
|
33
|
+
return 'right';
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
/** The wrap a resource asks for: its own placement, then its type's
|
|
37
|
+
* `defaultPlacement`. `undefined` when it does not wrap. */
|
|
38
|
+
export function resolveResourceWrap(resource, type, settings) {
|
|
39
|
+
const side = wrapSideOf(resource.placement?.wrap ?? type?.defaultPlacement?.wrap);
|
|
40
|
+
if (!side)
|
|
41
|
+
return undefined;
|
|
42
|
+
const width = wrapWidthOf(resource.placement?.width ?? type?.defaultPlacement?.width) ?? settings.defaultWidth;
|
|
43
|
+
const gap = resource.placement?.wrapGap ?? type?.defaultPlacement?.wrapGap ?? settings.gap;
|
|
44
|
+
return { side, width, ...(gap ? { gap } : {}) };
|
|
45
|
+
}
|
|
46
|
+
/** The gap of a wrap in px: its own, else one body line (`floatGapPx`). */
|
|
47
|
+
export function wrapGapPx(gap, dpi, bodyFontSizePx, floatGapPx) {
|
|
48
|
+
return gap ? Math.max(0, dimensionToPx(gap, dpi, bodyFontSizePx)) : floatGapPx;
|
|
49
|
+
}
|
|
50
|
+
/** `layout.wrap.minTextWidth` in px for a column `columnWidth` wide. */
|
|
51
|
+
export function minTextWidthPx(min, columnWidth, dpi, bodyFontSizePx) {
|
|
52
|
+
return typeof min === 'number' ? min * columnWidth : dimensionToPx(min, dpi, bodyFontSizePx);
|
|
53
|
+
}
|
|
54
|
+
/** Whether a block may run beside a wrapped item: running text that splits
|
|
55
|
+
* line by line (a paragraph, a quotation, a list item). A poem, a
|
|
56
|
+
* contents or index row, a heading, a formula and every atomic block
|
|
57
|
+
* clear it. */
|
|
58
|
+
export function runsBesideWrap(block) {
|
|
59
|
+
if (block.toc !== undefined || block.index !== undefined)
|
|
60
|
+
return false;
|
|
61
|
+
if (block.type === 'paragraph')
|
|
62
|
+
return block.verse === undefined;
|
|
63
|
+
return block.type === 'blockquote' || block.type === 'listItem';
|
|
64
|
+
}
|
|
65
|
+
/** Whether a block takes nothing from the flow on its own and leaves an
|
|
66
|
+
* open wrap as it is: the markers of a `:::paragraphs` group and a
|
|
67
|
+
* numbering change. */
|
|
68
|
+
export function transparentToWrap(block) {
|
|
69
|
+
if (block.type === 'containerStart' || block.type === 'containerEnd') {
|
|
70
|
+
const name = block.containerName;
|
|
71
|
+
return name !== 'callout' && name !== 'part' && name !== 'paper';
|
|
72
|
+
}
|
|
73
|
+
return block.type === 'directive' && block.directiveName === 'numbering';
|
|
74
|
+
}
|
|
75
|
+
const openWraps = new WeakMap();
|
|
76
|
+
/** Record an exclusion of `col` and open it to the flow. */
|
|
77
|
+
export function openColumnWrap(col, ex, kind) {
|
|
78
|
+
(col.exclusions ??= []).push(ex);
|
|
79
|
+
const list = openWraps.get(col);
|
|
80
|
+
if (list)
|
|
81
|
+
list.push({ ex, kind });
|
|
82
|
+
else
|
|
83
|
+
openWraps.set(col, [{ ex, kind }]);
|
|
84
|
+
}
|
|
85
|
+
/** The exclusions of `col` the flow may still run beside. */
|
|
86
|
+
export function openColumnWraps(col) {
|
|
87
|
+
return openWraps.get(col) ?? [];
|
|
88
|
+
}
|
|
89
|
+
/** The flow's cursor in `col` (page y of the next block's top, before its
|
|
90
|
+
* spacing). */
|
|
91
|
+
export function columnCursorY(col) {
|
|
92
|
+
return col.bbox.y + col.bbox.height - col.availableHeight;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Close the open exclusions of `col`: under one that starts at or above
|
|
96
|
+
* the cursor the flow goes on below it; above one at the column's foot the
|
|
97
|
+
* column ends at its top. Returns whether the cursor moved down (the
|
|
98
|
+
* space the text was owing is then taken by the wrap's own gap).
|
|
99
|
+
*/
|
|
100
|
+
export function settleColumnWraps(col) {
|
|
101
|
+
const list = openWraps.get(col);
|
|
102
|
+
if (!list || list.length === 0)
|
|
103
|
+
return false;
|
|
104
|
+
openWraps.delete(col);
|
|
105
|
+
const before = col.availableHeight;
|
|
106
|
+
const colBottom = col.bbox.y + col.bbox.height;
|
|
107
|
+
for (const { ex, kind } of list) {
|
|
108
|
+
const y = columnCursorY(col);
|
|
109
|
+
if (kind === 'top') {
|
|
110
|
+
const bottom = ex.y + ex.height;
|
|
111
|
+
if (y < bottom - 0.01)
|
|
112
|
+
col.availableHeight = Math.max(0, Math.min(col.availableHeight, colBottom - bottom));
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
col.availableHeight = Math.max(0, Math.min(col.availableHeight, ex.y - y));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return col.availableHeight < before - 0.01;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* The lines of a text block set short by the open exclusions of `col`
|
|
122
|
+
* when its first line's top is at `y0` and its lines are `lineHeight`
|
|
123
|
+
* apart: a line that meets an exclusion on a grid line (even in part) is
|
|
124
|
+
* beside it. Line numbers count from `firstLine` (the lines of the block
|
|
125
|
+
* already placed elsewhere). The insets are the exclusions' widths, from
|
|
126
|
+
* the column's sides: they add to the block's own indents.
|
|
127
|
+
*/
|
|
128
|
+
export function wrapInsetSteps(col, y0, lineHeight, firstLine) {
|
|
129
|
+
const steps = [];
|
|
130
|
+
if (!(lineHeight > 0))
|
|
131
|
+
return steps;
|
|
132
|
+
for (const { ex } of openColumnWraps(col)) {
|
|
133
|
+
const top = ex.y;
|
|
134
|
+
const bottom = ex.y + ex.height;
|
|
135
|
+
if (bottom <= y0 + 0.01)
|
|
136
|
+
continue;
|
|
137
|
+
const from = Math.max(0, Math.floor((top - y0 + 0.01) / lineHeight));
|
|
138
|
+
const to = Math.ceil((bottom - y0 - 0.01) / lineHeight) - 1;
|
|
139
|
+
if (to < from)
|
|
140
|
+
continue;
|
|
141
|
+
steps.push({
|
|
142
|
+
fromLine: firstLine + from,
|
|
143
|
+
toLine: firstLine + to,
|
|
144
|
+
startInsetPx: ex.side === 'left' ? ex.width : 0,
|
|
145
|
+
endInsetPx: ex.side === 'right' ? ex.width : 0,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
return steps;
|
|
149
|
+
}
|
|
150
|
+
/** The steps of `steps` for the lines before `line`, cut there. */
|
|
151
|
+
export function insetsBefore(steps, line) {
|
|
152
|
+
const out = [];
|
|
153
|
+
for (const s of steps) {
|
|
154
|
+
if (s.fromLine >= line)
|
|
155
|
+
continue;
|
|
156
|
+
const to = s.toLine === undefined ? line - 1 : Math.min(s.toLine, line - 1);
|
|
157
|
+
out.push({ ...s, toLine: to });
|
|
158
|
+
}
|
|
159
|
+
return out;
|
|
160
|
+
}
|
|
161
|
+
/** Whether two sets of insets set every line from `line` on alike. */
|
|
162
|
+
export function sameInsetsFrom(a, b, line) {
|
|
163
|
+
let last = line;
|
|
164
|
+
for (const s of [...a, ...b])
|
|
165
|
+
last = Math.max(last, s.toLine ?? s.fromLine);
|
|
166
|
+
for (let li = line; li <= last; li++) {
|
|
167
|
+
const x = lineInsetsAt(a, li);
|
|
168
|
+
const y = lineInsetsAt(b, li);
|
|
169
|
+
if (Math.abs(x.start - y.start) > 0.01 || Math.abs(x.end - y.end) > 0.01)
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
/** The wrap a box asks for with its fence's attributes (#627):
|
|
175
|
+
* `wrap="left|right|start|end"`, `width` (a share of the column, 0 to 1;
|
|
176
|
+
* else `layout.wrap.defaultWidth`) and `wrapGap` (a length, `6pt`).
|
|
177
|
+
* `undefined` when it does not wrap. */
|
|
178
|
+
export function resolveCalloutWrap(attrs, settings) {
|
|
179
|
+
const side = wrapSideOf(attrs.wrap?.trim().toLowerCase());
|
|
180
|
+
if (!side)
|
|
181
|
+
return undefined;
|
|
182
|
+
const raw = attrs.width !== undefined ? Number(attrs.width.trim()) : undefined;
|
|
183
|
+
const width = wrapWidthOf(raw) ?? settings.defaultWidth;
|
|
184
|
+
const gap = attrs.wrapGap !== undefined ? parseLengthText(attrs.wrapGap) : undefined;
|
|
185
|
+
const ownGap = gap && gap.value >= 0 ? gap : settings.gap;
|
|
186
|
+
return { side, width, ...(ownGap ? { gap: ownGap } : {}) };
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=textWrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textWrap.js","sourceRoot":"","sources":["../../src/pipeline/textWrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,11 @@
|
|
|
12
12
|
* - A line's indent is its leading spaces × `indentStep` (a tab counts
|
|
13
13
|
* four spaces, an ideographic space two). A stepped line (`+ …`) starts
|
|
14
14
|
* where the line above ended, a word space on.
|
|
15
|
-
* - A line wider than the measure
|
|
15
|
+
* - A line a little wider than the measure tightens its word spaces, down
|
|
16
|
+
* to `bodyText.minWordSpacing` of their natural width (the shrink limit
|
|
17
|
+
* of justified text), and stays on one line (`tighten`, default on); the
|
|
18
|
+
* segments carry the tighter spaces, so every renderer paints them.
|
|
19
|
+
* - A line still wider than the measure turns over: `turnover="hang"` sets the
|
|
16
20
|
* rest on the line after it, `hang` (the style's `hangingIndent`, else
|
|
17
21
|
* `bodyText.verse.hang`) in from the line's own start; `turnover="right"`
|
|
18
22
|
* sets it flush with the end side behind an opening bracket
|
|
@@ -31,7 +35,7 @@
|
|
|
31
35
|
*/
|
|
32
36
|
import type { ContentBlock, InlineSpan } from '../parse';
|
|
33
37
|
import type { DirectiveAttrs } from '../parse/types';
|
|
34
|
-
import type { ResolvedConfig } from '../vdt';
|
|
38
|
+
import type { ResolvedConfig, VDTLineSegment } from '../vdt';
|
|
35
39
|
import type { MeasuredBlock, MeasurementCache } from '../measure';
|
|
36
40
|
import type { BlockStyle } from './styles';
|
|
37
41
|
/** A poem's line-layout settings, read from its fence over
|
|
@@ -48,6 +52,9 @@ export interface VerseLinesSettings {
|
|
|
48
52
|
/** Stanzas of this many lines or fewer stay whole; 0: off. */
|
|
49
53
|
keepStanzas: number;
|
|
50
54
|
align: 'center' | 'start';
|
|
55
|
+
/** Whether a line too wide for the measure tightens its word spaces
|
|
56
|
+
* (down to `bodyText.minWordSpacing`) before it turns over. */
|
|
57
|
+
tighten: boolean;
|
|
51
58
|
}
|
|
52
59
|
/** Whether a stanza block is set line by line: a stanza of the line layout,
|
|
53
60
|
* unless the fence named no layout and the configuration was stored
|
|
@@ -71,8 +78,21 @@ export interface VerseLinesInput {
|
|
|
71
78
|
/** The poem's direction and its frame's. */
|
|
72
79
|
direction: 'ltr' | 'rtl';
|
|
73
80
|
frameDirection: 'ltr' | 'rtl';
|
|
81
|
+
/** `bodyText.minWordSpacing`: how far a word space may tighten, as a
|
|
82
|
+
* share of its natural width. */
|
|
83
|
+
minWordSpacing: number;
|
|
74
84
|
cache?: MeasurementCache;
|
|
75
85
|
}
|
|
86
|
+
/** A line's word spaces tightened, down to `minWordSpacing` of their
|
|
87
|
+
* natural width each and in proportion to what each can give, so the
|
|
88
|
+
* line comes to `excess` px narrower; undefined when they cannot give
|
|
89
|
+
* that much. Fixed spaces (a `keepSpaces` caesura) are text and never
|
|
90
|
+
* tighten, nor does a CJK autospace. The segments are copies: the
|
|
91
|
+
* measured line stays as the cache holds it. */
|
|
92
|
+
export declare function tightenedSegments(segments: readonly VDTLineSegment[], excess: number, minWordSpacing: number): {
|
|
93
|
+
segments: VDTLineSegment[];
|
|
94
|
+
ratio: number;
|
|
95
|
+
} | undefined;
|
|
76
96
|
/** Lay a stanza out (see the module comment). */
|
|
77
97
|
export declare function measureVerseLines(input: VerseLinesInput): MeasuredBlock;
|
|
78
98
|
//# sourceMappingURL=verseLines.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verseLines.d.ts","sourceRoot":"","sources":["../../src/pipeline/verseLines.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"verseLines.d.ts","sourceRoot":"","sources":["../../src/pipeline/verseLines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAW,cAAc,EAAE,MAAM,QAAQ,CAAC;AAEtE,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAuB,MAAM,YAAY,CAAC;AASvF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAM3C;wBACwB;AACxB,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B;oEACgE;IAChE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;gEAGgE;AAChE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAGrF;AAoCD,0DAA0D;AAC1D,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,GAAG,cAAc,CAAC,EACtD,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,OAAO,GAChB,kBAAkB,CAgBpB;AAED,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,UAAU,EAAE,EAAE,CAYvE;AAED,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,YAAY,EAAE,YAAY,CAAC;IAC3B;8EAC0E;IAC1E,IAAI,EAAE,SAAS,YAAY,EAAE,CAAC;IAC9B,KAAK,EAAE,UAAU,CAAC;IAClB,uBAAuB;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,4CAA4C;IAC5C,SAAS,EAAE,KAAK,GAAG,KAAK,CAAC;IACzB,cAAc,EAAE,KAAK,GAAG,KAAK,CAAC;IAC9B;sCACkC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED;;;;;iDAKiD;AACjD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAmBxK;AAED,iDAAiD;AACjD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,GAAG,aAAa,CA4IvE"}
|
|
@@ -12,7 +12,11 @@
|
|
|
12
12
|
* - A line's indent is its leading spaces × `indentStep` (a tab counts
|
|
13
13
|
* four spaces, an ideographic space two). A stepped line (`+ …`) starts
|
|
14
14
|
* where the line above ended, a word space on.
|
|
15
|
-
* - A line wider than the measure
|
|
15
|
+
* - A line a little wider than the measure tightens its word spaces, down
|
|
16
|
+
* to `bodyText.minWordSpacing` of their natural width (the shrink limit
|
|
17
|
+
* of justified text), and stays on one line (`tighten`, default on); the
|
|
18
|
+
* segments carry the tighter spaces, so every renderer paints them.
|
|
19
|
+
* - A line still wider than the measure turns over: `turnover="hang"` sets the
|
|
16
20
|
* rest on the line after it, `hang` (the style's `hangingIndent`, else
|
|
17
21
|
* `bodyText.verse.hang`) in from the line's own start; `turnover="right"`
|
|
18
22
|
* sets it flush with the end side behind an opening bracket
|
|
@@ -48,6 +52,12 @@ export function versesLineByLine(raw, resolved) {
|
|
|
48
52
|
const stanza = raw.verse?.stanza;
|
|
49
53
|
return stanza !== undefined && !(stanza.auto && resolved.bodyText.verse.layout === 'bayt');
|
|
50
54
|
}
|
|
55
|
+
/** `tighten=false` / `tighten=true` on a fence; undefined when absent or
|
|
56
|
+
* neither. */
|
|
57
|
+
function switchAttr(value) {
|
|
58
|
+
const v = value?.trim().toLowerCase();
|
|
59
|
+
return v === 'true' || v === '' ? true : v === 'false' ? false : undefined;
|
|
60
|
+
}
|
|
51
61
|
/** A whole number of lines or none (`keepStanzas=5`). */
|
|
52
62
|
function countAttr(value) {
|
|
53
63
|
const m = /^\s*(\d+)\s*$/.exec(value ?? '');
|
|
@@ -91,6 +101,7 @@ export function verseLinesSettings(attrs, style, resolved, vertical) {
|
|
|
91
101
|
stanzaSpacePx: Math.max(0, stanzaSpaceAttr(attrs.stanzaSpace, style.lineHeightPx, dpi, em) ?? cfg.stanzaSpace * style.lineHeightPx),
|
|
92
102
|
keepStanzas: countAttr(attrs.keepStanzas) ?? cfg.keepStanzas,
|
|
93
103
|
align: align === 'start' || align === 'center' ? align : vertical ? 'start' : 'center',
|
|
104
|
+
tighten: switchAttr(attrs.tighten) ?? cfg.tighten,
|
|
94
105
|
};
|
|
95
106
|
}
|
|
96
107
|
/** A stanza's lines of verse: its spans cut at the line feeds. */
|
|
@@ -110,6 +121,33 @@ export function stanzaRows(spans) {
|
|
|
110
121
|
}
|
|
111
122
|
return rows;
|
|
112
123
|
}
|
|
124
|
+
/** A line's word spaces tightened, down to `minWordSpacing` of their
|
|
125
|
+
* natural width each and in proportion to what each can give, so the
|
|
126
|
+
* line comes to `excess` px narrower; undefined when they cannot give
|
|
127
|
+
* that much. Fixed spaces (a `keepSpaces` caesura) are text and never
|
|
128
|
+
* tighten, nor does a CJK autospace. The segments are copies: the
|
|
129
|
+
* measured line stays as the cache holds it. */
|
|
130
|
+
export function tightenedSegments(segments, excess, minWordSpacing) {
|
|
131
|
+
const floor = Math.max(0, Math.min(1, minWordSpacing));
|
|
132
|
+
const give = (seg) => (seg.kind === 'space' && !seg.autospace && !seg.labelTab ? Math.max(0, seg.width * (1 - floor)) : 0);
|
|
133
|
+
let natural = 0;
|
|
134
|
+
let shrinkable = 0;
|
|
135
|
+
for (const seg of segments) {
|
|
136
|
+
const g = give(seg);
|
|
137
|
+
if (g > 0) {
|
|
138
|
+
natural += seg.width;
|
|
139
|
+
shrinkable += g;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (excess <= 0 || shrinkable <= 0 || excess > shrinkable + 1e-6)
|
|
143
|
+
return undefined;
|
|
144
|
+
const share = Math.min(1, excess / shrinkable);
|
|
145
|
+
const out = segments.map((seg) => {
|
|
146
|
+
const g = give(seg);
|
|
147
|
+
return g > 0 ? { ...seg, width: seg.width - g * share } : seg;
|
|
148
|
+
});
|
|
149
|
+
return { segments: out, ratio: (natural - shrinkable * share) / natural };
|
|
150
|
+
}
|
|
113
151
|
/** Lay a stanza out (see the module comment). */
|
|
114
152
|
export function measureVerseLines(input) {
|
|
115
153
|
const { contentBlock, style, measureMaxWidth: measure, settings, direction } = input;
|
|
@@ -165,12 +203,18 @@ export function measureVerseLines(input) {
|
|
|
165
203
|
continue;
|
|
166
204
|
stanzaRows(block.spans).forEach((spans, i) => {
|
|
167
205
|
const info = st.lines[i] ?? { indent: 0 };
|
|
168
|
-
const
|
|
206
|
+
const line = measureSpans(spans, ONE_LINE, base)[0];
|
|
207
|
+
let width = widthOf(line);
|
|
169
208
|
// An indent past half the measure would leave its turnovers no room.
|
|
170
209
|
let indent = Math.min(info.indent * settings.indentStepPx, measure / 2);
|
|
171
210
|
if (info.stepped && rows.length > 0)
|
|
172
211
|
indent = Math.max(0, Math.min(prevEnd + space, measure - width));
|
|
173
|
-
|
|
212
|
+
const tight = settings.tighten && line && indent + width > measure + 0.01
|
|
213
|
+
? tightenedSegments(line.segments ?? [], indent + width - measure, input.minWordSpacing)
|
|
214
|
+
: undefined;
|
|
215
|
+
if (tight)
|
|
216
|
+
width = measure - indent;
|
|
217
|
+
rows.push({ spans, line, width, indent, stanza: st.index, ...(tight ? { tight } : {}) });
|
|
174
218
|
prevEnd = indent + width <= measure + 0.01 ? indent + width : endOfTurnover(spans, indent);
|
|
175
219
|
});
|
|
176
220
|
}
|
|
@@ -204,8 +248,12 @@ export function measureVerseLines(input) {
|
|
|
204
248
|
if (row.stanza !== stanza.index)
|
|
205
249
|
return;
|
|
206
250
|
const verseLine = (turnover) => ({ stanza: stanza.index, line: i, turnover, ...(!turnover && row.indent > 0 ? { indent: row.indent } : {}) });
|
|
251
|
+
if (row.tight && row.line) {
|
|
252
|
+
push(row.line, row.tight.segments, x0 + row.indent, { ...verseLine(false), spaceRatio: row.tight.ratio });
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
207
255
|
if (row.indent + row.width <= measure + 0.01) {
|
|
208
|
-
const
|
|
256
|
+
const line = row.line;
|
|
209
257
|
if (line)
|
|
210
258
|
push(line, line.segments ?? [], x0 + row.indent, verseLine(false));
|
|
211
259
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verseLines.js","sourceRoot":"","sources":["../../src/pipeline/verseLines.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verseLines.js","sourceRoot":"","sources":["../../src/pipeline/verseLines.ts"],"names":[],"mappings":"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"}
|
package/dist/preflight.d.ts
CHANGED
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
* - Pictures whose effective resolution at their printed size (pixels per
|
|
8
8
|
* inch, crop included) falls under `print.preflight.minImageResolution`
|
|
9
9
|
* (critical under `criticalImageResolution`): figures, table-cell
|
|
10
|
-
* pictures, design images, comic panels.
|
|
10
|
+
* pictures, design images, comic panels. The pixels are the file's when
|
|
11
|
+
* the host knows them (`imageSize`), else the resource's declaration.
|
|
12
|
+
* - Bitmaps whose declared pixel size and file disagree (#631).
|
|
11
13
|
* - RGB pictures in a CMYK job (converted on export, or kept RGB by a
|
|
12
14
|
* PDF/X-4 that does not convert them), when the host says which
|
|
13
15
|
* pictures are RGB (`imageColor`).
|
|
@@ -36,6 +38,23 @@ export type PreflightIssue = {
|
|
|
36
38
|
resourceId?: string;
|
|
37
39
|
ppi: number;
|
|
38
40
|
minimum: number;
|
|
41
|
+
}
|
|
42
|
+
/** A bitmap that declares a pixel size its file does not have (more
|
|
43
|
+
* than a pixel off either way): its print size and resolution are
|
|
44
|
+
* worked out from the declaration. Reported once, where it is first
|
|
45
|
+
* placed; `warning` when the declaration exceeds the file. */
|
|
46
|
+
| {
|
|
47
|
+
kind: 'declaredPixelsMismatch';
|
|
48
|
+
fileId: string;
|
|
49
|
+
resourceId?: string;
|
|
50
|
+
declared: {
|
|
51
|
+
width: number;
|
|
52
|
+
height: number;
|
|
53
|
+
};
|
|
54
|
+
actual: {
|
|
55
|
+
width: number;
|
|
56
|
+
height: number;
|
|
57
|
+
};
|
|
39
58
|
} | {
|
|
40
59
|
kind: 'rgbImage';
|
|
41
60
|
fileId: string;
|
|
@@ -79,11 +98,37 @@ export interface PreflightOptions {
|
|
|
79
98
|
* coverage exactly. Without it a neutral counts one ink and any other
|
|
80
99
|
* colour three, and coverage is not checked. */
|
|
81
100
|
transform?: OutputTransform;
|
|
101
|
+
/** The real pixel size of a bitmap's file (the decoded image, or
|
|
102
|
+
* `bitmapInfo` on its bytes), when the host knows it: the resolution is
|
|
103
|
+
* worked out from it, and a declaration that disagrees is reported
|
|
104
|
+
* (`declaredPixelsMismatch`). */
|
|
105
|
+
imageSize?: (fileId: string) => {
|
|
106
|
+
width: number;
|
|
107
|
+
height: number;
|
|
108
|
+
} | undefined;
|
|
82
109
|
/** Whether a picture's file is RGB, CMYK or gray (from its bytes). */
|
|
83
110
|
imageColor?: (fileId: string) => 'rgb' | 'cmyk' | 'gray' | undefined;
|
|
84
111
|
/** The job is CMYK (a PDF/X standard, or a CMYK PDF). Defaults to true
|
|
85
112
|
* when a PDF/X standard is set. */
|
|
86
113
|
cmyk?: boolean;
|
|
87
114
|
}
|
|
115
|
+
/** One placed bitmap and its effective resolution there (#631): the
|
|
116
|
+
* file's pixels shown (crop and safe area counted) over its printed size
|
|
117
|
+
* in inches, the smaller of the two axes. */
|
|
118
|
+
export interface PlacedImageResolution {
|
|
119
|
+
fileId: string;
|
|
120
|
+
resourceId?: string;
|
|
121
|
+
/** Book-absolute page index. */
|
|
122
|
+
pageIndex: number;
|
|
123
|
+
ppi: number;
|
|
124
|
+
/** Printed size, layout px. */
|
|
125
|
+
width: number;
|
|
126
|
+
height: number;
|
|
127
|
+
}
|
|
128
|
+
/** Every bitmap placed in `doc` with its effective resolution: figures,
|
|
129
|
+
* table-cell pictures, design images and comic panels, one entry per
|
|
130
|
+
* placement. Uses `options.resources` and `options.imageSize` as
|
|
131
|
+
* {@link preflightDocument} does; runs whether or not preflight is on. */
|
|
132
|
+
export declare function placedImageResolutions(doc: VDTDocument, options?: Pick<PreflightOptions, 'resources' | 'imageSize'>): PlacedImageResolution[];
|
|
88
133
|
export declare function preflightDocument(doc: VDTDocument, options?: PreflightOptions): PreflightIssue[];
|
|
89
134
|
//# sourceMappingURL=preflight.d.ts.map
|
package/dist/preflight.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"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"}
|
package/dist/preflight.js
CHANGED
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
* - Pictures whose effective resolution at their printed size (pixels per
|
|
8
8
|
* inch, crop included) falls under `print.preflight.minImageResolution`
|
|
9
9
|
* (critical under `criticalImageResolution`): figures, table-cell
|
|
10
|
-
* pictures, design images, comic panels.
|
|
10
|
+
* pictures, design images, comic panels. The pixels are the file's when
|
|
11
|
+
* the host knows them (`imageSize`), else the resource's declaration.
|
|
12
|
+
* - Bitmaps whose declared pixel size and file disagree (#631).
|
|
11
13
|
* - RGB pictures in a CMYK job (converted on export, or kept RGB by a
|
|
12
14
|
* PDF/X-4 that does not convert them), when the host says which
|
|
13
15
|
* pictures are RGB (`imageColor`).
|
|
@@ -59,10 +61,22 @@ function bitmapSizes(doc, resources) {
|
|
|
59
61
|
note(f.resourceBlock?.resource);
|
|
60
62
|
return out;
|
|
61
63
|
}
|
|
64
|
+
/** Every bitmap placed in `doc` with its effective resolution: figures,
|
|
65
|
+
* table-cell pictures, design images and comic panels, one entry per
|
|
66
|
+
* placement. Uses `options.resources` and `options.imageSize` as
|
|
67
|
+
* {@link preflightDocument} does; runs whether or not preflight is on. */
|
|
68
|
+
export function placedImageResolutions(doc, options = {}) {
|
|
69
|
+
const placed = [];
|
|
70
|
+
runPreflight(doc, { ...options, print: undefined }, placed);
|
|
71
|
+
return placed;
|
|
72
|
+
}
|
|
62
73
|
export function preflightDocument(doc, options = {}) {
|
|
74
|
+
return runPreflight(doc, options);
|
|
75
|
+
}
|
|
76
|
+
function runPreflight(doc, options, placed) {
|
|
63
77
|
const print = options.print ?? doc.config.print ?? resolvePrintConfig();
|
|
64
78
|
const pf = print.preflight;
|
|
65
|
-
if (!pf.enabled)
|
|
79
|
+
if (!pf.enabled && !placed)
|
|
66
80
|
return [];
|
|
67
81
|
const dpi = doc.config.page.dpi;
|
|
68
82
|
const pxToPt = (px) => (px / dpi) * 72;
|
|
@@ -112,14 +126,31 @@ export function preflightDocument(doc, options = {}) {
|
|
|
112
126
|
out.push({ kind: 'inkLimit', severity: 'warning', pageIndex, color: hex, coverage: Math.round(coverage), limit: print.inkLimit, ...(rect ? { rect } : {}) });
|
|
113
127
|
}
|
|
114
128
|
};
|
|
129
|
+
// The file's pixels against the declaration, once per file.
|
|
130
|
+
const mismatchSeen = new Set();
|
|
115
131
|
const checkImage = (fileId, placedW, placedH, fracW, fracH, pageIndex, rect, resourceId, src) => {
|
|
116
132
|
if (!fileId)
|
|
117
133
|
return;
|
|
118
|
-
const
|
|
134
|
+
const declared = sizes.get(fileId);
|
|
135
|
+
const real = options.imageSize?.(fileId);
|
|
136
|
+
const actual = real && real.width > 0 && real.height > 0 ? { w: real.width, h: real.height } : undefined;
|
|
137
|
+
const size = actual ?? declared;
|
|
119
138
|
const source = src?.start !== undefined ? { sourceStart: src.start, ...(src.end !== undefined ? { sourceEnd: src.end } : {}) } : {};
|
|
120
|
-
const rid = resourceId ??
|
|
139
|
+
const rid = resourceId ?? declared?.id;
|
|
140
|
+
if (pf.enabled && declared && actual && !mismatchSeen.has(fileId) && (Math.abs(declared.w - actual.w) > 1 || Math.abs(declared.h - actual.h) > 1)) {
|
|
141
|
+
mismatchSeen.add(fileId);
|
|
142
|
+
const over = declared.w > actual.w + 1 || declared.h > actual.h + 1;
|
|
143
|
+
out.push({
|
|
144
|
+
kind: 'declaredPixelsMismatch', severity: over ? 'warning' : 'info', pageIndex, rect, fileId,
|
|
145
|
+
declared: { width: declared.w, height: declared.h }, actual: { width: actual.w, height: actual.h },
|
|
146
|
+
...(rid ? { resourceId: rid } : {}), ...source,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
121
149
|
if (size && placedW > 0 && placedH > 0) {
|
|
122
150
|
const ppi = Math.min((size.w * fracW) / (placedW / dpi), (size.h * fracH) / (placedH / dpi));
|
|
151
|
+
placed?.push({ fileId, ...(rid ? { resourceId: rid } : {}), pageIndex, ppi, width: placedW, height: placedH });
|
|
152
|
+
if (!pf.enabled)
|
|
153
|
+
return;
|
|
123
154
|
if (ppi < pf.minImageResolution - EPS) {
|
|
124
155
|
out.push({
|
|
125
156
|
kind: 'lowImageResolution',
|
|
@@ -129,7 +160,7 @@ export function preflightDocument(doc, options = {}) {
|
|
|
129
160
|
});
|
|
130
161
|
}
|
|
131
162
|
}
|
|
132
|
-
if (cmykJob && options.imageColor?.(fileId) === 'rgb') {
|
|
163
|
+
if (pf.enabled && cmykJob && options.imageColor?.(fileId) === 'rgb') {
|
|
133
164
|
const converted = print.standard === 'pdfx1a' || print.convertImages;
|
|
134
165
|
out.push({ kind: 'rgbImage', severity: converted ? 'info' : 'warning', pageIndex, rect, fileId, converted, ...(rid ? { resourceId: rid } : {}), ...source });
|
|
135
166
|
}
|
|
@@ -288,8 +319,12 @@ export function preflightDocument(doc, options = {}) {
|
|
|
288
319
|
}
|
|
289
320
|
const table = rb.table;
|
|
290
321
|
if (table) {
|
|
291
|
-
|
|
292
|
-
|
|
322
|
+
// Booktabs strokes (#625) have their own widths: the thinnest counts.
|
|
323
|
+
const rulePx = table.strokes
|
|
324
|
+
? table.strokes.reduce((min, s) => Math.min(min, s.widthPx), Infinity)
|
|
325
|
+
: table.borderWidthPx;
|
|
326
|
+
if (rulePx > 0 && Number.isFinite(rulePx))
|
|
327
|
+
checkRule(rulePx, table.borderColor, pageIndex, body);
|
|
293
328
|
for (const cell of table.cells ?? []) {
|
|
294
329
|
const img = cell.image;
|
|
295
330
|
if (img && img.kind === 'bitmap')
|