postext 1.25.4 → 1.26.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__/cjk/headingNumberMark.test.d.ts +2 -0
- package/dist/__tests__/cjk/headingNumberMark.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/headingNumberMark.test.js +108 -0
- package/dist/__tests__/cjk/headingNumberMark.test.js.map +1 -0
- package/dist/__tests__/cjk/japaneseDash.test.d.ts +2 -0
- package/dist/__tests__/cjk/japaneseDash.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/japaneseDash.test.js +250 -0
- package/dist/__tests__/cjk/japaneseDash.test.js.map +1 -0
- package/dist/__tests__/cjk/japaneseSpacing.test.js +1 -1
- package/dist/__tests__/cjk/punctuation.test.js +5 -3
- package/dist/__tests__/cjk/punctuation.test.js.map +1 -1
- package/dist/__tests__/columnRuleBands.test.js +47 -0
- package/dist/__tests__/columnRuleBands.test.js.map +1 -1
- package/dist/__tests__/comics/canvas.test.js +38 -1
- package/dist/__tests__/comics/canvas.test.js.map +1 -1
- package/dist/__tests__/comics/html.test.js +16 -3
- package/dist/__tests__/comics/html.test.js.map +1 -1
- package/dist/__tests__/design/cjkDesignDash.test.js +7 -4
- package/dist/__tests__/design/cjkDesignDash.test.js.map +1 -1
- package/dist/__tests__/englishApostropheHyphenation.test.d.ts +2 -0
- package/dist/__tests__/englishApostropheHyphenation.test.d.ts.map +1 -0
- package/dist/__tests__/englishApostropheHyphenation.test.js +47 -0
- package/dist/__tests__/englishApostropheHyphenation.test.js.map +1 -0
- package/dist/__tests__/exports.test.js +1 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/__tests__/leaderMinRepeats.test.d.ts +2 -0
- package/dist/__tests__/leaderMinRepeats.test.d.ts.map +1 -0
- package/dist/__tests__/leaderMinRepeats.test.js +109 -0
- package/dist/__tests__/leaderMinRepeats.test.js.map +1 -0
- package/dist/__tests__/pipeline/footnoteRuntTracking.test.d.ts +2 -0
- package/dist/__tests__/pipeline/footnoteRuntTracking.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/footnoteRuntTracking.test.js +90 -0
- package/dist/__tests__/pipeline/footnoteRuntTracking.test.js.map +1 -0
- package/dist/__tests__/pipeline/orderedNumberAlign.test.d.ts +2 -0
- package/dist/__tests__/pipeline/orderedNumberAlign.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/orderedNumberAlign.test.js +108 -0
- package/dist/__tests__/pipeline/orderedNumberAlign.test.js.map +1 -0
- package/dist/__tests__/pipeline/trailingCapColumnNote.test.d.ts +2 -0
- package/dist/__tests__/pipeline/trailingCapColumnNote.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/trailingCapColumnNote.test.js +63 -0
- package/dist/__tests__/pipeline/trailingCapColumnNote.test.js.map +1 -0
- package/dist/__tests__/pipeline/trailingCapFloatHead.test.d.ts +2 -0
- package/dist/__tests__/pipeline/trailingCapFloatHead.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/trailingCapFloatHead.test.js +91 -0
- package/dist/__tests__/pipeline/trailingCapFloatHead.test.js.map +1 -0
- package/dist/__tests__/rtl/arabicLeadingNumbers.test.d.ts +2 -0
- package/dist/__tests__/rtl/arabicLeadingNumbers.test.d.ts.map +1 -0
- package/dist/__tests__/rtl/arabicLeadingNumbers.test.js +186 -0
- package/dist/__tests__/rtl/arabicLeadingNumbers.test.js.map +1 -0
- package/dist/__tests__/rtl/listMarkerDirection.test.d.ts +2 -0
- package/dist/__tests__/rtl/listMarkerDirection.test.d.ts.map +1 -0
- package/dist/__tests__/rtl/listMarkerDirection.test.js +197 -0
- package/dist/__tests__/rtl/listMarkerDirection.test.js.map +1 -0
- package/dist/__tests__/trackedLigatures.test.d.ts +2 -0
- package/dist/__tests__/trackedLigatures.test.d.ts.map +1 -0
- package/dist/__tests__/trackedLigatures.test.js +230 -0
- package/dist/__tests__/trackedLigatures.test.js.map +1 -0
- package/dist/__tests__/vectorRasterScale.test.d.ts +2 -0
- package/dist/__tests__/vectorRasterScale.test.d.ts.map +1 -0
- package/dist/__tests__/vectorRasterScale.test.js +304 -0
- package/dist/__tests__/vectorRasterScale.test.js.map +1 -0
- package/dist/bidi.d.ts +43 -3
- package/dist/bidi.d.ts.map +1 -1
- package/dist/bidi.js +29 -7
- package/dist/bidi.js.map +1 -1
- package/dist/canvas-backend/blockRender.d.ts.map +1 -1
- package/dist/canvas-backend/blockRender.js +43 -5
- package/dist/canvas-backend/blockRender.js.map +1 -1
- package/dist/canvas-backend/comic.d.ts +8 -4
- package/dist/canvas-backend/comic.d.ts.map +1 -1
- package/dist/canvas-backend/comic.js +13 -6
- package/dist/canvas-backend/comic.js.map +1 -1
- package/dist/canvas-backend/deviceScale.d.ts +31 -0
- package/dist/canvas-backend/deviceScale.d.ts.map +1 -0
- package/dist/canvas-backend/deviceScale.js +45 -0
- package/dist/canvas-backend/deviceScale.js.map +1 -0
- package/dist/canvas-backend/index.d.ts +5 -1
- package/dist/canvas-backend/index.d.ts.map +1 -1
- package/dist/canvas-backend/index.js.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.d.ts +5 -3
- package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.js +39 -6
- package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
- package/dist/canvas-backend/trackedText.d.ts +55 -0
- package/dist/canvas-backend/trackedText.d.ts.map +1 -0
- package/dist/canvas-backend/trackedText.js +145 -0
- package/dist/canvas-backend/trackedText.js.map +1 -0
- package/dist/canvas-backend/wordRuns.d.ts +4 -0
- package/dist/canvas-backend/wordRuns.d.ts.map +1 -1
- package/dist/canvas-backend/wordRuns.js +9 -1
- package/dist/canvas-backend/wordRuns.js.map +1 -1
- package/dist/columnRule.d.ts +2 -1
- package/dist/columnRule.d.ts.map +1 -1
- package/dist/columnRule.js +11 -3
- package/dist/columnRule.js.map +1 -1
- package/dist/comics/layoutPage.d.ts.map +1 -1
- package/dist/comics/layoutPage.js +54 -2
- package/dist/comics/layoutPage.js.map +1 -1
- package/dist/comics/lettering/__tests__/ellipsisFace.test.d.ts +2 -0
- package/dist/comics/lettering/__tests__/ellipsisFace.test.d.ts.map +1 -0
- package/dist/comics/lettering/__tests__/ellipsisFace.test.js +54 -0
- package/dist/comics/lettering/__tests__/ellipsisFace.test.js.map +1 -0
- package/dist/comics/lettering/__tests__/polish.test.js +8 -0
- package/dist/comics/lettering/__tests__/polish.test.js.map +1 -1
- package/dist/comics/lettering/__tests__/round4.test.d.ts +2 -0
- package/dist/comics/lettering/__tests__/round4.test.d.ts.map +1 -0
- package/dist/comics/lettering/__tests__/round4.test.js +212 -0
- package/dist/comics/lettering/__tests__/round4.test.js.map +1 -0
- package/dist/comics/lettering/letter.js +2 -2
- package/dist/comics/lettering/letter.js.map +1 -1
- package/dist/comics/lettering/placement.d.ts +10 -3
- package/dist/comics/lettering/placement.d.ts.map +1 -1
- package/dist/comics/lettering/placement.js +162 -22
- package/dist/comics/lettering/placement.js.map +1 -1
- package/dist/comics/lettering/text.d.ts.map +1 -1
- package/dist/comics/lettering/text.js +25 -3
- package/dist/comics/lettering/text.js.map +1 -1
- package/dist/comics/lettering/types.d.ts +29 -2
- package/dist/comics/lettering/types.d.ts.map +1 -1
- package/dist/defaults/orderedLists.d.ts +1 -0
- package/dist/defaults/orderedLists.d.ts.map +1 -1
- package/dist/defaults/orderedLists.js +7 -0
- package/dist/defaults/orderedLists.js.map +1 -1
- package/dist/design/bidiText.d.ts +5 -2
- package/dist/design/bidiText.d.ts.map +1 -1
- package/dist/design/bidiText.js +7 -4
- package/dist/design/bidiText.js.map +1 -1
- package/dist/design/layout.d.ts +5 -0
- package/dist/design/layout.d.ts.map +1 -1
- package/dist/design/layout.js +1 -1
- package/dist/design/layout.js.map +1 -1
- package/dist/html-backend.d.ts.map +1 -1
- package/dist/html-backend.js +32 -6
- package/dist/html-backend.js.map +1 -1
- package/dist/htmlComic.d.ts +2 -1
- package/dist/htmlComic.d.ts.map +1 -1
- package/dist/htmlComic.js +14 -1
- package/dist/htmlComic.js.map +1 -1
- package/dist/hyphenate.d.ts.map +1 -1
- package/dist/hyphenate.js +52 -0
- package/dist/hyphenate.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/math/rasterCache.d.ts +7 -1
- package/dist/math/rasterCache.d.ts.map +1 -1
- package/dist/math/rasterCache.js +23 -11
- package/dist/math/rasterCache.js.map +1 -1
- package/dist/measure/bidiLines.d.ts +8 -0
- package/dist/measure/bidiLines.d.ts.map +1 -1
- package/dist/measure/bidiLines.js +13 -0
- package/dist/measure/bidiLines.js.map +1 -1
- package/dist/measure/cache.d.ts.map +1 -1
- package/dist/measure/cache.js +5 -3
- package/dist/measure/cache.js.map +1 -1
- package/dist/measure/cjkCompose.d.ts +10 -0
- package/dist/measure/cjkCompose.d.ts.map +1 -1
- package/dist/measure/cjkCompose.js +95 -19
- package/dist/measure/cjkCompose.js.map +1 -1
- package/dist/measure/cjkPunctuation.d.ts +10 -0
- package/dist/measure/cjkPunctuation.d.ts.map +1 -1
- package/dist/measure/cjkPunctuation.js +18 -1
- package/dist/measure/cjkPunctuation.js.map +1 -1
- package/dist/measure/hardBreaks.d.ts.map +1 -1
- package/dist/measure/hardBreaks.js +4 -1
- package/dist/measure/hardBreaks.js.map +1 -1
- package/dist/measure/leader.d.ts +6 -1
- package/dist/measure/leader.d.ts.map +1 -1
- package/dist/measure/leader.js +8 -3
- package/dist/measure/leader.js.map +1 -1
- package/dist/measure/plain.d.ts.map +1 -1
- package/dist/measure/plain.js +4 -2
- package/dist/measure/plain.js.map +1 -1
- package/dist/measure/rich.d.ts.map +1 -1
- package/dist/measure/rich.js +7 -4
- package/dist/measure/rich.js.map +1 -1
- package/dist/measure/types.d.ts +7 -0
- package/dist/measure/types.d.ts.map +1 -1
- package/dist/measure/types.js.map +1 -1
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +38 -5
- 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 +1 -0
- package/dist/pipeline/buildBlockKind.js.map +1 -1
- package/dist/pipeline/calloutLayout.d.ts.map +1 -1
- package/dist/pipeline/calloutLayout.js +8 -4
- package/dist/pipeline/calloutLayout.js.map +1 -1
- package/dist/pipeline/citations.d.ts.map +1 -1
- package/dist/pipeline/citations.js +52 -6
- package/dist/pipeline/citations.js.map +1 -1
- package/dist/pipeline/config.d.ts +6 -0
- package/dist/pipeline/config.d.ts.map +1 -1
- package/dist/pipeline/config.js +12 -1
- package/dist/pipeline/config.js.map +1 -1
- package/dist/pipeline/headerFooter.d.ts +2 -0
- package/dist/pipeline/headerFooter.d.ts.map +1 -1
- package/dist/pipeline/headerFooter.js +3 -1
- package/dist/pipeline/headerFooter.js.map +1 -1
- package/dist/pipeline/lists.d.ts +8 -0
- package/dist/pipeline/lists.d.ts.map +1 -1
- package/dist/pipeline/lists.js +18 -1
- package/dist/pipeline/lists.js.map +1 -1
- package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
- package/dist/pipeline/measureContentBlock.js +3 -0
- package/dist/pipeline/measureContentBlock.js.map +1 -1
- package/dist/types.d.ts +13 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/vdt.d.ts +9 -0
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exports.test.js","sourceRoot":"","sources":["../../src/__tests__/exports.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"exports.test.js","sourceRoot":"","sources":["../../src/__tests__/exports.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leaderMinRepeats.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/leaderMinRepeats.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { buildDocument } from '../pipeline';
|
|
3
|
+
import { fitLeader, MIN_LEADER_REPEATS } from '../measure/leader';
|
|
4
|
+
// #666: a leader with room for one or two repeats printed them: a lone dot
|
|
5
|
+
// between a title and its page number, which reads as a full stop
|
|
6
|
+
// ("Punzones, matrices y el nombre de Garamond . 9"). A leader is set with
|
|
7
|
+
// three repeats or more, or not at all.
|
|
8
|
+
/** 7 px a character. */
|
|
9
|
+
class Ctx {
|
|
10
|
+
font = '';
|
|
11
|
+
measureText(s) {
|
|
12
|
+
return { width: s.length * 7 };
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
globalThis.OffscreenCanvas = class {
|
|
16
|
+
getContext() {
|
|
17
|
+
return new Ctx();
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const pt = (value) => ({ value, unit: 'pt' });
|
|
21
|
+
const seven = (text) => text.length * 7;
|
|
22
|
+
describe('fitLeader (#666)', () => {
|
|
23
|
+
it('sets three repeats or more', () => {
|
|
24
|
+
expect(MIN_LEADER_REPEATS).toBe(3);
|
|
25
|
+
expect(fitLeader('.', 21, seven)).toEqual({ text: '...', width: 21 });
|
|
26
|
+
expect(fitLeader('.', 70.5, seven)).toEqual({ text: '.'.repeat(10), width: 70 });
|
|
27
|
+
expect(fitLeader('. ', 42, seven)).toEqual({ text: '. . . ', width: 42 });
|
|
28
|
+
});
|
|
29
|
+
it('sets none in a room for one or two', () => {
|
|
30
|
+
expect(fitLeader('.', 7, seven)).toBeNull();
|
|
31
|
+
expect(fitLeader('.', 20.9, seven)).toBeNull();
|
|
32
|
+
expect(fitLeader('. ', 41, seven)).toBeNull();
|
|
33
|
+
expect(fitLeader('.', 6, seven)).toBeNull();
|
|
34
|
+
});
|
|
35
|
+
it('counts the repeats that fit as a run, not one by one', () => {
|
|
36
|
+
// A face that spaces its dots apart: three dots at 7 px each fit 27 px
|
|
37
|
+
// counted one by one, and take 27 px as a run of three.
|
|
38
|
+
const kerned = (text) => text.length * 7 + Math.max(0, text.length - 1) * 3;
|
|
39
|
+
expect(fitLeader('.', 27, kerned)).toEqual({ text: '...', width: 27 });
|
|
40
|
+
expect(fitLeader('.', 26, kerned)).toBeNull();
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
// A 260 px measure at 72 dpi.
|
|
44
|
+
const config = (extra = {}) => ({
|
|
45
|
+
page: { dpi: 72, width: pt(300), height: pt(500), margins: { top: pt(20), bottom: pt(20), left: pt(20), right: pt(20) } },
|
|
46
|
+
layout: { layoutType: 'single' },
|
|
47
|
+
header: { elements: [] },
|
|
48
|
+
footer: { elements: [] },
|
|
49
|
+
bodyText: { firstLineIndent: pt(0), textAlign: 'left', fontFamily: 'Test', hyphenation: { enabled: false } },
|
|
50
|
+
...extra,
|
|
51
|
+
});
|
|
52
|
+
const leaderOf = (line) => line.segments?.find((s) => s.leader !== undefined);
|
|
53
|
+
const widthOf = (line) => line.segments.reduce((w, s) => w + s.width, 0);
|
|
54
|
+
describe('a contents row (#666)', () => {
|
|
55
|
+
const toc = config({
|
|
56
|
+
headings: { levels: [{ level: 1, breakBefore: { enabled: false, parity: 'any' } }] },
|
|
57
|
+
headingStyles: [{ id: 'front', numbered: false }],
|
|
58
|
+
toc: { leader: { char: '.', gap: pt(7) } },
|
|
59
|
+
});
|
|
60
|
+
const rows = (titles) => {
|
|
61
|
+
const markdown = ['# Contents {style="front" toc="false"}', ':::toc', ...titles.flatMap((t) => [`# ${t}`, 'Some text.'])].join('\n\n');
|
|
62
|
+
const doc = buildDocument({ markdown }, toc);
|
|
63
|
+
const blocks = doc.blocks.filter((b) => b.tocEntry && b.pageIndex === 0);
|
|
64
|
+
return { doc, lines: blocks.map((b) => b.lines[b.lines.length - 1]) };
|
|
65
|
+
};
|
|
66
|
+
it('a title that leaves room for one or two dots is set without leader, its page number where it was', () => {
|
|
67
|
+
// The row holds the number, the title, the gap, the leader, the gap and
|
|
68
|
+
// the page number: titles one character apart walk the leader's room
|
|
69
|
+
// down a dot at a time.
|
|
70
|
+
const base = 'A title of the contents';
|
|
71
|
+
const titles = Array.from({ length: 9 }, (_, i) => base + 'x'.repeat(i));
|
|
72
|
+
const { doc, lines } = rows(titles);
|
|
73
|
+
expect(lines).toHaveLength(titles.length);
|
|
74
|
+
const col = doc.pages[0].columns[0];
|
|
75
|
+
const counts = lines.map((l) => leaderOf(l)?.text.length ?? 0);
|
|
76
|
+
// One line each: no title wraps.
|
|
77
|
+
lines.forEach((l, i) => expect(l.text.startsWith(titles[i])).toBe(true));
|
|
78
|
+
// Longer titles, shorter leaders, and never one of one or two dots.
|
|
79
|
+
expect(counts.some((n) => n >= MIN_LEADER_REPEATS)).toBe(true);
|
|
80
|
+
expect(counts.some((n) => n === 0)).toBe(true);
|
|
81
|
+
expect(counts.every((n) => n === 0 || n >= MIN_LEADER_REPEATS)).toBe(true);
|
|
82
|
+
for (let i = 1; i < counts.length; i++)
|
|
83
|
+
expect(counts[i]).toBeLessThanOrEqual(counts[i - 1]);
|
|
84
|
+
// The first row without leader had room for two dots.
|
|
85
|
+
const first = counts.indexOf(0);
|
|
86
|
+
expect(counts[first - 1]).toBe(MIN_LEADER_REPEATS);
|
|
87
|
+
// Every row still ends on the column's edge, on its page number.
|
|
88
|
+
for (const line of lines) {
|
|
89
|
+
expect(line.bbox.x + widthOf(line)).toBeCloseTo(col.bbox.x + col.bbox.width, 3);
|
|
90
|
+
expect(line.segments.at(-1).text).toMatch(/^\d+$/);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
describe('a tab stop (#666)', () => {
|
|
95
|
+
const menu = config({ bodyText: { firstLineIndent: pt(0), textAlign: 'left', fontFamily: 'Test', hyphenation: { enabled: false }, tabStops: [{ position: 'end', align: 'end', leader: '.', leaderGap: pt(7) }] } });
|
|
96
|
+
const line = (dish) => buildDocument({ markdown: `${dish}\t9` }, menu).blocks.find((b) => b.type === 'paragraph').lines[0];
|
|
97
|
+
it('sets a leader of three dots and none of two, the price at the stop either way', () => {
|
|
98
|
+
// 260 px: the dish, 7 px, the dots, 7 px, the price (7 px).
|
|
99
|
+
const three = line('x'.repeat(31)); // 217 + 7 + 21 + 7 + 7 = 259
|
|
100
|
+
const two = line('x'.repeat(32));
|
|
101
|
+
expect(leaderOf(three)?.text).toBe('...');
|
|
102
|
+
expect(leaderOf(two)).toBeUndefined();
|
|
103
|
+
for (const l of [three, two]) {
|
|
104
|
+
expect(l.segments.at(-1).text).toBe('9');
|
|
105
|
+
expect(l.bbox.x + widthOf(l)).toBeCloseTo(20 + 260, 3);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
//# sourceMappingURL=leaderMinRepeats.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leaderMinRepeats.test.js","sourceRoot":"","sources":["../../src/__tests__/leaderMinRepeats.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footnoteRuntTracking.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/pipeline/footnoteRuntTracking.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { buildDocument } from '../../pipeline';
|
|
3
|
+
import { renderBlock } from '../../canvas-backend/blockRender';
|
|
4
|
+
import { renderToHtml } from '../../html-backend';
|
|
5
|
+
// #662: a note at the foot of its column whose runt the engine takes up by
|
|
6
|
+
// setting it one line shorter with a little negative tracking
|
|
7
|
+
// (`bodyText.tightenRunts`, `maxRuntTracking`) is measured with that
|
|
8
|
+
// tracking, so it must be painted with it too. The flow and the boxes stamp
|
|
9
|
+
// the tracking on their blocks (EF-111); the note blocks did not, so a
|
|
10
|
+
// one-line note printed its words at their natural widths on the places
|
|
11
|
+
// measured for the tightened ones: the word spaces closed up until the
|
|
12
|
+
// words joined.
|
|
13
|
+
// Widths that vary by character, so the breaks fall in many places.
|
|
14
|
+
const W = (ch) => {
|
|
15
|
+
if (ch === ' ')
|
|
16
|
+
return 0.25;
|
|
17
|
+
if (ch === ' ')
|
|
18
|
+
return 0.5;
|
|
19
|
+
if ('il.,;:!|\'()'.includes(ch))
|
|
20
|
+
return 0.28;
|
|
21
|
+
if ('mwMW'.includes(ch))
|
|
22
|
+
return 0.8;
|
|
23
|
+
if (/[A-Z]/.test(ch))
|
|
24
|
+
return 0.66;
|
|
25
|
+
return 0.5;
|
|
26
|
+
};
|
|
27
|
+
class StubCtx {
|
|
28
|
+
font = '';
|
|
29
|
+
letterSpacing = '0px';
|
|
30
|
+
measureText(s) {
|
|
31
|
+
const size = parseFloat(/(\d*\.?\d+)px/.exec(this.font)?.[1] ?? '10');
|
|
32
|
+
let w = 0;
|
|
33
|
+
for (const ch of s)
|
|
34
|
+
w += W(ch) * size;
|
|
35
|
+
return { width: w };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
globalThis.OffscreenCanvas = class {
|
|
39
|
+
getContext() {
|
|
40
|
+
return new StubCtx();
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
const pt = (value) => ({ value, unit: 'pt' });
|
|
44
|
+
// 72 dpi: 1 pt = 1 px.
|
|
45
|
+
const config = (footnotes = {}, bodyText = {}) => ({
|
|
46
|
+
page: { width: pt(160), height: pt(400), dpi: 72, margins: { top: pt(10), bottom: pt(10), left: pt(10), right: pt(10) } },
|
|
47
|
+
layout: { layoutType: 'single' },
|
|
48
|
+
header: { elements: [] },
|
|
49
|
+
footer: { elements: [] },
|
|
50
|
+
bodyText: { fontSize: pt(10), lineHeight: pt(14), firstLineIndent: pt(0), hyphenation: { enabled: false }, ...bodyText },
|
|
51
|
+
footnotes: { fontSize: pt(10), lineHeight: pt(14), ...footnotes },
|
|
52
|
+
});
|
|
53
|
+
// Two lines set naturally, the second a one-word runt; one with 5‰ of tracking.
|
|
54
|
+
const NOTE = 'and within a is its within then';
|
|
55
|
+
const MD = `The text cites a work.[^n]\n\n[^n]: ${NOTE}`;
|
|
56
|
+
const note = (doc) => doc.blocks.find((b) => b.footnoteNote !== undefined);
|
|
57
|
+
describe('runt tracking in a note at the column foot (#662)', () => {
|
|
58
|
+
it('a ragged note is set a line shorter with negative tracking, and its block carries it', () => {
|
|
59
|
+
const tightened = note(buildDocument({ markdown: MD }, config({ textAlign: 'left' })));
|
|
60
|
+
expect(tightened.lines.map((l) => l.text)).toEqual([`1\u2002${NOTE}`]);
|
|
61
|
+
expect(tightened.letterSpacing).toBeCloseTo(-0.05, 5);
|
|
62
|
+
// Measured with the tracking: the line fits its column.
|
|
63
|
+
expect(tightened.lines[0].bbox.width).toBeLessThanOrEqual(tightened.bbox.width);
|
|
64
|
+
const natural = note(buildDocument({ markdown: MD }, config({ textAlign: 'left' }, { maxRuntTracking: 0 })));
|
|
65
|
+
expect(natural.lines.map((l) => l.text)).toEqual([`1\u2002${NOTE.slice(0, -5)}`, 'then']);
|
|
66
|
+
expect(natural.letterSpacing).toBeUndefined();
|
|
67
|
+
});
|
|
68
|
+
it('the canvas and the HTML paint the note with it', () => {
|
|
69
|
+
const doc = buildDocument({ markdown: MD }, config({ textAlign: 'left' }));
|
|
70
|
+
const block = note(doc);
|
|
71
|
+
const seen = [];
|
|
72
|
+
const ctx = {
|
|
73
|
+
font: '', fillStyle: '', textBaseline: 'alphabetic', _ls: '0px',
|
|
74
|
+
get letterSpacing() { return this._ls; },
|
|
75
|
+
set letterSpacing(v) { this._ls = v; },
|
|
76
|
+
fillText(text) { seen.push(`${this._ls}:${text}`); },
|
|
77
|
+
save() { }, restore() { }, beginPath() { }, rect() { }, clip() { }, fillRect() { }, moveTo() { }, lineTo() { }, stroke() { },
|
|
78
|
+
};
|
|
79
|
+
renderBlock(ctx, block, block.bbox.width, block.bbox.x);
|
|
80
|
+
expect(seen.length).toBeGreaterThan(0);
|
|
81
|
+
expect(seen.every((s) => s.startsWith('-0.05px:'))).toBe(true);
|
|
82
|
+
expect(renderToHtml(doc)).toMatch(/class="pt-line"[^>]*letter-spacing:-0\.05px;/);
|
|
83
|
+
});
|
|
84
|
+
it('a note that needs no tightening carries no tracking', () => {
|
|
85
|
+
const block = note(buildDocument({ markdown: 'The text cites a work.[^n]\n\n[^n]: A short note.' }, config({ textAlign: 'left' })));
|
|
86
|
+
expect(block.lines).toHaveLength(1);
|
|
87
|
+
expect(block.letterSpacing).toBeUndefined();
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=footnoteRuntTracking.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footnoteRuntTracking.test.js","sourceRoot":"","sources":["../../../src/__tests__/pipeline/footnoteRuntTracking.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orderedNumberAlign.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/pipeline/orderedNumberAlign.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { buildDocument } from '../../pipeline/build';
|
|
3
|
+
import { createMeasurementCache } from '../../measure';
|
|
4
|
+
import { resolveBodyTextConfig, resolveOrderedListsConfig, stripOrderedListsDefaults } from '../../defaults';
|
|
5
|
+
// `orderedLists.numberAlign` (#682): the numbers of a list at the start of
|
|
6
|
+
// their column, so labels of different lengths begin together (第九條,
|
|
7
|
+
// 第十一條). Every character is 7 px wide in the stub: '9.' is 14 px and
|
|
8
|
+
// '10.' 21 px.
|
|
9
|
+
class StubCtx {
|
|
10
|
+
font = '';
|
|
11
|
+
measureText(s) {
|
|
12
|
+
return { width: s.length * 7 };
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
globalThis.OffscreenCanvas = class {
|
|
16
|
+
getContext() {
|
|
17
|
+
return new StubCtx();
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const pt = (value) => ({ value, unit: 'pt' });
|
|
21
|
+
const mm = (value) => ({ value, unit: 'mm' });
|
|
22
|
+
const config = (ordered = {}, extra = {}) => ({
|
|
23
|
+
page: { width: mm(120), height: mm(150), dpi: 72, margins: { top: mm(10), bottom: mm(10), left: mm(10), right: mm(10) } },
|
|
24
|
+
layout: { layoutType: 'single' },
|
|
25
|
+
bodyText: { fontSize: pt(10), lineHeight: pt(12), firstLineIndent: pt(0) },
|
|
26
|
+
orderedLists: ordered,
|
|
27
|
+
headings: { balancing: { enabled: false } },
|
|
28
|
+
...extra,
|
|
29
|
+
});
|
|
30
|
+
const build = (md, cfg) => buildDocument({ markdown: md }, cfg, createMeasurementCache());
|
|
31
|
+
const items = (doc) => doc.blocks.filter((b) => b.type === 'listItem');
|
|
32
|
+
const textX = (b) => b.lines[0].bbox.x;
|
|
33
|
+
const LIST = '8. Eight\n9. Nine\n10. Ten\n11. Eleven';
|
|
34
|
+
describe('orderedLists.numberAlign (#682)', () => {
|
|
35
|
+
it('defaults to \'end\', strips the default and reads an unknown value as \'end\'', () => {
|
|
36
|
+
const body = resolveBodyTextConfig();
|
|
37
|
+
expect(resolveOrderedListsConfig(undefined, body).numberAlign).toBe('end');
|
|
38
|
+
expect(resolveOrderedListsConfig({ numberAlign: 'start' }, body).numberAlign).toBe('start');
|
|
39
|
+
expect(resolveOrderedListsConfig({ numberAlign: 'left' }, body).numberAlign).toBe('end');
|
|
40
|
+
expect(stripOrderedListsDefaults({ numberAlign: 'end' })).toBeUndefined();
|
|
41
|
+
expect(stripOrderedListsDefaults({ numberAlign: 'start' })).toEqual({ numberAlign: 'start' });
|
|
42
|
+
});
|
|
43
|
+
it('by default the numbers end together', () => {
|
|
44
|
+
const list = items(build(LIST, config()));
|
|
45
|
+
// '9.' one digit right of '10.'.
|
|
46
|
+
expect(list[1].bulletOffsetX - list[2].bulletOffsetX).toBeCloseTo(7, 5);
|
|
47
|
+
expect(JSON.stringify(items(build(LIST, config({ numberAlign: 'end' }))))).toBe(JSON.stringify(list));
|
|
48
|
+
});
|
|
49
|
+
it('\'start\' begins every number at the start of the column, the text where it was', () => {
|
|
50
|
+
const end = items(build(LIST, config()));
|
|
51
|
+
const start = items(build(LIST, config({ numberAlign: 'start' })));
|
|
52
|
+
const x = start[0].bulletOffsetX;
|
|
53
|
+
for (const b of start)
|
|
54
|
+
expect(b.bulletOffsetX).toBeCloseTo(x, 5);
|
|
55
|
+
// Where the widest number of the run stood.
|
|
56
|
+
expect(x).toBeCloseTo(end[2].bulletOffsetX, 5);
|
|
57
|
+
start.forEach((b, i) => {
|
|
58
|
+
expect(textX(b)).toBeCloseTo(textX(end[i]), 5);
|
|
59
|
+
expect(b.lines.map((l) => l.text)).toEqual(end[i].lines.map((l) => l.text));
|
|
60
|
+
expect(b.bbox).toEqual(end[i].bbox);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
it('works with the level-wide column and per depth', () => {
|
|
64
|
+
const md = '1. Stem\n 9. ninth\n 10. tenth\n\nBetween.\n\n10. Other';
|
|
65
|
+
const [stem, ninth, tenth, other] = items(build(md, config({ numberAlign: 'start', numberWidth: 'level' })));
|
|
66
|
+
expect(stem.bulletOffsetX).toBeCloseTo(other.bulletOffsetX, 5);
|
|
67
|
+
expect(ninth.bulletOffsetX).toBeCloseTo(tenth.bulletOffsetX, 5);
|
|
68
|
+
expect(textX(stem)).toBeCloseTo(textX(other), 5);
|
|
69
|
+
});
|
|
70
|
+
it('a separator run follows its own number', () => {
|
|
71
|
+
const cfg = (align) => config({ numberAlign: align, separatorFontWeight: 400, fontWeight: 700 });
|
|
72
|
+
const start = items(build(LIST, cfg('start')));
|
|
73
|
+
const end = items(build(LIST, cfg('end')));
|
|
74
|
+
// Flush right: the separators of '9' and '10' stand in one column.
|
|
75
|
+
expect(end[1].separatorX).toBeCloseTo(end[2].separatorX, 5);
|
|
76
|
+
// At the start: each right after its number, '9' one digit before '10'.
|
|
77
|
+
expect(start[1].bulletOffsetX).toBeCloseTo(start[2].bulletOffsetX, 5);
|
|
78
|
+
expect(start[2].separatorX - start[1].separatorX).toBeCloseTo(7, 5);
|
|
79
|
+
expect(start[1].separatorX - start[1].bulletOffsetX).toBeCloseTo(7, 5);
|
|
80
|
+
});
|
|
81
|
+
it('a prefix and a suffix: 第九條 and 第十一條 begin together in vertical Japanese', () => {
|
|
82
|
+
const cfg = (align) => config({ numberFormat: 'japanese-informal', prefix: '第', separator: '條', hangingIndent: false, ...(align ? { numberAlign: align } : {}) }, { locale: 'ja', layout: { layoutType: 'single', writingMode: 'vertical-rl' } });
|
|
83
|
+
const md = '9. 天皇ハ\n10. 天皇ハ\n11. 天皇ハ';
|
|
84
|
+
const end = items(build(md, cfg()));
|
|
85
|
+
const start = items(build(md, cfg('start')));
|
|
86
|
+
expect(end.map((b) => b.bulletText)).toEqual(['第九條', '第十條', '第十一條']);
|
|
87
|
+
// One character further down the line for the shorter labels …
|
|
88
|
+
expect(end[0].bulletOffsetX).toBeGreaterThan(end[2].bulletOffsetX);
|
|
89
|
+
// … and all three at the head with 'start'.
|
|
90
|
+
expect(start[0].bulletOffsetX).toBeCloseTo(start[2].bulletOffsetX, 5);
|
|
91
|
+
expect(start[1].bulletOffsetX).toBeCloseTo(start[2].bulletOffsetX, 5);
|
|
92
|
+
expect(start[2].bulletOffsetX).toBeCloseTo(end[2].bulletOffsetX, 5);
|
|
93
|
+
expect(textX(start[0])).toBeCloseTo(textX(end[0]), 5);
|
|
94
|
+
});
|
|
95
|
+
it('on a right-to-left page the numbers begin at the start of the mirrored frame', () => {
|
|
96
|
+
// The flow of a right-to-left document is laid out in a mirrored frame
|
|
97
|
+
// (`VDTPage.flow`): its start is the right of the sheet.
|
|
98
|
+
const cfg = (align) => config(align ? { numberAlign: align } : {}, { locale: 'ar', direction: 'rtl' });
|
|
99
|
+
const md = '9. تسعة\n10. عشرة';
|
|
100
|
+
const end = items(build(md, cfg()));
|
|
101
|
+
const start = items(build(md, cfg('start')));
|
|
102
|
+
expect(end[0].bulletOffsetX - end[1].bulletOffsetX).toBeCloseTo(7, 5);
|
|
103
|
+
expect(start[0].bulletOffsetX).toBeCloseTo(start[1].bulletOffsetX, 5);
|
|
104
|
+
expect(start[1].bulletOffsetX).toBeCloseTo(end[1].bulletOffsetX, 5);
|
|
105
|
+
expect(textX(start[0])).toBeCloseTo(textX(end[0]), 5);
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
//# sourceMappingURL=orderedNumberAlign.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orderedNumberAlign.test.js","sourceRoot":"","sources":["../../../src/__tests__/pipeline/orderedNumberAlign.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trailingCapColumnNote.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/pipeline/trailingCapColumnNote.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { buildDocument } from '../../pipeline';
|
|
3
|
+
import { createMeasurementCache } from '../../measure';
|
|
4
|
+
// Deterministic text measurement stub (no DOM in the node test env).
|
|
5
|
+
class StubCtx {
|
|
6
|
+
font = '';
|
|
7
|
+
measureText(s) {
|
|
8
|
+
return { width: s.length * 7 };
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
globalThis.OffscreenCanvas = class {
|
|
12
|
+
getContext() {
|
|
13
|
+
return new StubCtx();
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const SENTENCE = 'La linterna del faro debe permanecer encendida toda la noche para guiar a los barcos que cruzan la bahía. ';
|
|
17
|
+
const filler = (n) => SENTENCE.repeat(n).trim();
|
|
18
|
+
const mm = (value) => ({ value, unit: 'mm' });
|
|
19
|
+
const TWO_COL = {
|
|
20
|
+
page: { width: mm(160), height: mm(200), margins: { top: mm(10), bottom: mm(10), left: mm(10), right: mm(10) } },
|
|
21
|
+
layout: { layoutType: 'double' },
|
|
22
|
+
bodyText: { hyphenation: { enabled: false } },
|
|
23
|
+
};
|
|
24
|
+
const build = (md) => buildDocument({ markdown: md }, TWO_COL, createMeasurementCache());
|
|
25
|
+
/** Lines of body text in each column of the first page. */
|
|
26
|
+
const textLines = (doc) => doc.pages[0].columns.map((col) => col.blocks.filter((b) => b.footnoteNote === undefined).reduce((n, b) => n + b.lines.length, 0));
|
|
27
|
+
describe('a closing band cut level with a note at a column foot (#673)', () => {
|
|
28
|
+
// The note of a column a band cap cut is set under the cut, at the true
|
|
29
|
+
// foot of the column: its height takes nothing from the lines above the
|
|
30
|
+
// cut unless it reaches above it.
|
|
31
|
+
// `[10, 2]` and `[14]`: the paragraph that cites the note runs to the cut.
|
|
32
|
+
for (const paragraphs of [[6, 4, 5], [3, 3, 3, 3], [10, 2], [14], [4, 9]]) {
|
|
33
|
+
it(`ends level with a note cited in the first column (${paragraphs.join('+')} sentences)`, () => {
|
|
34
|
+
const md = [
|
|
35
|
+
...paragraphs.map((n, i) => (i === 0 ? `Primera cita.[^n] ${filler(n)}` : filler(n))),
|
|
36
|
+
`[^n]: ${filler(3)}`,
|
|
37
|
+
].join('\n\n');
|
|
38
|
+
const plain = textLines(build(md.replace('[^n] ', ' ').replace(/\n\n\[\^n\]:.*$/, '')));
|
|
39
|
+
const noted = build(md);
|
|
40
|
+
expect(noted.pages).toHaveLength(1);
|
|
41
|
+
const note = noted.blocks.find((b) => b.footnoteNote === 'n');
|
|
42
|
+
expect(note.columnIndex).toBe(0);
|
|
43
|
+
const lines = textLines(noted);
|
|
44
|
+
expect(Math.abs(lines[0] - lines[1])).toBeLessThanOrEqual(Math.max(1, Math.abs(plain[0] - plain[1])));
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
it('still charges the note whole in a column no cap cut', () => {
|
|
48
|
+
// Enough text for two pages: the first column of page 1 runs to the
|
|
49
|
+
// page's foot, and its note takes its lines from it.
|
|
50
|
+
const md = [`Primera cita.[^n] ${filler(150)}`, `[^n]: ${filler(3)}`].join('\n\n');
|
|
51
|
+
const doc = build(md);
|
|
52
|
+
expect(doc.pages.length).toBeGreaterThan(1);
|
|
53
|
+
const [first, second] = doc.pages[0].columns;
|
|
54
|
+
const note = doc.blocks.find((b) => b.footnoteNote === 'n');
|
|
55
|
+
expect(note.pageIndex).toBe(0);
|
|
56
|
+
expect(note.columnIndex).toBe(0);
|
|
57
|
+
const lines = textLines(doc);
|
|
58
|
+
expect(lines[1] - lines[0]).toBeGreaterThanOrEqual(note.lines.length);
|
|
59
|
+
expect(first.bandCapped ?? false).toBe(false);
|
|
60
|
+
expect(second.bandCapped ?? false).toBe(false);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
//# sourceMappingURL=trailingCapColumnNote.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trailingCapColumnNote.test.js","sourceRoot":"","sources":["../../../src/__tests__/pipeline/trailingCapColumnNote.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trailingCapFloatHead.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/pipeline/trailingCapFloatHead.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { buildDocument } from '../../pipeline/build';
|
|
3
|
+
import { createMeasurementCache } from '../../measure';
|
|
4
|
+
// Deterministic text measurement stub (no DOM in the node test env).
|
|
5
|
+
class StubCtx {
|
|
6
|
+
font = '';
|
|
7
|
+
measureText(s) {
|
|
8
|
+
return { width: s.length * 10 };
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
globalThis.OffscreenCanvas = class {
|
|
12
|
+
getContext() {
|
|
13
|
+
return new StubCtx();
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const picture = (id, height, placement) => ({
|
|
17
|
+
id, typeId: 'figure', kind: 'bitmap', caption: 'A picture.', createdAt: 0, updatedAt: 0,
|
|
18
|
+
bitmap: { fileId: `${id}.png`, format: 'png', width: 1600, height },
|
|
19
|
+
placement,
|
|
20
|
+
});
|
|
21
|
+
const words = 'the lake froze late that year and the ferry kept running until the first week of december when the ice closed over the middle'.split(' ');
|
|
22
|
+
const para = (n, seed) => `${Array.from({ length: n }, (_, i) => words[(i * 7 + seed) % words.length]).join(' ')}.`;
|
|
23
|
+
/** A story that closes on its first page: the picture heads the second and
|
|
24
|
+
* third columns, cited from the first, whose text ends above the picture's
|
|
25
|
+
* foot; `foot` adds a page-wide picture at the foot of the page, cited
|
|
26
|
+
* first, so it is on the page when the other one looks for its slot. */
|
|
27
|
+
const story = (foot, words) => {
|
|
28
|
+
const md = `# One\n\n${foot ? 'First :ref{id="foot"}.\n\n' : ''}${para(6, 1)} See :ref{id="head"}.\n\n${para(words, 2)}\n\n# Two\n\nEnd.`;
|
|
29
|
+
const config = {
|
|
30
|
+
page: { sizePreset: '17x24', dpi: 150 },
|
|
31
|
+
layout: { layoutType: 'multiple', columnCount: 3 },
|
|
32
|
+
bodyText: { fontSize: { value: 10, unit: 'pt' } },
|
|
33
|
+
headings: { levels: [{ level: 1, breakBefore: { enabled: true, parity: 'any' } }] },
|
|
34
|
+
};
|
|
35
|
+
const resources = [picture('head', 1400, { position: 'top', columns: 2 }), ...(foot ? [picture('foot', 300, { position: 'bottom', span: 'page' })] : [])];
|
|
36
|
+
return buildDocument({ markdown: md, resources }, config, createMeasurementCache());
|
|
37
|
+
};
|
|
38
|
+
const bottom = (c) => c.bbox.y + c.bbox.height;
|
|
39
|
+
describe('a closing band cut under a float that heads its empty columns (#681)', () => {
|
|
40
|
+
// The cut of such a band is taken under the float: the room kept for text
|
|
41
|
+
// between two float bands (three lines) is not asked for under it, where
|
|
42
|
+
// no text comes. Asked for, the cap was retried a line lower three times,
|
|
43
|
+
// and the band ended three lines under the picture, or was not cut.
|
|
44
|
+
for (const words of [3, 8, 30]) {
|
|
45
|
+
it(`ends where it ends with no float at the page's foot (${words} words)`, () => {
|
|
46
|
+
const plain = story(false, words).pages[0];
|
|
47
|
+
const doc = story(true, words);
|
|
48
|
+
const page = doc.pages[0];
|
|
49
|
+
expect(page.floats?.filter((f) => f.type === 'resource')).toHaveLength(2);
|
|
50
|
+
const head = page.floats.find((f) => f.resourceBlock?.resource.id === 'head');
|
|
51
|
+
const foot = page.floats.find((f) => f.resourceBlock?.resource.id === 'foot');
|
|
52
|
+
const text = page.columns.filter((c) => c.kind !== 'span');
|
|
53
|
+
expect(text[0].trailingCap).toBe(true);
|
|
54
|
+
expect(plain.columns[0].trailingCap).toBe(true);
|
|
55
|
+
expect(bottom(text[0])).toBeCloseTo(bottom(plain.columns[0]), 1);
|
|
56
|
+
// Within a line of the picture's band, and the columns under the
|
|
57
|
+
// picture hold nothing.
|
|
58
|
+
for (const c of text.slice(1)) {
|
|
59
|
+
expect(c.blocks).toHaveLength(0);
|
|
60
|
+
expect(c.bbox.height).toBeLessThanOrEqual(doc.baselineGrid + 0.5);
|
|
61
|
+
expect(c.bbox.y).toBeGreaterThanOrEqual(head.bbox.y + head.bbox.height - 0.5);
|
|
62
|
+
}
|
|
63
|
+
// The picture at the foot stands clear of the band.
|
|
64
|
+
expect(foot.bbox.y).toBeGreaterThanOrEqual(bottom(text[0]) - 0.5);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
it('keeps the text room between two float bands in a column no cap cut', () => {
|
|
68
|
+
// A long story: the first page flows on, and the picture at the head of
|
|
69
|
+
// a column with the other at its foot leaves at least three lines.
|
|
70
|
+
const md = `# One\n\nFirst :ref{id="foot"}.\n\n${para(6, 1)} See :ref{id="head"}.\n\n${Array.from({ length: 12 }, (_, i) => para(60, i)).join('\n\n')}`;
|
|
71
|
+
const config = {
|
|
72
|
+
page: { sizePreset: '17x24', dpi: 150 },
|
|
73
|
+
layout: { layoutType: 'multiple', columnCount: 3 },
|
|
74
|
+
bodyText: { fontSize: { value: 10, unit: 'pt' } },
|
|
75
|
+
headings: { levels: [{ level: 1, breakBefore: { enabled: true, parity: 'any' } }] },
|
|
76
|
+
};
|
|
77
|
+
const doc = buildDocument({ markdown: md, resources: [picture('head', 1400, { position: 'top', columns: 2 }), picture('foot', 1300, { position: 'bottom', span: 'page' })] }, config, createMeasurementCache());
|
|
78
|
+
for (const page of doc.pages) {
|
|
79
|
+
const floats = (page.floats ?? []).filter((f) => f.type === 'resource');
|
|
80
|
+
if (floats.length < 2)
|
|
81
|
+
continue;
|
|
82
|
+
for (const c of page.columns.filter((k) => k.kind !== 'span' && !k.trailingCap)) {
|
|
83
|
+
const above = floats.some((f) => f.bbox.y + f.bbox.height <= c.bbox.y + 0.5 && f.bbox.x < c.bbox.x + c.bbox.width && f.bbox.x + f.bbox.width > c.bbox.x);
|
|
84
|
+
const below = floats.some((f) => f.bbox.y >= c.bbox.y + c.bbox.height - 0.5 && f.bbox.x < c.bbox.x + c.bbox.width && f.bbox.x + f.bbox.width > c.bbox.x);
|
|
85
|
+
if (above && below)
|
|
86
|
+
expect(c.bbox.height).toBeGreaterThanOrEqual(3 * doc.baselineGrid - 0.5);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=trailingCapFloatHead.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trailingCapFloatHead.test.js","sourceRoot":"","sources":["../../../src/__tests__/pipeline/trailingCapFloatHead.test.ts"],"names":[],"mappings":"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"}
|