@jasy/pdf 1.0.0-alpha.1 → 1.0.0-alpha.10

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 (275) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +35 -21
  3. package/dist/api/args.d.ts +1 -1
  4. package/dist/api/args.js +2 -5
  5. package/dist/api/color.d.ts +4 -4
  6. package/dist/api/color.js +11 -17
  7. package/dist/api/content.d.ts +20 -13
  8. package/dist/api/content.js +44 -29
  9. package/dist/api/descriptor.d.ts +2 -2
  10. package/dist/api/descriptor.js +121 -31
  11. package/dist/api/dimension.d.ts +76 -0
  12. package/dist/api/dimension.js +43 -0
  13. package/dist/api/font-url.d.ts +28 -0
  14. package/dist/api/font-url.js +134 -0
  15. package/dist/api/forms.d.ts +347 -0
  16. package/dist/api/forms.js +189 -0
  17. package/dist/api/gradient.d.ts +53 -0
  18. package/dist/api/gradient.js +97 -0
  19. package/dist/api/index.d.ts +13 -8
  20. package/dist/api/index.js +13 -24
  21. package/dist/api/insets.d.ts +19 -12
  22. package/dist/api/insets.js +19 -12
  23. package/dist/api/layout.d.ts +149 -25
  24. package/dist/api/layout.js +182 -51
  25. package/dist/api/page-builder.d.ts +40 -0
  26. package/dist/api/page-builder.js +44 -0
  27. package/dist/api/structure.d.ts +100 -13
  28. package/dist/api/structure.js +179 -88
  29. package/dist/api/table.d.ts +5 -5
  30. package/dist/api/table.js +38 -26
  31. package/dist/api/text.d.ts +90 -4
  32. package/dist/api/text.js +116 -31
  33. package/dist/assets/font-data.d.ts +2 -0
  34. package/dist/assets/font-data.js +21 -0
  35. package/dist/assets/font-data.ts +37 -0
  36. package/dist/common/color.js +1 -5
  37. package/dist/constants/page-sizes.js +3 -6
  38. package/dist/constants/pdf-parts.js +1 -4
  39. package/dist/crypto/legacy-handler.d.ts +43 -0
  40. package/dist/crypto/legacy-handler.js +145 -0
  41. package/dist/crypto/security-handler.d.ts +62 -0
  42. package/dist/crypto/security-handler.js +155 -0
  43. package/dist/crypto/webcrypto.d.ts +11 -0
  44. package/dist/crypto/webcrypto.js +62 -0
  45. package/dist/edit/acroform-reader.d.ts +70 -0
  46. package/dist/edit/acroform-reader.js +126 -0
  47. package/dist/edit/appearance.d.ts +47 -0
  48. package/dist/edit/appearance.js +171 -0
  49. package/dist/edit/document.d.ts +145 -0
  50. package/dist/edit/document.js +642 -0
  51. package/dist/edit/fill.d.ts +65 -0
  52. package/dist/edit/fill.js +424 -0
  53. package/dist/edit/flatten.d.ts +54 -0
  54. package/dist/edit/flatten.js +462 -0
  55. package/dist/edit/index.d.ts +20 -0
  56. package/dist/edit/index.js +18 -0
  57. package/dist/edit/lexer.d.ts +30 -0
  58. package/dist/edit/lexer.js +285 -0
  59. package/dist/edit/objects.d.ts +68 -0
  60. package/dist/edit/objects.js +83 -0
  61. package/dist/edit/writer.d.ts +60 -0
  62. package/dist/edit/writer.js +283 -0
  63. package/dist/elements/container-element.d.ts +50 -5
  64. package/dist/elements/container-element.js +100 -39
  65. package/dist/elements/forms/checkbox-element.d.ts +51 -0
  66. package/dist/elements/forms/checkbox-element.js +48 -0
  67. package/dist/elements/forms/choice-element.d.ts +53 -0
  68. package/dist/elements/forms/choice-element.js +59 -0
  69. package/dist/elements/forms/push-button-element.d.ts +56 -0
  70. package/dist/elements/forms/push-button-element.js +49 -0
  71. package/dist/elements/forms/radio-element.d.ts +52 -0
  72. package/dist/elements/forms/radio-element.js +49 -0
  73. package/dist/elements/forms/signature-element.d.ts +54 -0
  74. package/dist/elements/forms/signature-element.js +47 -0
  75. package/dist/elements/forms/text-field-element.d.ts +61 -0
  76. package/dist/elements/forms/text-field-element.js +54 -0
  77. package/dist/elements/image-element.d.ts +58 -6
  78. package/dist/elements/image-element.js +145 -111
  79. package/dist/elements/index.d.ts +26 -10
  80. package/dist/elements/index.js +26 -28
  81. package/dist/elements/layout/anchor-element.d.ts +23 -0
  82. package/dist/elements/layout/anchor-element.js +27 -0
  83. package/dist/elements/layout/bookmark-element.d.ts +27 -0
  84. package/dist/elements/layout/bookmark-element.js +30 -0
  85. package/dist/elements/layout/default-text-style-element.d.ts +30 -0
  86. package/dist/elements/layout/default-text-style-element.js +47 -0
  87. package/dist/elements/layout/deferred-element.d.ts +3 -3
  88. package/dist/elements/layout/deferred-element.js +4 -8
  89. package/dist/elements/layout/expanded-element.d.ts +6 -4
  90. package/dist/elements/layout/expanded-element.js +22 -17
  91. package/dist/elements/layout/keep-together-element.d.ts +42 -0
  92. package/dist/elements/layout/keep-together-element.js +85 -0
  93. package/dist/elements/layout/link-element.d.ts +33 -0
  94. package/dist/elements/layout/link-element.js +39 -0
  95. package/dist/elements/layout/padding-element.d.ts +10 -5
  96. package/dist/elements/layout/padding-element.js +25 -16
  97. package/dist/elements/layout/page-break-element.d.ts +17 -0
  98. package/dist/elements/layout/page-break-element.js +24 -0
  99. package/dist/elements/layout/page-builder-element.d.ts +32 -0
  100. package/dist/elements/layout/page-builder-element.js +45 -0
  101. package/dist/elements/layout/positioned-element.d.ts +47 -0
  102. package/dist/elements/layout/positioned-element.js +73 -0
  103. package/dist/elements/layout/repeating-header-element.d.ts +3 -3
  104. package/dist/elements/layout/repeating-header-element.js +8 -12
  105. package/dist/elements/layout/rotated-box-element.d.ts +35 -0
  106. package/dist/elements/layout/rotated-box-element.js +54 -0
  107. package/dist/elements/layout/rotated-element.d.ts +32 -0
  108. package/dist/elements/layout/rotated-element.js +41 -0
  109. package/dist/elements/layout/sized-container-element.d.ts +2 -2
  110. package/dist/elements/layout/sized-container-element.js +6 -11
  111. package/dist/elements/layout/struct-group.d.ts +28 -0
  112. package/dist/elements/layout/struct-group.js +42 -0
  113. package/dist/elements/line-element.d.ts +3 -3
  114. package/dist/elements/line-element.js +5 -10
  115. package/dist/elements/page-element.d.ts +26 -6
  116. package/dist/elements/page-element.js +72 -27
  117. package/dist/elements/pdf-document-element.d.ts +10 -4
  118. package/dist/elements/pdf-document-element.js +11 -10
  119. package/dist/elements/pdf-element.d.ts +150 -4
  120. package/dist/elements/pdf-element.js +138 -20
  121. package/dist/elements/rectangle-element.d.ts +52 -11
  122. package/dist/elements/rectangle-element.js +129 -36
  123. package/dist/elements/row-element.d.ts +45 -4
  124. package/dist/elements/row-element.js +66 -18
  125. package/dist/elements/text-element.d.ts +132 -11
  126. package/dist/elements/text-element.js +206 -56
  127. package/dist/forms/acroform.d.ts +63 -0
  128. package/dist/forms/acroform.js +427 -0
  129. package/dist/forms/appearance.d.ts +58 -0
  130. package/dist/forms/appearance.js +204 -0
  131. package/dist/forms/field.d.ts +164 -0
  132. package/dist/forms/field.js +1 -0
  133. package/dist/forms/pdf.d.ts +19 -0
  134. package/dist/forms/pdf.js +28 -0
  135. package/dist/index.d.ts +3 -3
  136. package/dist/index.js +3 -19
  137. package/dist/ir/display-list.d.ts +197 -8
  138. package/dist/ir/display-list.js +8 -2
  139. package/dist/layout/alignment.d.ts +10 -0
  140. package/dist/layout/alignment.js +6 -0
  141. package/dist/layout/box-constraints.d.ts +61 -0
  142. package/dist/layout/box-constraints.js +88 -6
  143. package/dist/layout/collect-images.d.ts +9 -0
  144. package/dist/layout/collect-images.js +34 -0
  145. package/dist/layout/fragmentation.d.ts +20 -1
  146. package/dist/layout/fragmentation.js +74 -18
  147. package/dist/layout/insets.d.ts +28 -0
  148. package/dist/layout/insets.js +20 -0
  149. package/dist/platform/browser-fs.d.ts +2 -0
  150. package/dist/platform/browser-fs.js +9 -0
  151. package/dist/platform/browser-image.d.ts +5 -0
  152. package/dist/platform/browser-image.js +13 -0
  153. package/dist/platform/node-fs.d.ts +2 -0
  154. package/dist/platform/node-fs.js +10 -0
  155. package/dist/platform/node-image.d.ts +5 -0
  156. package/dist/platform/node-image.js +9 -0
  157. package/dist/renderer/anchor-renderer.d.ts +6 -0
  158. package/dist/renderer/anchor-renderer.js +11 -0
  159. package/dist/renderer/bookmark-renderer.d.ts +6 -0
  160. package/dist/renderer/bookmark-renderer.js +11 -0
  161. package/dist/renderer/container-renderer.d.ts +3 -3
  162. package/dist/renderer/container-renderer.js +11 -28
  163. package/dist/renderer/default-text-style-renderer.d.ts +6 -0
  164. package/dist/renderer/default-text-style-renderer.js +10 -0
  165. package/dist/renderer/deferred-renderer.d.ts +3 -3
  166. package/dist/renderer/deferred-renderer.js +8 -23
  167. package/dist/renderer/emoji-image.d.ts +9 -0
  168. package/dist/renderer/emoji-image.js +68 -0
  169. package/dist/renderer/expanded-renderer.d.ts +3 -3
  170. package/dist/renderer/expanded-renderer.js +6 -21
  171. package/dist/renderer/form-field-renderer.d.ts +20 -0
  172. package/dist/renderer/form-field-renderer.js +12 -0
  173. package/dist/renderer/image-renderer.d.ts +4 -4
  174. package/dist/renderer/image-renderer.js +86 -75
  175. package/dist/renderer/index.d.ts +10 -10
  176. package/dist/renderer/index.js +10 -26
  177. package/dist/renderer/keep-together-renderer.d.ts +10 -0
  178. package/dist/renderer/keep-together-renderer.js +12 -0
  179. package/dist/renderer/line-renderer.d.ts +3 -3
  180. package/dist/renderer/line-renderer.js +13 -28
  181. package/dist/renderer/link-renderer.d.ts +6 -0
  182. package/dist/renderer/link-renderer.js +11 -0
  183. package/dist/renderer/padding-renderer.d.ts +3 -3
  184. package/dist/renderer/padding-renderer.js +6 -21
  185. package/dist/renderer/page-break-renderer.d.ts +14 -0
  186. package/dist/renderer/page-break-renderer.js +15 -0
  187. package/dist/renderer/page-builder-renderer.d.ts +6 -0
  188. package/dist/renderer/page-builder-renderer.js +11 -0
  189. package/dist/renderer/page-renderer.d.ts +2 -2
  190. package/dist/renderer/page-renderer.js +115 -77
  191. package/dist/renderer/pdf-backend.d.ts +31 -4
  192. package/dist/renderer/pdf-backend.js +287 -49
  193. package/dist/renderer/pdf-config.js +4 -7
  194. package/dist/renderer/pdf-document-class.d.ts +5 -5
  195. package/dist/renderer/pdf-document-class.js +27 -41
  196. package/dist/renderer/pdf-document-renderer.d.ts +19 -10
  197. package/dist/renderer/pdf-document-renderer.js +135 -91
  198. package/dist/renderer/pdf-renderer.d.ts +2 -2
  199. package/dist/renderer/pdf-renderer.js +165 -90
  200. package/dist/renderer/positioned-renderer.d.ts +6 -0
  201. package/dist/renderer/positioned-renderer.js +10 -0
  202. package/dist/renderer/rectangle-renderer.d.ts +3 -3
  203. package/dist/renderer/rectangle-renderer.js +49 -44
  204. package/dist/renderer/repeating-header-renderer.d.ts +3 -3
  205. package/dist/renderer/repeating-header-renderer.js +10 -26
  206. package/dist/renderer/rotated-renderer.d.ts +7 -0
  207. package/dist/renderer/rotated-renderer.js +29 -0
  208. package/dist/renderer/row-renderer.d.ts +3 -3
  209. package/dist/renderer/row-renderer.js +11 -28
  210. package/dist/renderer/struct-group-renderer.d.ts +10 -0
  211. package/dist/renderer/struct-group-renderer.js +24 -0
  212. package/dist/renderer/text-renderer.d.ts +9 -5
  213. package/dist/renderer/text-renderer.js +437 -89
  214. package/dist/text/advance.d.ts +34 -0
  215. package/dist/text/advance.js +45 -0
  216. package/dist/text/arabic.d.ts +20 -0
  217. package/dist/text/arabic.js +101 -0
  218. package/dist/text/bidi.d.ts +33 -0
  219. package/dist/text/bidi.js +94 -0
  220. package/dist/text/emoji-codepoints.d.ts +1 -0
  221. package/dist/text/emoji-codepoints.js +29 -0
  222. package/dist/text/font-fallback.d.ts +25 -0
  223. package/dist/text/font-fallback.js +38 -0
  224. package/dist/text/line-breaker.d.ts +50 -12
  225. package/dist/text/line-breaker.js +158 -37
  226. package/dist/text/line-metrics.d.ts +49 -0
  227. package/dist/text/line-metrics.js +57 -0
  228. package/dist/text/orphans-widows.d.ts +27 -0
  229. package/dist/text/orphans-widows.js +53 -0
  230. package/dist/text/shape.d.ts +29 -0
  231. package/dist/text/shape.js +67 -0
  232. package/dist/text/text-decoration.d.ts +50 -0
  233. package/dist/text/text-decoration.js +62 -0
  234. package/dist/text/text-style.d.ts +60 -0
  235. package/dist/text/text-style.js +79 -0
  236. package/dist/utils/afm-parser.d.ts +34 -0
  237. package/dist/utils/afm-parser.js +76 -17
  238. package/dist/utils/bytes.d.ts +24 -0
  239. package/dist/utils/bytes.js +76 -0
  240. package/dist/utils/dest-registry.d.ts +22 -0
  241. package/dist/utils/dest-registry.js +32 -0
  242. package/dist/utils/flex-layout.d.ts +36 -9
  243. package/dist/utils/flex-layout.js +207 -30
  244. package/dist/utils/font-metrics.d.ts +20 -1
  245. package/dist/utils/font-metrics.js +1 -2
  246. package/dist/utils/font-path.js +3 -6
  247. package/dist/utils/gsub.d.ts +36 -0
  248. package/dist/utils/gsub.js +178 -0
  249. package/dist/utils/image-helper.d.ts +6 -5
  250. package/dist/utils/image-helper.js +101 -111
  251. package/dist/utils/inflate.d.ts +16 -0
  252. package/dist/utils/inflate.js +52 -0
  253. package/dist/utils/md5.d.ts +4 -0
  254. package/dist/utils/md5.js +79 -0
  255. package/dist/utils/outline.d.ts +21 -0
  256. package/dist/utils/outline.js +79 -0
  257. package/dist/utils/pdf-object-manager.d.ts +110 -8
  258. package/dist/utils/pdf-object-manager.js +583 -141
  259. package/dist/utils/renderer-registry.d.ts +13 -1
  260. package/dist/utils/renderer-registry.js +23 -6
  261. package/dist/utils/struct-tree.d.ts +44 -0
  262. package/dist/utils/struct-tree.js +129 -0
  263. package/dist/utils/ttf-parser.d.ts +134 -2
  264. package/dist/utils/ttf-parser.js +873 -50
  265. package/dist/utils/ttf-subsetter.d.ts +1 -1
  266. package/dist/utils/ttf-subsetter.js +40 -42
  267. package/dist/utils/ua-xmp.d.ts +9 -0
  268. package/dist/utils/ua-xmp.js +32 -0
  269. package/dist/utils/utf8-to-windows1252-encoder.d.ts +6 -0
  270. package/dist/utils/utf8-to-windows1252-encoder.js +11 -4
  271. package/dist/utils/woff.d.ts +10 -0
  272. package/dist/utils/woff.js +116 -0
  273. package/dist/validators/element-validator.d.ts +2 -2
  274. package/dist/validators/element-validator.js +31 -26
  275. package/package.json +22 -2
