@unisim/doc 0.7.0 → 0.8.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/README.md CHANGED
@@ -50,6 +50,17 @@ reader has to drop is reported through `RichDoc.notices` rather than discovered
50
50
  later — the failure worth designing against is someone assuming the output is a
51
51
  copy.
52
52
 
53
+ **Right-to-left text** (Hebrew; Arabic letters are ordered too) is put into
54
+ visual order by `src/bidi.ts`, a hand-written subset of the Unicode
55
+ Bidirectional Algorithm (UAX #9) — hand-written rather than `bidi-js` because
56
+ this package has no dependencies. Levels are resolved per paragraph and each
57
+ wrapped line is reordered on its own; a paragraph whose first letter is
58
+ right-to-left is right-aligned, and its list markers and quote bar move to the
59
+ right. Not done: explicit embedding/isolate controls (ignored), Arabic shaping
60
+ (letters are not joined), and right-to-left column order in tables. An
61
+ all-Latin document's PDF is byte-identical to 0.7.0's — the self-test holds it
62
+ to a hash.
63
+
53
64
  ## Two writers, on purpose
54
65
 
55
66
  The PDF writer here goes through `pdfcore` — base-14 fonts, its own AFM tables,
package/dist/bidi.d.ts ADDED
@@ -0,0 +1,51 @@
1
+ type Level = number;
2
+ /** True if `text` holds a right-to-left letter (or an Arabic digit, or an RLM). */
3
+ export declare function hasRtl(text: string): boolean;
4
+ /** The glyph to draw for `ch` at an odd (right-to-left) level. */
5
+ export declare function mirrorOf(ch: string): string;
6
+ /**
7
+ * The paragraph's direction (P2/P3): 1 if its first strong letter is
8
+ * right-to-left, else 0. A paragraph with no letters at all is left-to-right.
9
+ */
10
+ export declare function paragraphLevel(text: string): 0 | 1;
11
+ export interface BidiParagraph {
12
+ /** The paragraph's own level: 0 left-to-right, 1 right-to-left. */
13
+ base: 0 | 1;
14
+ /** The resolved embedding level of every UTF-16 code unit of the input. */
15
+ levels: Uint8Array;
16
+ }
17
+ /**
18
+ * Resolve the embedding level of every character in one paragraph (rules
19
+ * P2–I2). Returns `null` for a paragraph with nothing right-to-left in it
20
+ * (unless `base` forces it right-to-left), so a caller can keep its all-Latin
21
+ * path exactly as it was.
22
+ *
23
+ * `base` forces the paragraph direction; left out, it comes from the text.
24
+ */
25
+ export declare function resolveLevels(text: string, base?: 0 | 1): BidiParagraph | null;
26
+ /** One thing to place on a line: a base character and the marks on it. */
27
+ export interface BidiCluster {
28
+ text: string;
29
+ level: Level;
30
+ }
31
+ /**
32
+ * Split `text` into clusters — a character plus any combining marks after it —
33
+ * each carrying the level of its first code unit. A mark must be drawn AFTER
34
+ * its base whichever way the line runs (rule L3), so they reverse as one.
35
+ */
36
+ export declare function clustersOf(text: string, levels: ArrayLike<number>): BidiCluster[];
37
+ /**
38
+ * Put one rendered line's clusters into visual (left-to-right) order: rule L1
39
+ * (trailing whitespace and tabs to the paragraph level) then L2 (reverse every
40
+ * run at or above each odd level, highest first). Returns a new array; each
41
+ * item's `level` is the one it was DRAWN at, so the caller can mirror (L4).
42
+ */
43
+ export declare function reorderLine<T extends BidiCluster>(line: readonly T[], base: 0 | 1): T[];
44
+ /**
45
+ * One line of text as it will be SEEN, left to right — the whole algorithm in
46
+ * one call, for a caller that draws a single line (a label, a list marker) and
47
+ * for the tests. Text with nothing right-to-left in it is returned unchanged.
48
+ */
49
+ export declare function visualOrder(text: string, base?: 0 | 1): string;
50
+ export {};
51
+ //# sourceMappingURL=bidi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bidi.d.ts","sourceRoot":"","sources":["../src/bidi.ts"],"names":[],"mappings":"AA+DA,KAAK,KAAK,GAAG,MAAM,CAAA;AAKnB,mFAAmF;AACnF,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE5C;AAuJD,kEAAkE;AAClE,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CASlD;AAED,MAAM,WAAW,aAAa;IAC5B,mEAAmE;IACnE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;IACX,2EAA2E;IAC3E,MAAM,EAAE,UAAU,CAAA;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,aAAa,GAAG,IAAI,CAqG9E;AA6DD,0EAA0E;AAC1E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,KAAK,CAAA;CACb;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,WAAW,EAAE,CAejF;AAID;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CA+BvF;AAYD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,CAM9D"}
package/dist/bidi.js ADDED
@@ -0,0 +1,587 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Right-to-left text, in the order it is SEEN.
3
+ //
4
+ // A PDF content stream draws glyphs left to right, one after another, and that
5
+ // is all it does. Hebrew is stored first-letter-first like every other script,
6
+ // so drawn as stored it comes out mirrored: שלום עולם read backwards. Nothing
7
+ // in a PDF viewer fixes that for you — the reordering is the WRITER's job, and
8
+ // until this file existed nothing here did it.
9
+ //
10
+ // WHY A HAND-WRITTEN SUBSET OF UAX #9 AND NOT `bidi-js`
11
+ // ------------------------------------------------------
12
+ // This package has NO RUNTIME DEPENDENCIES and says so in its README: one of
13
+ // its two consumers (Universal Converter) is sold on being offline from first
14
+ // visit with nothing fetched. `bidi-js` is a fine library, but it is ~60 KB of
15
+ // generated Unicode tables for the whole of UAX #9 — explicit embeddings,
16
+ // isolates, every script — to serve a writer that can only ever draw what its
17
+ // fallback face (Liberation Sans) holds: Latin, Greek, Cyrillic and Hebrew.
18
+ // What that needs is the implicit algorithm on one paragraph, which is short
19
+ // and well specified. So this is exactly that, rule by rule, with the rule
20
+ // names from the standard on each step so it can be checked against it:
21
+ //
22
+ // P2/P3 paragraph direction from the first strong character
23
+ // W1–W7 weak types (marks, numbers, separators)
24
+ // N0 paired brackets
25
+ // N1–N2 neutrals
26
+ // I1–I2 implicit levels
27
+ // L1 trailing whitespace back to the paragraph level (per line)
28
+ // L2 reverse runs, highest level first (per line)
29
+ // L3 combining marks stay AFTER their base (reversed as clusters)
30
+ // L4 mirrored glyphs — '(' in right-to-left text is drawn as ')'
31
+ //
32
+ // NOT DONE, on purpose: explicit embeddings and isolates (LRE/RLE/LRO/RLO/PDF,
33
+ // LRI/RLI/FSI/PDI) are treated as invisible no-ops, and Arabic is ordered but
34
+ // not SHAPED (no joining forms) — Liberation Sans has no Arabic anyway. The
35
+ // character classes cover Latin, Greek, Cyrillic, Hebrew, Arabic and common
36
+ // punctuation; anything unlisted is a strong left-to-right letter, which is the
37
+ // right answer for every other script the suite can draw.
38
+ //
39
+ // ⚠️ LEVELS ARE RESOLVED PER PARAGRAPH, ORDER IS APPLIED PER LINE. The standard
40
+ // is explicit about this and it matters: whether the comma at the end of a
41
+ // wrapped line belongs to the Hebrew before it or the English after it depends
42
+ // on text that may be on the NEXT line. So the writer resolves levels once on
43
+ // the whole paragraph, wraps in logical order, and only then reorders each
44
+ // rendered line — never the other way round, which would wrap a reversed
45
+ // paragraph and put its last words on the first line.
46
+ // ---------------------------------------------------------------------------
47
+ // Bidi classes, as small integers so the per-character arrays are typed arrays.
48
+ const L = 0;
49
+ const R = 1;
50
+ const AL = 2;
51
+ const EN = 3;
52
+ const ES = 4;
53
+ const ET = 5;
54
+ const AN = 6;
55
+ const CS = 7;
56
+ const NSM = 8;
57
+ const BN = 9;
58
+ const B = 10;
59
+ const S = 11;
60
+ const WS = 12;
61
+ const ON = 13;
62
+ /** Anything that can make a paragraph need reordering at all. */
63
+ const RTL_TRIGGER = /[֐-ࣿיִ-﷿ﹰ-ﻼ‏؜]/;
64
+ /** True if `text` holds a right-to-left letter (or an Arabic digit, or an RLM). */
65
+ export function hasRtl(text) {
66
+ return RTL_TRIGGER.test(text);
67
+ }
68
+ function inRange(c, lo, hi) {
69
+ return c >= lo && c <= hi;
70
+ }
71
+ /** Combining marks — they belong to the character before them. */
72
+ function isMark(c) {
73
+ return (inRange(c, 0x0300, 0x036f) ||
74
+ inRange(c, 0x0483, 0x0489) ||
75
+ inRange(c, 0x0591, 0x05bd) ||
76
+ c === 0x05bf ||
77
+ c === 0x05c1 || c === 0x05c2 ||
78
+ c === 0x05c4 || c === 0x05c5 ||
79
+ c === 0x05c7 ||
80
+ inRange(c, 0x0610, 0x061a) ||
81
+ inRange(c, 0x064b, 0x065f) ||
82
+ c === 0x0670 ||
83
+ inRange(c, 0x06d6, 0x06dc) ||
84
+ inRange(c, 0x06df, 0x06e4) ||
85
+ c === 0x06e7 || c === 0x06e8 ||
86
+ inRange(c, 0x06ea, 0x06ed) ||
87
+ inRange(c, 0x08d3, 0x08ff) && c !== 0x08e2 ||
88
+ c === 0xfb1e ||
89
+ inRange(c, 0x20d0, 0x20ff) ||
90
+ inRange(c, 0xfe00, 0xfe0f) ||
91
+ inRange(c, 0xfe20, 0xfe2f));
92
+ }
93
+ /** The Bidi_Class of a code point, for the scripts this writer can draw. */
94
+ function classOf(c) {
95
+ // ASCII first: it is nearly every character in nearly every document.
96
+ if (c < 0x80) {
97
+ if (c >= 0x30 && c <= 0x39)
98
+ return EN;
99
+ if ((c >= 0x41 && c <= 0x5a) || (c >= 0x61 && c <= 0x7a))
100
+ return L;
101
+ if (c === 0x20 || c === 0x0c)
102
+ return WS;
103
+ if (c === 0x09 || c === 0x0b || c === 0x1f)
104
+ return S;
105
+ if (c === 0x0a || c === 0x0d || (c >= 0x1c && c <= 0x1e))
106
+ return B;
107
+ if (c < 0x20 || c === 0x7f)
108
+ return BN;
109
+ if (c === 0x2b || c === 0x2d)
110
+ return ES; // + -
111
+ if (c >= 0x23 && c <= 0x25)
112
+ return ET; // # $ %
113
+ if (c === 0x2c || c === 0x2e || c === 0x2f || c === 0x3a)
114
+ return CS; // , . / :
115
+ return ON;
116
+ }
117
+ if (isMark(c))
118
+ return NSM;
119
+ // Latin-1 supplement
120
+ if (c < 0x100) {
121
+ if (c === 0x85)
122
+ return B;
123
+ if (c < 0xa0)
124
+ return BN;
125
+ if (c === 0xa0)
126
+ return CS;
127
+ if (c === 0xad)
128
+ return BN;
129
+ if (c === 0xb2 || c === 0xb3 || c === 0xb9)
130
+ return EN;
131
+ if ((c >= 0xa2 && c <= 0xa5) || c === 0xb0 || c === 0xb1)
132
+ return ET;
133
+ if (c === 0xaa || c === 0xb5 || c === 0xba || c >= 0xc0) {
134
+ return c === 0xd7 || c === 0xf7 ? ON : L;
135
+ }
136
+ return ON;
137
+ }
138
+ // Hebrew
139
+ if (c >= 0x0590 && c <= 0x05ff)
140
+ return R;
141
+ // Arabic
142
+ if (c >= 0x0600 && c <= 0x06ff) {
143
+ if (c <= 0x0605 || (c >= 0x0660 && c <= 0x0669) || c === 0x066b || c === 0x066c || c === 0x06dd)
144
+ return AN;
145
+ if (c === 0x060c)
146
+ return CS;
147
+ if (c === 0x066a)
148
+ return ET;
149
+ if (c >= 0x06f0 && c <= 0x06f9)
150
+ return EN;
151
+ if (c === 0x0609 || c === 0x060a)
152
+ return ET;
153
+ if (c === 0x060e || c === 0x060f || c === 0x06de || c === 0x06e9)
154
+ return ON;
155
+ return AL;
156
+ }
157
+ if (c >= 0x0700 && c <= 0x074f)
158
+ return AL; // Syriac
159
+ if (c >= 0x0750 && c <= 0x077f)
160
+ return AL; // Arabic supplement
161
+ if (c >= 0x0780 && c <= 0x07bf)
162
+ return AL; // Thaana
163
+ if (c >= 0x07c0 && c <= 0x085f)
164
+ return R; // NKo, Samaritan, Mandaic
165
+ if (c >= 0x0860 && c <= 0x08ff)
166
+ return AL; // Syriac/Arabic extended
167
+ if (c >= 0xfb1d && c <= 0xfb4f)
168
+ return c === 0xfb29 ? ES : R; // Hebrew presentation forms
169
+ if (c >= 0xfb50 && c <= 0xfdff)
170
+ return c === 0xfd3e || c === 0xfd3f ? ON : AL;
171
+ if (c >= 0xfe70 && c <= 0xfefe)
172
+ return AL;
173
+ if (c === 0xfeff)
174
+ return BN;
175
+ // General punctuation and friends
176
+ if (c >= 0x2000 && c <= 0x200a)
177
+ return WS;
178
+ if (c >= 0x200b && c <= 0x200d)
179
+ return BN;
180
+ if (c === 0x200e)
181
+ return L; // LRM
182
+ if (c === 0x200f)
183
+ return R; // RLM
184
+ if (c === 0x2028)
185
+ return WS;
186
+ if (c === 0x2029)
187
+ return B;
188
+ if ((c >= 0x202a && c <= 0x202e) || (c >= 0x2066 && c <= 0x2069))
189
+ return BN; // embeddings/isolates: unsupported, ignored
190
+ if (c === 0x202f)
191
+ return CS;
192
+ if (c >= 0x2030 && c <= 0x2034)
193
+ return ET;
194
+ if (c === 0x2044)
195
+ return CS;
196
+ if (c === 0x205f)
197
+ return WS;
198
+ if (c >= 0x2060 && c <= 0x2064)
199
+ return BN;
200
+ if (c >= 0x2010 && c <= 0x205e)
201
+ return ON;
202
+ if (c === 0x2070 || (c >= 0x2074 && c <= 0x2079) || (c >= 0x2080 && c <= 0x2089))
203
+ return EN;
204
+ if (c === 0x207a || c === 0x207b || c === 0x208a || c === 0x208b)
205
+ return ES;
206
+ if (c >= 0x207c && c <= 0x207e)
207
+ return ON;
208
+ if (c >= 0x208c && c <= 0x208e)
209
+ return ON;
210
+ if (c >= 0x20a0 && c <= 0x20cf)
211
+ return ET; // currency
212
+ if (c === 0x2212)
213
+ return ES;
214
+ if (c === 0x2213)
215
+ return ET;
216
+ if (c === 0x212e)
217
+ return ET;
218
+ if (c >= 0x2100 && c <= 0x214f)
219
+ return L; // letterlike: mostly L, a few ON — L is the safe default
220
+ if (c >= 0x2150 && c <= 0x218f)
221
+ return ON;
222
+ if (c >= 0x2190 && c <= 0x2bff)
223
+ return ON; // arrows, maths, box drawing, shapes, dingbats
224
+ if (c === 0x1680 || c === 0x3000)
225
+ return WS;
226
+ if (c >= 0x3001 && c <= 0x3004)
227
+ return ON;
228
+ if (c >= 0x3008 && c <= 0x3020)
229
+ return ON;
230
+ if (c >= 0xfe50 && c <= 0xfe6f) {
231
+ if (c === 0xfe50 || c === 0xfe52 || c === 0xfe55)
232
+ return CS;
233
+ if (c === 0xfe62 || c === 0xfe63)
234
+ return ES;
235
+ if (c === 0xfe5f || c === 0xfe69 || c === 0xfe6a)
236
+ return ET;
237
+ return ON;
238
+ }
239
+ if (c >= 0xff01 && c <= 0xff20) {
240
+ if (c >= 0xff10 && c <= 0xff19)
241
+ return EN;
242
+ if (c === 0xff0b || c === 0xff0d)
243
+ return ES;
244
+ if (c >= 0xff03 && c <= 0xff05)
245
+ return ET;
246
+ if (c === 0xff0c || c === 0xff0e || c === 0xff0f || c === 0xff1a)
247
+ return CS;
248
+ return ON;
249
+ }
250
+ if (c >= 0x10800 && c <= 0x10fff)
251
+ return R; // historic RTL scripts
252
+ if (c >= 0x1e800 && c <= 0x1efff)
253
+ return R;
254
+ return L;
255
+ }
256
+ /** Bidi_Mirroring_Glyph for the pairs a document is likely to hold. */
257
+ const MIRROR = {
258
+ '(': ')', ')': '(', '[': ']', ']': '[', '{': '}', '}': '{', '<': '>', '>': '<',
259
+ '\u00ab': '\u00bb', '\u00bb': '\u00ab', // « »
260
+ '\u2039': '\u203a', '\u203a': '\u2039', // ‹ ›
261
+ '\u2264': '\u2265', '\u2265': '\u2264', // ≤ ≥
262
+ '\u226a': '\u226b', '\u226b': '\u226a', // ≪ ≫
263
+ '\u2045': '\u2046', '\u2046': '\u2045', // ⁅ ⁆
264
+ '\u207d': '\u207e', '\u207e': '\u207d', // superscript ( )
265
+ '\u208d': '\u208e', '\u208e': '\u208d', // subscript ( )
266
+ '\u2329': '\u232a', '\u232a': '\u2329', // angle brackets
267
+ '\u3008': '\u3009', '\u3009': '\u3008',
268
+ };
269
+ /** Bidi_Paired_Bracket, opening → closing, for rule N0. */
270
+ const OPENING = {
271
+ '(': ')', '[': ']', '{': '}',
272
+ '\u2045': '\u2046', '\u207d': '\u207e', '\u208d': '\u208e', '\u2329': '\u232a', '\u3008': '\u3009',
273
+ };
274
+ const CLOSING = new Set(Object.values(OPENING));
275
+ /** The glyph to draw for `ch` at an odd (right-to-left) level. */
276
+ export function mirrorOf(ch) {
277
+ return MIRROR[ch] ?? ch;
278
+ }
279
+ /**
280
+ * The paragraph's direction (P2/P3): 1 if its first strong letter is
281
+ * right-to-left, else 0. A paragraph with no letters at all is left-to-right.
282
+ */
283
+ export function paragraphLevel(text) {
284
+ for (let i = 0; i < text.length; i += 1) {
285
+ const cp = text.codePointAt(i);
286
+ if (cp > 0xffff)
287
+ i += 1;
288
+ const t = classOf(cp);
289
+ if (t === L)
290
+ return 0;
291
+ if (t === R || t === AL)
292
+ return 1;
293
+ }
294
+ return 0;
295
+ }
296
+ /**
297
+ * Resolve the embedding level of every character in one paragraph (rules
298
+ * P2–I2). Returns `null` for a paragraph with nothing right-to-left in it
299
+ * (unless `base` forces it right-to-left), so a caller can keep its all-Latin
300
+ * path exactly as it was.
301
+ *
302
+ * `base` forces the paragraph direction; left out, it comes from the text.
303
+ */
304
+ export function resolveLevels(text, base) {
305
+ // A paragraph FORCED right-to-left needs resolving even with no Hebrew in
306
+ // it: "1." in a Hebrew list reads ".1".
307
+ if (base !== 1 && !hasRtl(text))
308
+ return null;
309
+ const e = base ?? paragraphLevel(text);
310
+ const n = text.length;
311
+ const orig = new Uint8Array(n);
312
+ for (let i = 0; i < n; i += 1) {
313
+ const cp = text.codePointAt(i);
314
+ orig[i] = classOf(cp);
315
+ if (cp > 0xffff) {
316
+ // The low surrogate travels with its high one.
317
+ orig[i + 1] = orig[i] === NSM ? NSM : orig[i];
318
+ i += 1;
319
+ }
320
+ }
321
+ // A surrogate pair's second half is not a character of its own: treated as a
322
+ // mark, it simply takes whatever its first half resolves to.
323
+ const types = new Uint8Array(orig);
324
+ for (let i = 0; i < n; i += 1) {
325
+ const cp = text.charCodeAt(i);
326
+ if (cp >= 0xdc00 && cp <= 0xdfff && i > 0)
327
+ types[i] = NSM;
328
+ }
329
+ const sos = e === 1 ? R : L;
330
+ const eos = sos;
331
+ // X9 (approximately): boundary-neutral characters behave like marks, taking
332
+ // the type of what they follow. Removing them outright would shift every
333
+ // index after them; this keeps the arrays aligned with the text.
334
+ for (let i = 0; i < n; i += 1)
335
+ if (types[i] === BN)
336
+ types[i] = NSM;
337
+ // W1: a mark takes the type of the character before it.
338
+ for (let i = 0; i < n; i += 1) {
339
+ if (types[i] === NSM)
340
+ types[i] = i === 0 ? sos : types[i - 1];
341
+ }
342
+ // W2: European digits after Arabic letters are Arabic digits.
343
+ let lastStrong = sos;
344
+ for (let i = 0; i < n; i += 1) {
345
+ const t = types[i];
346
+ if (t === L || t === R || t === AL)
347
+ lastStrong = t;
348
+ else if (t === EN && lastStrong === AL)
349
+ types[i] = AN;
350
+ }
351
+ // W3: Arabic letters are right-to-left letters from here on.
352
+ for (let i = 0; i < n; i += 1)
353
+ if (types[i] === AL)
354
+ types[i] = R;
355
+ // W4: one separator between two numbers of the same kind joins them.
356
+ for (let i = 1; i < n - 1; i += 1) {
357
+ const t = types[i];
358
+ const prev = types[i - 1];
359
+ const next = types[i + 1];
360
+ if (t === ES && prev === EN && next === EN)
361
+ types[i] = EN;
362
+ else if (t === CS && prev === EN && next === EN)
363
+ types[i] = EN;
364
+ else if (t === CS && prev === AN && next === AN)
365
+ types[i] = AN;
366
+ }
367
+ // W5: currency and percent signs touching a European number join it.
368
+ for (let i = 0; i < n; i += 1) {
369
+ if (types[i] !== ET)
370
+ continue;
371
+ let j = i;
372
+ while (j < n && types[j] === ET)
373
+ j += 1;
374
+ const touches = (i > 0 && types[i - 1] === EN) || (j < n && types[j] === EN);
375
+ if (touches)
376
+ for (let k = i; k < j; k += 1)
377
+ types[k] = EN;
378
+ i = j - 1;
379
+ }
380
+ // W6: any separator left over is a neutral.
381
+ for (let i = 0; i < n; i += 1) {
382
+ const t = types[i];
383
+ if (t === ES || t === ET || t === CS)
384
+ types[i] = ON;
385
+ }
386
+ // W7: European numbers after a left-to-right letter are left-to-right.
387
+ lastStrong = sos;
388
+ for (let i = 0; i < n; i += 1) {
389
+ const t = types[i];
390
+ if (t === L || t === R)
391
+ lastStrong = t;
392
+ else if (t === EN && lastStrong === L)
393
+ types[i] = L;
394
+ }
395
+ // N0: paired brackets resolve together, from what they enclose.
396
+ resolveBrackets(text, orig, types, e, sos);
397
+ // N1/N2: a run of neutrals between two things of the same direction takes
398
+ // that direction; otherwise the paragraph's. Numbers count as right-to-left.
399
+ const isNeutral = (t) => t === ON || t === WS || t === S || t === B;
400
+ const strongDir = (t) => (t === L ? L : R); // only called on L, R, EN, AN
401
+ for (let i = 0; i < n; i += 1) {
402
+ if (!isNeutral(types[i]))
403
+ continue;
404
+ let j = i;
405
+ while (j < n && isNeutral(types[j]))
406
+ j += 1;
407
+ const before = i === 0 ? sos : strongDir(types[i - 1]);
408
+ const after = j === n ? eos : strongDir(types[j]);
409
+ const dir = before === after ? before : e === 1 ? R : L;
410
+ for (let k = i; k < j; k += 1)
411
+ types[k] = dir;
412
+ i = j - 1;
413
+ }
414
+ // I1/I2: implicit levels.
415
+ const levels = new Uint8Array(n);
416
+ for (let i = 0; i < n; i += 1) {
417
+ const t = types[i];
418
+ if (e === 0)
419
+ levels[i] = t === R ? 1 : t === AN || t === EN ? 2 : 0;
420
+ else
421
+ levels[i] = t === L || t === EN || t === AN ? 2 : 1;
422
+ }
423
+ return { base: e, levels };
424
+ }
425
+ /**
426
+ * Rule N0 (UAX #9 §3.3.5), with BD16's pairing: a bracket pair takes the
427
+ * paragraph's direction if it encloses anything of that direction, else the
428
+ * opposite one if it encloses that AND the text before it agrees.
429
+ */
430
+ function resolveBrackets(text, orig, types, e, sos) {
431
+ const pairs = [];
432
+ const stack = [];
433
+ for (let i = 0; i < text.length; i += 1) {
434
+ if (types[i] !== ON)
435
+ continue;
436
+ const ch = text[i];
437
+ const close = OPENING[ch];
438
+ if (close) {
439
+ if (stack.length === 63)
440
+ break; // BD16: stop at the stack limit
441
+ stack.push({ close, at: i });
442
+ }
443
+ else if (CLOSING.has(ch)) {
444
+ for (let s = stack.length - 1; s >= 0; s -= 1) {
445
+ if (stack[s].close === ch) {
446
+ pairs.push([stack[s].at, i]);
447
+ stack.length = s;
448
+ break;
449
+ }
450
+ }
451
+ }
452
+ }
453
+ pairs.sort((a, b) => a[0] - b[0]);
454
+ const embed = e === 1 ? R : L;
455
+ const opposite = e === 1 ? L : R;
456
+ const strongOf = (t) => t === L ? L : t === R || t === AL || t === EN || t === AN ? R : null;
457
+ for (const [open, close] of pairs) {
458
+ let foundEmbed = false;
459
+ let foundOpposite = false;
460
+ for (let k = open + 1; k < close; k += 1) {
461
+ const s = strongOf(types[k]);
462
+ if (s === embed) {
463
+ foundEmbed = true;
464
+ break;
465
+ }
466
+ if (s === opposite)
467
+ foundOpposite = true;
468
+ }
469
+ let dir = null;
470
+ if (foundEmbed)
471
+ dir = embed;
472
+ else if (foundOpposite) {
473
+ let before = sos;
474
+ for (let k = open - 1; k >= 0; k -= 1) {
475
+ const s = strongOf(types[k]);
476
+ if (s !== null) {
477
+ before = s;
478
+ break;
479
+ }
480
+ }
481
+ dir = before === opposite ? opposite : embed;
482
+ }
483
+ if (dir === null)
484
+ continue;
485
+ for (const at of [open, close]) {
486
+ types[at] = dir;
487
+ // Marks on a bracket follow it (they were made ON by W1).
488
+ for (let k = at + 1; k < text.length && orig[k] === NSM; k += 1)
489
+ types[k] = dir;
490
+ }
491
+ }
492
+ }
493
+ /**
494
+ * Split `text` into clusters — a character plus any combining marks after it —
495
+ * each carrying the level of its first code unit. A mark must be drawn AFTER
496
+ * its base whichever way the line runs (rule L3), so they reverse as one.
497
+ */
498
+ export function clustersOf(text, levels) {
499
+ const out = [];
500
+ let i = 0;
501
+ while (i < text.length) {
502
+ const start = i;
503
+ const cp = text.codePointAt(i);
504
+ i += cp > 0xffff ? 2 : 1;
505
+ while (i < text.length) {
506
+ const next = text.codePointAt(i);
507
+ if (!isMark(next) && next !== 0x200d)
508
+ break;
509
+ i += next > 0xffff ? 2 : 1;
510
+ }
511
+ out.push({ text: text.slice(start, i), level: levels[start] ?? 0 });
512
+ }
513
+ return out;
514
+ }
515
+ const WHITESPACE = /^\s+$/; // \s includes U+2028, which stands in for a hard break
516
+ /**
517
+ * Put one rendered line's clusters into visual (left-to-right) order: rule L1
518
+ * (trailing whitespace and tabs to the paragraph level) then L2 (reverse every
519
+ * run at or above each odd level, highest first). Returns a new array; each
520
+ * item's `level` is the one it was DRAWN at, so the caller can mirror (L4).
521
+ */
522
+ export function reorderLine(line, base) {
523
+ const items = line.map((c) => ({ ...c }));
524
+ // L1: tabs, whitespace before a tab, and whitespace at the end of the line.
525
+ let trailing = true;
526
+ for (let i = items.length - 1; i >= 0; i -= 1) {
527
+ const t = items[i].text;
528
+ if (t === '\t') {
529
+ items[i].level = base;
530
+ trailing = true;
531
+ continue;
532
+ }
533
+ if (WHITESPACE.test(t)) {
534
+ if (trailing)
535
+ items[i].level = base;
536
+ continue;
537
+ }
538
+ trailing = false;
539
+ }
540
+ // L2
541
+ let highest = 0;
542
+ let lowestOdd = 255;
543
+ for (const c of items) {
544
+ if (c.level > highest)
545
+ highest = c.level;
546
+ if (c.level % 2 === 1 && c.level < lowestOdd)
547
+ lowestOdd = c.level;
548
+ }
549
+ for (let level = highest; level >= lowestOdd && level > 0; level -= 1) {
550
+ let i = 0;
551
+ while (i < items.length) {
552
+ if (items[i].level < level) {
553
+ i += 1;
554
+ continue;
555
+ }
556
+ let j = i;
557
+ while (j < items.length && items[j].level >= level)
558
+ j += 1;
559
+ reverse(items, i, j - 1);
560
+ i = j;
561
+ }
562
+ }
563
+ return items;
564
+ }
565
+ function reverse(a, from, to) {
566
+ while (from < to) {
567
+ const t = a[from];
568
+ a[from] = a[to];
569
+ a[to] = t;
570
+ from += 1;
571
+ to -= 1;
572
+ }
573
+ }
574
+ /**
575
+ * One line of text as it will be SEEN, left to right — the whole algorithm in
576
+ * one call, for a caller that draws a single line (a label, a list marker) and
577
+ * for the tests. Text with nothing right-to-left in it is returned unchanged.
578
+ */
579
+ export function visualOrder(text, base) {
580
+ const para = resolveLevels(text, base);
581
+ if (!para)
582
+ return text;
583
+ return reorderLine(clustersOf(text, para.levels), para.base)
584
+ .map((c) => (c.level % 2 === 1 ? mirrorOf(c.text) : c.text))
585
+ .join('');
586
+ }
587
+ //# sourceMappingURL=bidi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bidi.js","sourceRoot":"","sources":["../src/bidi.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -17,5 +17,7 @@ export type { EmbeddableFont } from './truetype.js';
17
17
  export type { FontId, PdfImage, Rgb } from './pdfcore.js';
18
18
  export { imageToJpeg, imagesToPdf } from './image.js';
19
19
  export type { PdfPageSource } from './image.js';
20
+ export { visualOrder, resolveLevels, paragraphLevel } from './bidi.js';
21
+ export type { BidiParagraph } from './bidi.js';
20
22
  export { emuToPoints, odfLengthToPoints, vmlStyleSize } from './length.js';
21
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA2CA,YAAY,EACV,KAAK,EACL,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,GAAG,GACJ,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAG9C,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,cAAc,CAAA;AACrB,YAAY,EACV,SAAS,EACT,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,WAAW,GACZ,MAAM,cAAc,CAAA;AAOrB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAGvD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACrD,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAK3C,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG7F,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC7D,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACrD,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAM/C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA2CA,YAAY,EACV,KAAK,EACL,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,GAAG,GACJ,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAG9C,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,cAAc,CAAA;AACrB,YAAY,EACV,SAAS,EACT,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,WAAW,GACZ,MAAM,cAAc,CAAA;AAOrB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAGvD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACrD,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAK3C,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG7F,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC7D,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACrD,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAM/C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AACtE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAM9C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
package/dist/index.js CHANGED
@@ -64,6 +64,11 @@ export { PdfDocument, PdfPage, rgb, toWinAnsi, unspellable, widthOfText } from '
64
64
  // ---- Embedding a font, for the alphabets base-14 cannot spell --------------
65
65
  export { readTrueType, FontFormatError } from './truetype.js';
66
66
  export { imageToJpeg, imagesToPdf } from './image.js';
67
+ // ---- Right-to-left text ----------------------------------------------------
68
+ // The bidi reordering `docToPdf` applies to every line, for a caller that
69
+ // draws its own text straight onto a `PdfPage` (which draws left to right, as
70
+ // given) — and for the self-tests.
71
+ export { visualOrder, resolveLevels, paragraphLevel } from './bidi.js';
67
72
  // ---- Source lengths → points ----------------------------------------------
68
73
  // Exported so the self-tests can reach them: they are the one part of the
69
74
  // image-sizing path with no DOM in it, and they are where an off-by-a-third
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4CAA4C;AAC5C,EAAE;AACF,0BAA0B;AAC1B,0BAA0B;AAC1B,8EAA8E;AAC9E,4EAA4E;AAC5E,uEAAuE;AACvE,wEAAwE;AACxE,sEAAsE;AACtE,+EAA+E;AAC/E,4EAA4E;AAC5E,YAAY;AACZ,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,gFAAgF;AAChF,sEAAsE;AACtE,+EAA+E;AAC/E,2EAA2E;AAC3E,gFAAgF;AAChF,sEAAsE;AACtE,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,EAAE;AACF,uDAAuD;AACvD,uDAAuD;AACvD,6EAA6E;AAC7E,gFAAgF;AAChF,+DAA+D;AAC/D,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,6EAA6E;AAC7E,4DAA4D;AAC5D,EAAE;AACF,gFAAgF;AAChF,wCAAwC;AACxC,8EAA8E;AAW9E,8EAA8E;AAC9E,kEAAkE;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,+EAA+E;AAC/E,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,cAAc,CAAA;AAYrB,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAC9E,gFAAgF;AAChF,2DAA2D;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEvD,8EAA8E;AAC9E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGrD,8EAA8E;AAC9E,8EAA8E;AAC9E,0EAA0E;AAC1E,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE7F,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAG7D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAGrD,8EAA8E;AAC9E,0EAA0E;AAC1E,4EAA4E;AAC5E,sDAAsD;AACtD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4CAA4C;AAC5C,EAAE;AACF,0BAA0B;AAC1B,0BAA0B;AAC1B,8EAA8E;AAC9E,4EAA4E;AAC5E,uEAAuE;AACvE,wEAAwE;AACxE,sEAAsE;AACtE,+EAA+E;AAC/E,4EAA4E;AAC5E,YAAY;AACZ,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,gFAAgF;AAChF,sEAAsE;AACtE,+EAA+E;AAC/E,2EAA2E;AAC3E,gFAAgF;AAChF,sEAAsE;AACtE,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,EAAE;AACF,uDAAuD;AACvD,uDAAuD;AACvD,6EAA6E;AAC7E,gFAAgF;AAChF,+DAA+D;AAC/D,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,6EAA6E;AAC7E,4DAA4D;AAC5D,EAAE;AACF,gFAAgF;AAChF,wCAAwC;AACxC,8EAA8E;AAW9E,8EAA8E;AAC9E,kEAAkE;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,+EAA+E;AAC/E,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,cAAc,CAAA;AAYrB,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAC9E,gFAAgF;AAChF,2DAA2D;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEvD,8EAA8E;AAC9E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGrD,8EAA8E;AAC9E,8EAA8E;AAC9E,0EAA0E;AAC1E,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE7F,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAG7D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAGrD,+EAA+E;AAC/E,0EAA0E;AAC1E,8EAA8E;AAC9E,mCAAmC;AACnC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAGtE,8EAA8E;AAC9E,0EAA0E;AAC1E,4EAA4E;AAC5E,sDAAsD;AACtD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../src/write/pdf.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAS,OAAO,EAAO,MAAM,aAAa,CAAA;AAOtD,OAAO,KAAK,EAAyB,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAqD1E,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,IAAI,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAID;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAA;AAyBjE,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,WAAW,EACrB,gBAAgB,CAAC,EAAE,kBAAkB,GACpC,OAAO,CAAC,SAAS,CAAC,CA6CpB"}
1
+ {"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../src/write/pdf.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAS,OAAO,EAAO,MAAM,aAAa,CAAA;AAOtD,OAAO,KAAK,EAAyB,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAqD1E,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,IAAI,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAID;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAA;AAyBjE,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,WAAW,EACrB,gBAAgB,CAAC,EAAE,kBAAkB,GACpC,OAAO,CAAC,SAAS,CAAC,CA6CpB"}
package/dist/write/pdf.js CHANGED
@@ -30,6 +30,7 @@ import { PdfDocument, rgb, unspellable, widthOfText } from '../pdfcore.js';
30
30
  import { readTrueType } from '../truetype.js';
31
31
  import { MONO, SANS, SERIF } from '../metrics.js';
32
32
  import { imageToJpeg } from '../image.js';
33
+ import { clustersOf, mirrorOf, paragraphLevel, reorderLine, resolveLevels, visualOrder } from '../bidi.js';
33
34
  import { runsToText } from '../model.js';
34
35
  // ── Palette ──────────────────────────────────────────────────────────────────
35
36
  // The suite's own, matching Universal PDF's markdown export so two documents
@@ -287,8 +288,83 @@ class Renderer {
287
288
  });
