postext-pdf 1.29.1 → 1.30.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.
Files changed (102) hide show
  1. package/dist/__tests__/canvasShaping.test.d.ts +2 -0
  2. package/dist/__tests__/canvasShaping.test.d.ts.map +1 -0
  3. package/dist/__tests__/canvasShaping.test.js +258 -0
  4. package/dist/__tests__/canvasShaping.test.js.map +1 -0
  5. package/dist/__tests__/canvasWords.test.d.ts +2 -0
  6. package/dist/__tests__/canvasWords.test.d.ts.map +1 -0
  7. package/dist/__tests__/canvasWords.test.js +66 -0
  8. package/dist/__tests__/canvasWords.test.js.map +1 -0
  9. package/dist/__tests__/declaredFiles.test.d.ts +2 -0
  10. package/dist/__tests__/declaredFiles.test.d.ts.map +1 -0
  11. package/dist/__tests__/declaredFiles.test.js +435 -0
  12. package/dist/__tests__/declaredFiles.test.js.map +1 -0
  13. package/dist/__tests__/designTextRtl.test.js +17 -6
  14. package/dist/__tests__/designTextRtl.test.js.map +1 -1
  15. package/dist/__tests__/glyphPositions.d.ts +25 -0
  16. package/dist/__tests__/glyphPositions.d.ts.map +1 -0
  17. package/dist/__tests__/glyphPositions.js +288 -0
  18. package/dist/__tests__/glyphPositions.js.map +1 -0
  19. package/dist/__tests__/japaneseShaping.test.js +3 -3
  20. package/dist/__tests__/japaneseShaping.test.js.map +1 -1
  21. package/dist/__tests__/listMarkerShaping.test.d.ts +2 -0
  22. package/dist/__tests__/listMarkerShaping.test.d.ts.map +1 -0
  23. package/dist/__tests__/listMarkerShaping.test.js +64 -0
  24. package/dist/__tests__/listMarkerShaping.test.js.map +1 -0
  25. package/dist/__tests__/pdfWorker.test.js +27 -0
  26. package/dist/__tests__/pdfWorker.test.js.map +1 -1
  27. package/dist/__tests__/scriptContextHan.test.js +3 -3
  28. package/dist/__tests__/scriptContextHan.test.js.map +1 -1
  29. package/dist/__tests__/shapingLanguageDocument.test.js +1 -1
  30. package/dist/__tests__/shapingLanguageDocument.test.js.map +1 -1
  31. package/dist/__tests__/shapingLanguageRuns.test.d.ts +2 -0
  32. package/dist/__tests__/shapingLanguageRuns.test.d.ts.map +1 -0
  33. package/dist/__tests__/shapingLanguageRuns.test.js +250 -0
  34. package/dist/__tests__/shapingLanguageRuns.test.js.map +1 -0
  35. package/dist/__tests__/shapingLanguageRunsDocument.test.d.ts +2 -0
  36. package/dist/__tests__/shapingLanguageRunsDocument.test.d.ts.map +1 -0
  37. package/dist/__tests__/shapingLanguageRunsDocument.test.js +477 -0
  38. package/dist/__tests__/shapingLanguageRunsDocument.test.js.map +1 -0
  39. package/dist/__tests__/trackedLetters.test.d.ts +2 -0
  40. package/dist/__tests__/trackedLetters.test.d.ts.map +1 -0
  41. package/dist/__tests__/trackedLetters.test.js +77 -0
  42. package/dist/__tests__/trackedLetters.test.js.map +1 -0
  43. package/dist/canvasWords.d.ts +55 -0
  44. package/dist/canvasWords.d.ts.map +1 -0
  45. package/dist/canvasWords.js +160 -0
  46. package/dist/canvasWords.js.map +1 -0
  47. package/dist/faceFiles.d.ts +102 -5
  48. package/dist/faceFiles.d.ts.map +1 -1
  49. package/dist/faceFiles.js +271 -10
  50. package/dist/faceFiles.js.map +1 -1
  51. package/dist/fontCache.d.ts +92 -11
  52. package/dist/fontCache.d.ts.map +1 -1
  53. package/dist/fontCache.js +82 -17
  54. package/dist/fontCache.js.map +1 -1
  55. package/dist/index.d.ts +2 -2
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +1 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/pdf-backend/blockRender.d.ts.map +1 -1
  60. package/dist/pdf-backend/blockRender.js +72 -22
  61. package/dist/pdf-backend/blockRender.js.map +1 -1
  62. package/dist/pdf-backend/index.d.ts +3 -2
  63. package/dist/pdf-backend/index.d.ts.map +1 -1
  64. package/dist/pdf-backend/index.js +9 -3
  65. package/dist/pdf-backend/index.js.map +1 -1
  66. package/dist/pdf-backend/primitives.d.ts +55 -5
  67. package/dist/pdf-backend/primitives.d.ts.map +1 -1
  68. package/dist/pdf-backend/primitives.js +207 -26
  69. package/dist/pdf-backend/primitives.js.map +1 -1
  70. package/dist/pdf-backend/renderResourceBlock.d.ts.map +1 -1
  71. package/dist/pdf-backend/renderResourceBlock.js +32 -6
  72. package/dist/pdf-backend/renderResourceBlock.js.map +1 -1
  73. package/dist/pdf-backend/shapedText.d.ts +4 -0
  74. package/dist/pdf-backend/shapedText.d.ts.map +1 -1
  75. package/dist/pdf-backend/shapedText.js +30 -9
  76. package/dist/pdf-backend/shapedText.js.map +1 -1
  77. package/dist/pdf-backend/svgVector.js +1 -1
  78. package/dist/pdf-backend/svgVector.js.map +1 -1
  79. package/dist/pdf-backend/verticalText.d.ts.map +1 -1
  80. package/dist/pdf-backend/verticalText.js +7 -4
  81. package/dist/pdf-backend/verticalText.js.map +1 -1
  82. package/dist/pdf-backend/wordPieces.d.ts +29 -0
  83. package/dist/pdf-backend/wordPieces.d.ts.map +1 -0
  84. package/dist/pdf-backend/wordPieces.js +85 -0
  85. package/dist/pdf-backend/wordPieces.js.map +1 -0
  86. package/dist/shapingLanguage.d.ts +56 -3
  87. package/dist/shapingLanguage.d.ts.map +1 -1
  88. package/dist/shapingLanguage.js +202 -9
  89. package/dist/shapingLanguage.js.map +1 -1
  90. package/dist/unicodeRange.d.ts +19 -0
  91. package/dist/unicodeRange.d.ts.map +1 -0
  92. package/dist/unicodeRange.js +68 -0
  93. package/dist/unicodeRange.js.map +1 -0
  94. package/dist/worker/client.d.ts +1 -1
  95. package/dist/worker/client.d.ts.map +1 -1
  96. package/dist/worker/client.js +5 -2
  97. package/dist/worker/client.js.map +1 -1
  98. package/dist/worker/pdf.worker.js +7 -0
  99. package/dist/worker/pdf.worker.js.map +1 -1
  100. package/dist/worker/protocol.d.ts +6 -0
  101. package/dist/worker/protocol.d.ts.map +1 -1
  102. package/package.json +3 -3
