postext 1.20.3 → 1.21.1

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.
Files changed (144) hide show
  1. package/dist/__tests__/color.test.d.ts +2 -0
  2. package/dist/__tests__/color.test.d.ts.map +1 -0
  3. package/dist/__tests__/color.test.js +110 -0
  4. package/dist/__tests__/color.test.js.map +1 -0
  5. package/dist/__tests__/comics/build.test.js +4 -3
  6. package/dist/__tests__/comics/build.test.js.map +1 -1
  7. package/dist/__tests__/comics/canvas.test.js +2 -2
  8. package/dist/__tests__/comics/canvas.test.js.map +1 -1
  9. package/dist/__tests__/comics/geometry.test.js +9 -2
  10. package/dist/__tests__/comics/geometry.test.js.map +1 -1
  11. package/dist/__tests__/comics/readingDirection.test.d.ts +2 -0
  12. package/dist/__tests__/comics/readingDirection.test.d.ts.map +1 -0
  13. package/dist/__tests__/comics/readingDirection.test.js +95 -0
  14. package/dist/__tests__/comics/readingDirection.test.js.map +1 -0
  15. package/dist/__tests__/comics/skew.test.d.ts +2 -0
  16. package/dist/__tests__/comics/skew.test.d.ts.map +1 -0
  17. package/dist/__tests__/comics/skew.test.js +57 -0
  18. package/dist/__tests__/comics/skew.test.js.map +1 -0
  19. package/dist/__tests__/exports.test.js +39 -0
  20. package/dist/__tests__/exports.test.js.map +1 -1
  21. package/dist/__tests__/preflight.test.d.ts +2 -0
  22. package/dist/__tests__/preflight.test.d.ts.map +1 -0
  23. package/dist/__tests__/preflight.test.js +115 -0
  24. package/dist/__tests__/preflight.test.js.map +1 -0
  25. package/dist/__tests__/printConfig.test.d.ts +2 -0
  26. package/dist/__tests__/printConfig.test.d.ts.map +1 -0
  27. package/dist/__tests__/printConfig.test.js +44 -0
  28. package/dist/__tests__/printConfig.test.js.map +1 -0
  29. package/dist/canvas-backend/comic.d.ts +2 -1
  30. package/dist/canvas-backend/comic.d.ts.map +1 -1
  31. package/dist/canvas-backend/comic.js +6 -9
  32. package/dist/canvas-backend/comic.js.map +1 -1
  33. package/dist/color/authored.d.ts +9 -0
  34. package/dist/color/authored.d.ts.map +1 -0
  35. package/dist/color/authored.js +31 -0
  36. package/dist/color/authored.js.map +1 -0
  37. package/dist/color/catalogue.d.ts +29 -0
  38. package/dist/color/catalogue.d.ts.map +1 -0
  39. package/dist/color/catalogue.js +52 -0
  40. package/dist/color/catalogue.js.map +1 -0
  41. package/dist/color/icc.d.ts +68 -0
  42. package/dist/color/icc.d.ts.map +1 -0
  43. package/dist/color/icc.js +533 -0
  44. package/dist/color/icc.js.map +1 -0
  45. package/dist/color/index.d.ts +6 -0
  46. package/dist/color/index.d.ts.map +1 -0
  47. package/dist/color/index.js +6 -0
  48. package/dist/color/index.js.map +1 -0
  49. package/dist/color/srgbProfile.d.ts +8 -0
  50. package/dist/color/srgbProfile.d.ts.map +1 -0
  51. package/dist/color/srgbProfile.js +86 -0
  52. package/dist/color/srgbProfile.js.map +1 -0
  53. package/dist/color/transform.d.ts +73 -0
  54. package/dist/color/transform.d.ts.map +1 -0
  55. package/dist/color/transform.js +329 -0
  56. package/dist/color/transform.js.map +1 -0
  57. package/dist/comics/index.d.ts +1 -1
  58. package/dist/comics/index.d.ts.map +1 -1
  59. package/dist/comics/index.js +1 -1
  60. package/dist/comics/index.js.map +1 -1
  61. package/dist/comics/layoutPage.d.ts +8 -4
  62. package/dist/comics/layoutPage.d.ts.map +1 -1
  63. package/dist/comics/layoutPage.js +17 -9
  64. package/dist/comics/layoutPage.js.map +1 -1
  65. package/dist/comics/lettering/__tests__/letterPanel.test.js +19 -9
  66. package/dist/comics/lettering/__tests__/letterPanel.test.js.map +1 -1
  67. package/dist/comics/lettering/letter.js +13 -7
  68. package/dist/comics/lettering/letter.js.map +1 -1
  69. package/dist/comics/lettering/placement.d.ts +2 -0
  70. package/dist/comics/lettering/placement.d.ts.map +1 -1
  71. package/dist/comics/lettering/placement.js.map +1 -1
  72. package/dist/comics/lettering/types.d.ts +5 -0
  73. package/dist/comics/lettering/types.d.ts.map +1 -1
  74. package/dist/comics/paint.d.ts +6 -0
  75. package/dist/comics/paint.d.ts.map +1 -1
  76. package/dist/comics/paint.js +23 -0
  77. package/dist/comics/paint.js.map +1 -1
  78. package/dist/comics/script.d.ts.map +1 -1
  79. package/dist/comics/script.js +4 -1
  80. package/dist/comics/script.js.map +1 -1
  81. package/dist/comics/types.d.ts +3 -0
  82. package/dist/comics/types.d.ts.map +1 -1
  83. package/dist/configWarnings.d.ts.map +1 -1
  84. package/dist/configWarnings.js +28 -1
  85. package/dist/configWarnings.js.map +1 -1
  86. package/dist/defaults/comics.d.ts +23 -1
  87. package/dist/defaults/comics.d.ts.map +1 -1
  88. package/dist/defaults/comics.js +24 -1
  89. package/dist/defaults/comics.js.map +1 -1
  90. package/dist/defaults/index.d.ts +2 -1
  91. package/dist/defaults/index.d.ts.map +1 -1
  92. package/dist/defaults/index.js +10 -1
  93. package/dist/defaults/index.js.map +1 -1
  94. package/dist/defaults/page.d.ts +12 -6
  95. package/dist/defaults/page.d.ts.map +1 -1
  96. package/dist/defaults/page.js +15 -9
  97. package/dist/defaults/page.js.map +1 -1
  98. package/dist/defaults/print.d.ts +13 -0
  99. package/dist/defaults/print.d.ts.map +1 -0
  100. package/dist/defaults/print.js +147 -0
  101. package/dist/defaults/print.js.map +1 -0
  102. package/dist/htmlComic.d.ts.map +1 -1
  103. package/dist/htmlComic.js +8 -3
  104. package/dist/htmlComic.js.map +1 -1
  105. package/dist/index.d.ts +9 -4
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +6 -3
  108. package/dist/index.js.map +1 -1
  109. package/dist/locale.d.ts +9 -0
  110. package/dist/locale.d.ts.map +1 -1
  111. package/dist/locale.js +11 -0
  112. package/dist/locale.js.map +1 -1
  113. package/dist/pipeline/config.d.ts.map +1 -1
  114. package/dist/pipeline/config.js +13 -2
  115. package/dist/pipeline/config.js.map +1 -1
  116. package/dist/pipeline/crossRefs.d.ts.map +1 -1
  117. package/dist/pipeline/crossRefs.js +2 -1
  118. package/dist/pipeline/crossRefs.js.map +1 -1
  119. package/dist/preflight.d.ts +89 -0
  120. package/dist/preflight.d.ts.map +1 -0
  121. package/dist/preflight.js +314 -0
  122. package/dist/preflight.js.map +1 -0
  123. package/dist/types.d.ts +167 -9
  124. package/dist/types.d.ts.map +1 -1
  125. package/dist/vdt.d.ts +9 -1
  126. package/dist/vdt.d.ts.map +1 -1
  127. package/dist/vdt.js.map +1 -1
  128. package/icc/README.md +43 -0
  129. package/icc/fogra27.icc +0 -0
  130. package/icc/fogra28.icc +0 -0
  131. package/icc/fogra29.icc +0 -0
  132. package/icc/fogra30.icc +0 -0
  133. package/icc/fogra39.icc +0 -0
  134. package/icc/fogra40.icc +0 -0
  135. package/icc/fogra45.icc +0 -0
  136. package/icc/fogra47.icc +0 -0
  137. package/icc/fogra51.icc +0 -0
  138. package/icc/fogra52.icc +0 -0
  139. package/icc/gracol2006.icc +0 -0
  140. package/icc/ifra26.icc +0 -0
  141. package/icc/snap2007.icc +0 -0
  142. package/icc/swop3.icc +0 -0
  143. package/icc/swop5.icc +0 -0
  144. package/package.json +4 -2
