postext 1.23.0 → 1.25.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 (471) hide show
  1. package/dist/__tests__/bundle/bitmapInfo.test.d.ts +2 -0
  2. package/dist/__tests__/bundle/bitmapInfo.test.d.ts.map +1 -0
  3. package/dist/__tests__/bundle/bitmapInfo.test.js +78 -0
  4. package/dist/__tests__/bundle/bitmapInfo.test.js.map +1 -0
  5. package/dist/__tests__/bundle/cjkRulesPin.test.d.ts +2 -0
  6. package/dist/__tests__/bundle/cjkRulesPin.test.d.ts.map +1 -0
  7. package/dist/__tests__/bundle/cjkRulesPin.test.js +78 -0
  8. package/dist/__tests__/bundle/cjkRulesPin.test.js.map +1 -0
  9. package/dist/__tests__/bundle/designOverflowPin.test.d.ts +2 -0
  10. package/dist/__tests__/bundle/designOverflowPin.test.d.ts.map +1 -0
  11. package/dist/__tests__/bundle/designOverflowPin.test.js +89 -0
  12. package/dist/__tests__/bundle/designOverflowPin.test.js.map +1 -0
  13. package/dist/__tests__/bundle/flowColumnsPin.test.d.ts +2 -0
  14. package/dist/__tests__/bundle/flowColumnsPin.test.d.ts.map +1 -0
  15. package/dist/__tests__/bundle/flowColumnsPin.test.js +40 -0
  16. package/dist/__tests__/bundle/flowColumnsPin.test.js.map +1 -0
  17. package/dist/__tests__/bundle/gridBalancingPin.test.d.ts +2 -0
  18. package/dist/__tests__/bundle/gridBalancingPin.test.d.ts.map +1 -0
  19. package/dist/__tests__/bundle/gridBalancingPin.test.js +53 -0
  20. package/dist/__tests__/bundle/gridBalancingPin.test.js.map +1 -0
  21. package/dist/__tests__/bundle/inlineTableSplitPin.test.d.ts +2 -0
  22. package/dist/__tests__/bundle/inlineTableSplitPin.test.d.ts.map +1 -0
  23. package/dist/__tests__/bundle/inlineTableSplitPin.test.js +43 -0
  24. package/dist/__tests__/bundle/inlineTableSplitPin.test.js.map +1 -0
  25. package/dist/__tests__/bundle/openerHeadFloatsPin.test.d.ts +2 -0
  26. package/dist/__tests__/bundle/openerHeadFloatsPin.test.d.ts.map +1 -0
  27. package/dist/__tests__/bundle/openerHeadFloatsPin.test.js +50 -0
  28. package/dist/__tests__/bundle/openerHeadFloatsPin.test.js.map +1 -0
  29. package/dist/__tests__/bundle.test.js +11 -1
  30. package/dist/__tests__/bundle.test.js.map +1 -1
  31. package/dist/__tests__/cjk/annotationsRender.test.js +5 -2
  32. package/dist/__tests__/cjk/annotationsRender.test.js.map +1 -1
  33. package/dist/__tests__/cjk/circledNumbers.test.d.ts +2 -0
  34. package/dist/__tests__/cjk/circledNumbers.test.d.ts.map +1 -0
  35. package/dist/__tests__/cjk/circledNumbers.test.js +83 -0
  36. package/dist/__tests__/cjk/circledNumbers.test.js.map +1 -0
  37. package/dist/__tests__/cjk/gridBalancing.test.d.ts +2 -0
  38. package/dist/__tests__/cjk/gridBalancing.test.d.ts.map +1 -0
  39. package/dist/__tests__/cjk/gridBalancing.test.js +227 -0
  40. package/dist/__tests__/cjk/gridBalancing.test.js.map +1 -0
  41. package/dist/__tests__/cjk/justifyRender.test.js +2 -1
  42. package/dist/__tests__/cjk/justifyRender.test.js.map +1 -1
  43. package/dist/__tests__/cjk/titleBreaks.test.d.ts +2 -0
  44. package/dist/__tests__/cjk/titleBreaks.test.d.ts.map +1 -0
  45. package/dist/__tests__/cjk/titleBreaks.test.js +76 -0
  46. package/dist/__tests__/cjk/titleBreaks.test.js.map +1 -0
  47. package/dist/__tests__/cjk/wordJoiner.test.js +13 -4
  48. package/dist/__tests__/cjk/wordJoiner.test.js.map +1 -1
  49. package/dist/__tests__/codeBlocks.test.js +1 -1
  50. package/dist/__tests__/codeBlocks.test.js.map +1 -1
  51. package/dist/__tests__/design/cjkDesignText.test.d.ts +2 -0
  52. package/dist/__tests__/design/cjkDesignText.test.d.ts.map +1 -0
  53. package/dist/__tests__/design/cjkDesignText.test.js +130 -0
  54. package/dist/__tests__/design/cjkDesignText.test.js.map +1 -0
  55. package/dist/__tests__/design/cjkDesignTextRender.test.d.ts +2 -0
  56. package/dist/__tests__/design/cjkDesignTextRender.test.d.ts.map +1 -0
  57. package/dist/__tests__/design/cjkDesignTextRender.test.js +100 -0
  58. package/dist/__tests__/design/cjkDesignTextRender.test.js.map +1 -0
  59. package/dist/__tests__/design/designTextOverflow.test.d.ts +2 -0
  60. package/dist/__tests__/design/designTextOverflow.test.d.ts.map +1 -0
  61. package/dist/__tests__/design/designTextOverflow.test.js +102 -0
  62. package/dist/__tests__/design/designTextOverflow.test.js.map +1 -0
  63. package/dist/__tests__/exports.test.js +60 -0
  64. package/dist/__tests__/exports.test.js.map +1 -1
  65. package/dist/__tests__/frontmatterInvalid.test.d.ts +2 -0
  66. package/dist/__tests__/frontmatterInvalid.test.d.ts.map +1 -0
  67. package/dist/__tests__/frontmatterInvalid.test.js +101 -0
  68. package/dist/__tests__/frontmatterInvalid.test.js.map +1 -0
  69. package/dist/__tests__/hardBreaks.test.js +1 -1
  70. package/dist/__tests__/hardBreaks.test.js.map +1 -1
  71. package/dist/__tests__/headingFirstLineIndent.test.d.ts +2 -0
  72. package/dist/__tests__/headingFirstLineIndent.test.d.ts.map +1 -0
  73. package/dist/__tests__/headingFirstLineIndent.test.js +185 -0
  74. package/dist/__tests__/headingFirstLineIndent.test.js.map +1 -0
  75. package/dist/__tests__/headingInlineMarks.test.js +1 -1
  76. package/dist/__tests__/headingInlineMarks.test.js.map +1 -1
  77. package/dist/__tests__/headingLetterSpacing.test.js +1 -1
  78. package/dist/__tests__/headingLetterSpacing.test.js.map +1 -1
  79. package/dist/__tests__/headingNumberSpans.test.d.ts +2 -0
  80. package/dist/__tests__/headingNumberSpans.test.d.ts.map +1 -0
  81. package/dist/__tests__/headingNumberSpans.test.js +96 -0
  82. package/dist/__tests__/headingNumberSpans.test.js.map +1 -0
  83. package/dist/__tests__/mathSizeMigration.test.js +2 -2
  84. package/dist/__tests__/mathSizeMigration.test.js.map +1 -1
  85. package/dist/__tests__/multipleColumns.test.js +207 -0
  86. package/dist/__tests__/multipleColumns.test.js.map +1 -1
  87. package/dist/__tests__/parse/citations.test.js +29 -0
  88. package/dist/__tests__/parse/citations.test.js.map +1 -1
  89. package/dist/__tests__/pipeline/bitmapResolution.test.d.ts +2 -0
  90. package/dist/__tests__/pipeline/bitmapResolution.test.d.ts.map +1 -0
  91. package/dist/__tests__/pipeline/bitmapResolution.test.js +139 -0
  92. package/dist/__tests__/pipeline/bitmapResolution.test.js.map +1 -0
  93. package/dist/__tests__/pipeline/calloutInlineResourceGap.test.js +10 -6
  94. package/dist/__tests__/pipeline/calloutInlineResourceGap.test.js.map +1 -1
  95. package/dist/__tests__/pipeline/calloutOverflow.test.js +4 -2
  96. package/dist/__tests__/pipeline/calloutOverflow.test.js.map +1 -1
  97. package/dist/__tests__/pipeline/calloutSplitMinLinesChild.test.js +1 -1
  98. package/dist/__tests__/pipeline/calloutSplitMinLinesChild.test.js.map +1 -1
  99. package/dist/__tests__/pipeline/calloutTallKeepTogether.test.js +6 -5
  100. package/dist/__tests__/pipeline/calloutTallKeepTogether.test.js.map +1 -1
  101. package/dist/__tests__/pipeline/colonListRoom.test.js +1 -1
  102. package/dist/__tests__/pipeline/colonListRoom.test.js.map +1 -1
  103. package/dist/__tests__/pipeline/compoundBreaks.test.js +1 -1
  104. package/dist/__tests__/pipeline/compoundBreaks.test.js.map +1 -1
  105. package/dist/__tests__/pipeline/dashBreaks.test.js +1 -1
  106. package/dist/__tests__/pipeline/dashBreaks.test.js.map +1 -1
  107. package/dist/__tests__/pipeline/designTextTruncated.test.d.ts +2 -0
  108. package/dist/__tests__/pipeline/designTextTruncated.test.d.ts.map +1 -0
  109. package/dist/__tests__/pipeline/designTextTruncated.test.js +116 -0
  110. package/dist/__tests__/pipeline/designTextTruncated.test.js.map +1 -0
  111. package/dist/__tests__/pipeline/floatCitingPage.test.d.ts +2 -0
  112. package/dist/__tests__/pipeline/floatCitingPage.test.d.ts.map +1 -0
  113. package/dist/__tests__/pipeline/floatCitingPage.test.js +241 -0
  114. package/dist/__tests__/pipeline/floatCitingPage.test.js.map +1 -0
  115. package/dist/__tests__/pipeline/floatOverInlineResource.test.js +18 -6
  116. package/dist/__tests__/pipeline/floatOverInlineResource.test.js.map +1 -1
  117. package/dist/__tests__/pipeline/floatPlacement.test.js +3 -3
  118. package/dist/__tests__/pipeline/floatPlacement.test.js.map +1 -1
  119. package/dist/__tests__/pipeline/floatShrink.test.d.ts +2 -0
  120. package/dist/__tests__/pipeline/floatShrink.test.d.ts.map +1 -0
  121. package/dist/__tests__/pipeline/floatShrink.test.js +298 -0
  122. package/dist/__tests__/pipeline/floatShrink.test.js.map +1 -0
  123. package/dist/__tests__/pipeline/flowColumns.test.d.ts +2 -0
  124. package/dist/__tests__/pipeline/flowColumns.test.d.ts.map +1 -0
  125. package/dist/__tests__/pipeline/flowColumns.test.js +261 -0
  126. package/dist/__tests__/pipeline/flowColumns.test.js.map +1 -0
  127. package/dist/__tests__/pipeline/headingKeepFitEps.test.d.ts +2 -0
  128. package/dist/__tests__/pipeline/headingKeepFitEps.test.d.ts.map +1 -0
  129. package/dist/__tests__/pipeline/headingKeepFitEps.test.js +83 -0
  130. package/dist/__tests__/pipeline/headingKeepFitEps.test.js.map +1 -0
  131. package/dist/__tests__/pipeline/headingSplitOrphans.test.js +1 -1
  132. package/dist/__tests__/pipeline/headingSplitOrphans.test.js.map +1 -1
  133. package/dist/__tests__/pipeline/inlineFigureSpace.test.js +1 -1
  134. package/dist/__tests__/pipeline/inlineFigureSpace.test.js.map +1 -1
  135. package/dist/__tests__/pipeline/inlineTableSplit.test.d.ts +2 -0
  136. package/dist/__tests__/pipeline/inlineTableSplit.test.d.ts.map +1 -0
  137. package/dist/__tests__/pipeline/inlineTableSplit.test.js +238 -0
  138. package/dist/__tests__/pipeline/inlineTableSplit.test.js.map +1 -0
  139. package/dist/__tests__/pipeline/paragraphContainerTail.test.js +1 -1
  140. package/dist/__tests__/pipeline/paragraphContainerTail.test.js.map +1 -1
  141. package/dist/__tests__/pipeline/raggedOptimal.test.js +1 -1
  142. package/dist/__tests__/pipeline/raggedOptimal.test.js.map +1 -1
  143. package/dist/__tests__/pipeline/resolvedPaletteCopy.test.js +3 -2
  144. package/dist/__tests__/pipeline/resolvedPaletteCopy.test.js.map +1 -1
  145. package/dist/__tests__/pipeline/sideBoxAfterText.test.d.ts +2 -0
  146. package/dist/__tests__/pipeline/sideBoxAfterText.test.d.ts.map +1 -0
  147. package/dist/__tests__/pipeline/sideBoxAfterText.test.js +163 -0
  148. package/dist/__tests__/pipeline/sideBoxAfterText.test.js.map +1 -0
  149. package/dist/__tests__/pipeline/textWrap.test.d.ts +2 -0
  150. package/dist/__tests__/pipeline/textWrap.test.d.ts.map +1 -0
  151. package/dist/__tests__/pipeline/textWrap.test.js +453 -0
  152. package/dist/__tests__/pipeline/textWrap.test.js.map +1 -0
  153. package/dist/__tests__/preflight.test.js +30 -1
  154. package/dist/__tests__/preflight.test.js.map +1 -1
  155. package/dist/__tests__/prepareFonts.test.d.ts +2 -0
  156. package/dist/__tests__/prepareFonts.test.d.ts.map +1 -0
  157. package/dist/__tests__/prepareFonts.test.js +358 -0
  158. package/dist/__tests__/prepareFonts.test.js.map +1 -0
  159. package/dist/__tests__/presets/showcaseDesignOverflow.test.d.ts +2 -0
  160. package/dist/__tests__/presets/showcaseDesignOverflow.test.d.ts.map +1 -0
  161. package/dist/__tests__/presets/showcaseDesignOverflow.test.js +58 -0
  162. package/dist/__tests__/presets/showcaseDesignOverflow.test.js.map +1 -0
  163. package/dist/__tests__/svgFonts.test.d.ts +2 -0
  164. package/dist/__tests__/svgFonts.test.d.ts.map +1 -0
  165. package/dist/__tests__/svgFonts.test.js +286 -0
  166. package/dist/__tests__/svgFonts.test.js.map +1 -0
  167. package/dist/__tests__/table/booktabs.test.d.ts +2 -0
  168. package/dist/__tests__/table/booktabs.test.d.ts.map +1 -0
  169. package/dist/__tests__/table/booktabs.test.js +290 -0
  170. package/dist/__tests__/table/booktabs.test.js.map +1 -0
  171. package/dist/__tests__/textWrapMeasure.test.d.ts +2 -0
  172. package/dist/__tests__/textWrapMeasure.test.d.ts.map +1 -0
  173. package/dist/__tests__/textWrapMeasure.test.js +162 -0
  174. package/dist/__tests__/textWrapMeasure.test.js.map +1 -0
  175. package/dist/__tests__/verseLines.test.js +134 -4
  176. package/dist/__tests__/verseLines.test.js.map +1 -1
  177. package/dist/__tests__/vertical/measurePaint.test.js +16 -0
  178. package/dist/__tests__/vertical/measurePaint.test.js.map +1 -1
  179. package/dist/bitmapResolution.d.ts +42 -0
  180. package/dist/bitmapResolution.d.ts.map +1 -0
  181. package/dist/bitmapResolution.js +82 -0
  182. package/dist/bitmapResolution.js.map +1 -0
  183. package/dist/bundle/adapters.d.ts +31 -7
  184. package/dist/bundle/adapters.d.ts.map +1 -1
  185. package/dist/bundle/adapters.js +113 -34
  186. package/dist/bundle/adapters.js.map +1 -1
  187. package/dist/bundle/codec.d.ts +9 -2
  188. package/dist/bundle/codec.d.ts.map +1 -1
  189. package/dist/bundle/codec.js +25 -2
  190. package/dist/bundle/codec.js.map +1 -1
  191. package/dist/bundle/configVersion.d.ts +168 -10
  192. package/dist/bundle/configVersion.d.ts.map +1 -1
  193. package/dist/bundle/configVersion.js +414 -8
  194. package/dist/bundle/configVersion.js.map +1 -1
  195. package/dist/bundle/index.d.ts +5 -5
  196. package/dist/bundle/index.d.ts.map +1 -1
  197. package/dist/bundle/index.js +3 -3
  198. package/dist/bundle/index.js.map +1 -1
  199. package/dist/bundle/manifest.d.ts +12 -2
  200. package/dist/bundle/manifest.d.ts.map +1 -1
  201. package/dist/bundle/manifest.js +134 -7
  202. package/dist/bundle/manifest.js.map +1 -1
  203. package/dist/bundle/types.d.ts +32 -2
  204. package/dist/bundle/types.d.ts.map +1 -1
  205. package/dist/canvas-backend/blockRender.d.ts.map +1 -1
  206. package/dist/canvas-backend/blockRender.js +6 -4
  207. package/dist/canvas-backend/blockRender.js.map +1 -1
  208. package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
  209. package/dist/canvas-backend/headerFooter.js +3 -1
  210. package/dist/canvas-backend/headerFooter.js.map +1 -1
  211. package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
  212. package/dist/canvas-backend/renderResourceBlock.js +15 -1
  213. package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
  214. package/dist/columnRule.d.ts.map +1 -1
  215. package/dist/columnRule.js +5 -2
  216. package/dist/columnRule.js.map +1 -1
  217. package/dist/configWarnings.js +30 -3
  218. package/dist/configWarnings.js.map +1 -1
  219. package/dist/defaults/cjk.d.ts +2 -1
  220. package/dist/defaults/cjk.d.ts.map +1 -1
  221. package/dist/defaults/cjk.js +17 -1
  222. package/dist/defaults/cjk.js.map +1 -1
  223. package/dist/defaults/diagramStyle.d.ts.map +1 -1
  224. package/dist/defaults/diagramStyle.js +6 -0
  225. package/dist/defaults/diagramStyle.js.map +1 -1
  226. package/dist/defaults/headerFooter.d.ts +21 -6
  227. package/dist/defaults/headerFooter.d.ts.map +1 -1
  228. package/dist/defaults/headerFooter.js +37 -14
  229. package/dist/defaults/headerFooter.js.map +1 -1
  230. package/dist/defaults/headings.d.ts +5 -4
  231. package/dist/defaults/headings.d.ts.map +1 -1
  232. package/dist/defaults/headings.js +18 -4
  233. package/dist/defaults/headings.js.map +1 -1
  234. package/dist/defaults/index.d.ts +1 -1
  235. package/dist/defaults/index.d.ts.map +1 -1
  236. package/dist/defaults/index.js +1 -1
  237. package/dist/defaults/index.js.map +1 -1
  238. package/dist/defaults/layout.d.ts +35 -1
  239. package/dist/defaults/layout.d.ts.map +1 -1
  240. package/dist/defaults/layout.js +137 -1
  241. package/dist/defaults/layout.js.map +1 -1
  242. package/dist/defaults/parts.js +4 -4
  243. package/dist/defaults/parts.js.map +1 -1
  244. package/dist/defaults/tableStyle.d.ts.map +1 -1
  245. package/dist/defaults/tableStyle.js +50 -0
  246. package/dist/defaults/tableStyle.js.map +1 -1
  247. package/dist/defaults/toc.js +2 -2
  248. package/dist/defaults/verse.d.ts +2 -1
  249. package/dist/defaults/verse.d.ts.map +1 -1
  250. package/dist/defaults/verse.js +6 -1
  251. package/dist/defaults/verse.js.map +1 -1
  252. package/dist/design/cjkText.d.ts +34 -0
  253. package/dist/design/cjkText.d.ts.map +1 -0
  254. package/dist/design/cjkText.js +82 -0
  255. package/dist/design/cjkText.js.map +1 -0
  256. package/dist/design/layout.d.ts +15 -1
  257. package/dist/design/layout.d.ts.map +1 -1
  258. package/dist/design/layout.js +130 -8
  259. package/dist/design/layout.js.map +1 -1
  260. package/dist/design/richText.d.ts +24 -0
  261. package/dist/design/richText.d.ts.map +1 -1
  262. package/dist/design/richText.js +37 -1
  263. package/dist/design/richText.js.map +1 -1
  264. package/dist/fonts/buildWithFonts.d.ts +19 -0
  265. package/dist/fonts/buildWithFonts.d.ts.map +1 -0
  266. package/dist/fonts/buildWithFonts.js +16 -0
  267. package/dist/fonts/buildWithFonts.js.map +1 -0
  268. package/dist/fonts/faces.d.ts +88 -0
  269. package/dist/fonts/faces.d.ts.map +1 -0
  270. package/dist/fonts/faces.js +264 -0
  271. package/dist/fonts/faces.js.map +1 -0
  272. package/dist/fonts/fontSet.d.ts +34 -0
  273. package/dist/fonts/fontSet.d.ts.map +1 -0
  274. package/dist/fonts/fontSet.js +173 -0
  275. package/dist/fonts/fontSet.js.map +1 -0
  276. package/dist/fonts/prepare.d.ts +120 -0
  277. package/dist/fonts/prepare.d.ts.map +1 -0
  278. package/dist/fonts/prepare.js +375 -0
  279. package/dist/fonts/prepare.js.map +1 -0
  280. package/dist/frontmatter.d.ts +20 -0
  281. package/dist/frontmatter.d.ts.map +1 -1
  282. package/dist/frontmatter.js +69 -3
  283. package/dist/frontmatter.js.map +1 -1
  284. package/dist/html-backend.d.ts +17 -0
  285. package/dist/html-backend.d.ts.map +1 -1
  286. package/dist/html-backend.js +109 -7
  287. package/dist/html-backend.js.map +1 -1
  288. package/dist/index.d.ts +35 -10
  289. package/dist/index.d.ts.map +1 -1
  290. package/dist/index.js +23 -4
  291. package/dist/index.js.map +1 -1
  292. package/dist/measure/bidiLines.d.ts +4 -3
  293. package/dist/measure/bidiLines.d.ts.map +1 -1
  294. package/dist/measure/bidiLines.js +12 -7
  295. package/dist/measure/bidiLines.js.map +1 -1
  296. package/dist/measure/cache.d.ts.map +1 -1
  297. package/dist/measure/cache.js +32 -2
  298. package/dist/measure/cache.js.map +1 -1
  299. package/dist/measure/canvas.d.ts +15 -0
  300. package/dist/measure/canvas.d.ts.map +1 -1
  301. package/dist/measure/canvas.js +68 -4
  302. package/dist/measure/canvas.js.map +1 -1
  303. package/dist/measure/cjk.d.ts.map +1 -1
  304. package/dist/measure/cjk.js +4 -1
  305. package/dist/measure/cjk.js.map +1 -1
  306. package/dist/measure/cjkClasses.d.ts +17 -0
  307. package/dist/measure/cjkClasses.d.ts.map +1 -1
  308. package/dist/measure/cjkClasses.js +41 -1
  309. package/dist/measure/cjkClasses.js.map +1 -1
  310. package/dist/measure/cjkCompose.d.ts.map +1 -1
  311. package/dist/measure/cjkCompose.js +126 -10
  312. package/dist/measure/cjkCompose.js.map +1 -1
  313. package/dist/measure/cjkPunctuation.d.ts +18 -1
  314. package/dist/measure/cjkPunctuation.d.ts.map +1 -1
  315. package/dist/measure/cjkPunctuation.js +13 -1
  316. package/dist/measure/cjkPunctuation.js.map +1 -1
  317. package/dist/measure/font.d.ts +8 -0
  318. package/dist/measure/font.d.ts.map +1 -1
  319. package/dist/measure/font.js +13 -2
  320. package/dist/measure/font.js.map +1 -1
  321. package/dist/measure/fontString.d.ts +14 -0
  322. package/dist/measure/fontString.d.ts.map +1 -0
  323. package/dist/measure/fontString.js +55 -0
  324. package/dist/measure/fontString.js.map +1 -0
  325. package/dist/measure/hardBreaks.d.ts.map +1 -1
  326. package/dist/measure/hardBreaks.js +13 -1
  327. package/dist/measure/hardBreaks.js.map +1 -1
  328. package/dist/measure/index.d.ts +7 -4
  329. package/dist/measure/index.d.ts.map +1 -1
  330. package/dist/measure/index.js +7 -5
  331. package/dist/measure/index.js.map +1 -1
  332. package/dist/measure/plain.d.ts.map +1 -1
  333. package/dist/measure/plain.js +11 -7
  334. package/dist/measure/plain.js.map +1 -1
  335. package/dist/measure/rich.d.ts.map +1 -1
  336. package/dist/measure/rich.js +9 -6
  337. package/dist/measure/rich.js.map +1 -1
  338. package/dist/measure/types.d.ts +53 -3
  339. package/dist/measure/types.d.ts.map +1 -1
  340. package/dist/measure/types.js +67 -3
  341. package/dist/measure/types.js.map +1 -1
  342. package/dist/parse/citations.d.ts.map +1 -1
  343. package/dist/parse/citations.js +7 -3
  344. package/dist/parse/citations.js.map +1 -1
  345. package/dist/pipeline/build.d.ts +36 -0
  346. package/dist/pipeline/build.d.ts.map +1 -1
  347. package/dist/pipeline/build.js +1482 -153
  348. package/dist/pipeline/build.js.map +1 -1
  349. package/dist/pipeline/buildBlockKind.d.ts +5 -0
  350. package/dist/pipeline/buildBlockKind.d.ts.map +1 -1
  351. package/dist/pipeline/buildBlockKind.js +34 -7
  352. package/dist/pipeline/buildBlockKind.js.map +1 -1
  353. package/dist/pipeline/buildMeasurement.d.ts +6 -0
  354. package/dist/pipeline/buildMeasurement.d.ts.map +1 -1
  355. package/dist/pipeline/buildMeasurement.js +4 -3
  356. package/dist/pipeline/buildMeasurement.js.map +1 -1
  357. package/dist/pipeline/calloutLayout.d.ts +59 -0
  358. package/dist/pipeline/calloutLayout.d.ts.map +1 -1
  359. package/dist/pipeline/calloutLayout.js +287 -65
  360. package/dist/pipeline/calloutLayout.js.map +1 -1
  361. package/dist/pipeline/columnBalancing.d.ts +20 -0
  362. package/dist/pipeline/columnBalancing.d.ts.map +1 -1
  363. package/dist/pipeline/columnBalancing.js +27 -4
  364. package/dist/pipeline/columnBalancing.js.map +1 -1
  365. package/dist/pipeline/columnsGroup.d.ts +61 -0
  366. package/dist/pipeline/columnsGroup.d.ts.map +1 -0
  367. package/dist/pipeline/columnsGroup.js +88 -0
  368. package/dist/pipeline/columnsGroup.js.map +1 -0
  369. package/dist/pipeline/config.d.ts +28 -0
  370. package/dist/pipeline/config.d.ts.map +1 -1
  371. package/dist/pipeline/config.js +67 -8
  372. package/dist/pipeline/config.js.map +1 -1
  373. package/dist/pipeline/contentWarnings.d.ts +16 -0
  374. package/dist/pipeline/contentWarnings.d.ts.map +1 -1
  375. package/dist/pipeline/contentWarnings.js +141 -17
  376. package/dist/pipeline/contentWarnings.js.map +1 -1
  377. package/dist/pipeline/floatPlacement.d.ts +48 -4
  378. package/dist/pipeline/floatPlacement.d.ts.map +1 -1
  379. package/dist/pipeline/floatPlacement.js +43 -5
  380. package/dist/pipeline/floatPlacement.js.map +1 -1
  381. package/dist/pipeline/floatSlots.d.ts +16 -3
  382. package/dist/pipeline/floatSlots.d.ts.map +1 -1
  383. package/dist/pipeline/floatSlots.js +15 -6
  384. package/dist/pipeline/floatSlots.js.map +1 -1
  385. package/dist/pipeline/flowColumns.d.ts +41 -0
  386. package/dist/pipeline/flowColumns.d.ts.map +1 -0
  387. package/dist/pipeline/flowColumns.js +116 -0
  388. package/dist/pipeline/flowColumns.js.map +1 -0
  389. package/dist/pipeline/headerFooter.d.ts +4 -1
  390. package/dist/pipeline/headerFooter.d.ts.map +1 -1
  391. package/dist/pipeline/headerFooter.js +19 -5
  392. package/dist/pipeline/headerFooter.js.map +1 -1
  393. package/dist/pipeline/measureContentBlock.d.ts +20 -1
  394. package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
  395. package/dist/pipeline/measureContentBlock.js +35 -11
  396. package/dist/pipeline/measureContentBlock.js.map +1 -1
  397. package/dist/pipeline/partPalette.d.ts +3 -0
  398. package/dist/pipeline/partPalette.d.ts.map +1 -1
  399. package/dist/pipeline/partPalette.js +5 -0
  400. package/dist/pipeline/partPalette.js.map +1 -1
  401. package/dist/pipeline/placement.d.ts +19 -0
  402. package/dist/pipeline/placement.d.ts.map +1 -1
  403. package/dist/pipeline/placement.js +12 -2
  404. package/dist/pipeline/placement.js.map +1 -1
  405. package/dist/pipeline/resourceLayout.d.ts +41 -0
  406. package/dist/pipeline/resourceLayout.d.ts.map +1 -1
  407. package/dist/pipeline/resourceLayout.js +148 -18
  408. package/dist/pipeline/resourceLayout.js.map +1 -1
  409. package/dist/pipeline/styles.d.ts.map +1 -1
  410. package/dist/pipeline/styles.js +8 -5
  411. package/dist/pipeline/styles.js.map +1 -1
  412. package/dist/pipeline/textWrap.d.ts +94 -0
  413. package/dist/pipeline/textWrap.d.ts.map +1 -0
  414. package/dist/pipeline/textWrap.js +188 -0
  415. package/dist/pipeline/textWrap.js.map +1 -0
  416. package/dist/pipeline/toc.d.ts.map +1 -1
  417. package/dist/pipeline/toc.js +6 -1
  418. package/dist/pipeline/toc.js.map +1 -1
  419. package/dist/pipeline/verseLines.d.ts +22 -2
  420. package/dist/pipeline/verseLines.d.ts.map +1 -1
  421. package/dist/pipeline/verseLines.js +52 -4
  422. package/dist/pipeline/verseLines.js.map +1 -1
  423. package/dist/preflight.d.ts +46 -1
  424. package/dist/preflight.d.ts.map +1 -1
  425. package/dist/preflight.js +42 -7
  426. package/dist/preflight.js.map +1 -1
  427. package/dist/svg/fontRegistry.d.ts +66 -0
  428. package/dist/svg/fontRegistry.d.ts.map +1 -0
  429. package/dist/svg/fontRegistry.js +294 -0
  430. package/dist/svg/fontRegistry.js.map +1 -0
  431. package/dist/svg/fonts.d.ts +140 -0
  432. package/dist/svg/fonts.d.ts.map +1 -0
  433. package/dist/svg/fonts.js +642 -0
  434. package/dist/svg/fonts.js.map +1 -0
  435. package/dist/svg/image.d.ts +44 -0
  436. package/dist/svg/image.d.ts.map +1 -0
  437. package/dist/svg/image.js +67 -0
  438. package/dist/svg/image.js.map +1 -0
  439. package/dist/table/booktabs.d.ts +37 -0
  440. package/dist/table/booktabs.d.ts.map +1 -0
  441. package/dist/table/booktabs.js +82 -0
  442. package/dist/table/booktabs.js.map +1 -0
  443. package/dist/types.d.ts +365 -10
  444. package/dist/types.d.ts.map +1 -1
  445. package/dist/util/stableHash.d.ts +20 -0
  446. package/dist/util/stableHash.d.ts.map +1 -0
  447. package/dist/util/stableHash.js +59 -0
  448. package/dist/util/stableHash.js.map +1 -0
  449. package/dist/vdt.d.ts +249 -9
  450. package/dist/vdt.d.ts.map +1 -1
  451. package/dist/vdt.js +3 -2
  452. package/dist/vdt.js.map +1 -1
  453. package/dist/word/index.d.ts +1 -1
  454. package/dist/word/index.d.ts.map +1 -1
  455. package/dist/word/index.js +1 -1
  456. package/dist/word/index.js.map +1 -1
  457. package/dist/word/toMarkdown.d.ts +10 -0
  458. package/dist/word/toMarkdown.d.ts.map +1 -1
  459. package/dist/word/toMarkdown.js +16 -1
  460. package/dist/word/toMarkdown.js.map +1 -1
  461. package/dist/worker/client.d.ts +8 -0
  462. package/dist/worker/client.d.ts.map +1 -1
  463. package/dist/worker/client.js +22 -0
  464. package/dist/worker/client.js.map +1 -1
  465. package/dist/worker/fonts.d.ts +1 -13
  466. package/dist/worker/fonts.d.ts.map +1 -1
  467. package/dist/worker/fonts.js +3 -61
  468. package/dist/worker/fonts.js.map +1 -1
  469. package/dist/worker/layout.worker.js +23 -16
  470. package/dist/worker/layout.worker.js.map +1 -1
  471. package/package.json +1 -1
