pretext-pdf 1.1.1 → 1.7.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 (342) hide show
  1. package/CHANGELOG.md +689 -0
  2. package/README.md +82 -7
  3. package/dist/allowed-props.d.ts +76 -0
  4. package/dist/allowed-props.d.ts.map +1 -1
  5. package/dist/allowed-props.js.map +1 -1
  6. package/dist/assets/generators/barcode.d.ts +9 -0
  7. package/dist/assets/generators/barcode.d.ts.map +1 -0
  8. package/dist/assets/generators/barcode.js +24 -0
  9. package/dist/assets/generators/barcode.js.map +1 -0
  10. package/dist/assets/generators/chart.d.ts +13 -0
  11. package/dist/assets/generators/chart.d.ts.map +1 -0
  12. package/dist/assets/generators/chart.js +32 -0
  13. package/dist/assets/generators/chart.js.map +1 -0
  14. package/dist/assets/generators/qr.d.ts +9 -0
  15. package/dist/assets/generators/qr.d.ts.map +1 -0
  16. package/dist/assets/generators/qr.js +25 -0
  17. package/dist/assets/generators/qr.js.map +1 -0
  18. package/dist/assets/index.d.ts +19 -0
  19. package/dist/assets/index.d.ts.map +1 -0
  20. package/dist/assets/index.js +19 -0
  21. package/dist/assets/index.js.map +1 -0
  22. package/dist/assets/loaders/images.d.ts +20 -0
  23. package/dist/assets/loaders/images.d.ts.map +1 -0
  24. package/dist/assets/loaders/images.js +69 -0
  25. package/dist/assets/loaders/images.js.map +1 -0
  26. package/dist/assets/loaders/orchestrator.d.ts +24 -0
  27. package/dist/assets/loaders/orchestrator.d.ts.map +1 -0
  28. package/dist/assets/loaders/orchestrator.js +109 -0
  29. package/dist/assets/loaders/orchestrator.js.map +1 -0
  30. package/dist/assets/loaders/vectors.d.ts +25 -0
  31. package/dist/assets/loaders/vectors.d.ts.map +1 -0
  32. package/dist/assets/loaders/vectors.js +118 -0
  33. package/dist/assets/loaders/vectors.js.map +1 -0
  34. package/dist/assets/loaders/watermark.d.ts +12 -0
  35. package/dist/assets/loaders/watermark.d.ts.map +1 -0
  36. package/dist/assets/loaders/watermark.js +40 -0
  37. package/dist/assets/loaders/watermark.js.map +1 -0
  38. package/dist/assets/security/fetch.d.ts +14 -0
  39. package/dist/assets/security/fetch.d.ts.map +1 -0
  40. package/dist/assets/security/fetch.js +112 -0
  41. package/dist/assets/security/fetch.js.map +1 -0
  42. package/dist/assets/security/ipv4-normalize.d.ts +28 -0
  43. package/dist/assets/security/ipv4-normalize.d.ts.map +1 -0
  44. package/dist/assets/security/ipv4-normalize.js +116 -0
  45. package/dist/assets/security/ipv4-normalize.js.map +1 -0
  46. package/dist/assets/security/path-allowlist.d.ts +12 -0
  47. package/dist/assets/security/path-allowlist.d.ts.map +1 -0
  48. package/dist/assets/security/path-allowlist.js +26 -0
  49. package/dist/assets/security/path-allowlist.js.map +1 -0
  50. package/dist/assets/security/url-validation.d.ts +22 -0
  51. package/dist/assets/security/url-validation.d.ts.map +1 -0
  52. package/dist/assets/security/url-validation.js +164 -0
  53. package/dist/assets/security/url-validation.js.map +1 -0
  54. package/dist/assets/svg/dimensions.d.ts +19 -0
  55. package/dist/assets/svg/dimensions.d.ts.map +1 -0
  56. package/dist/assets/svg/dimensions.js +43 -0
  57. package/dist/assets/svg/dimensions.js.map +1 -0
  58. package/dist/assets/svg/rasterize.d.ts +6 -0
  59. package/dist/assets/svg/rasterize.d.ts.map +1 -0
  60. package/dist/assets/svg/rasterize.js +38 -0
  61. package/dist/assets/svg/rasterize.js.map +1 -0
  62. package/dist/assets/svg/resolve-content.d.ts +16 -0
  63. package/dist/assets/svg/resolve-content.d.ts.map +1 -0
  64. package/dist/assets/svg/resolve-content.js +38 -0
  65. package/dist/assets/svg/resolve-content.js.map +1 -0
  66. package/dist/assets/svg/sanitize.d.ts +22 -0
  67. package/dist/assets/svg/sanitize.d.ts.map +1 -0
  68. package/dist/assets/svg/sanitize.js +46 -0
  69. package/dist/assets/svg/sanitize.js.map +1 -0
  70. package/dist/assets/util/redact-path.d.ts +14 -0
  71. package/dist/assets/util/redact-path.d.ts.map +1 -0
  72. package/dist/assets/util/redact-path.js +16 -0
  73. package/dist/assets/util/redact-path.js.map +1 -0
  74. package/dist/assets.d.ts +10 -27
  75. package/dist/assets.d.ts.map +1 -1
  76. package/dist/assets.js +10 -549
  77. package/dist/assets.js.map +1 -1
  78. package/dist/builder.d.ts.map +1 -1
  79. package/dist/builder.js +2 -1
  80. package/dist/builder.js.map +1 -1
  81. package/dist/cli.js +11 -1
  82. package/dist/cli.js.map +1 -1
  83. package/dist/compat.d.ts +63 -1
  84. package/dist/compat.d.ts.map +1 -1
  85. package/dist/compat.js +42 -5
  86. package/dist/compat.js.map +1 -1
  87. package/dist/errors.d.ts +2 -2
  88. package/dist/errors.d.ts.map +1 -1
  89. package/dist/errors.js +2 -2
  90. package/dist/errors.js.map +1 -1
  91. package/dist/fonts.d.ts.map +1 -1
  92. package/dist/fonts.js +8 -10
  93. package/dist/fonts.js.map +1 -1
  94. package/dist/index.d.ts +1 -1
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +7 -5
  97. package/dist/index.js.map +1 -1
  98. package/dist/layout-state.d.ts +1 -1
  99. package/dist/layout-state.d.ts.map +1 -1
  100. package/dist/layout-state.js +5 -0
  101. package/dist/layout-state.js.map +1 -1
  102. package/dist/measure-blocks/float-group.d.ts +9 -0
  103. package/dist/measure-blocks/float-group.d.ts.map +1 -0
  104. package/dist/measure-blocks/float-group.js +103 -0
  105. package/dist/measure-blocks/float-group.js.map +1 -0
  106. package/dist/measure-blocks/helpers.d.ts +44 -0
  107. package/dist/measure-blocks/helpers.d.ts.map +1 -0
  108. package/dist/measure-blocks/helpers.js +43 -0
  109. package/dist/measure-blocks/helpers.js.map +1 -0
  110. package/dist/measure-blocks/highlight.d.ts +26 -0
  111. package/dist/measure-blocks/highlight.d.ts.map +1 -0
  112. package/dist/measure-blocks/highlight.js +169 -0
  113. package/dist/measure-blocks/highlight.js.map +1 -0
  114. package/dist/measure-blocks/image.d.ts +9 -0
  115. package/dist/measure-blocks/image.d.ts.map +1 -0
  116. package/dist/measure-blocks/image.js +136 -0
  117. package/dist/measure-blocks/image.js.map +1 -0
  118. package/dist/measure-blocks/index.d.ts +24 -0
  119. package/dist/measure-blocks/index.d.ts.map +1 -0
  120. package/dist/measure-blocks/index.js +179 -0
  121. package/dist/measure-blocks/index.js.map +1 -0
  122. package/dist/measure-blocks/list.d.ts +8 -0
  123. package/dist/measure-blocks/list.d.ts.map +1 -0
  124. package/dist/measure-blocks/list.js +108 -0
  125. package/dist/measure-blocks/list.js.map +1 -0
  126. package/dist/measure-blocks/simple-blocks.d.ts +18 -0
  127. package/dist/measure-blocks/simple-blocks.d.ts.map +1 -0
  128. package/dist/measure-blocks/simple-blocks.js +121 -0
  129. package/dist/measure-blocks/simple-blocks.js.map +1 -0
  130. package/dist/measure-blocks/table/columns.d.ts +17 -0
  131. package/dist/measure-blocks/table/columns.d.ts.map +1 -0
  132. package/dist/measure-blocks/table/columns.js +83 -0
  133. package/dist/measure-blocks/table/columns.js.map +1 -0
  134. package/dist/measure-blocks/table/measure.d.ts +8 -0
  135. package/dist/measure-blocks/table/measure.d.ts.map +1 -0
  136. package/dist/measure-blocks/table/measure.js +231 -0
  137. package/dist/measure-blocks/table/measure.js.map +1 -0
  138. package/dist/measure-blocks/table/spans.d.ts +25 -0
  139. package/dist/measure-blocks/table/spans.d.ts.map +1 -0
  140. package/dist/measure-blocks/table/spans.js +55 -0
  141. package/dist/measure-blocks/table/spans.js.map +1 -0
  142. package/dist/measure-blocks/text-blocks.d.ts +17 -0
  143. package/dist/measure-blocks/text-blocks.d.ts.map +1 -0
  144. package/dist/measure-blocks/text-blocks.js +242 -0
  145. package/dist/measure-blocks/text-blocks.js.map +1 -0
  146. package/dist/measure-text.d.ts +21 -3
  147. package/dist/measure-text.d.ts.map +1 -1
  148. package/dist/measure-text.js +87 -36
  149. package/dist/measure-text.js.map +1 -1
  150. package/dist/measure.d.ts +1 -1
  151. package/dist/measure.d.ts.map +1 -1
  152. package/dist/measure.js +8 -6
  153. package/dist/measure.js.map +1 -1
  154. package/dist/node-polyfill.d.ts.map +1 -1
  155. package/dist/node-polyfill.js +9 -0
  156. package/dist/node-polyfill.js.map +1 -1
  157. package/dist/pipeline-footnotes.d.ts +1 -1
  158. package/dist/pipeline-footnotes.d.ts.map +1 -1
  159. package/dist/pipeline-toc.d.ts +1 -1
  160. package/dist/pipeline-toc.d.ts.map +1 -1
  161. package/dist/pipeline.d.ts +3 -3
  162. package/dist/pipeline.d.ts.map +1 -1
  163. package/dist/pipeline.js +4 -5
  164. package/dist/pipeline.js.map +1 -1
  165. package/dist/plugin-types.d.ts +1 -1
  166. package/dist/plugin-types.d.ts.map +1 -1
  167. package/dist/post-process.d.ts +2 -2
  168. package/dist/post-process.d.ts.map +1 -1
  169. package/dist/post-process.js +47 -10
  170. package/dist/post-process.js.map +1 -1
  171. package/dist/render-blocks/blockquote.d.ts +7 -0
  172. package/dist/render-blocks/blockquote.d.ts.map +1 -0
  173. package/dist/render-blocks/blockquote.js +87 -0
  174. package/dist/render-blocks/blockquote.js.map +1 -0
  175. package/dist/render-blocks/callout.d.ts +7 -0
  176. package/dist/render-blocks/callout.d.ts.map +1 -0
  177. package/dist/render-blocks/callout.js +84 -0
  178. package/dist/render-blocks/callout.js.map +1 -0
  179. package/dist/render-blocks/code.d.ts +7 -0
  180. package/dist/render-blocks/code.d.ts.map +1 -0
  181. package/dist/render-blocks/code.js +84 -0
  182. package/dist/render-blocks/code.js.map +1 -0
  183. package/dist/render-blocks/footnote.d.ts +11 -0
  184. package/dist/render-blocks/footnote.d.ts.map +1 -0
  185. package/dist/render-blocks/footnote.js +45 -0
  186. package/dist/render-blocks/footnote.js.map +1 -0
  187. package/dist/render-blocks/header-footer.d.ts +11 -0
  188. package/dist/render-blocks/header-footer.d.ts.map +1 -0
  189. package/dist/render-blocks/header-footer.js +56 -0
  190. package/dist/render-blocks/header-footer.js.map +1 -0
  191. package/dist/render-blocks/hr.d.ts +7 -0
  192. package/dist/render-blocks/hr.d.ts.map +1 -0
  193. package/dist/render-blocks/hr.js +24 -0
  194. package/dist/render-blocks/hr.js.map +1 -0
  195. package/dist/render-blocks/image.d.ts +9 -0
  196. package/dist/render-blocks/image.d.ts.map +1 -0
  197. package/dist/render-blocks/image.js +135 -0
  198. package/dist/render-blocks/image.js.map +1 -0
  199. package/dist/render-blocks/index.d.ts +17 -0
  200. package/dist/render-blocks/index.d.ts.map +1 -0
  201. package/dist/render-blocks/index.js +17 -0
  202. package/dist/render-blocks/index.js.map +1 -0
  203. package/dist/render-blocks/list-item.d.ts +7 -0
  204. package/dist/render-blocks/list-item.d.ts.map +1 -0
  205. package/dist/render-blocks/list-item.js +80 -0
  206. package/dist/render-blocks/list-item.js.map +1 -0
  207. package/dist/render-blocks/rich.d.ts +7 -0
  208. package/dist/render-blocks/rich.d.ts.map +1 -0
  209. package/dist/render-blocks/rich.js +160 -0
  210. package/dist/render-blocks/rich.js.map +1 -0
  211. package/dist/render-blocks/table.d.ts +7 -0
  212. package/dist/render-blocks/table.d.ts.map +1 -0
  213. package/dist/render-blocks/table.js +139 -0
  214. package/dist/render-blocks/table.js.map +1 -0
  215. package/dist/render-blocks/text.d.ts +7 -0
  216. package/dist/render-blocks/text.d.ts.map +1 -0
  217. package/dist/render-blocks/text.js +183 -0
  218. package/dist/render-blocks/text.js.map +1 -0
  219. package/dist/render-blocks/watermark.d.ts +8 -0
  220. package/dist/render-blocks/watermark.d.ts.map +1 -0
  221. package/dist/render-blocks/watermark.js +52 -0
  222. package/dist/render-blocks/watermark.js.map +1 -0
  223. package/dist/render-extras.d.ts.map +1 -1
  224. package/dist/render-extras.js +1 -2
  225. package/dist/render-extras.js.map +1 -1
  226. package/dist/render-utils.d.ts.map +1 -1
  227. package/dist/render-utils.js +10 -6
  228. package/dist/render-utils.js.map +1 -1
  229. package/dist/render.d.ts.map +1 -1
  230. package/dist/render.js +9 -3
  231. package/dist/render.js.map +1 -1
  232. package/dist/rich-text.d.ts +2 -1
  233. package/dist/rich-text.d.ts.map +1 -1
  234. package/dist/rich-text.js +0 -1
  235. package/dist/rich-text.js.map +1 -1
  236. package/dist/types-internal.d.ts +19 -3
  237. package/dist/types-internal.d.ts.map +1 -1
  238. package/dist/types-public/document.d.ts +261 -0
  239. package/dist/types-public/document.d.ts.map +1 -0
  240. package/dist/types-public/document.js +2 -0
  241. package/dist/types-public/document.js.map +1 -0
  242. package/dist/types-public/elements-block.d.ts +246 -0
  243. package/dist/types-public/elements-block.d.ts.map +1 -0
  244. package/dist/types-public/elements-block.js +8 -0
  245. package/dist/types-public/elements-block.js.map +1 -0
  246. package/dist/types-public/elements-media.d.ts +199 -0
  247. package/dist/types-public/elements-media.d.ts.map +1 -0
  248. package/dist/types-public/elements-media.js +2 -0
  249. package/dist/types-public/elements-media.js.map +1 -0
  250. package/dist/types-public/elements-text.d.ts +327 -0
  251. package/dist/types-public/elements-text.d.ts.map +1 -0
  252. package/dist/types-public/elements-text.js +2 -0
  253. package/dist/types-public/elements-text.js.map +1 -0
  254. package/dist/types-public/index.d.ts +14 -0
  255. package/dist/types-public/index.d.ts.map +1 -0
  256. package/dist/types-public/index.js +2 -0
  257. package/dist/types-public/index.js.map +1 -0
  258. package/dist/types-public/render-options.d.ts +38 -0
  259. package/dist/types-public/render-options.d.ts.map +1 -0
  260. package/dist/types-public/render-options.js +2 -0
  261. package/dist/types-public/render-options.js.map +1 -0
  262. package/dist/types-public/union.d.ts +13 -0
  263. package/dist/types-public/union.d.ts.map +1 -0
  264. package/dist/types-public/union.js +2 -0
  265. package/dist/types-public/union.js.map +1 -0
  266. package/dist/types-public/validation.d.ts +64 -0
  267. package/dist/types-public/validation.d.ts.map +1 -0
  268. package/dist/types-public/validation.js +2 -0
  269. package/dist/types-public/validation.js.map +1 -0
  270. package/dist/types-public.d.ts +5 -1081
  271. package/dist/types-public.d.ts.map +1 -1
  272. package/dist/types.d.ts +1 -1
  273. package/dist/types.d.ts.map +1 -1
  274. package/dist/validate/document.d.ts +28 -0
  275. package/dist/validate/document.d.ts.map +1 -0
  276. package/dist/validate/document.js +295 -0
  277. package/dist/validate/document.js.map +1 -0
  278. package/dist/validate/elements/forms-floats.d.ts +19 -0
  279. package/dist/validate/elements/forms-floats.d.ts.map +1 -0
  280. package/dist/validate/elements/forms-floats.js +96 -0
  281. package/dist/validate/elements/forms-floats.js.map +1 -0
  282. package/dist/validate/elements/list.d.ts +10 -0
  283. package/dist/validate/elements/list.d.ts.map +1 -0
  284. package/dist/validate/elements/list.js +66 -0
  285. package/dist/validate/elements/list.js.map +1 -0
  286. package/dist/validate/elements/media.d.ts +23 -0
  287. package/dist/validate/elements/media.d.ts.map +1 -0
  288. package/dist/validate/elements/media.js +179 -0
  289. package/dist/validate/elements/media.js.map +1 -0
  290. package/dist/validate/elements/structural-simple.d.ts +21 -0
  291. package/dist/validate/elements/structural-simple.d.ts.map +1 -0
  292. package/dist/validate/elements/structural-simple.js +63 -0
  293. package/dist/validate/elements/structural-simple.js.map +1 -0
  294. package/dist/validate/elements/structural.d.ts +12 -0
  295. package/dist/validate/elements/structural.d.ts.map +1 -0
  296. package/dist/validate/elements/structural.js +12 -0
  297. package/dist/validate/elements/structural.js.map +1 -0
  298. package/dist/validate/elements/table.d.ts +10 -0
  299. package/dist/validate/elements/table.d.ts.map +1 -0
  300. package/dist/validate/elements/table.js +165 -0
  301. package/dist/validate/elements/table.js.map +1 -0
  302. package/dist/validate/elements/text.d.ts +26 -0
  303. package/dist/validate/elements/text.d.ts.map +1 -0
  304. package/dist/validate/elements/text.js +331 -0
  305. package/dist/validate/elements/text.js.map +1 -0
  306. package/dist/validate/errors.d.ts +9 -0
  307. package/dist/validate/errors.d.ts.map +1 -0
  308. package/dist/validate/errors.js +43 -0
  309. package/dist/validate/errors.js.map +1 -0
  310. package/dist/validate/fonts.d.ts +11 -0
  311. package/dist/validate/fonts.d.ts.map +1 -0
  312. package/dist/validate/fonts.js +118 -0
  313. package/dist/validate/fonts.js.map +1 -0
  314. package/dist/validate/helpers.d.ts +76 -0
  315. package/dist/validate/helpers.d.ts.map +1 -0
  316. package/dist/validate/helpers.js +169 -0
  317. package/dist/validate/helpers.js.map +1 -0
  318. package/dist/validate/index.d.ts +37 -0
  319. package/dist/validate/index.d.ts.map +1 -0
  320. package/dist/validate/index.js +279 -0
  321. package/dist/validate/index.js.map +1 -0
  322. package/dist/validate.d.ts +6 -18
  323. package/dist/validate.d.ts.map +1 -1
  324. package/dist/validate.js +6 -1585
  325. package/dist/validate.js.map +1 -1
  326. package/dist/vendor/pretext/VERSION.d.ts +3 -0
  327. package/dist/vendor/pretext/VERSION.d.ts.map +1 -0
  328. package/dist/vendor/pretext/VERSION.js +12 -0
  329. package/dist/vendor/pretext/VERSION.js.map +1 -0
  330. package/dist/version-check.d.ts +47 -0
  331. package/dist/version-check.d.ts.map +1 -0
  332. package/dist/version-check.js +75 -0
  333. package/dist/version-check.js.map +1 -0
  334. package/package.json +30 -7
  335. package/dist/measure-blocks.d.ts +0 -26
  336. package/dist/measure-blocks.d.ts.map +0 -1
  337. package/dist/measure-blocks.js +0 -1317
  338. package/dist/measure-blocks.js.map +0 -1
  339. package/dist/render-blocks.d.ts +0 -28
  340. package/dist/render-blocks.d.ts.map +0 -1
  341. package/dist/render-blocks.js +0 -1059
  342. package/dist/render-blocks.js.map +0 -1
