postext 1.14.1 → 1.15.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 (494) hide show
  1. package/dist/__tests__/arabic/blockLanguageDigits.test.d.ts +2 -0
  2. package/dist/__tests__/arabic/blockLanguageDigits.test.d.ts.map +1 -0
  3. package/dist/__tests__/arabic/blockLanguageDigits.test.js +54 -0
  4. package/dist/__tests__/arabic/blockLanguageDigits.test.js.map +1 -0
  5. package/dist/__tests__/arabic/emphasis.test.d.ts +2 -0
  6. package/dist/__tests__/arabic/emphasis.test.d.ts.map +1 -0
  7. package/dist/__tests__/arabic/emphasis.test.js +206 -0
  8. package/dist/__tests__/arabic/emphasis.test.js.map +1 -0
  9. package/dist/__tests__/arabic/footnotes.test.d.ts +2 -0
  10. package/dist/__tests__/arabic/footnotes.test.d.ts.map +1 -0
  11. package/dist/__tests__/arabic/footnotes.test.js +118 -0
  12. package/dist/__tests__/arabic/footnotes.test.js.map +1 -0
  13. package/dist/__tests__/arabic/harakat.test.d.ts +2 -0
  14. package/dist/__tests__/arabic/harakat.test.d.ts.map +1 -0
  15. package/dist/__tests__/arabic/harakat.test.js +167 -0
  16. package/dist/__tests__/arabic/harakat.test.js.map +1 -0
  17. package/dist/__tests__/arabic/ornateBrackets.test.d.ts +2 -0
  18. package/dist/__tests__/arabic/ornateBrackets.test.d.ts.map +1 -0
  19. package/dist/__tests__/arabic/ornateBrackets.test.js +71 -0
  20. package/dist/__tests__/arabic/ornateBrackets.test.js.map +1 -0
  21. package/dist/__tests__/arabic/tashkil.test.d.ts +2 -0
  22. package/dist/__tests__/arabic/tashkil.test.d.ts.map +1 -0
  23. package/dist/__tests__/arabic/tashkil.test.js +106 -0
  24. package/dist/__tests__/arabic/tashkil.test.js.map +1 -0
  25. package/dist/__tests__/arabicLocale.test.d.ts +2 -0
  26. package/dist/__tests__/arabicLocale.test.d.ts.map +1 -0
  27. package/dist/__tests__/arabicLocale.test.js +232 -0
  28. package/dist/__tests__/arabicLocale.test.js.map +1 -0
  29. package/dist/__tests__/arabicNumberWords.test.d.ts +2 -0
  30. package/dist/__tests__/arabicNumberWords.test.d.ts.map +1 -0
  31. package/dist/__tests__/arabicNumberWords.test.js +176 -0
  32. package/dist/__tests__/arabicNumberWords.test.js.map +1 -0
  33. package/dist/__tests__/arabicNumbering.test.d.ts +2 -0
  34. package/dist/__tests__/arabicNumbering.test.d.ts.map +1 -0
  35. package/dist/__tests__/arabicNumbering.test.js +257 -0
  36. package/dist/__tests__/arabicNumbering.test.js.map +1 -0
  37. package/dist/__tests__/arabicWords.test.d.ts +2 -0
  38. package/dist/__tests__/arabicWords.test.d.ts.map +1 -0
  39. package/dist/__tests__/arabicWords.test.js +302 -0
  40. package/dist/__tests__/arabicWords.test.js.map +1 -0
  41. package/dist/__tests__/bidi.test.d.ts +2 -0
  42. package/dist/__tests__/bidi.test.d.ts.map +1 -0
  43. package/dist/__tests__/bidi.test.js +282 -0
  44. package/dist/__tests__/bidi.test.js.map +1 -0
  45. package/dist/__tests__/blockHints.test.d.ts +2 -0
  46. package/dist/__tests__/blockHints.test.d.ts.map +1 -0
  47. package/dist/__tests__/blockHints.test.js +79 -0
  48. package/dist/__tests__/blockHints.test.js.map +1 -0
  49. package/dist/__tests__/chineseLocale.test.js +2 -2
  50. package/dist/__tests__/chineseLocale.test.js.map +1 -1
  51. package/dist/__tests__/cjk/grid.test.js +2 -2
  52. package/dist/__tests__/cjk/grid.test.js.map +1 -1
  53. package/dist/__tests__/cjk/justifyRender.test.js +2 -1
  54. package/dist/__tests__/cjk/justifyRender.test.js.map +1 -1
  55. package/dist/__tests__/defaults/folio.test.js +16 -1
  56. package/dist/__tests__/defaults/folio.test.js.map +1 -1
  57. package/dist/__tests__/direction.test.d.ts +2 -0
  58. package/dist/__tests__/direction.test.d.ts.map +1 -0
  59. package/dist/__tests__/direction.test.js +117 -0
  60. package/dist/__tests__/direction.test.js.map +1 -0
  61. package/dist/__tests__/exports.test.js +29 -0
  62. package/dist/__tests__/exports.test.js.map +1 -1
  63. package/dist/__tests__/headingLetterSpacing.test.js +1 -1
  64. package/dist/__tests__/headingLetterSpacing.test.js.map +1 -1
  65. package/dist/__tests__/headingNumberPosition.test.d.ts +2 -0
  66. package/dist/__tests__/headingNumberPosition.test.d.ts.map +1 -0
  67. package/dist/__tests__/headingNumberPosition.test.js +87 -0
  68. package/dist/__tests__/headingNumberPosition.test.js.map +1 -0
  69. package/dist/__tests__/htmlCopyText.test.d.ts +2 -0
  70. package/dist/__tests__/htmlCopyText.test.d.ts.map +1 -0
  71. package/dist/__tests__/htmlCopyText.test.js +153 -0
  72. package/dist/__tests__/htmlCopyText.test.js.map +1 -0
  73. package/dist/__tests__/kashida.test.d.ts +2 -0
  74. package/dist/__tests__/kashida.test.d.ts.map +1 -0
  75. package/dist/__tests__/kashida.test.js +281 -0
  76. package/dist/__tests__/kashida.test.js.map +1 -0
  77. package/dist/__tests__/kashidaPatterns.test.d.ts +2 -0
  78. package/dist/__tests__/kashidaPatterns.test.d.ts.map +1 -0
  79. package/dist/__tests__/kashidaPatterns.test.js +143 -0
  80. package/dist/__tests__/kashidaPatterns.test.js.map +1 -0
  81. package/dist/__tests__/links.test.js +3 -1
  82. package/dist/__tests__/links.test.js.map +1 -1
  83. package/dist/__tests__/parse/anchors.test.js +17 -0
  84. package/dist/__tests__/parse/anchors.test.js.map +1 -1
  85. package/dist/__tests__/parse/containers.test.js +1 -1
  86. package/dist/__tests__/parse/containers.test.js.map +1 -1
  87. package/dist/__tests__/rtl/designText.test.d.ts +2 -0
  88. package/dist/__tests__/rtl/designText.test.d.ts.map +1 -0
  89. package/dist/__tests__/rtl/designText.test.js +301 -0
  90. package/dist/__tests__/rtl/designText.test.js.map +1 -0
  91. package/dist/__tests__/rtl/designTextPaint.test.d.ts +2 -0
  92. package/dist/__tests__/rtl/designTextPaint.test.d.ts.map +1 -0
  93. package/dist/__tests__/rtl/designTextPaint.test.js +140 -0
  94. package/dist/__tests__/rtl/designTextPaint.test.js.map +1 -0
  95. package/dist/__tests__/rtl/htmlRtl.test.d.ts +2 -0
  96. package/dist/__tests__/rtl/htmlRtl.test.d.ts.map +1 -0
  97. package/dist/__tests__/rtl/htmlRtl.test.js +175 -0
  98. package/dist/__tests__/rtl/htmlRtl.test.js.map +1 -0
  99. package/dist/__tests__/rtl/mirroredFrame.test.d.ts +2 -0
  100. package/dist/__tests__/rtl/mirroredFrame.test.d.ts.map +1 -0
  101. package/dist/__tests__/rtl/mirroredFrame.test.js +313 -0
  102. package/dist/__tests__/rtl/mirroredFrame.test.js.map +1 -0
  103. package/dist/__tests__/rtl/mirroredPaint.test.d.ts +2 -0
  104. package/dist/__tests__/rtl/mirroredPaint.test.d.ts.map +1 -0
  105. package/dist/__tests__/rtl/mirroredPaint.test.js +116 -0
  106. package/dist/__tests__/rtl/mirroredPaint.test.js.map +1 -0
  107. package/dist/__tests__/rtl/oppositeBlocks.test.d.ts +2 -0
  108. package/dist/__tests__/rtl/oppositeBlocks.test.d.ts.map +1 -0
  109. package/dist/__tests__/rtl/oppositeBlocks.test.js +273 -0
  110. package/dist/__tests__/rtl/oppositeBlocks.test.js.map +1 -0
  111. package/dist/__tests__/rtl/segmentLang.test.d.ts +2 -0
  112. package/dist/__tests__/rtl/segmentLang.test.d.ts.map +1 -0
  113. package/dist/__tests__/rtl/segmentLang.test.js +54 -0
  114. package/dist/__tests__/rtl/segmentLang.test.js.map +1 -0
  115. package/dist/__tests__/rtlLines.test.d.ts +2 -0
  116. package/dist/__tests__/rtlLines.test.d.ts.map +1 -0
  117. package/dist/__tests__/rtlLines.test.js +180 -0
  118. package/dist/__tests__/rtlLines.test.js.map +1 -0
  119. package/dist/__tests__/tocNumberColumn.test.d.ts +2 -0
  120. package/dist/__tests__/tocNumberColumn.test.d.ts.map +1 -0
  121. package/dist/__tests__/tocNumberColumn.test.js +67 -0
  122. package/dist/__tests__/tocNumberColumn.test.js.map +1 -0
  123. package/dist/__tests__/verse.test.d.ts +2 -0
  124. package/dist/__tests__/verse.test.d.ts.map +1 -0
  125. package/dist/__tests__/verse.test.js +232 -0
  126. package/dist/__tests__/verse.test.js.map +1 -0
  127. package/dist/__tests__/vertical/geometry.test.js +2 -2
  128. package/dist/__tests__/vertical/geometry.test.js.map +1 -1
  129. package/dist/__tests__/vertical/htmlTurnedCells.test.js +2 -2
  130. package/dist/__tests__/vertical/htmlTurnedCells.test.js.map +1 -1
  131. package/dist/arabicMarks.d.ts +80 -0
  132. package/dist/arabicMarks.d.ts.map +1 -0
  133. package/dist/arabicMarks.js +267 -0
  134. package/dist/arabicMarks.js.map +1 -0
  135. package/dist/arabicNumberWords.d.ts +43 -0
  136. package/dist/arabicNumberWords.d.ts.map +1 -0
  137. package/dist/arabicNumberWords.js +163 -0
  138. package/dist/arabicNumberWords.js.map +1 -0
  139. package/dist/arabicNumerals.d.ts +54 -0
  140. package/dist/arabicNumerals.d.ts.map +1 -0
  141. package/dist/arabicNumerals.js +143 -0
  142. package/dist/arabicNumerals.js.map +1 -0
  143. package/dist/bidi.d.ts +186 -0
  144. package/dist/bidi.d.ts.map +1 -0
  145. package/dist/bidi.js +851 -0
  146. package/dist/bidi.js.map +1 -0
  147. package/dist/bidiData.d.ts +13 -0
  148. package/dist/bidiData.d.ts.map +1 -0
  149. package/dist/bidiData.js +318 -0
  150. package/dist/bidiData.js.map +1 -0
  151. package/dist/canvas-backend/blockRender.d.ts.map +1 -1
  152. package/dist/canvas-backend/blockRender.js +58 -27
  153. package/dist/canvas-backend/blockRender.js.map +1 -1
  154. package/dist/canvas-backend/chip.d.ts.map +1 -1
  155. package/dist/canvas-backend/chip.js +16 -2
  156. package/dist/canvas-backend/chip.js.map +1 -1
  157. package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
  158. package/dist/canvas-backend/headerFooter.js +7 -3
  159. package/dist/canvas-backend/headerFooter.js.map +1 -1
  160. package/dist/canvas-backend/index.d.ts.map +1 -1
  161. package/dist/canvas-backend/index.js +9 -4
  162. package/dist/canvas-backend/index.js.map +1 -1
  163. package/dist/canvas-backend/mirrorFrame.d.ts +38 -0
  164. package/dist/canvas-backend/mirrorFrame.d.ts.map +1 -0
  165. package/dist/canvas-backend/mirrorFrame.js +129 -0
  166. package/dist/canvas-backend/mirrorFrame.js.map +1 -0
  167. package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
  168. package/dist/canvas-backend/renderResourceBlock.js +16 -5
  169. package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
  170. package/dist/canvas-backend/runDirection.d.ts +21 -0
  171. package/dist/canvas-backend/runDirection.d.ts.map +1 -0
  172. package/dist/canvas-backend/runDirection.js +46 -0
  173. package/dist/canvas-backend/runDirection.js.map +1 -0
  174. package/dist/canvas-backend/wordRuns.d.ts +49 -0
  175. package/dist/canvas-backend/wordRuns.d.ts.map +1 -0
  176. package/dist/canvas-backend/wordRuns.js +111 -0
  177. package/dist/canvas-backend/wordRuns.js.map +1 -0
  178. package/dist/columnClip.d.ts +4 -1
  179. package/dist/columnClip.d.ts.map +1 -1
  180. package/dist/columnClip.js +8 -3
  181. package/dist/columnClip.js.map +1 -1
  182. package/dist/configWarnings.d.ts +3 -1
  183. package/dist/configWarnings.d.ts.map +1 -1
  184. package/dist/configWarnings.js +59 -5
  185. package/dist/configWarnings.js.map +1 -1
  186. package/dist/defaults/bodyText.d.ts +28 -6
  187. package/dist/defaults/bodyText.d.ts.map +1 -1
  188. package/dist/defaults/bodyText.js +158 -30
  189. package/dist/defaults/bodyText.js.map +1 -1
  190. package/dist/defaults/calloutStyles.js +1 -1
  191. package/dist/defaults/calloutStyles.js.map +1 -1
  192. package/dist/defaults/captionStyle.js +5 -5
  193. package/dist/defaults/captionStyle.js.map +1 -1
  194. package/dist/defaults/folio.d.ts +4 -0
  195. package/dist/defaults/folio.d.ts.map +1 -1
  196. package/dist/defaults/folio.js +12 -1
  197. package/dist/defaults/folio.js.map +1 -1
  198. package/dist/defaults/footnotes.d.ts.map +1 -1
  199. package/dist/defaults/footnotes.js +12 -2
  200. package/dist/defaults/footnotes.js.map +1 -1
  201. package/dist/defaults/headerFooter.d.ts.map +1 -1
  202. package/dist/defaults/headerFooter.js +1 -0
  203. package/dist/defaults/headerFooter.js.map +1 -1
  204. package/dist/defaults/headingStyles.d.ts.map +1 -1
  205. package/dist/defaults/headingStyles.js +2 -1
  206. package/dist/defaults/headingStyles.js.map +1 -1
  207. package/dist/defaults/headings.d.ts.map +1 -1
  208. package/dist/defaults/headings.js +9 -2
  209. package/dist/defaults/headings.js.map +1 -1
  210. package/dist/defaults/index.d.ts +1 -1
  211. package/dist/defaults/index.d.ts.map +1 -1
  212. package/dist/defaults/index.js +7 -1
  213. package/dist/defaults/index.js.map +1 -1
  214. package/dist/defaults/indexConfig.d.ts +6 -2
  215. package/dist/defaults/indexConfig.d.ts.map +1 -1
  216. package/dist/defaults/indexConfig.js +25 -5
  217. package/dist/defaults/indexConfig.js.map +1 -1
  218. package/dist/defaults/page.d.ts +7 -4
  219. package/dist/defaults/page.d.ts.map +1 -1
  220. package/dist/defaults/page.js +10 -7
  221. package/dist/defaults/page.js.map +1 -1
  222. package/dist/defaults/paragraphStyles.js +2 -2
  223. package/dist/defaults/paragraphStyles.js.map +1 -1
  224. package/dist/defaults/parts.d.ts.map +1 -1
  225. package/dist/defaults/parts.js +2 -1
  226. package/dist/defaults/parts.js.map +1 -1
  227. package/dist/defaults/resourceTypes.d.ts +1 -1
  228. package/dist/defaults/resourceTypes.d.ts.map +1 -1
  229. package/dist/defaults/resourceTypes.js +10 -2
  230. package/dist/defaults/resourceTypes.js.map +1 -1
  231. package/dist/defaults/shared.d.ts +9 -0
  232. package/dist/defaults/shared.d.ts.map +1 -1
  233. package/dist/defaults/shared.js +15 -0
  234. package/dist/defaults/shared.js.map +1 -1
  235. package/dist/defaults/tableStyle.d.ts.map +1 -1
  236. package/dist/defaults/tableStyle.js +5 -1
  237. package/dist/defaults/tableStyle.js.map +1 -1
  238. package/dist/design/bidiText.d.ts +89 -0
  239. package/dist/design/bidiText.d.ts.map +1 -0
  240. package/dist/design/bidiText.js +165 -0
  241. package/dist/design/bidiText.js.map +1 -0
  242. package/dist/design/layout.d.ts +20 -0
  243. package/dist/design/layout.d.ts.map +1 -1
  244. package/dist/design/layout.js +46 -5
  245. package/dist/design/layout.js.map +1 -1
  246. package/dist/design/placeholders.d.ts +7 -1
  247. package/dist/design/placeholders.d.ts.map +1 -1
  248. package/dist/design/placeholders.js +6 -3
  249. package/dist/design/placeholders.js.map +1 -1
  250. package/dist/design/richText.d.ts +5 -2
  251. package/dist/design/richText.d.ts.map +1 -1
  252. package/dist/design/richText.js +35 -2
  253. package/dist/design/richText.js.map +1 -1
  254. package/dist/emphasisOverline.d.ts +27 -0
  255. package/dist/emphasisOverline.d.ts.map +1 -0
  256. package/dist/emphasisOverline.js +107 -0
  257. package/dist/emphasisOverline.js.map +1 -0
  258. package/dist/frontmatter.d.ts +25 -6
  259. package/dist/frontmatter.d.ts.map +1 -1
  260. package/dist/frontmatter.js +51 -10
  261. package/dist/frontmatter.js.map +1 -1
  262. package/dist/html-backend.d.ts +4 -1
  263. package/dist/html-backend.d.ts.map +1 -1
  264. package/dist/html-backend.js +363 -87
  265. package/dist/html-backend.js.map +1 -1
  266. package/dist/hyphenate.d.ts.map +1 -1
  267. package/dist/hyphenate.js +4 -1
  268. package/dist/hyphenate.js.map +1 -1
  269. package/dist/index.d.ts +11 -8
  270. package/dist/index.d.ts.map +1 -1
  271. package/dist/index.js +6 -4
  272. package/dist/index.js.map +1 -1
  273. package/dist/knuthPlass/breakpoints.d.ts.map +1 -1
  274. package/dist/knuthPlass/breakpoints.js +3 -0
  275. package/dist/knuthPlass/breakpoints.js.map +1 -1
  276. package/dist/knuthPlass/pretextAdapter.d.ts.map +1 -1
  277. package/dist/knuthPlass/pretextAdapter.js +9 -3
  278. package/dist/knuthPlass/pretextAdapter.js.map +1 -1
  279. package/dist/knuthPlass/richAdapter.d.ts +11 -0
  280. package/dist/knuthPlass/richAdapter.d.ts.map +1 -1
  281. package/dist/knuthPlass/richAdapter.js +11 -4
  282. package/dist/knuthPlass/richAdapter.js.map +1 -1
  283. package/dist/knuthPlass/tracking.d.ts +2 -1
  284. package/dist/knuthPlass/tracking.d.ts.map +1 -1
  285. package/dist/knuthPlass/tracking.js +5 -2
  286. package/dist/knuthPlass/tracking.js.map +1 -1
  287. package/dist/knuthPlass/types.d.ts +4 -0
  288. package/dist/knuthPlass/types.d.ts.map +1 -1
  289. package/dist/locale.d.ts +63 -9
  290. package/dist/locale.d.ts.map +1 -1
  291. package/dist/locale.js +129 -12
  292. package/dist/locale.js.map +1 -1
  293. package/dist/measure/bidiLines.d.ts +91 -0
  294. package/dist/measure/bidiLines.d.ts.map +1 -0
  295. package/dist/measure/bidiLines.js +293 -0
  296. package/dist/measure/bidiLines.js.map +1 -0
  297. package/dist/measure/cache.d.ts.map +1 -1
  298. package/dist/measure/cache.js +10 -4
  299. package/dist/measure/cache.js.map +1 -1
  300. package/dist/measure/joining.d.ts +39 -0
  301. package/dist/measure/joining.d.ts.map +1 -0
  302. package/dist/measure/joining.js +91 -0
  303. package/dist/measure/joining.js.map +1 -0
  304. package/dist/measure/joiningGroups.d.ts +7 -0
  305. package/dist/measure/joiningGroups.d.ts.map +1 -0
  306. package/dist/measure/joiningGroups.js +110 -0
  307. package/dist/measure/joiningGroups.js.map +1 -0
  308. package/dist/measure/kashida.d.ts +97 -0
  309. package/dist/measure/kashida.d.ts.map +1 -0
  310. package/dist/measure/kashida.js +285 -0
  311. package/dist/measure/kashida.js.map +1 -0
  312. package/dist/measure/kashidaPatterns.d.ts +109 -0
  313. package/dist/measure/kashidaPatterns.d.ts.map +1 -0
  314. package/dist/measure/kashidaPatterns.js +519 -0
  315. package/dist/measure/kashidaPatterns.js.map +1 -0
  316. package/dist/measure/links.d.ts.map +1 -1
  317. package/dist/measure/links.js +5 -2
  318. package/dist/measure/links.js.map +1 -1
  319. package/dist/measure/plain.d.ts.map +1 -1
  320. package/dist/measure/plain.js +31 -0
  321. package/dist/measure/plain.js.map +1 -1
  322. package/dist/measure/rich.d.ts +24 -0
  323. package/dist/measure/rich.d.ts.map +1 -1
  324. package/dist/measure/rich.js +250 -22
  325. package/dist/measure/rich.js.map +1 -1
  326. package/dist/measure/types.d.ts +14 -0
  327. package/dist/measure/types.d.ts.map +1 -1
  328. package/dist/measure/types.js.map +1 -1
  329. package/dist/numberWords.d.ts +17 -4
  330. package/dist/numberWords.d.ts.map +1 -1
  331. package/dist/numberWords.js +19 -13
  332. package/dist/numberWords.js.map +1 -1
  333. package/dist/numbering.d.ts +49 -11
  334. package/dist/numbering.d.ts.map +1 -1
  335. package/dist/numbering.js +117 -21
  336. package/dist/numbering.js.map +1 -1
  337. package/dist/parse/annotations.d.ts +6 -3
  338. package/dist/parse/annotations.d.ts.map +1 -1
  339. package/dist/parse/annotations.js +31 -7
  340. package/dist/parse/annotations.js.map +1 -1
  341. package/dist/parse/attrs.d.ts +3 -3
  342. package/dist/parse/attrs.d.ts.map +1 -1
  343. package/dist/parse/attrs.js +5 -4
  344. package/dist/parse/attrs.js.map +1 -1
  345. package/dist/parse/blockParser.d.ts.map +1 -1
  346. package/dist/parse/blockParser.js +158 -14
  347. package/dist/parse/blockParser.js.map +1 -1
  348. package/dist/parse/index.d.ts +1 -1
  349. package/dist/parse/index.d.ts.map +1 -1
  350. package/dist/parse/index.js.map +1 -1
  351. package/dist/parse/indexMarks.d.ts.map +1 -1
  352. package/dist/parse/indexMarks.js +32 -10
  353. package/dist/parse/indexMarks.js.map +1 -1
  354. package/dist/parse/inlineFormatting.d.ts.map +1 -1
  355. package/dist/parse/inlineFormatting.js +5 -4
  356. package/dist/parse/inlineFormatting.js.map +1 -1
  357. package/dist/parse/types.d.ts +63 -1
  358. package/dist/parse/types.d.ts.map +1 -1
  359. package/dist/pipeline/build.d.ts.map +1 -1
  360. package/dist/pipeline/build.js +161 -43
  361. package/dist/pipeline/build.js.map +1 -1
  362. package/dist/pipeline/buildBlockKind.d.ts +2 -0
  363. package/dist/pipeline/buildBlockKind.d.ts.map +1 -1
  364. package/dist/pipeline/buildBlockKind.js +67 -2
  365. package/dist/pipeline/buildBlockKind.js.map +1 -1
  366. package/dist/pipeline/buildHelpers.d.ts +22 -1
  367. package/dist/pipeline/buildHelpers.d.ts.map +1 -1
  368. package/dist/pipeline/buildHelpers.js +55 -5
  369. package/dist/pipeline/buildHelpers.js.map +1 -1
  370. package/dist/pipeline/calloutLayout.d.ts +6 -1
  371. package/dist/pipeline/calloutLayout.d.ts.map +1 -1
  372. package/dist/pipeline/calloutLayout.js +63 -18
  373. package/dist/pipeline/calloutLayout.js.map +1 -1
  374. package/dist/pipeline/citations.d.ts +2 -1
  375. package/dist/pipeline/citations.d.ts.map +1 -1
  376. package/dist/pipeline/citations.js +29 -9
  377. package/dist/pipeline/citations.js.map +1 -1
  378. package/dist/pipeline/cjkGrid.d.ts +3 -2
  379. package/dist/pipeline/cjkGrid.d.ts.map +1 -1
  380. package/dist/pipeline/cjkGrid.js +3 -2
  381. package/dist/pipeline/cjkGrid.js.map +1 -1
  382. package/dist/pipeline/config.d.ts +13 -1
  383. package/dist/pipeline/config.d.ts.map +1 -1
  384. package/dist/pipeline/config.js +32 -3
  385. package/dist/pipeline/config.js.map +1 -1
  386. package/dist/pipeline/contentWarnings.d.ts +10 -0
  387. package/dist/pipeline/contentWarnings.d.ts.map +1 -1
  388. package/dist/pipeline/contentWarnings.js +88 -0
  389. package/dist/pipeline/contentWarnings.js.map +1 -1
  390. package/dist/pipeline/continuation.d.ts.map +1 -1
  391. package/dist/pipeline/continuation.js +1 -1
  392. package/dist/pipeline/continuation.js.map +1 -1
  393. package/dist/pipeline/crossRefs.d.ts.map +1 -1
  394. package/dist/pipeline/crossRefs.js +2 -0
  395. package/dist/pipeline/crossRefs.js.map +1 -1
  396. package/dist/pipeline/floatPlacement.d.ts.map +1 -1
  397. package/dist/pipeline/floatPlacement.js +2 -1
  398. package/dist/pipeline/floatPlacement.js.map +1 -1
  399. package/dist/pipeline/footnotes.d.ts +13 -5
  400. package/dist/pipeline/footnotes.d.ts.map +1 -1
  401. package/dist/pipeline/footnotes.js +19 -8
  402. package/dist/pipeline/footnotes.js.map +1 -1
  403. package/dist/pipeline/headerFooter.d.ts +4 -0
  404. package/dist/pipeline/headerFooter.d.ts.map +1 -1
  405. package/dist/pipeline/headerFooter.js +41 -13
  406. package/dist/pipeline/headerFooter.js.map +1 -1
  407. package/dist/pipeline/headingDesignCuts.d.ts +1 -1
  408. package/dist/pipeline/headingDesignCuts.d.ts.map +1 -1
  409. package/dist/pipeline/headingDesignCuts.js +2 -1
  410. package/dist/pipeline/headingDesignCuts.js.map +1 -1
  411. package/dist/pipeline/headingStyles.d.ts +10 -0
  412. package/dist/pipeline/headingStyles.d.ts.map +1 -1
  413. package/dist/pipeline/headingStyles.js +46 -0
  414. package/dist/pipeline/headingStyles.js.map +1 -1
  415. package/dist/pipeline/indexDirective.d.ts.map +1 -1
  416. package/dist/pipeline/indexDirective.js +33 -6
  417. package/dist/pipeline/indexDirective.js.map +1 -1
  418. package/dist/pipeline/indexGroups.d.ts +23 -1
  419. package/dist/pipeline/indexGroups.d.ts.map +1 -1
  420. package/dist/pipeline/indexGroups.js +50 -1
  421. package/dist/pipeline/indexGroups.js.map +1 -1
  422. package/dist/pipeline/lists.d.ts +16 -4
  423. package/dist/pipeline/lists.d.ts.map +1 -1
  424. package/dist/pipeline/lists.js +51 -12
  425. package/dist/pipeline/lists.js.map +1 -1
  426. package/dist/pipeline/measureContentBlock.d.ts +5 -0
  427. package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
  428. package/dist/pipeline/measureContentBlock.js +63 -4
  429. package/dist/pipeline/measureContentBlock.js.map +1 -1
  430. package/dist/pipeline/mirrorFrame.d.ts +37 -0
  431. package/dist/pipeline/mirrorFrame.d.ts.map +1 -0
  432. package/dist/pipeline/mirrorFrame.js +143 -0
  433. package/dist/pipeline/mirrorFrame.js.map +1 -0
  434. package/dist/pipeline/outline.d.ts +2 -2
  435. package/dist/pipeline/outline.d.ts.map +1 -1
  436. package/dist/pipeline/outline.js +33 -6
  437. package/dist/pipeline/outline.js.map +1 -1
  438. package/dist/pipeline/paragraphContainers.d.ts +5 -0
  439. package/dist/pipeline/paragraphContainers.d.ts.map +1 -1
  440. package/dist/pipeline/paragraphContainers.js +12 -0
  441. package/dist/pipeline/paragraphContainers.js.map +1 -1
  442. package/dist/pipeline/parts.d.ts +1 -1
  443. package/dist/pipeline/parts.d.ts.map +1 -1
  444. package/dist/pipeline/parts.js +3 -2
  445. package/dist/pipeline/parts.js.map +1 -1
  446. package/dist/pipeline/placeholders.d.ts +13 -6
  447. package/dist/pipeline/placeholders.d.ts.map +1 -1
  448. package/dist/pipeline/placeholders.js +15 -11
  449. package/dist/pipeline/placeholders.js.map +1 -1
  450. package/dist/pipeline/placement.d.ts +3 -2
  451. package/dist/pipeline/placement.d.ts.map +1 -1
  452. package/dist/pipeline/placement.js +18 -6
  453. package/dist/pipeline/placement.js.map +1 -1
  454. package/dist/pipeline/resourceLayout.d.ts.map +1 -1
  455. package/dist/pipeline/resourceLayout.js +70 -7
  456. package/dist/pipeline/resourceLayout.js.map +1 -1
  457. package/dist/pipeline/resourceNumbering.d.ts +5 -3
  458. package/dist/pipeline/resourceNumbering.d.ts.map +1 -1
  459. package/dist/pipeline/resourceNumbering.js +11 -8
  460. package/dist/pipeline/resourceNumbering.js.map +1 -1
  461. package/dist/pipeline/styles.d.ts +6 -1
  462. package/dist/pipeline/styles.d.ts.map +1 -1
  463. package/dist/pipeline/styles.js +44 -14
  464. package/dist/pipeline/styles.js.map +1 -1
  465. package/dist/pipeline/tashkil.d.ts +27 -0
  466. package/dist/pipeline/tashkil.d.ts.map +1 -0
  467. package/dist/pipeline/tashkil.js +161 -0
  468. package/dist/pipeline/tashkil.js.map +1 -0
  469. package/dist/pipeline/toc.d.ts +12 -0
  470. package/dist/pipeline/toc.d.ts.map +1 -1
  471. package/dist/pipeline/toc.js +64 -4
  472. package/dist/pipeline/toc.js.map +1 -1
  473. package/dist/pipeline/verse.d.ts +65 -0
  474. package/dist/pipeline/verse.d.ts.map +1 -0
  475. package/dist/pipeline/verse.js +252 -0
  476. package/dist/pipeline/verse.js.map +1 -0
  477. package/dist/pipeline/verticalMetrics.d.ts +1 -1
  478. package/dist/pipeline/verticalMetrics.d.ts.map +1 -1
  479. package/dist/pipeline/verticalMetrics.js +7 -5
  480. package/dist/pipeline/verticalMetrics.js.map +1 -1
  481. package/dist/table/model.d.ts +4 -3
  482. package/dist/table/model.d.ts.map +1 -1
  483. package/dist/table/model.js.map +1 -1
  484. package/dist/types.d.ts +286 -36
  485. package/dist/types.d.ts.map +1 -1
  486. package/dist/uprightArabic.d.ts +39 -0
  487. package/dist/uprightArabic.d.ts.map +1 -0
  488. package/dist/uprightArabic.js +105 -0
  489. package/dist/uprightArabic.js.map +1 -0
  490. package/dist/vdt.d.ts +276 -11
  491. package/dist/vdt.d.ts.map +1 -1
  492. package/dist/vdt.js +46 -9
  493. package/dist/vdt.js.map +1 -1
  494. package/package.json +1 -1
