pdf-parser.js 5.2.25 → 5.2.27

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 (149) hide show
  1. package/dist/afm-widths.cjs +1 -1
  2. package/dist/afm-widths.js +1 -1
  3. package/dist/annotations.d.cts +2 -2
  4. package/dist/annotations.d.ts +2 -2
  5. package/dist/attachments.d.cts +2 -2
  6. package/dist/attachments.d.ts +2 -2
  7. package/dist/builtin-encoding.cjs +1 -1
  8. package/dist/builtin-encoding.d.cts +2 -2
  9. package/dist/builtin-encoding.d.ts +2 -2
  10. package/dist/builtin-encoding.js +1 -1
  11. package/dist/cff-bounds.cjs +31 -21
  12. package/dist/cff-bounds.d.cts +1 -1
  13. package/dist/cff-bounds.d.ts +1 -1
  14. package/dist/cff-bounds.js +31 -21
  15. package/dist/cff.d.cts +1 -1
  16. package/dist/cff.d.ts +1 -1
  17. package/dist/cmap-table.d.cts +1 -1
  18. package/dist/cmap-table.d.ts +1 -1
  19. package/dist/cmap.d.cts +1 -1
  20. package/dist/cmap.d.ts +1 -1
  21. package/dist/content-read.d.cts +1 -1
  22. package/dist/content-read.d.ts +1 -1
  23. package/dist/content-write.cjs +19 -13
  24. package/dist/content-write.d.cts +3 -3
  25. package/dist/content-write.d.ts +3 -3
  26. package/dist/content-write.js +19 -13
  27. package/dist/document.cjs +17 -11
  28. package/dist/document.d.cts +5 -5
  29. package/dist/document.d.ts +5 -5
  30. package/dist/document.js +17 -11
  31. package/dist/{embedded-font-BRhZfEN2.d.ts → embedded-font-ByD7ZiQS.d.ts} +4 -4
  32. package/dist/{embedded-font-DJUn9kMH.d.cts → embedded-font-DgVBedw6.d.cts} +4 -4
  33. package/dist/embedded-font-write.d.cts +2 -2
  34. package/dist/embedded-font-write.d.ts +2 -2
  35. package/dist/embedded-font.cjs +1 -1
  36. package/dist/embedded-font.d.cts +1 -1
  37. package/dist/embedded-font.d.ts +1 -1
  38. package/dist/embedded-font.js +1 -1
  39. package/dist/encoding.cjs +1 -1
  40. package/dist/encoding.js +1 -1
  41. package/dist/encrypt-write.d.cts +3 -3
  42. package/dist/encrypt-write.d.ts +3 -3
  43. package/dist/encrypt.d.cts +3 -3
  44. package/dist/encrypt.d.ts +3 -3
  45. package/dist/filters.cjs +6 -6
  46. package/dist/filters.d.cts +1 -1
  47. package/dist/filters.d.ts +1 -1
  48. package/dist/filters.js +6 -6
  49. package/dist/font-read.cjs +1 -1
  50. package/dist/font-read.d.cts +3 -3
  51. package/dist/font-read.d.ts +3 -3
  52. package/dist/font-read.js +1 -1
  53. package/dist/font-registry.d.cts +3 -3
  54. package/dist/font-registry.d.ts +3 -3
  55. package/dist/form.cjs +13 -8
  56. package/dist/form.d.cts +2 -2
  57. package/dist/form.d.ts +2 -2
  58. package/dist/form.js +13 -8
  59. package/dist/gdef-table.d.cts +3 -3
  60. package/dist/gdef-table.d.ts +3 -3
  61. package/dist/{glyf-vMGtP1pb.d.ts → glyf-Bv1katwK.d.ts} +4 -4
  62. package/dist/{glyf-nXC-IDRW.d.cts → glyf-DFyknMrW.d.cts} +4 -4
  63. package/dist/{glyf-contours-OSdG6Edr.d.ts → glyf-contours-B1PsI9oA.d.ts} +2 -2
  64. package/dist/{glyf-contours-zRQbj-Yp.d.cts → glyf-contours-NHBpgks-.d.cts} +2 -2
  65. package/dist/glyf-contours.d.cts +1 -1
  66. package/dist/glyf-contours.d.ts +1 -1
  67. package/dist/glyf.d.cts +1 -1
  68. package/dist/glyf.d.ts +1 -1
  69. package/dist/gsub-table.cjs +13 -9
  70. package/dist/gsub-table.js +13 -9
  71. package/dist/hmtx-table.d.cts +1 -1
  72. package/dist/hmtx-table.d.ts +1 -1
  73. package/dist/image/jbig2-generic.cjs +2 -2
  74. package/dist/image/jbig2-generic.js +2 -2
  75. package/dist/image/jpeg2000-codestream.cjs +17 -8
  76. package/dist/image/jpeg2000-codestream.js +17 -8
  77. package/dist/image/jpeg2000-tagtree.cjs +1 -1
  78. package/dist/image/jpeg2000-tagtree.js +1 -1
  79. package/dist/images-read.d.cts +2 -2
  80. package/dist/images-read.d.ts +2 -2
  81. package/dist/index.cjs +1 -1
  82. package/dist/index.d.cts +1 -1
  83. package/dist/index.d.ts +1 -1
  84. package/dist/index.js +1 -1
  85. package/dist/interpret.cjs +31 -18
  86. package/dist/interpret.d.cts +5 -5
  87. package/dist/interpret.d.ts +5 -5
  88. package/dist/interpret.js +31 -18
  89. package/dist/math-content-write.cjs +3 -3
  90. package/dist/math-content-write.js +3 -3
  91. package/dist/math-font-write.d.cts +1 -1
  92. package/dist/math-font-write.d.ts +1 -1
  93. package/dist/math-font.d.cts +4 -4
  94. package/dist/math-font.d.ts +4 -4
  95. package/dist/measure.cjs +1 -1
  96. package/dist/measure.js +1 -1
  97. package/dist/names.cjs +7 -7
  98. package/dist/names.d.cts +2 -2
  99. package/dist/names.d.ts +2 -2
  100. package/dist/names.js +7 -7
  101. package/dist/navigation.cjs +6 -7
  102. package/dist/navigation.d.cts +5 -5
  103. package/dist/navigation.d.ts +5 -5
  104. package/dist/navigation.js +6 -7
  105. package/dist/{objects-B7HdMeWS.d.ts → objects-e2RS3-yT.d.cts} +3 -3
  106. package/dist/{objects-B7HdMeWS.d.cts → objects-e2RS3-yT.d.ts} +3 -3
  107. package/dist/objects.d.cts +1 -1
  108. package/dist/objects.d.ts +1 -1
  109. package/dist/optional-content.d.cts +2 -2
  110. package/dist/optional-content.d.ts +2 -2
  111. package/dist/ot-layout-common.cjs +18 -13
  112. package/dist/ot-layout-common.d.cts +2 -2
  113. package/dist/ot-layout-common.d.ts +2 -2
  114. package/dist/ot-layout-common.js +18 -13
  115. package/dist/parse.cjs +5 -0
  116. package/dist/parse.d.cts +3 -2
  117. package/dist/parse.d.ts +3 -2
  118. package/dist/parse.js +5 -1
  119. package/dist/predictors.d.cts +1 -1
  120. package/dist/predictors.d.ts +1 -1
  121. package/dist/raster.cjs +10 -40
  122. package/dist/raster.d.cts +11 -11
  123. package/dist/raster.d.ts +11 -11
  124. package/dist/raster.js +10 -40
  125. package/dist/read.cjs +12 -8
  126. package/dist/read.js +12 -8
  127. package/dist/serialize.d.cts +1 -1
  128. package/dist/serialize.d.ts +1 -1
  129. package/dist/sfnt-subset.d.cts +1 -1
  130. package/dist/sfnt-subset.d.ts +1 -1
  131. package/dist/structure.cjs +4 -4
  132. package/dist/structure.d.cts +2 -2
  133. package/dist/structure.d.ts +2 -2
  134. package/dist/structure.js +4 -4
  135. package/dist/text-layout.d.cts +1 -1
  136. package/dist/text-layout.d.ts +1 -1
  137. package/dist/tounicode.d.cts +1 -1
  138. package/dist/tounicode.d.ts +1 -1
  139. package/dist/winansi.cjs +1 -1
  140. package/dist/winansi.js +1 -1
  141. package/dist/write.cjs +4 -4
  142. package/dist/write.d.cts +1 -1
  143. package/dist/write.d.ts +1 -1
  144. package/dist/write.js +4 -4
  145. package/dist/xref.d.cts +1 -1
  146. package/dist/xref.d.ts +1 -1
  147. package/package.json +2 -2
  148. package/dist/{afm-widths-BTu0IDp2.cjs → afm-widths-BYiX2L9D.cjs} +1 -1
  149. package/dist/{afm-widths-De_QMWgC.js → afm-widths-blUDDjlI.js} +1 -1
