postext-epub 0.5.3 → 0.6.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__/sampleBook.d.ts +9 -0
- package/dist/__tests__/sampleBook.d.ts.map +1 -1
- package/dist/__tests__/sampleBook.js +91 -0
- package/dist/__tests__/sampleBook.js.map +1 -1
- package/dist/comic.test.d.ts +2 -0
- package/dist/comic.test.d.ts.map +1 -0
- package/dist/comic.test.js +201 -0
- package/dist/comic.test.js.map +1 -0
- package/dist/epubcheck.test.js +9 -1
- package/dist/epubcheck.test.js.map +1 -1
- package/dist/fixed/index.d.ts.map +1 -1
- package/dist/fixed/index.js +37 -5
- package/dist/fixed/index.js.map +1 -1
- package/dist/fixed/regions.d.ts +45 -0
- package/dist/fixed/regions.d.ts.map +1 -0
- package/dist/fixed/regions.js +169 -0
- package/dist/fixed/regions.js.map +1 -0
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/package/pack.d.ts.map +1 -1
- package/dist/package/pack.js +9 -0
- package/dist/package/pack.js.map +1 -1
- package/dist/reflowable/css.d.ts.map +1 -1
- package/dist/reflowable/css.js +6 -0
- package/dist/reflowable/css.js.map +1 -1
- package/dist/reflowable/model.d.ts +28 -2
- package/dist/reflowable/model.d.ts.map +1 -1
- package/dist/reflowable/walk.d.ts.map +1 -1
- package/dist/reflowable/walk.js +78 -2
- package/dist/reflowable/walk.js.map +1 -1
- package/dist/reflowable/xhtml.d.ts.map +1 -1
- package/dist/reflowable/xhtml.js +43 -1
- package/dist/reflowable/xhtml.js.map +1 -1
- package/dist/types.d.ts +20 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/worker/client.d.ts +2 -1
- package/dist/worker/client.d.ts.map +1 -1
- package/dist/worker/client.js +1 -1
- package/dist/worker/client.js.map +1 -1
- package/package.json +3 -3
|
@@ -26,4 +26,13 @@ export declare function videoSampleBook(overrides?: PostextConfig): VDTDocument[
|
|
|
26
26
|
* notes. Measured with the stub (no Japanese face is embedded). */
|
|
27
27
|
export declare const JAPANESE_CHAPTERS: string[];
|
|
28
28
|
export declare function japaneseSampleBook(): VDTDocument[];
|
|
29
|
+
/** A comic page (#565) between two paragraphs: three panels of the sample
|
|
30
|
+
* picture (one slanted, one mirrored), lettered as the lettering engine
|
|
31
|
+
* letters them — a join group of two balloons, a caption and a sound
|
|
32
|
+
* effect — and the cast's names. `direction: 'rtl'` reads the page right
|
|
33
|
+
* to left (a manga). */
|
|
34
|
+
export declare function comicSampleBook(direction?: 'ltr' | 'rtl'): VDTDocument[];
|
|
35
|
+
/** A strip in the text and a two-page spread (#566, #567): the strip
|
|
36
|
+
* between two paragraphs, the spread's middle panel across the spine. */
|
|
37
|
+
export declare function stripSpreadSampleBook(): VDTDocument[];
|
|
29
38
|
//# sourceMappingURL=sampleBook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sampleBook.d.ts","sourceRoot":"","sources":["../../src/__tests__/sampleBook.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"sampleBook.d.ts","sourceRoot":"","sources":["../../src/__tests__/sampleBook.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAA+D,WAAW,EAAE,MAAM,SAAS,CAAC;AAwBvH,eAAO,MAAM,IAAI,yBAAkH,CAAC;AAEpI,eAAO,MAAM,GAAG,yBAA6I,CAAC;AA2B9J,eAAO,MAAM,eAAe,UAG3B,CAAC;AAEF,wBAAgB,UAAU,IAAI,WAAW,EAAE,CAE1C;AAED;uBACuB;AACvB,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,aAAkB,GAAG,WAAW,EAAE,CAE3F;AAED,oEAAoE;AACpE,eAAO,MAAM,KAAK,yBAAmI,CAAC;AAEtJ;;;qBAGqB;AACrB,eAAO,MAAM,eAAe,UAoB3B,CAAC;AAEF,wBAAgB,gBAAgB,IAAI,WAAW,EAAE,CAWhD;AAED,uEAAuE;AACvE,eAAO,MAAM,GAAG,yBAGd,CAAC;AAyBH;;qBAEqB;AACrB,wBAAgB,eAAe,CAAC,SAAS,GAAE,aAAkB,GAAG,WAAW,EAAE,CAG5E;AAED;;;oEAGoE;AACpE,eAAO,MAAM,iBAAiB,UAa7B,CAAC;AAEF,wBAAgB,kBAAkB,IAAI,WAAW,EAAE,CAUlD;AAED;;;;yBAIyB;AACzB,wBAAgB,eAAe,CAAC,SAAS,GAAE,KAAK,GAAG,KAAa,GAAG,WAAW,EAAE,CAyB/E;AAsBD;0EAC0E;AAC1E,wBAAgB,qBAAqB,IAAI,WAAW,EAAE,CAoCrD"}
|
|
@@ -163,4 +163,95 @@ export function japaneseSampleBook() {
|
|
|
163
163
|
},
|
|
164
164
|
});
|
|
165
165
|
}
|
|
166
|
+
/** A comic page (#565) between two paragraphs: three panels of the sample
|
|
167
|
+
* picture (one slanted, one mirrored), lettered as the lettering engine
|
|
168
|
+
* letters them — a join group of two balloons, a caption and a sound
|
|
169
|
+
* effect — and the cast's names. `direction: 'rtl'` reads the page right
|
|
170
|
+
* to left (a manga). */
|
|
171
|
+
export function comicSampleBook(direction = 'ltr') {
|
|
172
|
+
const chapter = [
|
|
173
|
+
'# A comic',
|
|
174
|
+
'',
|
|
175
|
+
`Before the page. ${para}`,
|
|
176
|
+
'',
|
|
177
|
+
':::page{split="40 [55~45 | *] / *" #street}',
|
|
178
|
+
'::panel{art=f1 #first}',
|
|
179
|
+
'::panel{art=f1 mirror alt="Ana at the door"}',
|
|
180
|
+
'::panel{art=f1 border=none}',
|
|
181
|
+
':::',
|
|
182
|
+
'',
|
|
183
|
+
`After the page. ${para}`,
|
|
184
|
+
].join('\n');
|
|
185
|
+
const docs = buildBundle({
|
|
186
|
+
chapters: [{ markdown: chapter }],
|
|
187
|
+
config: { ...config, comics: { readingDirection: direction, cast: [{ id: 'ana', name: 'Ana' }] } },
|
|
188
|
+
resources,
|
|
189
|
+
});
|
|
190
|
+
for (const doc of docs) {
|
|
191
|
+
for (const page of doc.pages) {
|
|
192
|
+
if (page.comic)
|
|
193
|
+
page.comic.balloons = sampleBalloons(page.comic);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return docs;
|
|
197
|
+
}
|
|
198
|
+
function sampleText(t, x, y) {
|
|
199
|
+
return { kind: 'text', bbox: { x, y, width: 60, height: 14 }, fontString: '400 10px "Lora"', color: '#111111', clip: false, lines: [{ text: t, xOffset: 0, baselineY: y + 10, width: 50 }] };
|
|
200
|
+
}
|
|
201
|
+
function sampleBalloons(comic) {
|
|
202
|
+
const [a, b] = [comic.panels[0].bbox, comic.panels[1].bbox];
|
|
203
|
+
return [
|
|
204
|
+
{ id: 'b1', panelIndex: 0, order: 0, kind: 'balloon', style: 'speech', speaker: 'ana', sourceStart: 0, sourceEnd: 1, group: 0,
|
|
205
|
+
shape: { d: `M${a.x + 8} ${a.y + 8}h60v20h-60Z M${a.x + 70} ${a.y + 8}h60v20h-60Z`, fill: '#ffffff', stroke: '#111111', strokeWidth: 1 },
|
|
206
|
+
text: [sampleText('Did you hear', a.x + 8, a.y + 10)], bbox: { x: a.x + 8, y: a.y + 8, width: 60, height: 20 } },
|
|
207
|
+
{ id: 'b2', panelIndex: 0, order: 1, kind: 'balloon', style: 'speech', speaker: 'ana', sourceStart: 2, sourceEnd: 3, group: 0,
|
|
208
|
+
text: [sampleText('that?', a.x + 70, a.y + 10)], bbox: { x: a.x + 70, y: a.y + 8, width: 60, height: 20 } },
|
|
209
|
+
{ id: 'c1', panelIndex: 1, order: 0, kind: 'caption', style: 'caption', sourceStart: 4, sourceEnd: 5, group: 1,
|
|
210
|
+
shape: { d: `M${b.x} ${b.y}h70v16h-70Z`, fill: '#fff3c4', stroke: '#111111', strokeWidth: 1 },
|
|
211
|
+
text: [sampleText('Lyon, 1943.', b.x + 2, b.y + 2)], bbox: { x: b.x, y: b.y, width: 70, height: 16 } },
|
|
212
|
+
{ id: 's1', panelIndex: 1, order: 1, kind: 'sfx', style: 'sfx', sourceStart: 6, sourceEnd: 7, group: 2, rotate: -8, halo: { width: 1.5, color: '#ffffff' },
|
|
213
|
+
text: [sampleText('KRAK', b.x + 20, b.y + 40)], bbox: { x: b.x + 20, y: b.y + 40, width: 40, height: 16 } },
|
|
214
|
+
];
|
|
215
|
+
}
|
|
216
|
+
/** A strip in the text and a two-page spread (#566, #567): the strip
|
|
217
|
+
* between two paragraphs, the spread's middle panel across the spine. */
|
|
218
|
+
export function stripSpreadSampleBook() {
|
|
219
|
+
const chapter = [
|
|
220
|
+
'# Strips and spreads',
|
|
221
|
+
'',
|
|
222
|
+
`Before the strip. ${para}`,
|
|
223
|
+
'',
|
|
224
|
+
':::strip{split="* | *" aspect=3}',
|
|
225
|
+
'::panel{art=f1}',
|
|
226
|
+
'::panel{art=f1 alt="The second panel of the strip"}',
|
|
227
|
+
':::',
|
|
228
|
+
'',
|
|
229
|
+
`After the strip. ${para}`,
|
|
230
|
+
'',
|
|
231
|
+
':::page{spread split="40 / * [* | * | *]"}',
|
|
232
|
+
'::panel{art=f1}',
|
|
233
|
+
'::panel',
|
|
234
|
+
'::panel{art=f1 alt="Across the spine"}',
|
|
235
|
+
'::panel',
|
|
236
|
+
':::',
|
|
237
|
+
'',
|
|
238
|
+
'After the spread.',
|
|
239
|
+
].join('\n');
|
|
240
|
+
const docs = buildBundle({ chapters: [{ markdown: chapter }], config: { ...config, comics: {} }, resources });
|
|
241
|
+
for (const doc of docs) {
|
|
242
|
+
for (const page of doc.pages) {
|
|
243
|
+
const c = page.comic;
|
|
244
|
+
if (!c?.spread)
|
|
245
|
+
continue;
|
|
246
|
+
// A balloon in panel 2 on each page: read in panel order.
|
|
247
|
+
const p = c.panels.find((q) => q.index === 2);
|
|
248
|
+
if (!p)
|
|
249
|
+
continue;
|
|
250
|
+
const x = c.spread === 'left' ? p.bbox.x + 4 : p.bbox.x + p.bbox.width - 64;
|
|
251
|
+
c.balloons = [{ id: `s-${c.spread}`, panelIndex: 2, order: c.spread === 'left' ? 0 : 1, kind: 'caption', style: 'caption', sourceStart: 0, sourceEnd: 1, group: c.spread === 'left' ? 0 : 1,
|
|
252
|
+
text: [sampleText(c.spread === 'left' ? 'Meanwhile,' : 'far away.', x, p.bbox.y + 4)], bbox: { x, y: p.bbox.y + 4, width: 60, height: 14 } }];
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return docs;
|
|
256
|
+
}
|
|
166
257
|
//# sourceMappingURL=sampleBook.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sampleBook.js","sourceRoot":"","sources":["../../src/__tests__/sampleBook.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sampleBook.js","sourceRoot":"","sources":["../../src/__tests__/sampleBook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comic.test.d.ts","sourceRoot":"","sources":["../src/comic.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
// Comic pages in both renditions (#565): the fixed layout's region-based
|
|
2
|
+
// navigation, page progression and Kindle panel view; the reflowable
|
|
3
|
+
// book's cropped panels and dialogue.
|
|
4
|
+
import { describe, it, expect, beforeAll } from 'vitest';
|
|
5
|
+
import { renderToEpub, readEpub } from './index';
|
|
6
|
+
import { buildOpf } from './package/pack';
|
|
7
|
+
import { buildFixedPublication } from './fixed/index';
|
|
8
|
+
import { percentRect } from './fixed/regions';
|
|
9
|
+
import { PNG, comicSampleBook, sampleBook, stripSpreadSampleBook } from './__tests__/sampleBook';
|
|
10
|
+
const options = (layout, extra = {}) => ({
|
|
11
|
+
layout,
|
|
12
|
+
metadata: { title: 'A comic', language: 'en', modified: new Date(Date.UTC(2026, 9, 7)) },
|
|
13
|
+
resourceBytes: (fileId) => (fileId === 'f1.png' ? { bytes: PNG, mediaType: 'image/png' } : undefined),
|
|
14
|
+
...extra,
|
|
15
|
+
});
|
|
16
|
+
const text = (book, path) => new TextDecoder().decode(book.files.get(path));
|
|
17
|
+
describe('fixed layout of comic pages', () => {
|
|
18
|
+
let docs;
|
|
19
|
+
let book;
|
|
20
|
+
let opf;
|
|
21
|
+
beforeAll(async () => {
|
|
22
|
+
docs = comicSampleBook();
|
|
23
|
+
book = readEpub(await renderToEpub(docs, options('fixed')));
|
|
24
|
+
opf = text(book, 'OEBPS/content.opf');
|
|
25
|
+
});
|
|
26
|
+
it('takes one document as well as a chain, as renderToPdf does', async () => {
|
|
27
|
+
const one = readEpub(await renderToEpub(docs[0], options('fixed')));
|
|
28
|
+
expect(one.files.has('OEBPS/content.opf')).toBe(true);
|
|
29
|
+
});
|
|
30
|
+
it('declares one data navigation document, out of the spine', () => {
|
|
31
|
+
expect(opf).toMatch(/<item id="regions" href="regions.xhtml" media-type="application\/xhtml\+xml" properties="data-nav"\/>/);
|
|
32
|
+
expect(book.spine.some((s) => s.path.endsWith('regions.xhtml'))).toBe(false);
|
|
33
|
+
});
|
|
34
|
+
it('lists the panels in reading order with their balloons nested, as rectangles in percent of the page', () => {
|
|
35
|
+
const nav = text(book, 'OEBPS/regions.xhtml');
|
|
36
|
+
expect(nav).toContain('<nav epub:type="region-based" id="regions">');
|
|
37
|
+
const page = docs[0].pages.find((p) => p.comic);
|
|
38
|
+
const file = book.spine[page.index].path.replace('OEBPS/', '');
|
|
39
|
+
const panels = [...nav.matchAll(/<li epub:type="panel"><a href="([^"]+)"><\/a>/g)];
|
|
40
|
+
expect(panels).toHaveLength(3);
|
|
41
|
+
for (const m of panels)
|
|
42
|
+
expect(m[1]).toMatch(new RegExp(`^${file}#xywh=percent:[0-9.]+,[0-9.]+,[0-9.]+,[0-9.]+$`));
|
|
43
|
+
// Panel 1: its bounding box on the 360 × 480 pt page (480 × 640 px).
|
|
44
|
+
const p0 = page.comic.panels[0].bbox;
|
|
45
|
+
const r = percentRect(p0, { width: 480, height: 640, scale: 480 / page.width, offset: 0 });
|
|
46
|
+
expect(panels[0][1]).toBe(`${file}#xywh=percent:${Math.round(r.x * 100) / 100},${Math.round(r.y * 100) / 100},${Math.round(r.w * 100) / 100},${Math.round(r.h * 100) / 100}`);
|
|
47
|
+
// Balloons in the panel's region, in reading order, by kind.
|
|
48
|
+
const first = /<li epub:type="panel">[\s\S]*?<\/li>\n<\/ol>\n<\/li>/.exec(nav)[0];
|
|
49
|
+
expect([...first.matchAll(/<li epub:type="([\w-]+)">/g)].map((m) => m[1])).toEqual(['panel', 'balloon', 'balloon']);
|
|
50
|
+
const b1 = page.comic.balloons[0].bbox;
|
|
51
|
+
const rb = percentRect(b1, { width: 480, height: 640, scale: 480 / page.width, offset: 0 });
|
|
52
|
+
expect(first).toContain(`#xywh=percent:${Math.round(rb.x * 100) / 100},${Math.round(rb.y * 100) / 100},`);
|
|
53
|
+
expect(nav).toContain('<li epub:type="text-area"><a');
|
|
54
|
+
expect(nav).toContain('<li epub:type="sound-area"><a');
|
|
55
|
+
});
|
|
56
|
+
it('sets the comic in the page document as XHTML, panels as figures with their lettering after them', () => {
|
|
57
|
+
const page = docs[0].pages.find((p) => p.comic);
|
|
58
|
+
const xhtml = text(book, book.spine[page.index].path);
|
|
59
|
+
expect(xhtml).toContain('<div class="pt-comic"');
|
|
60
|
+
expect(xhtml).toMatch(/<svg xmlns="http:\/\/www.w3.org\/2000\/svg" class="pt-comic-art"/);
|
|
61
|
+
expect(xhtml).toContain('href="../images/f1.png"');
|
|
62
|
+
expect(xhtml).toMatch(/<p class="pt-comic-balloon" data-balloon="b1"/);
|
|
63
|
+
expect(xhtml).not.toContain('app-amzn-magnify');
|
|
64
|
+
// The book turns its pages left to right.
|
|
65
|
+
expect(book.pageProgression).toBe('ltr');
|
|
66
|
+
});
|
|
67
|
+
it('turns the pages of a right-to-left comic right to left, and says so to Kindle', async () => {
|
|
68
|
+
const rtl = comicSampleBook('rtl');
|
|
69
|
+
const pub = await buildFixedPublication(rtl, options('fixed'));
|
|
70
|
+
expect(pub.pageProgression).toBe('rtl');
|
|
71
|
+
expect(pub.writingMode).toBe('horizontal-rl');
|
|
72
|
+
const out = buildOpf(pub);
|
|
73
|
+
expect(out).toContain('page-progression-direction="rtl"');
|
|
74
|
+
expect(out).toContain('<meta name="primary-writing-mode" content="horizontal-rl"/>');
|
|
75
|
+
// The panels read from the right: the second one sits left of the first.
|
|
76
|
+
const c = rtl[0].pages.find((p) => p.comic).comic;
|
|
77
|
+
expect(c.panels[1].bbox.x).toBeLessThan(c.panels[0].bbox.x);
|
|
78
|
+
});
|
|
79
|
+
it('adds Kindle panel view on request: a tap target and a hidden magnified copy per panel', async () => {
|
|
80
|
+
const pub = await buildFixedPublication(docs, options('fixed', { kindlePanelView: true }));
|
|
81
|
+
const page = docs[0].pages.find((p) => p.comic);
|
|
82
|
+
const item = pub.items.find((i) => i.href === `pages/page-${String(page.index + 1).padStart(4, '0')}.xhtml`);
|
|
83
|
+
const xhtml = item.data;
|
|
84
|
+
const taps = [...xhtml.matchAll(/data-app-amzn-magnify="([^"]+)"/g)].map((m) => JSON.parse(m[1].replace(/"/g, '"')));
|
|
85
|
+
expect(taps).toEqual([
|
|
86
|
+
{ targetId: `mag-${page.index}-0-target`, ordinal: 1 },
|
|
87
|
+
{ targetId: `mag-${page.index}-1-target`, ordinal: 2 },
|
|
88
|
+
{ targetId: `mag-${page.index}-2-target`, ordinal: 3 },
|
|
89
|
+
]);
|
|
90
|
+
expect(xhtml).toContain(`id="mag-${page.index}-0-target" class="target-mag-parent" aria-hidden="true"`);
|
|
91
|
+
// Copies keep their ids apart.
|
|
92
|
+
const ids = [...xhtml.matchAll(/\sid="([^"]+)"/g)].map((m) => m[1]);
|
|
93
|
+
expect(new Set(ids).size).toBe(ids.length);
|
|
94
|
+
const out = buildOpf(pub);
|
|
95
|
+
expect(out).toContain('<meta name="book-type" content="comic"/>');
|
|
96
|
+
expect(out).toContain('<meta name="RegionMagnification" content="true"/>');
|
|
97
|
+
expect(out).toMatch(/<meta name="original-resolution" content="\d+x\d+"\/>/);
|
|
98
|
+
const css = pub.items.find((i) => i.href === 'styles/fixed.css').data;
|
|
99
|
+
expect(css).toContain('.target-mag-parent { display: none; }');
|
|
100
|
+
});
|
|
101
|
+
it('leaves a book without comics as it was', async () => {
|
|
102
|
+
const pub = await buildFixedPublication(sampleBook(), options('fixed', { kindlePanelView: true }));
|
|
103
|
+
expect(pub.items.some((i) => i.id === 'regions')).toBe(false);
|
|
104
|
+
expect(pub.kindle).toBeUndefined();
|
|
105
|
+
expect(pub.writingMode).toBeUndefined();
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
describe('reflowable comic pages', () => {
|
|
109
|
+
let chapter;
|
|
110
|
+
beforeAll(async () => {
|
|
111
|
+
const book = readEpub(await renderToEpub(comicSampleBook(), options('reflowable')));
|
|
112
|
+
const path = book.spine.find((s) => s.path.includes('chapter')).path;
|
|
113
|
+
chapter = text(book, path);
|
|
114
|
+
});
|
|
115
|
+
it('sets each panel as its picture cropped to the panel, then its lettering as text', () => {
|
|
116
|
+
const section = /<section class="pt-comic">[\s\S]*?<\/section>/.exec(chapter)[0];
|
|
117
|
+
const order = [...section.matchAll(/<figure class="pt-comic-panel"|<p class="(pt-comic-[a-z]+)">([\s\S]*?)<\/p>/g)]
|
|
118
|
+
.map((m) => (m[1] ? `${m[1]}: ${m[2]}` : 'figure'));
|
|
119
|
+
expect(order).toEqual([
|
|
120
|
+
'figure',
|
|
121
|
+
'pt-comic-line: <b>Ana</b>: Did you hear',
|
|
122
|
+
'pt-comic-line: <b>Ana</b>: that?',
|
|
123
|
+
'figure',
|
|
124
|
+
'pt-comic-caption: Lyon, 1943.',
|
|
125
|
+
'pt-comic-sfx: <i>KRAK</i>',
|
|
126
|
+
'figure',
|
|
127
|
+
]);
|
|
128
|
+
// The picture: an SVG of the panel (its view box), the whole picture
|
|
129
|
+
// drawn at its box and clipped, named by its text alternative.
|
|
130
|
+
expect(section).toMatch(/<svg xmlns="http:\/\/www.w3.org\/2000\/svg" xmlns:xlink="http:\/\/www.w3.org\/1999\/xlink" width="[0-9.]+" height="[0-9.]+" viewBox="[0-9. ]+" role="img" aria-label="Ana at the door">/);
|
|
131
|
+
expect(section).toContain('xlink:href="../images/f1.png"');
|
|
132
|
+
expect(section).toContain('<clipPath id="comic-clip-1">');
|
|
133
|
+
expect(section).toContain('scale(-1 1)');
|
|
134
|
+
// Text before and after the page keeps its place.
|
|
135
|
+
expect(chapter.indexOf('Before the page.')).toBeLessThan(chapter.indexOf('pt-comic'));
|
|
136
|
+
expect(chapter.indexOf('After the page.')).toBeGreaterThan(chapter.indexOf('</section>\n<p'));
|
|
137
|
+
});
|
|
138
|
+
it('links a panel anchor', () => {
|
|
139
|
+
expect(chapter).toContain('<figure class="pt-comic-panel" id="a-first">');
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
describe('strips and spreads in both renditions', () => {
|
|
143
|
+
let docs;
|
|
144
|
+
let fixed;
|
|
145
|
+
let flow;
|
|
146
|
+
beforeAll(async () => {
|
|
147
|
+
docs = stripSpreadSampleBook();
|
|
148
|
+
fixed = readEpub(await renderToEpub(docs, options('fixed')));
|
|
149
|
+
flow = readEpub(await renderToEpub(docs, options('reflowable')));
|
|
150
|
+
});
|
|
151
|
+
it('sets the strip on its page and lists its panels as regions', () => {
|
|
152
|
+
const page = docs[0].pages.find((p) => p.columns.some((c) => c.blocks.some((b) => b.comic)));
|
|
153
|
+
const xhtml = text(fixed, fixed.spine[page.index].path);
|
|
154
|
+
expect(xhtml).toContain('<div class="pt-comic"');
|
|
155
|
+
expect(xhtml).toContain('aria-label="The second panel of the strip"');
|
|
156
|
+
const nav = text(fixed, 'OEBPS/regions.xhtml');
|
|
157
|
+
const file = fixed.spine[page.index].path.replace('OEBPS/', '');
|
|
158
|
+
expect(nav.split(`<li epub:type="panel"><a href="${file}#`).length - 1).toBe(2);
|
|
159
|
+
});
|
|
160
|
+
it('gives a panel across a spread\'s spine one region of two rectangles, its balloons on their pages, in reading order', () => {
|
|
161
|
+
const [l, r] = docs[0].pages.filter((p) => p.comic);
|
|
162
|
+
const lf = fixed.spine[l.index].path.replace('OEBPS/', '');
|
|
163
|
+
const rf = fixed.spine[r.index].path.replace('OEBPS/', '');
|
|
164
|
+
const nav = text(fixed, 'OEBPS/regions.xhtml');
|
|
165
|
+
const spread = nav.slice(nav.lastIndexOf("<li epub:type=\"panel\">", nav.indexOf(lf)));
|
|
166
|
+
// Panels 0 and 2 cross the spine.
|
|
167
|
+
const heads = [...spread.matchAll(/<li epub:type="panel">(<span>(?:<a [^>]*><\/a>)+<\/span>|<a [^>]*><\/a>)/g)].map((m) => m[1]);
|
|
168
|
+
expect(heads).toHaveLength(4);
|
|
169
|
+
expect(heads[0]).toMatch(new RegExp(`^<span><a href="${lf}#[^"]+"></a><a href="${rf}#[^"]+"></a></span>$`));
|
|
170
|
+
expect(heads[1]).toContain(lf);
|
|
171
|
+
expect(heads[2]).toMatch(/^<span>/);
|
|
172
|
+
expect(heads[3]).toContain(rf);
|
|
173
|
+
const third = spread.slice(spread.indexOf(heads[2]));
|
|
174
|
+
const kids = third.slice(0, third.indexOf('</ol>'));
|
|
175
|
+
expect([...kids.matchAll(/<li epub:type="text-area"><a href="([^#]+)#/g)].map((m) => m[1])).toEqual([lf, rf]);
|
|
176
|
+
// The right page's half of panel 2 is no figure of its own.
|
|
177
|
+
expect(text(fixed, fixed.spine[r.index].path)).not.toContain('aria-label="Across the spine"');
|
|
178
|
+
expect(text(fixed, fixed.spine[l.index].path)).toContain('aria-label="Across the spine"');
|
|
179
|
+
});
|
|
180
|
+
it('reads the strip in the text and the spread as one comic in the reflowable book', () => {
|
|
181
|
+
const chapter = text(flow, flow.spine.find((s) => s.path.includes('chapter')).path);
|
|
182
|
+
const sections = [...chapter.matchAll(/<section class="pt-comic">[\s\S]*?<\/section>/g)].map((m) => m[0]);
|
|
183
|
+
expect(sections).toHaveLength(2);
|
|
184
|
+
const [strip, spread] = sections;
|
|
185
|
+
expect(chapter.indexOf('Before the strip.')).toBeLessThan(chapter.indexOf(strip));
|
|
186
|
+
expect(chapter.indexOf('After the strip.')).toBeGreaterThan(chapter.indexOf(strip));
|
|
187
|
+
expect(strip.match(/<figure/g)).toHaveLength(2);
|
|
188
|
+
// The spread: panels 0 and 2 whole (art), the captions of both pages
|
|
189
|
+
// after panel 2, once each.
|
|
190
|
+
expect(spread.match(/<figure/g)).toHaveLength(2);
|
|
191
|
+
expect(spread.match(/aria-label="Across the spine"/g)).toHaveLength(1);
|
|
192
|
+
const order = [...spread.matchAll(/<figure|<p class="pt-comic-caption">([^<]*)/g)].map((m) => m[1] ?? 'figure');
|
|
193
|
+
expect(order).toEqual(['figure', 'figure', 'Meanwhile,', 'far away.']);
|
|
194
|
+
// A whole panel: its view box runs across the spine.
|
|
195
|
+
const [l] = docs[0].pages.filter((p) => p.comic);
|
|
196
|
+
const half = l.comic.panels.find((p) => p.index === 2);
|
|
197
|
+
const box = /aria-label="Across the spine"/.test(spread) ? /viewBox="([0-9. -]+)" role="img" aria-label="Across the spine"/.exec(spread)[1].split(' ').map(Number) : [];
|
|
198
|
+
expect(box[2]).toBeGreaterThan(half.bbox.width + 10);
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
//# sourceMappingURL=comic.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comic.test.js","sourceRoot":"","sources":["../src/comic.test.ts"],"names":[],"mappings":"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"}
|
package/dist/epubcheck.test.js
CHANGED
|
@@ -8,7 +8,7 @@ import fs from 'node:fs';
|
|
|
8
8
|
import os from 'node:os';
|
|
9
9
|
import path from 'node:path';
|
|
10
10
|
import { renderToEpub } from './index';
|
|
11
|
-
import { AMIRI, LORA, MP4, PNG, arabicSampleBook, sampleBook, videoSampleBook, japaneseSampleBook } from './__tests__/sampleBook';
|
|
11
|
+
import { AMIRI, LORA, MP4, PNG, arabicSampleBook, comicSampleBook, sampleBook, stripSpreadSampleBook, videoSampleBook, japaneseSampleBook } from './__tests__/sampleBook';
|
|
12
12
|
const available = process.env.EPUBCHECK === '1' && spawnSync('epubcheck', ['--version'], { encoding: 'utf8' }).status === 0;
|
|
13
13
|
function epubcheck(file) {
|
|
14
14
|
const out = spawnSync('epubcheck', ['--json', '-', file], { encoding: 'utf8', maxBuffer: 64 * 1024 * 1024 });
|
|
@@ -63,6 +63,14 @@ const samples = [
|
|
|
63
63
|
{ name: 'video-alongside-fixed', options: video('fixed'), book: () => videoSampleBook({ videoStyle: { player: { exclusive: false } } }) },
|
|
64
64
|
{ name: 'japanese-fixed', options: japanese('fixed'), book: japaneseSampleBook },
|
|
65
65
|
{ name: 'japanese-reflowable', options: japanese('reflowable'), book: japaneseSampleBook },
|
|
66
|
+
// Comic pages (#565): region-based navigation, a right-to-left comic
|
|
67
|
+
// with Kindle panel view, the reflowable panels and dialogue.
|
|
68
|
+
{ name: 'comic-fixed', options: base('fixed'), book: comicSampleBook },
|
|
69
|
+
{ name: 'comic-rtl-kindle-fixed', options: { ...base('fixed'), kindlePanelView: true }, book: () => comicSampleBook('rtl') },
|
|
70
|
+
{ name: 'comic-reflowable', options: base('reflowable'), book: comicSampleBook },
|
|
71
|
+
// A strip in the text and a two-page spread (#566, #567).
|
|
72
|
+
{ name: 'strip-spread-fixed', options: { ...base('fixed'), kindlePanelView: true }, book: stripSpreadSampleBook },
|
|
73
|
+
{ name: 'strip-spread-reflowable', options: base('reflowable'), book: stripSpreadSampleBook },
|
|
66
74
|
];
|
|
67
75
|
describe.skipIf(!available)('EPUBCheck', () => {
|
|
68
76
|
const dir = process.env.EPUBCHECK_OUT ?? fs.mkdtempSync(path.join(os.tmpdir(), 'postext-epub-'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epubcheck.test.js","sourceRoot":"","sources":["../src/epubcheck.test.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,2EAA2E;AAC3E,2EAA2E;AAC3E,aAAa;AAEb,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"epubcheck.test.js","sourceRoot":"","sources":["../src/epubcheck.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fixed/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fixed/index.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAIV,eAAe,EACf,UAAU,EAEV,mBAAmB,EACpB,MAAM,UAAU,CAAC;AA6FlB;;kEAEkE;AAClE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CAuOpH"}
|
package/dist/fixed/index.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// OEBPS/pages/cover.xhtml when a cover picture is given
|
|
7
7
|
// OEBPS/styles/fixed.css @font-face + the text reset
|
|
8
8
|
// OEBPS/fonts/…, OEBPS/images/… shared assets (shared/assets.ts)
|
|
9
|
-
import { anchoredResourceIds, canonicalLocaleTag, directionOf, HTML_TEXT_RESET, renderToHtmlIndexed, } from 'postext';
|
|
9
|
+
import { anchoredResourceIds, canonicalLocaleTag, directionOf, HTML_TEXT_RESET, pageComics, renderToHtmlIndexed, } from 'postext';
|
|
10
10
|
import { defaultAccessibility } from '../shared/accessibility';
|
|
11
11
|
import { fontAssets, imageAssets, pageProgressionOf, remoteVideoItems, videoAssets } from '../shared/assets';
|
|
12
12
|
import { decodeEntities, escapeAttr, escapeXml, htmlToXhtml, xhtmlDocument, xmlId } from '../shared/xml';
|
|
@@ -14,6 +14,7 @@ import { videoScriptItem, VIDEO_SCRIPT_HREF, withVideoScript } from '../shared/v
|
|
|
14
14
|
import { navStrings } from '../package/strings';
|
|
15
15
|
import { fontUses, missingFaces } from './fontUse';
|
|
16
16
|
import { contentsRows, headingTitle, nestOutline, pageHeadings, partTitle } from './outline';
|
|
17
|
+
import { comicDirectionOf, kindlePanelMarkup, regionNavItem } from './regions';
|
|
17
18
|
/** Directory of the page documents, relative to the package document. */
|
|
18
19
|
const PAGES_DIR = 'pages/';
|
|
19
20
|
const STYLESHEET_HREF = 'styles/fixed.css';
|
|
@@ -59,6 +60,13 @@ const rowLink = (href, label, b) => `<a class="pt-toc-link" href="${escapeAttr(h
|
|
|
59
60
|
`style="position:absolute;left:${num(b.x)}px;top:${num(b.y)}px;width:${num(b.width)}px;height:${num(b.height)}px;z-index:1;"></a>`;
|
|
60
61
|
/** A zero-size anchor at a point of the page (an outline target). */
|
|
61
62
|
const anchorAt = (id, x, y) => `<span id="${escapeAttr(id)}" style="position:absolute;left:${num(x)}px;top:${num(y)}px;width:0;height:0;"></span>`;
|
|
63
|
+
/** Markup with every id it sets (and every `url(#…)` reference to one)
|
|
64
|
+
* suffixed: a copy of a page's comic that lives on the same page. */
|
|
65
|
+
function withIdSuffix(html, suffix) {
|
|
66
|
+
return html
|
|
67
|
+
.replace(/\sid="([^"]*)"/g, (_, id) => ` id="${id}${suffix}"`)
|
|
68
|
+
.replace(/url\(#([^)]+)\)/g, (_, id) => `url(#${id}${suffix})`);
|
|
69
|
+
}
|
|
62
70
|
/** The HTML player attributes no EPUB schema knows (`controlslist`, the
|
|
63
71
|
* Remote Playback and Picture-in-Picture switches) dropped: EPUBCheck
|
|
64
72
|
* rejects them, and reading systems offer their own controls. */
|
|
@@ -70,7 +78,9 @@ export function epubVideoMarkup(html) {
|
|
|
70
78
|
export async function buildFixedPublication(docs, options) {
|
|
71
79
|
const { metadata, onWarning, onProgress, signal } = options;
|
|
72
80
|
const strings = navStrings(metadata.language);
|
|
73
|
-
|
|
81
|
+
// A book of comic pages turns its pages the way they read (a manga
|
|
82
|
+
// right to left in any language); other books follow their binding.
|
|
83
|
+
const progression = comicDirectionOf(docs) ?? pageProgressionOf(docs);
|
|
74
84
|
// Fonts and pictures first: the pages link to their files.
|
|
75
85
|
const fonts = fontAssets(options.fonts ?? []);
|
|
76
86
|
const images = await imageAssets(docs, options.resourceBytes, onWarning);
|
|
@@ -139,18 +149,23 @@ export async function buildFixedPublication(docs, options) {
|
|
|
139
149
|
for (const id of ids)
|
|
140
150
|
if (!fileOfId.has(id))
|
|
141
151
|
fileOfId.set(id, file);
|
|
142
|
-
|
|
152
|
+
const comicHtml = rendered.pages[i]?.comicHtml;
|
|
153
|
+
plans.push({ doc, page, bookIndex, file, html, ids, outline, lang, ...(comicHtml ? { comicHtml } : {}) });
|
|
143
154
|
bookIndex++;
|
|
144
155
|
}
|
|
145
156
|
signal?.throwIfAborted();
|
|
146
157
|
}
|
|
158
|
+
// Kindle Panel View (opt-in): tap targets over the panels of comic pages.
|
|
159
|
+
const kindle = options.kindlePanelView === true && plans.some((p) => p.page.comic);
|
|
160
|
+
const comicPlans = [];
|
|
147
161
|
// Pass 2: the content documents.
|
|
148
162
|
const css = `@charset "UTF-8";\n` +
|
|
149
163
|
fonts.css +
|
|
150
164
|
`html, body { margin: 0; padding: 0; }\n` +
|
|
151
165
|
`body { position: relative; overflow: hidden; }\n` +
|
|
152
166
|
`.pt-page { position: absolute; left: 0; top: 0; overflow: hidden; transform-origin: 0 0; ${TEXT_RESET} }\n` +
|
|
153
|
-
`.pt-cover { display: block; width: 100%; height: 100%; object-fit: contain; }\n
|
|
167
|
+
`.pt-cover { display: block; width: 100%; height: 100%; object-fit: contain; }\n` +
|
|
168
|
+
(kindle ? `.target-mag-parent { display: none; }\n` : '');
|
|
154
169
|
const pageItems = [];
|
|
155
170
|
const spine = [];
|
|
156
171
|
const pageList = [];
|
|
@@ -183,6 +198,15 @@ export async function buildFixedPublication(docs, options) {
|
|
|
183
198
|
const bg = background && background !== 'transparent' ? `background:${background};` : '';
|
|
184
199
|
const pageStyle = `width:${num(page.width)}px;height:${num(page.height)}px;${bg}` +
|
|
185
200
|
`transform:scale(${num(geo.scale)})${geo.offset ? ` translate(-${num(geo.offset)}px,-${num(geo.offset)}px)` : ''};`;
|
|
201
|
+
let magnify = '';
|
|
202
|
+
const comics = pageComics(page);
|
|
203
|
+
if (comics.length > 0)
|
|
204
|
+
comicPlans.push({ href: `${PAGES_DIR}${file}`, comics, geo });
|
|
205
|
+
if (page.comic && kindle && plan.comicHtml) {
|
|
206
|
+
const comicHtml = plan.comicHtml;
|
|
207
|
+
const raw = kindlePanelMarkup(page, geo, (suffix) => withIdSuffix(comicHtml, suffix));
|
|
208
|
+
magnify = htmlToXhtml(raw, { ids, hoistStyle: (s) => styles.push(s) });
|
|
209
|
+
}
|
|
186
210
|
const label = page.pageLabel || String(plan.bookIndex + 1);
|
|
187
211
|
// A page with videos to coordinate links the playback script (#507).
|
|
188
212
|
const xhtml = withVideoScript(xhtmlDocument({
|
|
@@ -193,7 +217,7 @@ export async function buildFixedPublication(docs, options) {
|
|
|
193
217
|
`<link rel="stylesheet" type="text/css" href="../${STYLESHEET_HREF}"/>\n` +
|
|
194
218
|
(styles.length ? `<style>${escapeXml(styles.join('\n'))}</style>\n` : ''),
|
|
195
219
|
bodyAttrs: ` style="width:${geo.width}px;height:${geo.height}px;${bg}"`,
|
|
196
|
-
body: `<div class="pt-page" id="${escapeAttr(plan.ids[0])}" dir="${pageDir(doc)}" style="${pageStyle}">${body}</div
|
|
220
|
+
body: `<div class="pt-page" id="${escapeAttr(plan.ids[0])}" dir="${pageDir(doc)}" style="${pageStyle}">${body}</div>${magnify}`,
|
|
197
221
|
}), `../${VIDEO_SCRIPT_HREF}`);
|
|
198
222
|
if (xhtml.includes('<script'))
|
|
199
223
|
scripted = true;
|
|
@@ -253,6 +277,11 @@ export async function buildFixedPublication(docs, options) {
|
|
|
253
277
|
const target = bodyStart ? `${PAGES_DIR}${bodyStart.file}${bodyStart.anchorId ? `#${bodyStart.anchorId}` : ''}` : `${PAGES_DIR}${first.file}`;
|
|
254
278
|
landmarks.push({ type: 'bodymatter', label: strings.bodymatter, href: target });
|
|
255
279
|
}
|
|
280
|
+
// Region-based navigation of the comic pages: panels in reading order,
|
|
281
|
+
// their balloons in them.
|
|
282
|
+
const regions = regionNavItem(comicPlans, metadata.language, metadata.title);
|
|
283
|
+
if (regions)
|
|
284
|
+
items.push(regions);
|
|
256
285
|
items.push({ id: 'style', href: STYLESHEET_HREF, mediaType: 'text/css', data: css });
|
|
257
286
|
items.push(...fonts.items, ...imageItems, ...pageItems);
|
|
258
287
|
if (scripted)
|
|
@@ -268,6 +297,9 @@ export async function buildFixedPublication(docs, options) {
|
|
|
268
297
|
pageList,
|
|
269
298
|
landmarks,
|
|
270
299
|
pageProgression: progression,
|
|
300
|
+
// Manga: Kindle reads the page progression from the writing mode.
|
|
301
|
+
...(comicPlans.length > 0 && progression === 'rtl' && !docs.some((d) => d.config.layout.writingMode === 'vertical-rl') ? { writingMode: 'horizontal-rl' } : {}),
|
|
302
|
+
...(kindle ? { kindle: { comic: true, originalResolution: { width: firstGeo.width, height: firstGeo.height }, regionMagnification: true } } : {}),
|
|
271
303
|
fixed: { spread: 'landscape', orientation: 'auto', viewport: { width: firstGeo.width, height: firstGeo.height } },
|
|
272
304
|
accessibility: defaultAccessibility({
|
|
273
305
|
layout: 'fixed',
|