288
289
  }
289
290
  }
291
+ // Bidi levels are resolved over the WHOLE paragraph, here, before wrapping
292
+ // — see the header of `bidi.ts` for why that order is the only right one.
293
+ // A hard break stands in as U+2028, the line separator, which the
294
+ // algorithm treats as whitespace: same paragraph, same direction.
295
+ const para = resolveLevels(out.map((t) => (t.isBreak ? '\u2028' : t.text)).join(''));
296
+ if (para) {
297
+ let at = 0;
298
+ for (const token of out) {
299
+ if (token.isBreak) {
300
+ at += 1;
301
+ continue;
302
+ }
303
+ token.levels = para.levels.slice(at, at + token.text.length);
304
+ token.base = para.base;
305
+ at += token.text.length;
306
+ }
307
+ }
308
+ return out;
309
+ }
310
+ /**
311
+ * One wrapped line in the order it is SEEN (bidi rules L1–L4).
312
+ *
313
+ * A line with no right-to-left paragraph behind it comes back as the same
314
+ * array, untouched. Otherwise every token is cut into clusters, the line is
315
+ * reordered, and consecutive clusters from the same token are glued back
316
+ * into one drawable piece — so a Hebrew word stays one `Tj`, reversed, and a
317
+ * word like "שלום," can split into its letters and a comma drawn where the
318
+ * comma belongs.
319
+ */
320
+ visualLine(tokens) {
321
+ if (!tokens.some((t) => t.levels))
322
+ return tokens;
323
+ const base = tokens.find((t) => t.base !== undefined)?.base ?? 0;
324
+ const cells = [];
325
+ tokens.forEach((token, from) => {
326
+ const levels = token.levels ?? new Uint8Array(token.text.length).fill(base);
327
+ for (const c of clustersOf(token.text, levels))
328
+ cells.push({ ...c, from });
329
+ });
330
+ const out = [];
331
+ let piece = '';
332
+ let owner = -1;
333
+ const flush = () => {
334
+ if (owner < 0)
335
+ return;
336
+ const token = tokens[owner];
337
+ out.push({
338
+ ...token,
339
+ text: piece,
340
+ width: piece === token.text ? token.width : widthOfText(token.font, piece, token.size, this.embedded),
341
+ levels: undefined,
342
+ });
343
+ };
344
+ for (const cell of reorderLine(cells, base)) {
345
+ const glyph = cell.level % 2 === 1 ? mirrorOf(cell.text) : cell.text;
346
+ if (cell.from !== owner) {
347
+ flush();
348
+ owner = cell.from;
349
+ piece = '';
350
+ }
351
+ piece += glyph;
352
+ }
353
+ flush();
290
354
  return out;
291
355
  }