package/dist/document.js CHANGED
@@ -153,19 +153,22 @@ function openPdfDocument(bytes, sink) {
153
153
  function pages() {
154
154
  const pagesRoot = resolveDict(dictGet(catalog, "Pages"));
155
155
  if (pagesRoot === void 0) return [];
156
- const result = [];
157
156
  originalLeaves.clear();
158
- walkPageTree(pagesRoot, {}, /* @__PURE__ */ new Set(), result);
157
+ const result = [];
158
+ for (const leaf of walkPageTree(pagesRoot, {}, /* @__PURE__ */ new Set())) {
159
+ originalLeaves.set(leaf.node, result.length);
160
+ result.push(leaf.page);
161
+ }
159
162
  return result;
160
163
  }
161
- function walkPageTree(node, inherited, visited, result) {
164
+ function walkPageTree(node, inherited, visited) {
162
165
  if (visited.has(node)) {
163
166
  sink({
164
167
  code: "pdf/page-tree-cycle",
165
168
  severity: "warning",
166
169
  message: "the page tree contains a cycle; stopping descent at the repeated node"
167
170
  });
168
- return;
171
+ return [];
169
172
  }
170
173
  visited.add(node);
171
174
  const merged = { ...inherited };
@@ -177,17 +180,20 @@ function openPdfDocument(bytes, sink) {
177
180
  if (kids === void 0) {
178
181
  const entries = new Map(node.entries);
179
182
  for (const key of INHERITABLE_PAGE_KEYS) if (!entries.has(key) && merged[key] !== void 0) entries.set(key, merged[key]);
180
- originalLeaves.set(node, result.length);
181
- result.push({
182
- kind: "dict",
183
- entries
184
- });
185
- return;
183
+ return [{
184
+ node,
185
+ page: {
186
+ kind: "dict",
187
+ entries
188
+ }
189
+ }];
186
190
  }
191
+ const leaves = [];
187
192
  for (const kid of kids) {
188
193
  const kidDict = resolveDict(kid);
189
- if (kidDict !== void 0) walkPageTree(kidDict, merged, visited, result);
194
+ if (kidDict !== void 0) for (const leaf of walkPageTree(kidDict, merged, visited)) leaves.push(leaf);
190
195
  }
196
+ return leaves;
191
197
  }
192
198
  function pageIndex(obj) {
193
199
  const dict = asDict(resolve(obj));
@@ -25,9 +25,9 @@ interface EmbeddedFace {
25
25
  readonly postScriptName: string;
26
26
  readonly numGlyphs: number;
27
27
  readonly metrics: EmbeddedFaceMetrics;
28
- glyphId(codePoint: number): number | undefined;
29
- glyphSpaceWidth(glyphId: number): number;
30
- kernGlyphSpace(leftGlyphId: number, rightGlyphId: number): number;
28
+ glyphId: (codePoint: number) => number | undefined;
29
+ glyphSpaceWidth: (glyphId: number) => number;
30
+ kernGlyphSpace: (leftGlyphId: number, rightGlyphId: number) => number;
31
31
  readonly gsubShaper: GsubShaper | undefined;
32
32
  }
33
33
  declare function loadEmbeddedFace(font: SfntFont): EmbeddedFace | undefined;
@@ -45,6 +45,6 @@ interface EmbeddedShow {
45
45
  readonly kerns: readonly EmbeddedKern[];
46
46
  }
47
47
  declare function encodeForShowEmbedded(text: string, face: EmbeddedFace): EmbeddedShow;
48
- declare function collectEmbeddedGlyphs(texts: Iterable<string>, face: EmbeddedFace): ReadonlyMap<number, readonly number[]>;
48
+ declare function collectEmbeddedGlyphs(texts: Readonly<Iterable<string>>, face: EmbeddedFace): ReadonlyMap<number, readonly number[]>;
49
49
  //#endregion
50
50
  export { EmbeddedShow as a, encodeForShowEmbedded as c, EmbeddedKern as i, loadEmbeddedFace as l, EmbeddedFaceMetrics as n, NOTDEF_GLYPH_ID as o, EmbeddedFaceSubstitution as r, collectEmbeddedGlyphs as s, EmbeddedFace as t };
@@ -25,9 +25,9 @@ interface EmbeddedFace {
25
25
  readonly postScriptName: string;
26
26
  readonly numGlyphs: number;
27
27
  readonly metrics: EmbeddedFaceMetrics;
28
- glyphId(codePoint: number): number | undefined;
29
- glyphSpaceWidth(glyphId: number): number;
30
- kernGlyphSpace(leftGlyphId: number, rightGlyphId: number): number;
28
+ glyphId: (codePoint: number) => number | undefined;
29
+ glyphSpaceWidth: (glyphId: number) => number;
30
+ kernGlyphSpace: (leftGlyphId: number, rightGlyphId: number) => number;
31
31
  readonly gsubShaper: GsubShaper | undefined;
32
32
  }
33
33
  declare function loadEmbeddedFace(font: SfntFont): EmbeddedFace | undefined;
@@ -45,6 +45,6 @@ interface EmbeddedShow {
45
45
  readonly kerns: readonly EmbeddedKern[];
46
46
  }
47
47
  declare function encodeForShowEmbedded(text: string, face: EmbeddedFace): EmbeddedShow;
48
- declare function collectEmbeddedGlyphs(texts: Iterable<string>, face: EmbeddedFace): ReadonlyMap<number, readonly number[]>;
48
+ declare function collectEmbeddedGlyphs(texts: Readonly<Iterable<string>>, face: EmbeddedFace): ReadonlyMap<number, readonly number[]>;
49
49
  //#endregion
50
50
  export { EmbeddedShow as a, encodeForShowEmbedded as c, EmbeddedKern as i, loadEmbeddedFace as l, EmbeddedFaceMetrics as n, NOTDEF_GLYPH_ID as o, EmbeddedFaceSubstitution as r, collectEmbeddedGlyphs as s, EmbeddedFace as t };
@@ -1,5 +1,5 @@
1
- import { n as PdfDict, r as PdfObject } from "./objects-B7HdMeWS.cjs";
2
- import { t as EmbeddedFace } from "./embedded-font-DJUn9kMH.cjs";
1
+ import { n as PdfDict, r as PdfObject } from "./objects-e2RS3-yT.cjs";
2
+ import { t as EmbeddedFace } from "./embedded-font-DgVBedw6.cjs";
3
3
  import { SfntSubsetResult } from "./sfnt-subset.cjs";
4
4
  //#region src/embedded-font-write.d.ts
5
5
  declare function embeddedSubsetTag(postScriptName: string, glyphIds: readonly number[]): string;
@@ -1,5 +1,5 @@
1
- import { n as PdfDict, r as PdfObject } from "./objects-B7HdMeWS.js";
2
- import { t as EmbeddedFace } from "./embedded-font-BRhZfEN2.js";
1
+ import { n as PdfDict, r as PdfObject } from "./objects-e2RS3-yT.js";
2
+ import { t as EmbeddedFace } from "./embedded-font-ByD7ZiQS.js";
3
3
  import { SfntSubsetResult } from "./sfnt-subset.js";
4
4
  //#region src/embedded-font-write.d.ts
5
5
  declare function embeddedSubsetTag(postScriptName: string, glyphIds: readonly number[]): string;
@@ -7,6 +7,7 @@ const require_gpos_table = require("./gpos-table.cjs");
7
7
  const require_gsub_table = require("./gsub-table.cjs");
8
8
  const require_hmtx_table = require("./hmtx-table.cjs");
9
9
  //#region src/embedded-font.ts
10
+ const LONG_HOR_METRIC_SIZE = 4;
10
11
  const GLYPH_SPACE_UNITS_PER_EM = 1e3;
11
12
  const NOTDEF_GLYPH_ID = 0;
12
13
  const CAP_HEIGHT_REFERENCE_CODE_POINT = 72;
@@ -97,7 +98,6 @@ const HHEA_ASCENDER_OFFSET = 4;
97
98
  const HHEA_DESCENDER_OFFSET = 6;
98
99
  const HHEA_LINE_GAP_OFFSET = 8;
99
100
  const HHEA_NUMBER_OF_HMETRICS_OFFSET = 34;
100
- const LONG_HOR_METRIC_SIZE = 4;
101
101
  function parseHhea(font) {
102
102
  const bytes = require_sfnt.sfntTableBytes(font, "hhea");
103
103
  if (bytes === void 0 || !require_sfnt.hasBytes(bytes, 0, HHEA_TABLE_SIZE)) return;
@@ -1,2 +1,2 @@
1
- import { a as EmbeddedShow, c as encodeForShowEmbedded, i as EmbeddedKern, l as loadEmbeddedFace, n as EmbeddedFaceMetrics, o as NOTDEF_GLYPH_ID, r as EmbeddedFaceSubstitution, s as collectEmbeddedGlyphs, t as EmbeddedFace } from "./embedded-font-DJUn9kMH.cjs";
1
+ import { a as EmbeddedShow, c as encodeForShowEmbedded, i as EmbeddedKern, l as loadEmbeddedFace, n as EmbeddedFaceMetrics, o as NOTDEF_GLYPH_ID, r as EmbeddedFaceSubstitution, s as collectEmbeddedGlyphs, t as EmbeddedFace } from "./embedded-font-DgVBedw6.cjs";
2
2
  export { EmbeddedFace, EmbeddedFaceMetrics, EmbeddedFaceSubstitution, EmbeddedKern, EmbeddedShow, NOTDEF_GLYPH_ID, collectEmbeddedGlyphs, encodeForShowEmbedded, loadEmbeddedFace };
@@ -1,2 +1,2 @@
1
- import { a as EmbeddedShow, c as encodeForShowEmbedded, i as EmbeddedKern, l as loadEmbeddedFace, n as EmbeddedFaceMetrics, o as NOTDEF_GLYPH_ID, r as EmbeddedFaceSubstitution, s as collectEmbeddedGlyphs, t as EmbeddedFace } from "./embedded-font-BRhZfEN2.js";
1
+ import { a as EmbeddedShow, c as encodeForShowEmbedded, i as EmbeddedKern, l as loadEmbeddedFace, n as EmbeddedFaceMetrics, o as NOTDEF_GLYPH_ID, r as EmbeddedFaceSubstitution, s as collectEmbeddedGlyphs, t as EmbeddedFace } from "./embedded-font-ByD7ZiQS.js";
2
2
  export { EmbeddedFace, EmbeddedFaceMetrics, EmbeddedFaceSubstitution, EmbeddedKern, EmbeddedShow, NOTDEF_GLYPH_ID, collectEmbeddedGlyphs, encodeForShowEmbedded, loadEmbeddedFace };
@@ -6,6 +6,7 @@ import { buildGposKernLookup } from "./gpos-table.js";
6
6
  import { buildGsubShaper } from "./gsub-table.js";
7
7
  import { parseHmtx } from "./hmtx-table.js";
8
8
  //#region src/embedded-font.ts
9
+ const LONG_HOR_METRIC_SIZE = 4;
9
10
  const GLYPH_SPACE_UNITS_PER_EM = 1e3;
10
11
  const NOTDEF_GLYPH_ID = 0;
11
12
  const CAP_HEIGHT_REFERENCE_CODE_POINT = 72;
@@ -96,7 +97,6 @@ const HHEA_ASCENDER_OFFSET = 4;
96
97
  const HHEA_DESCENDER_OFFSET = 6;
97
98
  const HHEA_LINE_GAP_OFFSET = 8;
98
99
  const HHEA_NUMBER_OF_HMETRICS_OFFSET = 34;
99
- const LONG_HOR_METRIC_SIZE = 4;
100
100
  function parseHhea(font) {
101
101
  const bytes = sfntTableBytes(font, "hhea");
102
102
  if (bytes === void 0 || !hasBytes(bytes, 0, HHEA_TABLE_SIZE)) return;
package/dist/encoding.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_afm_widths = require("./afm-widths-BTu0IDp2.cjs");
2
+ const require_afm_widths = require("./afm-widths-BYiX2L9D.cjs");
3
3
  exports.MACROMAN_GLYPH_NAMES = require_afm_widths.MACROMAN_GLYPH_NAMES;
4
4
  exports.STANDARD_GLYPH_NAMES = require_afm_widths.STANDARD_GLYPH_NAMES;
5
5
  exports.SYMBOL_GLYPH_NAMES = require_afm_widths.SYMBOL_GLYPH_NAMES;
package/dist/encoding.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as SYMBOL_GLYPH_NAMES, c as glyphNameToUnicode, d as standardGlyphName, f as symbolGlyphName, i as STANDARD_GLYPH_NAMES, l as macRomanGlyphName, m as zapfDingbatsGlyphName, o as WINANSI_GLYPH_NAMES, p as winAnsiGlyphName, r as MACROMAN_GLYPH_NAMES, s as ZAPFDINGBATS_GLYPH_NAMES, u as namedEncodingGlyphName } from "./afm-widths-De_QMWgC.js";
1
+ import { a as SYMBOL_GLYPH_NAMES, c as glyphNameToUnicode, d as standardGlyphName, f as symbolGlyphName, i as STANDARD_GLYPH_NAMES, l as macRomanGlyphName, m as zapfDingbatsGlyphName, o as WINANSI_GLYPH_NAMES, p as winAnsiGlyphName, r as MACROMAN_GLYPH_NAMES, s as ZAPFDINGBATS_GLYPH_NAMES, u as namedEncodingGlyphName } from "./afm-widths-blUDDjlI.js";
2
2
  export { MACROMAN_GLYPH_NAMES, STANDARD_GLYPH_NAMES, SYMBOL_GLYPH_NAMES, WINANSI_GLYPH_NAMES, ZAPFDINGBATS_GLYPH_NAMES, glyphNameToUnicode, macRomanGlyphName, namedEncodingGlyphName, standardGlyphName, symbolGlyphName, winAnsiGlyphName, zapfDingbatsGlyphName };
@@ -1,4 +1,4 @@
1
- import { n as PdfDict, r as PdfObject } from "./objects-B7HdMeWS.cjs";
1
+ import { n as PdfDict, r as PdfObject } from "./objects-e2RS3-yT.cjs";
2
2
  //#region src/encrypt-write.d.ts
3
3
  declare class PdfEncryptionError extends Error {
4
4
  constructor(message: string);
@@ -22,8 +22,8 @@ interface PdfEncryptionOptions {
22
22
  }
23
23
  interface PdfEncryptor {
24
24
  readonly encryptDict: PdfDict;
25
- encryptString(bytes: Uint8Array<ArrayBuffer>, num: number, gen: number): Uint8Array<ArrayBuffer>;
26
- encryptStream(bytes: Uint8Array<ArrayBuffer>, dict: PdfDict, num: number, gen: number): Uint8Array<ArrayBuffer>;
25
+ encryptString: (bytes: Uint8Array<ArrayBuffer>, num: number, gen: number) => Uint8Array<ArrayBuffer>;
26
+ encryptStream: (bytes: Uint8Array<ArrayBuffer>, dict: PdfDict, num: number, gen: number) => Uint8Array<ArrayBuffer>;
27
27
  }
28
28
  declare function createStandardEncryptor(options: PdfEncryptionOptions, fileId: Uint8Array<ArrayBuffer>): PdfEncryptor;
29
29
  declare function encryptIndirectObject(value: PdfObject, num: number, gen: number, encryptor: PdfEncryptor): PdfObject;
@@ -1,4 +1,4 @@
1
- import { n as PdfDict, r as PdfObject } from "./objects-B7HdMeWS.js";
1
+ import { n as PdfDict, r as PdfObject } from "./objects-e2RS3-yT.js";
2
2
  //#region src/encrypt-write.d.ts
3
3
  declare class PdfEncryptionError extends Error {
4
4
  constructor(message: string);
@@ -22,8 +22,8 @@ interface PdfEncryptionOptions {
22
22
  }
23
23
  interface PdfEncryptor {
24
24
  readonly encryptDict: PdfDict;
25
- encryptString(bytes: Uint8Array<ArrayBuffer>, num: number, gen: number): Uint8Array<ArrayBuffer>;
26
- encryptStream(bytes: Uint8Array<ArrayBuffer>, dict: PdfDict, num: number, gen: number): Uint8Array<ArrayBuffer>;
25
+ encryptString: (bytes: Uint8Array<ArrayBuffer>, num: number, gen: number) => Uint8Array<ArrayBuffer>;
26
+ encryptStream: (bytes: Uint8Array<ArrayBuffer>, dict: PdfDict, num: number, gen: number) => Uint8Array<ArrayBuffer>;
27
27
  }
28
28
  declare function createStandardEncryptor(options: PdfEncryptionOptions, fileId: Uint8Array<ArrayBuffer>): PdfEncryptor;
29
29
  declare function encryptIndirectObject(value: PdfObject, num: number, gen: number, encryptor: PdfEncryptor): PdfObject;
@@ -1,10 +1,10 @@
1
1
  import { PdfDiagnosticSink } from "./diagnostics.cjs";
2
- import { n as PdfDict } from "./objects-B7HdMeWS.cjs";
2
+ import { n as PdfDict } from "./objects-e2RS3-yT.cjs";
3
3
  //#region src/encrypt.d.ts
4
4
  type CipherMethod = "identity" | "rc4" | "aes";
5
5
  interface PdfDecryptor {
6
- decryptString(bytes: Uint8Array<ArrayBuffer>, num: number, gen: number): Uint8Array<ArrayBuffer>;
7
- decryptStream(bytes: Uint8Array<ArrayBuffer>, dict: PdfDict, num: number, gen: number): Uint8Array<ArrayBuffer>;
6
+ decryptString: (bytes: Uint8Array<ArrayBuffer>, num: number, gen: number) => Uint8Array<ArrayBuffer>;
7
+ decryptStream: (bytes: Uint8Array<ArrayBuffer>, dict: PdfDict, num: number, gen: number) => Uint8Array<ArrayBuffer>;
8
8
  }
9
9
  declare const PASSWORD_PADDING: Uint8Array<ArrayBuffer>;
10
10
  declare const AES_OBJECT_KEY_SALT: Uint8Array<ArrayBuffer>;
package/dist/encrypt.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import { PdfDiagnosticSink } from "./diagnostics.js";
2
- import { n as PdfDict } from "./objects-B7HdMeWS.js";
2
+ import { n as PdfDict } from "./objects-e2RS3-yT.js";
3
3
  //#region src/encrypt.d.ts
4
4
  type CipherMethod = "identity" | "rc4" | "aes";
5
5
  interface PdfDecryptor {
6
- decryptString(bytes: Uint8Array<ArrayBuffer>, num: number, gen: number): Uint8Array<ArrayBuffer>;
7
- decryptStream(bytes: Uint8Array<ArrayBuffer>, dict: PdfDict, num: number, gen: number): Uint8Array<ArrayBuffer>;
6
+ decryptString: (bytes: Uint8Array<ArrayBuffer>, num: number, gen: number) => Uint8Array<ArrayBuffer>;
7
+ decryptStream: (bytes: Uint8Array<ArrayBuffer>, dict: PdfDict, num: number, gen: number) => Uint8Array<ArrayBuffer>;
8
8
  }
9
9
  declare const PASSWORD_PADDING: Uint8Array<ArrayBuffer>;
10
10
  declare const AES_OBJECT_KEY_SALT: Uint8Array<ArrayBuffer>;
package/dist/filters.cjs CHANGED
@@ -211,21 +211,21 @@ function lzwDecode(data, earlyChange, sink) {
211
211
  }
212
212
  return Uint8Array.from(out);
213
213
  }
214
+ const ASCII85_GROUP_BYTES = 4;
214
215
  const ASCII85_ZERO_GROUP_MARKER = 122;
215
216
  const ASCII85_END_MARKER = 126;
216
217
  const ASCII85_MIN_DIGIT = 33;
217
218
  const ASCII85_MAX_DIGIT = 117;
218
219
  const ASCII85_MAX_DIGIT_VALUE = 84;
219
- function pushAscii85Group(out, digits, byteCount) {
220
+ function ascii85GroupBytes(digits, byteCount) {
220
221
  let value = 0;
221
222
  for (const digit of digits) value = value * 85 + digit;
222
- const bytes = [
223
+ return [
223
224
  value >>> 24 & 255,
224
225
  value >>> 16 & 255,
225
226
  value >>> 8 & 255,
226
227
  value & 255
227
- ];
228
- for (let i = 0; i < byteCount; i++) out.push(bytes[i]);
228
+ ].slice(0, byteCount);
229
229
  }
230
230
  function ascii85Decode(data) {
231
231
  const out = [];
@@ -243,14 +243,14 @@ function ascii85Decode(data) {
243
243
  if (byte < ASCII85_MIN_DIGIT || byte > ASCII85_MAX_DIGIT) continue;
244
244
  tuple.push(byte - ASCII85_MIN_DIGIT);
245
245
  if (tuple.length === 5) {
246
- pushAscii85Group(out, tuple, 4);
246
+ out.push(...ascii85GroupBytes(tuple, ASCII85_GROUP_BYTES));
247
247
  tuple = [];
248
248
  }
249
249
  }
250
250
  if (tuple.length > 1) {
251
251
  const padded = tuple.slice();
252
252
  while (padded.length < 5) padded.push(ASCII85_MAX_DIGIT_VALUE);
253
- pushAscii85Group(out, padded, tuple.length - 1);
253
+ out.push(...ascii85GroupBytes(padded, tuple.length - 1));
254
254
  }
255
255
  return Uint8Array.from(out);
256
256
  }
@@ -1,5 +1,5 @@
1
1
  import { PdfDiagnosticSink } from "./diagnostics.cjs";
2
- import { n as PdfDict, r as PdfObject } from "./objects-B7HdMeWS.cjs";
2
+ import { n as PdfDict, r as PdfObject } from "./objects-e2RS3-yT.cjs";
3
3
  //#region src/filters.d.ts
4
4
  interface DecodedStream {
5
5
  readonly bytes: Uint8Array<ArrayBuffer>;
package/dist/filters.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { PdfDiagnosticSink } from "./diagnostics.js";
2
- import { n as PdfDict, r as PdfObject } from "./objects-B7HdMeWS.js";
2
+ import { n as PdfDict, r as PdfObject } from "./objects-e2RS3-yT.js";
3
3
  //#region src/filters.d.ts
4
4
  interface DecodedStream {
5
5
  readonly bytes: Uint8Array<ArrayBuffer>;
package/dist/filters.js CHANGED
@@ -210,21 +210,21 @@ function lzwDecode(data, earlyChange, sink) {
210
210
  }
211
211
  return Uint8Array.from(out);
212
212
  }
213
+ const ASCII85_GROUP_BYTES = 4;
213
214
  const ASCII85_ZERO_GROUP_MARKER = 122;
214
215
  const ASCII85_END_MARKER = 126;
215
216
  const ASCII85_MIN_DIGIT = 33;
216
217
  const ASCII85_MAX_DIGIT = 117;
217
218
  const ASCII85_MAX_DIGIT_VALUE = 84;
218
- function pushAscii85Group(out, digits, byteCount) {
219
+ function ascii85GroupBytes(digits, byteCount) {
219
220
  let value = 0;
220
221
  for (const digit of digits) value = value * 85 + digit;
221
- const bytes = [
222
+ return [
222
223
  value >>> 24 & 255,
223
224
  value >>> 16 & 255,
224
225
  value >>> 8 & 255,
225
226
  value & 255
226
- ];
227
- for (let i = 0; i < byteCount; i++) out.push(bytes[i]);
227
+ ].slice(0, byteCount);
228
228
  }
229
229
  function ascii85Decode(data) {
230
230
  const out = [];
@@ -242,14 +242,14 @@ function ascii85Decode(data) {
242
242
  if (byte < ASCII85_MIN_DIGIT || byte > ASCII85_MAX_DIGIT) continue;
243
243
  tuple.push(byte - ASCII85_MIN_DIGIT);
244
244
  if (tuple.length === 5) {
245
- pushAscii85Group(out, tuple, 4);
245
+ out.push(...ascii85GroupBytes(tuple, ASCII85_GROUP_BYTES));
246
246
  tuple = [];
247
247
  }
248
248
  }
249
249
  if (tuple.length > 1) {
250
250
  const padded = tuple.slice();
251
251
  while (padded.length < 5) padded.push(ASCII85_MAX_DIGIT_VALUE);
252
- pushAscii85Group(out, padded, tuple.length - 1);
252
+ out.push(...ascii85GroupBytes(padded, tuple.length - 1));
253
253
  }
254
254
  return Uint8Array.from(out);
255
255
  }
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_afm_widths = require("./afm-widths-BTu0IDp2.cjs");
2
+ const require_afm_widths = require("./afm-widths-BYiX2L9D.cjs");
3
3
  const require_objects = require("./objects.cjs");
4
4
  const require_filters = require("./filters.cjs");
5
5
  const require_builtin_encoding = require("./builtin-encoding.cjs");
@@ -1,5 +1,5 @@
1
1
  import { PdfDiagnosticSink } from "./diagnostics.cjs";
2
- import { n as PdfDict } from "./objects-B7HdMeWS.cjs";
2
+ import { n as PdfDict } from "./objects-e2RS3-yT.cjs";
3
3
  import { FontMetricsPort, PdfObjectResolver } from "./interpret.cjs";
4
4
  //#region src/font-read.d.ts
5
5
  interface VerticalGlyphMetrics {
@@ -12,8 +12,8 @@ interface PdfFont {
12
12
  readonly family: string;
13
13
  readonly bold: boolean;
14
14
  readonly italic: boolean;
15
- widthOf(code: number): number;
16
- decodeToUnicode(codes: Uint8Array<ArrayBuffer>): string;
15
+ widthOf: (code: number) => number;
16
+ decodeToUnicode: (codes: Uint8Array<ArrayBuffer>) => string;
17
17
  readonly verticalMetricsOf?: (code: number) => VerticalGlyphMetrics;
18
18
  }
19
19
  interface FontReadContext {
@@ -1,5 +1,5 @@
1
1
  import { PdfDiagnosticSink } from "./diagnostics.js";
2
- import { n as PdfDict } from "./objects-B7HdMeWS.js";
2
+ import { n as PdfDict } from "./objects-e2RS3-yT.js";
3
3
  import { FontMetricsPort, PdfObjectResolver } from "./interpret.js";
4
4
  //#region src/font-read.d.ts
5
5
  interface VerticalGlyphMetrics {
@@ -12,8 +12,8 @@ interface PdfFont {
12
12
  readonly family: string;
13
13
  readonly bold: boolean;
14
14
  readonly italic: boolean;
15
- widthOf(code: number): number;
16
- decodeToUnicode(codes: Uint8Array<ArrayBuffer>): string;
15
+ widthOf: (code: number) => number;
16
+ decodeToUnicode: (codes: Uint8Array<ArrayBuffer>) => string;
17
17
  readonly verticalMetricsOf?: (code: number) => VerticalGlyphMetrics;
18
18
  }
19
19
  interface FontReadContext {
package/dist/font-read.js CHANGED
@@ -1,4 +1,4 @@
1
- import { c as glyphNameToUnicode, f as symbolGlyphName, m as zapfDingbatsGlyphName, n as widthOfCode, p as winAnsiGlyphName, u as namedEncodingGlyphName } from "./afm-widths-De_QMWgC.js";
1
+ import { c as glyphNameToUnicode, f as symbolGlyphName, m as zapfDingbatsGlyphName, n as widthOfCode, p as winAnsiGlyphName, u as namedEncodingGlyphName } from "./afm-widths-blUDDjlI.js";
2
2
  import { asArray, asName, asNumber, dictGet, isName } from "./objects.js";
3
3
  import { decodeStream } from "./filters.js";
4
4
  import { readFontProgramEncoding } from "./builtin-encoding.js";
@@ -1,5 +1,5 @@
1
1
  import { r as StandardFontName } from "./afm-widths-CneRyu5l.cjs";
2
- import { t as EmbeddedFace } from "./embedded-font-DJUn9kMH.cjs";
2
+ import { t as EmbeddedFace } from "./embedded-font-DgVBedw6.cjs";
3
3
  import { FontRegistryOptions, LayoutFont } from "document-schema.js";
4
4
  //#region src/font-registry.d.ts
5
5
  type ResolvedFace = {
@@ -11,9 +11,9 @@ type ResolvedFace = {
11
11
  readonly matched: boolean;
12
12
  };
13
13
  interface FontRegistry {
14
- resolve(font: LayoutFont): ResolvedFace;
14
+ resolve: (font: Readonly<LayoutFont>) => ResolvedFace;
15
15
  }
16
16
  declare function createFontRegistry(options?: FontRegistryOptions): FontRegistry;
17
- declare function resolveFaceWithRegistry(registry: FontRegistry | undefined, font: LayoutFont): ResolvedFace;
17
+ declare function resolveFaceWithRegistry(registry: FontRegistry | undefined, font: Readonly<LayoutFont>): ResolvedFace;
18
18
  //#endregion
19
19
  export { FontRegistry, ResolvedFace, createFontRegistry, resolveFaceWithRegistry };
@@ -1,5 +1,5 @@
1
1
  import { r as StandardFontName } from "./afm-widths-CneRyu5l.js";
2
- import { t as EmbeddedFace } from "./embedded-font-BRhZfEN2.js";
2
+ import { t as EmbeddedFace } from "./embedded-font-ByD7ZiQS.js";
3
3
  import { FontRegistryOptions, LayoutFont } from "document-schema.js";
4
4
  //#region src/font-registry.d.ts
5
5
  type ResolvedFace = {
@@ -11,9 +11,9 @@ type ResolvedFace = {
11
11
  readonly matched: boolean;
12
12
  };
13
13
  interface FontRegistry {
14
- resolve(font: LayoutFont): ResolvedFace;
14
+ resolve: (font: Readonly<LayoutFont>) => ResolvedFace;
15
15
  }
16
16
  declare function createFontRegistry(options?: FontRegistryOptions): FontRegistry;
17
- declare function resolveFaceWithRegistry(registry: FontRegistry | undefined, font: LayoutFont): ResolvedFace;
17
+ declare function resolveFaceWithRegistry(registry: FontRegistry | undefined, font: Readonly<LayoutFont>): ResolvedFace;
18
18
  //#endregion
19
19
  export { FontRegistry, ResolvedFace, createFontRegistry, resolveFaceWithRegistry };
package/dist/form.cjs CHANGED
@@ -13,11 +13,14 @@ function readAcroForm(catalog, resolver, pageIndex, sink) {
13
13
  const visited = /* @__PURE__ */ new Set();
14
14
  for (const fieldRef of require_objects.asArray(resolver.resolve(require_objects.dictGet(acroForm, "Fields"))) ?? []) {
15
15
  const fieldDict = resolver.resolveDict(fieldRef);
16
- if (fieldDict !== void 0) readField(fieldDict, "", resolver, pageIndex, sink, fields, visited);
16
+ if (fieldDict !== void 0) {
17
+ const field = readField(fieldDict, "", resolver, pageIndex, sink, visited);
18
+ if (field !== void 0) fields.push(field);
19
+ }
17
20
  }
18
21
  return fields;
19
22
  }
20
- function readField(node, parentName, resolver, pageIndex, sink, out, visited) {
23
+ function readField(node, parentName, resolver, pageIndex, sink, visited) {
21
24
  if (visited.has(node)) {
22
25
  sink({
23
26
  code: "pdf/form-field-cycle",
@@ -35,15 +38,17 @@ function readField(node, parentName, resolver, pageIndex, sink, out, visited) {
35
38
  const children = [];
36
39
  for (const kidRef of require_objects.asArray(resolver.resolve(require_objects.dictGet(node, "Kids"))) ?? []) {
37
40
  const kid = resolver.resolveDict(kidRef);
38
- if (kid !== void 0) readField(kid, name, resolver, pageIndex, sink, children, visited);
41
+ if (kid !== void 0) {
42
+ const child = readField(kid, name, resolver, pageIndex, sink, visited);
43
+ if (child !== void 0) children.push(child);
44
+ }
39
45
  }
40
- out.push({
46
+ return {
41
47
  name,
42
48
  fieldType: "group",
43
49
  widgets: [],
44
50
  children
45
- });
46
- return;
51
+ };
47
52
  }
48
53
  const flags = require_objects.asNumber(resolver.resolve(require_objects.dictGet(node, "Ff"))) ?? 0;
49
54
  const value = fieldValue(node, resolver);
@@ -60,7 +65,7 @@ function readField(node, parentName, resolver, pageIndex, sink, out, visited) {
60
65
  const widget = widgetPlacement(node, pageIndex);
61
66
  if (widget !== void 0) widgets.push(widget);
62
67
  }
63
- out.push({
68
+ return {
64
69
  name,
65
70
  fieldType: mapFieldType(fieldType, flags),
66
71
  ...valueFields(fieldType, value),
@@ -69,7 +74,7 @@ function readField(node, parentName, resolver, pageIndex, sink, out, visited) {
69
74
  ...(flags & FLAG_READ_ONLY) !== 0 ? { readOnly: true } : {},
70
75
  widgets,
71
76
  children: []
72
- });
77
+ };
73
78
  }
74
79
  function mapFieldType(fieldType, flags) {
75
80
  if (fieldType === "Tx") return "text";
package/dist/form.d.cts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { PdfDiagnosticSink } from "./diagnostics.cjs";
2
- import { n as PdfDict } from "./objects-B7HdMeWS.cjs";
2
+ import { n as PdfDict } from "./objects-e2RS3-yT.cjs";
3
3
  import { PdfObjectResolver } from "./interpret.cjs";
4
4
  import { LayoutFormField } from "./layout.cjs";
5
5
  import { PageIndexLookup } from "./navigation.cjs";
6
6
  //#region src/form.d.ts
7
- declare function readAcroForm(catalog: PdfDict, resolver: PdfObjectResolver, pageIndex: PageIndexLookup, sink: PdfDiagnosticSink): LayoutFormField[];
7
+ declare function readAcroForm(catalog: PdfDict, resolver: Readonly<PdfObjectResolver>, pageIndex: PageIndexLookup, sink: PdfDiagnosticSink): LayoutFormField[];
8
8
  //#endregion
9
9
  export { readAcroForm };
package/dist/form.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { PdfDiagnosticSink } from "./diagnostics.js";
2
- import { n as PdfDict } from "./objects-B7HdMeWS.js";
2
+ import { n as PdfDict } from "./objects-e2RS3-yT.js";
3
3
  import { PdfObjectResolver } from "./interpret.js";
4
4
  import { LayoutFormField } from "./layout.js";
5
5
  import { PageIndexLookup } from "./navigation.js";
6
6
  //#region src/form.d.ts
7
- declare function readAcroForm(catalog: PdfDict, resolver: PdfObjectResolver, pageIndex: PageIndexLookup, sink: PdfDiagnosticSink): LayoutFormField[];
7
+ declare function readAcroForm(catalog: PdfDict, resolver: Readonly<PdfObjectResolver>, pageIndex: PageIndexLookup, sink: PdfDiagnosticSink): LayoutFormField[];
8
8
  //#endregion
9
9
  export { readAcroForm };
package/dist/form.js CHANGED
@@ -12,11 +12,14 @@ function readAcroForm(catalog, resolver, pageIndex, sink) {
12
12
  const visited = /* @__PURE__ */ new Set();
13
13
  for (const fieldRef of asArray(resolver.resolve(dictGet(acroForm, "Fields"))) ?? []) {
14
14
  const fieldDict = resolver.resolveDict(fieldRef);
15
- if (fieldDict !== void 0) readField(fieldDict, "", resolver, pageIndex, sink, fields, visited);
15
+ if (fieldDict !== void 0) {
16
+ const field = readField(fieldDict, "", resolver, pageIndex, sink, visited);
17
+ if (field !== void 0) fields.push(field);
18
+ }
16
19
  }
17
20
  return fields;
18
21
  }
19
- function readField(node, parentName, resolver, pageIndex, sink, out, visited) {
22
+ function readField(node, parentName, resolver, pageIndex, sink, visited) {
20
23
  if (visited.has(node)) {
21
24
  sink({
22
25
  code: "pdf/form-field-cycle",
@@ -34,15 +37,17 @@ function readField(node, parentName, resolver, pageIndex, sink, out, visited) {
34
37
  const children = [];
35
38
  for (const kidRef of asArray(resolver.resolve(dictGet(node, "Kids"))) ?? []) {
36
39
  const kid = resolver.resolveDict(kidRef);
37
- if (kid !== void 0) readField(kid, name, resolver, pageIndex, sink, children, visited);
40
+ if (kid !== void 0) {
41
+ const child = readField(kid, name, resolver, pageIndex, sink, visited);
42
+ if (child !== void 0) children.push(child);
43
+ }
38
44
  }
39
- out.push({
45
+ return {
40
46
  name,
41
47
  fieldType: "group",
42
48
  widgets: [],
43
49
  children
44
- });
45
- return;
50
+ };
46
51
  }
47
52
  const flags = asNumber(resolver.resolve(dictGet(node, "Ff"))) ?? 0;
48
53
  const value = fieldValue(node, resolver);
@@ -59,7 +64,7 @@ function readField(node, parentName, resolver, pageIndex, sink, out, visited) {
59
64
  const widget = widgetPlacement(node, pageIndex);
60
65
  if (widget !== void 0) widgets.push(widget);
61
66
  }
62
- out.push({
67
+ return {
63
68
  name,
64
69
  fieldType: mapFieldType(fieldType, flags),
65
70
  ...valueFields(fieldType, value),
@@ -68,7 +73,7 @@ function readField(node, parentName, resolver, pageIndex, sink, out, visited) {
68
73
  ...(flags & FLAG_READ_ONLY) !== 0 ? { readOnly: true } : {},
69
74
  widgets,
70
75
  children: []
71
- });
76
+ };
72
77
  }
73
78
  function mapFieldType(fieldType, flags) {
74
79
  if (fieldType === "Tx") return "text";
@@ -6,9 +6,9 @@ declare const GLYPH_CLASS_LIGATURE = 2;
6
6
  declare const GLYPH_CLASS_MARK = 3;
7
7
  declare const GLYPH_CLASS_COMPONENT = 4;
8
8
  interface GdefTable {
9
- glyphClass(glyphId: number): number;
10
- markAttachClass(glyphId: number): number;
11
- markFilteringSetCovers(setIndex: number, glyphId: number): boolean;
9
+ glyphClass: (glyphId: number) => number;
10
+ markAttachClass: (glyphId: number) => number;
11
+ markFilteringSetCovers: (setIndex: number, glyphId: number) => boolean;
12
12
  }
13
13
  declare function parseGdefTable(font: SfntFont): GdefTable | undefined;
14
14
  //#endregion
@@ -6,9 +6,9 @@ declare const GLYPH_CLASS_LIGATURE = 2;
6
6
  declare const GLYPH_CLASS_MARK = 3;
7
7
  declare const GLYPH_CLASS_COMPONENT = 4;
8
8
  interface GdefTable {
9
- glyphClass(glyphId: number): number;
10
- markAttachClass(glyphId: number): number;
11
- markFilteringSetCovers(setIndex: number, glyphId: number): boolean;
9
+ glyphClass: (glyphId: number) => number;
10
+ markAttachClass: (glyphId: number) => number;
11
+ markFilteringSetCovers: (setIndex: number, glyphId: number) => boolean;
12
12
  }
13
13
  declare function parseGdefTable(font: SfntFont): GdefTable | undefined;
14
14
  //#endregion
@@ -18,10 +18,10 @@ interface CompositeComponent {
18
18
  }
19
19
  interface GlyfTable {
20
20
  readonly numGlyphs: number;
21
- glyphBytes(glyphId: number): Uint8Array<ArrayBuffer> | undefined;
22
- glyphHeader(glyphId: number): GlyphHeader | undefined;
23
- compositeComponents(glyphId: number): readonly CompositeComponent[] | undefined;
24
- glyphInkBounds(glyphId: number): GlyphInkBounds | undefined;
21
+ glyphBytes: (glyphId: number) => Uint8Array<ArrayBuffer> | undefined;
22
+ glyphHeader: (glyphId: number) => GlyphHeader | undefined;
23
+ compositeComponents: (glyphId: number) => readonly CompositeComponent[] | undefined;
24
+ glyphInkBounds: (glyphId: number) => GlyphInkBounds | undefined;
25
25
  }
26
26
  interface GlyfOptions {
27
27
  readonly numGlyphs: number;