package/dist/locale.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { CjkRegion, HyphenationLocale, LocaleTag } from './types';
1
+ import type { CjkRegion, DigitSystem, HyphenationLocale, LocaleTag, NumeralsSetting } from './types';
2
2
  /** The languages whose hyphenation patterns ship with the engine. */
3
3
  export declare const HYPHENATION_LOCALES: readonly HyphenationLocale[];
4
4
  /** The primary language subtag of a BCP 47 tag, lower-cased (`'pt_BR'` →
@@ -12,10 +12,27 @@ export declare function presentTag(tag: unknown): string | undefined;
12
12
  * hyphenation patterns: hyphenation is off unless the author turns it on
13
13
  * and names a language for the Latin words. */
14
14
  export declare function isCjkLanguage(tag: unknown): boolean;
15
+ /**
16
+ * Whether `tag` names a language set without hyphenation: Chinese,
17
+ * Japanese and Korean ({@link isCjkLanguage}), and the languages written in
18
+ * a right-to-left script — Arabic, Persian, Urdu, Hebrew, Yiddish… An
19
+ * Arabic word is never divided at a line end: its letters join, and the
20
+ * line is justified with the spaces and kashida instead (arabic-typography
21
+ * §5); Hebrew books do not divide words either. No patterns ship for any
22
+ * of them, and asking for none is not a fallback worth reporting.
23
+ */
24
+ export declare function isUnhyphenatedLanguage(tag: unknown): boolean;
15
25
  /** The script of a tag, as `Intl.Locale(tag).maximize()` reads it: `'Hans'`
16
26
  * for `zh`, `zh-CN`, `zh-SG`; `'Hant'` for `zh-TW`, `zh-HK`, `zh-MO` and
17
27
  * `zh-Hant`; `'Latn'` for `en`. `undefined` for a missing or invalid tag. */
