postext 1.24.0 → 1.25.1

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 (356) hide show
  1. package/README.md +8 -5
  2. package/dist/__tests__/bundle/cjkRulesPin.test.d.ts +2 -0
  3. package/dist/__tests__/bundle/cjkRulesPin.test.d.ts.map +1 -0
  4. package/dist/__tests__/bundle/cjkRulesPin.test.js +78 -0
  5. package/dist/__tests__/bundle/cjkRulesPin.test.js.map +1 -0
  6. package/dist/__tests__/bundle/contextDefaultsBundle.test.d.ts +2 -0
  7. package/dist/__tests__/bundle/contextDefaultsBundle.test.d.ts.map +1 -0
  8. package/dist/__tests__/bundle/contextDefaultsBundle.test.js +104 -0
  9. package/dist/__tests__/bundle/contextDefaultsBundle.test.js.map +1 -0
  10. package/dist/__tests__/bundle/designOverflowPin.test.js +4 -2
  11. package/dist/__tests__/bundle/designOverflowPin.test.js.map +1 -1
  12. package/dist/__tests__/bundle/flowColumnsPin.test.d.ts +2 -0
  13. package/dist/__tests__/bundle/flowColumnsPin.test.d.ts.map +1 -0
  14. package/dist/__tests__/bundle/flowColumnsPin.test.js +40 -0
  15. package/dist/__tests__/bundle/flowColumnsPin.test.js.map +1 -0
  16. package/dist/__tests__/bundle/gridBalancingPin.test.d.ts +2 -0
  17. package/dist/__tests__/bundle/gridBalancingPin.test.d.ts.map +1 -0
  18. package/dist/__tests__/bundle/gridBalancingPin.test.js +72 -0
  19. package/dist/__tests__/bundle/gridBalancingPin.test.js.map +1 -0
  20. package/dist/__tests__/bundle/inlineTableSplitPin.test.d.ts +2 -0
  21. package/dist/__tests__/bundle/inlineTableSplitPin.test.d.ts.map +1 -0
  22. package/dist/__tests__/bundle/inlineTableSplitPin.test.js +43 -0
  23. package/dist/__tests__/bundle/inlineTableSplitPin.test.js.map +1 -0
  24. package/dist/__tests__/bundle/openerHeadFloatsPin.test.d.ts +2 -0
  25. package/dist/__tests__/bundle/openerHeadFloatsPin.test.d.ts.map +1 -0
  26. package/dist/__tests__/bundle/openerHeadFloatsPin.test.js +50 -0
  27. package/dist/__tests__/bundle/openerHeadFloatsPin.test.js.map +1 -0
  28. package/dist/__tests__/bundle.test.js +11 -1
  29. package/dist/__tests__/bundle.test.js.map +1 -1
  30. package/dist/__tests__/cjk/annotationsRender.test.js +5 -2
  31. package/dist/__tests__/cjk/annotationsRender.test.js.map +1 -1
  32. package/dist/__tests__/cjk/circledNumbers.test.d.ts +2 -0
  33. package/dist/__tests__/cjk/circledNumbers.test.d.ts.map +1 -0
  34. package/dist/__tests__/cjk/circledNumbers.test.js +83 -0
  35. package/dist/__tests__/cjk/circledNumbers.test.js.map +1 -0
  36. package/dist/__tests__/cjk/gridBalancing.test.d.ts +2 -0
  37. package/dist/__tests__/cjk/gridBalancing.test.d.ts.map +1 -0
  38. package/dist/__tests__/cjk/gridBalancing.test.js +227 -0
  39. package/dist/__tests__/cjk/gridBalancing.test.js.map +1 -0
  40. package/dist/__tests__/cjk/justifyRender.test.js +2 -1
  41. package/dist/__tests__/cjk/justifyRender.test.js.map +1 -1
  42. package/dist/__tests__/cjk/titleBreaks.test.d.ts +2 -0
  43. package/dist/__tests__/cjk/titleBreaks.test.d.ts.map +1 -0
  44. package/dist/__tests__/cjk/titleBreaks.test.js +76 -0
  45. package/dist/__tests__/cjk/titleBreaks.test.js.map +1 -0
  46. package/dist/__tests__/cjk/wordJoiner.test.js +13 -4
  47. package/dist/__tests__/cjk/wordJoiner.test.js.map +1 -1
  48. package/dist/__tests__/codeBlocks.test.js +1 -1
  49. package/dist/__tests__/defaults/stripContextDefaults.test.d.ts +2 -0
  50. package/dist/__tests__/defaults/stripContextDefaults.test.d.ts.map +1 -0
  51. package/dist/__tests__/defaults/stripContextDefaults.test.js +265 -0
  52. package/dist/__tests__/defaults/stripContextDefaults.test.js.map +1 -0
  53. package/dist/__tests__/design/cjkDesignDash.test.d.ts +2 -0
  54. package/dist/__tests__/design/cjkDesignDash.test.d.ts.map +1 -0
  55. package/dist/__tests__/design/cjkDesignDash.test.js +395 -0
  56. package/dist/__tests__/design/cjkDesignDash.test.js.map +1 -0
  57. package/dist/__tests__/design/cjkDesignText.test.d.ts +2 -0
  58. package/dist/__tests__/design/cjkDesignText.test.d.ts.map +1 -0
  59. package/dist/__tests__/design/cjkDesignText.test.js +130 -0
  60. package/dist/__tests__/design/cjkDesignText.test.js.map +1 -0
  61. package/dist/__tests__/design/cjkDesignTextRender.test.d.ts +2 -0
  62. package/dist/__tests__/design/cjkDesignTextRender.test.d.ts.map +1 -0
  63. package/dist/__tests__/design/cjkDesignTextRender.test.js +100 -0
  64. package/dist/__tests__/design/cjkDesignTextRender.test.js.map +1 -0
  65. package/dist/__tests__/exports.test.js +49 -0
  66. package/dist/__tests__/exports.test.js.map +1 -1
  67. package/dist/__tests__/hardBreaks.test.js +1 -1
  68. package/dist/__tests__/headingInlineMarks.test.js +1 -1
  69. package/dist/__tests__/headingNumberSpans.test.d.ts +2 -0
  70. package/dist/__tests__/headingNumberSpans.test.d.ts.map +1 -0
  71. package/dist/__tests__/headingNumberSpans.test.js +96 -0
  72. package/dist/__tests__/headingNumberSpans.test.js.map +1 -0
  73. package/dist/__tests__/mathSizeMigration.test.js +2 -2
  74. package/dist/__tests__/multipleColumns.test.js +207 -0
  75. package/dist/__tests__/multipleColumns.test.js.map +1 -1
  76. package/dist/__tests__/parse/citations.test.js +29 -0
  77. package/dist/__tests__/parse/citations.test.js.map +1 -1
  78. package/dist/__tests__/pipeline/calloutInlineResourceGap.test.js +10 -6
  79. package/dist/__tests__/pipeline/calloutInlineResourceGap.test.js.map +1 -1
  80. package/dist/__tests__/pipeline/calloutOverflow.test.js +4 -2
  81. package/dist/__tests__/pipeline/calloutOverflow.test.js.map +1 -1
  82. package/dist/__tests__/pipeline/calloutSplitMinLinesChild.test.js +1 -1
  83. package/dist/__tests__/pipeline/calloutTallKeepTogether.test.js +6 -5
  84. package/dist/__tests__/pipeline/calloutTallKeepTogether.test.js.map +1 -1
  85. package/dist/__tests__/pipeline/colonListRoom.test.js +1 -1
  86. package/dist/__tests__/pipeline/compoundBreaks.test.js +1 -1
  87. package/dist/__tests__/pipeline/dashBreaks.test.js +1 -1
  88. package/dist/__tests__/pipeline/floatCitingPage.test.d.ts +2 -0
  89. package/dist/__tests__/pipeline/floatCitingPage.test.d.ts.map +1 -0
  90. package/dist/__tests__/pipeline/floatCitingPage.test.js +241 -0
  91. package/dist/__tests__/pipeline/floatCitingPage.test.js.map +1 -0
  92. package/dist/__tests__/pipeline/floatOverInlineResource.test.js +18 -6
  93. package/dist/__tests__/pipeline/floatOverInlineResource.test.js.map +1 -1
  94. package/dist/__tests__/pipeline/floatPlacement.test.js +3 -3
  95. package/dist/__tests__/pipeline/floatPlacement.test.js.map +1 -1
  96. package/dist/__tests__/pipeline/flowColumns.test.d.ts +2 -0
  97. package/dist/__tests__/pipeline/flowColumns.test.d.ts.map +1 -0
  98. package/dist/__tests__/pipeline/flowColumns.test.js +261 -0
  99. package/dist/__tests__/pipeline/flowColumns.test.js.map +1 -0
  100. package/dist/__tests__/pipeline/headingKeepFitEps.test.d.ts +2 -0
  101. package/dist/__tests__/pipeline/headingKeepFitEps.test.d.ts.map +1 -0
  102. package/dist/__tests__/pipeline/headingKeepFitEps.test.js +83 -0
  103. package/dist/__tests__/pipeline/headingKeepFitEps.test.js.map +1 -0
  104. package/dist/__tests__/pipeline/headingSplitOrphans.test.js +1 -1
  105. package/dist/__tests__/pipeline/inlineFigureSpace.test.js +1 -1
  106. package/dist/__tests__/pipeline/inlineTableSplit.test.d.ts +2 -0
  107. package/dist/__tests__/pipeline/inlineTableSplit.test.d.ts.map +1 -0
  108. package/dist/__tests__/pipeline/inlineTableSplit.test.js +238 -0
  109. package/dist/__tests__/pipeline/inlineTableSplit.test.js.map +1 -0
  110. package/dist/__tests__/pipeline/paragraphContainerTail.test.js +1 -1
  111. package/dist/__tests__/pipeline/raggedOptimal.test.js +1 -1
  112. package/dist/__tests__/pipeline/resolvedPaletteCopy.test.js +3 -2
  113. package/dist/__tests__/pipeline/resolvedPaletteCopy.test.js.map +1 -1
  114. package/dist/__tests__/pipeline/sideBoxAfterText.test.d.ts +2 -0
  115. package/dist/__tests__/pipeline/sideBoxAfterText.test.d.ts.map +1 -0
  116. package/dist/__tests__/pipeline/sideBoxAfterText.test.js +163 -0
  117. package/dist/__tests__/pipeline/sideBoxAfterText.test.js.map +1 -0
  118. package/dist/__tests__/prepareFonts.test.d.ts +2 -0
  119. package/dist/__tests__/prepareFonts.test.d.ts.map +1 -0
  120. package/dist/__tests__/prepareFonts.test.js +548 -0
  121. package/dist/__tests__/prepareFonts.test.js.map +1 -0
  122. package/dist/__tests__/svgFonts.test.d.ts +2 -0
  123. package/dist/__tests__/svgFonts.test.d.ts.map +1 -0
  124. package/dist/__tests__/svgFonts.test.js +286 -0
  125. package/dist/__tests__/svgFonts.test.js.map +1 -0
  126. package/dist/__tests__/verseLines.test.js +1 -1
  127. package/dist/__tests__/vertical/measurePaint.test.js +16 -0
  128. package/dist/__tests__/vertical/measurePaint.test.js.map +1 -1
  129. package/dist/bundle/adapters.d.ts +31 -7
  130. package/dist/bundle/adapters.d.ts.map +1 -1
  131. package/dist/bundle/adapters.js +113 -34
  132. package/dist/bundle/adapters.js.map +1 -1
  133. package/dist/bundle/codec.d.ts.map +1 -1
  134. package/dist/bundle/codec.js +37 -4
  135. package/dist/bundle/codec.js.map +1 -1
  136. package/dist/bundle/configVersion.d.ts +127 -10
  137. package/dist/bundle/configVersion.d.ts.map +1 -1
  138. package/dist/bundle/configVersion.js +260 -9
  139. package/dist/bundle/configVersion.js.map +1 -1
  140. package/dist/bundle/index.d.ts +3 -3
  141. package/dist/bundle/index.d.ts.map +1 -1
  142. package/dist/bundle/index.js +2 -2
  143. package/dist/bundle/index.js.map +1 -1
  144. package/dist/bundle/manifest.d.ts.map +1 -1
  145. package/dist/bundle/manifest.js +3 -2
  146. package/dist/bundle/manifest.js.map +1 -1
  147. package/dist/bundle/types.d.ts +4 -0
  148. package/dist/bundle/types.d.ts.map +1 -1
  149. package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
  150. package/dist/canvas-backend/headerFooter.js +18 -3
  151. package/dist/canvas-backend/headerFooter.js.map +1 -1
  152. package/dist/columnRule.d.ts.map +1 -1
  153. package/dist/columnRule.js +5 -2
  154. package/dist/columnRule.js.map +1 -1
  155. package/dist/configWarnings.js +1 -1
  156. package/dist/configWarnings.js.map +1 -1
  157. package/dist/defaults/bodyText.d.ts +2 -1
  158. package/dist/defaults/bodyText.d.ts.map +1 -1
  159. package/dist/defaults/bodyText.js +13 -2
  160. package/dist/defaults/bodyText.js.map +1 -1
  161. package/dist/defaults/cjk.d.ts +2 -1
  162. package/dist/defaults/cjk.d.ts.map +1 -1
  163. package/dist/defaults/cjk.js +17 -1
  164. package/dist/defaults/cjk.js.map +1 -1
  165. package/dist/defaults/diagramStyle.d.ts.map +1 -1
  166. package/dist/defaults/diagramStyle.js +6 -0
  167. package/dist/defaults/diagramStyle.js.map +1 -1
  168. package/dist/defaults/headings.d.ts +22 -2
  169. package/dist/defaults/headings.d.ts.map +1 -1
  170. package/dist/defaults/headings.js +34 -2
  171. package/dist/defaults/headings.js.map +1 -1
  172. package/dist/defaults/index.d.ts +11 -2
  173. package/dist/defaults/index.d.ts.map +1 -1
  174. package/dist/defaults/index.js +34 -9
  175. package/dist/defaults/index.js.map +1 -1
  176. package/dist/defaults/indexConfig.d.ts +6 -2
  177. package/dist/defaults/indexConfig.d.ts.map +1 -1
  178. package/dist/defaults/indexConfig.js +10 -5
  179. package/dist/defaults/indexConfig.js.map +1 -1
  180. package/dist/defaults/layout.d.ts +5 -0
  181. package/dist/defaults/layout.d.ts.map +1 -1
  182. package/dist/defaults/layout.js +32 -0
  183. package/dist/defaults/layout.js.map +1 -1
  184. package/dist/defaults/page.d.ts.map +1 -1
  185. package/dist/defaults/page.js +8 -2
  186. package/dist/defaults/page.js.map +1 -1
  187. package/dist/defaults/tableStyle.d.ts.map +1 -1
  188. package/dist/defaults/tableStyle.js +6 -0
  189. package/dist/defaults/tableStyle.js.map +1 -1
  190. package/dist/design/cjkText.d.ts +34 -0
  191. package/dist/design/cjkText.d.ts.map +1 -0
  192. package/dist/design/cjkText.js +88 -0
  193. package/dist/design/cjkText.js.map +1 -0
  194. package/dist/design/layout.d.ts.map +1 -1
  195. package/dist/design/layout.js +103 -5
  196. package/dist/design/layout.js.map +1 -1
  197. package/dist/design/richText.d.ts +28 -0
  198. package/dist/design/richText.d.ts.map +1 -1
  199. package/dist/design/richText.js +37 -1
  200. package/dist/design/richText.js.map +1 -1
  201. package/dist/fonts/buildWithFonts.d.ts +19 -0
  202. package/dist/fonts/buildWithFonts.d.ts.map +1 -0
  203. package/dist/fonts/buildWithFonts.js +16 -0
  204. package/dist/fonts/buildWithFonts.js.map +1 -0
  205. package/dist/fonts/faces.d.ts +101 -0
  206. package/dist/fonts/faces.d.ts.map +1 -0
  207. package/dist/fonts/faces.js +282 -0
  208. package/dist/fonts/faces.js.map +1 -0
  209. package/dist/fonts/fontSet.d.ts +37 -0
  210. package/dist/fonts/fontSet.d.ts.map +1 -0
  211. package/dist/fonts/fontSet.js +181 -0
  212. package/dist/fonts/fontSet.js.map +1 -0
  213. package/dist/fonts/prepare.d.ts +125 -0
  214. package/dist/fonts/prepare.d.ts.map +1 -0
  215. package/dist/fonts/prepare.js +380 -0
  216. package/dist/fonts/prepare.js.map +1 -0
  217. package/dist/html-backend.d.ts +17 -0
  218. package/dist/html-backend.d.ts.map +1 -1
  219. package/dist/html-backend.js +98 -4
  220. package/dist/html-backend.js.map +1 -1
  221. package/dist/index.d.ts +25 -5
  222. package/dist/index.d.ts.map +1 -1
  223. package/dist/index.js +18 -2
  224. package/dist/index.js.map +1 -1
  225. package/dist/measure/cache.d.ts.map +1 -1
  226. package/dist/measure/cache.js +32 -2
  227. package/dist/measure/cache.js.map +1 -1
  228. package/dist/measure/canvas.d.ts +15 -0
  229. package/dist/measure/canvas.d.ts.map +1 -1
  230. package/dist/measure/canvas.js +68 -4
  231. package/dist/measure/canvas.js.map +1 -1
  232. package/dist/measure/cjk.d.ts.map +1 -1
  233. package/dist/measure/cjk.js +4 -1
  234. package/dist/measure/cjk.js.map +1 -1
  235. package/dist/measure/cjkClasses.d.ts +17 -0
  236. package/dist/measure/cjkClasses.d.ts.map +1 -1
  237. package/dist/measure/cjkClasses.js +41 -1
  238. package/dist/measure/cjkClasses.js.map +1 -1
  239. package/dist/measure/cjkCompose.d.ts.map +1 -1
  240. package/dist/measure/cjkCompose.js +119 -7
  241. package/dist/measure/cjkCompose.js.map +1 -1
  242. package/dist/measure/cjkPunctuation.d.ts +18 -1
  243. package/dist/measure/cjkPunctuation.d.ts.map +1 -1
  244. package/dist/measure/cjkPunctuation.js +13 -1
  245. package/dist/measure/cjkPunctuation.js.map +1 -1
  246. package/dist/measure/font.d.ts +8 -0
  247. package/dist/measure/font.d.ts.map +1 -1
  248. package/dist/measure/font.js +13 -2
  249. package/dist/measure/font.js.map +1 -1
  250. package/dist/measure/fontString.d.ts +14 -0
  251. package/dist/measure/fontString.d.ts.map +1 -0
  252. package/dist/measure/fontString.js +55 -0
  253. package/dist/measure/fontString.js.map +1 -0
  254. package/dist/measure/index.d.ts +4 -1
  255. package/dist/measure/index.d.ts.map +1 -1
  256. package/dist/measure/index.js +3 -1
  257. package/dist/measure/index.js.map +1 -1
  258. package/dist/measure/types.d.ts +4 -0
  259. package/dist/measure/types.d.ts.map +1 -1
  260. package/dist/measure/types.js.map +1 -1
  261. package/dist/parse/citations.d.ts.map +1 -1
  262. package/dist/parse/citations.js +7 -3
  263. package/dist/parse/citations.js.map +1 -1
  264. package/dist/pipeline/build.d.ts +36 -0
  265. package/dist/pipeline/build.d.ts.map +1 -1
  266. package/dist/pipeline/build.js +1065 -193
  267. package/dist/pipeline/build.js.map +1 -1
  268. package/dist/pipeline/buildBlockKind.d.ts.map +1 -1
  269. package/dist/pipeline/buildBlockKind.js +20 -6
  270. package/dist/pipeline/buildBlockKind.js.map +1 -1
  271. package/dist/pipeline/buildMeasurement.d.ts +6 -0
  272. package/dist/pipeline/buildMeasurement.d.ts.map +1 -1
  273. package/dist/pipeline/buildMeasurement.js +3 -2
  274. package/dist/pipeline/buildMeasurement.js.map +1 -1
  275. package/dist/pipeline/calloutLayout.d.ts +59 -0
  276. package/dist/pipeline/calloutLayout.d.ts.map +1 -1
  277. package/dist/pipeline/calloutLayout.js +287 -65
  278. package/dist/pipeline/calloutLayout.js.map +1 -1
  279. package/dist/pipeline/columnBalancing.d.ts +20 -0
  280. package/dist/pipeline/columnBalancing.d.ts.map +1 -1
  281. package/dist/pipeline/columnBalancing.js +22 -4
  282. package/dist/pipeline/columnBalancing.js.map +1 -1
  283. package/dist/pipeline/columnsGroup.d.ts +61 -0
  284. package/dist/pipeline/columnsGroup.d.ts.map +1 -0
  285. package/dist/pipeline/columnsGroup.js +88 -0
  286. package/dist/pipeline/columnsGroup.js.map +1 -0
  287. package/dist/pipeline/config.d.ts +16 -0
  288. package/dist/pipeline/config.d.ts.map +1 -1
  289. package/dist/pipeline/config.js +51 -9
  290. package/dist/pipeline/config.js.map +1 -1
  291. package/dist/pipeline/contentWarnings.d.ts.map +1 -1
  292. package/dist/pipeline/contentWarnings.js +28 -0
  293. package/dist/pipeline/contentWarnings.js.map +1 -1
  294. package/dist/pipeline/floatPlacement.d.ts +16 -2
  295. package/dist/pipeline/floatPlacement.d.ts.map +1 -1
  296. package/dist/pipeline/floatPlacement.js +12 -4
  297. package/dist/pipeline/floatPlacement.js.map +1 -1
  298. package/dist/pipeline/floatSlots.d.ts +9 -3
  299. package/dist/pipeline/floatSlots.d.ts.map +1 -1
  300. package/dist/pipeline/floatSlots.js +15 -6
  301. package/dist/pipeline/floatSlots.js.map +1 -1
  302. package/dist/pipeline/flowColumns.d.ts +41 -0
  303. package/dist/pipeline/flowColumns.d.ts.map +1 -0
  304. package/dist/pipeline/flowColumns.js +116 -0
  305. package/dist/pipeline/flowColumns.js.map +1 -0
  306. package/dist/pipeline/measureContentBlock.d.ts +13 -1
  307. package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
  308. package/dist/pipeline/measureContentBlock.js +20 -5
  309. package/dist/pipeline/measureContentBlock.js.map +1 -1
  310. package/dist/pipeline/partPalette.d.ts +3 -0
  311. package/dist/pipeline/partPalette.d.ts.map +1 -1
  312. package/dist/pipeline/partPalette.js +5 -0
  313. package/dist/pipeline/partPalette.js.map +1 -1
  314. package/dist/pipeline/placement.d.ts +19 -0
  315. package/dist/pipeline/placement.d.ts.map +1 -1
  316. package/dist/pipeline/placement.js +5 -2
  317. package/dist/pipeline/placement.js.map +1 -1
  318. package/dist/pipeline/resourceLayout.d.ts +26 -0
  319. package/dist/pipeline/resourceLayout.d.ts.map +1 -1
  320. package/dist/pipeline/resourceLayout.js +53 -3
  321. package/dist/pipeline/resourceLayout.js.map +1 -1
  322. package/dist/pipeline/toc.d.ts.map +1 -1
  323. package/dist/pipeline/toc.js +6 -1
  324. package/dist/pipeline/toc.js.map +1 -1
  325. package/dist/svg/fontRegistry.d.ts +66 -0
  326. package/dist/svg/fontRegistry.d.ts.map +1 -0
  327. package/dist/svg/fontRegistry.js +294 -0
  328. package/dist/svg/fontRegistry.js.map +1 -0
  329. package/dist/svg/fonts.d.ts +140 -0
  330. package/dist/svg/fonts.d.ts.map +1 -0
  331. package/dist/svg/fonts.js +642 -0
  332. package/dist/svg/fonts.js.map +1 -0
  333. package/dist/svg/image.d.ts +44 -0
  334. package/dist/svg/image.d.ts.map +1 -0
  335. package/dist/svg/image.js +67 -0
  336. package/dist/svg/image.js.map +1 -0
  337. package/dist/types.d.ts +145 -8
  338. package/dist/types.d.ts.map +1 -1
  339. package/dist/util/stableHash.d.ts +20 -0
  340. package/dist/util/stableHash.d.ts.map +1 -0
  341. package/dist/util/stableHash.js +59 -0
  342. package/dist/util/stableHash.js.map +1 -0
  343. package/dist/vdt.d.ts +127 -3
  344. package/dist/vdt.d.ts.map +1 -1
  345. package/dist/vdt.js.map +1 -1
  346. package/dist/worker/client.d.ts +8 -0
  347. package/dist/worker/client.d.ts.map +1 -1
  348. package/dist/worker/client.js +22 -0
  349. package/dist/worker/client.js.map +1 -1
  350. package/dist/worker/fonts.d.ts +1 -13
  351. package/dist/worker/fonts.d.ts.map +1 -1
  352. package/dist/worker/fonts.js +3 -61
  353. package/dist/worker/fonts.js.map +1 -1
  354. package/dist/worker/layout.worker.js +23 -16
  355. package/dist/worker/layout.worker.js.map +1 -1
  356. package/package.json +1 -1