@@ -2,17 +2,35 @@
2
2
  * measure-text.ts — Low-level text and font measurement primitives
3
3
  * No document-element knowledge. Used by all measurement modules.
4
4
  */
5
+ export declare function setBidiWarnFn(fn: (msg: string) => void): void;
5
6
  export type HyphenatorOpts = {
6
7
  instance: HypherInstance;
7
8
  minWordLength: number;
8
9
  leftMin: number;
9
10
  rightMin: number;
10
11
  };
12
+ /** Maximum entries retained in a wordWidthCache before FIFO eviction kicks in. */
13
+ export declare const WORD_WIDTH_CACHE_MAX = 50000;
11
14
  type HypherInstance = {
12
15
  hyphenate(word: string): string[];
13
16
  };
14
17
  export declare function getPretext(): Promise<typeof import("./vendor/pretext/layout.js")>;
15
18
  export declare function getHyphenator(language: string): Promise<HypherInstance>;
19
+ /**
20
+ * Pure auto-detection of dominant text direction. Returns true if RTL characters
21
+ * are present and at least as numerous as ASCII LTR characters.
22
+ */
23
+ export declare function autoDetectRTL(text: string): boolean;
24
+ /**
25
+ * Resolve effective text direction. Explicit `ltr` / `rtl` always wins —
26
+ * auto-detect never runs for explicit overrides.
27
+ *
28
+ * Bug fix (B3): previously the auto-detect path could silently flip an
29
+ * explicitly-set `dir: 'rtl'` paragraph back to LTR when its text happened to
30
+ * be ASCII-only (e.g. a romanized RTL placeholder or a translation tag).
31
+ * Routing explicit dir through this helper makes the override authoritative.
32
+ */
33
+ export declare function determineDirection(text: string, explicitDir?: 'ltr' | 'rtl' | 'auto'): boolean;
16
34
  /**
17
35
  * Detect text direction and apply Unicode Bidi Algorithm (TR9) for visual reordering.
18
36
  * Returns the visual-order text ready for measurement and rendering.
@@ -25,7 +43,7 @@ export declare function detectAndReorderRTL(text: string, dirOverride?: 'ltr' |
25
43
  /**
26
44
  * Measure a single word's rendered width using pretext at maxWidth=99999.
27
45
  */
