postext-epub 0.25.1 → 0.27.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/composed.test.js +11 -3
- package/dist/composed.test.js.map +1 -1
- package/dist/composedCrossChapterJump.test.d.ts +2 -0
- package/dist/composedCrossChapterJump.test.d.ts.map +1 -0
- package/dist/composedCrossChapterJump.test.js +58 -0
- package/dist/composedCrossChapterJump.test.js.map +1 -0
- package/dist/frameWritingMode.test.d.ts +2 -0
- package/dist/frameWritingMode.test.d.ts.map +1 -0
- package/dist/frameWritingMode.test.js +60 -0
- package/dist/frameWritingMode.test.js.map +1 -0
- package/dist/reflowable/css.d.ts +3 -0
- package/dist/reflowable/css.d.ts.map +1 -1
- package/dist/reflowable/css.js +10 -0
- package/dist/reflowable/css.js.map +1 -1
- package/dist/reflowable/index.js +1 -1
- package/dist/reflowable/index.js.map +1 -1
- package/dist/reflowable/labels.d.ts +10 -0
- package/dist/reflowable/labels.d.ts.map +1 -0
- package/dist/reflowable/labels.js +110 -0
- package/dist/reflowable/labels.js.map +1 -0
- package/dist/reflowable/labels.test.d.ts +2 -0
- package/dist/reflowable/labels.test.d.ts.map +1 -0
- package/dist/reflowable/labels.test.js +75 -0
- package/dist/reflowable/labels.test.js.map +1 -0
- package/dist/reflowable/model.d.ts +13 -0
- package/dist/reflowable/model.d.ts.map +1 -1
- package/dist/reflowable/walk.d.ts +2 -0
- package/dist/reflowable/walk.d.ts.map +1 -1
- package/dist/reflowable/walk.js +19 -1
- package/dist/reflowable/walk.js.map +1 -1
- package/dist/reflowable/xhtml.d.ts.map +1 -1
- package/dist/reflowable/xhtml.js +12 -2
- package/dist/reflowable/xhtml.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// The words a `:::figure` sets on its picture (#860), back on the picture
|
|
2
|
+
// of a reflowable book (#955): one inline SVG laid over the image, in the
|
|
3
|
+
// picture's own coordinates, so the labels keep their place and their
|
|
4
|
+
// proportion whatever the width the reader gives the picture.
|
|
5
|
+
//
|
|
6
|
+
// Only what an SVG `<text>` says as well as the print does is drawn: a
|
|
7
|
+
// horizontal label of plain words, in bold or italic, with the halo and the
|
|
8
|
+
// plate of its style. A label with a formula, a chip, a mark, a script, a
|
|
9
|
+
// line the bidi algorithm reordered or a vertical column stays in the list
|
|
10
|
+
// of labels that follows the picture, out of sight, as before.
|
|
11
|
+
import { figureLabelMatrix, parseFontString, uncroppedPictureBox } from 'postext';
|
|
12
|
+
import { familyStack } from './css';
|
|
13
|
+
import { fontPx, xmlAttr, xmlText } from './inline';
|
|
14
|
+
const n = (v) => String(+v.toFixed(3));
|
|
15
|
+
/** Segment fields an SVG `<text>` cannot set as the print does. */
|
|
16
|
+
function plain(seg) {
|
|
17
|
+
return (seg.kind === 'text' || seg.kind === 'space')
|
|
18
|
+
&& !seg.script && !seg.baselineShift && !seg.stacked && !seg.cjkMarks && !seg.ruby && !seg.kunten
|
|
19
|
+
&& !seg.warichu && !seg.sideMarker && !seg.mark && !seg.chip && !seg.mathRender && !seg.swatch && !seg.footnoteId
|
|
20
|
+
&& !seg.tab && !seg.leader && !seg.labelTab && !seg.tcy && seg.orientation === undefined && !seg.rtl;
|
|
21
|
+
}
|
|
22
|
+
function drawable(layout) {
|
|
23
|
+
if (layout.vertical || layout.mirrored || layout.direction === 'rtl')
|
|
24
|
+
return false;
|
|
25
|
+
return layout.lines.every((line) => !line.order && !line.highlights?.length && (line.segments ?? []).every(plain));
|
|
26
|
+
}
|
|
27
|
+
/** The font of one segment: the label's face for its weight and slant,
|
|
28
|
+
* unless the segment carries its own. */
|
|
29
|
+
function faceOf(layout, seg) {
|
|
30
|
+
if (seg.fontString)
|
|
31
|
+
return seg.fontString;
|
|
32
|
+
if (seg.bold && seg.italic)
|
|
33
|
+
return layout.boldItalicFontString;
|
|
34
|
+
if (seg.bold)
|
|
35
|
+
return layout.boldFontString;
|
|
36
|
+
if (seg.italic)
|
|
37
|
+
return layout.italicFontString;
|
|
38
|
+
return layout.fontString;
|
|
39
|
+
}
|
|
40
|
+
function fontAttrs(font) {
|
|
41
|
+
const face = parseFontString(font);
|
|
42
|
+
const parts = [`font-size="${n(fontPx(font))}"`];
|
|
43
|
+
if (face) {
|
|
44
|
+
parts.push(`font-family="${xmlAttr(familyStack(face.family))}"`);
|
|
45
|
+
if (face.weight !== 400)
|
|
46
|
+
parts.push(`font-weight="${face.weight}"`);
|
|
47
|
+
if (face.style === 'italic')
|
|
48
|
+
parts.push('font-style="italic"');
|
|
49
|
+
}
|
|
50
|
+
return parts.join(' ');
|
|
51
|
+
}
|
|
52
|
+
/** One line as a `<text>`: a `<tspan>` per word run at the x the layout
|
|
53
|
+
* measured, so a face with other metrics cannot push the words together. */
|
|
54
|
+
function lineText(layout, line, extra) {
|
|
55
|
+
const y = n(line.baseline);
|
|
56
|
+
const segments = line.segments ?? [];
|
|
57
|
+
if (segments.length === 0) {
|
|
58
|
+
if (line.text.trim() === '')
|
|
59
|
+
return '';
|
|
60
|
+
return `<text x="${n(line.bbox.x)}" y="${y}" ${fontAttrs(layout.fontString)}${extra}>${xmlText(line.text)}</text>`;
|
|
61
|
+
}
|
|
62
|
+
let x = line.bbox.x;
|
|
63
|
+
const runs = [];
|
|
64
|
+
for (const seg of segments) {
|
|
65
|
+
if (seg.kind === 'text' && seg.text.trim() !== '') {
|
|
66
|
+
const tracking = seg.tracking ? ` letter-spacing="${n(seg.tracking)}"` : '';
|
|
67
|
+
runs.push(`<tspan x="${n(x)}" ${fontAttrs(faceOf(layout, seg))}${tracking}>${xmlText(seg.text)}</tspan>`);
|
|
68
|
+
}
|
|
69
|
+
x += seg.width;
|
|
70
|
+
}
|
|
71
|
+
return runs.length === 0 ? '' : `<text y="${y}"${extra}>${runs.join('')}</text>`;
|
|
72
|
+
}
|
|
73
|
+
function labelGroup(layout) {
|
|
74
|
+
const m = figureLabelMatrix(layout, 0, 0);
|
|
75
|
+
const out = [];
|
|
76
|
+
if (layout.background) {
|
|
77
|
+
const r = layout.background.rect;
|
|
78
|
+
out.push(`<rect x="${n(r.x)}" y="${n(r.y)}" width="${n(r.width)}" height="${n(r.height)}" fill="${xmlAttr(layout.background.color)}"/>`);
|
|
79
|
+
}
|
|
80
|
+
if (layout.halo && layout.halo.widthPx > 0) {
|
|
81
|
+
const halo = ` fill="${xmlAttr(layout.halo.color)}" stroke="${xmlAttr(layout.halo.color)}" stroke-width="${n(2 * layout.halo.widthPx)}" stroke-linejoin="round"`;
|
|
82
|
+
for (const line of layout.lines)
|
|
83
|
+
out.push(lineText(layout, line, halo));
|
|
84
|
+
}
|
|
85
|
+
const ink = ` fill="${xmlAttr(layout.color)}"`;
|
|
86
|
+
for (const line of layout.lines)
|
|
87
|
+
out.push(lineText(layout, line, ink));
|
|
88
|
+
const body = out.filter(Boolean).join('');
|
|
89
|
+
return body ? `<g transform="matrix(${m.map(n).join(' ')})">${body}</g>` : '';
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* The SVG laid over the picture of a figure with labels, or undefined when
|
|
93
|
+
* no label can be drawn that way. Its viewBox is the picture's box in the
|
|
94
|
+
* body's coordinates (the whole picture, past the safe area the print
|
|
95
|
+
* crops to), so the labels land where the print puts them. Right-to-left
|
|
96
|
+
* pages are laid out mirrored: the caller leaves them to the list.
|
|
97
|
+
*/
|
|
98
|
+
export function figureLabelsOverlay(rb) {
|
|
99
|
+
if (rb.kind !== 'bitmap' && rb.kind !== 'svg')
|
|
100
|
+
return undefined;
|
|
101
|
+
const groups = (rb.labels ?? [])
|
|
102
|
+
.map((l) => (l.layout && drawable(l.layout) ? labelGroup(l.layout) : ''))
|
|
103
|
+
.filter(Boolean);
|
|
104
|
+
if (groups.length === 0)
|
|
105
|
+
return undefined;
|
|
106
|
+
const { width, height } = rb.bodyRect;
|
|
107
|
+
const box = rb.bodySource ? uncroppedPictureBox(0, 0, width, height, rb.bodySource) : { x: 0, y: 0, width, height };
|
|
108
|
+
return `<svg class="pt-label-layer" xmlns="http://www.w3.org/2000/svg" viewBox="${n(box.x)} ${n(box.y)} ${n(box.width)} ${n(box.height)}" preserveAspectRatio="none" aria-hidden="true" focusable="false">${groups.join('')}</svg>`;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=labels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/reflowable/labels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labels.test.d.ts","sourceRoot":"","sources":["../../src/reflowable/labels.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { baseConfig, layOut } from './__tests__/vdt';
|
|
3
|
+
import { figureLabelsOverlay } from './labels';
|
|
4
|
+
// #955: the labels of a figure that the print draws as text, drawn over the
|
|
5
|
+
// picture of a reflowable book as one SVG in the picture's coordinates.
|
|
6
|
+
const resource = (extra = {}) => ({
|
|
7
|
+
id: 'mapa', typeId: 'figure', kind: 'bitmap', altText: 'A map', createdAt: 0, updatedAt: 0,
|
|
8
|
+
bitmap: { fileId: 'mapa.png', format: 'png', width: 400, height: 300 },
|
|
9
|
+
anchors: [
|
|
10
|
+
{ id: 'a', x: 0.2, y: 0.5, style: 'sea' },
|
|
11
|
+
{ id: 'b', x: 0.7, y: 0.3, style: 'plate' },
|
|
12
|
+
{ id: 'v', x: 0.5, y: 0.2, writingMode: 'vertical-rl' },
|
|
13
|
+
{ id: 'f', x: 0.5, y: 0.9 },
|
|
14
|
+
],
|
|
15
|
+
...extra,
|
|
16
|
+
});
|
|
17
|
+
const config = {
|
|
18
|
+
...baseConfig,
|
|
19
|
+
labelStyles: [
|
|
20
|
+
{ id: 'sea', halo: { color: { hex: '#ffffff', model: 'hex' }, width: { value: 1, unit: 'px' } } },
|
|
21
|
+
{ id: 'plate', background: { hex: '#ffeecc', model: 'hex' }, padding: { value: 2, unit: 'px' } },
|
|
22
|
+
],
|
|
23
|
+
};
|
|
24
|
+
const figure = (...labels) => [':::figure{resource="mapa"}', ...labels, ':::', ''].join('\n');
|
|
25
|
+
const block = (doc) => [...doc.blocks, ...doc.pages.flatMap((p) => p.floats ?? [])].find((b) => b.resourceBlock?.resource.id === 'mapa');
|
|
26
|
+
const overlay = (md, res = resource(), cfg = config) => figureLabelsOverlay(block(layOut(md, cfg, [res])).resourceBlock);
|
|
27
|
+
describe('the labels drawn over a picture in the reflowable EPUB (#955)', () => {
|
|
28
|
+
it('draws a label as text at its place, its words at the x the print measured', () => {
|
|
29
|
+
const svg = overlay(figure('::label[Atlantic]{at="f"}'));
|
|
30
|
+
expect(svg).toMatch(/^<svg class="pt-label-layer" xmlns="http:\/\/www\.w3\.org\/2000\/svg" viewBox="0 0 [\d.]+ [\d.]+"/);
|
|
31
|
+
expect(svg).toContain('aria-hidden="true"');
|
|
32
|
+
expect(svg).toMatch(/<g transform="matrix\(1 0 0 1 [\d.]+ [\d.]+\)"><text y="[\d.-]+" fill="#[0-9a-f]{6}"><tspan x="-?[\d.]+" font-size="[\d.]+" font-family="[^"]*">Atlantic<\/tspan>/);
|
|
33
|
+
});
|
|
34
|
+
it('strokes the halo under the text and fills the plate behind it', () => {
|
|
35
|
+
const svg = overlay(figure('::label[Sea]{at="a"}', '::label[Plate]{at="b"}'));
|
|
36
|
+
// The halo: the line twice, stroked then filled.
|
|
37
|
+
expect(svg).toMatch(/stroke="#ffffff" stroke-width="2" stroke-linejoin="round"/);
|
|
38
|
+
expect(svg.match(/>Sea<\/tspan>/g)).toHaveLength(2);
|
|
39
|
+
expect(svg).toMatch(/<rect [^>]*fill="#ffeecc"\/>/);
|
|
40
|
+
});
|
|
41
|
+
it('sets bold and italic words in their faces', () => {
|
|
42
|
+
const svg = overlay(figure('::label[**Big** *slant*]{at="f"}'));
|
|
43
|
+
expect(svg).toMatch(/font-weight="700"[^>]*>Big<\/tspan>/);
|
|
44
|
+
expect(svg).toMatch(/font-style="italic"[^>]*>slant<\/tspan>/);
|
|
45
|
+
});
|
|
46
|
+
it('turns a label by the anchor’s rotation', () => {
|
|
47
|
+
const rotated = resource({ anchors: [{ id: 'a', x: 0.2, y: 0.5, rotate: 90 }] });
|
|
48
|
+
expect(overlay(figure('::label[Turned]{at="a"}'), rotated)).toMatch(/<g transform="matrix\(0 1 -1 0 /);
|
|
49
|
+
});
|
|
50
|
+
it('leaves a vertical label, which an SVG text sets differently, to the list', () => {
|
|
51
|
+
expect(overlay(figure('::label[縦書き]{at="v"}'))).toBeUndefined();
|
|
52
|
+
const svg = overlay(figure('::label[Atlantic]{at="a"}', '::label[縦書き]{at="v"}'));
|
|
53
|
+
expect(svg).toContain('Atlantic');
|
|
54
|
+
expect(svg).not.toContain('縦書き');
|
|
55
|
+
});
|
|
56
|
+
it('draws over the whole picture past a safe area the print crops to', () => {
|
|
57
|
+
const cropped = resource({ safeArea: { x: 0.1, y: 0.1, width: 0.6, height: 0.6 } });
|
|
58
|
+
const doc = layOut(figure('::label[Atlantic]{at="a"}'), config, [cropped]);
|
|
59
|
+
const rb = block(doc).resourceBlock;
|
|
60
|
+
const svg = figureLabelsOverlay(rb);
|
|
61
|
+
const [x, y, w, h] = /viewBox="([-\d.]+) ([-\d.]+) ([-\d.]+) ([-\d.]+)"/.exec(svg).slice(1).map(Number);
|
|
62
|
+
if (rb.bodySource) {
|
|
63
|
+
// The viewBox is the picture's box in the body's coordinates.
|
|
64
|
+
expect(w / h).toBeCloseTo(400 / 300, 1);
|
|
65
|
+
expect(x).toBeLessThanOrEqual(0);
|
|
66
|
+
expect(y).toBeLessThanOrEqual(0);
|
|
67
|
+
}
|
|
68
|
+
else
|
|
69
|
+
expect([x, y]).toEqual([0, 0]);
|
|
70
|
+
});
|
|
71
|
+
it('is nothing for a figure with no label, or one that is not a picture', () => {
|
|
72
|
+
expect(overlay(figure())).toBeUndefined();
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=labels.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labels.test.js","sourceRoot":"","sources":["../../src/reflowable/labels.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -168,6 +168,16 @@ export interface CalloutNode {
|
|
|
168
168
|
* starts in (the slot). Written as a block of the page's section, with
|
|
169
169
|
* the frame's callout style when it has one (`styleId`). */
|
|
170
170
|
frame?: string;
|
|
171
|
+
/** A frame set in a writing mode other than its book's (#960,
|
|
172
|
+
* `FrameConfig.writingMode`): its mode, and the length of the box's
|
|
173
|
+
* extent the lines run along (a vertical frame's height, a horizontal
|
|
174
|
+
* card's width) in ems of the body text. A box of another writing mode
|
|
175
|
+
* in a reflowable page needs that extent, or a reader sizes it to the
|
|
176
|
+
* page. */
|
|
177
|
+
frameMode?: {
|
|
178
|
+
mode: 'vertical-rl' | 'horizontal-tb';
|
|
179
|
+
em: number;
|
|
180
|
+
};
|
|
171
181
|
}
|
|
172
182
|
/** A composed page (`::::page{template}`, #862): a section holding its
|
|
173
183
|
* frames' stories in Markdown order, each a box (`CalloutNode.frame`). The
|
|
@@ -207,6 +217,9 @@ export interface FigureNode {
|
|
|
207
217
|
* written: read as a list after the picture, out of sight (the
|
|
208
218
|
* picture this book shows does not carry them). */
|
|
209
219
|
labels?: string[];
|
|
220
|
+
/** An SVG over the picture that draws those labels the print sets as
|
|
221
|
+
* text (#955), in the picture's coordinates. */
|
|
222
|
+
labelsSvg?: string;
|
|
210
223
|
}
|
|
211
224
|
export interface TableCellNode {
|
|
212
225
|
row: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/reflowable/model.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/reflowable/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,8 @@ export interface BookModel {
|
|
|
36
36
|
code?: boolean;
|
|
37
37
|
/** Whether a figure or a box text wraps round was read (#627). */
|
|
38
38
|
wraps?: boolean;
|
|
39
|
+
/** Whether a picture with its labels drawn over it was read (#955). */
|
|
40
|
+
labelLayers?: boolean;
|
|
39
41
|
/** Whether a composed page was read (#862), and the callout styles its
|
|
40
42
|
* frames are set in: the stylesheet styles a frame's block with them. */
|
|
41
43
|
composed?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../src/reflowable/walk.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,cAAc,EAA0B,WAAW,EAA8C,MAAM,SAAS,CAAC;AAE/H,OAAO,KAAK,EAIV,SAAS,EAET,YAAY,EAoBb,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../src/reflowable/walk.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,cAAc,EAA0B,WAAW,EAA8C,MAAM,SAAS,CAAC;AAE/H,OAAO,KAAK,EAIV,SAAS,EAET,YAAY,EAoBb,MAAM,SAAS,CAAC;AAIjB,+DAA+D;AAC/D,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,wEAAwE;AACxE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B;eACW;IACX,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxB,6DAA6D;IAC7D,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,4DAA4D;IAC5D,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,0CAA0C;IAC1C,KAAK,EAAE,OAAO,CAAC;IACf,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yDAAyD;IACzD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qDAAqD;IACrD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8CAA8C;IAC9C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,kEAAkE;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;8EAC0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B;gCAC4B;IAC5B,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB;wEACoE;IACpE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB;sCACkC;IAClC,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB;AAED,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAcD,qDAAqD;AACrD,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG5E;AAiDD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,GAAG,SAAS,CAkBtF"}
|
package/dist/reflowable/walk.js
CHANGED
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
// - each printed page leaves a page-break marker where its text starts;
|
|
17
17
|
// - a part (a divider page, or `partMarks` without one) opens a
|
|
18
18
|
// document of its own and the chapter goes on in a new one.
|
|
19
|
-
import { canonicalLocaleTag, comicBalloonKind, comicBalloonText, comicSpeakerName, composedPaintOrder, composedReadingOrder, dimensionToPx, isComicSpreadPartner, joinComicSpread, pickTableStyle, primaryFontFamily } from 'postext';
|
|
19
|
+
import { canonicalLocaleTag, comicBalloonKind, comicBalloonText, comicSpeakerName, composedPaintOrder, composedReadingOrder, dimensionToPx, framePageRect, isComicSpreadPartner, joinComicSpread, pickTableStyle, primaryFontFamily } from 'postext';
|
|
20
|
+
import { figureLabelsOverlay } from './labels';
|
|
20
21
|
import { appendLine, appendLines, fontPx, idOf, mathSvg, plainText, xmlText } from './inline';
|
|
21
22
|
const fragmentKey = (block) => block.id.replace(/-cont-\d+$/, '');
|
|
22
23
|
const isTocRow = (block) => block.tocEntry !== undefined || block.tocPart !== undefined;
|
|
@@ -624,6 +625,13 @@ class DocWalker {
|
|
|
624
625
|
if (frame) {
|
|
625
626
|
if (own.frame === undefined) {
|
|
626
627
|
own.frame = frame.name;
|
|
628
|
+
if (frame.writingMode !== undefined) {
|
|
629
|
+
// The box as the page shows it: its lines run along its height
|
|
630
|
+
// (a vertical frame) or its width (a horizontal card).
|
|
631
|
+
const box = framePageRect(frame);
|
|
632
|
+
const along = frame.writingMode === 'vertical-rl' ? box.height : box.width;
|
|
633
|
+
own.frameMode = { mode: frame.writingMode, em: Math.round((along / this.bodyPx) * 100) / 100 };
|
|
634
|
+
}
|
|
627
635
|
if (frame.styleId) {
|
|
628
636
|
own.styleId = frame.styleId;
|
|
629
637
|
(this.book.frameStyles ??= new Set()).add(frame.styleId);
|
|
@@ -1227,6 +1235,16 @@ class DocWalker {
|
|
|
1227
1235
|
// A `:::figure`'s labels (#862): the picture's text, in label order.
|
|
1228
1236
|
...(rb.labels?.some((l) => l.text.trim()) ? { labels: rb.labels.map((l) => l.text.trim()).filter(Boolean) } : {}),
|
|
1229
1237
|
};
|
|
1238
|
+
// The labels the print draws as text, drawn over the picture (#955).
|
|
1239
|
+
// The pages of a right-to-left book are laid out mirrored: their
|
|
1240
|
+
// labels stay in the list.
|
|
1241
|
+
if (this.dir !== 'rtl' && !rb.rotation) {
|
|
1242
|
+
const labelsSvg = figureLabelsOverlay(rb);
|
|
1243
|
+
if (labelsSvg) {
|
|
1244
|
+
node.labelsSvg = labelsSvg;
|
|
1245
|
+
this.book.labelLayers = true;
|
|
1246
|
+
}
|
|
1247
|
+
}
|
|
1230
1248
|
if (node.wrap)
|
|
1231
1249
|
this.book.wraps = true;
|
|
1232
1250
|
if (rb.fileId)
|