postext 0.3.17 → 0.3.19
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__/columnBalancing.test.d.ts +2 -0
- package/dist/__tests__/columnBalancing.test.d.ts.map +1 -0
- package/dist/__tests__/columnBalancing.test.js +372 -0
- package/dist/__tests__/columnBalancing.test.js.map +1 -0
- package/dist/__tests__/exports.test.js +6 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/__tests__/knuthPlass.test.js +60 -0
- package/dist/__tests__/knuthPlass.test.js.map +1 -1
- package/dist/__tests__/pipeline/floatPlacement.test.js +121 -0
- package/dist/__tests__/pipeline/floatPlacement.test.js.map +1 -1
- package/dist/__tests__/singleInk.test.d.ts +2 -0
- package/dist/__tests__/singleInk.test.d.ts.map +1 -0
- package/dist/__tests__/singleInk.test.js +42 -0
- package/dist/__tests__/singleInk.test.js.map +1 -0
- package/dist/canvas-backend/blockRender.d.ts.map +1 -1
- package/dist/canvas-backend/blockRender.js +93 -75
- package/dist/canvas-backend/blockRender.js.map +1 -1
- package/dist/canvas-backend/decorations.d.ts +4 -1
- package/dist/canvas-backend/decorations.d.ts.map +1 -1
- package/dist/canvas-backend/decorations.js +14 -6
- package/dist/canvas-backend/decorations.js.map +1 -1
- package/dist/canvas-backend/headerFooter.d.ts +0 -1
- package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
- package/dist/canvas-backend/headerFooter.js +0 -1
- package/dist/canvas-backend/headerFooter.js.map +1 -1
- package/dist/canvas-backend/index.d.ts.map +1 -1
- package/dist/canvas-backend/index.js +9 -10
- package/dist/canvas-backend/index.js.map +1 -1
- package/dist/defaults/diagramStyle.d.ts +5 -0
- package/dist/defaults/diagramStyle.d.ts.map +1 -0
- package/dist/defaults/diagramStyle.js +29 -0
- package/dist/defaults/diagramStyle.js.map +1 -0
- package/dist/defaults/headings.d.ts +7 -0
- package/dist/defaults/headings.d.ts.map +1 -1
- package/dist/defaults/headings.js +57 -3
- package/dist/defaults/headings.js.map +1 -1
- package/dist/defaults/index.d.ts +2 -1
- package/dist/defaults/index.d.ts.map +1 -1
- package/dist/defaults/index.js +10 -1
- package/dist/defaults/index.js.map +1 -1
- package/dist/defaults/shared.d.ts.map +1 -1
- package/dist/defaults/shared.js +10 -0
- package/dist/defaults/shared.js.map +1 -1
- package/dist/html-backend.d.ts +6 -0
- package/dist/html-backend.d.ts.map +1 -1
- package/dist/html-backend.js +183 -9
- package/dist/html-backend.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/knuthPlass/breakpoints.d.ts.map +1 -1
- package/dist/knuthPlass/breakpoints.js +75 -98
- package/dist/knuthPlass/breakpoints.js.map +1 -1
- package/dist/knuthPlass/types.d.ts +7 -0
- package/dist/knuthPlass/types.d.ts.map +1 -1
- package/dist/measure/cache.js +2 -2
- package/dist/measure/cache.js.map +1 -1
- package/dist/measure/canvas.d.ts +3 -0
- package/dist/measure/canvas.d.ts.map +1 -1
- package/dist/measure/canvas.js +40 -2
- package/dist/measure/canvas.js.map +1 -1
- package/dist/measure/font.d.ts +3 -2
- package/dist/measure/font.d.ts.map +1 -1
- package/dist/measure/font.js +5 -2
- package/dist/measure/font.js.map +1 -1
- package/dist/measure/plain.d.ts.map +1 -1
- package/dist/measure/plain.js +15 -7
- package/dist/measure/plain.js.map +1 -1
- package/dist/measure/rich.d.ts.map +1 -1
- package/dist/measure/rich.js +12 -14
- package/dist/measure/rich.js.map +1 -1
- package/dist/measure/types.d.ts +4 -0
- package/dist/measure/types.d.ts.map +1 -1
- package/dist/measure/types.js.map +1 -1
- package/dist/parse/injectSpans.d.ts +9 -0
- package/dist/parse/injectSpans.d.ts.map +1 -0
- package/dist/parse/injectSpans.js +35 -0
- package/dist/parse/injectSpans.js.map +1 -0
- package/dist/parse/inlineFormatting.d.ts.map +1 -1
- package/dist/parse/inlineFormatting.js +9 -35
- package/dist/parse/inlineFormatting.js.map +1 -1
- package/dist/parse/inlineMath.d.ts.map +1 -1
- package/dist/parse/inlineMath.js +26 -43
- package/dist/parse/inlineMath.js.map +1 -1
- package/dist/parse/sourceMapping.d.ts.map +1 -1
- package/dist/parse/sourceMapping.js +15 -8
- package/dist/parse/sourceMapping.js.map +1 -1
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +187 -37
- package/dist/pipeline/build.js.map +1 -1
- package/dist/pipeline/columnBalancing.d.ts +119 -0
- package/dist/pipeline/columnBalancing.d.ts.map +1 -0
- package/dist/pipeline/columnBalancing.js +219 -0
- package/dist/pipeline/columnBalancing.js.map +1 -0
- package/dist/pipeline/config.d.ts +4 -1
- package/dist/pipeline/config.d.ts.map +1 -1
- package/dist/pipeline/config.js +10 -1
- package/dist/pipeline/config.js.map +1 -1
- package/dist/pipeline/headerFooter.d.ts.map +1 -1
- package/dist/pipeline/headerFooter.js +7 -5
- package/dist/pipeline/headerFooter.js.map +1 -1
- package/dist/pipeline/lists.d.ts +4 -9
- package/dist/pipeline/lists.d.ts.map +1 -1
- package/dist/pipeline/lists.js +24 -42
- package/dist/pipeline/lists.js.map +1 -1
- package/dist/pipeline/placeholders.d.ts.map +1 -1
- package/dist/pipeline/placeholders.js +18 -51
- package/dist/pipeline/placeholders.js.map +1 -1
- package/dist/svg/singleInk.d.ts +10 -0
- package/dist/svg/singleInk.d.ts.map +1 -0
- package/dist/svg/singleInk.js +86 -0
- package/dist/svg/singleInk.js.map +1 -0
- package/dist/types.d.ts +44 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/vdt.d.ts +17 -1
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.js +34 -0
- package/dist/vdt.js.map +1 -1
- package/package.json +6 -6
|
@@ -138,4 +138,125 @@ describe('float placement in the build pipeline', () => {
|
|
|
138
138
|
expect(ids).toContain('bot');
|
|
139
139
|
});
|
|
140
140
|
});
|
|
141
|
+
const tableRes = (id, placement) => ({
|
|
142
|
+
id,
|
|
143
|
+
typeId: 'table',
|
|
144
|
+
kind: 'table',
|
|
145
|
+
caption: `Table ${id}.`,
|
|
146
|
+
createdAt: 0,
|
|
147
|
+
updatedAt: 0,
|
|
148
|
+
table: { model: { rows: [
|
|
149
|
+
[{ content: 'Stage' }, { content: 'Cost' }],
|
|
150
|
+
[{ content: 'Parse' }, { content: 'O(n)' }],
|
|
151
|
+
] } },
|
|
152
|
+
...(placement ? { placement } : {}),
|
|
153
|
+
});
|
|
154
|
+
/** Smallest distance from `value` to a multiple of `step`. */
|
|
155
|
+
const offGrid = (value, step) => {
|
|
156
|
+
const r = ((value % step) + step) % step;
|
|
157
|
+
return Math.min(r, step - r);
|
|
158
|
+
};
|
|
159
|
+
describe('baseline-grid alignment around float bands', () => {
|
|
160
|
+
const doubleCol = { ...smallPage, layout: { layoutType: 'double' } };
|
|
161
|
+
/** First text baseline of each column on a page, by column index. */
|
|
162
|
+
const firstBaselines = (page) => page.columns.map((col) => {
|
|
163
|
+
for (const block of col.blocks) {
|
|
164
|
+
if (block.lines.length > 0)
|
|
165
|
+
return block.lines[0].baseline;
|
|
166
|
+
}
|
|
167
|
+
return null;
|
|
168
|
+
});
|
|
169
|
+
/** Assert that on the page carrying the float every column's first baseline
|
|
170
|
+
* sits on the same global grid, and bbox.y shifts are grid multiples. */
|
|
171
|
+
const expectColumnsCongruent = (resources) => {
|
|
172
|
+
const doc = buildDocument({
|
|
173
|
+
markdown: `Lead :ref{id="${resources[0].id}"} paragraph.\n\n${filler(30)}`,
|
|
174
|
+
resources,
|
|
175
|
+
}, doubleCol);
|
|
176
|
+
const grid = doc.baselineGrid;
|
|
177
|
+
expect(grid).toBeGreaterThan(0);
|
|
178
|
+
const floatPage = doc.pages.find((p) => (p.floats ?? []).length > 0);
|
|
179
|
+
expect(floatPage).toBeDefined();
|
|
180
|
+
const baselines = firstBaselines(floatPage).filter((b) => b !== null);
|
|
181
|
+
expect(baselines.length).toBeGreaterThan(0);
|
|
182
|
+
// Congruent with the document-wide grid origin: page 0 column 0's first
|
|
183
|
+
// baseline is the reference (all pages share the content-area top).
|
|
184
|
+
const ref = firstBaselines(doc.pages[0]).find((b) => b !== null);
|
|
185
|
+
for (const b of baselines) {
|
|
186
|
+
expect(offGrid(b - ref, grid)).toBeLessThan(0.02);
|
|
187
|
+
}
|
|
188
|
+
for (const col of floatPage.columns) {
|
|
189
|
+
const minY = Math.min(...floatPage.columns.map((cc) => cc.bbox.y));
|
|
190
|
+
expect(offGrid(col.bbox.y - minY, grid)).toBeLessThan(0.02);
|
|
191
|
+
}
|
|
192
|
+
return doc;
|
|
193
|
+
};
|
|
194
|
+
it('keeps the displaced column on the global grid for a top column figure', () => {
|
|
195
|
+
expectColumnsCongruent([figure('f1', { position: 'top', span: 'column' })]);
|
|
196
|
+
});
|
|
197
|
+
it('keeps the displaced column on the global grid for a top column table', () => {
|
|
198
|
+
expectColumnsCongruent([tableRes('t1', { position: 'top', span: 'column' })]);
|
|
199
|
+
});
|
|
200
|
+
it('keeps all columns on the global grid for a full-width (span:page) top float', () => {
|
|
201
|
+
expectColumnsCongruent([figure('f1', { position: 'top', span: 'page' })]);
|
|
202
|
+
});
|
|
203
|
+
it('anchors a bottom float caption baseline to the grid shared with the other column', () => {
|
|
204
|
+
const doc = buildDocument({
|
|
205
|
+
markdown: `Lead :ref{id="f1"} paragraph.\n\n${filler(30)}`,
|
|
206
|
+
resources: [figure('f1', { position: 'bottom', span: 'column' })],
|
|
207
|
+
}, doubleCol);
|
|
208
|
+
const grid = doc.baselineGrid;
|
|
209
|
+
const floatPage = doc.pages.find((p) => (p.floats ?? []).length > 0);
|
|
210
|
+
expect(floatPage).toBeDefined();
|
|
211
|
+
const fb = floatPage.floats[0];
|
|
212
|
+
const capLines = fb.resourceBlock.captionLines;
|
|
213
|
+
expect(capLines.length).toBeGreaterThan(0);
|
|
214
|
+
// The caption's last baseline must land on a body baseline: congruent
|
|
215
|
+
// with contentTop + 0.8 × grid (the body baseline convention), i.e. on
|
|
216
|
+
// the same line a full opposite column would end on.
|
|
217
|
+
const contentTop = Math.min(...floatPage.columns.map((c) => c.bbox.y));
|
|
218
|
+
const lastBaseline = capLines[capLines.length - 1].baseline;
|
|
219
|
+
expect(offGrid(lastBaseline - contentTop - 0.8 * grid, grid)).toBeLessThan(0.02);
|
|
220
|
+
// The float stays within the original content area (bounded by the
|
|
221
|
+
// tallest column, which carries no bottom band) and below its own
|
|
222
|
+
// column's shrunk text area.
|
|
223
|
+
const maxColBottom = Math.max(...floatPage.columns.map((c) => c.bbox.y + c.bbox.height));
|
|
224
|
+
const ownCol = floatPage.columns[fb.columnIndex];
|
|
225
|
+
expect(fb.bbox.y + fb.bbox.height).toBeLessThanOrEqual(maxColBottom + 0.01);
|
|
226
|
+
expect(fb.bbox.y).toBeGreaterThan(ownCol.bbox.y + ownCol.bbox.height);
|
|
227
|
+
});
|
|
228
|
+
it('anchors a full-width bottom float caption to the grid as well', () => {
|
|
229
|
+
const doc = buildDocument({
|
|
230
|
+
markdown: `Lead :ref{id="f1"} paragraph.\n\n${filler(30)}`,
|
|
231
|
+
resources: [figure('f1', { position: 'bottom', span: 'page' })],
|
|
232
|
+
}, doubleCol);
|
|
233
|
+
const grid = doc.baselineGrid;
|
|
234
|
+
const floatPage = doc.pages.find((p) => (p.floats ?? []).length > 0);
|
|
235
|
+
expect(floatPage).toBeDefined();
|
|
236
|
+
const fb = floatPage.floats[0];
|
|
237
|
+
const capLines = fb.resourceBlock.captionLines;
|
|
238
|
+
const contentTop = Math.min(...floatPage.columns.map((c) => c.bbox.y));
|
|
239
|
+
const lastBaseline = capLines[capLines.length - 1].baseline;
|
|
240
|
+
expect(offGrid(lastBaseline - contentTop - 0.8 * grid, grid)).toBeLessThan(0.02);
|
|
241
|
+
});
|
|
242
|
+
it('returns the flow to the grid after an inline (position:here) resource', () => {
|
|
243
|
+
const doc = buildDocument({
|
|
244
|
+
markdown: `Intro paragraph.\n\nSee :ref{id="f1"}.\n\n::resource{id="f1"}\n\n${filler(6)}`,
|
|
245
|
+
resources: [figure('f1', { position: 'here' })],
|
|
246
|
+
}, doubleCol);
|
|
247
|
+
const grid = doc.baselineGrid;
|
|
248
|
+
// Reference: very first text baseline of the document (on-grid by construction).
|
|
249
|
+
const ref = firstBaselines(doc.pages[0]).find((b) => b !== null);
|
|
250
|
+
// Every text baseline AFTER the inline resource must still be on the grid.
|
|
251
|
+
for (const page of doc.pages) {
|
|
252
|
+
for (const col of page.columns) {
|
|
253
|
+
for (const block of col.blocks) {
|
|
254
|
+
if (block.type === 'resource' || block.lines.length === 0)
|
|
255
|
+
continue;
|
|
256
|
+
expect(offGrid(block.lines[0].baseline - ref, grid)).toBeLessThan(0.02);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
});
|
|
141
262
|
//# sourceMappingURL=floatPlacement.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floatPlacement.test.js","sourceRoot":"","sources":["../../../src/__tests__/pipeline/floatPlacement.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"floatPlacement.test.js","sourceRoot":"","sources":["../../../src/__tests__/pipeline/floatPlacement.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"singleInk.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/singleInk.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { applySingleInkToSvg } from '../svg/singleInk';
|
|
3
|
+
const INK = '#295aa3';
|
|
4
|
+
describe('applySingleInkToSvg', () => {
|
|
5
|
+
it('maps black to the full ink and white to white', () => {
|
|
6
|
+
const svg = '<svg><rect fill="#000000" /><rect fill="#ffffff" /></svg>';
|
|
7
|
+
const out = applySingleInkToSvg(svg, INK);
|
|
8
|
+
expect(out).toContain(`fill="${INK}"`);
|
|
9
|
+
expect(out).toContain('fill="#ffffff"');
|
|
10
|
+
});
|
|
11
|
+
it('maps light colours to light tints and dark colours to dark tints', () => {
|
|
12
|
+
const svg = '<svg><rect fill="#e7eef7" /><rect stroke="#1c3f73" /></svg>';
|
|
13
|
+
const out = applySingleInkToSvg(svg, INK);
|
|
14
|
+
const hexes = [...out.matchAll(/"(#[0-9a-f]{6})"/g)].map((m) => m[1]);
|
|
15
|
+
expect(hexes).toHaveLength(2);
|
|
16
|
+
const lum = (h) => 0.2126 * parseInt(h.slice(1, 3), 16) + 0.7152 * parseInt(h.slice(3, 5), 16) + 0.0722 * parseInt(h.slice(5, 7), 16);
|
|
17
|
+
expect(lum(hexes[0])).toBeGreaterThan(220 * 0.9); // near-white tint stays light
|
|
18
|
+
// A dark source maps to a heavy tint: well below the light tint, and no
|
|
19
|
+
// lighter than ~50% coverage. (It cannot go darker than the ink itself.)
|
|
20
|
+
expect(lum(hexes[1])).toBeLessThan(lum(hexes[0]) - 80);
|
|
21
|
+
expect(lum(hexes[1])).toBeLessThan(170);
|
|
22
|
+
});
|
|
23
|
+
it('handles short hex, rgb()/rgba(), and keyword paints; preserves alpha', () => {
|
|
24
|
+
const svg = '<svg><rect fill="#abc" /><rect fill="rgba(160, 160, 160, 0.5)" style="stroke:black;" /></svg>';
|
|
25
|
+
const out = applySingleInkToSvg(svg, INK);
|
|
26
|
+
expect(out).not.toContain('#abc');
|
|
27
|
+
expect(out).toMatch(/rgba\(\d+, \d+, \d+, 0\.5\)/);
|
|
28
|
+
expect(out).toContain(`stroke:${INK}`);
|
|
29
|
+
});
|
|
30
|
+
it('does not touch url(#id) references, text content, or currentColor', () => {
|
|
31
|
+
const svg = '<svg><path marker-end="url(#arrow)" fill="currentColor" /><text>black ink</text></svg>';
|
|
32
|
+
const out = applySingleInkToSvg(svg, INK);
|
|
33
|
+
expect(out).toContain('url(#arrow)');
|
|
34
|
+
expect(out).toContain('fill="currentColor"');
|
|
35
|
+
expect(out).toContain('>black ink<');
|
|
36
|
+
});
|
|
37
|
+
it('returns the input unchanged for an unparseable ink', () => {
|
|
38
|
+
const svg = '<svg><rect fill="#123456" /></svg>';
|
|
39
|
+
expect(applySingleInkToSvg(svg, 'not-a-colour')).toBe(svg);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=singleInk.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"singleInk.test.js","sourceRoot":"","sources":["../../src/__tests__/singleInk.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockRender.d.ts","sourceRoot":"","sources":["../../src/canvas-backend/blockRender.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAsC,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"blockRender.d.ts","sourceRoot":"","sources":["../../src/canvas-backend/blockRender.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAsC,MAAM,QAAQ,CAAC;AA8O3E,wBAAgB,WAAW,CACzB,GAAG,EAAE,wBAAwB,EAC7B,KAAK,EAAE,QAAQ,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,IAAI,CA6BN"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getMathRaster } from '../math/rasterCache';
|
|
2
|
-
import {
|
|
2
|
+
import { renderHeaderFooterSlot } from './headerFooter';
|
|
3
3
|
import { renderResourceBlock } from './renderResourceBlock';
|
|
4
4
|
function pickSegmentFont(bold, italic, font, boldFont, italicFont, boldItalicFont) {
|
|
5
5
|
if (bold && italic && boldItalicFont)
|
|
@@ -17,6 +17,17 @@ function pickSegmentColor(bold, italic, color, boldColor, italicColor) {
|
|
|
17
17
|
return italicColor;
|
|
18
18
|
return color;
|
|
19
19
|
}
|
|
20
|
+
/** Parsed Path2D objects per math render, so repeated paints of the same
|
|
21
|
+
* formula don't re-parse the SVG path data. */
|
|
22
|
+
const mathPathCache = new WeakMap();
|
|
23
|
+
function getMathPaths(render) {
|
|
24
|
+
let paths = mathPathCache.get(render);
|
|
25
|
+
if (!paths) {
|
|
26
|
+
paths = render.paths.map((p) => new Path2D(p.d));
|
|
27
|
+
mathPathCache.set(render, paths);
|
|
28
|
+
}
|
|
29
|
+
return paths;
|
|
30
|
+
}
|
|
20
31
|
function renderMathRender(ctx, render, topLeftX, topLeftY, fallbackColor) {
|
|
21
32
|
const { viewBox, widthPx, heightPx, paths } = render;
|
|
22
33
|
if (!paths.length || viewBox.width <= 0 || viewBox.height <= 0) {
|
|
@@ -34,13 +45,14 @@ function renderMathRender(ctx, render, topLeftX, topLeftY, fallbackColor) {
|
|
|
34
45
|
}
|
|
35
46
|
const sx = widthPx / viewBox.width;
|
|
36
47
|
const sy = heightPx / viewBox.height;
|
|
48
|
+
const path2ds = getMathPaths(render);
|
|
37
49
|
ctx.save();
|
|
38
50
|
ctx.translate(topLeftX, topLeftY);
|
|
39
51
|
ctx.scale(sx, sy);
|
|
40
52
|
ctx.translate(-viewBox.minX, -viewBox.minY);
|
|
41
|
-
for (
|
|
42
|
-
ctx.fillStyle =
|
|
43
|
-
ctx.fill(
|
|
53
|
+
for (let i = 0; i < paths.length; i++) {
|
|
54
|
+
ctx.fillStyle = paths[i].fill === 'currentColor' ? fallbackColor : paths[i].fill;
|
|
55
|
+
ctx.fill(path2ds[i]);
|
|
44
56
|
}
|
|
45
57
|
ctx.restore();
|
|
46
58
|
}
|
|
@@ -49,96 +61,92 @@ function renderMathSegment(ctx, seg, x, baselineY, fallbackColor) {
|
|
|
49
61
|
return;
|
|
50
62
|
renderMathRender(ctx, seg.mathRender, x, baselineY - seg.mathRender.ascentPx, fallbackColor);
|
|
51
63
|
}
|
|
52
|
-
|
|
53
|
-
|
|
64
|
+
/**
|
|
65
|
+
* Paint a line's segments left to right starting at `startX`. When
|
|
66
|
+
* `justifiedSpaceWidth` is set, spaces advance by it instead of their
|
|
67
|
+
* measured width. Tracks the current canvas font/fillStyle to skip
|
|
68
|
+
* redundant state changes (segments overwhelmingly share styling).
|
|
69
|
+
*/
|
|
70
|
+
function renderSegments(ctx, segments, startX, baseline, style, justifiedSpaceWidth) {
|
|
71
|
+
let x = startX;
|
|
72
|
+
let currentFont = '';
|
|
73
|
+
let currentFill = '';
|
|
74
|
+
for (const seg of segments) {
|
|
75
|
+
if (seg.kind === 'space') {
|
|
76
|
+
x += justifiedSpaceWidth ?? seg.width;
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (seg.kind === 'math') {
|
|
80
|
+
renderMathSegment(ctx, seg, x, baseline, style.color);
|
|
81
|
+
x += seg.width;
|
|
82
|
+
// Math painting touches canvas state; force re-set on the next text segment.
|
|
83
|
+
currentFont = '';
|
|
84
|
+
currentFill = '';
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
const font = pickSegmentFont(!!seg.bold, !!seg.italic, style.font, style.boldFont, style.italicFont, style.boldItalicFont);
|
|
88
|
+
if (font !== currentFont) {
|
|
89
|
+
ctx.font = font;
|
|
90
|
+
currentFont = font;
|
|
91
|
+
}
|
|
92
|
+
const fill = seg.refResourceId !== undefined && style.refColor
|
|
93
|
+
? style.refColor
|
|
94
|
+
: pickSegmentColor(!!seg.bold, !!seg.italic, style.color, style.boldColor, style.italicColor);
|
|
95
|
+
if (fill !== currentFill) {
|
|
96
|
+
ctx.fillStyle = fill;
|
|
97
|
+
currentFill = fill;
|
|
98
|
+
}
|
|
99
|
+
ctx.fillText(seg.text, x, baseline);
|
|
100
|
+
x += seg.width;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function renderLine(ctx, line, style, textAlign, columnWidth, columnX) {
|
|
54
104
|
ctx.textBaseline = 'alphabetic';
|
|
55
|
-
const hasRichSegments = line.segments && line.segments.some((s) => s.bold || s.italic);
|
|
56
105
|
// Effective width accounts for line-level indent (e.g. first-line or hanging indent)
|
|
57
106
|
const lineIndent = line.bbox.x - columnX;
|
|
58
107
|
const effectiveWidth = columnWidth - lineIndent;
|
|
59
|
-
|
|
60
|
-
|
|
108
|
+
const segments = line.segments;
|
|
109
|
+
// Justified rendering with per-segment spacing. Last lines render ragged at
|
|
110
|
+
// natural width — except when overfull: Knuth-Plass may accept a final line
|
|
111
|
+
// wider than the measure on the assumption that its inter-word glue shrinks
|
|
112
|
+
// (TeX glue-setting semantics), so honor that by compressing the spaces to
|
|
113
|
+
// fit the measure exactly instead of overflowing into the clip.
|
|
114
|
+
if (textAlign === 'justify' && segments && segments.length > 0) {
|
|
61
115
|
let wordWidth = 0;
|
|
116
|
+
let naturalWidth = 0;
|
|
62
117
|
let spaceCount = 0;
|
|
63
|
-
for (const seg of
|
|
118
|
+
for (const seg of segments) {
|
|
64
119
|
if (seg.kind === 'space')
|
|
65
120
|
spaceCount++;
|
|
66
121
|
else
|
|
67
122
|
wordWidth += seg.width;
|
|
123
|
+
naturalWidth += seg.width;
|
|
68
124
|
}
|
|
69
|
-
if (spaceCount > 0) {
|
|
125
|
+
if (spaceCount > 0 && (!line.isLastLine || naturalWidth > effectiveWidth)) {
|
|
70
126
|
const justifiedSpaceWidth = (effectiveWidth - wordWidth) / spaceCount;
|
|
71
|
-
|
|
72
|
-
for (const seg of line.segments) {
|
|
73
|
-
if (seg.kind === 'space') {
|
|
74
|
-
x += justifiedSpaceWidth;
|
|
75
|
-
}
|
|
76
|
-
else if (seg.kind === 'math') {
|
|
77
|
-
renderMathSegment(ctx, seg, x, line.baseline, color);
|
|
78
|
-
x += seg.width;
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
ctx.font = pickSegmentFont(!!seg.bold, !!seg.italic, font, boldFont, italicFont, boldItalicFont);
|
|
82
|
-
ctx.fillStyle = seg.refResourceId !== undefined && refColor
|
|
83
|
-
? refColor
|
|
84
|
-
: pickSegmentColor(!!seg.bold, !!seg.italic, color, boldColor, italicColor);
|
|
85
|
-
ctx.fillText(seg.text, x, line.baseline);
|
|
86
|
-
x += seg.width;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
127
|
+
renderSegments(ctx, segments, line.bbox.x, line.baseline, style, justifiedSpaceWidth);
|
|
89
128
|
return;
|
|
90
129
|
}
|
|
91
130
|
}
|
|
92
131
|
// Centred alignment — used by math display blocks. Distribute remaining
|
|
93
132
|
// space equally on either side.
|
|
94
|
-
if (textAlign === 'center' &&
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
else if (seg.kind === 'math') {
|
|
102
|
-
renderMathSegment(ctx, seg, x, line.baseline, color);
|
|
103
|
-
x += seg.width;
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
ctx.font = pickSegmentFont(!!seg.bold, !!seg.italic, font, boldFont, italicFont, boldItalicFont);
|
|
107
|
-
ctx.fillStyle = seg.refResourceId !== undefined && refColor
|
|
108
|
-
? refColor
|
|
109
|
-
: pickSegmentColor(!!seg.bold, !!seg.italic, color, boldColor, italicColor);
|
|
110
|
-
ctx.fillText(seg.text, x, line.baseline);
|
|
111
|
-
x += seg.width;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
133
|
+
if (textAlign === 'center' && segments) {
|
|
134
|
+
let contentWidth = 0;
|
|
135
|
+
for (const seg of segments)
|
|
136
|
+
contentWidth += seg.width;
|
|
137
|
+
const startX = line.bbox.x + Math.max(0, (effectiveWidth - contentWidth) / 2);
|
|
138
|
+
renderSegments(ctx, segments, startX, line.baseline, style);
|
|
114
139
|
return;
|
|
115
140
|
}
|
|
116
|
-
// Ragged (left-aligned) rendering — also used for last lines of justified
|
|
117
|
-
//
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
let x = line.bbox.x;
|
|
122
|
-
for (const seg of line.segments) {
|
|
123
|
-
if (seg.kind === 'space') {
|
|
124
|
-
x += seg.width;
|
|
125
|
-
}
|
|
126
|
-
else if (seg.kind === 'math') {
|
|
127
|
-
renderMathSegment(ctx, seg, x, line.baseline, color);
|
|
128
|
-
x += seg.width;
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
ctx.font = pickSegmentFont(!!seg.bold, !!seg.italic, font, boldFont, italicFont, boldItalicFont);
|
|
132
|
-
ctx.fillStyle = seg.refResourceId !== undefined && refColor
|
|
133
|
-
? refColor
|
|
134
|
-
: pickSegmentColor(!!seg.bold, !!seg.italic, color, boldColor, italicColor);
|
|
135
|
-
ctx.fillText(seg.text, x, line.baseline);
|
|
136
|
-
x += seg.width;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
141
|
+
// Ragged (left-aligned) rendering — also used for last lines of justified
|
|
142
|
+
// blocks. Segments are needed when any of them styles differently from the
|
|
143
|
+
// block (bold/italic/math/ref); otherwise one fillText paints the line.
|
|
144
|
+
if (segments && segments.some((s) => s.bold || s.italic || s.kind === 'math' || s.refResourceId !== undefined)) {
|
|
145
|
+
renderSegments(ctx, segments, line.bbox.x, line.baseline, style);
|
|
139
146
|
return;
|
|
140
147
|
}
|
|
141
|
-
ctx.font = font;
|
|
148
|
+
ctx.font = style.font;
|
|
149
|
+
ctx.fillStyle = style.color;
|
|
142
150
|
ctx.fillText(line.text, line.bbox.x, line.baseline);
|
|
143
151
|
}
|
|
144
152
|
function renderBullet(ctx, block) {
|
|
@@ -175,7 +183,7 @@ export function renderBlock(ctx, block, columnWidth, columnX) {
|
|
|
175
183
|
if (block.hidden)
|
|
176
184
|
return;
|
|
177
185
|
if (block.designOverlay) {
|
|
178
|
-
|
|
186
|
+
renderHeaderFooterSlot(ctx, block.designOverlay);
|
|
179
187
|
return;
|
|
180
188
|
}
|
|
181
189
|
if (block.type === 'resource') {
|
|
@@ -185,8 +193,18 @@ export function renderBlock(ctx, block, columnWidth, columnX) {
|
|
|
185
193
|
if (block.type === 'listItem') {
|
|
186
194
|
renderBullet(ctx, block);
|
|
187
195
|
}
|
|
196
|
+
const style = {
|
|
197
|
+
font: block.fontString,
|
|
198
|
+
boldFont: block.boldFontString,
|
|
199
|
+
italicFont: block.italicFontString,
|
|
200
|
+
boldItalicFont: block.boldItalicFontString,
|
|
201
|
+
color: block.color,
|
|
202
|
+
boldColor: block.boldColor,
|
|
203
|
+
italicColor: block.italicColor,
|
|
204
|
+
refColor: block.refColor,
|
|
205
|
+
};
|
|
188
206
|
for (const line of block.lines) {
|
|
189
|
-
renderLine(ctx, line,
|
|
207
|
+
renderLine(ctx, line, style, block.textAlign, columnWidth, columnX);
|
|
190
208
|
}
|
|
191
209
|
if (block.strikethroughText) {
|
|
192
210
|
renderStrikethrough(ctx, block);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockRender.js","sourceRoot":"","sources":["../../src/canvas-backend/blockRender.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"blockRender.js","sourceRoot":"","sources":["../../src/canvas-backend/blockRender.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { VDTDocument, VDTPage, VDTColumn, BoundingBox } from '../vdt';
|
|
2
|
-
export declare function renderBaselineGrid(ctx: CanvasRenderingContext2D, contentArea: BoundingBox, baselineIncrement: number, color: string, lineWidth: number
|
|
2
|
+
export declare function renderBaselineGrid(ctx: CanvasRenderingContext2D, contentArea: BoundingBox, baselineIncrement: number, color: string, lineWidth: number, textExtent: {
|
|
3
|
+
top: number;
|
|
4
|
+
bottom: number;
|
|
5
|
+
}): void;
|
|
3
6
|
export declare function renderColumnRule(ctx: CanvasRenderingContext2D, columns: VDTColumn[], color: string, lineWidth: number): void;
|
|
4
7
|
export declare function renderCutLines(ctx: CanvasRenderingContext2D, page: VDTPage, doc: VDTDocument): void;
|
|
5
8
|
export declare function computeContentArea(page: VDTPage, doc: VDTDocument): BoundingBox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorations.d.ts","sourceRoot":"","sources":["../../src/canvas-backend/decorations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG3E,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,wBAAwB,EAC7B,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,MAAM,EACzB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"decorations.d.ts","sourceRoot":"","sources":["../../src/canvas-backend/decorations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG3E,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,wBAAwB,EAC7B,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,MAAM,EACzB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1C,IAAI,CA4BN;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,wBAAwB,EAC7B,OAAO,EAAE,SAAS,EAAE,EACpB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,IAAI,CAqBN;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,WAAW,GACf,IAAI,CAqDN;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,WAAW,CAsB/E"}
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
import { dimensionToPx } from '../units';
|
|
2
|
-
export function renderBaselineGrid(ctx, contentArea, baselineIncrement, color, lineWidth) {
|
|
2
|
+
export function renderBaselineGrid(ctx, contentArea, baselineIncrement, color, lineWidth, textExtent) {
|
|
3
3
|
ctx.save();
|
|
4
4
|
ctx.strokeStyle = color;
|
|
5
5
|
ctx.lineWidth = lineWidth;
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
// Baselines live on the global grid anchored at the content-area top
|
|
7
|
+
// (first baseline at 0.8 × increment, matching line placement). The drawn
|
|
8
|
+
// range is bounded by where text actually sits — from the first text line
|
|
9
|
+
// to the last — so float bands and unused tail space show no lines.
|
|
10
|
+
// `k0` may be negative: when column 0 carries a top float band,
|
|
11
|
+
// `contentArea.y` (derived from that column) sits below the global top
|
|
12
|
+
// while another column's text starts at it; band heights are grid
|
|
13
|
+
// multiples, so those earlier baselines still lie on the global grid.
|
|
14
|
+
const eps = 0.5;
|
|
15
|
+
const firstBaseline = contentArea.y + baselineIncrement * 0.8;
|
|
16
|
+
const k0 = Math.ceil((textExtent.top - eps - firstBaseline) / baselineIncrement);
|
|
17
|
+
let y = firstBaseline + k0 * baselineIncrement;
|
|
10
18
|
const right = contentArea.x + contentArea.width;
|
|
11
|
-
|
|
19
|
+
while (y <= textExtent.bottom + eps) {
|
|
12
20
|
ctx.beginPath();
|
|
13
21
|
ctx.moveTo(contentArea.x, y);
|
|
14
22
|
ctx.lineTo(right, y);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorations.js","sourceRoot":"","sources":["../../src/canvas-backend/decorations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,kBAAkB,CAChC,GAA6B,EAC7B,WAAwB,EACxB,iBAAyB,EACzB,KAAa,EACb,SAAiB;
|
|
1
|
+
{"version":3,"file":"decorations.js","sourceRoot":"","sources":["../../src/canvas-backend/decorations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headerFooter.d.ts","sourceRoot":"","sources":["../../src/canvas-backend/headerFooter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAKd,MAAM,QAAQ,CAAC;AA0FhB,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,aAAa,GAClB,IAAI,CAMN
|
|
1
|
+
{"version":3,"file":"headerFooter.d.ts","sourceRoot":"","sources":["../../src/canvas-backend/headerFooter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAKd,MAAM,QAAQ,CAAC;AA0FhB,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,aAAa,GAClB,IAAI,CAMN"}
|