@@ -39,13 +39,65 @@ export declare function shapingScriptLetter(): number | undefined;
39
39
  * acts on, else ignored), then put back the script in force before, also
40
40
  * when `fn` throws. */
41
41
  export declare function withShapingScript<T>(script: string | undefined, fn: () => T): T;
42
+ /** Run `fn` (the shaping of one part of a word, cut out by the file that
43
+ * draws it) with the part shaped in the script of `letter`
44
+ * ({@link besideLetterOf}; undefined: as a text of its own), then put back
45
+ * what was in force before, also when `fn` throws. */
46
+ export declare function withBesideLetter<T>(letter: number | undefined, fn: () => T): T;
47
+ /**
48
+ * The letter whose script the part `[from, to)` of `text` takes, when the
49
+ * part holds no letter and `text` (the string the layout measured: a word,
50
+ * a run of one direction) does: the nearest letter before it in its word,
51
+ * else the first after it. A word ends at a space: the browser shapes each
52
+ * word of a run apart, so a mark between two spaces takes nothing from
53
+ * the words either side. That is the script the browser gave the part,
54
+ * whatever file draws it (Chrome 154, measured: `«أنا` in Markazi Text
55
+ * under `ar` is 939 thousandths of the em set right to left, 636 for the
56
+ * letters and 303 for the guillemet of Arabic text, which alone is 407).
57
+ * Undefined, the part shaped as a text of its own, for a part with a
58
+ * letter, for one that holds two words, for text with no character above
59
+ * U+00FF (all of it is Latin text to the canvas), when the letter is of a
60
+ * script the rule leaves alone ({@link BESIDE_SCRIPTS}), with a script in
61
+ * force (#725) and in a document that keeps the host's language.
62
+ */
63
+ export declare function besideLetterOf(text: string, from: number, to: number): number | undefined;
64
+ /**
65
+ * Run `fn` (the shaping of the words, the runs and the parts of a string)
66
+ * knowing whether the string holds a character above U+00FF (`wide`).
67
+ * The canvas shapes a string word by word (`canvasWords.ts`), and gives a
68
+ * word the script of its own letters; only a string it keeps in eight bits
69
+ * is Latin text all through. So a word with no letter of a wider string
70
+ * (the `2012` and the `·` of a running head that opens with a Han
71
+ * character) is shaped in no script, though the word alone has no
72
+ * character above U+00FF. Put back afterwards, also when `fn` throws.
73
+ */
74
+ export declare function withinWideText<T>(wide: boolean, fn: () => T): T;
75
+ /**
76
+ * Run `fn` (the shaping of the runs and the parts of `text`, a string
77
+ * HarfBuzz sets) knowing whether `text` holds a right-to-left letter
78
+ * (`rightToLeft`). Such a string is not one the canvas kept in eight
79
+ * bits, so a piece of it with no letter and none beside it in its word
80
+ * (the `(` and the `)` of `كتاب (1)`, each a run of its own; the `.` of
81
+ * `كتاب . كتاب`) was shaped in no script, even where the piece alone has
82
+ * no character above U+00FF: Amiri sets those brackets 0.458 em wide, and
83
+ * 0.255 em as Latin text. Put back afterwards, also when `fn` throws.
84
+ */
85
+ export declare function withinRightToLeftText<T>(rightToLeft: boolean, fn: () => T): T;
86
+ /** Whether the text being painted is shaped as the canvas shaped it: word
87
+ * by word (`canvasWords.ts`), each word in the script of its letters. So
88
+ * is the text of a document shaped in its own language; one that keeps
89
+ * the host's is shaped string by string, as up to postext-pdf 1.29. */
90
+ export declare function shapesAsCanvas(): boolean;
42
91
  /**
43
92
  * The script (ISO 15924) `text` is shaped in, undefined for the one the
44
93
  * shaper reads from the text (the default script, for text with no
45
94
  * letter). The script in force; else, and for a word the layout measured
46
95
  * beside an ideograph, as the canvas shaped the text of a document in its
47
- * own language: Latin with no character above U+00FF, no script beside an
48
- * ideograph. For HarfBuzz; fontkit is told the same
96
+ * own language: the script of the letter a part with no letter was cut
97
+ * from beside ({@link withBesideLetter}), else Latin with no character
98
+ * above U+00FF (but no script for a piece with no letter of a string with
99
+ * right-to-left letters, {@link withinRightToLeftText}), no script beside
100
+ * an ideograph. For HarfBuzz; fontkit is told the same
49
101
  * ({@link shapeInCurrentLanguage}).
50
102
  */