28
- export declare function measureWord(word: string, fontString: string): Promise<number>;
46
+ export declare function measureWord(word: string, fontString: string, cache?: Map<string, number>): Promise<number>;
29
47
  /**
30
48
  * Measure unwrapped (single-line) text width using pretext at large maxWidth.
31
49
  * Handles multi-line text by returning the max width across all lines.
@@ -37,7 +55,7 @@ export declare function getThaiSegmenter(): Intl.Segmenter | null;
37
55
  * Handles CJK (character-level breaks), Thai/Lao (Intl.Segmenter), and Latin (space + hyphens).
38
56
  * Returns lines with actual hyphens added to hyphenated words.
39
57
  */
40
- export declare function measureTextWithHyphenation(text: string, fontString: string, maxWidth: number, opts: HyphenatorOpts): Promise<Array<{
58
+ export declare function measureTextWithHyphenation(text: string, fontString: string, maxWidth: number, opts: HyphenatorOpts, docWordCache?: Map<string, number>): Promise<Array<{
41
59
  text: string;
42
60
  width: number;
43
61
  }>>;
@@ -45,7 +63,7 @@ export declare function measureTextWithHyphenation(text: string, fontString: str
45
63
  * Core text measurement: delegates to hyphenation path or direct Pretext layout.
46
64
  * If no hyphenator is available, falls back to direct layout (text wraps without hyphens).
47
65
  */
48
- export declare function measureText(text: string, fontSize: number, fontFamily: string, fontWeight: 400 | 700, maxWidth: number, lineHeight: number, hyphenatorOpts?: HyphenatorOpts): Promise<Array<{
66
+ export declare function measureText(text: string, fontSize: number, fontFamily: string, fontWeight: 400 | 700, maxWidth: number, _lineHeight: number, hyphenatorOpts?: HyphenatorOpts, wordWidthCache?: Map<string, number>): Promise<Array<{
49
67
  text: string;
50
68
  width: number;
51
69
  }>>;
@@ -1 +1 @@
1
- {"version":3,"file":"measure-text.d.ts","sourceRoot":"","sources":["../src/measure-text.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAA;AAEnH,KAAK,cAAc,GAAG;IAAE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,CAAA;AAK3D,wBAAsB,UAAU,yDAK/B;AAID,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAc7E;AAID;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GACnC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA6C9D;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOnF;AAID;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,GAAG,GAAG,GAAG,GACpB,OAAO,CAAC,MAAM,CAAC,CAajB;AAoDD,wBAAgB,gBAAgB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAWxD;AAqHD;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAkIjD;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,GAAG,GAAG,GAAG,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CA0BjD"}
1
+ {"version":3,"file":"measure-text.d.ts","sourceRoot":"","sources":["../src/measure-text.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,wBAAgB,aAAa,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAE7D;AAED,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAA;AAEnH,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,QAAS,CAAA;AAE1C,KAAK,cAAc,GAAG;IAAE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,CAAA;AAK3D,wBAAsB,UAAU,yDAK/B;AAID,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAc7E;AASD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAInD;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAK9F;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GACnC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA2C9D;AAID;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAID;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,GAAG,GAAG,GAAG,GACpB,OAAO,CAAC,MAAM,CAAC,CAajB;AAoDD,wBAAgB,gBAAgB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAWxD;AAoHD;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,cAAc,EACpB,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAqIjD;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,GAAG,GAAG,GAAG,EACrB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,cAAc,EAC/B,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CA0BjD"}
@@ -3,6 +3,14 @@
3
3
  * No document-element knowledge. Used by all measurement modules.
4
4
  */
5
5
  import { PretextPdfError } from './errors.js';
6
+ // Module-level bidi warn bridge — lets render() thread a structured logger without
7
+ // changing detectAndReorderRTL's call signature at all 6 measure-blocks.ts call sites.
8
+ let _warnFn = (msg) => console.warn(msg);
9
+ export function setBidiWarnFn(fn) {
10
+ _warnFn = fn;
11
+ }
12
+ /** Maximum entries retained in a wordWidthCache before FIFO eviction kicks in. */
13
+ export const WORD_WIDTH_CACHE_MAX = 50_000;
6
14
  /** Lazily-loaded Pretext module — must be imported AFTER polyfill is installed */
7
15
  let _pretext = null;
8
16
  export async function getPretext() {
@@ -26,64 +34,105 @@ export async function getHyphenator(language) {
26
34
  return new Hypher(dict);
27
35
  }
28
36
  // ─── RTL Text Support (Unicode Bidirectional Algorithm via bidi-js) ────────────
37
+ /** Full RTL block coverage (UAX #9): Hebrew, Arabic, Syriac, Thaana, NKo, Samaritan, Mandaic,
38
+ * Arabic Supplement/Extended, plus historical RTL scripts. */
39
+ const RTL_CHAR_RE = /[֐-ࣿיִ-ﭏﭐ-﷿ﹰ-\u{10800}-\u{10CFF}\u{10D00}-\u{10D3F}\u{10E80}-\u{10EFF}\u{10F30}-\u{10FFF}\u{1E800}-\u{1E95F}\u{1EC70}-\u{1ECBF}\u{1EE00}-\u{1EEFF}]/gu;
40
+ const LTR_CHAR_RE = /[a-zA-Z0-9]/g;
41
+ /**
42
+ * Pure auto-detection of dominant text direction. Returns true if RTL characters
43
+ * are present and at least as numerous as ASCII LTR characters.
44
+ */
45
+ export function autoDetectRTL(text) {
46
+ const rtlCount = (text.match(RTL_CHAR_RE) ?? []).length;
47
+ const ltrCount = (text.match(LTR_CHAR_RE) ?? []).length;
48
+ return rtlCount > 0 && rtlCount >= ltrCount;
49
+ }
50
+ /**
51
+ * Resolve effective text direction. Explicit `ltr` / `rtl` always wins —
52
+ * auto-detect never runs for explicit overrides.
53
+ *
54
+ * Bug fix (B3): previously the auto-detect path could silently flip an
55
+ * explicitly-set `dir: 'rtl'` paragraph back to LTR when its text happened to
56
+ * be ASCII-only (e.g. a romanized RTL placeholder or a translation tag).
57
+ * Routing explicit dir through this helper makes the override authoritative.
58
+ */
59
+ export function determineDirection(text, explicitDir) {
60
+ if (explicitDir === 'rtl')
61
+ return true;
62
+ if (explicitDir === 'ltr')
63
+ return false;
64
+ // explicitDir === 'auto' or undefined → auto-detect
65
+ return autoDetectRTL(text);
66
+ }
29
67
  /**
30
68
  * Detect text direction and apply Unicode Bidi Algorithm (TR9) for visual reordering.
31
69
  * Returns the visual-order text ready for measurement and rendering.
32
70
  */
33
71
  export async function detectAndReorderRTL(text, dirOverride) {
34
- // Step 1: Explicit override takes priority
35
- if (dirOverride === 'ltr') {
72
+ const isRTL = determineDirection(text, dirOverride);
73
+ if (!isRTL) {
36
74
  return { visual: text, isRTL: false, logical: text };
37
75
  }
38
- if (dirOverride === 'rtl') {
39
- try {
40
- // @ts-ignore bidi-js has no type definitions
41
- const bidiFactory = (await import('bidi-js')).default;
42
- const bidi = typeof bidiFactory === 'function' ? bidiFactory() : bidiFactory;
43
- const { getEmbeddingLevels, getReorderedString } = bidi;
44
- const embedLevelsResult = getEmbeddingLevels(text, 'rtl');
45
- const visual = getReorderedString(text, embedLevelsResult);
46
- return { visual, isRTL: true, logical: text };
47
- }
48
- catch (err) {
49
- console.error('[pretext-pdf] bidi-js RTL reordering failed rendering logical order as fallback:', err);
76
+ // Apply bidi algorithm (TR9) to reorder visually. We split two failure modes:
77
+ // 1. bidi-js can't be loaded (missing peer install) → warn and render LTR,
78
+ // because logical-order text with isRTL:true would be VISUALLY BROKEN.
79
+ // 2. bidi-js loaded but threw during reordering → real bug, surface it as
80
+ // PretextPdfError so callers can decide.
81
+ let bidiMod;
82
+ try {
83
+ // @ts-ignore bidi-js has no type definitions
84
+ bidiMod = (await import('bidi-js')).default;
85
+ }
86
+ catch (importErr) {
87
+ const msg = importErr instanceof Error ? importErr.message : String(importErr);
88
+ if (/Cannot find module|Cannot find package|ERR_MODULE_NOT_FOUND/.test(msg)) {
89
+ _warnFn('[pretext-pdf] bidi-js is not installed; RTL text may render incorrectly. ' +
90
+ 'Install bidi-js to enable proper bidi reordering: npm install bidi-js');
91
+ // Better to render LTR than to mirror logical-order text under RTL alignment.
50
92
  return { visual: text, isRTL: false, logical: text };
51
93
  }
94
+ // Module loaded but something else went wrong during import — surface it.
95
+ throw new PretextPdfError('RTL_REORDER_FAILED', `bidi-js import failed: ${msg}`);
52
96
  }
53
- // Step 2: Auto-detect dominant direction (full RTL block coverage, UAX #9)
54
- const rtlRanges = /[\u0590-\u08FF\uFB1D-\uFB4F\uFB50-\uFDFF\uFE70-\uFEFF\u{10800}-\u{10CFF}\u{10D00}-\u{10D3F}\u{10E80}-\u{10EFF}\u{10F30}-\u{10FFF}\u{1E800}-\u{1E95F}\u{1EC70}-\u{1ECBF}\u{1EE00}-\u{1EEFF}]/gu;
55
- const rtlCount = (text.match(rtlRanges) ?? []).length;
56
- const ltrCount = (text.match(/[a-zA-Z0-9]/g) ?? []).length;
57
- const isRTL = rtlCount > 0 && rtlCount >= ltrCount;
58
- if (!isRTL) {
59
- return { visual: text, isRTL: false, logical: text };
60
- }
61
- // Step 3: Apply bidi algorithm (TR9) to reorder visually
62
97
  try {
63
- // @ts-ignore bidi-js has no type definitions
64
- const bidiFactory = (await import('bidi-js')).default;
65
- const bidi = typeof bidiFactory === 'function' ? bidiFactory() : bidiFactory;
98
+ const bidi = typeof bidiMod === 'function' ? bidiMod() : bidiMod;
66
99
  const { getEmbeddingLevels, getReorderedString } = bidi;
67
100
  const embedLevelsResult = getEmbeddingLevels(text, 'rtl');
68
101
  const visual = getReorderedString(text, embedLevelsResult);
69
102
  return { visual, isRTL: true, logical: text };
70
103
  }
71
104
  catch (err) {
72
- console.warn('[pretext-pdf] bidi-js error during RTL reordering:', err);
73
- return { visual: text, isRTL: false, logical: text };
105
+ // bidi-js is installed but threw on real input — this is a real error.
106
+ throw new PretextPdfError('RTL_REORDER_FAILED', `bidi-js reorder failed: ${err instanceof Error ? err.message : String(err)}`);
74
107
  }
75
108
  }
109
+ // (Legacy duplicated auto-detect + bidi block removed — logic merged into
110
+ // determineDirection() + detectAndReorderRTL() above for the B3 fix.)
76
111
  /**
77
112
  * Measure a single word's rendered width using pretext at maxWidth=99999.
78
113
  */
79
- export async function measureWord(word, fontString) {
80
- const { prepareWithSegments, layoutWithLines } = await getPretext();
114
+ export async function measureWord(word, fontString, cache) {
81
115
  if (!word)
82
116
  return 0;
117
+ const cacheKey = cache ? `${word}|${fontString}` : '';
118
+ if (cache && cache.has(cacheKey))
119
+ return cache.get(cacheKey);
120
+ const { prepareWithSegments, layoutWithLines } = await getPretext();
83
121
  const prepared = prepareWithSegments(word, fontString, {});
84
122
  const result = layoutWithLines(prepared, 99999, 99999);
85
123
  const lines = result.lines ?? [];
86
- return lines[0]?.width ?? 0;
124
+ const width = lines[0]?.width ?? 0;
125
+ if (cache) {
126
+ // FIFO eviction: Map iterates in insertion order, so deleting the first key
127
+ // drops the oldest entry. Bounds memory for long-running processes.
128
+ if (cache.size >= WORD_WIDTH_CACHE_MAX) {
129
+ const firstKey = cache.keys().next().value;
130
+ if (firstKey !== undefined)
131
+ cache.delete(firstKey);
132
+ }
133
+ cache.set(cacheKey, width);
134
+ }
135
+ return width;
87
136
  }
88
137
  // ─── Core Text Measurement ────────────────────────────────────────────────────
89
138
  /**
@@ -173,7 +222,6 @@ function insertThaiBreaks(text) {
173
222
  if (!seg)
174
223
  return text; // no ICU data — return unchanged; lines may overflow
175
224
  const result = [];
176
- let inThaiRun = false;
177
225
  // Process character by character, only segmenting Thai/Lao runs
178
226
  const parts = text.split(/([\u0E00-\u0EFF]+)/);
179
227
  for (const part of parts) {
@@ -279,13 +327,16 @@ function tokenizeParagraph(para) {
279
327
  * Handles CJK (character-level breaks), Thai/Lao (Intl.Segmenter), and Latin (space + hyphens).
280
328
  * Returns lines with actual hyphens added to hyphenated words.
281
329
  */
282
- export async function measureTextWithHyphenation(text, fontString, maxWidth, opts) {
330
+ export async function measureTextWithHyphenation(text, fontString, maxWidth, opts, docWordCache) {
283
331
  const { instance: hypher, minWordLength, leftMin, rightMin } = opts;
332
+ // Paragraph-local cache stays as the fast inner cache (keyed by word only
333
+ // since fontString is constant for the call). The doc-level cache is a
334
+ // fallback miss-path that lets common words shared across paragraphs hit.
284
335
  const widthCache = new Map();
285
336
  const measure = async (w) => {
286
337
  if (widthCache.has(w))
287
338
  return widthCache.get(w);
288
- const width = await measureWord(w, fontString);
339
+ const width = await measureWord(w, fontString, docWordCache);
289
340
  widthCache.set(w, width);
290
341
  return width;
291
342
  };
@@ -403,7 +454,7 @@ export async function measureTextWithHyphenation(text, fontString, maxWidth, opt
403
454
  * Core text measurement: delegates to hyphenation path or direct Pretext layout.
404
455
  * If no hyphenator is available, falls back to direct layout (text wraps without hyphens).
405
456
  */
406
- export async function measureText(text, fontSize, fontFamily, fontWeight, maxWidth, lineHeight, hyphenatorOpts) {
457
+ export async function measureText(text, fontSize, fontFamily, fontWeight, maxWidth, _lineHeight, hyphenatorOpts, wordWidthCache) {
407
458
  if (!text || text.trim() === '')
408
459
  return [];
409
460
  const { prepareWithSegments, layoutWithLines } = await getPretext();
@@ -411,7 +462,7 @@ export async function measureText(text, fontSize, fontFamily, fontWeight, maxWid
411
462
  const fontString = `${weightPrefix}${fontSize}px ${fontFamily}`;
412
463
  // If hyphenator is available and text is long, use hyphenation
413
464
  if (hyphenatorOpts && text.length > hyphenatorOpts.minWordLength) {
414
- return await measureTextWithHyphenation(text, fontString, maxWidth, hyphenatorOpts);
465
+ return await measureTextWithHyphenation(text, fontString, maxWidth, hyphenatorOpts, wordWidthCache);
415
466
  }
416
467
  // Thai/Lao: Skia/canvas doesn't segment Thai — insert zero-width spaces at word
417
468
  // boundaries so pretext's line-breaker can split correctly.
@@ -1 +1 @@
1
- {"version":3,"file":"measure-text.js","sourceRoot":"","sources":["../src/measure-text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"measure-text.js","sourceRoot":"","sources":["../src/measure-text.ts"],"names":[],"mappings":"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"}
package/dist/measure.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import type { PdfDocument } from './types.js';
6
6
  import type { MeasuredBlock, ImageMap } from './types-internal.js';
7
- import { measureBlock } from './measure-blocks.js';
7
+ import { measureBlock } from './measure-blocks/index.js';
8
8
  import type { PluginDefinition } from './plugin-types.js';
9
9
  export { measureBlock };
10
10
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../src/measure.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,WAAW,EACZ,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EACV,aAAa,EAAE,QAAQ,EACxB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAIzD,OAAO,EAAE,YAAY,EAAE,CAAA;AAEvB;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,GAAG,GAAG,GAAS,EACvB,KAAK,GAAE,QAAQ,GAAG,QAAmB,GACpC,MAAM,CAER;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,EAC1E,UAAU,EAAE,OAAO,YAAY,EAAE,UAAU,EAC3C,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,aAAa,EAAE,CAAC,CAqD1B;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,MAAM,EACzB,OAAO,CAAC,EAAE,gBAAgB,EAAE,GAC3B,OAAO,CAAC,aAAa,EAAE,CAAC,CAyF1B"}
1
+ {"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../src/measure.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,WAAW,EACZ,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EACV,aAAa,EAAE,QAAQ,EACxB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAIxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAIzD,OAAO,EAAE,YAAY,EAAE,CAAA;AAEvB;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,GAAG,GAAG,GAAS,EACvB,KAAK,GAAE,QAAQ,GAAG,QAAmB,GACpC,MAAM,CAER;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,EAC1E,UAAU,EAAE,OAAO,YAAY,EAAE,UAAU,EAC3C,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,aAAa,EAAE,CAAC,CAqD1B;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,MAAM,EACzB,OAAO,CAAC,EAAE,gBAAgB,EAAE,GAC3B,OAAO,CAAC,aAAa,EAAE,CAAC,CA4F1B"}
package/dist/measure.js CHANGED
@@ -2,7 +2,7 @@
2
2
  * measure.ts — Measurement orchestrator
3
3
  * Entry point for the measurement pipeline. Exports public measurement functions.
4
4
  */
5
- import { measureBlock } from './measure-blocks.js';
5
+ import { measureBlock } from './measure-blocks/index.js';
6
6
  import { getPretext, getHyphenator } from './measure-text.js';
7
7
  import { LINE_HEIGHT_BODY } from './render-utils.js';
8
8
  import { findPlugin, runPluginMeasure } from './plugin-registry.js';
@@ -92,7 +92,7 @@ export async function buildTocEntryBlocks(headings, tocElement, contentWidth, do
92
92
  * Returns array of MeasuredBlock (includes flattened lists + SVG-wrapped images).
93
93
  */
94
94
  export async function measureAllBlocks(doc, contentWidth, imageMap, pageContentHeight, plugins) {
95
- const { measureImageWithKey, measureFloatImageBlock } = await import('./measure-blocks.js');
95
+ const { measureImageWithKey, measureFloatImageBlock } = await import('./measure-blocks/index.js');
96
96
  const results = [];
97
97
  // Initialize hyphenator if enabled
98
98
  let hyphenatorOpts;
@@ -101,6 +101,8 @@ export async function measureAllBlocks(doc, contentWidth, imageMap, pageContentH
101
101
  const instance = await getHyphenator(language);
102
102
  hyphenatorOpts = { instance, minWordLength, leftMin, rightMin };
103
103
  }
104
+ // Document-level word-width cache — dedups common-word measurements across paragraphs
105
+ const wordWidthCache = new Map();
104
106
  for (let i = 0; i < doc.content.length; i++) {
105
107
  const el = doc.content[i];
106
108
  if (el.type === 'image') {
@@ -111,7 +113,7 @@ export async function measureAllBlocks(doc, contentWidth, imageMap, pageContentH
111
113
  continue;
112
114
  }
113
115
  if (el.float) {
114
- const block = await measureFloatImageBlock(el, imageKey, imageMap, contentWidth, pageContentHeight, doc);
116
+ const block = await measureFloatImageBlock(el, imageKey, imageMap, contentWidth, pageContentHeight, doc, wordWidthCache);
115
117
  results.push(block);
116
118
  }
117
119
  else {
@@ -143,13 +145,13 @@ export async function measureAllBlocks(doc, contentWidth, imageMap, pageContentH
143
145
  results.push(block);
144
146
  }
145
147
  else if (el.type === 'float-group') {
146
- const { measureFloatGroup } = await import('./measure-blocks.js');
148
+ const { measureFloatGroup } = await import('./measure-blocks/index.js');
147
149
  const imageKey = `float-group-${i}`;
148
150
  // Skip float-groups if their image failed to load
149
151
  if (!imageMap.has(imageKey)) {
150
152
  continue;
151
153
  }
152
- const block = await measureFloatGroup(el, imageKey, imageMap, contentWidth, pageContentHeight, doc, hyphenatorOpts);
154
+ const block = await measureFloatGroup(el, imageKey, imageMap, contentWidth, pageContentHeight, doc, measureBlock, hyphenatorOpts, wordWidthCache);
153
155
  results.push(block);
154
156
  }
155
157
  else {
@@ -161,7 +163,7 @@ export async function measureAllBlocks(doc, contentWidth, imageMap, pageContentH
161
163
  results.push(block);
162
164
  }
163
165
  else {
164
- const result = await measureBlock(el, contentWidth, doc, hyphenatorOpts);
166
+ const result = await measureBlock(el, contentWidth, doc, hyphenatorOpts, wordWidthCache);
165
167
  if (Array.isArray(result)) {
166
168
  results.push(...result);
167
169
  }
@@ -1 +1 @@
1
- {"version":3,"file":"measure.js","sourceRoot":"","sources":["../src/measure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"measure.js","sourceRoot":"","sources":["../src/measure.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"node-polyfill.d.ts","sourceRoot":"","sources":["../src/node-polyfill.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0FzD"}
1
+ {"version":3,"file":"node-polyfill.d.ts","sourceRoot":"","sources":["../src/node-polyfill.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmGzD"}
@@ -54,6 +54,8 @@ export async function installNodePolyfill() {
54
54
  const fontVariants = [
55
55
  {
56
56
  family: 'Inter',
57
+ weight: '400',
58
+ style: 'normal',
57
59
  paths: [
58
60
  resolveInterWoff2('inter-latin-400-normal.woff2'),
59
61
  resolveInterWoff2('inter-all-400-normal.woff2'),
@@ -64,6 +66,8 @@ export async function installNodePolyfill() {
64
66
  // Register bold as the same family — @napi-rs/canvas (Skia) uses the
65
67
  // bold variant automatically when the CSS font string includes "bold"
66
68
  family: 'Inter',
69
+ weight: '700',
70
+ style: 'normal',
67
71
  paths: [
68
72
  resolveInterWoff2('inter-latin-700-normal.woff2'),
69
73
  resolveInterWoff2('inter-all-700-normal.woff2'),
@@ -73,10 +77,12 @@ export async function installNodePolyfill() {
73
77
  ];
74
78
  let anyLoaded = false;
75
79
  for (const variant of fontVariants) {
80
+ let variantLoaded = false;
76
81
  for (const fontPath of variant.paths) {
77
82
  if (fontPath && fs.existsSync(fontPath)) {
78
83
  try {
79
84
  GlobalFonts.registerFromPath(fontPath, variant.family);
85
+ variantLoaded = true;
80
86
  anyLoaded = true;
81
87
  break; // Move to next variant
82
88
  }
@@ -85,6 +91,9 @@ export async function installNodePolyfill() {
85
91
  }
86
92
  }
87
93
  }
94
+ if (!variantLoaded) {
95
+ console.warn(`[pretext-pdf] Could not register ${variant.family} ${variant.weight} ${variant.style} font for canvas measurement — text metrics may be inaccurate for this variant`);
96
+ }
88
97
  }
89
98
  if (!anyLoaded) {
90
99
  console.warn('[pretext-pdf] Inter font not found for Node.js canvas measurement. Text metrics may differ. Run: npm install @fontsource/inter');
@@ -1 +1 @@
1
- {"version":3,"file":"node-polyfill.js","sourceRoot":"","sources":["../src/node-polyfill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node-polyfill.js","sourceRoot":"","sources":["../src/node-polyfill.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ContentElement } from './types-public.js';
1
+ import type { ContentElement } from './types-public/index.js';
2
2
  import type { MeasuredBlock, PaginatedDocument } from './types-internal.js';
3
3
  /** Build document-order footnote numbering by scanning rich-paragraphs in content order. */
4
4
  export declare function buildFootnoteNumbering(content: ContentElement[]): Map<string, number>;
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline-footnotes.d.ts","sourceRoot":"","sources":["../src/pipeline-footnotes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,mBAAmB,CAAA;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAM3E,4FAA4F;AAC5F,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAarF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,aAAa,EAAE,EAC/B,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,EACjE,GAAG,EAAE;IAAE,OAAO,EAAE,cAAc,EAAE,CAAA;CAAE,GACjC,iBAAiB,CAiFnB"}
1
+ {"version":3,"file":"pipeline-footnotes.d.ts","sourceRoot":"","sources":["../src/pipeline-footnotes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,yBAAyB,CAAA;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAM3E,4FAA4F;AAC5F,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAarF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,aAAa,EAAE,EAC/B,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,EACjE,GAAG,EAAE;IAAE,OAAO,EAAE,cAAc,EAAE,CAAA;CAAE,GACjC,iBAAiB,CAiFnB"}
@@ -1,4 +1,4 @@
1
- import type { PdfDocument } from './types-public.js';
1
+ import type { PdfDocument } from './types-public/index.js';
2
2
  import type { MeasuredBlock } from './types-internal.js';
3
3
  /**
4
4
  * Two-pass TOC entry building.
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline-toc.d.ts","sourceRoot":"","sources":["../src/pipeline-toc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGxD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,cAAc,EAAE,aAAa,EAAE,EAC/B,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,aAAa,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,EACxE,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,EAAE,CAAC,CA0B1B"}
1
+ {"version":3,"file":"pipeline-toc.d.ts","sourceRoot":"","sources":["../src/pipeline-toc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGxD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,cAAc,EAAE,aAAa,EAAE,EAC/B,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,aAAa,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,EACxE,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,EAAE,CAAC,CA0B1B"}
@@ -1,5 +1,5 @@
1
1
  import { PDFDocument } from '@cantoo/pdf-lib';
2
- import type { PdfDocument, RenderOptions } from './types-public.js';
2
+ import type { PdfDocument, RenderOptions } from './types-public/index.js';
3
3
  import type { PageGeometry, FontMap, ImageMap, MeasuredBlock } from './types-internal.js';
4
4
  import { runFootnoteTwoPass } from './pipeline-footnotes.js';
5
5
  export declare function stageValidate(doc: PdfDocument, options?: RenderOptions): void;
@@ -8,14 +8,14 @@ export declare function stageInit(doc: PdfDocument): Promise<{
8
8
  geo: Omit<PageGeometry, 'contentHeight' | 'headerHeight' | 'footerHeight'>;
9
9
  defaultFont: string;
10
10
  }>;
11
- export declare function stageLoadAssets(doc: PdfDocument, pdfDoc: PDFDocument, contentWidth: number, plugins?: import('./plugin-types.js').PluginDefinition[], logger?: import('./types-public.js').Logger): Promise<{
11
+ export declare function stageLoadAssets(doc: PdfDocument, pdfDoc: PDFDocument, contentWidth: number, plugins?: import('./plugin-types.js').PluginDefinition[], logger?: import('./types-public/index.js').Logger): Promise<{
12
12
  fontMap: FontMap;
13
13
  imageMap: ImageMap;
14
14
  }>;
15
15
  export declare function stageFinalizeGeo(doc: PdfDocument, partialGeo: Omit<PageGeometry, 'contentHeight' | 'headerHeight' | 'footerHeight'>, defaultFont: string): Promise<PageGeometry>;
16
16
  export declare function stageMeasure(doc: PdfDocument, contentWidth: number, imageMap: ImageMap, contentHeight: number, plugins?: import('./plugin-types.js').PluginDefinition[]): Promise<MeasuredBlock[]>;
17
17
  export declare function stagePaginate(measuredBlocks: MeasuredBlock[], contentHeight: number, doc: PdfDocument): ReturnType<typeof runFootnoteTwoPass>;
18
- export declare function stageRender(paginatedDoc: ReturnType<typeof stagePaginate>, doc: PdfDocument, fontMap: FontMap, imageMap: ImageMap, pdfDoc: PDFDocument, geo: PageGeometry, plugins?: import('./plugin-types.js').PluginDefinition[], logger?: import('./types-public.js').Logger): Promise<Uint8Array>;
18
+ export declare function stageRender(paginatedDoc: ReturnType<typeof stagePaginate>, doc: PdfDocument, fontMap: FontMap, imageMap: ImageMap, pdfDoc: PDFDocument, geo: PageGeometry, plugins?: import('./plugin-types.js').PluginDefinition[], logger?: import('./types-public/index.js').Logger): Promise<Uint8Array>;
19
19
  /**
20
20
  * Run all 5 stages in sequence and return raw PDF bytes.
21
21
  * Post-processing (signature, encryption) is applied by the public render() in index.ts.
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAsB,MAAM,iBAAiB,CAAA;AACjE,OAAO,KAAK,EAAE,WAAW,EAAW,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAUzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAI5D,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAE7E;AAID,wBAAsB,SAAS,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC;IACzD,MAAM,EAAE,WAAW,CAAA;IACnB,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,GAAG,cAAc,GAAG,cAAc,CAAC,CAAA;IAC1E,WAAW,EAAE,MAAM,CAAA;CACpB,CAAC,CAwCD;AAID,wBAAsB,eAAe,CACnC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,OAAO,mBAAmB,EAAE,gBAAgB,EAAE,EACxD,MAAM,CAAC,EAAE,OAAO,mBAAmB,EAAE,MAAM,GAC1C,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC,CAMnD;AAID,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,GAAG,cAAc,GAAG,cAAc,CAAC,EACjF,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CAiCvB;AAID,wBAAsB,YAAY,CAChC,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,OAAO,mBAAmB,EAAE,gBAAgB,EAAE,GACvD,OAAO,CAAC,aAAa,EAAE,CAAC,CAI1B;AAID,wBAAgB,aAAa,CAC3B,cAAc,EAAE,aAAa,EAAE,EAC/B,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,WAAW,GACf,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAGvC;AAID,wBAAsB,WAAW,CAC/B,YAAY,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,EAC9C,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,YAAY,EACjB,OAAO,CAAC,EAAE,OAAO,mBAAmB,EAAE,gBAAgB,EAAE,EACxD,MAAM,CAAC,EAAE,OAAO,mBAAmB,EAAE,MAAM,GAC1C,OAAO,CAAC,UAAU,CAAC,CAErB;AAID;;;GAGG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAkBhG"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAsB,MAAM,iBAAiB,CAAA;AACjE,OAAO,KAAK,EAAE,WAAW,EAAW,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAUzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAI5D,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAE7E;AAID,wBAAsB,SAAS,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC;IACzD,MAAM,EAAE,WAAW,CAAA;IACnB,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,GAAG,cAAc,GAAG,cAAc,CAAC,CAAA;IAC1E,WAAW,EAAE,MAAM,CAAA;CACpB,CAAC,CAwCD;AAID,wBAAsB,eAAe,CACnC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,OAAO,mBAAmB,EAAE,gBAAgB,EAAE,EACxD,MAAM,CAAC,EAAE,OAAO,yBAAyB,EAAE,MAAM,GAChD,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC,CAKnD;AAID,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,GAAG,cAAc,GAAG,cAAc,CAAC,EACjF,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CAiCvB;AAID,wBAAsB,YAAY,CAChC,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,OAAO,mBAAmB,EAAE,gBAAgB,EAAE,GACvD,OAAO,CAAC,aAAa,EAAE,CAAC,CAI1B;AAID,wBAAgB,aAAa,CAC3B,cAAc,EAAE,aAAa,EAAE,EAC/B,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,WAAW,GACf,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAGvC;AAID,wBAAsB,WAAW,CAC/B,YAAY,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,EAC9C,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,YAAY,EACjB,OAAO,CAAC,EAAE,OAAO,mBAAmB,EAAE,gBAAgB,EAAE,EACxD,MAAM,CAAC,EAAE,OAAO,yBAAyB,EAAE,MAAM,GAChD,OAAO,CAAC,UAAU,CAAC,CAErB;AAID;;;GAGG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAkBhG"}
package/dist/pipeline.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { PDFDocument, PDFName, PDFString } from '@cantoo/pdf-lib';
2
2
  import { PretextPdfError } from './errors.js';
3
3
  import { resolvePageDimensions } from './page-sizes.js';
4
- import { validate } from './validate.js';
4
+ import { validate } from './validate/index.js';
5
5
  import { loadFonts } from './fonts.js';
6
6
  import { loadImages } from './assets.js';
7
7
  import { measureAllBlocks, measureHeaderFooterHeight } from './measure.js';
@@ -57,10 +57,9 @@ export async function stageInit(doc) {
57
57
  }
58
58
  // ─── Stage 2b: Load assets (fonts + images in parallel) ──────────────────────
59
59
  export async function stageLoadAssets(doc, pdfDoc, contentWidth, plugins, logger) {
60
- const [fontMap, imageMap] = await Promise.all([
61
- loadFonts(doc, pdfDoc),
62
- loadImages(doc, pdfDoc, contentWidth, plugins, logger),
63
- ]);
60
+ // Sequential: both mutate pdfDoc's cross-reference table — concurrent mutation causes intermittent xref corruption.
61
+ const fontMap = await loadFonts(doc, pdfDoc);
62
+ const imageMap = await loadImages(doc, pdfDoc, contentWidth, plugins, logger);
64
63
  return { fontMap, imageMap };
65
64
  }
66
65
  // ─── Stage 2c: Finalize geometry (header/footer heights) ─────────────────────