postext-pdf 1.8.5 → 1.9.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 (145) hide show
  1. package/README.md +1 -1
  2. package/dist/__tests__/accessibility.test.js +44 -0
  3. package/dist/__tests__/accessibility.test.js.map +1 -1
  4. package/dist/__tests__/chinesePageLabels.test.d.ts +2 -0
  5. package/dist/__tests__/chinesePageLabels.test.d.ts.map +1 -0
  6. package/dist/__tests__/chinesePageLabels.test.js +58 -0
  7. package/dist/__tests__/chinesePageLabels.test.js.map +1 -0
  8. package/dist/__tests__/cjkAnnotations.test.d.ts +2 -0
  9. package/dist/__tests__/cjkAnnotations.test.d.ts.map +1 -0
  10. package/dist/__tests__/cjkAnnotations.test.js +83 -0
  11. package/dist/__tests__/cjkAnnotations.test.js.map +1 -0
  12. package/dist/__tests__/cjkDashRule.test.d.ts +2 -0
  13. package/dist/__tests__/cjkDashRule.test.d.ts.map +1 -0
  14. package/dist/__tests__/cjkDashRule.test.js +101 -0
  15. package/dist/__tests__/cjkDashRule.test.js.map +1 -0
  16. package/dist/__tests__/cjkFontFiles.test.d.ts +2 -0
  17. package/dist/__tests__/cjkFontFiles.test.d.ts.map +1 -0
  18. package/dist/__tests__/cjkFontFiles.test.js +302 -0
  19. package/dist/__tests__/cjkFontFiles.test.js.map +1 -0
  20. package/dist/__tests__/cjkGrid.test.d.ts +2 -0
  21. package/dist/__tests__/cjkGrid.test.d.ts.map +1 -0
  22. package/dist/__tests__/cjkGrid.test.js +57 -0
  23. package/dist/__tests__/cjkGrid.test.js.map +1 -0
  24. package/dist/__tests__/cjkPunctuation.test.d.ts +2 -0
  25. package/dist/__tests__/cjkPunctuation.test.d.ts.map +1 -0
  26. package/dist/__tests__/cjkPunctuation.test.js +143 -0
  27. package/dist/__tests__/cjkPunctuation.test.js.map +1 -0
  28. package/dist/__tests__/cjkTracking.test.d.ts +2 -0
  29. package/dist/__tests__/cjkTracking.test.d.ts.map +1 -0
  30. package/dist/__tests__/cjkTracking.test.js +100 -0
  31. package/dist/__tests__/cjkTracking.test.js.map +1 -0
  32. package/dist/__tests__/documentLanguage.test.js +13 -3
  33. package/dist/__tests__/documentLanguage.test.js.map +1 -1
  34. package/dist/__tests__/fallbackSpaces.test.js +49 -0
  35. package/dist/__tests__/fallbackSpaces.test.js.map +1 -1
  36. package/dist/__tests__/outlineTitles.test.js +87 -0
  37. package/dist/__tests__/outlineTitles.test.js.map +1 -1
  38. package/dist/__tests__/pdfWorker.test.js +17 -0
  39. package/dist/__tests__/pdfWorker.test.js.map +1 -1
  40. package/dist/__tests__/renderOptionsDocs.test.d.ts +2 -0
  41. package/dist/__tests__/renderOptionsDocs.test.d.ts.map +1 -0
  42. package/dist/__tests__/renderOptionsDocs.test.js +32 -0
  43. package/dist/__tests__/renderOptionsDocs.test.js.map +1 -0
  44. package/dist/__tests__/rightBinding.test.d.ts +2 -0
  45. package/dist/__tests__/rightBinding.test.d.ts.map +1 -0
  46. package/dist/__tests__/rightBinding.test.js +112 -0
  47. package/dist/__tests__/rightBinding.test.js.map +1 -0
  48. package/dist/__tests__/verticalDesignImage.test.d.ts +2 -0
  49. package/dist/__tests__/verticalDesignImage.test.d.ts.map +1 -0
  50. package/dist/__tests__/verticalDesignImage.test.js +152 -0
  51. package/dist/__tests__/verticalDesignImage.test.js.map +1 -0
  52. package/dist/__tests__/verticalText.test.d.ts +2 -0
  53. package/dist/__tests__/verticalText.test.d.ts.map +1 -0
  54. package/dist/__tests__/verticalText.test.js +380 -0
  55. package/dist/__tests__/verticalText.test.js.map +1 -0
  56. package/dist/faceFiles.d.ts +70 -0
  57. package/dist/faceFiles.d.ts.map +1 -0
  58. package/dist/faceFiles.js +154 -0
  59. package/dist/faceFiles.js.map +1 -0
  60. package/dist/fontCache.d.ts +101 -7
  61. package/dist/fontCache.d.ts.map +1 -1
  62. package/dist/fontCache.js +178 -26
  63. package/dist/fontCache.js.map +1 -1
  64. package/dist/fontFamilies.d.ts +12 -0
  65. package/dist/fontFamilies.d.ts.map +1 -0
  66. package/dist/fontFamilies.js +12 -0
  67. package/dist/fontFamilies.js.map +1 -0
  68. package/dist/index.d.ts +1 -1
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js.map +1 -1
  71. package/dist/pdf-backend/annotations.d.ts +29 -0
  72. package/dist/pdf-backend/annotations.d.ts.map +1 -0
  73. package/dist/pdf-backend/annotations.js +133 -0
  74. package/dist/pdf-backend/annotations.js.map +1 -0
  75. package/dist/pdf-backend/blockRender.d.ts.map +1 -1
  76. package/dist/pdf-backend/blockRender.js +160 -30
  77. package/dist/pdf-backend/blockRender.js.map +1 -1
  78. package/dist/pdf-backend/fallbackSpaces.d.ts +21 -2
  79. package/dist/pdf-backend/fallbackSpaces.d.ts.map +1 -1
  80. package/dist/pdf-backend/fallbackSpaces.js +43 -6
  81. package/dist/pdf-backend/fallbackSpaces.js.map +1 -1
  82. package/dist/pdf-backend/fontHelpers.d.ts +12 -0
  83. package/dist/pdf-backend/fontHelpers.d.ts.map +1 -1
  84. package/dist/pdf-backend/fontHelpers.js +49 -11
  85. package/dist/pdf-backend/fontHelpers.js.map +1 -1
  86. package/dist/pdf-backend/headerFooter.d.ts +8 -3
  87. package/dist/pdf-backend/headerFooter.d.ts.map +1 -1
  88. package/dist/pdf-backend/headerFooter.js +74 -16
  89. package/dist/pdf-backend/headerFooter.js.map +1 -1
  90. package/dist/pdf-backend/index.d.ts +74 -8
  91. package/dist/pdf-backend/index.d.ts.map +1 -1
  92. package/dist/pdf-backend/index.js +121 -25
  93. package/dist/pdf-backend/index.js.map +1 -1
  94. package/dist/pdf-backend/inkScale.d.ts +12 -0
  95. package/dist/pdf-backend/inkScale.d.ts.map +1 -0
  96. package/dist/pdf-backend/inkScale.js +16 -0
  97. package/dist/pdf-backend/inkScale.js.map +1 -0
  98. package/dist/pdf-backend/outlines.d.ts +12 -1
  99. package/dist/pdf-backend/outlines.d.ts.map +1 -1
  100. package/dist/pdf-backend/outlines.js +46 -16
  101. package/dist/pdf-backend/outlines.js.map +1 -1
  102. package/dist/pdf-backend/pageDecorations.d.ts +5 -1
  103. package/dist/pdf-backend/pageDecorations.d.ts.map +1 -1
  104. package/dist/pdf-backend/pageDecorations.js +22 -1
  105. package/dist/pdf-backend/pageDecorations.js.map +1 -1
  106. package/dist/pdf-backend/pageLabels.d.ts +3 -1
  107. package/dist/pdf-backend/pageLabels.d.ts.map +1 -1
  108. package/dist/pdf-backend/pageLabels.js +12 -6
  109. package/dist/pdf-backend/pageLabels.js.map +1 -1
  110. package/dist/pdf-backend/primitives.d.ts +153 -6
  111. package/dist/pdf-backend/primitives.d.ts.map +1 -1
  112. package/dist/pdf-backend/primitives.js +269 -28
  113. package/dist/pdf-backend/primitives.js.map +1 -1
  114. package/dist/pdf-backend/renderResourceBlock.d.ts +4 -0
  115. package/dist/pdf-backend/renderResourceBlock.d.ts.map +1 -1
  116. package/dist/pdf-backend/renderResourceBlock.js +105 -26
  117. package/dist/pdf-backend/renderResourceBlock.js.map +1 -1
  118. package/dist/pdf-backend/structureFlow.d.ts +5 -0
  119. package/dist/pdf-backend/structureFlow.d.ts.map +1 -1
  120. package/dist/pdf-backend/structureFlow.js +8 -0
  121. package/dist/pdf-backend/structureFlow.js.map +1 -1
  122. package/dist/pdf-backend/svgVector.d.ts.map +1 -1
  123. package/dist/pdf-backend/svgVector.js +13 -2
  124. package/dist/pdf-backend/svgVector.js.map +1 -1
  125. package/dist/pdf-backend/tagging.d.ts +8 -1
  126. package/dist/pdf-backend/tagging.d.ts.map +1 -1
  127. package/dist/pdf-backend/tagging.js +7 -1
  128. package/dist/pdf-backend/tagging.js.map +1 -1
  129. package/dist/pdf-backend/verticalText.d.ts +43 -0
  130. package/dist/pdf-backend/verticalText.d.ts.map +1 -0
  131. package/dist/pdf-backend/verticalText.js +284 -0
  132. package/dist/pdf-backend/verticalText.js.map +1 -0
  133. package/dist/verticalFonts.d.ts +75 -0
  134. package/dist/verticalFonts.d.ts.map +1 -0
  135. package/dist/verticalFonts.js +136 -0
  136. package/dist/verticalFonts.js.map +1 -0
  137. package/dist/worker/client.d.ts +1 -1
  138. package/dist/worker/client.d.ts.map +1 -1
  139. package/dist/worker/client.js +7 -5
  140. package/dist/worker/client.js.map +1 -1
  141. package/dist/worker/pdf.worker.js +8 -4
  142. package/dist/worker/pdf.worker.js.map +1 -1
  143. package/dist/worker/protocol.d.ts +10 -5
  144. package/dist/worker/protocol.d.ts.map +1 -1
  145. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verticalText.test.js","sourceRoot":"","sources":["../../src/__tests__/verticalText.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Faces made of several font files (issue #196).
3
+ *
4
+ * A font provider may answer a face with several files, each holding part
5
+ * of its characters: the numbered unicode-range slices Fontsource ships for
6
+ * Chinese, Japanese and Korean families (about a hundred files for Noto
7
+ * Serif SC), or a Latin family's `latin` and `latin-ext` files. The
8
+ * {@link FontCache} embeds each file as its own subset font and registers
9
+ * the list here under the face's first file, the `PDFFont` every renderer
10
+ * is handed. The text primitives then cut each run by the file that has a
11
+ * glyph for each character ({@link fileRuns}) and switch fonts inside one
12
+ * text object, so a line of Han with a Latin word paints from three or four
13
+ * slices and each slice keeps only the glyphs set in it.
14
+ *
15
+ * Characters a face lacks in every file are recorded as they are shaped
16
+ * ({@link noteMissingGlyphs}), for the `missingGlyph` warning.
17
+ */
18
+ import type { PDFFont } from 'pdf-lib';
19
+ /** The files of one face, in the order their glyphs are looked up. */
20
+ export declare class FaceFiles {
21
+ readonly files: PDFFont[];
22
+ private readonly faces;
23
+ /** First file holding each code point, or null for none. */
24
+ private readonly first;
25
+ constructor(files: readonly PDFFont[]);
26
+ /** Append a file (a slice fetched later); a file already listed is kept
27
+ * where it is. */
28
+ add(file: PDFFont): void;
29
+ /** Whether `file` has a glyph for `cp`. */
30
+ covers(file: PDFFont, cp: number): boolean;
31
+ /** The first file with a glyph for `cp`, or null when none has one. */
32
+ fileFor(cp: number): PDFFont | null;
33
+ }
34
+ /** Register the files of a face under its first file, the font the
35
+ * renderers are handed. A first file already registered (two faces the
36
+ * provider answered with the same files) keeps its list, which takes the
37
+ * new files too; the list in force is returned. */
38
+ export declare function registerFaceFiles(primary: PDFFont, files: readonly PDFFont[]): FaceFiles;
39
+ /** The files of the face whose first file is `font`, when it has several. */
40
+ export declare function faceFilesOf(font: PDFFont): FaceFiles | undefined;
41
+ /** A run of text and the file it is set in. */
42
+ export interface FileRun {
43
+ font: PDFFont;
44
+ text: string;
45
+ }
46
+ /**
47
+ * `text` cut into runs by the file of `font`'s face that has a glyph for
48
+ * each character; one run in `font` itself for a face of one file. A
49
+ * character stays in the run before it while that run's file covers it
50
+ * (every Fontsource slice holds the space, so spaces never cut a run), else
51
+ * it goes to the first file that does. A character no file covers, and an
52
+ * invisible one (a joiner, a variation selector), stays in the run before
53
+ * it: it is drawn (or dropped) as that file's fallback, and a printing one
54
+ * is reported as missing when shaped.
55
+ */
56
+ export declare function fileRuns(font: PDFFont, text: string): FileRun[];
57
+ /** `text`'s width at `size` (points), each run measured in its file. */
58
+ export declare function widthOfTextAtSize(font: PDFFont, text: string, size: number): number;
59
+ /** Record the characters of `text` that `font` has no glyph for (it draws
60
+ * them as `.notdef`). Called once per shaped text, from the caches of the
61
+ * text primitives. A character the fallbacks draw with another glyph of
62
+ * the face (U+2011 as a hyphen, see `fallbackSpaces.ts`) is not missing. */
63
+ export declare function noteMissingGlyphs(font: PDFFont, text: string): void;
64
+ /** The characters drawn in `font` that it has no glyph for, each with its
65
+ * place in the order every font's missing characters were first met. */
66
+ export declare function missingGlyphsOf(font: PDFFont): ReadonlyMap<number, number> | undefined;
67
+ /** Whether a face is missing `cp` in a way worth asking its provider for:
68
+ * a printing character. */
69
+ export declare function wantsGlyph(cp: number): boolean;
70
+ //# sourceMappingURL=faceFiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"faceFiles.d.ts","sourceRoot":"","sources":["../src/faceFiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAoBvC,sEAAsE;AACtE,qBAAa,SAAS;IACpB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgD;IACtE,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;gBAE/C,KAAK,EAAE,SAAS,OAAO,EAAE;IAKrC;uBACmB;IACnB,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAQxB,2CAA2C;IAC3C,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAI1C,uEAAuE;IACvE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;CAapC;AAID;;;oDAGoD;AACpD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CASxF;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAGhE;AAED,+CAA+C;AAC/C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAmB/D;AAED,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMnF;AAQD;;;6EAG6E;AAC7E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAanE;AAED;yEACyE;AACzE,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAEtF;AAED;4BAC4B;AAC5B,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE9C"}
@@ -0,0 +1,154 @@
1
+ import { isDefaultIgnorable, isFallbackHandled, substituteGlyph } from './pdf-backend/fallbackSpaces';
2
+ function coverageFace(font) {
3
+ const face = font.embedder?.font;
4
+ return face && typeof face.hasGlyphForCodePoint === 'function' ? face : undefined;
5
+ }
6
+ /** Whether a font lacking `cp` does not count as missing it: controls, and
7
+ * the spaces and invisible characters the fallbacks paint without a glyph
8
+ * (see `fallbackSpaces.ts`). */
9
+ function neverMissing(cp) {
10
+ return cp < 0x20 || (cp >= 0x7f && cp < 0xa0) || isFallbackHandled(cp);
11
+ }
12
+ /** The files of one face, in the order their glyphs are looked up. */
13
+ export class FaceFiles {
14
+ files;
15
+ faces = new Map();
16
+ /** First file holding each code point, or null for none. */
17
+ first = new Map();
18
+ constructor(files) {
19
+ this.files = [];
20
+ for (const file of files)
21
+ this.add(file);
22
+ }
23
+ /** Append a file (a slice fetched later); a file already listed is kept
24
+ * where it is. */
25
+ add(file) {
26
+ if (this.faces.has(file))
27
+ return;
28
+ this.files.push(file);
29
+ this.faces.set(file, coverageFace(file));
30
+ // A code point no file had may be in this one.
31
+ for (const [cp, hit] of this.first)
32
+ if (hit === null)
33
+ this.first.delete(cp);
34
+ }
35
+ /** Whether `file` has a glyph for `cp`. */
36
+ covers(file, cp) {
37
+ return this.faces.get(file)?.hasGlyphForCodePoint(cp) ?? false;
38
+ }
39
+ /** The first file with a glyph for `cp`, or null when none has one. */
40
+ fileFor(cp) {
41
+ const hit = this.first.get(cp);
42
+ if (hit !== undefined)
43
+ return hit;
44
+ let found = null;
45
+ for (const file of this.files) {
46
+ if (this.covers(file, cp)) {
47
+ found = file;
48
+ break;
49
+ }
50
+ }
51
+ this.first.set(cp, found);
52
+ return found;
53
+ }
54
+ }
55
+ const faceFiles = new WeakMap();
56
+ /** Register the files of a face under its first file, the font the
57
+ * renderers are handed. A first file already registered (two faces the
58
+ * provider answered with the same files) keeps its list, which takes the
59
+ * new files too; the list in force is returned. */
60
+ export function registerFaceFiles(primary, files) {
61
+ const known = faceFiles.get(primary);
62
+ if (known) {
63
+ for (const file of files)
64
+ known.add(file);
65
+ return known;
66
+ }
67
+ const list = new FaceFiles([primary, ...files]);
68
+ faceFiles.set(primary, list);
69
+ return list;
70
+ }
71
+ /** The files of the face whose first file is `font`, when it has several. */
72
+ export function faceFilesOf(font) {
73
+ const list = faceFiles.get(font);
74
+ return list && list.files.length > 1 ? list : undefined;
75
+ }
76
+ /**
77
+ * `text` cut into runs by the file of `font`'s face that has a glyph for
78
+ * each character; one run in `font` itself for a face of one file. A
79
+ * character stays in the run before it while that run's file covers it
80
+ * (every Fontsource slice holds the space, so spaces never cut a run), else
81
+ * it goes to the first file that does. A character no file covers, and an
82
+ * invisible one (a joiner, a variation selector), stays in the run before
83
+ * it: it is drawn (or dropped) as that file's fallback, and a printing one
84
+ * is reported as missing when shaped.
85
+ */
86
+ export function fileRuns(font, text) {
87
+ const list = faceFilesOf(font);
88
+ if (!list)
89
+ return [{ font, text }];
90
+ const runs = [];
91
+ let current;
92
+ for (const ch of text) {
93
+ const cp = ch.codePointAt(0);
94
+ let file = current?.font;
95
+ if (!file || (!list.covers(file, cp) && !isDefaultIgnorable(cp))) {
96
+ file = list.fileFor(cp) ?? current?.font ?? font;
97
+ }
98
+ if (current && current.font === file) {
99
+ current.text += ch;
100
+ }
101
+ else {
102
+ current = { font: file, text: ch };
103
+ runs.push(current);
104
+ }
105
+ }
106
+ return runs.length > 0 ? runs : [{ font, text }];
107
+ }
108
+ /** `text`'s width at `size` (points), each run measured in its file. */
109
+ export function widthOfTextAtSize(font, text, size) {
110
+ const runs = fileRuns(font, text);
111
+ if (runs.length === 1)
112
+ return runs[0].font.widthOfTextAtSize(runs[0].text, size);
113
+ let width = 0;
114
+ for (const run of runs)
115
+ width += run.font.widthOfTextAtSize(run.text, size);
116
+ return width;
117
+ }
118
+ /** Characters each font lacks, with the order they were first met in:
119
+ * one count for every font, so the characters a face lacks in several of
120
+ * its files still sort in the order the pages set them. */
121
+ const missingByFont = new WeakMap();
122
+ let missingSeq = 0;
123
+ /** Record the characters of `text` that `font` has no glyph for (it draws
124
+ * them as `.notdef`). Called once per shaped text, from the caches of the
125
+ * text primitives. A character the fallbacks draw with another glyph of
126
+ * the face (U+2011 as a hyphen, see `fallbackSpaces.ts`) is not missing. */
127
+ export function noteMissingGlyphs(font, text) {
128
+ const face = coverageFace(font);
129
+ if (!face)
130
+ return;
131
+ for (const ch of text) {
132
+ const cp = ch.codePointAt(0);
133
+ if (neverMissing(cp) || face.hasGlyphForCodePoint(cp) || substituteGlyph(face, cp) !== undefined)
134
+ continue;
135
+ let seen = missingByFont.get(font);
136
+ if (!seen) {
137
+ seen = new Map();
138
+ missingByFont.set(font, seen);
139
+ }
140
+ if (!seen.has(cp))
141
+ seen.set(cp, missingSeq++);
142
+ }
143
+ }
144
+ /** The characters drawn in `font` that it has no glyph for, each with its
145
+ * place in the order every font's missing characters were first met. */
146
+ export function missingGlyphsOf(font) {
147
+ return missingByFont.get(font);
148
+ }
149
+ /** Whether a face is missing `cp` in a way worth asking its provider for:
150
+ * a printing character. */
151
+ export function wantsGlyph(cp) {
152
+ return !neverMissing(cp);
153
+ }
154
+ //# sourceMappingURL=faceFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"faceFiles.js","sourceRoot":"","sources":["../src/faceFiles.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,59 @@ export declare function toUnicodeCmap(glyphs: Array<{
21
21
  * from the cmap glyphs plus those.
22
22
  */
23
23
  export declare function coverAllGlyphUnicode(font: PDFFont): void;
24
- export type PdfFontProvider = (family: string, weight: number, style: 'normal' | 'italic') => Promise<Uint8Array>;
24
+ /** What the pages set in a face, handed to the {@link PdfFontProvider}. */
25
+ export interface PdfFontRequest {
26
+ /** The characters (Unicode code points) the document sets in the face,
27
+ * collected from its pages before any is drawn. A provider serving a
28
+ * family as several files (Fontsource's unicode-range slices) returns
29
+ * the files that hold them; one serving a single file may ignore it.
30
+ * May be empty when the render cannot tell (a face asked for with no
31
+ * text yet). When the same face is asked for again, it lists only the
32
+ * characters the files already given lack. */
33
+ codePoints: ReadonlySet<number>;
34
+ }
35
+ /**
36
+ * The bytes of a face (TrueType, or CFF-flavoured OpenType): one file, or
37
+ * several that together make the face — each holding part of its
38
+ * characters, like the numbered unicode-range slices Fontsource ships for
39
+ * Chinese, Japanese and Korean families. Each file is embedded as its own
40
+ * subset font and a character is drawn from the first file, in the order
41
+ * given, that has a glyph for it. Reject (throw) for a face the provider
42
+ * cannot supply: another cut of the family is set in its place
43
+ * (`fontFallback`).
44
+ */
45
+ export type PdfFontProvider = (family: string, weight: number, style: 'normal' | 'italic', request?: PdfFontRequest) => Promise<Uint8Array | Uint8Array[]>;
46
+ /** A face some characters of which no file of it has a glyph for; the PDF
47
+ * draws them as the font's `.notdef` glyph. */
48
+ export interface FontMissingGlyphs {
49
+ family: string;
50
+ weight: number;
51
+ style: 'normal' | 'italic';
52
+ /** The characters, in the order the pages first set them. */
53
+ characters: string[];
54
+ }
55
+ /** A problem with a face's file the render works around: a variable font
56
+ * asked for at a weight other than its default instance (pdf-lib embeds
57
+ * that instance, so the text prints at the default weight), or a CFF
58
+ * face larger than the limit embedded whole (pdf-lib cannot subset CFF
59
+ * outlines reliably). */
60
+ export type FontFileIssue = {
61
+ kind: 'variableFontDefaultInstance';
62
+ family: string;
63
+ weight: number;
64
+ style: 'normal' | 'italic';
65
+ defaultWeight: number;
66
+ } | {
67
+ kind: 'cffEmbeddedWhole';
68
+ family: string;
69
+ weight: number;
70
+ style: 'normal' | 'italic';
71
+ bytes: number;
72
+ };
73
+ /** Size from which a CFF face embedded whole is reported: 2 MB, about ten
74
+ * times a Latin text face, and a fraction of a CJK one (Source Han Serif
75
+ * is 8 to 25 MB a weight). */
76
+ export declare const CFF_WHOLE_WARN_BYTES: number;
25
77
  /** A face the document asked for, and the face of the same family set in
26
78
  * its place because the provider rejected it (see
27
79
  * {@link FontCache.preloadFontStrings}). */
@@ -56,6 +108,16 @@ export declare function cssWeightOrder(desired: number, weights: readonly number
56
108
  * family shipping only 400 and 700 takes a 600 as 700; one shipping a
57
109
  * single cut sets everything in it. */
58
110
  export declare function fallbackFaces(spec: FaceSpec): FaceSpec[];
111
+ export interface FontCacheOptions {
112
+ /** A face the provider rejected and the face set in its place. */
113
+ onFallback?: (fallback: FontFallback) => void;
114
+ /** A variable font asked for at another weight, or a large CFF face
115
+ * embedded whole (see {@link FontFileIssue}). */
116
+ onFileIssue?: (issue: FontFileIssue) => void;
117
+ /** Size from which a CFF face embedded whole is reported
118
+ * ({@link CFF_WHOLE_WARN_BYTES} by default). */
119
+ cffWarnBytes?: number;
120
+ }
59
121
  /**
60
122
  * Per-document mapping from `family|weight|style` to an embedded pdf-lib
61
123
  * font. Entries are populated up-front by `preload()` so that block-level
@@ -66,15 +128,22 @@ export declare function fallbackFaces(spec: FaceSpec): FaceSpec[];
66
128
  * is mapped to `null` and reported back via `missing()`. Faces the
67
129
  * provider answers with the same file share one embedded font, and
68
130
  * `dropUnusedFonts()` keeps the fonts no page draws with out of the file.
131
+ *
132
+ * A face the provider answers with several files (see
133
+ * {@link PdfFontProvider}) embeds each file as a subset of its own; `get()`
134
+ * hands out the first, and the text primitives draw each character from
135
+ * the file that has it (`faceFiles.ts`). Asked again for characters its
136
+ * files lack, such a face asks the provider for those only.
69
137
  */
70
138
  export declare class FontCache {
71
139
  private pdfDoc;
72
140
  private provider;
73
- private onFallback?;
74
141
  private map;
75
142
  private failed;
76
143
  /** One load per actual face, shared by every key that falls back to it. */
77
144
  private loads;
145
+ /** The faces loaded, in the order they loaded. */
146
+ private faces;
78
147
  private errors;
79
148
  /** Loaded faces by lower-cased family, for lookups nothing preloaded. */
80
149
  private byFamily;
@@ -84,13 +153,38 @@ export declare class FontCache {
84
153
  private byLength;
85
154
  /** Every font this cache embedded. */
86
155
  private embedded;
87
- constructor(pdfDoc: PDFDocument, provider: PdfFontProvider, onFallback?: ((fallback: FontFallback) => void) | undefined);
88
- /** Embed a font file, once per distinct content. */
156
+ private onFallback?;
157
+ private onFileIssue?;
158
+ private cffWarnBytes;
159
+ constructor(pdfDoc: PDFDocument, provider: PdfFontProvider, options?: FontCacheOptions | ((fallback: FontFallback) => void));
160
+ /** Embed a font file, once per distinct content. `spec` is the face it
161
+ * was first given for (named in a CFF size report). */
89
162
  private embedBytes;
90
- /** Fetch and embed one face, once. Null when the provider rejects it or
91
- * its bytes do not embed. */
163
+ /** Embed every file of a provider answer, in order, dropping repeats. */
164
+ private embedAnswer;
165
+ /** Fetch and embed one face, once; later calls with characters it was
166
+ * not asked for grow a sliced face (see {@link growFace}). Null when
167
+ * the provider rejects it or its bytes do not embed. */
92
168
  private loadFace;
93
- preloadFontStrings(fontStrings: Iterable<string | undefined>): Promise<void>;
169
+ /** Ask a sliced face's provider for the characters none of its files
170
+ * has that it was not asked for yet, and add the files it answers. A
171
+ * rejection leaves the face as it is (the characters are reported as
172
+ * missing when drawn). */
173
+ private growFace;
174
+ /** Report a variable font asked for at a weight other than its default
175
+ * instance, the one pdf-lib embeds. */
176
+ private checkVariableWeight;
177
+ /**
178
+ * Load the faces of the given font strings: a list, or a map from each
179
+ * font string to the characters the pages set in it (handed to the
180
+ * provider, see {@link PdfFontRequest}). A face already loaded is not
181
+ * asked again, except a sliced one for characters its files lack.
182
+ */
183
+ preloadFontStrings(fontStrings: Iterable<string | undefined> | ReadonlyMap<string, ReadonlySet<number>>): Promise<void>;
184
+ /** Every face some characters drawn in which none of its files has a
185
+ * glyph for, with those characters — call it once the pages are drawn.
186
+ * A file shared by several faces is reported with the first. */
187
+ missingGlyphs(): FontMissingGlyphs[];
94
188
  get(fontString: string): PDFFont | null;
95
189
  missing(): string[];
96
190
  /** Leave out of the file every font this cache embedded that no page
@@ -1 +1 @@
1
- {"version":3,"file":"fontCache.d.ts","sourceRoot":"","sources":["../src/fontCache.ts"],"names":[],"mappings":"AACA,OAAO,EAAuC,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AAwB9F;;;;;gEAKgE;AAChE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAavD;AAgBD,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAAG,MAAM,CAkBzF;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAyBxD;AAED,MAAM,MAAM,eAAe,GAAG,CAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,QAAQ,GAAG,QAAQ,KACvB,OAAO,CAAC,UAAU,CAAC,CAAC;AAEzB;;6CAE6C;AAC7C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC3B,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAA;KAAE,CAAC;IACzD,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,QAAQ;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC5B;AAKD;;;;;qDAKqD;AACrD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAWpF;AAED;;;;;;wCAMwC;AACxC,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAWxD;AAED;;;;;;;;;;GAUG;AACH,qBAAa,SAAS;IAgBlB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU,CAAC;IAjBrB,OAAO,CAAC,GAAG,CAAqC;IAChD,OAAO,CAAC,MAAM,CAAqB;IACnC,2EAA2E;IAC3E,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,MAAM,CAA6B;IAC3C,yEAAyE;IACzE,OAAO,CAAC,QAAQ,CAA0D;IAC1E;;qDAEiD;IACjD,OAAO,CAAC,QAAQ,CAA2E;IAC3F,sCAAsC;IACtC,OAAO,CAAC,QAAQ,CAAsB;gBAG5B,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,eAAe,EACzB,UAAU,CAAC,GAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,aAAA;IAGvD,oDAAoD;IACpD,OAAO,CAAC,UAAU;IA2BlB;kCAC8B;IAC9B,OAAO,CAAC,QAAQ;IAsBV,kBAAkB,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqClF,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAgBvC,OAAO,IAAI,MAAM,EAAE;IAInB;;;;4CAIwC;IACxC,eAAe,IAAI,IAAI;CAWxB"}
1
+ {"version":3,"file":"fontCache.d.ts","sourceRoot":"","sources":["../src/fontCache.ts"],"names":[],"mappings":"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"}