@@ -0,0 +1,6 @@
1
+ export { parseIccProfile, deviceChannels, IccParseError, } from './icc';
2
+ export { D50, xyzToLab, labToXyz, deltaE, srgbToLab, labToSrgb, srgbToXyz, xyzToSrgb, srgbToLinear, linearToSrgb, cmykToLab, labToCmyk, totalAreaCoverage, outputTransform, buildRgbLut, sampleRgbLut, } from './transform';
3
+ export { OUTPUT_PROFILES, DEFAULT_OUTPUT_PROFILE_ID, DEFAULT_PROFILE_BASE_URL, outputProfileInfo, loadOutputProfile, } from './catalogue';
4
+ export { srgbProfileBytes } from './srgbProfile';
5
+ export { authoredCmykColors } from './authored';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/color/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,EACd,aAAa,GAKd,MAAM,OAAO,CAAC;AACf,OAAO,EACL,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,YAAY,GAOb,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,GAElB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * A minimal sRGB ICC profile (v2.1, matrix/TRC, D50-adapted primaries),
3
+ * written in code so no profile file has to ship: what a PDF/X-4 file
4
+ * tags RGB content with (`/DefaultRGB [/ICCBased …]`).
5
+ */
6
+ /** The bytes of the sRGB profile (built once). */
7
+ export declare function srgbProfileBytes(): Uint8Array;
8
+ //# sourceMappingURL=srgbProfile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"srgbProfile.d.ts","sourceRoot":"","sources":["../../src/color/srgbProfile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,kDAAkD;AAClD,wBAAgB,gBAAgB,IAAI,UAAU,CAoE7C"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * A minimal sRGB ICC profile (v2.1, matrix/TRC, D50-adapted primaries),
3
+ * written in code so no profile file has to ship: what a PDF/X-4 file
4
+ * tags RGB content with (`/DefaultRGB [/ICCBased …]`).
5
+ */
6
+ const PRIMARIES = {
7
+ r: [0.4360747, 0.2225045, 0.0139322],
8
+ g: [0.3850649, 0.7168786, 0.0971045],
9
+ b: [0.1430804, 0.0606169, 0.7141733],
10
+ };
11
+ const D50 = [0.9642, 1, 0.8249];
12
+ let cached;
13
+ function s15f16(v) {
14
+ return Math.round(v * 65536) | 0;
15
+ }
16
+ /** The bytes of the sRGB profile (built once). */
17
+ export function srgbProfileBytes() {
18
+ if (cached)
19
+ return cached;
20
+ const tags = [];
21
+ const enc = (s) => Array.from(s, (c) => c.charCodeAt(0));
22
+ const u32 = (n) => [(n >>> 24) & 255, (n >>> 16) & 255, (n >>> 8) & 255, n & 255];
23
+ const u16 = (n) => [(n >>> 8) & 255, n & 255];
24
+ const xyz = (v) => new Uint8Array([...enc('XYZ '), 0, 0, 0, 0, ...v.flatMap((x) => u32(s15f16(x)))]);
25
+ const name = 'sRGB IEC61966-2.1 (postext)';
26
+ const desc = new Uint8Array([
27
+ ...enc('desc'), 0, 0, 0, 0, ...u32(name.length + 1), ...enc(name), 0,
28
+ // Unicode and ScriptCode parts, empty.
29
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...new Array(67).fill(0),
30
+ ]);
31
+ const cprt = new Uint8Array([...enc('text'), 0, 0, 0, 0, ...enc('No copyright, use freely'), 0]);
32
+ const N = 1024;
33
+ const curve = [];
34
+ for (let i = 0; i < N; i++) {
35
+ const v = i / (N - 1);
36
+ const lin = v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);
37
+ curve.push(...u16(Math.round(lin * 65535)));
38
+ }
39
+ const trc = new Uint8Array([...enc('curv'), 0, 0, 0, 0, ...u32(N), ...curve]);
40
+ tags.push({ sig: 'desc', data: desc }, { sig: 'cprt', data: cprt }, { sig: 'wtpt', data: xyz(D50) });
41
+ tags.push({ sig: 'rXYZ', data: xyz(PRIMARIES.r) }, { sig: 'gXYZ', data: xyz(PRIMARIES.g) }, { sig: 'bXYZ', data: xyz(PRIMARIES.b) });
42
+ tags.push({ sig: 'rTRC', data: trc }, { sig: 'gTRC', data: trc }, { sig: 'bTRC', data: trc });
43
+ // Layout: header (128) + tag count + table, then data (shared TRC once).
44
+ const tableSize = 4 + tags.length * 12;
45
+ let offset = 128 + tableSize;
46
+ const placed = new Map();
47
+ const entries = [];
48
+ const blobs = [];
49
+ for (const t of tags) {
50
+ let at = placed.get(t.data);
51
+ if (at === undefined) {
52
+ at = offset;
53
+ placed.set(t.data, at);
54
+ blobs.push(t.data);
55
+ offset += t.data.length;
56
+ const pad = (4 - (offset % 4)) % 4;
57
+ if (pad) {
58
+ blobs.push(new Uint8Array(pad));
59
+ offset += pad;
60
+ }
61
+ }
62
+ entries.push(...enc(t.sig), ...u32(at), ...u32(t.data.length));
63
+ }
64
+ const size = offset;
65
+ const out = new Uint8Array(size);
66
+ const header = [
67
+ ...u32(size), ...enc('none'), 0x02, 0x10, 0, 0, ...enc('mntr'), ...enc('RGB '), ...enc('XYZ '),
68
+ // Date 2026-01-01 00:00:00.
69
+ ...u16(2026), ...u16(1), ...u16(1), 0, 0, 0, 0, 0, 0,
70
+ // Flags, manufacturer, model (4 each) and attributes (8).
71
+ ...enc('acsp'), ...enc('APPL'), ...new Array(20).fill(0),
72
+ // Rendering intent perceptual, then the PCS illuminant D50.
73
+ 0, 0, 0, 0, ...D50.flatMap((x) => u32(s15f16(x))),
74
+ 0, 0, 0, 0,
75
+ ];
76
+ out.set(header, 0);
77
+ out.set([...u32(tags.length), ...entries], 128);
78
+ let at = 128 + tableSize;
79
+ for (const b of blobs) {
80
+ out.set(b, at);
81
+ at += b.length;
82
+ }
83
+ cached = out;
84
+ return out;
85
+ }
86
+ //# sourceMappingURL=srgbProfile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"srgbProfile.js","sourceRoot":"","sources":["../../src/color/srgbProfile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Colour transforms between the document's sRGB colours and a CMYK output
3
+ * profile: the separation postext-pdf writes, and the soft proof the
4
+ * canvas viewers paint (CMYK → Lab → screen sRGB).
5
+ */
6
+ import type { IccProfile, XYZ } from './icc';
7
+ export type RenderingIntent = 'perceptual' | 'relative' | 'saturation' | 'absolute';
8
+ export interface Lab {
9
+ L: number;
10
+ a: number;
11
+ b: number;
12
+ }
13
+ export interface Cmyk {
14
+ /** 0..1 each. */
15
+ c: number;
16
+ m: number;
17
+ y: number;
18
+ k: number;
19
+ }
20
+ export declare const D50: XYZ;
21
+ export declare function xyzToLab(v: XYZ, white?: XYZ): Lab;
22
+ export declare function labToXyz(lab: Lab, white?: XYZ): XYZ;
23
+ /** CIE76 colour difference. */
24
+ export declare function deltaE(p: Lab, q: Lab): number;
25
+ export declare function srgbToLinear(v: number): number;
26
+ export declare function linearToSrgb(v: number): number;
27
+ export declare function srgbToXyz(r: number, g: number, b: number): XYZ;
28
+ export declare function xyzToSrgb(v: XYZ): [number, number, number];
29
+ export declare function srgbToLab(r: number, g: number, b: number): Lab;
30
+ export declare function labToSrgb(lab: Lab): [number, number, number];
31
+ /** Device CMYK (0..1) → Lab through the profile's A2B table. `absolute`
32
+ * maps paper white to the paper's own colour (soft proof with paper
33
+ * simulation); the other intents give media-relative Lab. */
34
+ export declare function cmykToLab(profile: IccProfile, cmyk: Cmyk, intent?: RenderingIntent): Lab;
35
+ /** Lab → device CMYK through the profile's B2A table. */
36
+ export declare function labToCmyk(profile: IccProfile, lab: Lab, intent?: RenderingIntent): Cmyk;
37
+ /** Total area coverage of a CMYK value, in percent (0..400). */
38
+ export declare function totalAreaCoverage(cmyk: Cmyk): number;
39
+ export interface OutputTransformOptions {
40
+ intent?: RenderingIntent;
41
+ /** Scale the source so sRGB black lands on the profile's darkest
42
+ * printable black instead of being clipped (relative intent only). */
43
+ blackPointCompensation?: boolean;
44
+ /** Neutral colours (r = g = b) become K only, with K picked so L* matches. */
45
+ preserveNeutrals?: boolean;
46
+ }
47
+ export interface OutputTransform {
48
+ profile: IccProfile;
49
+ /** sRGB 0..1 → CMYK 0..1. */
50
+ fromRgb(r: number, g: number, b: number): Cmyk;
51
+ /** CMYK → media-relative Lab (relative) or paper-simulating Lab. */
52
+ toLab(cmyk: Cmyk, paper?: boolean): Lab;
53
+ /** CMYK → screen sRGB 0..1, the soft proof of one colour. */
54
+ proof(cmyk: Cmyk, paper?: boolean): [number, number, number];
55
+ /** The profile's darkest black (relative Lab of its B2A for L* 0). */
56
+ blackPoint: Lab;
57
+ /** L* of paper with K only at `k` (relative): the K-only neutral ramp. */
58
+ kOnlyFor(L: number): number;
59
+ }
60
+ /** Build (and memoize per profile + options) a transform from the
61
+ * document's sRGB colours to an output CMYK profile. */
62
+ export declare function outputTransform(profile: IccProfile, options?: OutputTransformOptions): OutputTransform;
63
+ /** A dense RGB → RGBA-ish lookup (`size³` entries × `channels`), filled by
64
+ * `fn` and applied per pixel with trilinear interpolation. */
65
+ export interface RgbLut {
66
+ size: number;
67
+ channels: number;
68
+ data: Float32Array;
69
+ }
70
+ export declare function buildRgbLut(size: number, channels: number, fn: (r: number, g: number, b: number) => number[]): RgbLut;
71
+ /** Evaluate an `RgbLut` at 0..255 integer RGB into `out` (tetrahedral). */
72
+ export declare function sampleRgbLut(lut: RgbLut, r8: number, g8: number, b8: number, out: Float32Array | number[]): void;
73
+ //# sourceMappingURL=transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/color/transform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,329 @@
1
+ /**
2
+ * Colour transforms between the document's sRGB colours and a CMYK output
3
+ * profile: the separation postext-pdf writes, and the soft proof the
4
+ * canvas viewers paint (CMYK → Lab → screen sRGB).
5
+ */
6
+ export const D50 = { X: 0.9642, Y: 1, Z: 0.8249 };
7
+ // ---------------------------------------------------------------------------
8
+ // Lab / XYZ
9
+ function labF(t) {
10
+ return t > 216 / 24389 ? Math.cbrt(t) : (24389 / 27 * t + 16) / 116;
11
+ }
12
+ function labFInv(t) {
13
+ const t3 = t * t * t;
14
+ return t3 > 216 / 24389 ? t3 : (116 * t - 16) / (24389 / 27);
15
+ }
16
+ export function xyzToLab(v, white = D50) {
17
+ const fx = labF(v.X / white.X);
18
+ const fy = labF(v.Y / white.Y);
19
+ const fz = labF(v.Z / white.Z);
20
+ return { L: 116 * fy - 16, a: 500 * (fx - fy), b: 200 * (fy - fz) };
21
+ }
22
+ export function labToXyz(lab, white = D50) {
23
+ const fy = (lab.L + 16) / 116;
24
+ const fx = fy + lab.a / 500;
25
+ const fz = fy - lab.b / 200;
26
+ return { X: white.X * labFInv(fx), Y: white.Y * labFInv(fy), Z: white.Z * labFInv(fz) };
27
+ }
28
+ /** CIE76 colour difference. */
29
+ export function deltaE(p, q) {
30
+ return Math.hypot(p.L - q.L, p.a - q.a, p.b - q.b);
31
+ }
32
+ function decodePcs(x, enc) {
33
+ switch (enc) {
34
+ case 'lab-v2':
35
+ return { L: (x[0] * 65535) / 652.8, a: (x[1] * 65535) / 256 - 128, b: (x[2] * 65535) / 256 - 128 };
36
+ case 'lab-8':
37
+ return { L: x[0] * 100, a: x[1] * 255 - 128, b: x[2] * 255 - 128 };
38
+ case 'lab-v4':
39
+ return { L: x[0] * 100, a: x[1] * 255 - 128, b: x[2] * 255 - 128 };
40
+ case 'xyz': {
41
+ const k = 65535 / 32768;
42
+ return xyzToLab({ X: x[0] * k, Y: x[1] * k, Z: x[2] * k });
43
+ }
44
+ }
45
+ }
46
+ function clamp01(x) {
47
+ return x < 0 ? 0 : x > 1 ? 1 : x;
48
+ }
49
+ function encodePcs(lab, enc) {
50
+ switch (enc) {
51
+ case 'lab-v2':
52
+ return [clamp01((lab.L * 652.8) / 65535), clamp01(((lab.a + 128) * 256) / 65535), clamp01(((lab.b + 128) * 256) / 65535)];
53
+ case 'lab-8':
54
+ case 'lab-v4':
55
+ return [clamp01(lab.L / 100), clamp01((lab.a + 128) / 255), clamp01((lab.b + 128) / 255)];
56
+ case 'xyz': {
57
+ const v = labToXyz(lab);
58
+ const k = 32768 / 65535;
59
+ return [clamp01(v.X * k), clamp01(v.Y * k), clamp01(v.Z * k)];
60
+ }
61
+ }
62
+ }
63
+ // ---------------------------------------------------------------------------
64
+ // sRGB (D50-adapted with Bradford, as ICC profiles carry it)
65
+ const SRGB_TO_XYZ_D50 = [
66
+ 0.4360747, 0.3850649, 0.1430804,
67
+ 0.2225045, 0.7168786, 0.0606169,
68
+ 0.0139322, 0.0971045, 0.7141733,
69
+ ];
70
+ const XYZ_D50_TO_SRGB = [
71
+ 3.1338561, -1.6168667, -0.4906146,
72
+ -0.9787684, 1.9161415, 0.033454,
73
+ 0.0719453, -0.2289914, 1.4052427,
74
+ ];
75
+ export function srgbToLinear(v) {
76
+ return v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);
77
+ }
78
+ export function linearToSrgb(v) {
79
+ const c = v <= 0.0031308 ? 12.92 * v : 1.055 * Math.pow(v, 1 / 2.4) - 0.055;
80
+ return clamp01(c);
81
+ }
82
+ export function srgbToXyz(r, g, b) {
83
+ const R = srgbToLinear(r);
84
+ const G = srgbToLinear(g);
85
+ const B = srgbToLinear(b);
86
+ const m = SRGB_TO_XYZ_D50;
87
+ return {
88
+ X: m[0] * R + m[1] * G + m[2] * B,
89
+ Y: m[3] * R + m[4] * G + m[5] * B,
90
+ Z: m[6] * R + m[7] * G + m[8] * B,
91
+ };
92
+ }
93
+ export function xyzToSrgb(v) {
94
+ const m = XYZ_D50_TO_SRGB;
95
+ return [
96
+ linearToSrgb(m[0] * v.X + m[1] * v.Y + m[2] * v.Z),
97
+ linearToSrgb(m[3] * v.X + m[4] * v.Y + m[5] * v.Z),
98
+ linearToSrgb(m[6] * v.X + m[7] * v.Y + m[8] * v.Z),
99
+ ];
100
+ }
101
+ export function srgbToLab(r, g, b) {
102
+ return xyzToLab(srgbToXyz(r, g, b));
103
+ }
104
+ export function labToSrgb(lab) {
105
+ return xyzToSrgb(labToXyz(lab));
106
+ }
107
+ // ---------------------------------------------------------------------------
108
+ // Output profile helpers
109
+ function intentIndex(intent) {
110
+ return intent === 'perceptual' ? 0 : intent === 'saturation' ? 2 : 1;
111
+ }
112
+ function pick(table, intent) {
113
+ const i = intentIndex(intent);
114
+ return table[i] ?? table[1] ?? table[0] ?? table[2];
115
+ }
116
+ /** Device CMYK (0..1) → Lab through the profile's A2B table. `absolute`
117
+ * maps paper white to the paper's own colour (soft proof with paper
118
+ * simulation); the other intents give media-relative Lab. */
119
+ export function cmykToLab(profile, cmyk, intent = 'relative') {
120
+ const lut = pick(profile.aToB, intent === 'absolute' ? 'relative' : intent);
121
+ if (!lut)
122
+ throw new Error('profile has no A2B table');
123
+ const lab = decodePcs(lut.run([cmyk.c, cmyk.m, cmyk.y, cmyk.k]), lut.pcsEncoding);
124
+ if (intent !== 'absolute')
125
+ return lab;
126
+ return relativeToAbsolute(profile, lab);
127
+ }
128
+ function relativeToAbsolute(profile, lab) {
129
+ // v2 media-relative PCS is scaled so the media white sits at D50; undo it.
130
+ const w = profile.mediaWhite;
131
+ const v = labToXyz(lab);
132
+ return xyzToLab({ X: (v.X * w.X) / D50.X, Y: (v.Y * w.Y) / D50.Y, Z: (v.Z * w.Z) / D50.Z });
133
+ }
134
+ /** Lab → device CMYK through the profile's B2A table. */
135
+ export function labToCmyk(profile, lab, intent = 'relative') {
136
+ const lut = pick(profile.bToA, intent === 'absolute' ? 'relative' : intent);
137
+ if (!lut)
138
+ throw new Error('profile has no B2A table');
139
+ const out = lut.run(encodePcs(lab, lut.pcsEncoding));
140
+ return { c: clamp01(out[0]), m: clamp01(out[1]), y: clamp01(out[2]), k: clamp01(out[3]) };
141
+ }
142
+ /** Total area coverage of a CMYK value, in percent (0..400). */
143
+ export function totalAreaCoverage(cmyk) {
144
+ return (cmyk.c + cmyk.m + cmyk.y + cmyk.k) * 100;
145
+ }
146
+ const transformCache = new WeakMap();
147
+ /** Build (and memoize per profile + options) a transform from the
148
+ * document's sRGB colours to an output CMYK profile. */
149
+ export function outputTransform(profile, options = {}) {
150
+ const intent = options.intent ?? 'relative';
151
+ const bpc = options.blackPointCompensation ?? true;
152
+ const neutrals = options.preserveNeutrals ?? true;
153
+ const key = `${intent}|${bpc}|${neutrals}`;
154
+ let perProfile = transformCache.get(profile);
155
+ if (!perProfile) {
156
+ perProfile = new Map();
157
+ transformCache.set(profile, perProfile);
158
+ }
159
+ const hit = perProfile.get(key);
160
+ if (hit)
161
+ return hit;
162
+ // The darkest black the profile prints: round-trip L* 0 through B2A/A2B.
163
+ const blackPoint = cmykToLab(profile, labToCmyk(profile, { L: 0, a: 0, b: 0 }, 'relative'), 'relative');
164
+ const bpXyz = labToXyz({ L: blackPoint.L, a: 0, b: 0 });
165
+ // K-only ramp: L* (relative) for K in 0..1, monotonically decreasing.
166
+ const RAMP = 256;
167
+ const rampL = new Float64Array(RAMP + 1);
168
+ for (let i = 0; i <= RAMP; i++)
169
+ rampL[i] = cmykToLab(profile, { c: 0, m: 0, y: 0, k: i / RAMP }, 'relative').L;
170
+ const kOnlyFor = (L) => {
171
+ if (L >= rampL[0])
172
+ return 0;
173
+ if (L <= rampL[RAMP])
174
+ return 1;
175
+ let lo = 0;
176
+ let hi = RAMP;
177
+ while (hi - lo > 1) {
178
+ const mid = (lo + hi) >> 1;
179
+ if (rampL[mid] > L)
180
+ lo = mid;
181
+ else
182
+ hi = mid;
183
+ }
184
+ const l0 = rampL[lo];
185
+ const l1 = rampL[hi];
186
+ const f = l0 === l1 ? 0 : (l0 - L) / (l0 - l1);
187
+ return (lo + f) / RAMP;
188
+ };
189
+ // The darkest K-only tone; neutrals darker than it get K 100 plus
190
+ // nothing (we never build rich black for neutrals here: that is the
191
+ // black-handling layer's job, for large areas only).
192
+ const sourceLab = (r, g, b) => {
193
+ const v = srgbToXyz(r, g, b);
194
+ if (!bpc || intent !== 'relative')
195
+ return xyzToLab(v);
196
+ // Black-point compensation, source black = 0: v' = bp + v (1 - bp / wp).
197
+ return xyzToLab({
198
+ X: bpXyz.X + v.X * (1 - bpXyz.X / D50.X),
199
+ Y: bpXyz.Y + v.Y * (1 - bpXyz.Y / D50.Y),
200
+ Z: bpXyz.Z + v.Z * (1 - bpXyz.Z / D50.Z),
201
+ });
202
+ };
203
+ const t = {
204
+ profile,
205
+ blackPoint,
206
+ kOnlyFor,
207
+ fromRgb(r, g, b) {
208
+ if (neutrals && Math.abs(r - g) < 1e-6 && Math.abs(g - b) < 1e-6) {
209
+ if (r >= 1)
210
+ return { c: 0, m: 0, y: 0, k: 0 };
211
+ if (r <= 0)
212
+ return { c: 0, m: 0, y: 0, k: 1 };
213
+ // Match L* against the K ramp, scaled so black is K 100: the
214
+ // neutral's lightness runs from paper (L 100) to the K solid.
215
+ const L = srgbToLab(r, g, b).L;
216
+ const kSolid = rampL[RAMP];
217
+ const target = kSolid + (L / 100) * (100 - kSolid);
218
+ return { c: 0, m: 0, y: 0, k: kOnlyFor(target) };
219
+ }
220
+ return labToCmyk(profile, sourceLab(r, g, b), intent === 'absolute' ? 'relative' : intent);
221
+ },
222
+ toLab(cmyk, paper = false) {
223
+ return cmykToLab(profile, cmyk, paper ? 'absolute' : 'relative');
224
+ },
225
+ proof(cmyk, paper = false) {
226
+ return labToSrgb(cmykToLab(profile, cmyk, paper ? 'absolute' : 'relative'));
227
+ },
228
+ };
229
+ perProfile.set(key, t);
230
+ return t;
231
+ }
232
+ export function buildRgbLut(size, channels, fn) {
233
+ const data = new Float32Array(size * size * size * channels);
234
+ const n = size - 1;
235
+ let at = 0;
236
+ for (let ri = 0; ri < size; ri++) {
237
+ for (let gi = 0; gi < size; gi++) {
238
+ for (let bi = 0; bi < size; bi++) {
239
+ const out = fn(ri / n, gi / n, bi / n);
240
+ for (let c = 0; c < channels; c++)
241
+ data[at++] = out[c];
242
+ }
243
+ }
244
+ }
245
+ return { size, channels, data };
246
+ }
247
+ /** Evaluate an `RgbLut` at 0..255 integer RGB into `out` (tetrahedral). */
248
+ export function sampleRgbLut(lut, r8, g8, b8, out) {
249
+ const { size, channels, data } = lut;
250
+ const n = size - 1;
251
+ const fr = (r8 / 255) * n;
252
+ const fg = (g8 / 255) * n;
253
+ const fb = (b8 / 255) * n;
254
+ let ir = Math.floor(fr);
255
+ let ig = Math.floor(fg);
256
+ let ib = Math.floor(fb);
257
+ if (ir >= n)
258
+ ir = n - 1;
259
+ if (ig >= n)
260
+ ig = n - 1;
261
+ if (ib >= n)
262
+ ib = n - 1;
263
+ const rx = fr - ir;
264
+ const ry = fg - ig;
265
+ const rz = fb - ib;
266
+ const sR = size * size * channels;
267
+ const sG = size * channels;
268
+ const sB = channels;
269
+ const base = ir * sR + ig * sG + ib * sB;
270
+ // Tetrahedral weights: pick the corners of the simplex holding the point.
271
+ let c1, c2, c3;
272
+ let w1, w2, w3;
273
+ if (rx >= ry) {
274
+ if (ry >= rz) {
275
+ c1 = sR;
276
+ c2 = sR + sG;
277
+ c3 = sR + sG + sB;
278
+ w1 = rx - ry;
279
+ w2 = ry - rz;
280
+ w3 = rz;
281
+ }
282
+ else if (rx >= rz) {
283
+ c1 = sR;
284
+ c2 = sR + sB;
285
+ c3 = sR + sG + sB;
286
+ w1 = rx - rz;
287
+ w2 = rz - ry;
288
+ w3 = ry;
289
+ }
290
+ else {
291
+ c1 = sB;
292
+ c2 = sR + sB;
293
+ c3 = sR + sG + sB;
294
+ w1 = rz - rx;
295
+ w2 = rx - ry;
296
+ w3 = ry;
297
+ }
298
+ }
299
+ else if (rz >= ry) {
300
+ c1 = sB;
301
+ c2 = sG + sB;
302
+ c3 = sR + sG + sB;
303
+ w1 = rz - ry;
304
+ w2 = ry - rx;
305
+ w3 = rx;
306
+ }
307
+ else if (rz >= rx) {
308
+ c1 = sG;
309
+ c2 = sG + sB;
310
+ c3 = sR + sG + sB;
311
+ w1 = ry - rz;
312
+ w2 = rz - rx;
313
+ w3 = rx;
314
+ }
315
+ else {
316
+ c1 = sG;
317
+ c2 = sR + sG;
318
+ c3 = sR + sG + sB;
319
+ w1 = ry - rx;
320
+ w2 = rx - rz;
321
+ w3 = rz;
322
+ }
323
+ const w0 = 1 - w1 - w2 - w3;
324
+ for (let c = 0; c < channels; c++) {
325
+ const i = base + c;
326
+ out[c] = w0 * data[i] + w1 * data[i + c1] + w2 * data[i + c2] + w3 * data[i + c3];
327
+ }
328
+ }
329
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../src/color/transform.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,6 @@ export { translateComicPage, translateComicPanel, translateComicSplitter, transl
24
24
  export { comicFontFamilies, markdownHasComics } from './fonts';
25
25
  export { COMIC_RESERVED_KEYS } from './types';
26
26
  export type { ComicPageSource, ComicPanelSource, ComicScriptItem, ComicScriptRole, ComicSourceRange, ComicTailSide } from './types';
27
- export { comicBalloonKind, comicBalloonText, comicSpeakerName, comicBalloonGroups, comicPanelPathData, comicBorderPathData, comicRoughBorder, polygonPathData, comicPanelContinues, isComicSpreadPartner, joinComicSpread, } from './paint';
27
+ export { comicBalloonKind, comicBalloonText, comicSpeakerName, comicBalloonGroups, comicPanelPathData, comicBorderPathData, comicRoughBorder, polygonPathData, comicPanelContinues, isComicSpreadPartner, joinComicSpread, comicBalloonMatrix, } from './paint';
28
28
  export type { ComicBalloonKind } from './paint';
29
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/comics/index.ts"],"names":[],"mappings":"AAAA;2DAC2D;AAC3D,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACjJ,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC9E,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACtF,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC/G,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,OAAO,CAAC;AAC9H,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACtO,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACtF,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtJ,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACrN,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC5D,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACtK,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpI,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,GAChB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/comics/index.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,5 @@ export { layoutComicSpread, isComicSpread } from './spread';
14
14
  export { translateComicPage, translateComicPanel, translateComicSplitter, translateComicBalloon, translateSvgPath, comicBlockOnSheet, pageComics } from './transform';
15
15
  export { comicFontFamilies, markdownHasComics } from './fonts';
16
16
  export { COMIC_RESERVED_KEYS } from './types';
17
- export { comicBalloonKind, comicBalloonText, comicSpeakerName, comicBalloonGroups, comicPanelPathData, comicBorderPathData, comicRoughBorder, polygonPathData, comicPanelContinues, isComicSpreadPartner, joinComicSpread, } from './paint';
17
+ export { comicBalloonKind, comicBalloonText, comicSpeakerName, comicBalloonGroups, comicPanelPathData, comicBorderPathData, comicRoughBorder, polygonPathData, comicPanelContinues, isComicSpreadPartner, joinComicSpread, comicBalloonMatrix, } from './paint';
18
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/comics/index.ts"],"names":[],"mappings":"AAAA;2DAC2D;AAC3D,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE9E,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtF,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,OAAO,CAAC;AAE9H,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEtO,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAErN,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACtK,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,GAChB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/comics/index.ts"],"names":[],"mappings":"AAAA;2DAC2D;AAC3D,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE9E,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtF,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,OAAO,CAAC;AAE9H,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEtO,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAErN,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACtK,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,kBAAkB,GACnB,MAAM,SAAS,CAAC"}
@@ -45,10 +45,14 @@ export declare function comicViewerLeaf(comics: ResolvedComicsConfig, resolved:
45
45
  * bare number in mm), or undefined. */
46
46
  export declare function parseComicDimension(value: string | undefined): Dimension | undefined;
47
47
  /** The reading direction of a page: its `direction` attribute, else the
48
- * config's; `'auto'` is `'rtl'` in a right-to-left document (an Arabic
49
- * edition mirrors its pages) and the direction the art was drawn for
50
- * otherwise (`comics.artDirection`: a Japanese edition of a Western comic
51
- * stays left to right, a manga stays right to left in any language). */
48
+ * document's ({@link comicReadingDirection}): `'auto'` is `'rtl'` in a
49
+ * right-to-left document (an Arabic edition mirrors its pages), in a
50
+ * vertical one and in a Japanese or Traditional Chinese one (a localized
51
+ * edition of a Western comic reads in its language's direction), and the
52
+ * direction the art was drawn for otherwise (`comics.artDirection`: a
53
+ * manga stays right to left in any language). Every comic of the
54
+ * document — pages, spreads, strips, their lettering order and the
55
+ * guided views — reads in the direction this returns. */
52
56
  export declare function comicPageDirection(source: Pick<ComicPageSource, 'attrs'>, comics: ResolvedComicsConfig, resolved: ResolvedConfig): 'ltr' | 'rtl';
53
57
  /** A panel's `pad` (CSS-like, one to four values: top, end, bottom,
54
58
  * start; each a Dimension or a percentage of the cell, `pad="0 12%"`) as