package/dist/types.d.ts CHANGED
@@ -88,7 +88,96 @@ export interface ResourcePlacement {
88
88
  * figure's top (its bottom for a bottom float). A page without such a
89
89
  * column keeps the caption under the figure. Column floats only. */
90
90
  captionSide?: boolean;
91
- }
91
+ /** Scale a floated picture (bitmap, SVG, a video's poster) down, keeping
92
+ * its proportions, to the room a slot has, instead of moving it on
93
+ * (#626). `'never'`: a float either fits a slot at its size or waits
94
+ * for a later one. `'page'`: a float too tall for the band of a fresh
95
+ * page — the content area less what already stands there: an opener,
96
+ * other floats, footnotes, the float gap — shrinks to that band.
97
+ * `'slot'`: as `'page'`, and a float too tall for a slot of the page it
98
+ * is cited on (or for a fresh page's band beside another float) shrinks
99
+ * to it when it fits there at {@link minScale} or more; the slots are
100
+ * tried in their usual order. A picture with a safe area is cropped
101
+ * within it first. Tables (which split), floated boxes, comic strips,
102
+ * rotated floats and inline embeds are never scaled by it. Default:
103
+ * the type's `defaultPlacement`, then `layout.floatShrink.mode`, then
104
+ * `'never'`. */
105
+ shrink?: FloatShrinkMode;
106
+ /** The smallest scale {@link shrink} sets a picture at, 0 to 1 (default
107
+ * 0.7, then `layout.floatShrink.minScale`). A slot that needs less is
108
+ * passed over; on a fresh page, where the float has nowhere else to go,
109
+ * it is set at this scale and runs past the band. */
110
+ minScale?: number;
111
+ /** The measure of a picture's caption and note when the picture is
112
+ * narrower than its slot (scaled by {@link shrink} or
113
+ * `layout.fitFiguresToPage`, or a bitmap smaller than the column):
114
+ * `'slot'` (the default) keeps the slot's measure; `'body'` sets them
115
+ * as wide as the picture, under it per {@link align}. */
116
+ captionMeasure?: 'slot' | 'body';
117
+ /** Run the text beside the resource (#627): it sits at this side of its
118
+ * column, and the lines beside it are set to the measure left over,
119
+ * {@link wrapGap} clear of its box (caption included), then return to
120
+ * the full measure under it. `'left'` / `'right'` are sides of the body
121
+ * flow, as {@link align}'s (on a right-to-left document's mirrored
122
+ * pages `'left'` is the sheet's right); `'start'` / `'end'` are the
123
+ * same sides by their logical names. Applies to an inline embed
124
+ * (`position: 'here'`, the text after the `::resource` line runs beside
125
+ * it) and to a `span: 'column'` float at the head or foot of one column
126
+ * (the column's first or last lines run beside it); a page-span float,
127
+ * a float across several columns, a side-column float, a rotated one
128
+ * and anything in vertical text keep their whole band. The resource
129
+ * takes {@link width} of the column, or `layout.wrap.defaultWidth`
130
+ * when it sets none. Where the text left beside it would be narrower
131
+ * than `layout.wrap.minTextWidth`, or the resource shorter than
132
+ * `layout.wrap.minLinesBeside` lines, it takes its band whole and a
133
+ * `textWrap` warning says so. Default `'none'`. */
134
+ wrap?: WrapSide;
135
+ /** The space between a wrapped resource's box (caption included) and
136
+ * the text beside it, and under it before the text runs full width
137
+ * again (rounded up to whole grid lines). Default `layout.wrap.gap`,
138
+ * else one body line, the float gap. */
139
+ wrapGap?: Dimension;
140
+ /** Let a `'top'` or `'auto'` float head the page (a page-span float) or
141
+ * the column (a column float, across {@link columns} too) where the line
142
+ * that first cites it lands, as LaTeX's `t` placement does, instead of
143
+ * the first free slot after that line (#633). The text above the
144
+ * reference moves down under it. It takes that head only when it fits
145
+ * there within `layout.maxTopFraction` of the column, when the earlier
146
+ * floats of its numbering sequence are already set, when the page is
147
+ * not the first of a chapter or the page after a forced break (an
148
+ * opener, a part, a `:::pagebreak`), and when nothing spanning the page
149
+ * (a heading, a box) stands above the citing line; and only when, so
150
+ * set, the citing line still lands on that page (that column). The
151
+ * engine settles this over a few extra placement passes; a float that
152
+ * does not qualify takes its usual slot. Rotated floats, side-column
153
+ * floats and the rest of a table split across pages never do. Default:
154
+ * the type's `defaultPlacement`, then `layout.floatsAtCitingPage`, then
155
+ * `false`. */
156
+ citingPage?: boolean;
157
+ }
158
+ /** The side of its column a resource or a box sits on with text running
159
+ * beside it (see `ResourcePlacement.wrap`, #627). */
160
+ export type WrapSide = 'none' | 'left' | 'right' | 'start' | 'end';
161
+ /** The document's text wrap settings (`LayoutConfig.wrap`, #627). */
162
+ export interface TextWrapConfig {
163
+ /** Default `ResourcePlacement.wrapGap`: the space between a wrapped
164
+ * picture and the text. Default: one body line (the float gap). */
165
+ gap?: Dimension;
166
+ /** The narrowest measure the text beside a wrapped picture may take: a
167
+ * length, or a share of the column (`0.3`). Narrower, the picture takes
168
+ * its band whole (`textWrap` warning). Default 12 em of body text. */
169
+ minTextWidth?: Dimension | number;
170
+ /** The fewest lines of text worth setting beside a picture. A picture
171
+ * shorter than that (gap included) takes its band whole (`textWrap`
172
+ * warning). Default 2. */
173
+ minLinesBeside?: number;
174
+ /** The share of the column a wrapped resource takes when its placement
175
+ * sets no `width`, 0 to 1. Default 0.45. */
176
+ defaultWidth?: number;
177
+ }
178
+ /** How a floated picture is scaled to the room of a slot (see
179
+ * `ResourcePlacement.shrink`). */
180
+ export type FloatShrinkMode = 'never' | 'page' | 'slot';
92
181
  /** A user-definable category of resource (e.g. "Figure", "Table"). Drives
93
182
  * numbering, caption prefixes, and inline-reference labels. */