18
28
  export declare function localeScript(tag: unknown): string | undefined;
29
+ /** The direction text in `tag`'s language runs, from the script the tag
30
+ * names or implies once maximised (`localeScript`): `'rtl'` for Arabic
31
+ * (`ar`, `fa`, `ur`, `ps`, `ug`, `az-Arab`), Hebrew (`he`, `yi`), Syriac,
32
+ * Thaana (`dv`), N'Ko, Adlam (`ff-Adlm`) and the other right-to-left
33
+ * scripts; `'ltr'` for every other tag, and for a missing or invalid
34
+ * one. */
35
+ export declare function directionOf(tag: unknown): 'ltr' | 'rtl';
19
36
  /** The typographic region of a Chinese tag, which decides its typographic
20
37
  * defaults (clreq §1.2: rules follow the region, not the script): CN, SG
21
38
  * and MY are `'mainland'`, TW `'taiwan'`, HK and MO `'hongkong'`; a tag
@@ -38,12 +55,17 @@ export declare function stringsKeyOf(tag: unknown): string;
38
55
  * PDF `/Lang` and a Sandbox permalink's `lang=` carry. */
39
56
  export declare function canonicalLocaleTag(tag: unknown): string | undefined;
40
57
  /** The `lang` a renderer declares for a resolved document (the HTML root,
41
- * the canvas context): its language in canonical form (`zh-Hant-TW`),
42
- * from `locale`, else the hyphenation tag. Only Chinese, Japanese and
43
- * Korean documents declare one — there the browser picks regional glyph
44
- * forms from it (Han characters unified in Unicode, punctuation set in the
45
- * corner or the centre of the em box) — so the output of every other
46
- * document is unchanged. */
58
+ * the canvas context): its language in canonical form (`zh-Hant-TW`,
59
+ * `ar-EG`), from `locale`, else the hyphenation tag. Only two kinds of
60
+ * document declare one, so the output of every other document is
61
+ * unchanged:
62
+ * - Chinese, Japanese and Korean: the browser picks regional glyph forms
63
+ * from it (Han characters unified in Unicode, punctuation set in the
64
+ * corner or the centre of the em box);
65
+ * - languages written right to left (Arabic, Persian, Urdu, Hebrew…): the
66
+ * font's language-specific forms (`locl`: the Urdu and Persian digits
67
+ * and letter shapes of a shared Arabic font) and the fallback font
68
+ * follow it, and assistive technology reads the text in its language. */
47
69
  export declare function renderLangOf(config: {
48
70
  locale?: string;
49
71
  bodyText?: {
@@ -70,7 +92,11 @@ export interface DocumentLanguage {
70
92
  /** The document languages with built-in strings, in the order a language
71
93
  * picker lists them: the eight hyphenation languages, then Chinese in
72
94
  * Simplified characters, in Traditional characters (Taiwan) and in
73
- * Traditional characters as set in Hong Kong. */
95
+ * Traditional characters as set in Hong Kong, then Arabic — bare, as set
96
+ * in Egypt and as set in Morocco. The strings are the same in the three
97
+ * Arabic entries; the region decides what a regional default reads from
98
+ * the tag (digits: Arabic-Indic ٠–٩ in the Mashriq, European 0–9 in the
99
+ * Maghreb; month names in dates). */
74
100
  export declare const DOCUMENT_LANGUAGES: readonly DocumentLanguage[];
75
101
  /**
76
102
  * The bundled hyphenation locale for a BCP 47 language tag, or `undefined`
@@ -84,7 +110,8 @@ export declare function matchHyphenationLocale(tag: string): HyphenationLocale |
84
110
  * {@link matchHyphenationLocale}, falling back to `'en-us'` for a language
85
111
  * with no bundled patterns. The fallback is reported once per tag on the
86
112
  * console, since the text is then hyphenated with another language's rules
87
- * (Chinese, Japanese and Korean excepted: they are set without hyphenation);
113
+ * (Chinese, Japanese, Korean and the right-to-left languages excepted: they
114
+ * are set without hyphenation, see {@link isUnhyphenatedLanguage});
88
115
  * `warn: false` skips the report (hyphenation is off, so no text uses the
89
116
  * patterns). A missing or blank tag gives `'en-us'` silently.
90
117
  */
@@ -111,4 +138,31 @@ export declare function sameContentLocale(a: unknown, b: unknown): boolean;
111
138
  * always answers.
112
139
  */
113
140
  export declare function matchContentLocale(candidates: readonly string[], wanted: string): string | undefined;
141
+ /** Whether `value` names a digit system (`'latn'`, `'arab'`, `'arabext'`). */
142
+ export declare function isDigitSystem(value: unknown): value is DigitSystem;
143
+ /**
144
+ * The digits a book in `tag` prints its page numbers, list and note numbers
145
+ * and counters in (`PostextConfig.numerals: 'auto'`):
146
+ *
147
+ * - Arabic (`ar`): the Arabic-Indic digits (`'arab'`, ٠–٩) without a region
148
+ * or with any region but the Maghreb's, whose books print European digits
149
+ * (`'latn'`: `ar-MA`, `ar-DZ`, `ar-TN`, `ar-LY`, `ar-MR`, `ar-EH`).
150
+ * CLDR's own defaults give `latn` for a bare `ar` and for `ar-AE`; Arabic
151
+ * book publishing in the Mashriq and the Gulf prints ٠–٩, and a book is
152
+ * what this setting is for.
153
+ * - Persian (`fa`), Pashto (`ps`) and the Urdu of India (`ur-IN`): the
154
+ * Extended Arabic-Indic digits (`'arabext'`, ۰–۹). The Urdu of Pakistan
155
+ * (`ur`, `ur-PK`) takes `'latn'`, as CLDR does: Pakistani books print
156
+ * both, and the European digits are the safe default.
157
+ * - Every other language: `'latn'`.
158
+ *
159
+ * A tag that names its digits in a Unicode extension
160
+ * (`ar-MA-u-nu-arab`, `fa-u-nu-latn`) has those when they are one of the
161
+ * three. A missing or invalid tag gives `'latn'`.
162
+ */
163
+ export declare function defaultNumeralsFor(tag: unknown): DigitSystem;
164
+ /** The digit system of a `numerals` setting for a document in `tag`: the
165
+ * setting itself when it names one, else (`'auto'`, unset, or a value the
166
+ * engine does not know) the language's ({@link defaultNumeralsFor}). */
167
+ export declare function resolveNumerals(setting: NumeralsSetting | undefined, tag: unknown): DigitSystem;
114
168
  //# sourceMappingURL=locale.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEvE,qEAAqE;AACrE,eAAO,MAAM,mBAAmB,EAAE,SAAS,iBAAiB,EAEjD,CAAC;AAIZ;0EAC0E;AAC1E,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAE/C;AAQD;yEACyE;AACzE,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE3D;AAMD;;;gDAGgD;AAChD,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEnD;AAmBD;;8EAE8E;AAC9E,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE7D;AAED;;;;qEAIqE;AACrE,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAS/D;AAED;;;gBAGgB;AAChB,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAGzE;AAED;;;4BAG4B;AAC5B,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAIjD;AAED;;;2DAG2D;AAC3D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAOnE;AAED;;;;;;6BAM6B;AAC7B,wBAAgB,YAAY,CAAC,MAAM,EAAE;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAChE,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAIjC;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,CAAC,CAGjF;AAED;;uBAEuB;AACvB,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;kDAGkD;AAClD,eAAO,MAAM,kBAAkB,EAAE,SAAS,gBAAgB,EAY3B,CAAC;AAEhC;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAQjF;AAKD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,UAAO,GAAG,iBAAiB,CAenF;AAiDD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CASjE;AAgCD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAYpG"}
1
+ {"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAErG,qEAAqE;AACrE,eAAO,MAAM,mBAAmB,EAAE,SAAS,iBAAiB,EAEjD,CAAC;AAIZ;0EAC0E;AAC1E,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAE/C;AAQD;yEACyE;AACzE,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE3D;AAMD;;;gDAGgD;AAChD,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEnD;AASD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAE5D;AAmBD;;8EAE8E;AAC9E,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE7D;AAeD;;;;;WAKW;AACX,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,CAGvD;AAED;;;;qEAIqE;AACrE,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAS/D;AAED;;;gBAGgB;AAChB,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAGzE;AAED;;;4BAG4B;AAC5B,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAIjD;AAED;;;2DAG2D;AAC3D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAOnE;AAED;;;;;;;;;;;4EAW4E;AAC5E,wBAAgB,YAAY,CAAC,MAAM,EAAE;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAChE,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAIjC;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,CAAC,CAGjF;AAED;;uBAEuB;AACvB,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;sCAOsC;AACtC,eAAO,MAAM,kBAAkB,EAAE,SAAS,gBAAgB,EAe3B,CAAC;AAEhC;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAQjF;AAKD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,UAAO,GAAG,iBAAiB,CAenF;AAiDD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CASjE;AAgCD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAYpG;AAYD,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAElE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,CAuB5D;AAED;;yEAEyE;AACzE,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,WAAW,CAE/F"}
package/dist/locale.js CHANGED
@@ -28,6 +28,24 @@ const CJK_LANGUAGES = new Set(['zh', 'ja', 'ko']);
28
28
  export function isCjkLanguage(tag) {
29
29
  return isTag(tag) && CJK_LANGUAGES.has(languageOf(tag));
30
30
  }
31
+ /** Whether `tag` names a language written in a right-to-left script once
32
+ * maximised (`'ar'`, `'fa-IR'`, `'ur'`, `'he'`, `'yi'`, `'ks-Arab'`); not
33
+ * `'ks-Deva'` or `'az'` (Latin). See {@link directionOf}. */
34
+ function isRightToLeftLanguage(tag) {
35
+ return directionOf(tag) === 'rtl';
36
+ }
37
+ /**
38
+ * Whether `tag` names a language set without hyphenation: Chinese,
39
+ * Japanese and Korean ({@link isCjkLanguage}), and the languages written in
40
+ * a right-to-left script — Arabic, Persian, Urdu, Hebrew, Yiddish… An
41
+ * Arabic word is never divided at a line end: its letters join, and the
42
+ * line is justified with the spaces and kashida instead (arabic-typography
43
+ * §5); Hebrew books do not divide words either. No patterns ship for any
44
+ * of them, and asking for none is not a fallback worth reporting.
45
+ */
46
+ export function isUnhyphenatedLanguage(tag) {
47
+ return isCjkLanguage(tag) || isRightToLeftLanguage(tag);
48
+ }
31
49
  /** `Intl.Locale(tag).maximize()`, memoised; `undefined` for a tag the
32
50
  * runtime rejects (or a runtime without `Intl.Locale`). */
33
51
  const maximized = new Map();
@@ -51,6 +69,28 @@ function maximize(tag) {
51
69
  export function localeScript(tag) {
52
70
  return isTag(tag) ? maximize(tag)?.script : undefined;
53
71
  }
72
+ /** Scripts written from right to left (ISO 15924 codes): Arabic (and its
73
+ * Nastaliq variant), Hebrew, Syriac, Thaana, N'Ko, Adlam, Hanifi Rohingya,
74
+ * Mandaic, Samaritan, Mende Kikakui, Garay, and the historic ones
75
+ * (Imperial Aramaic, Avestan, Chorasmian, Cypriot, Elymaic, Hatran, Old
76
+ * Hungarian, Kharoshthi, Lydian, Manichaean, Old North and South Arabian,
77
+ * Nabataean, Old Turkic, Old Uyghur, Palmyrene, Inscriptional and Psalter
78
+ * Pahlavi, Phoenician, Parthian, Sogdian and Old Sogdian, Yezidi). */
79
+ const RTL_SCRIPTS = new Set([
80
+ 'Arab', 'Aran', 'Hebr', 'Syrc', 'Thaa', 'Nkoo', 'Adlm', 'Rohg', 'Mand', 'Samr', 'Mend', 'Gara',
81
+ 'Armi', 'Avst', 'Chrs', 'Cprt', 'Elym', 'Hatr', 'Hung', 'Khar', 'Lydi', 'Mani', 'Narb', 'Sarb',
82
+ 'Nbat', 'Orkh', 'Ougr', 'Palm', 'Phli', 'Phlp', 'Phnx', 'Prti', 'Sogd', 'Sogo', 'Yezi',
83
+ ]);
84
+ /** The direction text in `tag`'s language runs, from the script the tag
85
+ * names or implies once maximised (`localeScript`): `'rtl'` for Arabic
86
+ * (`ar`, `fa`, `ur`, `ps`, `ug`, `az-Arab`), Hebrew (`he`, `yi`), Syriac,
87
+ * Thaana (`dv`), N'Ko, Adlam (`ff-Adlm`) and the other right-to-left
88
+ * scripts; `'ltr'` for every other tag, and for a missing or invalid
89
+ * one. */
90
+ export function directionOf(tag) {
91
+ const script = localeScript(tag);
92
+ return script !== undefined && RTL_SCRIPTS.has(script) ? 'rtl' : 'ltr';
93
+ }
54
94
  /** The typographic region of a Chinese tag, which decides its typographic
55
95
  * defaults (clreq §1.2: rules follow the region, not the script): CN, SG
56
96
  * and MY are `'mainland'`, TW `'taiwan'`, HK and MO `'hongkong'`; a tag
@@ -104,16 +144,21 @@ export function canonicalLocaleTag(tag) {
104
144
  }
105
145
  }
106
146
  /** The `lang` a renderer declares for a resolved document (the HTML root,
107
- * the canvas context): its language in canonical form (`zh-Hant-TW`),
108
- * from `locale`, else the hyphenation tag. Only Chinese, Japanese and
109
- * Korean documents declare one — there the browser picks regional glyph
110
- * forms from it (Han characters unified in Unicode, punctuation set in the
111
- * corner or the centre of the em box) — so the output of every other
112
- * document is unchanged. */
147
+ * the canvas context): its language in canonical form (`zh-Hant-TW`,
148
+ * `ar-EG`), from `locale`, else the hyphenation tag. Only two kinds of
149
+ * document declare one, so the output of every other document is
150
+ * unchanged:
151
+ * - Chinese, Japanese and Korean: the browser picks regional glyph forms
152
+ * from it (Han characters unified in Unicode, punctuation set in the
153
+ * corner or the centre of the em box);
154
+ * - languages written right to left (Arabic, Persian, Urdu, Hebrew…): the
155
+ * font's language-specific forms (`locl`: the Urdu and Persian digits
156
+ * and letter shapes of a shared Arabic font) and the fallback font
157
+ * follow it, and assistive technology reads the text in its language. */
113
158
  export function renderLangOf(config) {
114
159
  const h = config?.bodyText?.hyphenation;
115
160
  const tag = presentTag(config?.locale) ?? presentTag(h?.tag) ?? presentTag(h?.locale);
116
- return isCjkLanguage(tag) ? canonicalLocaleTag(tag) : undefined;
161
+ return isCjkLanguage(tag) || isRightToLeftLanguage(tag) ? canonicalLocaleTag(tag) : undefined;
117
162
  }
118
163
  /**
119
164
  * The entry of a built-in string table for `tag`, keyed by
@@ -128,7 +173,11 @@ export function stringsFor(table, tag) {
128
173
  /** The document languages with built-in strings, in the order a language
129
174
  * picker lists them: the eight hyphenation languages, then Chinese in
130
175
  * Simplified characters, in Traditional characters (Taiwan) and in
131
- * Traditional characters as set in Hong Kong. */
176
+ * Traditional characters as set in Hong Kong, then Arabic — bare, as set
177
+ * in Egypt and as set in Morocco. The strings are the same in the three
178
+ * Arabic entries; the region decides what a regional default reads from
179
+ * the tag (digits: Arabic-Indic ٠–٩ in the Mashriq, European 0–9 in the
180
+ * Maghreb; month names in dates). */
132
181
  export const DOCUMENT_LANGUAGES = Object.freeze([
133
182
  { tag: 'en-us', name: 'English' },
134
183
  { tag: 'es', name: 'Español' },
@@ -141,6 +190,9 @@ export const DOCUMENT_LANGUAGES = Object.freeze([
141
190
  { tag: 'zh-Hans', name: '中文(简体)' },
142
191
  { tag: 'zh-Hant', name: '中文(繁體)' },
143
192
  { tag: 'zh-Hant-HK', name: '中文(香港)' },
193
+ { tag: 'ar', name: 'العربية' },
194
+ { tag: 'ar-EG', name: 'العربية (مصر)' },
195
+ { tag: 'ar-MA', name: 'العربية (المغرب)' },
144
196
  ].map((l) => Object.freeze(l)));
145
197
  /**
146
198
  * The bundled hyphenation locale for a BCP 47 language tag, or `undefined`
@@ -168,7 +220,8 @@ const warnedTags = new Set();
168
220
  * {@link matchHyphenationLocale}, falling back to `'en-us'` for a language
169
221
  * with no bundled patterns. The fallback is reported once per tag on the
170
222
  * console, since the text is then hyphenated with another language's rules
171
- * (Chinese, Japanese and Korean excepted: they are set without hyphenation);
223
+ * (Chinese, Japanese, Korean and the right-to-left languages excepted: they
224
+ * are set without hyphenation, see {@link isUnhyphenatedLanguage});
172
225
  * `warn: false` skips the report (hyphenation is off, so no text uses the
173
226
  * patterns). A missing or blank tag gives `'en-us'` silently.
174
227
  */
@@ -178,9 +231,9 @@ export function hyphenationLocaleFor(tag, warn = true) {
178
231
  const match = matchHyphenationLocale(tag);
179
232
  if (match)
180
233
  return match;
181
- // Chinese, Japanese and Korean need no patterns: nothing to report. The
182
- // body text resolves hyphenation off for them (see `resolveHyphenation`).
183
- if (isCjkLanguage(tag))
234
+ // Chinese, Japanese, Korean, Arabic, Hebrew… need no patterns: nothing
235
+ // to report (the body text resolves hyphenation off for them).
236
+ if (isUnhyphenatedLanguage(tag))
184
237
  return 'en-us';
185
238
  if (warn && !warnedTags.has(tag)) {
186
239
  warnedTags.add(tag);
@@ -304,4 +357,68 @@ export function matchContentLocale(candidates, wanted) {
304
357
  }
305
358
  return best;
306
359
  }
360
+ // ---------------------------------------------------------------------------
361
+ // Digits: which digit system a document's generated numbers are written in.
362
+ /** The Arabic-speaking Maghreb, where books print European digits (alreq
363
+ * §Numbers): Morocco, Algeria, Tunisia, Libya, Mauritania and Western
364
+ * Sahara. */
365
+ const MAGHREB_REGIONS = new Set(['MA', 'DZ', 'TN', 'LY', 'MR', 'EH']);
366
+ const DIGIT_SYSTEMS = new Set(['latn', 'arab', 'arabext']);
367
+ /** Whether `value` names a digit system (`'latn'`, `'arab'`, `'arabext'`). */
368
+ export function isDigitSystem(value) {
369
+ return typeof value === 'string' && DIGIT_SYSTEMS.has(value);
370
+ }
371
+ /**
372
+ * The digits a book in `tag` prints its page numbers, list and note numbers
373
+ * and counters in (`PostextConfig.numerals: 'auto'`):
374
+ *
375
+ * - Arabic (`ar`): the Arabic-Indic digits (`'arab'`, ٠–٩) without a region
376
+ * or with any region but the Maghreb's, whose books print European digits
377
+ * (`'latn'`: `ar-MA`, `ar-DZ`, `ar-TN`, `ar-LY`, `ar-MR`, `ar-EH`).
378
+ * CLDR's own defaults give `latn` for a bare `ar` and for `ar-AE`; Arabic
379
+ * book publishing in the Mashriq and the Gulf prints ٠–٩, and a book is
380
+ * what this setting is for.
381
+ * - Persian (`fa`), Pashto (`ps`) and the Urdu of India (`ur-IN`): the
382
+ * Extended Arabic-Indic digits (`'arabext'`, ۰–۹). The Urdu of Pakistan
383
+ * (`ur`, `ur-PK`) takes `'latn'`, as CLDR does: Pakistani books print
384
+ * both, and the European digits are the safe default.
385
+ * - Every other language: `'latn'`.
386
+ *
387
+ * A tag that names its digits in a Unicode extension
388
+ * (`ar-MA-u-nu-arab`, `fa-u-nu-latn`) has those when they are one of the
389
+ * three. A missing or invalid tag gives `'latn'`.
390
+ */
391
+ export function defaultNumeralsFor(tag) {
392
+ if (!isTag(tag))
393
+ return 'latn';
394
+ let locale;
395
+ try {
396
+ locale = typeof Intl.Locale === 'function' ? new Intl.Locale(tag.trim().replace(/_/g, '-')) : undefined;
397
+ }
398
+ catch {
399
+ locale = undefined;
400
+ }
401
+ if (isDigitSystem(locale?.numberingSystem))
402
+ return locale.numberingSystem;
403
+ const language = languageOf(tag);
404
+ // The region as written: a bare `ar` is not Egyptian Arabic.
405
+ const region = locale?.region ?? tag.trim().split(/[-_]/).slice(1).find((s) => /^[A-Za-z]{2}$|^\d{3}$/.test(s))?.toUpperCase();
406
+ switch (language) {
407
+ case 'ar':
408
+ return region !== undefined && MAGHREB_REGIONS.has(region) ? 'latn' : 'arab';
409
+ case 'fa':
410
+ case 'ps':
411
+ return 'arabext';
412
+ case 'ur':
413
+ return region === 'IN' ? 'arabext' : 'latn';
414
+ default:
415
+ return 'latn';
416
+ }
417
+ }
418
+ /** The digit system of a `numerals` setting for a document in `tag`: the
419
+ * setting itself when it names one, else (`'auto'`, unset, or a value the
420
+ * engine does not know) the language's ({@link defaultNumeralsFor}). */
421
+ export function resolveNumerals(setting, tag) {
422
+ return isDigitSystem(setting) ? setting : defaultNumeralsFor(tag);
423
+ }
307
424
  //# sourceMappingURL=locale.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"locale.js","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"locale.js","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Right-to-left lines (UAX #9 on the measurer's output, #369).
3
+ *
4
+ * The line breakers work on the logical text and know nothing of
5
+ * direction: a line is a run of the paragraph, and its `segments` stay in
6
+ * logical order (copied text, links, source maps, the hyphen at the end of
7
+ * a line and every other engine rule read them as written). Once a
8
+ * paragraph is broken, {@link applyLineDirections} resolves its embedding
9
+ * levels once (`resolveParagraph`, with the inline `:rtl[…]` / `:ltr[…]`
10
+ * isolates) and, line by line, applies rule L1 to the line's characters,
11
+ * cuts each text segment where its level changes, marks the right-to-left
12
+ * ones (`VDTLineSegment.rtl`, and `level` past 1) and works out the order
13
+ * the renderers advance through the segments in (`VDTLine.order`, rule L2
14
+ * on the segments' levels): the visual order, left to right, whatever the
15
+ * frame; the build turns it around on a mirrored page (#370).
16
+ *
17
+ * A cut at a level change never falls inside a word of a joining script:
18
+ * Arabic letters next to each other have one level, and a cut between a
19
+ * letter and a digit or a Latin letter leaves both sides measured as they
20
+ * are painted. The pieces of a segment share its width in proportion to
21
+ * their own widths, so a line keeps the width it was broken with and no
22
+ * break changes.
23
+ *
24
+ * Only a paragraph that needs it pays for it: one set right to left, or
25
+ * one holding a right-to-left letter or control (`needsBidi`). Every other
26
+ * line is left exactly as it was, with none of these fields.
27
+ */
28
+ import type { VDTLine, VDTLineSegment } from '../vdt';
29
+ import { type BidiParagraph } from '../bidi';
30
+ import { type LineWidthStep } from './types';
31
+ /** Set the base direction a paragraph is measured with when nothing sets
32
+ * its own (`MeasureBlockOptions.direction`): the document's
33
+ * (`resolvedDirection`). The build does, and puts back what it found when
34
+ * it is done; left to right outside a build. */
35
+ export declare function setMeasureDirection(direction: 'ltr' | 'rtl'): void;
36
+ /** See {@link setMeasureDirection}. */
37
+ export declare function getMeasureDirection(): 'ltr' | 'rtl';
38
+ /**
39
+ * Resolve the directions of a paragraph's lines (see the module comment):
40
+ * `par` is the paragraph's levels (`resolveParagraph` on the text the lines
41
+ * were cut from, the spans' texts joined, with its base direction and its
42
+ * inline `:rtl[…]` / `:ltr[…]` isolates); `widthOf` measures a piece of a
43
+ * segment in that segment's font, to share its width. The lines are
44
+ * changed in place.
45
+ */
46
+ export declare function applyLineDirections(lines: VDTLine[], par: BidiParagraph, widthOf: (seg: VDTLineSegment, piece: string) => number): void;
47
+ /**
48
+ * The lines of a paragraph whose direction opposes its frame's: an Arabic
49
+ * quotation in an English book, or an English one in an Arabic book (whose
50
+ * pages are mirrored, #370, so that the flow's right is the sheet's left).
51
+ * Its start side is the frame's right. The breaker set each line's indent
52
+ * on the left (`bbox.x`); the line now fills the span from the block's left
53
+ * edge to its right edge less that indent (`VDTLine.measure`), so a
54
+ * first-line or hanging indent falls on the right, and its line box starts
55
+ * at the span's left edge. Renderers align the line in that span from its
56
+ * start side: a ragged line, or the last line of a justified paragraph,
57
+ * ends flush right (see `VDTLine.measure`). `maxWidthPx` and `restWidths`
58
+ * are the measures the lines were broken at, from the block's left edge.
59
+ */
60
+ export declare function mirrorLineSpans(lines: VDTLine[], maxWidthPx: number, restWidths?: readonly LineWidthStep[]): void;
61
+ /** Move a line along x by `dx`, its {@link VDTLine.measure} with it. The
62
+ * measure is replaced, never changed in place: a cached measurement may
63
+ * share it. */
64
+ export declare function shiftLineX(line: VDTLine, dx: number): void;
65
+ /** A stretch of a paragraph's text in a language the author named on an
66
+ * inline isolate (`:ltr[…]{lang=en}`): `[start, end)` in the joined text. */
67
+ export interface LanguageRange {
68
+ start: number;
69
+ end: number;
70
+ lang: string;
71
+ }
72
+ /**
73
+ * The stretches of a paragraph's spans in a language their isolate names
74
+ * (`InlineSpan.direction.lang`, the innermost isolate that names one), as
75
+ * ranges of the joined text; empty when none does.
76
+ */
77
+ export declare function spanLanguages(spans: readonly {
78
+ text: string;
79
+ direction?: {
80
+ lang?: string;
81
+ outer?: unknown;
82
+ };
83
+ }[]): LanguageRange[];
84
+ /**
85
+ * Stamps `VDTLineSegment.lang` on the segments of a paragraph's lines whose
86
+ * text lies in one of `ranges` (#379, see {@link spanLanguages}): a segment
87
+ * takes the language of its first character read from the paragraph text
88
+ * (`text`). Segments of a cut line are replaced, never changed in place.
89
+ */
90
+ export declare function applySegmentLanguages(lines: VDTLine[], text: string, ranges: readonly LanguageRange[]): void;
91
+ //# sourceMappingURL=bidiLines.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bidiLines.d.ts","sourceRoot":"","sources":["../../src/measure/bidiLines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAA2B,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAEtE,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAI1D;;;iDAGiD;AACjD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAElE;AAED,uCAAuC;AACvC,wBAAgB,mBAAmB,IAAI,KAAK,GAAG,KAAK,CAEnD;AA2DD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EAAE,EAChB,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GACtD,IAAI,CAkFN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,SAAS,aAAa,EAAE,GAAG,IAAI,CAMjH;AAED;;gBAEgB;AAChB,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAG1D;AAED;8EAC8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,EAAE,GAAG,aAAa,EAAE,CAejI;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,IAAI,CAoB5G"}