reamkit 1.33.2 → 1.34.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 (71) hide show
  1. package/README.md +13 -10
  2. package/dist/esm/core/converter/facade.js +1 -0
  3. package/dist/esm/core/converter/ream.d.ts +6 -6
  4. package/dist/esm/core/converter/ream.js +11 -5
  5. package/dist/esm/core/document-model/index.d.ts +1 -1
  6. package/dist/esm/core/document-model/types.d.ts +15 -0
  7. package/dist/esm/core/drawingml/text-warp.d.ts +34 -0
  8. package/dist/esm/core/drawingml/text-warp.js +49 -1
  9. package/dist/esm/core/font/index.d.ts +1 -1
  10. package/dist/esm/core/font/index.js +8 -0
  11. package/dist/esm/core/font/indic-shaper.d.ts +47 -0
  12. package/dist/esm/core/font/indic-shaper.js +1146 -0
  13. package/dist/esm/core/font/indic-table.d.ts +12 -0
  14. package/dist/esm/core/font/indic-table.js +463 -0
  15. package/dist/esm/core/font/measure.d.ts +45 -4
  16. package/dist/esm/core/font/measure.js +253 -14
  17. package/dist/esm/core/font/opentype-lookups.d.ts +214 -0
  18. package/dist/esm/core/font/opentype-lookups.js +1112 -0
  19. package/dist/esm/core/fonts/families.d.ts +4 -0
  20. package/dist/esm/core/fonts/families.js +43 -12
  21. package/dist/esm/core/fonts/provider.js +1 -0
  22. package/dist/esm/core/fonts/remote-fonts.d.ts +4 -2
  23. package/dist/esm/core/fonts/remote-fonts.js +36 -0
  24. package/dist/esm/core/fonts/scripts.d.ts +19 -0
  25. package/dist/esm/core/fonts/scripts.js +96 -1
  26. package/dist/esm/core/numbering/apply.js +12 -8
  27. package/dist/esm/core/style-cascade/index.d.ts +1 -1
  28. package/dist/esm/core/style-cascade/index.js +2 -2
  29. package/dist/esm/core/style-cascade/resolver.d.ts +9 -0
  30. package/dist/esm/core/style-cascade/resolver.js +31 -3
  31. package/dist/esm/core/style-cascade/table.js +3 -8
  32. package/dist/esm/excel/xlsx-to-pdf.js +1 -0
  33. package/dist/esm/index.js +1 -0
  34. package/dist/esm/layout/line-paint.d.ts +5 -4
  35. package/dist/esm/layout/line-paint.js +6 -5
  36. package/dist/esm/layout/page-doc.d.ts +26 -0
  37. package/dist/esm/layout/styled-layout.d.ts +8 -1
  38. package/dist/esm/layout/styled-layout.js +459 -112
  39. package/dist/esm/layout/undrawn.d.ts +18 -0
  40. package/dist/esm/layout/undrawn.js +59 -0
  41. package/dist/esm/pdf/cid-font.d.ts +5 -0
  42. package/dist/esm/pdf/cid-font.js +8 -2
  43. package/dist/esm/pdf/styled-page-emitter.js +117 -28
  44. package/dist/esm/pdf/text-page-renderer.js +1 -0
  45. package/dist/esm/pdf-reader/content.d.ts +1 -1
  46. package/dist/esm/pdf-reader/content.js +48 -13
  47. package/dist/esm/pdf-reader/embedded-fonts.js +1 -0
  48. package/dist/esm/pdf-reader/encodings.d.ts +9 -0
  49. package/dist/esm/pdf-reader/encodings.js +66 -1
  50. package/dist/esm/pdf-reader/face-outlines.js +1 -0
  51. package/dist/esm/pdf-reader/text.d.ts +10 -0
  52. package/dist/esm/pdf-reader/text.js +25 -3
  53. package/dist/esm/pdf-reader/vector.js +2 -2
  54. package/dist/esm/pptx/embedded-fonts.js +1 -0
  55. package/dist/esm/pptx/sp-helpers.js +4 -1
  56. package/dist/esm/svg/svg-text.js +30 -7
  57. package/dist/esm/word/doc/doc-reader.js +148 -57
  58. package/dist/esm/word/doc/doc-text.d.ts +80 -11
  59. package/dist/esm/word/doc/doc-text.js +438 -75
  60. package/dist/esm/word/document-parser.js +48 -28
  61. package/dist/esm/word/docx-to-pdf.d.ts +5 -5
  62. package/dist/esm/word/docx-to-pdf.js +9 -7
  63. package/dist/esm/word/docx-writer.js +3 -5
  64. package/dist/esm/word/font-embed.js +1 -0
  65. package/dist/esm/word/font-table.js +1 -0
  66. package/dist/esm/word/numbering-parser.js +3 -0
  67. package/dist/esm/word/paragraph-properties.js +2 -2
  68. package/dist/esm/word/run-properties.js +2 -2
  69. package/dist/esm/word/xml-helpers.d.ts +18 -0
  70. package/dist/esm/word/xml-helpers.js +48 -1
  71. package/package.json +7 -2