51
103
  export declare function shapingScriptOf(text: string): string | undefined;
@@ -61,7 +113,8 @@ export declare function shapingKey(text: string): string;
61
113
  * Text of a document shaped in its own language is told the language
62
114
  * system of that language for the script it is shaped in
63
115
  * ({@link languageSystem}): the script in force (the default one for a
64
- * word measured beside an ideograph), else Latin for text with no
116
+ * word measured beside an ideograph), else the script of the letter a
117
+ * part with no letter was cut from beside, else Latin for text with no
65
118
  * character above U+00FF, else the one fontkit reads from the text
66
119
  * ({@link shapingScriptOf}).
67
120
  *
@@ -1 +1 @@
1
- {"version":3,"file":"shapingLanguage.d.ts","sourceRoot":"","sources":["../src/shapingLanguage.ts"],"names":[],"mappings":"AAqDA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAyDvC;;yBAEyB;AACzB,wBAAgB,eAAe,IAAI,MAAM,GAAG,SAAS,CAEpD;AAED;;;qCAGqC;AACrC,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEnF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CASjH;AAED;;;qBAGqB;AACrB,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,QAAQ,UAAQ,GAAG,CAAC,CAIjG;AAWD;kCACkC;AAClC,wBAAgB,aAAa,IAAI,MAAM,GAAG,SAAS,CAElD;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAExD;AAED;;wBAEwB;AACxB,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAU/E;AAWD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIhE;AAED;;yDAEyD;AACzD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG/C;AA+HD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAqB1D"}
1
+ {"version":3,"file":"shapingLanguage.d.ts","sourceRoot":"","sources":["../src/shapingLanguage.ts"],"names":[],"mappings":"AAkFA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAyDvC;;yBAEyB;AACzB,wBAAgB,eAAe,IAAI,MAAM,GAAG,SAAS,CAEpD;AAED;;;qCAGqC;AACrC,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEnF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CASjH;AAED;;;qBAGqB;AACrB,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,QAAQ,UAAQ,GAAG,CAAC,CAIjG;AAWD;kCACkC;AAClC,wBAAgB,aAAa,IAAI,MAAM,GAAG,SAAS,CAElD;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAExD;AAED;;wBAEwB;AACxB,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAU/E;AAgCD;;;uDAGuD;AACvD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAS9E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAyBzF;AAMD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAS/D;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE7E;AAeD;;;wEAGwE;AACxE,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMhE;AAED;;yDAEyD;AACzD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK/C;AAoID;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAyB1D"}
@@ -22,10 +22,11 @@
22
22
  * synchronously, so the language in force is the page's.
23
23
  *
24
24
  * A document that keeps the host's language (`bodyText.shapingLanguage:
25
- * 'host'`, every configuration stored before `configVersion` 13) is
26
- * shaped as postext-pdf shaped up to 1.28, so it prints the same bytes:
27
- * `JAN ` through fontkit for Japanese, with punctuation alone shaped as
28
- * Han, and no language at all for any other document or through HarfBuzz.
25
+ * 'host'`, which a configuration stored before `configVersion` 14 reads
26
+ * with unless it names the document's) is shaped as postext-pdf shaped up
27
+ * to 1.28, so it prints the same bytes: `JAN ` through fontkit for
28
+ * Japanese, with punctuation alone shaped as Han, and no language at all
29
+ * for any other document or through HarfBuzz.
29
30
  *
30
31
  * The script: a browser's canvas shapes a string with no character above