@@ -1,5 +1,16 @@
1
- import type { PDFConfig } from "../renderer/pdf-document-class";
2
- import type { FontMetrics } from "./font-metrics";
1
+ import type { OverflowPolicy } from "../layout/fragmentation.js";
2
+ import { TTFParser } from "./ttf-parser.js";
3
+ import { type ShapedGlyph } from "../text/shape.js";
4
+ import type { SecurityHandler } from "../crypto/security-handler.js";
5
+ import type { Gradient } from "../ir/display-list.js";
6
+ import type { FontVerticals } from "../text/line-metrics.js";
7
+ import type { FontDecoration } from "../text/text-decoration.js";
8
+ import { StructTree } from "./struct-tree.js";
9
+ import { OutlineBuilder } from "./outline.js";
10
+ import { DestRegistry } from "./dest-registry.js";
11
+ import { AcroFormCollector } from "../forms/acroform.js";
12
+ import type { PDFConfig } from "../renderer/pdf-document-class.js";
13
+ import type { FontMetrics } from "./font-metrics.js";
3
14
  interface FontIndexes {
4
15
  fontIndex: number;
5
16
  resourceIndex: number;
@@ -19,31 +30,69 @@ export declare class PDFObjectManager implements FontMetrics {
19
30
  private fonts;
20
31
  private images;
21
32
  private extGStates;
33
+ private shadings;
34
+ private emojiFontName?;
35
+ private emojiImage?;
22
36
  private pdfConfig;
23
37
  pageFormat: [number, number];
24
38
  private afmParsers;
25
39
  private customFonts;
40
+ private verticalsCache;
41
+ private decorationCache;
26
42
  private customFontEmit;
43
+ private shapeCache;
44
+ private shapedOrigins;
27
45
  private attachments;
28
46
  private xmpMetadata?;
29
47
  private outputIntent?;
30
48
  private pdfVersion;
31
49
  private documentId;
32
50
  private compress;
51
+ private overflowPolicy;
52
+ private security?;
53
+ private encJobs;
54
+ private strJobs;
55
+ private encryptObjNum?;
56
+ private _struct;
57
+ get struct(): StructTree;
58
+ private _outline;
59
+ get outline(): OutlineBuilder;
60
+ private _dests;
61
+ get dests(): DestRegistry;
62
+ private _acroform;
63
+ get acroform(): AcroFormCollector;
33
64
  constructor();
34
65
  addObject(content: string): number;
35
66
  replaceObject(objectNumber: number, content: string): void;
36
67
  setCompress(on: boolean): void;
68
+ setOverflowPolicy(policy: OverflowPolicy): void;
69
+ getOverflowPolicy(): OverflowPolicy;
70
+ private encToken;
71
+ private strToken;
72
+ /**
73
+ * The single choke-point every literal string in an OBJECT goes through - a field's `/T` and `/V`, a
74
+ * bookmark `/Title`, a link `/URI`, an `/Alt` text, a destination name.
75
+ *
76
+ * Without a security handler this is the escaped literal we have always written, so output stays
77
+ * byte-identical. With one, the raw bytes are registered for the finalize pass and a placeholder takes
78
+ * their place: ISO 32000-1 7.6.2 requires ALL strings and streams to be encrypted, and the ones missed
79
+ * here were exactly the values a password is supposed to protect (ISSUE-7).
80
+ *
81
+ * A string INSIDE a content stream needs none of this - the stream is enciphered as a whole.
82
+ */
83
+ pdfString(text: string): string;
84
+ private streamPayload;
37
85
  private stream;
38
86
  addContentStream(content: string): number;
87
+ addFormXObject(bbox: string, content: string, resources?: string): number;
39
88
  changePDFConfig(config: PDFConfig): void;
40
89
  getPDFConfig(): PDFConfig;
41
90
  private fillConfigWithStandardValues;
42
91
  private getCurrentByteLength;
43
92
  setParentObjectNumber(number: number): void;
44
93
  getParentObjectNumber(): number;
45
- registerImage(width: number, height: number, imageType: string, imageData: string): number;
46
- attachFile(name: string, data: Buffer, opts?: {
94
+ registerImage(width: number, height: number, imageType: string, imageData: string, smaskData?: string): number;
95
+ attachFile(name: string, data: Uint8Array, opts?: {
47
96
  relationship?: string;
48
97
  mimeType?: string;
49
98
  description?: string;
@@ -54,7 +103,7 @@ export declare class PDFObjectManager implements FontMetrics {
54
103
  }[];
55
104
  setXmpMetadata(xml: string): void;
56
105
  getXmpMetadata(): string | undefined;
57
- setOutputIntent(icc: Buffer, opts?: {
106
+ setOutputIntent(icc: Uint8Array, opts?: {
58
107
  identifier?: string;
59
108
  info?: string;
60
109
  }): void;
@@ -63,10 +112,15 @@ export declare class PDFObjectManager implements FontMetrics {
63
112
  getPdfVersion(): string;
64
113
  getHeader(): string;
65
114
  enableDocumentId(): void;
115
+ setSecurityHandler(handler: SecurityHandler): void;
116
+ finalizeEncryption(): Promise<void>;
66
117
  registerExtGState(fillAlpha: number, strokeAlpha: number): string;
67
118
  getAllExtGStatesRaw(): Map<string, number>;
119
+ registerShading(g: Gradient): string;
120
+ private buildShadingFunction;
121
+ getAllShadingsRaw(): Map<string, number>;
68
122
  registerFont(fontName: string, fontStyle?: FontStyle, fullName?: string): FontIndexes;
69
- registerCustomFont(name: string, data: Buffer, style?: FontStyle): void;
123
+ registerCustomFont(name: string, data: Uint8Array, style?: FontStyle): void;
70
124
  private ensureEmitted;
71
125
  finalizeCustomFonts(): void;
72
126
  private subsetTag;
@@ -74,18 +128,66 @@ export declare class PDFObjectManager implements FontMetrics {
74
128
  private resolveCustomStyle;
75
129
  private getCustomFont;
76
130
  isCustomFont(name?: string, style?: FontStyle): boolean;
131
+ getColorFont(name: string, style?: FontStyle): TTFParser | undefined;
132
+ setEmojiFont(name: string): void;
133
+ getEmojiFont(): string | undefined;
134
+ setEmojiImageSource(url: string, format: string): void;
135
+ getEmojiImageSource(): {
136
+ url: string;
137
+ format: string;
138
+ } | undefined;
139
+ /**
140
+ * Whether a family can draw this code point at all. An embedded face answers from its `cmap`; a
141
+ * standard-14 one can only draw what Windows-1252 encodes, which is what its `/Widths` array covers.
142
+ * Used to pick a family out of a fallback stack, per code point.
143
+ */
144
+ hasGlyph(codePoint: number, fontFamily: string, fontStyle?: FontStyle): boolean;
145
+ private colorRenders;
77
146
  getCustomFontResource(name: string, style?: FontStyle): FontIndexes | undefined;
147
+ /** How many glyphs a run draws - its code-point count unless a ligature merged some. `letterSpacing`
148
+ * is per glyph (`Tc`), so this is what it multiplies. */
149
+ shapedGlyphCount(text: string, fontFamily?: string, fontStyle?: FontStyle): number | undefined;
150
+ /**
151
+ * The shaped glyphs of a run, or undefined when nothing needed shaping. The ONE place shaping is
152
+ * decided, so measuring and drawing cannot disagree. Memoised: a paragraph is measured several
153
+ * times (layout, pagination, drawing).
154
+ */
155
+ shapeText(text: string, fontFamily?: string, fontStyle?: FontStyle): ShapedGlyph[] | undefined;
156
+ /** Hex Identity-H for glyphs the producer already resolved (a shaped run), which cannot be given as
157
+ * text. Recording each keeps it in the subset. */
158
+ registerGlyphs(name: string, glyphs: readonly number[], style?: FontStyle): string;
78
159
  encodeCustomText(name: string, text: string, style?: FontStyle): string;
79
160
  private buildFontFile2;
80
161
  private buildFontDescriptor;
81
162
  private buildCIDFont;
82
163
  private buildToUnicode;
83
164
  private buildType0;
165
+ getFontVerticals(fontFamily: string, fontStyle: FontStyle): FontVerticals;
166
+ getFontDecoration(fontFamily: string, fontStyle: FontStyle): FontDecoration;
167
+ kerningEnabled: boolean;
168
+ setKerning(enabled: boolean): void;
169
+ /**
170
+ * The kerning adjustment for each adjacent code-point pair of `text`, in em/1000 (the sign the
171
+ * font declares: negative tightens). Length is `codePointCount - 1`. Zero at any pair next to a
172
+ * space - letters are never kerned against a space, which also keeps a per-word measure equal to a
173
+ * whole-line one (the space pairs contribute nothing either way).
174
+ *
175
+ * Standard-14 answers from the AFM `KPX` pairs. An embedded font has no kerning yet (its `kern` /
176
+ * `GPOS` tables are unparsed), so it returns zeros - never a wrong value, just no adjustment.
177
+ */
178
+ getKernPairs(text: string, fontFamily: string, fontStyle: FontStyle): number[];
179
+ /**
180
+ * Where the glyphs of `text` put ink inside a horizontal band, as x-intervals in POINTS measured
181
+ * from the start of the run. This is what an underline steps around ("skip-ink").
182
+ *
183
+ * `bandTop` / `bandBottom` are in points relative to the baseline, y UP (so both negative under
184
+ * it). Only an EMBEDDED font can answer: the standard-14 outlines live in the viewer, not here.
185
+ * Callers must check `isCustomFont` first rather than treat an empty result as "no descenders".
186
+ */
187
+ getInkSpansInBand(text: string, fontSize: number, fontFamily: string, fontStyle: FontStyle, bandTop: number, bandBottom: number, letterSpacing?: number): Array<[number, number]>;
84
188
  getStringWidth(text: string, fontFamily: string, fontSize: number, fontStyle: FontStyle): number;
85
- private getCharCode;
86
189
  private getAVMParserByFont;
87
190
  getCharWidth(char: string, fontSize: number, fullFontName?: string, fontName?: string, fontStyle?: FontStyle): number;
88
- private getKerning;
89
191
  getAllFontsRaw(): Map<string, FontIndexes>;
90
192
  getAllImagesRaw(): Map<string, number>;
91
193
  getRenderedObjects(): string;