356
+ /**
357
+ * Where a line starts: at `x`, or — in a right-to-left paragraph — pushed
358
+ * right so it ENDS at the column's right edge.
359
+ */
360
+ lineStart(line, x, maxWidth) {
361
+ if (!isRtlLine(line))
362
+ return x;
363
+ let width = 0;
364
+ for (const token of line)
365
+ width += token.width;
366
+ return x + Math.max(0, maxWidth - width);
367
+ }
292
368
  /**
293
369
  * Break a token too wide for the column.
294
370
  *
@@ -300,13 +376,22 @@ class Renderer {
300
376
  return [token];
301
377
  const out = [];
302
378
  let rest = token.text;
379
+ let at = 0;
303
380
  while (rest.length) {
304
381
  let n = 1;
305
382
  while (n < rest.length && widthOfText(token.font, rest.slice(0, n + 1), token.size, this.embedded) <= maxWidth)
306
383
  n += 1;
307
384
  const head = rest.slice(0, n);
308
- out.push({ ...token, text: head, width: widthOfText(token.font, head, token.size, this.embedded) });
385
+ out.push({
386
+ ...token,
387
+ text: head,
388
+ width: widthOfText(token.font, head, token.size, this.embedded),
389
+ // Only set when the token had levels, so a Latin token's copy has no
390
+ // `levels: undefined` key it did not have before.
391
+ ...(token.levels ? { levels: token.levels.slice(at, at + n) } : {}),
392
+ });
309
393
  rest = rest.slice(n);
394
+ at += n;
310
395
  }
311
396
  return out;
312
397
  }
@@ -345,7 +430,8 @@ class Renderer {
345
430
  lines.push(line);
346
431
  return lines;
347
432
  }
348
- drawTokens(tokens, baseline, x, color) {
433
+ drawTokens(logical, baseline, x, color) {
434
+ const tokens = this.visualLine(logical);
349
435
  // Plates first, in their own pass: drawn inline they would paint over the
350
436
  // preceding token's glyphs, because a plate is wider than its text.
351
437
  let cursor = x;
@@ -397,7 +483,7 @@ class Renderer {
397
483
  for (const line of lines) {
398
484
  this.ensure(lineHeight);
399
485
  this.y -= lineHeight;
400
- this.drawTokens(line, this.y + (lineHeight - size) * 0.25, x, color);
486
+ this.drawTokens(line, this.y + (lineHeight - size) * 0.25, this.lineStart(line, x, maxWidth), color);
401
487
  }
402
488
  }
403
489
  // ── Blocks ─────────────────────────────────────────────────────────────────
@@ -477,9 +563,13 @@ class Renderer {
477
563
  if (spec.rule) {
478
564
  this.y -= 4;
479
565
  this.ensure(3);
480
- this.page.drawRect({ x: this.margin.left, y: this.y, width: 36, height: 2.5, color: ORANGE });
566
+ // The orange accent sits under the heading's FIRST word, which in a
567
+ // right-to-left heading is at the right-hand end.
568
+ const rtl = paragraphLevel(runsToText(runs)) === 1;
569
+ const accentX = rtl ? this.margin.left + this.contentWidth - 36 : this.margin.left;
570
+ this.page.drawRect({ x: accentX, y: this.y, width: 36, height: 2.5, color: ORANGE });
481
571
  this.page.drawRect({
482
- x: this.margin.left + 36,
572
+ x: rtl ? this.margin.left : this.margin.left + 36,
483
573
  y: this.y + 0.75,
484
574
  width: this.contentWidth - 36,
485
575
  height: 1,
@@ -504,6 +594,9 @@ class Renderer {
504
594
  const x = this.margin.left + indent;
505
595
  const maxWidth = this.contentWidth - indent;
506
596
  const lines = this.wrap(this.tokenize(item.runs, this.base), maxWidth);
597
+ // A right-to-left item is mirrored whole: text against the right margin,
598
+ // its marker in the gutter to the RIGHT of it.
599
+ const rtl = lines.some(isRtlLine);
507
600
  lines.forEach((line, lineIndex) => {
508
601
  this.ensure(lineHeight);
509
602
  this.y -= lineHeight;
@@ -515,18 +608,26 @@ class Renderer {
515
608
  // and the renderer emitting characters it cannot draw put a "some
516
609
  // characters came out as ?" warning on every nested list in the app.
517
610
  // These three are Word's own defaults and all three are in WinAnsi.
518
- const marker = ordered
611
+ const logicalMarker = ordered
519
612
  ? `${counters[level]}.`
520
613
  : level === 0 ? '•' : level === 1 ? 'o' : '-';
614
+ // "1." in a right-to-left list reads ".1" on the page — the full stop
615
+ // follows the number in reading order, which is leftwards.
616
+ const marker = rtl ? visualOrder(logicalMarker, 1) : logicalMarker;
617
+ const markerFont = ordered ? this.body.bold : this.body.regular;
618
+ const markerX = rtl
619
+ ? this.margin.left + this.contentWidth - indent + BULLET_INDENT - (ordered ? 0 : 3)
620
+ - widthOfText(markerFont, marker, this.base, this.embedded)
621
+ : this.margin.left + indent - BULLET_INDENT + (ordered ? 0 : 3);
521
622
  this.page.drawText(marker, {
522
- x: this.margin.left + indent - BULLET_INDENT + (ordered ? 0 : 3),
623
+ x: markerX,
523
624
  y: baseline,
524
625
  size: this.base,
525
- font: ordered ? this.body.bold : this.body.regular,
626
+ font: markerFont,
526
627
  color: ordered ? SLATE_600 : ORANGE,
527
628
  });
528
629
  }
529
- this.drawTokens(line, baseline, x, SLATE_700);
630
+ this.drawTokens(line, baseline, rtl ? this.lineStart(line, this.margin.left, maxWidth) : x, SLATE_700);
530
631
  });
531
632
  if (index < items.length - 1)
532
633
  this.y -= LIST_GAP;
@@ -542,11 +643,14 @@ class Renderer {
542
643
  */