94
183
  export interface ResourceType {
@@ -351,8 +440,21 @@ export interface Resource {
351
440
  bitmap?: {
352
441
  fileId: string;
353
442
  format: string;
443
+ /** The file's width in pixels (not its print size). */
354
444
  width: number;
445
+ /** The file's height in pixels. */
355
446
  height: number;
447
+ /** Pixels per inch of the picture at its natural print size (#631):
448
+ * its natural width in layout px is `width × page.dpi / resolution`
449
+ * (the height likewise), and the column still caps it. Absent:
450
+ * `layout.bitmapResolution` decides (by default the pixels are read
451
+ * at `page.dpi`). */
452
+ resolution?: number;
453
+ /** The resolution stored in the file (PNG `pHYs`, JPEG JFIF / EXIF,
454
+ * WebP EXIF; a Word picture's printed extent), as the host read it,
455
+ * horizontal ppi. Used under `layout.bitmapResolution: 'file'`, where
456
+ * 72 and 96 count as unset; shown by the Sandbox. */
457
+ fileResolution?: number;
356
458
  };
357
459
  /** Present when `kind === 'svg'`. */
358
460
  svg?: {
@@ -371,6 +473,12 @@ export interface Resource {
371
473
  * `diagramStyle.singleInk` is on, since the recolouring pass only
372
474
  * operates on SVG markup. */
373
475
  pdfFileId?: string;
476
+ /** `false` keeps the markup byte-identical when the picture is shown as
477
+ * an image: no `@font-face` is added for the families its text names
478
+ * (`diagramStyle.inlineFonts`), for an SVG that carries its faces
479
+ * already or must stay as it is. Default: the document's
480
+ * `diagramStyle.inlineFonts` (on). */
481
+ inlineFonts?: boolean;
374
482
  };
375
483
  /** Present when `kind === 'table'`. */
376
484
  table?: {
@@ -756,6 +864,10 @@ export interface PageConfig {
756
864
  width?: Dimension;
757
865
  height?: Dimension;
758
866
  margins?: PageMargins;
867
+ /** Layout px per inch: every length is converted at this rate, and a
868
+ * bitmap without a resolution of its own (see `Resource.bitmap.resolution`
869
+ * and `layout.bitmapResolution`) is laid out one pixel per layout px.
870
+ * Default 300. */
759
871
  dpi?: number;
760
872
  cutLines?: CutLinesConfig;
761
873
  baselineGrid?: BaselineGridConfig;
@@ -857,6 +969,37 @@ export interface LayoutConfig {
857
969
  * pages are sized for their figures; the HTML viewer, whose pages are as
858
970
  * tall as the screen, turns it on. */
859
971
  fitFiguresToPage?: boolean;
972
+ /** How a bitmap without its own `resolution` takes its natural print
973
+ * size (#631): `'document'` (default) reads its pixels at `page.dpi`;
974
+ * a number is the ppi of every such bitmap; `'file'` uses the
975
+ * resolution read from the file (`Resource.bitmap.fileResolution`),
976
+ * 72 and 96 counting as unset, else `page.dpi`. The column caps the
977
+ * natural size either way; a smaller picture is never enlarged. */
978
+ bitmapResolution?: BitmapResolution;
979
+ /** The document's default for scaling a floated picture to the room of
980
+ * its slot (#626): `mode` as `ResourcePlacement.shrink`, `minScale` as
981
+ * `ResourcePlacement.minScale` (default 0.7). A resource's placement,
982
+ * then its type's `defaultPlacement`, override it. Default
983
+ * `{ mode: 'never' }`. Unlike {@link fitFiguresToPage}, a hard cap at
984
+ * the content area, this looks at the band the float would take. */
985
+ floatShrink?: FloatShrinkConfig;
986
+ /** Text wrap round a resource or a box narrower than its column (#627):
987
+ * the gap, the narrowest text measure, the fewest lines beside and the
988
+ * default width (see {@link TextWrapConfig}). A resource opts in with
989
+ * `placement.wrap`, a box with its `wrap` attribute. */
990
+ wrap?: TextWrapConfig;
991
+ /** The document default of `placement.citingPage` (#633): a `'top'` or
992
+ * `'auto'` float may head the page or column where its citing line
993
+ * lands, the text above the reference moving down under it. A
994
+ * resource's placement, then its type's `defaultPlacement`, override
995
+ * it. Default `false`: a float takes the first free slot after the line
996
+ * that cites it. */
997
+ floatsAtCitingPage?: boolean;
998
+ /** The largest share of a column's height, 0 to 1, a float set at the
999
+ * head of the page or column that cites it (`placement.citingPage`) may
1000
+ * take with the floats already standing there, so the page keeps some
1001
+ * room for its text (LaTeX's `\topfraction`). Default 0.7. */
1002
+ maxTopFraction?: number;
860
1003
  /** On the closing page of a chapter (and of the document), move the
861
1004
  * page-wide figures and tables set below the last band of text up to sit
862
1005
  * one float gap under it, stacked in their order, instead of at the page
@@ -865,6 +1008,19 @@ export interface LayoutConfig {
865
1008
  * the page foot on the closing page as on every other page. Pages with a
866
1009
  * side column never move them. */
867
1010
  hugClosingFloats?: boolean;
1011
+ /** Under a page-span opener (a heading level or style with
1012
+ * `span: 'page'`) set over two or more text columns, the head of the
1013
+ * opener's own column, right under its band, is a slot for a `'top'` or
1014
+ * `'auto'` float, of one column or of several from it, level with the
1015
+ * heads of the other columns of the band (#639): a floated box fenced
1016
+ * right after the opener, or a resource embedded there, sits under the
1017
+ * opener in the first column and the column's text starts under it.
1018
+ * Default `true`. `false` keeps the rule of postext 1.24 and earlier:
1019
+ * the opener's column offers no head slot, so such a float lands from
1020
+ * the second column on. A configuration stored by an earlier version is
1021
+ * read with `false` when it sets a page-span heading (see
1022
+ * `migrateConfig` in `postext/bundle`). */
1023
+ floatsUnderOpener?: boolean;
868
1024
  /** Where an inline resource (`placement.position: 'here'`, embedded with
869
1025
  * `::resource`) keeps the float gap, a line: `'around'` keeps it above
870
1026
  * and below the resource, and the text after it goes back onto the
@@ -886,6 +1042,16 @@ export interface LayoutConfig {
886
1042
  * version is read with `false` when its chapters embed a resource (see
887
1043
  * `migrateConfig` in `postext/bundle`). */
888
1044
  inlineResourceGapInBoxes?: boolean;
1045
+ /** `:::columns` groups in the running text and groups that split (#634):
1046
+ * a `:::columns` fence outside a box sets its blocks in sub-columns of
1047
+ * the text column (or, with `span="page"`, across the page), and a
1048
+ * group, in a box or in the text, is cut between its sub-columns when
1049
+ * the box goes on in the next column or page. Default `true`. `false`
1050
+ * keeps the rules of postext 1.24 and earlier: a fence outside a box is
1051
+ * ignored and a box never cuts inside a group. A configuration stored
1052
+ * by an earlier version is read with `false` when its chapters hold a
1053
+ * `:::columns` fence (see `migrateConfig` in `postext/bundle`). */
1054
+ flowColumns?: boolean;
889
1055
  /** Fewest lines of a paragraph or list item that a cut inside it leaves
890
1056
  * on each side when a box splits (see `CalloutStyleConfig.splitMinLines`,
891
1057
  * which still counts every line on each side of the cut). A whole number,
@@ -909,6 +1075,22 @@ export interface LayoutConfig {
909
1075
  * document's writing mode unless it sets its own. */
910
1076
  writingMode?: WritingMode;
911
1077
  }
1078
+ /** How bitmaps without a resolution of their own are sized (see
1079
+ * `LayoutConfig.bitmapResolution`): `'document'`, `'file'` or a ppi. */
1080
+ export type BitmapResolution = 'document' | 'file' | number;
1081
+ /** The document default for scaling floated pictures (see
1082
+ * `LayoutConfig.floatShrink`). */
1083
+ export interface FloatShrinkConfig {
1084
+ mode?: FloatShrinkMode;
1085
+ minScale?: number;
1086
+ }
1087
+ /** {@link TextWrapConfig} resolved; `gap` absent is one body line. */
1088
+ export interface ResolvedTextWrapConfig {
1089
+ gap?: Dimension;
1090
+ minTextWidth: Dimension | number;
1091
+ minLinesBeside: number;
1092
+ defaultWidth: number;
1093
+ }
912
1094
  /** Where an inline resource keeps the float gap (see
913
1095
  * `LayoutConfig.inlineResourceGap`). */
914
1096
  export type InlineResourceGap = 'around' | 'above';
@@ -927,9 +1109,19 @@ export interface ResolvedLayoutConfig {
927
1109
  lineWidth: Dimension;
928
1110
  };
929
1111
  fitFiguresToPage: boolean;
1112
+ bitmapResolution: BitmapResolution;
1113
+ floatShrink: {
1114
+ mode: FloatShrinkMode;
1115
+ minScale: number;
1116
+ };
1117
+ wrap: ResolvedTextWrapConfig;
1118
+ floatsAtCitingPage: boolean;
1119
+ maxTopFraction: number;
930
1120
  hugClosingFloats: boolean;
1121
+ floatsUnderOpener: boolean;
931
1122
  inlineResourceGap: InlineResourceGap;
932
1123
  inlineResourceGapInBoxes: boolean;
1124
+ flowColumns: boolean;
933
1125
  boxChildSplitMinLines: number;
934
1126
  writingMode: WritingMode;
935
1127
  }
@@ -1426,6 +1618,13 @@ export interface VerseConfig {
1426
1618
  * column (a haiku, a tanka): it moves on whole when it does not fit.
1427
1619
  * Default `0`, off. */
1428
1620
  keepStanzas?: number;
1621
+ /** A line of verse a little wider than the measure tightens its word
1622
+ * spaces, down to `bodyText.minWordSpacing` of their natural width, and
1623
+ * stays on one line; only a line that does not fit even then turns
1624
+ * over. `false`: every line wider than the measure turns over, as
1625
+ * postext 1.23 set them (configurations stored by 1.23 are read with it
1626
+ * when they hold a poem set line by line). Default `true`. */
1627
+ tighten?: boolean;
1429
1628
  }
1430
1629
  export interface ResolvedVerseConfig {
1431
1630
  layout: 'auto' | 'bayt';
@@ -1435,6 +1634,7 @@ export interface ResolvedVerseConfig {
1435
1634
  turnoverMark: string;
1436
1635
  stanzaSpace: number;
1437
1636
  keepStanzas: number;
1637
+ tighten: boolean;
1438
1638
  }
1439
1639
  /** What `lineNumbers` counts (#621): `'verse'`, the lines of `:::verse`
1440
1640
  * poems (a turnover takes no number); `'all'`, every laid-out line of the
@@ -1875,18 +2075,62 @@ export interface TableStyleConfig {
1875
2075
  borderWidth?: Dimension;
1876
2076
  /** Inner padding inside each cell. Default `0.375em`. */
1877
2077
  cellPadding?: Dimension;
1878
- /** Which rules to stroke when {@link borders} is on. Default `'grid'`. */
2078
+ /** Which rules to stroke when {@link borders} is on. Default `'grid'`.
2079
+ * `'booktabs'` strokes its own widths ({@link heavyRuleWidth},
2080
+ * {@link lightRuleWidth}, {@link spanRuleWidth}) and ignores
2081
+ * {@link borderWidth}. */
1879
2082
  rules?: TableRules;
1880
2083
  /** Corner radius of the table's outer frame. Default `0` (square). The
1881
2084
  * cell fills are clipped to the rounded frame, whatever the rules (with
1882
2085
  * `'none'` the fills alone show the rounded shape); the inner rules stay
1883
2086
  * straight. A table split across pages rounds the top corners of its
1884
- * first part and the bottom corners of its last. */
2087
+ * first part and the bottom corners of its last. `'booktabs'` rules
2088
+ * have no frame to round: they stay straight (the fills are still
2089
+ * clipped). */
1885
2090
  borderRadius?: Dimension;
2091
+ /** `'booktabs'` (#625): width of the rules above the table and under its
2092
+ * last row (LaTeX `\heavyrulewidth`). An `em` value is relative to
2093
+ * {@link bodyFontSize}. Default `0.08em`. */
2094
+ heavyRuleWidth?: Dimension;
2095
+ /** `'booktabs'`: width of the rule under the header rows and of the
2096
+ * group rules (`\lightrulewidth`). An `em` value is relative to
2097
+ * {@link bodyFontSize}. Default `0.05em`. */
2098
+ lightRuleWidth?: Dimension;
2099
+ /** `'booktabs'`: width of the rules under header cells that span several
2100
+ * columns (`\cmidrulewidth`). An `em` value is relative to
2101
+ * {@link bodyFontSize}. Default `0.03em`. */
2102
+ spanRuleWidth?: Dimension;
2103
+ /** `'booktabs'`: the rules under header cells that span more than one
2104
+ * column, above the last header row: shortened at both ends by
2105
+ * {@link spanRuleTrim} so neighbouring rules do not touch
2106
+ * (`'trimmed'`, the default, `\cmidrule(lr)`), across the whole cell
2107
+ * (`'full'`), or none (`'none'`). */
2108
+ spanRules?: TableSpanRules;
2109
+ /** `'booktabs'`: how much a `'trimmed'` span rule is shortened at each
2110
+ * end. An `em` value is relative to {@link bodyFontSize}. Default
2111
+ * `0.5em`. */
2112
+ spanRuleTrim?: Dimension;
2113
+ /** `'booktabs'`: a light rule above every body row that heads a group
2114
+ * (one cell across every column, or all header cells), except one that
2115
+ * opens a page. Default `false`. */
2116
+ groupRules?: boolean;
2117
+ /** `'booktabs'`: the rule that closes a part of a split table that goes
2118
+ * on overleaf: the heavy bottom rule (`'bottom'`), a light rule
2119
+ * (`'light'`, the default: the heavy rule closes only the real last
2120
+ * row), or none (`'none'`). */
2121
+ continuedFootRule?: TableContinuedFootRule;
1886
2122
  /** What happens to a table taller than the space a page offers: continue
1887
2123
  * it on the following pages (`'split'`, the default), keep only the rows
1888
2124
  * that fit (`'clip'`), or leave it out (`'hide'`). See {@link TableOverflow}. */
1889
2125
  overflow?: TableOverflow;
2126
+ /** Apply {@link overflow} to tables placed `here` too (#634): an inline
2127
+ * table that does not fit the room left in its column is cut between
2128
+ * rows and goes on at the head of the next column, before the text
2129
+ * after it (`'split'`); one taller than a column keeps its leading
2130
+ * rows (`'clip'`) or is left out (`'hide'`). `false` keeps the rule of
2131
+ * postext 1.24 and earlier: an inline table moves whole to the next
2132
+ * column. Default `true`. */
2133
+ splitInline?: boolean;
1890
2134
  /** Suffix appended to the caption of every continuation slice of a split
1891
2135
  * table (e.g. "Table 6-4. Title *(cont.)*"). Defaults to `"(cont.)"`. */
1892
2136
  continuedSuffix?: string;
@@ -1914,8 +2158,17 @@ export interface ResolvedNamedTableStyleConfig extends ResolvedTableStyleConfig
1914
2158
  /** Letter case of a table's header cells (`TableStyleConfig.headerTextTransform`). */
1915
2159
  export type TableTextTransform = 'none' | 'uppercase';
1916
2160
  /** Rule pattern of a table: the full cell grid, horizontal rules only (top
1917
- * and bottom edge of every row), the outer frame only, or none. */
1918
- export type TableRules = 'grid' | 'horizontal' | 'outer' | 'none';
2161
+ * and bottom edge of every row), the outer frame only, none, or the
2162
+ * booktabs pattern of journal tables (#625): a heavy rule above the table
2163
+ * and under its last row, a light rule under the header, short rules
2164
+ * under spanning header cells and no vertical rules. */
2165
+ export type TableRules = 'grid' | 'horizontal' | 'outer' | 'none' | 'booktabs';
2166
+ /** Rules of a `'booktabs'` table under header cells that span several
2167
+ * columns (`TableStyleConfig.spanRules`). */
2168
+ export type TableSpanRules = 'trimmed' | 'full' | 'none';
2169
+ /** What closes a part of a `'booktabs'` table that continues on the next
2170
+ * page (`TableStyleConfig.continuedFootRule`). */
2171
+ export type TableContinuedFootRule = 'bottom' | 'light' | 'none';
1919
2172
  /** Behaviour of a table taller than the page: `'split'` breaks it between
1920
2173
  * rows and continues on the following pages, repeating the header rows and
1921
2174
  * suffixing the caption; `'clip'` keeps the leading rows that fit and drops
@@ -1944,7 +2197,15 @@ export interface ResolvedTableStyleConfig {
1944
2197
  cellPadding: Dimension;
1945
2198
  rules: TableRules;
1946
2199
  borderRadius: Dimension;
2200
+ heavyRuleWidth: Dimension;
2201
+ lightRuleWidth: Dimension;
2202
+ spanRuleWidth: Dimension;
2203
+ spanRules: TableSpanRules;
2204
+ spanRuleTrim: Dimension;
2205
+ groupRules: boolean;
2206
+ continuedFootRule: TableContinuedFootRule;
1947
2207
  overflow: TableOverflow;
2208
+ splitInline: boolean;
1948
2209
  continuedSuffix: string;
1949
2210
  continuesMarkerEnabled: boolean;
1950
2211
  continuesMarker: string;
@@ -2046,10 +2307,18 @@ export interface DiagramStyleConfig {
2046
2307
  singleInk?: boolean;
2047
2308
  /** The ink. Defaults to the document's main palette colour. */
2048
2309
  inkColor?: ColorValue;
2310
+ /** Embed the faces an SVG's text names (`font-family`) in the picture as
2311
+ * `@font-face` data URIs before it is shown as an image (canvas, HTML,
2312
+ * EPUB, the PDF's raster fallback), so its labels are set in the
2313
+ * document's fonts: an image cannot see the page's web fonts. Never
2314
+ * written into the stored file. A resource opts out with
2315
+ * `svg.inlineFonts: false`. Default `true`. */
2316
+ inlineFonts?: boolean;
2049
2317
  }
2050
2318
  export interface ResolvedDiagramStyleConfig {
2051
2319
  singleInk: boolean;
2052
2320
  inkColor: ColorValue;
2321
+ inlineFonts: boolean;
2053
2322
  }
2054
2323
  /** Where an overlay sits on a video's poster: the centre, a corner or the
2055
2324
  * middle of a side. The positions are physical: `top-right` is the top
@@ -3258,6 +3527,18 @@ export interface HeadingLevelConfig {
3258
3527
  * book). The measure narrows by it; a centred heading centres in what is
3259
3528
  * left. Default `0`. */
3260
3529
  indent?: Dimension;
3530
+ /** Indent of the heading's first line only (#636), measured from
3531
+ * {@link indent} (so the first line starts `indent + firstLineIndent`
3532
+ * in): the lines it wraps onto start at `indent`, as a body paragraph's
3533
+ * turnover lines start at the margin. GB/T 9704 sets every level of
3534
+ * head two cells in with its turnover back at the margin:
3535
+ * `{ value: 2, unit: 'em' }`. `em` is the BODY size, as for `indent`,
3536
+ * so two ems are two cells of the body grid at any heading size. A
3537
+ * numbered heading's number comes after the indent. A centred heading
3538
+ * takes it as a centred body paragraph does: its first line centres in
3539
+ * the room after the indent. A heading overrides it with
3540
+ * `{firstLineIndent=N}` (`0` clears it). Default `0`. */
3541
+ firstLineIndent?: Dimension;
3261
3542
  /** 字取り (jidori, JLReq §3.7.3, §4.1): a heading shorter than this many
3262
3543
  * of its own characters is spaced out evenly to fill exactly that width
3263
3544
  * (`jidori: 3` sets 序章 as 序 章). Applies to a heading that fits one
@@ -3307,6 +3588,8 @@ export interface ResolvedHeadingLevelConfig {
3307
3588
  lineSpan?: number;
3308
3589
  /** Absent unless set (see {@link HeadingLevelConfig.indent}). */
3309
3590
  indent?: Dimension;
3591
+ /** Absent unless set (see {@link HeadingLevelConfig.firstLineIndent}). */
3592
+ firstLineIndent?: Dimension;
3310
3593
  /** Absent unless set (see {@link HeadingLevelConfig.jidori}). */
3311
3594
  jidori?: number;
3312
3595
  /** Absent unless set (see {@link HeadingLevelConfig.dropCap}); a heading
@@ -3380,6 +3663,10 @@ export interface HeadingsConfig {
3380
3663
  levels?: HeadingLevelConfig[];
3381
3664
  }
3382
3665
  export interface ColumnBalancingConfig {
3666
+ /** Default `true`, except in vertical text (`layout.writingMode:
3667
+ * 'vertical-rl'`) and on a character grid (`cjk.grid.enabled`, #632),
3668
+ * where columns are filled line by line and a column that ends short is
3669
+ * left short unless the configuration sets `true` itself. */
3383
3670
  enabled?: boolean;
3384
3671
  /** Maximum extra grid lines that may be added above a single heading. */
3385
3672
  maxLinesPerHeading?: number;
@@ -3454,10 +3741,22 @@ export interface ColumnBalancingConfig {
3454
3741
  * the last line of the column beside it; `'off'` leaves it where it is
3455
3742
  * there too. Any other value reads as `'first'`. */
3456
3743
  closingBox?: ClosingBoxLever;
3744
+ /** On a character grid (`cjk.grid.enabled`, #632): whether the levers
3745
+ * that add whole grid lines — above a heading, where a list ends, under
3746
+ * a display or a box, under a float band — may run. They keep every
3747
+ * character in its cell (the baseline grid is the grid's line pitch),
3748
+ * but a standard that counts the lines of a page (GB/T 9704: 22 lines
3749
+ * of 28 characters) has no empty rows to give: `'off'` keeps them out
3750
+ * and leaves the other levers. Off the grid it has no effect. Default
3751
+ * `'allow'`; any other value reads as `'allow'`. */
3752
+ gridLines?: GridLinesLever;
3457
3753
  }
3458
3754
  /** Where the column-balancing lever of a box closing a column runs
3459
3755
  * (`ColumnBalancingConfig.closingBox`). */
3460
3756
  export type ClosingBoxLever = 'first' | 'last' | 'off';
3757
+ /** Whether the whole-line balancing levers run on a character grid
3758
+ * (`ColumnBalancingConfig.gridLines`). */
3759
+ export type GridLinesLever = 'allow' | 'off';
3461
3760
  /** How a paragraph kept with the heading above it splits at a column's foot
3462
3761
  * (`HeadingsConfig.keepWithNextSplit`). */
3463
3762
  export type KeepWithNextSplit = 'rules' | 'fill';
@@ -3489,6 +3788,9 @@ export interface ResolvedHeadingsConfig {
3489
3788
  trailing: boolean;
3490
3789
  beforeSpan: boolean;
3491
3790
  closingBox: ClosingBoxLever;
3791
+ /** Present only when `'off'` (#632): every other configuration
3792
+ * resolves as before. */
3793
+ gridLines?: 'off';
3492
3794
  };
3493
3795
  levels: ResolvedHeadingLevelConfig[];
3494
3796
  }
@@ -4414,6 +4716,35 @@ export interface CjkConfig {
4414
4716
  * picture books) and Korean. Default `'normal'`. A paragraph style may
4415
4717
  * set its own (`ParagraphStyleConfig.wordBreak`). */
4416
4718
  wordBreak?: CjkWordBreak;
4719
+ /** Book titles kept from one-character breaks (#637): a line breaks
4720
+ * inside a `《…》` or `〈…〉` title (and inside a `:book[…]` title) only
4721
+ * where at least this many of its characters stand on either side of
4722
+ * the break, so a title of up to twice this less one never breaks.
4723
+ * When no other break fits the line, the line breaks inside the title
4724
+ * anyway, as the level allows, rather than run past the measure.
4725
+ * Default `2`; `1` lets a line break anywhere the level allows (as up
4726
+ * to postext 1.24). */
4727
+ titleMinChars?: number;
4728
+ /** How the circled, parenthesized and full-stop numbers and letters are
4729
+ * set in a CJK paragraph (①–⑳, ⑴–⒇, ⒈–⒛, ⓐ–ⓩ, ❶–❿, ➀–➓; #637).
4730
+ * `'cjk'` (the default): as Chinese characters, one cell with no
4731
+ * Han–Latin space around them, and a line never ends on one (it labels
4732
+ * the text after it) at the levels that keep a currency sign off a
4733
+ * line end: every one but `none` and `ja-loose`.
4734
+ * `'western'`: as Western letters, as up to postext 1.24: the Han–Latin
4735
+ * space on both sides and a line may end on one. Vertical text sets
4736
+ * them upright either way. */
4737
+ circledNumbers?: 'cjk' | 'western';
4738
+ /** Whether a design text in Chinese or Japanese (a heading design or an
4739
+ * opener, a running head, a page design, a part page) is set with the
4740
+ * CJK rules of the body (#637): the line-start and line-end rules of
4741
+ * `lineBreak`, the mark widths of `punctuationWidth` and
4742
+ * `compressAdjacent`, `latinSpacing`, `hangingPunctuation` and the title
4743
+ * rule. Default `true`; `false` wraps it at spaces and sets every mark
4744
+ * at the font's own advance, as up to postext 1.24. A text that holds
4745
+ * no CJK, or more word spaces than CJK letters, is wrapped as Latin
4746
+ * text either way. */
4747
+ composeDesignText?: boolean;
4417
4748
  /** The space set between a Han character (or kana) and a Latin letter or
4418
4749
  * a European digit next to it (`用 iPhone 拍照`), in em of the CJK
4419
4750
  * text's size or any length. Default `{ value: 0.25, unit: 'em' }`; `0`
@@ -4727,6 +5058,14 @@ export interface ResolvedCjkConfig {
4727
5058
  /** Set only when `'keep-all'`: absent, lines break between any two
4728
5059
  * characters (`normal`). */
4729
5060
  wordBreak?: 'keep-all';
5061
+ /** Characters of a book title kept on either side of a break (1 or
5062
+ * more). */
5063
+ titleMinChars: number;
5064
+ /** Set only when `'western'`: absent, circled numbers are set as Chinese
5065
+ * characters. */
5066
+ circledNumbers?: 'western';
5067
+ /** Set (false) only when off: absent, CJK design text is composed. */
5068
+ composeDesignText?: false;
4730
5069
  latinSpacing: Dimension;
4731
5070
  uprightDigits: 0 | 2 | 3 | 4;
4732
5071
  grid: ResolvedCjkGridConfig;
@@ -4993,7 +5332,16 @@ export interface ElementBoxStyle {
4993
5332
  * mid-word only when what the boundary leaves, that punctuation dropped,
4994
5333
  * is less than half of what fits (a long word, a URL). A no-break space
4995
5334
  * or hyphen (U+2011) is no boundary. `'ellipsis-middle'` cuts anywhere but
4996
- * drops the spaces beside it. */
5335
+ * drops the spaces beside it.
5336
+ *
5337
+ * An element that sets none takes its slot's default (#628): `'wrap'` in a
5338
+ * heading design (`advancedDesign.slot`, an opener or an in-column title)
5339
+ * and on a part page (`parts.design`, `parts.versoDesign`), where a long
5340
+ * title should break onto more lines; `'ellipsis-end'` in a running head
5341
+ * or folio (`header`, `footer`, a heading style's own) and in a contents
5342
+ * part row (`toc.parts.design`, whose row has a fixed height). A line cut
5343
+ * by an ellipsis, or clipped with ink past the box, is reported as a
5344
+ * `designTextTruncated` content warning. */
4997
5345
  export type TextOverflow = 'wrap' | 'ellipsis-start' | 'ellipsis-end' | 'ellipsis-middle' | 'clip';
4998
5346
  /** Outline drawn around the glyphs of a design text (a hollow display
4999
5347
  * number, a title that stands off a photograph). */
@@ -5074,7 +5422,11 @@ export interface DesignTextElement {
5074
5422
  * number, a malformed dimension) sets the default leading. */
5075
5423
  lineHeight?: number | Dimension;
5076
5424
  letterSpacing?: Dimension;
5077
- overflow: TextOverflow;
5425
+ /** What a line wider than the element's room does (see
5426
+ * {@link TextOverflow}). Unset, the slot decides: `'wrap'` in heading
5427
+ * and part designs, `'ellipsis-end'` in running heads, folios and
5428
+ * contents part rows. */
5429
+ overflow?: TextOverflow;
5078
5430
  /** When true, break long words at syllable boundaries while wrapping.
5079
5431
  * Uses the document's active hyphenation locale. */
5080
5432
  hyphenate?: boolean;
@@ -5197,8 +5549,10 @@ export interface DesignSlot {
5197
5549
  /** Array order = paint order: first = back, last = front. */
5198
5550
  elements: DesignElement[];
5199
5551
  }
5200
- export interface ResolvedDesignTextElement extends Omit<DesignTextElement, 'fontFamily' | 'fontWeight' | 'italic' | 'color' | 'align' | 'verticalAlign' | 'lineHeight' | 'parity'> {
5552
+ export interface ResolvedDesignTextElement extends Omit<DesignTextElement, 'fontFamily' | 'fontWeight' | 'italic' | 'color' | 'align' | 'verticalAlign' | 'lineHeight' | 'parity' | 'overflow'> {
5201
5553
  parity: PageParity;
5554
+ /** The element's own `overflow`, else its slot's default. */
5555
+ overflow: TextOverflow;
5202
5556
  fontFamily: string;
5203
5557
  fontWeight: number;
5204
5558
  italic: boolean;
@@ -5407,8 +5761,9 @@ export interface HeadingStyleConfig extends Omit<HeadingLevelConfig, 'level' | '
5407
5761
  * Only its page geometry is read from it (`layoutType`, `gutterWidth`,
5408
5762
  * the side column, `columnRule`), plus its `fitFiguresToPage` when a
5409
5763
  * figure could move from an empty column cut short to a whole one;
5410
- * `inlineResourceGap`, `inlineResourceGapInBoxes`,
5411
- * `boxChildSplitMinLines` and `hugClosingFloats` stay the document's,
5764
+ * `inlineResourceGap`, `inlineResourceGapInBoxes`, `flowColumns`,
5765
+ * `boxChildSplitMinLines`, `hugClosingFloats` and `floatsUnderOpener`
5766
+ * stay the document's,
5412
5767
  * and so does the `fitFiguresToPage` that shrinks figures.
5413
5768
  * Unset, the section uses the document's `layout`. */
5414
5769
  layout?: LayoutConfig;