@@ -0,0 +1,12 @@
1
+ /** Category and position of U+0900..U+0D7F, two base-32 digits each. */
2
+ export declare const MAIN: string;
3
+ /** …of U+1CD0..U+1CFF, the Vedic extensions. */
4
+ export declare const VEDIC = "adadad0eadadadadadadadadadadadadadadadadadadadadadididididadidididid1414adj4j4adadadb40e0e0e0e0e";
5
+ /** …of U+A8E0..U+A8FF, Devanagari extended. */
6
+ export declare const EXTENDED = "adadadadadadadadadadadadadadadadadadidididididid0e0e0e0e0e0e2479";
7
+ /** The code points outside those blocks that take part: [code point, category, position]. */
8
+ export declare const SINGLES: ReadonlyArray<readonly [number, number, number]>;
9
+ /** Canonical decompositions in the blocks: [composite, first, second, excluded from composition]. */
10
+ export declare const DECOMPOSITIONS: ReadonlyArray<readonly [number, number, number, boolean]>;
11
+ /** Canonical combining classes other than 0. */
12
+ export declare const COMBINING: ReadonlyArray<readonly [number, number]>;
@@ -0,0 +1,463 @@
1
+ //#region src/core/font/indic-table.ts
2
+ /** Category and position of U+0900..U+0D7F, two base-32 digits each. */
3
+ var MAIN = "8d8d8d8d2424242424242424242424242424242424141414141414141414141414141414141414141414141414141414g4141414141414141414797938id7972797979797979797979797979794872790eadad8d8d7979791414141414141414242479790e0eb4b4b4b4b4b4b4b4b4b40e0e2424242424241414141414141414b48d8d8d0e24242424242424240e0e24240e0e242414141414141414141414141414141414141414140e141414141414g40e140e0e0e141414140e0e38id7c727c797979790e0e72720e0e7c7c48140e0e0e0e0e0e0e0e7c0e0e0e0e14140e14242479790e0eb4b4b4b4b4b4b4b4b4b4g4140e0e0e0e0e0e0e0e0e0eb40e8d0e0e8d8d8d0e2424242424240e0e0e0e24240e0e242414141414141414141414141414141414141414140e141414141414g40e14140e14140e14140e0e380e7c72ec7c7c0e0e0e0e7c7c0e0e7c7c480e0e0e780e0e0e0e0e0e0e141414140e140e0e0e0e0e0e0eb4b4b4b4b4b4b4b4b4b48d8d14140eh40e0e0e0e0e0e0e0e0e0e0e8d8d8d0e2424242424242424240e2424240e242414141414141414141414141414141414141414140e141414141414g40e14140e14141414140e0e38id7c727c7c7c7c7c790e79797c0e7c7c480e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e24247c7c0e0eb4b4b4b4b4b4b4b4b4b40e0e0e0e0e0e0e0e0e14ad36ad3636360e878d8d0e24242424242424240e0e24240e0e242414141414141414141414141414141414141414140e141414141414g40e14140e14141414140e0e38id7c757c797979790e0e72750e0e7c7c480e0e0e0e0e757536757c0e0e0e0e14140e14242479790e0eb4b4b4b4b4b4b4b4b4b40e140e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e8d0e0e2424242424240e0e0e2424240e242424140e0e0e14140e140e14140e0e0e14140e0e0e1414140e0e0e1414g41414141414141414140e0e0e0e7c7c797c7c0e0e0e7272720e7c7c7c460e0e0e0e0e0e0e0e0e7c0e0e0e0e0e0e0e0e0e0e0e0e0e0eb4b4b4b4b4b4b4b4b4b40e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e8d8d8d8d8d24242424242424240e2424240e24242414141414141414141414141414141414141414140e141414141414g41414141414141414140e0e38id777777777779790e7777770e777777460e0e0e0e0e0e0e77770e1414140e0e140e0e242477770e0eb4b4b4b4b4b4b4b4b4b40e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0eb48d8d8d0e24242424242424240e2424240e24242414141414141414141414141414141414141414140e141414141414g41414140e14141414140e0e38id777777777779790e7779790e797977460e0e0e0e0e0e0e79790e0e0e0e0e0e14140e242477770e0eb4b4b4b4b4b4b4b4b4b40ej4j48d0e0e0e0e0e0e0e0e0e0e0e0e8d8d8d8d8d24242424242424240e2424240e242424141414141414141414141414141414141414141414141414141414g4141414141414141414147979id7c7c7c7c7c7c7c0e7272720e7c7c7c46f60e0e0e0e0e1414147c0e0e0e0e0e0e0e2424247c7c0e0eb4b4b4b4b4b4b4b4b4b40e0e0e0e0e0e0e0e0e0e141414141414";
4
+ /** …of U+1CD0..U+1CFF, the Vedic extensions. */
5
+ var VEDIC = "adadad0eadadadadadadadadadadadadadadadadadadadadadididididadidididid1414adj4j4adadadb40e0e0e0e0e";
6
+ /** …of U+A8E0..U+A8FF, Devanagari extended. */
7
+ var EXTENDED = "adadadadadadadadadadadadadadadadadadidididididid0e0e0e0e0e0e2479";
8
+ /** The code points outside those blocks that take part: [code point, category, position]. */
9
+ var SINGLES = [
10
+ [
11
+ 45,
12
+ 11,
13
+ 4
14
+ ],
15
+ [
16
+ 48,
17
+ 11,
18
+ 4
19
+ ],
20
+ [
21
+ 49,
22
+ 11,
23
+ 4
24
+ ],
25
+ [
26
+ 50,
27
+ 11,
28
+ 4
29
+ ],
30
+ [
31
+ 51,
32
+ 11,
33
+ 4
34
+ ],
35
+ [
36
+ 52,
37
+ 11,
38
+ 4
39
+ ],
40
+ [
41
+ 53,
42
+ 11,
43
+ 4
44
+ ],
45
+ [
46
+ 54,
47
+ 11,
48
+ 4
49
+ ],
50
+ [
51
+ 55,
52
+ 11,
53
+ 4
54
+ ],
55
+ [
56
+ 56,
57
+ 11,
58
+ 4
59
+ ],
60
+ [
61
+ 57,
62
+ 11,
63
+ 4
64
+ ],
65
+ [
66
+ 160,
67
+ 11,
68
+ 4
69
+ ],
70
+ [
71
+ 178,
72
+ 8,
73
+ 13
74
+ ],
75
+ [
76
+ 179,
77
+ 8,
78
+ 13
79
+ ],
80
+ [
81
+ 215,
82
+ 11,
83
+ 4
84
+ ],
85
+ [
86
+ 8204,
87
+ 5,
88
+ 14
89
+ ],
90
+ [
91
+ 8205,
92
+ 6,
93
+ 14
94
+ ],
95
+ [
96
+ 8208,
97
+ 11,
98
+ 4
99
+ ],
100
+ [
101
+ 8209,
102
+ 11,
103
+ 4
104
+ ],
105
+ [
106
+ 8210,
107
+ 11,
108
+ 4
109
+ ],
110
+ [
111
+ 8211,
112
+ 11,
113
+ 4
114
+ ],
115
+ [
116
+ 8212,
117
+ 11,
118
+ 4
119
+ ],
120
+ [
121
+ 8308,
122
+ 8,
123
+ 13
124
+ ],
125
+ [
126
+ 8322,
127
+ 8,
128
+ 13
129
+ ],
130
+ [
131
+ 8323,
132
+ 8,
133
+ 13
134
+ ],
135
+ [
136
+ 8324,
137
+ 8,
138
+ 13
139
+ ],
140
+ [
141
+ 9676,
142
+ 12,
143
+ 4
144
+ ]
145
+ ];
146
+ /** Canonical decompositions in the blocks: [composite, first, second, excluded from composition]. */
147
+ var DECOMPOSITIONS = [
148
+ [
149
+ 2345,
150
+ 2344,
151
+ 2364,
152
+ false
153
+ ],
154
+ [
155
+ 2353,
156
+ 2352,
157
+ 2364,
158
+ false
159
+ ],
160
+ [
161
+ 2356,
162
+ 2355,
163
+ 2364,
164
+ false
165
+ ],
166
+ [
167
+ 2392,
168
+ 2325,
169
+ 2364,
170
+ true
171
+ ],
172
+ [
173
+ 2393,
174
+ 2326,
175
+ 2364,
176
+ true
177
+ ],
178
+ [
179
+ 2394,
180
+ 2327,
181
+ 2364,
182
+ true
183
+ ],
184
+ [
185
+ 2395,
186
+ 2332,
187
+ 2364,
188
+ true
189
+ ],
190
+ [
191
+ 2396,
192
+ 2337,
193
+ 2364,
194
+ true
195
+ ],
196
+ [
197
+ 2397,
198
+ 2338,
199
+ 2364,
200
+ true
201
+ ],
202
+ [
203
+ 2398,
204
+ 2347,
205
+ 2364,
206
+ true
207
+ ],
208
+ [
209
+ 2399,
210
+ 2351,
211
+ 2364,
212
+ true
213
+ ],
214
+ [
215
+ 2507,
216
+ 2503,
217
+ 2494,
218
+ false
219
+ ],
220
+ [
221
+ 2508,
222
+ 2503,
223
+ 2519,
224
+ false
225
+ ],
226
+ [
227
+ 2524,
228
+ 2465,
229
+ 2492,
230
+ true
231
+ ],
232
+ [
233
+ 2525,
234
+ 2466,
235
+ 2492,
236
+ true
237
+ ],
238
+ [
239
+ 2527,
240
+ 2479,
241
+ 2492,
242
+ true
243
+ ],
244
+ [
245
+ 2611,
246
+ 2610,
247
+ 2620,
248
+ true
249
+ ],
250
+ [
251
+ 2614,
252
+ 2616,
253
+ 2620,
254
+ true
255
+ ],
256
+ [
257
+ 2649,
258
+ 2582,
259
+ 2620,
260
+ true
261
+ ],
262
+ [
263
+ 2650,
264
+ 2583,
265
+ 2620,
266
+ true
267
+ ],
268
+ [
269
+ 2651,
270
+ 2588,
271
+ 2620,
272
+ true
273
+ ],
274
+ [
275
+ 2654,
276
+ 2603,
277
+ 2620,
278
+ true
279
+ ],
280
+ [
281
+ 2888,
282
+ 2887,
283
+ 2902,
284
+ false
285
+ ],
286
+ [
287
+ 2891,
288
+ 2887,
289
+ 2878,
290
+ false
291
+ ],
292
+ [
293
+ 2892,
294
+ 2887,
295
+ 2903,
296
+ false
297
+ ],
298
+ [
299
+ 2908,
300
+ 2849,
301
+ 2876,
302
+ true
303
+ ],
304
+ [
305
+ 2909,
306
+ 2850,
307
+ 2876,
308
+ true
309
+ ],
310
+ [
311
+ 2964,
312
+ 2962,
313
+ 3031,
314
+ false
315
+ ],
316
+ [
317
+ 3018,
318
+ 3014,
319
+ 3006,
320
+ false
321
+ ],
322
+ [
323
+ 3019,
324
+ 3015,
325
+ 3006,
326
+ false
327
+ ],
328
+ [
329
+ 3020,
330
+ 3014,
331
+ 3031,
332
+ false
333
+ ],
334
+ [
335
+ 3144,
336
+ 3142,
337
+ 3158,
338
+ false
339
+ ],
340
+ [
341
+ 3264,
342
+ 3263,
343
+ 3285,
344
+ false
345
+ ],
346
+ [
347
+ 3271,
348
+ 3270,
349
+ 3285,
350
+ false
351
+ ],
352
+ [
353
+ 3272,
354
+ 3270,
355
+ 3286,
356
+ false
357
+ ],
358
+ [
359
+ 3274,
360
+ 3270,
361
+ 3266,
362
+ false
363
+ ],
364
+ [
365
+ 3275,
366
+ 3274,
367
+ 3285,
368
+ false
369
+ ],
370
+ [
371
+ 3402,
372
+ 3398,
373
+ 3390,
374
+ false
375
+ ],
376
+ [
377
+ 3403,
378
+ 3399,
379
+ 3390,
380
+ false
381
+ ],
382
+ [
383
+ 3404,
384
+ 3398,
385
+ 3415,
386
+ false
387
+ ]
388
+ ];
389
+ /** Canonical combining classes other than 0. */
390
+ var COMBINING = [
391
+ [2364, 7],
392
+ [2381, 9],
393
+ [2385, 230],
394
+ [2386, 220],
395
+ [2387, 230],
396
+ [2388, 230],
397
+ [2492, 7],
398
+ [2509, 9],
399
+ [2558, 230],
400
+ [2620, 7],
401
+ [2637, 9],
402
+ [2748, 7],
403
+ [2765, 9],
404
+ [2876, 7],
405
+ [2893, 9],
406
+ [3021, 9],
407
+ [3132, 7],
408
+ [3149, 9],
409
+ [3157, 84],
410
+ [3158, 91],
411
+ [3260, 7],
412
+ [3277, 9],
413
+ [3387, 9],
414
+ [3388, 9],
415
+ [3405, 9],
416
+ [7376, 230],
417
+ [7377, 230],
418
+ [7378, 230],
419
+ [7380, 1],
420
+ [7381, 220],
421
+ [7382, 220],
422
+ [7383, 220],
423
+ [7384, 220],
424
+ [7385, 220],
425
+ [7386, 230],
426
+ [7387, 230],
427
+ [7388, 220],
428
+ [7389, 220],
429
+ [7390, 220],
430
+ [7391, 220],
431
+ [7392, 230],
432
+ [7394, 1],
433
+ [7395, 1],
434
+ [7396, 1],
435
+ [7397, 1],
436
+ [7398, 1],
437
+ [7399, 1],
438
+ [7400, 1],
439
+ [7405, 220],
440
+ [7412, 230],
441
+ [7416, 230],
442
+ [7417, 230],
443
+ [43232, 230],
444
+ [43233, 230],
445
+ [43234, 230],
446
+ [43235, 230],
447
+ [43236, 230],
448
+ [43237, 230],
449
+ [43238, 230],
450
+ [43239, 230],
451
+ [43240, 230],
452
+ [43241, 230],
453
+ [43242, 230],
454
+ [43243, 230],
455
+ [43244, 230],
456
+ [43245, 230],
457
+ [43246, 230],
458
+ [43247, 230],
459
+ [43248, 230],
460
+ [43249, 230]
461
+ ];
462
+ //#endregion
463
+ export { COMBINING, DECOMPOSITIONS, EXTENDED, MAIN, SINGLES, VEDIC };
@@ -25,20 +25,61 @@ export interface FontMeasure {
25
25
  /** Encode `text` as a hex string of 4-digit glyph ids (Identity-H addressing). */
26
26
  readonly encodeTextAsCidHex: (text: string) => string;
27
27
  /**
28
- * The complete PDF text-showing operator for `text` — `<hex> Tj`, or a
29
- * `[…] TJ` array when shaping moved a glyph off its own advance.
28
+ * The complete PDF text-showing operators for `text` — `<hex> Tj`, or a
29
+ * `[…] TJ` array when shaping moved a glyph off its own advance. Text the
30
+ * Indic shaper set (see {@link clustered}) may place a glyph off its pen
31
+ * position and off the baseline, and takes its letter spacing after each
32
+ * cluster rather than each glyph: give it the size it is set at and that
33
+ * spacing, and leave the text state's `Tc` at 0 for it.
34
+ *
35
+ * For such text, `before` puts an operator of the writer's own — a colour,
36
+ * say — before a glyph, keyed by the glyph's index in {@link glyphRun}'s
37
+ * order: the show is cut there, its pen moves and rise kept.
30
38
  */
31
- readonly showText: (text: string) => string;
39
+ readonly showText: (text: string, fontSizePt?: number, clusterSpacingPt?: number, before?: ReadonlyMap<number, string>) => string;
32
40
  /**
33
41
  * The glyphs `text` is drawn with and the advance each one takes, in font
34
42
  * units — exactly what {@link showText} shows, kerning and ligatures
35
- * included — for a writer that places each glyph itself.
43
+ * included — for a writer that places each glyph itself. For text the Indic
44
+ * shaper set, each glyph's offset off its pen position, and which glyphs end
45
+ * a cluster.
36
46
  */
37
47
  readonly glyphRun: (text: string) => {
38
48
  readonly gids: ReadonlyArray<number>;
39
49
  readonly advances: ReadonlyArray<number>;
50
+ readonly xOffsets?: ReadonlyArray<number>;
51
+ readonly yOffsets?: ReadonlyArray<number>;
52
+ readonly clusterEnds?: ReadonlyArray<boolean>;
40
53
  };
54
+ /**
55
+ * Whether `text` is set by the Indic shaper in this face: its glyphs are not
56
+ * in the order of its characters, and a cluster of them is one letter that
57
+ * spacing must not split.
58
+ */
59
+ readonly clustered: (text: string) => boolean;
60
+ /**
61
+ * For text the Indic shaper set, per glyph in {@link glyphRun}'s order, the
62
+ * index in code points of the first character it stands for: the one a
63
+ * writer takes a glyph's formatting from. Undefined for any other text.
64
+ */
65
+ readonly glyphSources: (text: string) => ReadonlyArray<number> | undefined;
66
+ /** How many places letter spacing goes in `text`: one per character, or per cluster. */
67
+ readonly spacingSlots: (text: string) => number;
41
68
  }
69
+ /**
70
+ * The glyphs a face draws a string with, and for each glyph the Indic shaper
71
+ * made out of several characters (a conjunct, a reph, a vowel sign's
72
+ * contextual form), the text it stands for — which a PDF's /ToUnicode has to
73
+ * name, since no character maps to it.
74
+ *
75
+ * @param parsed The face.
76
+ * @param text The text.
77
+ * @returns The glyph ids, and the text of each glyph no character reaches.
78
+ */
79
+ export declare function shapeGlyphs(parsed: ParsedTtf, text: string): {
80
+ readonly gids: ReadonlyArray<number>;
81
+ readonly glyphText?: ReadonlyMap<number, string>;
82
+ };
42
83
  /**
43
84
  * Build a {@link FontMeasure} over a parsed font.
44
85
  *