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
package/dist/faceFiles.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import { mirroredCodePoint } from 'postext';
2
2
  import { isDefaultIgnorable, isFallbackHandled, substituteGlyph } from './pdf-backend/fallbackSpaces';
3
- import { shapingScriptLetter } from './shapingLanguage';
3
+ import { besideLetterOf, shapesAsCanvas, shapingScript, shapingScriptLetter, withBesideLetter, withinWideText } from './shapingLanguage';
4
+ import { canvasWords } from './canvasWords';
5
+ import { parseUnicodeRange, rangesHold } from './unicodeRange';
4
6
  function coverageFace(font) {
5
7
  const face = font.embedder?.font;
6
8
  return face && typeof face.hasGlyphForCodePoint === 'function' ? face : undefined;
@@ -17,27 +19,63 @@ export class FaceFiles {
17
19
  faces = new Map();
18
20
  /** First file holding each code point, or null for none. */
19
21
  first = new Map();
20
- constructor(files) {
22
+ /** The range each file was given with; a file with none answers for
23
+ * every character. */
24
+ ranges = new Map();
25
+ /** Where each file is declared: the number it was given with, else its
26
+ * place in the list counted down, the first file being the one
27
+ * declared last. */
28
+ orders = new Map();
29
+ /** The files from the one declared last to the one declared first. */
30
+ lastDeclaredFirst;
31
+ /** The file a browser sets each code point in, or null for none. */
32
+ declared = new Map();
33
+ hasRanges = false;
34
+ constructor(files, declarations) {
21
35
  this.files = [];
22
36
  for (const file of files)
23
- this.add(file);
37
+ this.add(file, declarations?.get(file));
24
38
  }
25
- /** Append a file (a slice fetched later); a file already listed is kept
26
- * where it is. */
27
- add(file) {
39
+ /** Append a file (a slice fetched later), with what the provider says
40
+ * of it; a file already listed is kept where it is, as it was given. */
41
+ add(file, declaration) {
28
42
  if (this.faces.has(file))
29
43
  return;
44
+ this.orders.set(file, declaration?.order ?? -this.files.length);
30
45
  this.files.push(file);
31
46
  this.faces.set(file, coverageFace(file));
32
- // A code point no file had may be in this one.
47
+ const ranges = declaration?.unicodeRange === undefined ? undefined : parseUnicodeRange(declaration.unicodeRange);
48
+ if (ranges) {
49
+ this.ranges.set(file, ranges);
50
+ this.hasRanges = true;
51
+ }
52
+ // A code point no file had may be in this one, and a file declared
53
+ // later than the one that set a character takes it.
33
54
  for (const [cp, hit] of this.first)
34
55
  if (hit === null)
35
56
  this.first.delete(cp);
57
+ this.declared.clear();
58
+ this.lastDeclaredFirst = undefined;
59
+ }
60
+ /** Whether the provider gave a file of the face with its range: the
61
+ * face is then read as a browser reads its `@font-face` rules
62
+ * ({@link declaredFile}). */
63
+ get ranged() {
64
+ return this.hasRanges;
36
65
  }
37
66
  /** Whether `file` has a glyph for `cp`. */
38
67
  covers(file, cp) {
39
68
  return this.faces.get(file)?.hasGlyphForCodePoint(cp) ?? false;
40
69
  }
70
+ /** Whether `file` answers for `cp` as a browser reads it: its range
71
+ * holds the character and the file has a glyph for it. Chrome 154 skips
72
+ * a file whose range claims a character it has no glyph for and takes
73
+ * the next one down, and never draws a glyph a file has outside its
74
+ * range. */
75
+ answers(file, cp) {
76
+ const ranges = this.ranges.get(file);
77
+ return (ranges === undefined || rangesHold(ranges, cp)) && this.covers(file, cp);
78
+ }
41
79
  /** The first file with a glyph for `cp`, or null when none has one. */
42
80
  fileFor(cp) {
43
81
  const hit = this.first.get(cp);
@@ -53,20 +91,54 @@ export class FaceFiles {
53
91
  this.first.set(cp, found);
54
92
  return found;
55
93
  }
94
+ /** The files a browser tries in turn: the one declared last first.
95
+ * Files of one number keep the order they were given in. */
96
+ byDeclaration() {
97
+ if (!this.lastDeclaredFirst) {
98
+ const at = new Map(this.files.map((file, i) => [file, i]));
99
+ this.lastDeclaredFirst = [...this.files].sort((a, b) => this.orders.get(b) - this.orders.get(a) || at.get(a) - at.get(b));
100
+ }
101
+ return this.lastDeclaredFirst;
102
+ }
103
+ /**
104
+ * The file a browser sets `cp` in: the one declared last among those
105
+ * whose range holds it and that have a glyph for it. Null when none
106
+ * does: the browser then leaves the family, for the next one of the
107
+ * `font-family` list or a font of the system.
108
+ */
109
+ declaredFile(cp) {
110
+ const hit = this.declared.get(cp);
111
+ if (hit !== undefined)
112
+ return hit;
113
+ const found = this.byDeclaration().find((file) => this.answers(file, cp)) ?? null;
114
+ this.declared.set(cp, found);
115
+ return found;
116
+ }
117
+ /**
118
+ * The file a browser sets a letter and the marks on it in (`cps`, the
119
+ * letter first): the one declared last that answers for every one of
120
+ * them. With Source Serif 4 declared first and Noto Serif JP after it
121
+ * for `a` alone, Chrome sets `a` in the second (557 thousandths) and
122
+ * `a` + U+0308 whole in the first (541). Null when no file sets them
123
+ * all.
124
+ */
125
+ declaredFileOfAll(cps) {
126
+ return this.byDeclaration().find((file) => cps.every((cp) => this.answers(file, cp))) ?? null;
127
+ }
56
128
  }
57
129
  const faceFiles = new WeakMap();
58
130
  /** Register the files of a face under its first file, the font the
59
131
  * renderers are handed. A first file already registered (two faces the
60
132
  * provider answered with the same files) keeps its list, which takes the
61
133
  * new files too; the list in force is returned. */
62
- export function registerFaceFiles(primary, files) {
134
+ export function registerFaceFiles(primary, files, declarations) {
63
135
  const known = faceFiles.get(primary);
64
136
  if (known) {
65
137
  for (const file of files)
66
- known.add(file);
138
+ known.add(file, declarations?.get(file));
67
139
  return known;
68
140
  }
69
- const list = new FaceFiles([primary, ...files]);
141
+ const list = new FaceFiles([primary, ...files], declarations);
70
142
  faceFiles.set(primary, list);
71
143
  return list;
72
144
  }
@@ -108,11 +180,22 @@ export function faceFilesOf(font) {
108
180
  * Latin form for it. A word the file cannot set whole (the `(` of an
109
181
  * Arabic sentence, whose mirror only the `latin` file holds) is cut as
110
182
  * any other text.
183
+ *
184
+ * A run with no letter, cut out of text that has one (the `.»` of
185
+ * `خالة.»`, which the `latin` file draws), says the letter whose script
186
+ * the browser shaped it in (`beside`, #764), in a document shaped in its
187
+ * own language.
188
+ *
189
+ * A face given with the ranges of its files is cut as a browser cuts it
190
+ * ({@link declaredRuns}, #770) in a document shaped in its own language,
191
+ * and none of the rules above that guess at the browser's file apply.
111
192
  */
112
193
  export function fileRuns(font, text, rtl = false) {
113
194
  const list = faceFilesOf(font);
114
195
  if (!list)
115
196
  return [{ font, text }];
197
+ if (setsAsDeclared(list))
198
+ return besideLetters(declaredRuns(list, font, text, rtl), text, font);
116
199
  const letter = shapingScriptLetter();
117
200
  if (letter !== undefined) {
118
201
  const file = list.fileFor(letter);
@@ -172,8 +255,186 @@ export function fileRuns(font, text, rtl = false) {
172
255
  else
173
256
  runs.push({ font, text: pending });
174
257
  }
258
+ return besideLetters(runs, text, font);
259
+ }
260
+ /** `runs`, the runs `text` was cut into, each saying the letter it was
261
+ * cut from beside when it has none; one run in `font` for no run. */
262
+ function besideLetters(runs, text, font) {
263
+ if (runs.length > 1) {
264
+ // The runs follow each other through the text.
265
+ let at = 0;
266
+ for (const run of runs) {
267
+ const beside = besideLetterOf(text, at, at + run.text.length);
268
+ if (beside !== undefined)
269
+ run.beside = beside;
270
+ at += run.text.length;
271
+ }
272
+ }
175
273
  return runs.length > 0 ? runs : [{ font, text }];
176
274
  }
275
+ /**
276
+ * Whether the text being painted takes each character from the file a
277
+ * browser takes it from: a face whose provider gave its files with their
278
+ * ranges, in a document shaped in its own language.
279
+ *
280
+ * The page chose the file of a character the same way whatever language
281
+ * it shaped the text in, but a document that keeps the host's language is
282
+ * shaped string by string, each run in the script it shows, as it always
283
+ * was, and prints the same bytes. Cut by the browser's files, its strings
284
+ * fall into more runs with no letter, which that shaping gives no script:
285
+ * in Noto Serif SC the space is another slice's than the letters and the
286
+ * digits, so `GB/T 15834` became `GB/T`, a space and `15834`, and the
287
+ * digits alone took the proportional forms of the default script, 0.80 pt
288
+ * short of the tabular ones the page measured in a Latin string (15.75
289
+ * pt, the Cookbook's Chinese official document). `renderToPdf` drops what
290
+ * the files say when no document of the render is shaped in its own
291
+ * language (`withBareFiles`); this is for a page of one that is not, in a
292
+ * render that has one.
293
+ */
294
+ function setsAsDeclared(list) {
295
+ return list.ranged && shapesAsCanvas();
296
+ }
297
+ /** A combining mark: it is set in the file of the letter it stands on. */
298
+ const MARK_RE = /^\p{M}$/u;
299
+ /**
300
+ * `text` cut into runs by the file a browser sets each character in, for
301
+ * a face given with the ranges of its files (postext #770). As measured
302
+ * in Chrome 154 (two files that draw the same letters at other widths,
303
+ * declared as one family, on a canvas in a page and in a worker):
304
+ *
305
+ * - a character is set in the file declared last among those whose range
306
+ * holds it: of two `FontFace` objects, the one added to the font set
307
+ * last, whichever was made or loaded first; of two `@font-face` rules,
308
+ * the later one in the document; and a `FontFace` added by script
309
+ * rather than any rule of a style sheet, whichever came first;
310
+ * - a file with no range answers for every character;
311
+ * - a file whose range claims a character it has no glyph for is passed
312
+ * over for the next one down, and a glyph a file has outside its range
313
+ * is never drawn;
314
+ * - nothing stays in a file because the character before it was set
315
+ * there: `Aa` with the capitals in one file is `A` from it and `a` from
316
+ * the other, 1269 thousandths, where either file alone gives 1253 or
317
+ * 1274. A space goes to the file whose range holds it, though every
318
+ * file has one;
319
+ * - a letter and the marks on it are set in one file, the one declared
320
+ * last that answers for them all. (Chrome also composes the pair where
321
+ * a file answers for the composed character: `o` + U+0304 is the `ō` of
322
+ * `latin-ext`. The PDF's shapers compose nothing, so here the pair goes
323
+ * to a file that has both.)
324
+ *
325
+ * So no character follows the one before it here, an opening bracket does
326
+ * not go with what it opens and a word shaped in a script is not looked up
327
+ * by a letter of that script: the browser did none of that. What stays is
328
+ * what the shapers need: a zero width joiner or non-joiner with the letter
329
+ * it joins, an invisible character in the run it stands in.
330
+ *
331
+ * A character no file answers for was drawn by the browser in another
332
+ * family; here it is set as in a face given without ranges: in the run
333
+ * before it when that file has a glyph, else in the first file that has
334
+ * one (its mirror's, in a right-to-left run), and reported as missing
335
+ * when none has.
336
+ */
337
+ function declaredRuns(list, font, text, rtl) {
338
+ const runs = [];
339
+ let current;
340
+ // Joining controls waiting for the letter after them.
341
+ let pending = '';
342
+ let previous = 0;
343
+ // The file of the letter whose marks follow, up to `wholeEnd`.
344
+ let whole = null;
345
+ let wholeEnd = 0;
346
+ const chars = [...text];
347
+ for (let at = 0; at < chars.length; at++) {
348
+ const ch = chars[at];
349
+ const cp = ch.codePointAt(0);
350
+ if (isJoiningControl(cp) && (!current || !joinsOnto(previous))) {
351
+ pending += ch;
352
+ continue;
353
+ }
354
+ let file;
355
+ if (at < wholeEnd) {
356
+ file = whole;
357
+ }
358
+ else if (current && isDefaultIgnorable(cp)) {
359
+ file = current.font;
360
+ }
361
+ else if (MARK_RE.test(ch)) {
362
+ // A mark whose letter no file sets with it: beside its letter when
363
+ // that file has a glyph for it.
364
+ file = current && list.covers(current.font, cp) ? current.font : list.declaredFile(cp);
365
+ }
366
+ else {
367
+ let end = at + 1;
368
+ while (end < chars.length && MARK_RE.test(chars[end]))
369
+ end++;
370
+ if (end > at + 1) {
371
+ whole = list.declaredFileOfAll(chars.slice(at, end).map((c) => c.codePointAt(0)));
372
+ wholeEnd = whole ? end : 0;
373
+ }
374
+ file = (at < wholeEnd ? whole : null) ?? list.declaredFile(cp);
375
+ }
376
+ if (!file) {
377
+ const mirror = rtl ? mirroredCodePoint(cp) : cp;
378
+ const shown = mirror !== cp && list.fileFor(mirror) ? mirror : cp;
379
+ file = current && (list.covers(current.font, shown) || isDefaultIgnorable(cp)) ? current.font : list.fileFor(shown) ?? current?.font ?? font;
380
+ }
381
+ if (current && current.font === file) {
382
+ current.text += pending + ch;
383
+ }
384
+ else {
385
+ current = { font: file, text: pending + ch };
386
+ runs.push(current);
387
+ }
388
+ pending = '';
389
+ previous = cp;
390
+ }
391
+ if (pending) {
392
+ if (current)
393
+ current.text += pending;
394
+ else
395
+ runs.push({ font, text: pending });
396
+ }
397
+ return runs;
398
+ }
399
+ /** A string a browser keeps in eight bits: no character above U+00FF. */
400
+ const LATIN_1_RE = /^[\u0000-\u00FF]*$/;
401
+ /**
402
+ * `text`, a string the canvas was handed whole (a line of a running head,
403
+ * a word of the body), cut into the runs it is shaped in: its words
404
+ * (`canvasWords.ts`, #770), each cut by file ({@link fileRuns}). The
405
+ * canvas shapes every word alone, so no kerned pair and no ligature
406
+ * crosses a space or stands between two CJK characters, and a word takes
407
+ * the script of its own letters: one with no letter, a space among them,
408
+ * has none in a string not kept in eight bits (`wide`).
409
+ *
410
+ * {@link fileRuns} itself, the string shaped whole as up to postext-pdf
411
+ * 1.29, for a string of one word, in a document that keeps the host's
412
+ * language, and with a script in force (#725: a word with no letter the
413
+ * layout measured in the script of its context).
414
+ */
415
+ export function wordRuns(font, text, rtl = false) {
416
+ if (!shapesAsCanvas() || shapingScript() !== undefined)
417
+ return fileRuns(font, text, rtl);
418
+ const words = canvasWords(text);
419
+ if (words.length === 1)
420
+ return fileRuns(font, text, rtl);
421
+ const wide = !LATIN_1_RE.test(text);
422
+ const runs = [];
423
+ for (const word of words) {
424
+ for (const run of fileRuns(font, word, rtl)) {
425
+ if (wide)
426
+ run.wide = true;
427
+ runs.push(run);
428
+ }
429
+ }
430
+ return runs;
431
+ }
432
+ /** Run `fn`, the shaping of `run` ({@link wordRuns}), with what the run
433
+ * says of its script in force: the letter it was cut from beside, and
434
+ * whether it is a word of a string not kept in eight bits. */
435
+ export function inRun(run, fn) {
436
+ return run.wide ? withinWideText(true, () => withBesideLetter(run.beside, fn)) : withBesideLetter(run.beside, fn);
437
+ }
177
438
  /** Opening brackets and initial quotation marks (`Ps`, `Pi`). */
178
439
  const OPENING_RE = /^[\p{Ps}\p{Pi}]$/u;
179
440
  /** The file the first character after a row of opening marks (from `from`)
@@ -1 +1 @@
1
- {"version":3,"file":"faceFiles.js","sourceRoot":"","sources":["../src/faceFiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"faceFiles.js","sourceRoot":"","sources":["../src/faceFiles.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { cssWeightOrder } from 'postext';
2
2
  import { type PDFDocument, type PDFFont } from 'pdf-lib';
3
+ import { type FileDeclaration } from './faceFiles';
3
4
  /** pdf-lib builds a CID font's `W` (advance widths) array from the glyphs
4
5
  * reachable through the cmap, so a face embedded whole leaves every
5
6
  * GSUB-only glyph — the fi/fl ligatures, contextual alternates — at the
@@ -43,17 +44,92 @@ export interface PdfFontRequest {
43
44
  * characters the files already given lack. */
44
45
  codePoints: ReadonlySet<number>;
45
46
  }
47
+ /**
48
+ * One file of a face, which may say what its `@font-face` rule says of it:
49
+ * the bytes themselves, carrying two properties, for a provider that
50
+ * knows how the page that measured the layout declared the face (postext
51
+ * #770). A plain `Uint8Array` is a file that says nothing.
52
+ *
53
+ * A browser sets a character in the file declared last among those whose
54
+ * `unicode-range` holds it, and the files of a family overlap: Fontsource
55
+ * repeats the ASCII letters of a Japanese family in its `latin` file and
56
+ * in its numbered slices, the space in every file, the brackets in the
57
+ * `arabic` file of an Arabic one. Two characters set in two files do not
58
+ * kern, so the file decides the width the layout measured. A provider
59
+ * that hands every file of a face this way has each character drawn from
60
+ * the file the browser took it from.
61
+ *
62
+ * The properties ride on the bytes, so a described file is still the
63
+ * `Uint8Array` every reader of a provider expects (the engine's SVG
64
+ * inliner and `bundleFontProvider`, a postext-pdf released before this),
65
+ * and what does not look at them reads the file as before. A copy of the
66
+ * bytes does not carry them: {@link declaredFontFile} puts them on.
67
+ */
68
+ export type PdfFontFile = Uint8Array & {
69
+ /** The `unicode-range` of the file's rule, as CSS writes it
70
+ * (`U+0000-00FF,U+0131,U+4E??`). A file with none answers for every
71
+ * character, as a rule without the descriptor does. */
72
+ unicodeRange?: string;
73
+ /** Where the file is declared among the files of the face (one weight
74
+ * and style of the family): any number that grows with the order of
75
+ * the `@font-face` rules in the page, or of the calls to
76
+ * `document.fonts.add`; the file with the greatest is the one declared
77
+ * last. The same file keeps its number in every answer for the face.
78
+ * Files with none are read in the order given, the first being the
79
+ * one declared last. */
80
+ order?: number;
81
+ };
82
+ /** What a {@link PdfFontFile} says of itself. */
83
+ export type PdfFontFileDeclaration = FileDeclaration;
84
+ /**
85
+ * `bytes` as a file that says how the page declared it: a view of the
86
+ * same bytes (nothing is copied, and `bytes` itself is left as it is)
87
+ * carrying `unicodeRange` and `order` ({@link PdfFontFile}). A plain
88
+ * `Object.assign(bytes, { unicodeRange, order })` does as well where the
89
+ * bytes are the provider's own to mark.
90
+ */
91
+ export declare function declaredFontFile(bytes: Uint8Array, declaration: PdfFontFileDeclaration): PdfFontFile;
92
+ /** What `file` says of itself, when it says anything a browser would
93
+ * read: a range that is text, a place that is a number. */
94
+ export declare function declarationOf(file: PdfFontFile): PdfFontFileDeclaration | undefined;
46
95
  /**
47
96
  * The bytes of a face (TrueType, or CFF-flavoured OpenType): one file, or
48
97
  * several that together make the face — each holding part of its
49
98
  * characters, like the numbered unicode-range slices Fontsource ships for
50
99
  * Chinese, Japanese and Korean families. Each file is embedded as its own
51
- * subset font and a character is drawn from the first file, in the order
52
- * given, that has a glyph for it. Reject (throw) for a face the provider
53
- * cannot supply: another cut of the family is set in its place
54
- * (`fontFallback`).
100
+ * subset font.
101
+ *
102
+ * A character is drawn from the first file, in the order given, that has
103
+ * a glyph for it. When a file of the face comes with its range
104
+ * ({@link PdfFontFile}), a character is drawn from the file a browser
105
+ * takes it from: the one declared last among those whose range holds it
106
+ * and that have a glyph for it; a character no range holds is drawn from
107
+ * the first file with a glyph. So it is in a document shaped in its own
108
+ * language (`bodyText.shapingLanguage: 'document'`); one that keeps the
109
+ * host's language reads the files in the order given whatever they say,
110
+ * and prints as it did. A provider that describes its files therefore
111
+ * still lists them with the one declared last first.
112
+ *
113
+ * Reject (throw) for a face the provider cannot supply: another cut of
114
+ * the family is set in its place (`fontFallback`).
115
+ */
116
+ export type PdfFontProvider = (family: string, weight: number, style: 'normal' | 'italic', request?: PdfFontRequest) => Promise<PdfFontAnswer>;
117
+ /** What a {@link PdfFontProvider} answers a face with. */
118
+ export type PdfFontAnswer = PdfFontFile | PdfFontFile[];
119
+ /** The files of an answer. */
120
+ export declare function fontFilesOf(answer: PdfFontAnswer): PdfFontFile[];
121
+ /**
122
+ * `provider` answering with files that say nothing: what each says of
123
+ * itself is left off. For a render with no document shaped in its own
124
+ * language, which reads every face as it did before a file could say
125
+ * more (the first file with a glyph), and asks for the same characters.
55
126
  */
56
- export type PdfFontProvider = (family: string, weight: number, style: 'normal' | 'italic', request?: PdfFontRequest) => Promise<Uint8Array | Uint8Array[]>;
127
+ export declare function withBareFiles(provider: PdfFontProvider): PdfFontProvider;
128
+ /** The files of an answer from the one declared first to the one declared
129
+ * last, as a style sheet lists its rules (`PdfFontFile.order`; a file
130
+ * with no number takes its place in the answer, the first being the one
131
+ * declared last). */
132
+ export declare function inDeclarationOrder(files: readonly PdfFontFile[]): PdfFontFile[];
57
133
  /** A face some characters of which no file of it has a glyph for; the PDF
58
134
  * draws them as the font's `.notdef` glyph. */
59
135
  export interface FontMissingGlyphs {
@@ -137,8 +213,10 @@ export interface FontCacheOptions {
137
213
  * A face the provider answers with several files (see
138
214
  * {@link PdfFontProvider}) embeds each file as a subset of its own; `get()`
139
215
  * hands out the first, and the text primitives draw each character from
140
- * the file that has it (`faceFiles.ts`). Asked again for characters its
141
- * files lack, such a face asks the provider for those only.
216
+ * the file that has it, or from the file a browser takes it from when the
217
+ * provider says how the files are declared (`faceFiles.ts`). Asked again
218
+ * for characters its files lack, such a face asks the provider for those
219
+ * only.
142
220
  */
143
221
  export declare class FontCache {
144
222
  private pdfDoc;
@@ -165,16 +243,19 @@ export declare class FontCache {
165
243
  /** Embed a font file, once per distinct content. `spec` is the face it
166
244
  * was first given for (named in a CFF size report). */
167
245
  private embedBytes;
168
- /** Embed every file of a provider answer, in order, dropping repeats. */
246
+ /** Embed every file of a provider answer, in order, dropping repeats:
247
+ * the fonts, and what the provider says of each (the first time it
248
+ * gives a file). */
169
249
  private embedAnswer;
170
250
  /** Fetch and embed one face, once; later calls with characters it was
171
251
  * not asked for grow a sliced face (see {@link growFace}). Null when
172
252
  * the provider rejects it or its bytes do not embed. */
173
253
  private loadFace;
174
254
  /** Ask a sliced face's provider for the characters none of its files
175
- * has that it was not asked for yet, and add the files it answers. A
176
- * rejection leaves the face as it is (the characters are reported as
177
- * missing when drawn). */
255
+ * has that it was not asked for yet (every character it was not asked
256
+ * for, when its files came with their ranges), and add the files it
257
+ * answers. A rejection leaves the face as it is (the characters are
258
+ * reported as missing when drawn). */
178
259
  private growFace;
179
260
  /** Report a variable font asked for at a weight other than its default
180
261
  * instance, the one pdf-lib embeds. */
@@ -1 +1 @@
1
- {"version":3,"file":"fontCache.d.ts","sourceRoot":"","sources":["../src/fontCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fontCache.d.ts","sourceRoot":"","sources":["../src/fontCache.ts"],"names":[],"mappings":"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"}