543
644
  renderQuote(runs) {
544
645
  this.y -= PARA_GAP;
545
- const x = this.margin.left + QUOTE_INDENT;
546
646
  const maxWidth = this.contentWidth - QUOTE_INDENT;
547
647
  const lines = this.wrap(this.tokenize(runs, this.base), maxWidth);
548
648
  if (!lines.length)
549
649
  return;
650
+ // A right-to-left quote is mirrored: bar on the right, text against it.
651
+ const rtl = lines.some(isRtlLine);
652
+ const x = rtl ? this.margin.left : this.margin.left + QUOTE_INDENT;
653
+ const barX = rtl ? this.margin.left + this.contentWidth - 3 : this.margin.left;
550
654
  const lineHeight = this.base * BASE_LINE;
551
655
  let segmentPage = this.page;
552
656
  let segmentTop = this.y;
@@ -554,7 +658,7 @@ class Renderer {
554
658
  if (segmentTop - bottom <= 0)
555
659
  return;
556
660
  segmentPage.drawRect({
557
- x: this.margin.left,
661
+ x: barX,
558
662
  y: bottom - 2,
559
663
  width: 3,
560
664
  height: segmentTop - bottom + 4,
@@ -569,7 +673,7 @@ class Renderer {
569
673
  segmentTop = this.y;
570
674
  }
571
675
  this.y -= lineHeight;
572
- this.drawTokens(line, this.y + (lineHeight - this.base) * 0.25, x, SLATE_600);
676
+ this.drawTokens(line, this.y + (lineHeight - this.base) * 0.25, this.lineStart(line, x, maxWidth), SLATE_600);
573
677
  }
574
678
  drawBar(this.y);
575
679
  }
@@ -802,7 +906,8 @@ class Renderer {
802
906
  let baseline = this.y - TABLE_PAD_Y;
803
907
  for (const line of cellLines[c]) {
804
908
  baseline -= lineHeight;
805
- this.drawTokens(line, baseline + lineHeight * 0.2, x + TABLE_PAD_X, isHeader ? SLATE_900 : SLATE_700);
909
+ const start = this.lineStart(line, x + TABLE_PAD_X, widths[c] - TABLE_PAD_X * 2);
910
+ this.drawTokens(line, baseline + lineHeight * 0.2, start, isHeader ? SLATE_900 : SLATE_700);
806
911
  }
807
912
  x += widths[c];
808
913
  }
@@ -840,6 +945,10 @@ class Renderer {
840
945
  }
841
946
  }
842
947
  }
948
+ /** True if this line belongs to a right-to-left paragraph. */
949
+ function isRtlLine(line) {
950
+ return line.some((t) => t.base === 1);
951
+ }
843
952
  /**
844
953
  * How big to draw a picture, before the fit-to-column clamp.
845
954
  *
@@ -1 +1 @@
1
- {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/write/pdf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/write/pdf.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unisim/doc",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "The suite's document stack: read Word, OpenDocument, RTF, HTML, Markdown, CSV, JSON and text into one model, and write it back out as PDF, text, HTML, Markdown, CSV or JSON. No runtime dependencies.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",