@@ -0,0 +1,125 @@
1
+ import type { PostextConfig, PostextContent } from '../types';
2
+ import type { VDTDocument } from '../vdt';
3
+ import { type FontContentText } from './usage';
4
+ import { type FontFaceLike, type FontFaceRequest, type FontFaceSetLike, type FontFallbackOptions } from './faces';
5
+ /** A font file: its bytes, or the URL to fetch it from (a CSS `src`
6
+ * value — `url(…)`, `local(…)` — is taken as written). */
7
+ export type FontFileSource = ArrayBuffer | ArrayBufferView | string;
8
+ /** A font file with the descriptors of its face, when they are not the
9
+ * ones asked for: the slice a file covers (`unicodeRange`), a variable
10
+ * weight range (`'100 900'`), an upright file given for an italic. */
11
+ export interface FontFile {
12
+ source: FontFileSource;
13
+ unicodeRange?: string;
14
+ weight?: number | string;
15
+ style?: 'normal' | 'italic' | string;
16
+ }
17
+ /** What a resolver answers: one file, several (the slices of a face, in
18
+ * the order they are added to the font set), or nothing (it has no such
19
+ * face). Throwing counts as nothing. */
20
+ export type FontResolverAnswer = FontFileSource | FontFile | readonly (FontFileSource | FontFile)[] | null | undefined;
21
+ export interface FontResolveRequest {
22
+ /** The characters the document sets (a space included), for a resolver
23
+ * serving a family as slices: only the files holding them. */
24
+ text: string;
25
+ codePoints: Set<number>;
26
+ }
27
+ /**
28
+ * A host's font files, asked for each face no `FontFace` of the font set
29
+ * declares: `(family, weight, style, { text, codePoints })`. The shape of
30
+ * postext-pdf's `PdfFontProvider`, so one function serves the screen and
31
+ * the PDF. A resolver may also declare the face itself (add a style sheet,
32
+ * a `FontFace`) and answer null: the engine then loads what it declared.
33
+ */
34
+ export type FontResolver = (family: string, weight: number, style: 'normal' | 'italic', request: FontResolveRequest) => FontResolverAnswer | Promise<FontResolverAnswer>;
35
+ type FontFaceConstructor = new (family: string, source: string | ArrayBuffer | ArrayBufferView, descriptors?: FontFaceDescriptors) => FontFaceLike;
36
+ export interface PrepareFontsOptions {
37
+ /** The font set to load into: by default `document.fonts`, or
38
+ * `self.fonts` in a worker. */
39
+ fontSet?: FontFaceSetLike | null;
40
+ /** Files for the faces nothing declares. */
41
+ resolve?: FontResolver;
42
+ /** Give up waiting after this many ms (default 10 000): a face still
43
+ * loading then is reported missing. */
44
+ timeoutMs?: number;
45
+ /** Watch the font set afterwards ({@link watchFonts}). Default true. */
46
+ watch?: boolean;
47
+ /** Register the resolved files with the font registry, for SVG
48
+ * pictures and layout workers. Default true. */
49
+ register?: boolean;
50
+ /** Faces to load beyond the configuration's. */
51
+ faces?: readonly FontFaceRequest[];
52
+ /** The `FontFace` constructor (default the global one). */
53
+ FontFace?: FontFaceConstructor;
54
+ /** The probe that tells an installed family from a missing one. */
55
+ measureWidth?: FontFallbackOptions['measureWidth'];
56
+ }
57
+ /** What a preparation found. */
58
+ export interface FontReport {
59
+ /** Faces a loaded face of their weight and slant answers for (or an
60
+ * installed family). */
61
+ loaded: FontFaceRequest[];
62
+ /** Faces no loaded face answers for (none of the family, or the one
63
+ * that would is still loading): their text is measured with a fallback
64
+ * face. */
65
+ missing: FontFaceRequest[];
66
+ /** Faces the family has no face for, which the browser draws from
67
+ * another weight or slant of it (the nearest weight as it is, bold
68
+ * made heavier, italic slanted). */
69
+ synthesized: FontFaceRequest[];
70
+ /** `FontFace`s added from the resolver's files. */
71
+ added: number;
72
+ }
73
+ /** The texts of a build's content: the Markdown, the metadata and the
74
+ * resources' captions, notes and cells. */
75
+ export declare function contentTexts(content: PostextContent | FontContentText): string[];
76
+ /**
77
+ * The characters a document sets — its text, its resources' and
78
+ * metadata's, the configuration's own texts, the ASCII digits and letters
79
+ * of folios and labels — once each: the sample a face is loaded for, so a
80
+ * family served as slices (`unicode-range`: Latin Extended, Greek, Arabic,
81
+ * the CJK slices) brings the files the document needs.
82
+ */
83
+ export declare function fontSampleText(content: PostextContent | FontContentText, config?: PostextConfig): string;
84
+ /** The faces a configuration and its text ask for, in a fixed order:
85
+ * families as `configFontFamilies` lists them, then the weights from light
86
+ * to heavy, upright before italic. */
87
+ export declare function configFontFaces(config: PostextConfig | undefined, text?: FontContentText): FontFaceRequest[];
88
+ /**
89
+ * Load every face `config` and its text ask for (body, headings, lists,
90
+ * callout titles and bodies, tables, design texts, running heads,
91
+ * contents, code, comic lettering, in each weight and slant the
92
+ * configuration sets) into the font set, for the characters the document
93
+ * sets, before the first build. A face the set declares is loaded through
94
+ * it (`fontSet.load`); one it does not is asked of `options.resolve`, and
95
+ * the files it gives are added as `FontFace`s (and registered for SVG
96
+ * pictures). The measurements of the families that changed are dropped.
97
+ * Resolves with which faces are there, which are missing and which the
98
+ * browser would synthesize. Where there is no font set (Node), every face
99
+ * is reported loaded and nothing is done.
100
+ */
101
+ export declare function prepareFonts(content: PostextContent | FontContentText, config?: PostextConfig, options?: PrepareFontsOptions): Promise<FontReport>;
102
+ /** A document, or several (the chapters of a book). */
103
+ export type BuiltDocuments = VDTDocument | readonly VDTDocument[];
104
+ export interface LoadedFontsOptions extends PrepareFontsOptions {
105
+ /** The text the documents set, for the sample faces are loaded for.
106
+ * Default: the text of the documents' lines. */
107
+ text?: FontContentText;
108
+ /** Extra builds at most (default 2). */
109
+ maxRounds?: number;
110
+ /** Told what the last round found. */
111
+ onFonts?: (report: FontReport) => void;
112
+ }
113
+ /**
114
+ * Run `build`, then load the faces its pages set text in that the font set
115
+ * could not give (a weight the configuration did not name, a face
116
+ * resolved only now; one a neighbour of the family answered for is asked
117
+ * of the resolver like any other, #650), drop their measurements and
118
+ * build again — at most `maxRounds` extra builds (2). `build` returns a
119
+ * document or several.
120
+ * Faces that stay missing are reported (`onFonts`) and listed by each
121
+ * document's `fontFallback` warnings.
122
+ */
123
+ export declare function withLoadedFonts<T extends BuiltDocuments>(build: () => T | Promise<T>, options?: LoadedFontsOptions): Promise<T>;
124
+ export {};
125
+ //# sourceMappingURL=prepare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../src/fonts/prepare.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,EAAwC,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACzB,MAAM,SAAS,CAAC;AAIjB;2DAC2D;AAC3D,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,eAAe,GAAG,MAAM,CAAC;AAEpE;;uEAEuE;AACvE,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;CACtC;AAED;;yCAEyC;AACzC,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC,cAAc,GAAG,QAAQ,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;AAEvH,MAAM,WAAW,kBAAkB;IACjC;mEAC+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,QAAQ,GAAG,QAAQ,EAC1B,OAAO,EAAE,kBAAkB,KACxB,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEtD,KAAK,mBAAmB,GAAG,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,EAAE,WAAW,CAAC,EAAE,mBAAmB,KAAK,YAAY,CAAC;AAEnJ,MAAM,WAAW,mBAAmB;IAClC;oCACgC;IAChC,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,4CAA4C;IAC5C,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;4CACwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;qDACiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,KAAK,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACnC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,mEAAmE;IACnE,YAAY,CAAC,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC;CACpD;AAED,gCAAgC;AAChC,MAAM,WAAW,UAAU;IACzB;6BACyB;IACzB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B;;gBAEY;IACZ,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B;;yCAEqC;IACrC,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;4CAC4C;AAC5C,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe,GAAG,MAAM,EAAE,CA2BhF;AAuBD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,CAOxG;AAED;;uCAEuC;AACvC,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,eAAe,EAAE,CAoB5G;AAuJD;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,GAAG,eAAe,EACzC,MAAM,CAAC,EAAE,aAAa,EACtB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,UAAU,CAAC,CAOrB;AAoBD,uDAAuD;AACvD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,SAAS,WAAW,EAAE,CAAC;AAElE,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D;qDACiD;IACjD,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACxC;AAaD;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,CAAC,SAAS,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,CAAC,CAAC,CAkCzI"}
@@ -0,0 +1,380 @@
1
+ // Font preparation (#629): load every face a configuration and its text
2
+ // ask for before the first build, from the font set's declared faces or a
3
+ // host resolver, and lay out again with any face the pages used that the
4
+ // configuration did not name. Loading stays the host's: the resolver
5
+ // answers with files (the shape of the PDF font provider), the engine adds
6
+ // them to the font set and to the font registry SVG pictures read (#630).
7
+ import { evictFontFamilies } from '../measure/font';
8
+ import { collectFontUsage, configFontFamilies } from './usage';
9
+ import { defaultFontSet, documentFontFaces, faceRequestKey, fontFallbacks, isGenericFamily, } from './faces';
10
+ import { isFontSetTracked, syncFontSet, watchFonts } from './fontSet';
11
+ import { registerFontBytes, registerFontUrl } from '../svg/fontRegistry';
12
+ /** The texts of a build's content: the Markdown, the metadata and the
13
+ * resources' captions, notes and cells. */
14
+ export function contentTexts(content) {
15
+ if (content === undefined)
16
+ return [];
17
+ if (typeof content === 'string')
18
+ return [content];
19
+ if (Array.isArray(content))
20
+ return [...content];
21
+ const c = content;
22
+ const out = [c.markdown];
23
+ const strings = [];
24
+ const walk = (node, depth) => {
25
+ if (depth > 10 || !node)
26
+ return;
27
+ if (typeof node === 'string') {
28
+ strings.push(node);
29
+ return;
30
+ }
31
+ if (typeof node !== 'object')
32
+ return;
33
+ if (Array.isArray(node)) {
34
+ for (const item of node)
35
+ walk(item, depth + 1);
36
+ return;
37
+ }
38
+ for (const [key, value] of Object.entries(node)) {
39
+ if (/file|url|src|markup|data|id$/i.test(key))
40
+ continue;
41
+ walk(value, depth + 1);
42
+ }
43
+ };
44
+ walk(c.metadata, 0);
45
+ walk(c.resources, 0);
46
+ if (strings.length > 0)
47
+ out.push(strings.join(' '));
48
+ return out;
49
+ }
50
+ /** Text the configuration itself sets: design texts, running heads,
51
+ * labels, contents titles. */
52
+ function configTexts(config) {
53
+ const strings = [];
54
+ const walk = (node, key, depth) => {
55
+ if (depth > 12 || !node)
56
+ return;
57
+ if (typeof node === 'string') {
58
+ if (!/color|colour|family|id$|url|src|file/i.test(key))
59
+ strings.push(node);
60
+ return;
61
+ }
62
+ if (typeof node !== 'object')
63
+ return;
64
+ if (Array.isArray(node)) {
65
+ for (const item of node)
66
+ walk(item, key, depth + 1);
67
+ return;
68
+ }
69
+ for (const [k, value] of Object.entries(node))
70
+ walk(value, k, depth + 1);
71
+ };
72
+ walk(config, '', 0);
73
+ return strings.join(' ');
74
+ }
75
+ /**
76
+ * The characters a document sets — its text, its resources' and
77
+ * metadata's, the configuration's own texts, the ASCII digits and letters
78
+ * of folios and labels — once each: the sample a face is loaded for, so a
79
+ * family served as slices (`unicode-range`: Latin Extended, Greek, Arabic,
80
+ * the CJK slices) brings the files the document needs.
81
+ */
82
+ export function fontSampleText(content, config) {
83
+ const seen = new Set([' ']);
84
+ for (let c = 0x21; c < 0x7f; c++)
85
+ seen.add(String.fromCharCode(c));
86
+ for (const text of [...contentTexts(content), configTexts(config)]) {
87
+ for (const ch of text)
88
+ if (ch > ' ' && ch !== '­')
89
+ seen.add(ch);
90
+ }
91
+ return [...seen].join('');
92
+ }
93
+ /** The faces a configuration and its text ask for, in a fixed order:
94
+ * families as `configFontFamilies` lists them, then the weights from light
95
+ * to heavy, upright before italic. */
96
+ export function configFontFaces(config, text) {
97
+ const cfg = config ?? {};
98
+ const usage = collectFontUsage(cfg, { markdown: text });
99
+ const families = [...new Set([...configFontFamilies(cfg, text), ...usage.keys()])];
100
+ const out = [];
101
+ for (const family of families) {
102
+ if (isGenericFamily(family))
103
+ continue;
104
+ const uses = usage.get(family) ?? [{ weight: 400, style: 'normal' }];
105
+ const seen = new Set();
106
+ const faces = uses
107
+ .filter((u) => {
108
+ const key = `${u.weight}|${u.style}`;
109
+ if (seen.has(key))
110
+ return false;
111
+ seen.add(key);
112
+ return true;
113
+ })
114
+ .sort((a, b) => a.weight - b.weight || (a.style === b.style ? 0 : a.style === 'normal' ? -1 : 1));
115
+ for (const u of faces)
116
+ out.push({ family, weight: u.weight, style: u.style });
117
+ }
118
+ return out;
119
+ }
120
+ function fontSpec(f) {
121
+ return `${f.style === 'italic' ? 'italic ' : ''}${f.weight} 16px ${JSON.stringify(f.family)}`;
122
+ }
123
+ function normalizeAnswer(answer) {
124
+ if (answer === null || answer === undefined)
125
+ return [];
126
+ const list = Array.isArray(answer) ? answer : [answer];
127
+ const out = [];
128
+ for (const item of list) {
129
+ if (item === null || item === undefined)
130
+ continue;
131
+ if (typeof item === 'string' || item instanceof ArrayBuffer || ArrayBuffer.isView(item))
132
+ out.push({ source: item });
133
+ else if (typeof item === 'object' && 'source' in item)
134
+ out.push(item);
135
+ }
136
+ return out.filter((f) => (typeof f.source === 'string' ? f.source.length > 0 : f.source.byteLength > 0));
137
+ }
138
+ function cssSource(url) {
139
+ return /^\s*(url|local)\(/i.test(url) ? url : `url(${JSON.stringify(url)})`;
140
+ }
141
+ function bytesOf(source) {
142
+ return source instanceof ArrayBuffer ? new Uint8Array(source) : new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
143
+ }
144
+ /** `promise`, or `fallback` once `deadline` (ms, `Date.now()` scale) passes. */
145
+ function until(promise, deadline, fallback) {
146
+ const left = deadline - Date.now();
147
+ if (left <= 0)
148
+ return Promise.resolve(fallback);
149
+ let timer;
150
+ return Promise.race([
151
+ promise.catch(() => fallback),
152
+ new Promise((resolve) => {
153
+ timer = setTimeout(() => resolve(fallback), left);
154
+ }),
155
+ ]).finally(() => {
156
+ if (timer !== undefined)
157
+ clearTimeout(timer);
158
+ });
159
+ }
160
+ function hasExactFace(declared, f) {
161
+ return declared.some((d) => {
162
+ const style = /italic|oblique/i.test(d.style ?? '') ? 'italic' : 'normal';
163
+ if (style !== f.style)
164
+ return false;
165
+ const parts = (d.weight ?? '400').trim().split(/\s+/).map((w) => (w === 'bold' ? 700 : w === 'normal' ? 400 : Number(w)));
166
+ const lo = Number.isFinite(parts[0]) ? parts[0] : 400;
167
+ const hi = Number.isFinite(parts[1]) ? parts[1] : lo;
168
+ return f.weight >= Math.min(lo, hi) && f.weight <= Math.max(lo, hi);
169
+ });
170
+ }
171
+ function declaredFaces(fontSet, family) {
172
+ const lower = family.toLowerCase();
173
+ const out = [];
174
+ for (const face of fontSet) {
175
+ const f = face.family.trim().replace(/^(["'])(.*)\1$/, '$2').toLowerCase();
176
+ if (f === lower)
177
+ out.push(face);
178
+ }
179
+ return out;
180
+ }
181
+ /** Load `faces` into `fontSet`: what it declares through `fontSet.load`,
182
+ * the rest through the resolver. Faces from the resolver are added once
183
+ * all have loaded, in the order of `faces` and of each answer (latin
184
+ * before latin-ext before greek when the resolver answers so), so the
185
+ * set is the same whatever order the files arrive in. */
186
+ async function loadFaces(faces, fontSet, sample, options) {
187
+ const deadline = Date.now() + (options.timeoutMs ?? 10_000);
188
+ const FontFaceCtor = options.FontFace ?? globalThis.FontFace;
189
+ const codePoints = new Set();
190
+ for (const ch of sample)
191
+ codePoints.add(ch.codePointAt(0));
192
+ const request = { text: sample, codePoints };
193
+ const touched = new Set();
194
+ const toAdd = faces.map(() => []);
195
+ await Promise.all(faces.map(async (f, i) => {
196
+ let declared = declaredFaces(fontSet, f.family);
197
+ if (!hasExactFace(declared, f) && options.resolve) {
198
+ let files = [];
199
+ try {
200
+ files = normalizeAnswer(await until(Promise.resolve(options.resolve(f.family, f.weight, f.style, request)), deadline, null));
201
+ }
202
+ catch {
203
+ files = [];
204
+ }
205
+ if (files.length > 0 && FontFaceCtor) {
206
+ const made = files.map((file) => {
207
+ const descriptors = {
208
+ weight: String(file.weight ?? f.weight),
209
+ style: file.style ?? f.style,
210
+ ...(file.unicodeRange ? { unicodeRange: file.unicodeRange } : {}),
211
+ };
212
+ const source = typeof file.source === 'string' ? cssSource(file.source) : file.source;
213
+ return { file, face: new FontFaceCtor(f.family, source, descriptors), descriptors };
214
+ });
215
+ const loaded = await Promise.all(made.map(async ({ face }) => (face.load ? until(face.load().then(() => true), deadline, false) : true)));
216
+ made.forEach(({ file, face, descriptors }, k) => {
217
+ if (!loaded[k])
218
+ return;
219
+ toAdd[i].push(face);
220
+ if (options.register !== false) {
221
+ const style = String(descriptors.style);
222
+ if (typeof file.source === 'string') {
223
+ if (!/^\s*local\(/i.test(file.source))
224
+ registerFontUrl(f.family, String(descriptors.weight), style, file.source.replace(/^\s*url\(\s*["']?|["']?\s*\)\s*$/g, ''), { unicodeRange: file.unicodeRange });
225
+ }
226
+ else {
227
+ registerFontBytes(f.family, String(descriptors.weight), style, bytesOf(file.source), { unicodeRange: file.unicodeRange });
228
+ }
229
+ }
230
+ });
231
+ if (toAdd[i].length > 0) {
232
+ touched.add(f.family);
233
+ return;
234
+ }
235
+ }
236
+ // The resolver may have declared the face itself.
237
+ declared = declaredFaces(fontSet, f.family);
238
+ }
239
+ if (declared.length > 0) {
240
+ const before = declared.filter((d) => d.status === 'loaded').length;
241
+ await until(fontSet.load(fontSpec(f), sample), deadline, []);
242
+ const after = declaredFaces(fontSet, f.family).filter((d) => d.status === 'loaded').length;
243
+ if (after !== before)
244
+ touched.add(f.family);
245
+ }
246
+ }));
247
+ let added = 0;
248
+ for (const list of toAdd) {
249
+ for (const face of list) {
250
+ fontSet.add(face);
251
+ added++;
252
+ }
253
+ }
254
+ return { added, touched };
255
+ }
256
+ /** Whether `fontSet` has a loaded face, or an installed family, for each
257
+ * face; split into the report's lists. */
258
+ function classify(faces, fontSet, options, added) {
259
+ const fallbacks = new Map(fontFallbacks(faces, fontSet, { measureWidth: options.measureWidth }).map((f) => [faceRequestKey(f), f]));
260
+ const report = { loaded: [], missing: [], synthesized: [], added };
261
+ for (const f of faces) {
262
+ const fb = fallbacks.get(faceRequestKey(f));
263
+ if (!fb)
264
+ report.loaded.push(f);
265
+ else if (fb.reason === 'missing')
266
+ report.missing.push(f);
267
+ else
268
+ report.synthesized.push(f);
269
+ }
270
+ return report;
271
+ }
272
+ /**
273
+ * Load every face `config` and its text ask for (body, headings, lists,
274
+ * callout titles and bodies, tables, design texts, running heads,
275
+ * contents, code, comic lettering, in each weight and slant the
276
+ * configuration sets) into the font set, for the characters the document
277
+ * sets, before the first build. A face the set declares is loaded through
278
+ * it (`fontSet.load`); one it does not is asked of `options.resolve`, and
279
+ * the files it gives are added as `FontFace`s (and registered for SVG
280
+ * pictures). The measurements of the families that changed are dropped.
281
+ * Resolves with which faces are there, which are missing and which the
282
+ * browser would synthesize. Where there is no font set (Node), every face
283
+ * is reported loaded and nothing is done.
284
+ */
285
+ export async function prepareFonts(content, config, options = {}) {
286
+ const texts = contentTexts(content);
287
+ const wanted = configFontFaces(config, texts);
288
+ for (const f of options.faces ?? [])
289
+ if (!wanted.some((w) => faceRequestKey(w) === faceRequestKey(f)))
290
+ wanted.push(f);
291
+ const fontSet = options.fontSet === undefined ? defaultFontSet() : options.fontSet;
292
+ if (!fontSet)
293
+ return { loaded: wanted, missing: [], synthesized: [], added: 0 };
294
+ return prepareFaces(wanted, fontSet, fontSampleText(content, config), options);
295
+ }
296
+ async function prepareFaces(wanted, fontSet, sample, options) {
297
+ if (!isFontSetTracked(fontSet))
298
+ syncFontSet(fontSet);
299
+ const { added, touched } = await loadFaces(wanted, fontSet, sample, options);
300
+ // Drop what was measured in the families whose faces changed: those
301
+ // the set's record shows, and every family this call loaded faces for.
302
+ // The set is read whatever it reports (#649): `fontSet.load` resolves a
303
+ // task before the set's `loadingdone`, and a declared face that loads
304
+ // leaves the size as it was, so a set known from an earlier build would
305
+ // pass for unchanged and the builds that follow would keep the widths
306
+ // of the fallback face. Recording it here also leaves that
307
+ // `loadingdone` nothing to drop a second time.
308
+ const changed = new Set(syncFontSet(fontSet, { evict: false, force: true }));
309
+ for (const family of touched)
310
+ changed.add(family.toLowerCase());
311
+ if (changed.size > 0)
312
+ evictFontFamilies(changed);
313
+ if (options.watch !== false)
314
+ watchFonts(fontSet);
315
+ return classify(wanted, fontSet, options, added);
316
+ }
317
+ function documentsOf(result) {
318
+ return Array.isArray(result) ? [...result] : [result];
319
+ }
320
+ /** The text of a document's lines (for the sample). */
321
+ function documentText(docs) {
322
+ const parts = [];
323
+ for (const doc of docs)
324
+ for (const block of doc.blocks)
325
+ for (const line of block.lines)
326
+ for (const seg of line.segments ?? [])
327
+ parts.push(seg.text);
328
+ return parts.join('');
329
+ }
330
+ /**
331
+ * Run `build`, then load the faces its pages set text in that the font set
332
+ * could not give (a weight the configuration did not name, a face
333
+ * resolved only now; one a neighbour of the family answered for is asked
334
+ * of the resolver like any other, #650), drop their measurements and
335
+ * build again — at most `maxRounds` extra builds (2). `build` returns a
336
+ * document or several.
337
+ * Faces that stay missing are reported (`onFonts`) and listed by each
338
+ * document's `fontFallback` warnings.
339
+ */
340
+ export async function withLoadedFonts(build, options = {}) {
341
+ const fontSet = options.fontSet === undefined ? defaultFontSet() : options.fontSet;
342
+ let result = await build();
343
+ if (!fontSet)
344
+ return result;
345
+ const tried = new Set();
346
+ const rounds = options.maxRounds ?? 2;
347
+ let report;
348
+ for (let round = 0;; round++) {
349
+ const docs = documentsOf(result);
350
+ const faces = new Map();
351
+ for (const doc of docs)
352
+ for (const f of documentFontFaces(doc))
353
+ faces.set(faceRequestKey(f), f);
354
+ const all = [...faces.values()];
355
+ const fresh = fontFallbacks(all, fontSet, { measureWidth: options.measureWidth })
356
+ .filter((f) => !tried.has(faceRequestKey(f)))
357
+ .map(({ family, weight, style }) => ({ family, weight, style }));
358
+ if (fresh.length === 0 || round >= rounds) {
359
+ report = classify(all, fontSet, options, report?.added ?? 0);
360
+ break;
361
+ }
362
+ for (const f of fresh)
363
+ tried.add(faceRequestKey(f));
364
+ const sample = fontSampleText(options.text ?? documentText(docs));
365
+ const before = new Set(fontFallbacks(fresh, fontSet, { measureWidth: options.measureWidth }).map(faceRequestKey));
366
+ const step = await prepareFaces(fresh, fontSet, sample, { ...options, watch: false });
367
+ const stillMissing = new Set([...step.missing, ...step.synthesized].map(faceRequestKey));
368
+ const gained = [...before].some((k) => !stillMissing.has(k));
369
+ if (step.added === 0 && !gained) {
370
+ report = classify(all, fontSet, options, 0);
371
+ break;
372
+ }
373
+ result = await build();
374
+ }
375
+ if (options.watch !== false)
376
+ watchFonts(fontSet);
377
+ options.onFonts?.(report);
378
+ return result;
379
+ }
380
+ //# sourceMappingURL=prepare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/fonts/prepare.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { VDTDocument, RenderWarning } from './vdt';
2
+ import { type SvgFontSyncProvider } from './svg/fonts';
2
3
  export interface RenderHtmlOptions {
3
4
  /** Layout mode: single vertical column or many columns laid out horizontally. */
4
5
  mode?: 'single' | 'multi';
@@ -66,6 +67,22 @@ export interface RenderHtmlOptions {
66
67
  * the resources all of them place ({@link anchoredResourceIds}), so a
67
68
  * reference to a figure an earlier chapter placed links to it. */
68
69
  refTargets?: Iterable<string>;
70
+ /** Embed the document's fonts in the SVG pictures `resourceImageUrl`
71
+ * serves as `data:image/svg+xml` URIs (#630): the faces their text
72
+ * names, as `@font-face` data URIs, so an `<img>` sets the labels in
73
+ * them. `true` takes the faces held in memory by the registry
74
+ * (`registerFontBytes`, `loadBundleFonts`); an object names another
75
+ * provider, the size cap per SVG and families to leave out. Skipped
76
+ * under `diagramStyle.inlineFonts: false` and for a resource with
77
+ * `svg.inlineFonts: false`. A family with no face is reported as
78
+ * `svgFontUnavailable`, the cap as `svgFontsTooLarge`. Default off
79
+ * (object URLs cannot be read synchronously; `bundleImageUrl` inlines
80
+ * on its own). */
81
+ inlineSvgFonts?: boolean | {
82
+ fonts?: SvgFontSyncProvider;
83
+ maxBytes?: number;
84
+ withhold?: (family: string) => boolean;
85
+ };
69
86
  }
70
87
  /**
71
88
  * The resources this document anchors in its HTML (`id="pt-res-<id>"`):
@@ -1 +1 @@
1
- {"version":3,"file":"html-backend.d.ts","sourceRoot":"","sources":["../src/html-backend.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EAqBX,aAAa,EACd,MAAM,OAAO,CAAC;AA+Df,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;kDAI8C;IAC9C,gBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,GAAG;QAC5D;;;0BAGkB;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;IACF;;;;;;;;;;;;iEAY6D;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;4DAGwD;IACxD,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1D;;;;;;;2DAOuD;IACvD,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;KAAE,CAAC;IACnG;;;wDAGoD;IACpD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C;;;;;;;uEAOmE;IACnE,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC/B;AAgKD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAajE;AAmpED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5C,8EAA8E;IAC9E,cAAc,EAAE,MAAM,CAAC;IACvB;4EACwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,KAAK,EAAE,mBAAmB,EAAE,CAAC;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,QAS4B,CAAC;AAEzD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,WAAW,EAChB,OAAO,GAAE,iBAAsB,GAC9B,eAAe,CAiFjB;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAEtF"}
1
+ {"version":3,"file":"html-backend.d.ts","sourceRoot":"","sources":["../src/html-backend.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EAqBX,aAAa,EACd,MAAM,OAAO,CAAC;AAIf,OAAO,EAA8B,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AA8DnF,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;kDAI8C;IAC9C,gBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,GAAG;QAC5D;;;0BAGkB;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;IACF;;;;;;;;;;;;iEAY6D;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;4DAGwD;IACxD,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1D;;;;;;;2DAOuD;IACvD,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;KAAE,CAAC;IACnG;;;wDAGoD;IACpD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C;;;;;;;uEAOmE;IACnE,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B;;;;;;;;;;uBAUmB;IACnB,cAAc,CAAC,EAAE,OAAO,GAAG;QACzB,KAAK,CAAC,EAAE,mBAAmB,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;KACxC,CAAC;CACH;AAmKD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAajE;AAiuED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5C,8EAA8E;IAC9E,cAAc,EAAE,MAAM,CAAC;IACvB;4EACwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,KAAK,EAAE,mBAAmB,EAAE,CAAC;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,QAS4B,CAAC;AAEzD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,WAAW,EAChB,OAAO,GAAE,iBAAsB,GAC9B,eAAe,CAmFjB;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAEtF"}