31
32
  * U+00FF as Latin text whatever it holds (Chrome keeps such a string in
@@ -36,6 +37,34 @@
36
37
  * ({@link shapingScriptOf}). Any other text with no letter (`……`, `—`)
37
38
  * was measured in the default script, by the canvas and by both shapers.
38
39
  *
40
+ * The canvas shapes that string word by word (`canvasWords.ts`, #770): it
41
+ * cuts it at its spaces and around each CJK character, shapes each word
42
+ * alone, and gives it the script of its own letters. A word with no
43
+ * letter of a string it did not keep in eight bits has no script
44
+ * ({@link withinWideText}): the `"` beside a kana keeps the default form
45
+ * of Noto Serif JP in Japanese, and takes the Japanese one alone or in a
46
+ * Latin word. Text shaped in a document's language is cut the same way
47
+ * (`wordRuns` in `faceFiles.ts`).
48
+ *
49
+ * That rule is for the string the canvas was handed, the word the layout
50
+ * measured, not for what a face made of several files leaves of it.
51
+ * Chrome cuts a string into runs of one direction and each run into words
52
+ * at its spaces, and gives a mark the script of the word it stands in
53
+ * before it looks for the file that draws it: the `»` and the stop of
54
+ * `خالة.»`, which Fontsource keeps in the `latin` file of an Arabic
55
+ * family, are Arabic text to it. Markazi Text draws its guillemets 0.1 em
56
+ * narrower for Arabic text in Arabic (`arab`, `ARA `) and Amiri sets a
57
+ * Latin stop and brackets under `latn` only, so a mark shaped alone as
58
+ * Latin text came out at another width than the one measured (#764). So:
59
+ *
60
+ * - a part with no letter, cut out of a word that has one, is shaped in
61
+ * the script of the letter beside it ({@link besideLetterOf},
62
+ * {@link withBesideLetter});
63
+ * - a piece with no letter and none beside it, in a string with
64
+ * right-to-left letters (never one kept in eight bits), is shaped in no
65
+ * script, also where the piece itself has no character above U+00FF
66
+ * ({@link withinRightToLeftText}).
67
+ *
39
68
  * The script in force (#725) is for one word at a time: a word with no
40
69
  * letter (`46.`, `1367)`) that the layout measured in the script of the
41
70
  * text around it (`VDTLineSegment.scriptContext`) is shaped in that script
@@ -176,18 +205,166 @@ export function withShapingScript(script, fn) {
176
205
  }
177
206
  /** Text a browser keeps in eight bits: no character above U+00FF. */
178
207
  const LATIN_1_RE = /^[\u0000-\u00FF]*$/;
208
+ /** The space words are cut at. */
209
+ const SPACE = 0x20;
210
+ /** The scripts a mark takes from the letter beside it (ISO 15924, the
211
+ * names `\p{sc=…}` knows them by): the ones a family comes cut into
212
+ * files by, and the right-to-left ones HarfBuzz paints. Not Han, kana or
213
+ * Hangul: the canvas shapes each of those characters apart from what
214
+ * stands beside it (see the module comment). */
215
+ const BESIDE_SCRIPTS = ['Latn', 'Grek', 'Cyrl', 'Armn', 'Geor', 'Hebr', 'Arab', 'Syrc', 'Thaa', 'Nkoo', 'Samr', 'Mand', 'Adlm', 'Rohg'];
216
+ let besideScriptRes;
217
+ const besideScripts = new Map();
218
+ /** The script of the letter `cp`, one of {@link BESIDE_SCRIPTS}; undefined
219
+ * for a letter of any other script and for a character with none. */
220
+ function besideScriptOf(cp) {
221
+ if (besideScripts.has(cp))
222
+ return besideScripts.get(cp);
223
+ besideScriptRes ??= BESIDE_SCRIPTS.map((code) => [code, new RegExp(`\\p{sc=${code}}`, 'u')]);
224
+ const ch = String.fromCodePoint(cp);
225
+ const script = besideScriptRes.find(([, re]) => re.test(ch))?.[0];
226
+ if (besideScripts.size >= SCRIPT_SLOTS)
227
+ besideScripts.clear();
228
+ besideScripts.set(cp, script);
229
+ return script;
230
+ }
231
+ /** The letter (a code point) whose script a part with no letter is shaped
232
+ * in now; undefined: the part is shaped as a text of its own. */
233
+ let besideLetter;
234
+ /** Run `fn` (the shaping of one part of a word, cut out by the file that
235
+ * draws it) with the part shaped in the script of `letter`
236
+ * ({@link besideLetterOf}; undefined: as a text of its own), then put back
237
+ * what was in force before, also when `fn` throws. */
238
+ export function withBesideLetter(letter, fn) {
239
+ if (letter === besideLetter)
240
+ return fn();
241
+ const previous = besideLetter;
242
+ besideLetter = letter;
243
+ try {
244
+ return fn();
245
+ }
246
+ finally {
247
+ besideLetter = previous;
248
+ }
249
+ }
250
+ /**
251
+ * The letter whose script the part `[from, to)` of `text` takes, when the
252
+ * part holds no letter and `text` (the string the layout measured: a word,
253
+ * a run of one direction) does: the nearest letter before it in its word,
254
+ * else the first after it. A word ends at a space: the browser shapes each
255
+ * word of a run apart, so a mark between two spaces takes nothing from
256
+ * the words either side. That is the script the browser gave the part,
257
+ * whatever file draws it (Chrome 154, measured: `«أنا` in Markazi Text
258
+ * under `ar` is 939 thousandths of the em set right to left, 636 for the
259
+ * letters and 303 for the guillemet of Arabic text, which alone is 407).
260
+ * Undefined, the part shaped as a text of its own, for a part with a
261
+ * letter, for one that holds two words, for text with no character above
262
+ * U+00FF (all of it is Latin text to the canvas), when the letter is of a
263
+ * script the rule leaves alone ({@link BESIDE_SCRIPTS}), with a script in
264
+ * force (#725) and in a document that keeps the host's language.
265
+ */
266
+ export function besideLetterOf(text, from, to) {
267
+ if (!shapedAsCanvas() || currentScript !== undefined)
268
+ return undefined;
269
+ if (STRONG_SCRIPT_RE.test(text.slice(from, to)) || LATIN_1_RE.test(text))
270
+ return undefined;
271
+ // The part without the spaces at its ends: what is left is in one word.
272
+ let start = from;
273
+ let end = to;
274
+ while (start < end && text.charCodeAt(start) === SPACE)
275
+ start++;
276
+ while (end > start && text.charCodeAt(end - 1) === SPACE)
277
+ end--;
278
+ if (start === end || text.slice(start, end).includes(' '))
279
+ return undefined;
280
+ let found;
281
+ // Backwards by UTF-16 unit: a low surrogate is skipped to its pair.
282
+ for (let at = start - 1; at >= 0 && found === undefined; at--) {
283
+ const unit = text.charCodeAt(at);
284
+ if (unit === SPACE)
285
+ break;
286
+ if (unit >= 0xDC00 && unit <= 0xDFFF)
287
+ continue;
288
+ const cp = text.codePointAt(at);
289
+ if (STRONG_SCRIPT_RE.test(String.fromCodePoint(cp)))
290
+ found = cp;
291
+ }
292
+ for (let at = end; at < text.length && found === undefined;) {
293
+ const cp = text.codePointAt(at);
294
+ if (cp === SPACE)
295
+ break;
296
+ if (STRONG_SCRIPT_RE.test(String.fromCodePoint(cp)))
297
+ found = cp;
298
+ at += cp > 0xFFFF ? 2 : 1;
299
+ }
300
+ return found !== undefined && besideScriptOf(found) !== undefined ? found : undefined;
301
+ }
302
+ /** Whether the text being shaped is part of a string the canvas did not
303
+ * keep in eight bits ({@link withinWideText}). */
304
+ let wideText = false;
305
+ /**
306
+ * Run `fn` (the shaping of the words, the runs and the parts of a string)
307
+ * knowing whether the string holds a character above U+00FF (`wide`).
308
+ * The canvas shapes a string word by word (`canvasWords.ts`), and gives a
309
+ * word the script of its own letters; only a string it keeps in eight bits
310
+ * is Latin text all through. So a word with no letter of a wider string
311
+ * (the `2012` and the `·` of a running head that opens with a Han
312
+ * character) is shaped in no script, though the word alone has no
313
+ * character above U+00FF. Put back afterwards, also when `fn` throws.
314
+ */
315
+ export function withinWideText(wide, fn) {
316
+ if (wide === wideText)
317
+ return fn();
318
+ const previous = wideText;
319
+ wideText = wide;
320
+ try {
321
+ return fn();
322
+ }
323
+ finally {
324
+ wideText = previous;
325
+ }
326
+ }
327
+ /**
328
+ * Run `fn` (the shaping of the runs and the parts of `text`, a string
329
+ * HarfBuzz sets) knowing whether `text` holds a right-to-left letter
330
+ * (`rightToLeft`). Such a string is not one the canvas kept in eight
331
+ * bits, so a piece of it with no letter and none beside it in its word
332
+ * (the `(` and the `)` of `كتاب (1)`, each a run of its own; the `.` of
333
+ * `كتاب . كتاب`) was shaped in no script, even where the piece alone has
334
+ * no character above U+00FF: Amiri sets those brackets 0.458 em wide, and
335
+ * 0.255 em as Latin text. Put back afterwards, also when `fn` throws.
336
+ */
337
+ export function withinRightToLeftText(rightToLeft, fn) {
338
+ return withinWideText(rightToLeft, fn);
339
+ }
340
+ /** Whether `text` is shaped in no script though it has no character above
341
+ * U+00FF: a piece with no letter of a string the canvas did not keep in
342
+ * eight bits ({@link withinWideText}, {@link withinRightToLeftText}). */
343
+ function unscripted(text) {
344
+ return wideText && !STRONG_SCRIPT_RE.test(text);
345
+ }
179
346
  /** Whether text is shaped as the canvas shaped it (see the module
180
347
  * comment): the text of a document shaped in its own language. */
181
348
  function shapedAsCanvas() {
182
349
  return current !== undefined && !current.host;
183
350
  }
351
+ /** Whether the text being painted is shaped as the canvas shaped it: word
352
+ * by word (`canvasWords.ts`), each word in the script of its letters. So
353
+ * is the text of a document shaped in its own language; one that keeps
354
+ * the host's is shaped string by string, as up to postext-pdf 1.29. */
355
+ export function shapesAsCanvas() {
356
+ return shapedAsCanvas();
357
+ }
184
358
  /**
185
359
  * The script (ISO 15924) `text` is shaped in, undefined for the one the
186
360
  * shaper reads from the text (the default script, for text with no
187
361
  * letter). The script in force; else, and for a word the layout measured
188
362
  * beside an ideograph, as the canvas shaped the text of a document in its
189
- * own language: Latin with no character above U+00FF, no script beside an
190
- * ideograph. For HarfBuzz; fontkit is told the same
363
+ * own language: the script of the letter a part with no letter was cut
364
+ * from beside ({@link withBesideLetter}), else Latin with no character
365
+ * above U+00FF (but no script for a piece with no letter of a string with
366
+ * right-to-left letters, {@link withinRightToLeftText}), no script beside
367
+ * an ideograph. For HarfBuzz; fontkit is told the same
191
368
  * ({@link shapeInCurrentLanguage}).
192
369
  */
193
370
  export function shapingScriptOf(text) {
@@ -195,7 +372,10 @@ export function shapingScriptOf(text) {
195
372
  return currentScript;
196
373
  if (currentScript === 'Hani')
197
374
  return undefined;
198
- return currentScript ?? (LATIN_1_RE.test(text) ? 'Latn' : undefined);
375
+ if (currentScript !== undefined)
376
+ return currentScript;
377
+ const beside = besideLetter !== undefined ? besideScriptOf(besideLetter) : undefined;
378
+ return beside ?? (LATIN_1_RE.test(text) && !unscripted(text) ? 'Latn' : undefined);
199
379
  }
200
380
  /** The key a cache of shaped `text` holds it under: the text itself with
201
381
  * no language and no script in force (as every cache did), else tagged
@@ -203,6 +383,10 @@ export function shapingScriptOf(text) {
203
383
  export function shapingKey(text) {
204
384
  if (currentScript !== undefined)
205
385
  return `${currentScript}\u0001${current?.key ?? ''}\u0000${text}`;
386
+ if (besideLetter !== undefined && shapedAsCanvas())
387
+ return `${besideScriptOf(besideLetter) ?? ''}\u0003${current?.key ?? ''}\u0000${text}`;
388
+ if (shapedAsCanvas() && unscripted(text) && LATIN_1_RE.test(text))
389
+ return `\u0004${current?.key ?? ''}\u0000${text}`;
206
390
  return current === undefined ? text : `${current.key}\u0000${text}`;
207
391
  }
208
392
  /** Text with a character of a script of its own (Han, kana, Latin…), from
@@ -253,6 +437,10 @@ function scriptEntry(table, scripts) {
253
437
  }
254
438
  return undefined;
255
439
  }
440
+ /** Whether a face names the script `tag` in its `GSUB` or its `GPOS`. */
441
+ function hasScript(face, tag) {
442
+ return [face.GSUB, face.GPOS].some((table) => table?.scriptList?.some((entry) => entry.tag === tag) ?? false);
443
+ }
256
444
  function hasLanguage(entry, tag) {
257
445
  const padded = tag.padEnd(4, ' ');
258
446
  return entry?.script?.langSysRecords?.some((record) => record.tag === padded) ?? false;
@@ -316,7 +504,8 @@ const shaped = new WeakSet();
316
504
  * Text of a document shaped in its own language is told the language
317
505
  * system of that language for the script it is shaped in
318
506
  * ({@link languageSystem}): the script in force (the default one for a
319
- * word measured beside an ideograph), else Latin for text with no
507
+ * word measured beside an ideograph), else the script of the letter a
508
+ * part with no letter was cut from beside, else Latin for text with no
320
509
  * character above U+00FF, else the one fontkit reads from the text
321
510
  * ({@link shapingScriptOf}).
322
511
  *
@@ -347,9 +536,13 @@ export function shapeInCurrentLanguage(font) {
347
536
  const scriptTag = script ?? (typeof text === 'string' && !STRONG_SCRIPT_RE.test(text) ? 'hani' : undefined);
348
537
  return layout(text, features, scriptTag, lang, direction);
349
538
  }
539
+ // A part with no letter, in the script of the letter it was cut from
540
+ // beside: the first of that script's tags the font has.
541
+ const beside = inForce === undefined && script === undefined && besideLetter !== undefined ? scriptsOfText(layout, String.fromCodePoint(besideLetter)) : NO_SCRIPT;
542
+ const besideTag = beside.find((tag) => hasScript(face, tag)) ?? beside[0];
350
543
  // `DFLT`: the default script, which fontkit also takes for a script
351
544
  // the font lacks.
352
- const scriptTag = inForce === 'hani' ? 'DFLT' : inForce ?? script ?? (LATIN_1_RE.test(text) ? 'latn' : undefined);
545
+ const scriptTag = inForce === 'hani' ? 'DFLT' : inForce ?? script ?? besideTag ?? (LATIN_1_RE.test(text) && !unscripted(text) ? 'latn' : undefined);
353
546
  const system = languageSystem(face, scriptTag !== undefined ? [scriptTag] : scriptsOfText(layout, text), state);
354
547
  return layout(text, features, scriptTag, system, inForce !== undefined ? direction ?? 'ltr' : direction);
355
548
  };
@@ -1 +1 @@
1
- {"version":3,"file":"shapingLanguage.js","sourceRoot":"","sources":["../src/shapingLanguage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shapingLanguage.js","sourceRoot":"","sources":["../src/shapingLanguage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * The characters a file of a face answers for: the `unicode-range` of its
3
+ * `@font-face` rule (CSS Fonts 4 §4.5), as a font provider hands it with
4
+ * the file (`PdfFontFile`, postext #770).
5
+ */
6
+ /** The code points of a range, as intervals from low to high that neither
7
+ * overlap nor touch. */
8
+ export type CodePointRanges = ReadonlyArray<readonly [number, number]>;
9
+ /**
10
+ * A `unicode-range` value (`U+0000-00FF, U+0131, U+4E??`) as intervals.
11
+ * Undefined for a value a browser would not read (a part that is no
12
+ * range, a range that ends before it starts or leaves Unicode): the
13
+ * descriptor is then dropped and the rule answers for every character,
14
+ * as one written without it.
15
+ */
16
+ export declare function parseUnicodeRange(value: string): CodePointRanges | undefined;
17
+ /** Whether `ranges` ({@link parseUnicodeRange}) hold the code point `cp`. */
18
+ export declare function rangesHold(ranges: CodePointRanges, cp: number): boolean;
19
+ //# sourceMappingURL=unicodeRange.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unicodeRange.d.ts","sourceRoot":"","sources":["../src/unicodeRange.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;yBACyB;AACzB,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAMvE;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CA6B5E;AAED,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAWvE"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * The characters a file of a face answers for: the `unicode-range` of its
3
+ * `@font-face` rule (CSS Fonts 4 §4.5), as a font provider hands it with
4
+ * the file (`PdfFontFile`, postext #770).
5
+ */
6
+ const MAX_CODE_POINT = 0x10ffff;
7
+ const INTERVAL_RE = /^u\+([0-9a-f]{1,6})(?:-([0-9a-f]{1,6}))?$/i;
8
+ const WILDCARD_RE = /^u\+([0-9a-f]{0,5})(\?{1,6})$/i;
9
+ /**
10
+ * A `unicode-range` value (`U+0000-00FF, U+0131, U+4E??`) as intervals.
11
+ * Undefined for a value a browser would not read (a part that is no
12
+ * range, a range that ends before it starts or leaves Unicode): the
13
+ * descriptor is then dropped and the rule answers for every character,
14
+ * as one written without it.
15
+ */
16
+ export function parseUnicodeRange(value) {
17
+ const found = [];
18
+ for (const raw of value.split(',')) {
19
+ const part = raw.trim();
20
+ const interval = INTERVAL_RE.exec(part);
21
+ const wildcard = interval ? null : WILDCARD_RE.exec(part);
22
+ let lo;
23
+ let hi;
24
+ if (interval) {
25
+ lo = parseInt(interval[1], 16);
26
+ hi = interval[2] === undefined ? lo : parseInt(interval[2], 16);
27
+ }
28
+ else if (wildcard && wildcard[1].length + wildcard[2].length <= 6) {
29
+ lo = parseInt(wildcard[1] + '0'.repeat(wildcard[2].length), 16);
30
+ hi = parseInt(wildcard[1] + 'f'.repeat(wildcard[2].length), 16);
31
+ }
32
+ else {
33
+ return undefined;
34
+ }
35
+ if (lo > hi || hi > MAX_CODE_POINT)
36
+ return undefined;
37
+ found.push([lo, hi]);
38
+ }
39
+ if (found.length === 0)
40
+ return undefined;
41
+ found.sort((a, b) => a[0] - b[0]);
42
+ const merged = [];
43
+ for (const [lo, hi] of found) {
44
+ const last = merged[merged.length - 1];
45
+ if (last && lo <= last[1] + 1)
46
+ last[1] = Math.max(last[1], hi);
47
+ else
48
+ merged.push([lo, hi]);
49
+ }
50
+ return merged;
51
+ }
52
+ /** Whether `ranges` ({@link parseUnicodeRange}) hold the code point `cp`. */
53
+ export function rangesHold(ranges, cp) {
54
+ let lo = 0;
55
+ let hi = ranges.length - 1;
56
+ while (lo <= hi) {
57
+ const mid = (lo + hi) >> 1;
58
+ const range = ranges[mid];
59
+ if (cp < range[0])
60
+ hi = mid - 1;
61
+ else if (cp > range[1])
62
+ lo = mid + 1;
63
+ else
64
+ return true;
65
+ }
66
+ return false;
67
+ }
68
+ //# sourceMappingURL=unicodeRange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unicodeRange.js","sourceRoot":"","sources":["../src/unicodeRange.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,cAAc,GAAG,QAAQ,CAAC;AAChC,MAAM,WAAW,GAAG,4CAA4C,CAAC;AACjE,MAAM,WAAW,GAAG,gCAAgC,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,EAAU,CAAC;QACf,IAAI,EAAU,CAAC;QACf,IAAI,QAAQ,EAAE,CAAC;YACb,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;YAChC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClE,CAAC;aAAM,IAAI,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAE,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACtE,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAClE,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,cAAc;YAAE,OAAO,SAAS,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvC,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;;YAC1D,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,UAAU,CAAC,MAAuB,EAAE,EAAU;IAC5D,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAE,CAAC;QAC3B,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;YAAE,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;aAC3B,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;YAAE,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;;YAChC,OAAO,IAAI,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { VDTDocument } from 'postext';
2
- import type { PdfFontProvider } from '../fontCache';
2
+ import { type PdfFontProvider } from '../fontCache';
3
3
  import type { RenderToPdfOptions } from '../pdf-backend';
4
4
  import { type SvgRasterizer } from '../pdf-backend/renderResourceBlock';
5
5
  export type { PdfWarning, PdfFontWarning, PdfFontFallbackWarning, PdfMissingGlyphWarning, PdfVariableFontWarning, PdfCffEmbeddedWholeWarning, RenderProgress, } from '../pdf-backend';
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/worker/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAG7F,YAAY,EACV,UAAU,EACV,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,EAC1B,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,kBAAkB,EAAE,eAAe,GAAG,cAAc,CAAC;IACxG;oCACgC;IAChC,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC;sBACkB;IAClB,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,qEAAqE;IACrE,YAAY,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B;;;kEAG8D;IAC9D,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,EAAE,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChG,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC;sBACkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAQD,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,eAAe,CA8HjF"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/worker/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAG7F,YAAY,EACV,UAAU,EACV,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,EAC1B,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,kBAAkB,EAAE,eAAe,GAAG,cAAc,CAAC;IACxG;oCACgC;IAChC,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC;sBACkB;IAClB,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,qEAAqE;IACrE,YAAY,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B;;;kEAG8D;IAC9D,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,EAAE,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChG,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC;sBACkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAQD,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,eAAe,CAgIjF"}
@@ -1,3 +1,4 @@
1
+ import { declarationOf } from '../fontCache';
1
2
  import { sourceBase } from '../harfbuzz';
2
3
  import { rasterizeSvgWithDom } from '../pdf-backend/renderResourceBlock';
3
4
  export function createPdfWorker(options) {
@@ -19,10 +20,12 @@ export function createPdfWorker(options) {
19
20
  const answer = async (askId, job) => {
20
21
  try {
21
22
  const bytes = await job();
22
- // Copies: the provider may keep the originals in a cache.
23
+ // Copies: the provider may keep the originals in a cache. What a
24
+ // font file says of itself goes beside them, since a copy drops it.
23
25
  const copy = Array.isArray(bytes) ? bytes.map((b) => b.slice()) : bytes ? bytes.slice() : null;
24
26
  const buffers = Array.isArray(copy) ? copy.map((b) => b.buffer) : copy ? [copy.buffer] : undefined;
25
- send({ kind: 'answer', askId, bytes: copy }, buffers);
27
+ const declared = (Array.isArray(bytes) ? bytes : bytes ? [bytes] : []).map((b) => declarationOf(b) ?? null);
28
+ send({ kind: 'answer', askId, bytes: copy, ...(declared.some((d) => d !== null) ? { declared } : {}) }, buffers);
26
29
  }
27
30
  catch (err) {
28
31
  send({ kind: 'answer', askId, bytes: null, error: err instanceof Error ? err.message : String(err) });
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/worker/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/worker/client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  /// <reference lib="webworker" />
2
2
  import { renderToPdf } from '../pdf-backend';
3
+ import { declaredFontFile } from '../fontCache';
3
4
  const ctx = self;
4
5
  function post(msg, transfer) {
5
6
  if (transfer && transfer.length > 0)
@@ -27,6 +28,12 @@ ctx.addEventListener('message', async (event) => {
27
28
  asks.delete(msg.askId);
28
29
  if (msg.error)
29
30
  pending.reject(new Error(msg.error));
31
+ else if (msg.declared) {
32
+ // Each file takes back what it said of itself on the host.
33
+ const declared = msg.declared;
34
+ const files = (Array.isArray(msg.bytes) ? msg.bytes : msg.bytes ? [msg.bytes] : []).map((bytes, i) => (declared[i] ? declaredFontFile(bytes, declared[i]) : bytes));
35
+ pending.resolve(Array.isArray(msg.bytes) ? files : files[0] ?? null);
36
+ }
30
37
  else
31
38
  pending.resolve(msg.bytes);
32
39
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"pdf.worker.js","sourceRoot":"","sources":["../../src/worker/pdf.worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pdf.worker.js","sourceRoot":"","sources":["../../src/worker/pdf.worker.ts"],"names":[],"mappings":"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"}