postext 1.8.6 → 1.9.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 (565) hide show
  1. package/dist/__bench__/cjkChapter.bench.test.d.ts +2 -0
  2. package/dist/__bench__/cjkChapter.bench.test.d.ts.map +1 -0
  3. package/dist/__bench__/cjkChapter.bench.test.js +71 -0
  4. package/dist/__bench__/cjkChapter.bench.test.js.map +1 -0
  5. package/dist/__tests__/bundle.test.js +16 -0
  6. package/dist/__tests__/bundle.test.js.map +1 -1
  7. package/dist/__tests__/canvasDirection.test.d.ts +2 -0
  8. package/dist/__tests__/canvasDirection.test.d.ts.map +1 -0
  9. package/dist/__tests__/canvasDirection.test.js +45 -0
  10. package/dist/__tests__/canvasDirection.test.js.map +1 -0
  11. package/dist/__tests__/chineseLocale.test.d.ts +2 -0
  12. package/dist/__tests__/chineseLocale.test.d.ts.map +1 -0
  13. package/dist/__tests__/chineseLocale.test.js +253 -0
  14. package/dist/__tests__/chineseLocale.test.js.map +1 -0
  15. package/dist/__tests__/chineseNumbering.test.d.ts +2 -0
  16. package/dist/__tests__/chineseNumbering.test.d.ts.map +1 -0
  17. package/dist/__tests__/chineseNumbering.test.js +376 -0
  18. package/dist/__tests__/chineseNumbering.test.js.map +1 -0
  19. package/dist/__tests__/cjk/annotations.test.d.ts +2 -0
  20. package/dist/__tests__/cjk/annotations.test.d.ts.map +1 -0
  21. package/dist/__tests__/cjk/annotations.test.js +483 -0
  22. package/dist/__tests__/cjk/annotations.test.js.map +1 -0
  23. package/dist/__tests__/cjk/annotationsRender.test.d.ts +2 -0
  24. package/dist/__tests__/cjk/annotationsRender.test.d.ts.map +1 -0
  25. package/dist/__tests__/cjk/annotationsRender.test.js +263 -0
  26. package/dist/__tests__/cjk/annotationsRender.test.js.map +1 -0
  27. package/dist/__tests__/cjk/composer.test.d.ts +2 -0
  28. package/dist/__tests__/cjk/composer.test.d.ts.map +1 -0
  29. package/dist/__tests__/cjk/composer.test.js +237 -0
  30. package/dist/__tests__/cjk/composer.test.js.map +1 -0
  31. package/dist/__tests__/cjk/composerEdges.test.d.ts +2 -0
  32. package/dist/__tests__/cjk/composerEdges.test.d.ts.map +1 -0
  33. package/dist/__tests__/cjk/composerEdges.test.js +352 -0
  34. package/dist/__tests__/cjk/composerEdges.test.js.map +1 -0
  35. package/dist/__tests__/cjk/dashRule.test.d.ts +2 -0
  36. package/dist/__tests__/cjk/dashRule.test.d.ts.map +1 -0
  37. package/dist/__tests__/cjk/dashRule.test.js +261 -0
  38. package/dist/__tests__/cjk/dashRule.test.js.map +1 -0
  39. package/dist/__tests__/cjk/fuzz.test.d.ts +2 -0
  40. package/dist/__tests__/cjk/fuzz.test.d.ts.map +1 -0
  41. package/dist/__tests__/cjk/fuzz.test.js +102 -0
  42. package/dist/__tests__/cjk/fuzz.test.js.map +1 -0
  43. package/dist/__tests__/cjk/grid.test.d.ts +2 -0
  44. package/dist/__tests__/cjk/grid.test.d.ts.map +1 -0
  45. package/dist/__tests__/cjk/grid.test.js +261 -0
  46. package/dist/__tests__/cjk/grid.test.js.map +1 -0
  47. package/dist/__tests__/cjk/justifyRender.test.d.ts +2 -0
  48. package/dist/__tests__/cjk/justifyRender.test.d.ts.map +1 -0
  49. package/dist/__tests__/cjk/justifyRender.test.js +139 -0
  50. package/dist/__tests__/cjk/justifyRender.test.js.map +1 -0
  51. package/dist/__tests__/cjk/latinFastPath.test.d.ts +2 -0
  52. package/dist/__tests__/cjk/latinFastPath.test.d.ts.map +1 -0
  53. package/dist/__tests__/cjk/latinFastPath.test.js +208 -0
  54. package/dist/__tests__/cjk/latinFastPath.test.js.map +1 -0
  55. package/dist/__tests__/cjk/markCutsLatin.test.d.ts +2 -0
  56. package/dist/__tests__/cjk/markCutsLatin.test.d.ts.map +1 -0
  57. package/dist/__tests__/cjk/markCutsLatin.test.js +69 -0
  58. package/dist/__tests__/cjk/markCutsLatin.test.js.map +1 -0
  59. package/dist/__tests__/cjk/markRuns.test.d.ts +2 -0
  60. package/dist/__tests__/cjk/markRuns.test.d.ts.map +1 -0
  61. package/dist/__tests__/cjk/markRuns.test.js +347 -0
  62. package/dist/__tests__/cjk/markRuns.test.js.map +1 -0
  63. package/dist/__tests__/cjk/punctuation.test.d.ts +2 -0
  64. package/dist/__tests__/cjk/punctuation.test.d.ts.map +1 -0
  65. package/dist/__tests__/cjk/punctuation.test.js +440 -0
  66. package/dist/__tests__/cjk/punctuation.test.js.map +1 -0
  67. package/dist/__tests__/cjk/punctuationRender.test.d.ts +2 -0
  68. package/dist/__tests__/cjk/punctuationRender.test.d.ts.map +1 -0
  69. package/dist/__tests__/cjk/punctuationRender.test.js +135 -0
  70. package/dist/__tests__/cjk/punctuationRender.test.js.map +1 -0
  71. package/dist/__tests__/cjk/rubyDescenders.test.d.ts +2 -0
  72. package/dist/__tests__/cjk/rubyDescenders.test.d.ts.map +1 -0
  73. package/dist/__tests__/cjk/rubyDescenders.test.js +77 -0
  74. package/dist/__tests__/cjk/rubyDescenders.test.js.map +1 -0
  75. package/dist/__tests__/cjk/runt.test.d.ts +2 -0
  76. package/dist/__tests__/cjk/runt.test.d.ts.map +1 -0
  77. package/dist/__tests__/cjk/runt.test.js +103 -0
  78. package/dist/__tests__/cjk/runt.test.js.map +1 -0
  79. package/dist/__tests__/cjk/sharedMarks.test.d.ts +2 -0
  80. package/dist/__tests__/cjk/sharedMarks.test.d.ts.map +1 -0
  81. package/dist/__tests__/cjk/sharedMarks.test.js +347 -0
  82. package/dist/__tests__/cjk/sharedMarks.test.js.map +1 -0
  83. package/dist/__tests__/cjk/uprightDots.test.d.ts +2 -0
  84. package/dist/__tests__/cjk/uprightDots.test.d.ts.map +1 -0
  85. package/dist/__tests__/cjk/uprightDots.test.js +47 -0
  86. package/dist/__tests__/cjk/uprightDots.test.js.map +1 -0
  87. package/dist/__tests__/cjk/wordJoiner.test.d.ts +2 -0
  88. package/dist/__tests__/cjk/wordJoiner.test.d.ts.map +1 -0
  89. package/dist/__tests__/cjk/wordJoiner.test.js +47 -0
  90. package/dist/__tests__/cjk/wordJoiner.test.js.map +1 -0
  91. package/dist/__tests__/cjk/zhuyinTones.test.d.ts +2 -0
  92. package/dist/__tests__/cjk/zhuyinTones.test.d.ts.map +1 -0
  93. package/dist/__tests__/cjk/zhuyinTones.test.js +72 -0
  94. package/dist/__tests__/cjk/zhuyinTones.test.js.map +1 -0
  95. package/dist/__tests__/contentLocale.test.d.ts +2 -0
  96. package/dist/__tests__/contentLocale.test.d.ts.map +1 -0
  97. package/dist/__tests__/contentLocale.test.js +167 -0
  98. package/dist/__tests__/contentLocale.test.js.map +1 -0
  99. package/dist/__tests__/defaults/cjk.test.d.ts +2 -0
  100. package/dist/__tests__/defaults/cjk.test.d.ts.map +1 -0
  101. package/dist/__tests__/defaults/cjk.test.js +70 -0
  102. package/dist/__tests__/defaults/cjk.test.js.map +1 -0
  103. package/dist/__tests__/design/designTextRender.test.js +31 -0
  104. package/dist/__tests__/design/designTextRender.test.js.map +1 -1
  105. package/dist/__tests__/design/imageAltText.test.d.ts +2 -0
  106. package/dist/__tests__/design/imageAltText.test.d.ts.map +1 -0
  107. package/dist/__tests__/design/imageAltText.test.js +126 -0
  108. package/dist/__tests__/design/imageAltText.test.js.map +1 -0
  109. package/dist/__tests__/exports.test.js +61 -0
  110. package/dist/__tests__/exports.test.js.map +1 -1
  111. package/dist/__tests__/headingLetterSpacing.test.js +1 -1
  112. package/dist/__tests__/headingLetterSpacing.test.js.map +1 -1
  113. package/dist/__tests__/indexChinese.test.d.ts +2 -0
  114. package/dist/__tests__/indexChinese.test.d.ts.map +1 -0
  115. package/dist/__tests__/indexChinese.test.js +190 -0
  116. package/dist/__tests__/indexChinese.test.js.map +1 -0
  117. package/dist/__tests__/parse/annotations.test.d.ts +2 -0
  118. package/dist/__tests__/parse/annotations.test.d.ts.map +1 -0
  119. package/dist/__tests__/parse/annotations.test.js +175 -0
  120. package/dist/__tests__/parse/annotations.test.js.map +1 -0
  121. package/dist/__tests__/parse/attrQuoting.test.js +10 -8
  122. package/dist/__tests__/parse/attrQuoting.test.js.map +1 -1
  123. package/dist/__tests__/parse/chineseText.test.d.ts +2 -0
  124. package/dist/__tests__/parse/chineseText.test.d.ts.map +1 -0
  125. package/dist/__tests__/parse/chineseText.test.js +352 -0
  126. package/dist/__tests__/parse/chineseText.test.js.map +1 -0
  127. package/dist/__tests__/parts.test.js +25 -0
  128. package/dist/__tests__/parts.test.js.map +1 -1
  129. package/dist/__tests__/pipeline/colonListRoom.test.js +20 -0
  130. package/dist/__tests__/pipeline/colonListRoom.test.js.map +1 -1
  131. package/dist/__tests__/presets/hongloumeng.test.d.ts +2 -0
  132. package/dist/__tests__/presets/hongloumeng.test.d.ts.map +1 -0
  133. package/dist/__tests__/presets/hongloumeng.test.js +484 -0
  134. package/dist/__tests__/presets/hongloumeng.test.js.map +1 -0
  135. package/dist/__tests__/vertical/canvasPaint.test.d.ts +2 -0
  136. package/dist/__tests__/vertical/canvasPaint.test.d.ts.map +1 -0
  137. package/dist/__tests__/vertical/canvasPaint.test.js +229 -0
  138. package/dist/__tests__/vertical/canvasPaint.test.js.map +1 -0
  139. package/dist/__tests__/vertical/compositionPaint.test.d.ts +2 -0
  140. package/dist/__tests__/vertical/compositionPaint.test.d.ts.map +1 -0
  141. package/dist/__tests__/vertical/compositionPaint.test.js +538 -0
  142. package/dist/__tests__/vertical/compositionPaint.test.js.map +1 -0
  143. package/dist/__tests__/vertical/geometry.test.d.ts +2 -0
  144. package/dist/__tests__/vertical/geometry.test.d.ts.map +1 -0
  145. package/dist/__tests__/vertical/geometry.test.js +276 -0
  146. package/dist/__tests__/vertical/geometry.test.js.map +1 -0
  147. package/dist/__tests__/vertical/htmlSmoke.test.d.ts +2 -0
  148. package/dist/__tests__/vertical/htmlSmoke.test.d.ts.map +1 -0
  149. package/dist/__tests__/vertical/htmlSmoke.test.js +25 -0
  150. package/dist/__tests__/vertical/htmlSmoke.test.js.map +1 -0
  151. package/dist/__tests__/vertical/htmlTurnedCells.test.d.ts +2 -0
  152. package/dist/__tests__/vertical/htmlTurnedCells.test.d.ts.map +1 -0
  153. package/dist/__tests__/vertical/htmlTurnedCells.test.js +99 -0
  154. package/dist/__tests__/vertical/htmlTurnedCells.test.js.map +1 -0
  155. package/dist/__tests__/vertical/htmlVertical.test.d.ts +2 -0
  156. package/dist/__tests__/vertical/htmlVertical.test.d.ts.map +1 -0
  157. package/dist/__tests__/vertical/htmlVertical.test.js +145 -0
  158. package/dist/__tests__/vertical/htmlVertical.test.js.map +1 -0
  159. package/dist/__tests__/vertical/lineAxis.test.d.ts +2 -0
  160. package/dist/__tests__/vertical/lineAxis.test.d.ts.map +1 -0
  161. package/dist/__tests__/vertical/lineAxis.test.js +128 -0
  162. package/dist/__tests__/vertical/lineAxis.test.js.map +1 -0
  163. package/dist/__tests__/vertical/measurePaint.test.d.ts +2 -0
  164. package/dist/__tests__/vertical/measurePaint.test.d.ts.map +1 -0
  165. package/dist/__tests__/vertical/measurePaint.test.js +259 -0
  166. package/dist/__tests__/vertical/measurePaint.test.js.map +1 -0
  167. package/dist/__tests__/vertical/orientation.test.d.ts +2 -0
  168. package/dist/__tests__/vertical/orientation.test.d.ts.map +1 -0
  169. package/dist/__tests__/vertical/orientation.test.js +153 -0
  170. package/dist/__tests__/vertical/orientation.test.js.map +1 -0
  171. package/dist/__tests__/vertical/stub.d.ts +8 -0
  172. package/dist/__tests__/vertical/stub.d.ts.map +1 -0
  173. package/dist/__tests__/vertical/stub.js +37 -0
  174. package/dist/__tests__/vertical/stub.js.map +1 -0
  175. package/dist/__tests__/vertical/tateChuYoko.test.d.ts +2 -0
  176. package/dist/__tests__/vertical/tateChuYoko.test.d.ts.map +1 -0
  177. package/dist/__tests__/vertical/tateChuYoko.test.js +270 -0
  178. package/dist/__tests__/vertical/tateChuYoko.test.js.map +1 -0
  179. package/dist/__tests__/vertical/uprightResources.test.d.ts +2 -0
  180. package/dist/__tests__/vertical/uprightResources.test.d.ts.map +1 -0
  181. package/dist/__tests__/vertical/uprightResources.test.js +182 -0
  182. package/dist/__tests__/vertical/uprightResources.test.js.map +1 -0
  183. package/dist/__tests__/vertical/verticalDesignText.test.d.ts +2 -0
  184. package/dist/__tests__/vertical/verticalDesignText.test.d.ts.map +1 -0
  185. package/dist/__tests__/vertical/verticalDesignText.test.js +190 -0
  186. package/dist/__tests__/vertical/verticalDesignText.test.js.map +1 -0
  187. package/dist/__tests__/vertical/verticalSpans.d.ts +25 -0
  188. package/dist/__tests__/vertical/verticalSpans.d.ts.map +1 -0
  189. package/dist/__tests__/vertical/verticalSpans.js +39 -0
  190. package/dist/__tests__/vertical/verticalSpans.js.map +1 -0
  191. package/dist/__tests__/vertical/verticalTwins.test.d.ts +2 -0
  192. package/dist/__tests__/vertical/verticalTwins.test.d.ts.map +1 -0
  193. package/dist/__tests__/vertical/verticalTwins.test.js +71 -0
  194. package/dist/__tests__/vertical/verticalTwins.test.js.map +1 -0
  195. package/dist/bundle/adapters.d.ts +14 -5
  196. package/dist/bundle/adapters.d.ts.map +1 -1
  197. package/dist/bundle/adapters.js +4 -3
  198. package/dist/bundle/adapters.js.map +1 -1
  199. package/dist/bundle/codec.d.ts.map +1 -1
  200. package/dist/bundle/codec.js +27 -4
  201. package/dist/bundle/codec.js.map +1 -1
  202. package/dist/bundle/index.d.ts +1 -1
  203. package/dist/bundle/index.d.ts.map +1 -1
  204. package/dist/bundle/manifest.d.ts +6 -4
  205. package/dist/bundle/manifest.d.ts.map +1 -1
  206. package/dist/bundle/manifest.js +31 -32
  207. package/dist/bundle/manifest.js.map +1 -1
  208. package/dist/bundle/types.d.ts +7 -2
  209. package/dist/bundle/types.d.ts.map +1 -1
  210. package/dist/canvas-backend/annotations.d.ts +31 -0
  211. package/dist/canvas-backend/annotations.d.ts.map +1 -0
  212. package/dist/canvas-backend/annotations.js +120 -0
  213. package/dist/canvas-backend/annotations.js.map +1 -0
  214. package/dist/canvas-backend/blockRender.d.ts.map +1 -1
  215. package/dist/canvas-backend/blockRender.js +195 -15
  216. package/dist/canvas-backend/blockRender.js.map +1 -1
  217. package/dist/canvas-backend/decorations.d.ts +5 -0
  218. package/dist/canvas-backend/decorations.d.ts.map +1 -1
  219. package/dist/canvas-backend/decorations.js +27 -0
  220. package/dist/canvas-backend/decorations.js.map +1 -1
  221. package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
  222. package/dist/canvas-backend/headerFooter.js +32 -16
  223. package/dist/canvas-backend/headerFooter.js.map +1 -1
  224. package/dist/canvas-backend/index.d.ts +2 -0
  225. package/dist/canvas-backend/index.d.ts.map +1 -1
  226. package/dist/canvas-backend/index.js +62 -2
  227. package/dist/canvas-backend/index.js.map +1 -1
  228. package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
  229. package/dist/canvas-backend/renderResourceBlock.js +42 -5
  230. package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
  231. package/dist/canvas-backend/segmentText.d.ts +23 -0
  232. package/dist/canvas-backend/segmentText.d.ts.map +1 -0
  233. package/dist/canvas-backend/segmentText.js +41 -0
  234. package/dist/canvas-backend/segmentText.js.map +1 -0
  235. package/dist/canvas-backend/verticalText.d.ts +113 -0
  236. package/dist/canvas-backend/verticalText.d.ts.map +1 -0
  237. package/dist/canvas-backend/verticalText.js +437 -0
  238. package/dist/canvas-backend/verticalText.js.map +1 -0
  239. package/dist/chineseNumerals.d.ts +39 -0
  240. package/dist/chineseNumerals.d.ts.map +1 -0
  241. package/dist/chineseNumerals.js +192 -0
  242. package/dist/chineseNumerals.js.map +1 -0
  243. package/dist/cjkMarks.d.ts +61 -0
  244. package/dist/cjkMarks.d.ts.map +1 -0
  245. package/dist/cjkMarks.js +441 -0
  246. package/dist/cjkMarks.js.map +1 -0
  247. package/dist/columnClip.d.ts +13 -4
  248. package/dist/columnClip.d.ts.map +1 -1
  249. package/dist/columnClip.js +33 -5
  250. package/dist/columnClip.js.map +1 -1
  251. package/dist/configWarnings.d.ts.map +1 -1
  252. package/dist/configWarnings.js +18 -3
  253. package/dist/configWarnings.js.map +1 -1
  254. package/dist/defaults/bodyText.d.ts +4 -1
  255. package/dist/defaults/bodyText.d.ts.map +1 -1
  256. package/dist/defaults/bodyText.js +27 -5
  257. package/dist/defaults/bodyText.js.map +1 -1
  258. package/dist/defaults/calloutStyles.js +1 -1
  259. package/dist/defaults/calloutStyles.js.map +1 -1
  260. package/dist/defaults/captionStyle.d.ts.map +1 -1
  261. package/dist/defaults/captionStyle.js +14 -0
  262. package/dist/defaults/captionStyle.js.map +1 -1
  263. package/dist/defaults/cjk.d.ts +33 -0
  264. package/dist/defaults/cjk.d.ts.map +1 -0
  265. package/dist/defaults/cjk.js +234 -0
  266. package/dist/defaults/cjk.js.map +1 -0
  267. package/dist/defaults/headerFooter.d.ts.map +1 -1
  268. package/dist/defaults/headerFooter.js +2 -0
  269. package/dist/defaults/headerFooter.js.map +1 -1
  270. package/dist/defaults/headingStyles.d.ts.map +1 -1
  271. package/dist/defaults/headingStyles.js +4 -0
  272. package/dist/defaults/headingStyles.js.map +1 -1
  273. package/dist/defaults/headings.d.ts.map +1 -1
  274. package/dist/defaults/headings.js +13 -6
  275. package/dist/defaults/headings.js.map +1 -1
  276. package/dist/defaults/index.d.ts +1 -0
  277. package/dist/defaults/index.d.ts.map +1 -1
  278. package/dist/defaults/index.js +10 -1
  279. package/dist/defaults/index.js.map +1 -1
  280. package/dist/defaults/indexConfig.d.ts +2 -1
  281. package/dist/defaults/indexConfig.d.ts.map +1 -1
  282. package/dist/defaults/indexConfig.js +5 -0
  283. package/dist/defaults/indexConfig.js.map +1 -1
  284. package/dist/defaults/layout.d.ts.map +1 -1
  285. package/dist/defaults/layout.js +7 -0
  286. package/dist/defaults/layout.js.map +1 -1
  287. package/dist/defaults/orderedLists.d.ts +5 -2
  288. package/dist/defaults/orderedLists.d.ts.map +1 -1
  289. package/dist/defaults/orderedLists.js +20 -5
  290. package/dist/defaults/orderedLists.js.map +1 -1
  291. package/dist/defaults/page.d.ts +8 -2
  292. package/dist/defaults/page.d.ts.map +1 -1
  293. package/dist/defaults/page.js +24 -7
  294. package/dist/defaults/page.js.map +1 -1
  295. package/dist/defaults/resourceTypes.d.ts +3 -3
  296. package/dist/defaults/resourceTypes.d.ts.map +1 -1
  297. package/dist/defaults/resourceTypes.js +23 -9
  298. package/dist/defaults/resourceTypes.js.map +1 -1
  299. package/dist/defaults/tableStyle.d.ts.map +1 -1
  300. package/dist/defaults/tableStyle.js +8 -5
  301. package/dist/defaults/tableStyle.js.map +1 -1
  302. package/dist/design/layout.d.ts +33 -0
  303. package/dist/design/layout.d.ts.map +1 -1
  304. package/dist/design/layout.js +124 -18
  305. package/dist/design/layout.js.map +1 -1
  306. package/dist/design/placeholders.d.ts.map +1 -1
  307. package/dist/design/placeholders.js +5 -1
  308. package/dist/design/placeholders.js.map +1 -1
  309. package/dist/design/richText.d.ts +24 -4
  310. package/dist/design/richText.d.ts.map +1 -1
  311. package/dist/design/richText.js +77 -16
  312. package/dist/design/richText.js.map +1 -1
  313. package/dist/html-backend.d.ts.map +1 -1
  314. package/dist/html-backend.js +635 -25
  315. package/dist/html-backend.js.map +1 -1
  316. package/dist/htmlAnnotations.d.ts +29 -0
  317. package/dist/htmlAnnotations.d.ts.map +1 -0
  318. package/dist/htmlAnnotations.js +86 -0
  319. package/dist/htmlAnnotations.js.map +1 -0
  320. package/dist/hyphenate.js +2 -1
  321. package/dist/hyphenate.js.map +1 -1
  322. package/dist/index.d.ts +28 -14
  323. package/dist/index.d.ts.map +1 -1
  324. package/dist/index.js +16 -8
  325. package/dist/index.js.map +1 -1
  326. package/dist/knuthPlass/pretextAdapter.d.ts +4 -1
  327. package/dist/knuthPlass/pretextAdapter.d.ts.map +1 -1
  328. package/dist/knuthPlass/pretextAdapter.js +9 -5
  329. package/dist/knuthPlass/pretextAdapter.js.map +1 -1
  330. package/dist/knuthPlass/richAdapter.d.ts +15 -2
  331. package/dist/knuthPlass/richAdapter.d.ts.map +1 -1
  332. package/dist/knuthPlass/richAdapter.js +16 -6
  333. package/dist/knuthPlass/richAdapter.js.map +1 -1
  334. package/dist/knuthPlass/tracking.d.ts +1 -1
  335. package/dist/knuthPlass/tracking.d.ts.map +1 -1
  336. package/dist/knuthPlass/tracking.js +4 -3
  337. package/dist/knuthPlass/tracking.js.map +1 -1
  338. package/dist/knuthPlass/types.d.ts +3 -0
  339. package/dist/knuthPlass/types.d.ts.map +1 -1
  340. package/dist/lineInk.d.ts +13 -0
  341. package/dist/lineInk.d.ts.map +1 -1
  342. package/dist/lineInk.js +28 -1
  343. package/dist/lineInk.js.map +1 -1
  344. package/dist/locale.d.ts +91 -3
  345. package/dist/locale.d.ts.map +1 -1
  346. package/dist/locale.js +245 -1
  347. package/dist/locale.js.map +1 -1
  348. package/dist/looseLines.d.ts +11 -1
  349. package/dist/looseLines.d.ts.map +1 -1
  350. package/dist/looseLines.js +26 -1
  351. package/dist/looseLines.js.map +1 -1
  352. package/dist/measure/cache.d.ts.map +1 -1
  353. package/dist/measure/cache.js +51 -3
  354. package/dist/measure/cache.js.map +1 -1
  355. package/dist/measure/canvas.d.ts +25 -0
  356. package/dist/measure/canvas.d.ts.map +1 -1
  357. package/dist/measure/canvas.js +90 -1
  358. package/dist/measure/canvas.js.map +1 -1
  359. package/dist/measure/cjk.d.ts +8 -13
  360. package/dist/measure/cjk.d.ts.map +1 -1
  361. package/dist/measure/cjk.js +29 -53
  362. package/dist/measure/cjk.js.map +1 -1
  363. package/dist/measure/cjkAnnotate.d.ts +96 -0
  364. package/dist/measure/cjkAnnotate.d.ts.map +1 -0
  365. package/dist/measure/cjkAnnotate.js +237 -0
  366. package/dist/measure/cjkAnnotate.js.map +1 -0
  367. package/dist/measure/cjkClasses.d.ts +133 -0
  368. package/dist/measure/cjkClasses.d.ts.map +1 -0
  369. package/dist/measure/cjkClasses.js +273 -0
  370. package/dist/measure/cjkClasses.js.map +1 -0
  371. package/dist/measure/cjkCompose.d.ts +86 -0
  372. package/dist/measure/cjkCompose.d.ts.map +1 -0
  373. package/dist/measure/cjkCompose.js +2022 -0
  374. package/dist/measure/cjkCompose.js.map +1 -0
  375. package/dist/measure/cjkPunctuation.d.ts +248 -0
  376. package/dist/measure/cjkPunctuation.d.ts.map +1 -0
  377. package/dist/measure/cjkPunctuation.js +492 -0
  378. package/dist/measure/cjkPunctuation.js.map +1 -0
  379. package/dist/measure/graphemes.d.ts +13 -0
  380. package/dist/measure/graphemes.d.ts.map +1 -0
  381. package/dist/measure/graphemes.js +38 -0
  382. package/dist/measure/graphemes.js.map +1 -0
  383. package/dist/measure/index.d.ts +3 -0
  384. package/dist/measure/index.d.ts.map +1 -1
  385. package/dist/measure/index.js +2 -0
  386. package/dist/measure/index.js.map +1 -1
  387. package/dist/measure/links.d.ts +6 -2
  388. package/dist/measure/links.d.ts.map +1 -1
  389. package/dist/measure/links.js +15 -5
  390. package/dist/measure/links.js.map +1 -1
  391. package/dist/measure/markCuts.d.ts +37 -0
  392. package/dist/measure/markCuts.d.ts.map +1 -0
  393. package/dist/measure/markCuts.js +77 -0
  394. package/dist/measure/markCuts.js.map +1 -0
  395. package/dist/measure/plain.d.ts.map +1 -1
  396. package/dist/measure/plain.js +33 -11
  397. package/dist/measure/plain.js.map +1 -1
  398. package/dist/measure/rich.d.ts +88 -1
  399. package/dist/measure/rich.d.ts.map +1 -1
  400. package/dist/measure/rich.js +233 -111
  401. package/dist/measure/rich.js.map +1 -1
  402. package/dist/measure/rubyLift.d.ts +11 -0
  403. package/dist/measure/rubyLift.d.ts.map +1 -0
  404. package/dist/measure/rubyLift.js +57 -0
  405. package/dist/measure/rubyLift.js.map +1 -0
  406. package/dist/measure/spaces.d.ts +12 -2
  407. package/dist/measure/spaces.d.ts.map +1 -1
  408. package/dist/measure/spaces.js +21 -7
  409. package/dist/measure/spaces.js.map +1 -1
  410. package/dist/measure/types.d.ts +20 -1
  411. package/dist/measure/types.d.ts.map +1 -1
  412. package/dist/measure/types.js.map +1 -1
  413. package/dist/measure/vertical.d.ts +104 -0
  414. package/dist/measure/vertical.d.ts.map +1 -0
  415. package/dist/measure/vertical.js +184 -0
  416. package/dist/measure/vertical.js.map +1 -0
  417. package/dist/numberWords.d.ts +3 -10
  418. package/dist/numberWords.d.ts.map +1 -1
  419. package/dist/numberWords.js +21 -9
  420. package/dist/numberWords.js.map +1 -1
  421. package/dist/numbering.d.ts +23 -5
  422. package/dist/numbering.d.ts.map +1 -1
  423. package/dist/numbering.js +99 -14
  424. package/dist/numbering.js.map +1 -1
  425. package/dist/parse/annotations.d.ts +101 -0
  426. package/dist/parse/annotations.d.ts.map +1 -0
  427. package/dist/parse/annotations.js +556 -0
  428. package/dist/parse/annotations.js.map +1 -0
  429. package/dist/parse/attrs.d.ts +48 -1
  430. package/dist/parse/attrs.d.ts.map +1 -1
  431. package/dist/parse/attrs.js +121 -8
  432. package/dist/parse/attrs.js.map +1 -1
  433. package/dist/parse/blockParser.d.ts.map +1 -1
  434. package/dist/parse/blockParser.js +50 -24
  435. package/dist/parse/blockParser.js.map +1 -1
  436. package/dist/parse/index.d.ts +3 -1
  437. package/dist/parse/index.d.ts.map +1 -1
  438. package/dist/parse/index.js +1 -0
  439. package/dist/parse/index.js.map +1 -1
  440. package/dist/parse/injectSpans.d.ts +3 -1
  441. package/dist/parse/injectSpans.d.ts.map +1 -1
  442. package/dist/parse/injectSpans.js +29 -8
  443. package/dist/parse/injectSpans.js.map +1 -1
  444. package/dist/parse/inlineFormatting.d.ts +38 -6
  445. package/dist/parse/inlineFormatting.d.ts.map +1 -1
  446. package/dist/parse/inlineFormatting.js +139 -26
  447. package/dist/parse/inlineFormatting.js.map +1 -1
  448. package/dist/parse/inlineSnippet.d.ts +2 -1
  449. package/dist/parse/inlineSnippet.d.ts.map +1 -1
  450. package/dist/parse/inlineSnippet.js +6 -2
  451. package/dist/parse/inlineSnippet.js.map +1 -1
  452. package/dist/parse/orientationMarks.d.ts +49 -0
  453. package/dist/parse/orientationMarks.d.ts.map +1 -0
  454. package/dist/parse/orientationMarks.js +138 -0
  455. package/dist/parse/orientationMarks.js.map +1 -0
  456. package/dist/parse/softBreaks.d.ts +56 -0
  457. package/dist/parse/softBreaks.d.ts.map +1 -0
  458. package/dist/parse/softBreaks.js +271 -0
  459. package/dist/parse/softBreaks.js.map +1 -0
  460. package/dist/parse/sourceMapping.d.ts.map +1 -1
  461. package/dist/parse/sourceMapping.js +41 -0
  462. package/dist/parse/sourceMapping.js.map +1 -1
  463. package/dist/parse/types.d.ts +84 -0
  464. package/dist/parse/types.d.ts.map +1 -1
  465. package/dist/pipeline/annotations.d.ts +56 -0
  466. package/dist/pipeline/annotations.d.ts.map +1 -0
  467. package/dist/pipeline/annotations.js +181 -0
  468. package/dist/pipeline/annotations.js.map +1 -0
  469. package/dist/pipeline/build.d.ts.map +1 -1
  470. package/dist/pipeline/build.js +158 -47
  471. package/dist/pipeline/build.js.map +1 -1
  472. package/dist/pipeline/buildBlockKind.d.ts +3 -0
  473. package/dist/pipeline/buildBlockKind.d.ts.map +1 -1
  474. package/dist/pipeline/buildBlockKind.js +5 -3
  475. package/dist/pipeline/buildBlockKind.js.map +1 -1
  476. package/dist/pipeline/buildHelpers.d.ts +36 -6
  477. package/dist/pipeline/buildHelpers.d.ts.map +1 -1
  478. package/dist/pipeline/buildHelpers.js +55 -8
  479. package/dist/pipeline/buildHelpers.js.map +1 -1
  480. package/dist/pipeline/buildMeasurement.d.ts +4 -0
  481. package/dist/pipeline/buildMeasurement.d.ts.map +1 -1
  482. package/dist/pipeline/buildMeasurement.js +3 -1
  483. package/dist/pipeline/buildMeasurement.js.map +1 -1
  484. package/dist/pipeline/calloutLayout.d.ts.map +1 -1
  485. package/dist/pipeline/calloutLayout.js +25 -11
  486. package/dist/pipeline/calloutLayout.js.map +1 -1
  487. package/dist/pipeline/cjkGrid.d.ts +133 -0
  488. package/dist/pipeline/cjkGrid.d.ts.map +1 -0
  489. package/dist/pipeline/cjkGrid.js +191 -0
  490. package/dist/pipeline/cjkGrid.js.map +1 -0
  491. package/dist/pipeline/config.d.ts +13 -9
  492. package/dist/pipeline/config.d.ts.map +1 -1
  493. package/dist/pipeline/config.js +43 -18
  494. package/dist/pipeline/config.js.map +1 -1
  495. package/dist/pipeline/contentWarnings.d.ts +10 -0
  496. package/dist/pipeline/contentWarnings.d.ts.map +1 -1
  497. package/dist/pipeline/contentWarnings.js +174 -2
  498. package/dist/pipeline/contentWarnings.js.map +1 -1
  499. package/dist/pipeline/floatPlacement.d.ts +9 -3
  500. package/dist/pipeline/floatPlacement.d.ts.map +1 -1
  501. package/dist/pipeline/floatPlacement.js +17 -6
  502. package/dist/pipeline/floatPlacement.js.map +1 -1
  503. package/dist/pipeline/headerFooter.d.ts +5 -2
  504. package/dist/pipeline/headerFooter.d.ts.map +1 -1
  505. package/dist/pipeline/headerFooter.js +123 -28
  506. package/dist/pipeline/headerFooter.js.map +1 -1
  507. package/dist/pipeline/headingDesignCuts.d.ts.map +1 -1
  508. package/dist/pipeline/headingDesignCuts.js +3 -1
  509. package/dist/pipeline/headingDesignCuts.js.map +1 -1
  510. package/dist/pipeline/headingStyles.d.ts +9 -3
  511. package/dist/pipeline/headingStyles.d.ts.map +1 -1
  512. package/dist/pipeline/headingStyles.js +23 -5
  513. package/dist/pipeline/headingStyles.js.map +1 -1
  514. package/dist/pipeline/indexDirective.d.ts.map +1 -1
  515. package/dist/pipeline/indexDirective.js +64 -20
  516. package/dist/pipeline/indexDirective.js.map +1 -1
  517. package/dist/pipeline/indexGroups.d.ts +55 -0
  518. package/dist/pipeline/indexGroups.d.ts.map +1 -0
  519. package/dist/pipeline/indexGroups.js +151 -0
  520. package/dist/pipeline/indexGroups.js.map +1 -0
  521. package/dist/pipeline/lists.d.ts +17 -0
  522. package/dist/pipeline/lists.d.ts.map +1 -1
  523. package/dist/pipeline/lists.js +43 -51
  524. package/dist/pipeline/lists.js.map +1 -1
  525. package/dist/pipeline/measureContentBlock.d.ts +3 -0
  526. package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
  527. package/dist/pipeline/measureContentBlock.js +31 -4
  528. package/dist/pipeline/measureContentBlock.js.map +1 -1
  529. package/dist/pipeline/outline.d.ts.map +1 -1
  530. package/dist/pipeline/outline.js +13 -8
  531. package/dist/pipeline/outline.js.map +1 -1
  532. package/dist/pipeline/parts.d.ts +6 -3
  533. package/dist/pipeline/parts.d.ts.map +1 -1
  534. package/dist/pipeline/parts.js +28 -5
  535. package/dist/pipeline/parts.js.map +1 -1
  536. package/dist/pipeline/placeholders.d.ts +11 -0
  537. package/dist/pipeline/placeholders.d.ts.map +1 -1
  538. package/dist/pipeline/placeholders.js +48 -18
  539. package/dist/pipeline/placeholders.js.map +1 -1
  540. package/dist/pipeline/placement.d.ts +10 -6
  541. package/dist/pipeline/placement.d.ts.map +1 -1
  542. package/dist/pipeline/placement.js +33 -16
  543. package/dist/pipeline/placement.js.map +1 -1
  544. package/dist/pipeline/resourceLayout.d.ts +18 -1
  545. package/dist/pipeline/resourceLayout.d.ts.map +1 -1
  546. package/dist/pipeline/resourceLayout.js +109 -21
  547. package/dist/pipeline/resourceLayout.js.map +1 -1
  548. package/dist/pipeline/toc.d.ts.map +1 -1
  549. package/dist/pipeline/toc.js +6 -5
  550. package/dist/pipeline/toc.js.map +1 -1
  551. package/dist/pipeline/verticalMetrics.d.ts +14 -0
  552. package/dist/pipeline/verticalMetrics.d.ts.map +1 -0
  553. package/dist/pipeline/verticalMetrics.js +154 -0
  554. package/dist/pipeline/verticalMetrics.js.map +1 -0
  555. package/dist/types.d.ts +344 -13
  556. package/dist/types.d.ts.map +1 -1
  557. package/dist/vdt.d.ts +396 -6
  558. package/dist/vdt.d.ts.map +1 -1
  559. package/dist/vdt.js +49 -0
  560. package/dist/vdt.js.map +1 -1
  561. package/dist/writingMode.d.ts +156 -0
  562. package/dist/writingMode.d.ts.map +1 -0
  563. package/dist/writingMode.js +291 -0
  564. package/dist/writingMode.js.map +1 -0
  565. package/package.json +1 -1
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Measurement in vertical text (`layout.writingMode: 'vertical-rl'`).
3
+ *
4
+ * A vertical line is measured as a horizontal one in the turned flow frame
5
+ * (see `VDTPage.flow`), cut into the runs the renderers paint
6
+ * (`verticalRuns`): a Latin word or number set sideways keeps its
7
+ * horizontal advance, and every character that stands in a cell of its own
8
+ * (Han, Chinese punctuation, dashes, ellipses, and the symbols Unicode sets
9
+ * upright — × © ± ℃ ① —, inside a Latin word or number too) advances its
10
+ * cell down the line, whatever its horizontal width. {@link cellAdvance} is
11
+ * the one place a cell's advance is decided; the composer then applies the
12
+ * punctuation widths (`cjkPunctuation.ts`: compression, line-edge trims,
13
+ * hanging, the Han–Latin space) to the cells as it does to horizontal
14
+ * advances, along the line. {@link verticalTextWidth} measures any run of
15
+ * text with it.
16
+ */
17
+ import { measureTextWidth, measureInkBox, onTextWidthCacheClear } from './canvas';
18
+ import { isVerticalCell, verticalCellEms, verticalRuns } from '../writingMode';
19
+ import { graphemesOf } from './graphemes';
20
+ import { DEFAULT_CENTRAL_BASELINE } from '../vdt';
21
+ const FONT_SIZE_RE = /(\d*\.?\d+)px/;
22
+ let measureWritingMode = 'horizontal-tb';
23
+ let measureRegion = 'mainland';
24
+ let measureUprightDigits = 2;
25
+ /** Set the writing mode text is measured in, and the Chinese region whose
26
+ * cells it uses (the mainland interpunct takes half a cell). The build
27
+ * does, from the layout of the pages it is placing (a styled section may
28
+ * change it), and puts back what it found when it is done. */
29
+ export function setMeasureWritingMode(mode, region = measureRegion) {
30
+ measureWritingMode = mode === 'vertical-rl' ? 'vertical-rl' : 'horizontal-tb';
31
+ measureRegion = region;
32
+ }
33
+ /** The writing mode text is measured in (see {@link setMeasureWritingMode});
34
+ * horizontal outside a build. */
35
+ export function getMeasureWritingMode() {
36
+ return measureWritingMode;
37
+ }
38
+ /** Set how many ASCII digits a number may have to be set in one upright
39
+ * cell in vertical text (`cjk.uprightDigits`; 0: none). The build does,
40
+ * from the document's configuration, and puts back what it found. */
41
+ export function setMeasureUprightDigits(digits) {
42
+ measureUprightDigits = digits;
43
+ }
44
+ /** See {@link setMeasureUprightDigits}; 2 outside a build. */
45
+ export function getMeasureUprightDigits() {
46
+ return measureUprightDigits;
47
+ }
48
+ /** The Chinese region vertical cells are measured for. */
49
+ export function getMeasureRegion() {
50
+ return measureRegion;
51
+ }
52
+ /** Whether text is measured vertically now. */
53
+ export function measuringVertically() {
54
+ return measureWritingMode === 'vertical-rl';
55
+ }
56
+ /** Run `fn` with text measured in `mode` (and `region`), then put back the
57
+ * mode in force before — also when `fn` throws. */
58
+ export function withMeasureWritingMode(mode, fn, region = measureRegion) {
59
+ const prevMode = measureWritingMode;
60
+ const prevRegion = measureRegion;
61
+ if (prevMode === mode && prevRegion === region)
62
+ return fn();
63
+ setMeasureWritingMode(mode, region);
64
+ try {
65
+ return fn();
66
+ }
67
+ finally {
68
+ measureWritingMode = prevMode;
69
+ measureRegion = prevRegion;
70
+ }
71
+ }
72
+ /** The em of a font string (its size in px), 16 when it names none. */
73
+ export function fontEm(font) {
74
+ const m = FONT_SIZE_RE.exec(font);
75
+ return m ? parseFloat(m[1]) : 16;
76
+ }
77
+ /**
78
+ * The advance of one CJK grapheme along its line. Horizontal: its measured
79
+ * width. Vertical: its cell for every character that stands in one (one
80
+ * em; half an em for the mainland interpunct, `verticalCellEms`); a
81
+ * character set sideways keeps its horizontal width. `cls` is the
82
+ * grapheme's line-break class, when the caller has it. This is a mark's
83
+ * full advance: the composition takes its blank off afterwards
84
+ * (`punctuationBox`), in either writing mode.
85
+ */
86
+ export function cellAdvance(grapheme, font, vertical, cls) {
87
+ if (vertical && isVerticalCell(grapheme))
88
+ return fontEm(font) * verticalCellEms(grapheme, measureRegion, cls);
89
+ return measureTextWidth(grapheme, font);
90
+ }
91
+ /**
92
+ * The advance of `text` along a vertical line: its sideways runs at
93
+ * `measureRun`'s width (the horizontal one), each cell at
94
+ * {@link cellAdvance}. The same runs the renderers paint
95
+ * (`verticalRuns`), so what is measured is what is painted. Text with no
96
+ * cell is one sideways run: `measureRun(text)`.
97
+ */
98
+ export function verticalTextWidth(text, font, measureRun = (run) => measureTextWidth(run, font)) {
99
+ let width = 0;
100
+ for (const run of verticalRuns(graphemesOf(text), measureRegion, measureUprightDigits)) {
101
+ width += run.cell === undefined ? measureRun(run.text) : run.glyph.orient === 'tcy' ? fontEm(font) : cellAdvance(run.text, font, true);
102
+ }
103
+ return width;
104
+ }
105
+ /** How many times tracking follows the characters of `text` in a vertical
106
+ * line: once per grapheme, a number set in one cell (tate-chu-yoko)
107
+ * counting as one. */
108
+ export function verticalTrackCount(text) {
109
+ let n = 0;
110
+ for (const run of verticalRuns(graphemesOf(text), measureRegion, measureUprightDigits)) {
111
+ n += run.glyph.orient === 'tcy' ? 1 : graphemesOf(run.text).length;
112
+ }
113
+ return n;
114
+ }
115
+ /**
116
+ * The advance of text painted in the page's flow (design text, list
117
+ * markers, contents rows, box titles): `measureTextWidth`, except in
118
+ * vertical text, where what stands in a cell advances its cell
119
+ * ({@link verticalTextWidth}), as the renderers paint it. ASCII text reads
120
+ * the same either way.
121
+ */
122
+ export function flowTextWidth(text, font) {
123
+ if (measureWritingMode === 'vertical-rl' && (/[^\u0000-\u007F]/.test(text) || (measureUprightDigits > 0 && /[0-9]/.test(text))))
124
+ return verticalTextWidth(text, font);
125
+ return measureTextWidth(text, font);
126
+ }
127
+ /** A font string's first family, unquoted: the key of
128
+ * `VDTFlowFrame.centralBaselines`. */
129
+ export function fontFamilyOf(font) {
130
+ const m = FONT_SIZE_RE.exec(font);
131
+ const rest = (m ? font.slice(m.index + m[0].length) : font).replace(/^\s*(\/\s*\S+\s*)?/, '');
132
+ const first = rest.split(',')[0].trim();
133
+ return first.length >= 2 && /^["']/.test(first) && first.endsWith(first[0]) ? first.slice(1, -1) : first;
134
+ }
135
+ const centralCache = new Map();
136
+ /** Drop the measured axes (fonts changed). */
137
+ export function clearCentralBaselineCache() {
138
+ centralCache.clear();
139
+ }
140
+ /**
141
+ * Where the ideographic em box's centre sits above the alphabetic baseline
142
+ * of `family`, in ems: the axis upright characters are centred on. Read
143
+ * from the ink of 中 at 100 px, whose long stroke runs the height of the
144
+ * em box: the centre of its ink is the centre of the box within a few
145
+ * hundredths of an em (0.380 in Noto Serif and Sans SC and TC, whose box
146
+ * centre is 0.38; 0.357 in LXGW WenKai) — and every Chinese, Japanese and
147
+ * Korean face has the character, where a face for one script lacks the
148
+ * other's (國 is not in a Simplified Chinese font: the canvas measured a
149
+ * fallback face's, 0.04 em off). Kept between 0.25 and 0.5 em; a measurer
150
+ * with no ink metrics gives {@link DEFAULT_CENTRAL_BASELINE}.
151
+ */
152
+ export function measureCentralBaseline(family) {
153
+ const hit = centralCache.get(family);
154
+ if (hit !== undefined)
155
+ return hit;
156
+ let value = DEFAULT_CENTRAL_BASELINE;
157
+ const box = measureInkBox('中', `100px ${/^[\w -]+$/.test(family) && !/^\d/.test(family) ? family : JSON.stringify(family)}`);
158
+ if (box && box.ascent + box.descent > 60) {
159
+ const centre = (box.ascent - box.descent) / 2 / 100;
160
+ if (centre >= 0.25 && centre <= 0.5)
161
+ value = Math.round(centre * 1000) / 1000;
162
+ }
163
+ centralCache.set(family, value);
164
+ return value;
165
+ }
166
+ onTextWidthCacheClear(clearCentralBaselineCache);
167
+ /**
168
+ * How far below the top of its line box a line of `font` has its baseline,
169
+ * for a line box `lineHeightPx` tall. Horizontal text: 0.8 of the line
170
+ * height, as it always was. Vertical text: the line box runs down the
171
+ * column and its height is the pitch across it, and the characters stand
172
+ * centred on the font's central axis ({@link measureCentralBaseline}), so
173
+ * the baseline goes where that axis falls in the middle of the box: a
174
+ * column of characters in the middle of its pitch, as CSS sets a vertical
175
+ * line and as a rule drawn between two columns expects. `font`'s family
176
+ * and size decide the axis; the renderers turn each character about the
177
+ * same one (`VDTFlowFrame.centralBaselines`).
178
+ */
179
+ export function lineBaselineOffset(lineHeightPx, font) {
180
+ if (measureWritingMode !== 'vertical-rl')
181
+ return lineHeightPx * 0.8;
182
+ return lineHeightPx / 2 + measureCentralBaseline(fontFamilyOf(font)) * fontEm(font);
183
+ }
184
+ //# sourceMappingURL=vertical.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vertical.js","sourceRoot":"","sources":["../../src/measure/vertical.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,10 @@
1
- /**
2
- * Numbers spelled out in words — "twenty-one", "twenty-first", "veintiuno",
3
- * "vigesimoprimero" — for heading numbering templates (`{1:words}`,
4
- * `{1:ordinal}`) and the `{numberWords}` / `{numberOrdinalWords}` design
5
- * placeholders. English and Spanish; any other language takes the English
6
- * words, like the other localised strings (table continuation labels).
7
- * Masculine forms, as a chapter or a part is numbered ("capítulo primero").
8
- */
9
1
  /** Cardinal ("twenty-one") or ordinal ("twenty-first"). */
10
2
  export type NumberWordsKind = 'cardinal' | 'ordinal';
11
3
  /**
12
4
  * `n` spelled out in lower case, in the document language (`locale`:
13
- * `'es'` or a Spanish tag gives Spanish, anything else English). Numbers
14
- * past 999 999 (Spanish ordinals: past 999) print in digits; zero and
5
+ * `'es'` or a Spanish tag gives Spanish, a Chinese tag Chinese numerals in
6
+ * its script, anything else English). Numbers past 999 999 (Spanish
7
+ * ordinals: past 999; Chinese: past 10¹⁶ − 1) print in digits; zero and
15
8
  * below print nothing, like the other numeral formats.
16
9
  */
17
10
  export declare function numberToWords(n: number, kind?: NumberWordsKind, locale?: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"numberWords.d.ts","sourceRoot":"","sources":["../src/numberWords.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,2DAA2D;AAC3D,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,SAAS,CAAC;AA6HrD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,eAA4B,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CASpG;AAED;oBACoB;AACpB,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAKtF"}
1
+ {"version":3,"file":"numberWords.d.ts","sourceRoot":"","sources":["../src/numberWords.ts"],"names":[],"mappings":"AAaA,2DAA2D;AAC3D,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,SAAS,CAAC;AA8HrD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,eAA4B,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAcpG;AAED;oBACoB;AACpB,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAMtF"}
@@ -1,16 +1,21 @@
1
1
  /**
2
2
  * Numbers spelled out in words — "twenty-one", "twenty-first", "veintiuno",
3
- * "vigesimoprimero" — for heading numbering templates (`{1:words}`,
4
- * `{1:ordinal}`) and the `{numberWords}` / `{numberOrdinalWords}` design
5
- * placeholders. English and Spanish; any other language takes the English
6
- * words, like the other localised strings (table continuation labels).
7
- * Masculine forms, as a chapter or a part is numbered ("capítulo primero").
3
+ * "vigesimoprimero", 二十一, 第二十一 — for heading numbering templates
4
+ * (`{1:words}`, `{1:ordinal}`) and the `{numberWords}` /
5
+ * `{numberOrdinalWords}` design placeholders. English, Spanish and Chinese
6
+ * (in the document's script: 一万 / 一萬); any other language takes the
7
+ * English words, like the other localised strings (table continuation
8
+ * labels). Masculine forms, as a chapter or a part is numbered ("capítulo
9
+ * primero").
8
10
  */
11
+ import { stringsKeyOf } from './locale';
12
+ import { chineseNumeral } from './chineseNumerals';
9
13
  /** Largest number spelled out; anything past it prints in digits. */
10
14
  const MAX_CARDINAL = 999_999;
11
15
  const MAX_ORDINAL_ES = 999;
12
16
  function language(locale) {
13
- return (locale ?? 'en').toLowerCase().split(/[-_]/)[0] === 'es' ? 'es' : 'en';
17
+ const key = stringsKeyOf(locale ?? 'en');
18
+ return key === 'es' || key === 'zh-hans' || key === 'zh-hant' ? key : 'en';
14
19
  }
15
20
  // --- English ---------------------------------------------------------------
16
21
  const EN_ONES = [
@@ -127,14 +132,20 @@ function esOrdinal(n) {
127
132
  }
128
133
  /**
129
134
  * `n` spelled out in lower case, in the document language (`locale`:
130
- * `'es'` or a Spanish tag gives Spanish, anything else English). Numbers
131
- * past 999 999 (Spanish ordinals: past 999) print in digits; zero and
135
+ * `'es'` or a Spanish tag gives Spanish, a Chinese tag Chinese numerals in
136
+ * its script, anything else English). Numbers past 999 999 (Spanish
137
+ * ordinals: past 999; Chinese: past 10¹⁶ − 1) print in digits; zero and
132
138
  * below print nothing, like the other numeral formats.
133
139
  */
134
140
  export function numberToWords(n, kind = 'cardinal', locale) {
135
141
  if (!Number.isInteger(n) || n < 1)
136
142
  return n > 0 ? String(n) : '';
137
143
  const lang = language(locale);
144
+ if (lang === 'zh-hans' || lang === 'zh-hant') {
145
+ // Informal numerals; the ordinal is 第 before them (第十二).
146
+ const numeral = chineseNumeral(n, 'informal', lang === 'zh-hant');
147
+ return kind === 'ordinal' ? `第${numeral}` : numeral;
148
+ }
138
149
  if (kind === 'ordinal') {
139
150
  if (lang === 'es')
140
151
  return n <= MAX_ORDINAL_ES ? esOrdinal(n) : String(n);
@@ -145,7 +156,8 @@ export function numberToWords(n, kind = 'cardinal', locale) {
145
156
  return lang === 'es' ? esCardinal(n) : enCardinal(n);
146
157
  }
147
158
  export function caseWords(words, wordsCase, locale) {
148
- const tag = language(locale);
159
+ // Han characters have no case: the variants print alike.
160
+ const tag = language(locale) === 'es' ? 'es' : 'en';
149
161
  if (wordsCase === 'upper')
150
162
  return words.toLocaleUpperCase(tag);
151
163
  if (wordsCase === 'capital')
@@ -1 +1 @@
1
- {"version":3,"file":"numberWords.js","sourceRoot":"","sources":["../src/numberWords.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"numberWords.js","sourceRoot":"","sources":["../src/numberWords.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,14 @@
1
1
  import type { ContentBlock } from './parse';
2
2
  import type { OrderedListNumberFormat } from './types';
3
- export type NumeralStyle = 'decimal' | 'decimal-02' | 'upper-alpha' | 'lower-alpha' | 'upper-roman' | 'lower-roman';
3
+ /** The East Asian numeral styles, named as in CSS Counter Styles 3: Chinese
4
+ * numerals in the informal (一百二十) and formal (壹佰贰拾) longhand of
5
+ * either script, digit by digit (`cjk-decimal`, 二〇二六), the heavenly
6
+ * stems (甲乙丙) and earthly branches (子丑寅), circled (①) and fullwidth
7
+ * (123) digits. Every numbering setting takes them. */
8
+ export type EastAsianNumeralStyle = 'simp-chinese-informal' | 'trad-chinese-informal' | 'simp-chinese-formal' | 'trad-chinese-formal' | 'cjk-decimal' | 'cjk-heavenly-stem' | 'cjk-earthly-branch' | 'circled-decimal' | 'fullwidth-decimal';
9
+ /** Every {@link EastAsianNumeralStyle}, in the order a picker lists them. */
10
+ export declare const EAST_ASIAN_NUMERAL_STYLES: readonly EastAsianNumeralStyle[];
11
+ export type NumeralStyle = 'decimal' | 'decimal-02' | 'upper-alpha' | 'lower-alpha' | 'upper-roman' | 'lower-roman' | EastAsianNumeralStyle;
4
12
  /** A counter spelled out in words (heading templates only): cardinal
5
13
  * (`words`) or ordinal (`ordinal`), the case of the suffix picking the
6
14
  * case of the words — `{1:words}` "twenty-one", `{1:Words}` "Twenty-one",
@@ -19,20 +27,30 @@ type Token = {
19
27
  /** The numeral styles a format field can name: every {@link NumeralStyle}
20
28
  * but the template-only zero-padded `decimal-02`. */
21
29
  export type NumberFormatStyle = Exclude<NumeralStyle, 'decimal-02'>;
30
+ /** The informal Chinese style of a document's script: `trad-chinese-informal`
31
+ * for a Traditional tag, else `simp-chinese-informal`. What `{1:一}`, the
32
+ * `{numberHan}` placeholder and spelled-out Chinese numbers use. */
33
+ export declare function chineseInformalStyle(locale?: string): 'simp-chinese-informal' | 'trad-chinese-informal';
22
34
  /**
23
35
  * The numeral style a numbering-format value names, in any of the
24
36
  * spellings the engine accepts (see `NUMBER_FORMAT_NAMES`: `decimal` /
25
37
  * `arabic`, `lower-roman` / `roman-lower` / `i`, `upper-alpha` /
26
- * `alpha-upper` / `upper-latin` / `A`…; names are case-insensitive).
27
- * `undefined` for anything else — the caller numbers in decimal.
38
+ * `alpha-upper` / `upper-latin` / `A`, the CSS names of the East Asian
39
+ * styles and their one-character tokens `〇`, `①`, `甲`, `子`, `1`…; names
40
+ * are case-insensitive). `一` and `壹` name the informal and formal Chinese
41
+ * numerals of the document's script: Traditional when `locale` is
42
+ * (`zh-Hant`, `zh-TW`…), else Simplified. `undefined` for anything else —
43
+ * the caller numbers in decimal.
28
44
  */
29
- export declare function parseNumberFormat(value: unknown): NumberFormatStyle | undefined;
45
+ export declare function parseNumberFormat(value: unknown, locale?: string): NumberFormatStyle | undefined;
30
46
  /** A numeral style in the ordered-list vocabulary (`arabic` for decimal). */
31
47
  export declare function toOrderedListNumberFormat(style: NumberFormatStyle): OrderedListNumberFormat;
32
48
  /** A counter value in a template style; spelled-out styles use the
33
49
  * document language `locale`. */
34
50
  export declare function formatCounter(n: number, style: CounterStyle, locale?: string): string;
35
- export declare function parseTemplate(tpl: string): Token[];
51
+ /** The tokens of a numbering template. `locale` (the document language)
52
+ * decides the script of the `{1:一}` and `{1:壹}` tokens. */
53
+ export declare function parseTemplate(tpl: string, locale?: string): Token[];
36
54
  export declare function formatNumeral(n: number, style: NumeralStyle): string;
37
55
  /** A pre-resolved template piece fed to {@link renderCounterTemplate}. A
38
56
  * `counter` piece whose `text` is empty is treated as a "missing" counter and
@@ -1 +1 @@
1
- {"version":3,"file":"numbering.d.ts","sourceRoot":"","sources":["../src/numbering.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"numbering.d.ts","sourceRoot":"","sources":["../src/numbering.ts"],"names":[],"mappings":"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"}
package/dist/numbering.js CHANGED
@@ -1,4 +1,18 @@
1
1
  import { caseWords, numberToWords } from './numberWords';
2
+ import { localeScript } from './locale';
3
+ import { chineseNumeral, cjkDecimal, circledDecimal, fullwidthDecimal, fixedSymbol, CJK_HEAVENLY_STEMS, CJK_EARTHLY_BRANCHES } from './chineseNumerals';
4
+ /** Every {@link EastAsianNumeralStyle}, in the order a picker lists them. */
5
+ export const EAST_ASIAN_NUMERAL_STYLES = Object.freeze([
6
+ 'simp-chinese-informal',
7
+ 'trad-chinese-informal',
8
+ 'simp-chinese-formal',
9
+ 'trad-chinese-formal',
10
+ 'cjk-decimal',
11
+ 'cjk-heavenly-stem',
12
+ 'cjk-earthly-branch',
13
+ 'circled-decimal',
14
+ 'fullwidth-decimal',
15
+ ]);
2
16
  const STYLE_ALIASES = {
3
17
  '1': 'decimal',
4
18
  decimal: 'decimal',
@@ -31,27 +45,56 @@ const NUMBER_FORMAT_NAMES = new Map([
31
45
  ['upper-alpha', 'upper-alpha'],
32
46
  ['alpha-upper', 'upper-alpha'],
33
47
  ['upper-latin', 'upper-alpha'],
48
+ ...EAST_ASIAN_NUMERAL_STYLES.map((name) => [name, name]),
49
+ // CSS keeps `cjk-ideographic` as another name of the traditional informal.
50
+ ['cjk-ideographic', 'trad-chinese-informal'],
34
51
  ]);
35
52
  /** The one-character tokens of the heading templates (`{1:i}`), which the
36
- * format fields accept as well. Case-sensitive: `i` and `I` differ. */
53
+ * format fields accept as well. Case-sensitive: `i` and `I` differ. The
54
+ * Chinese tokens `一` and `壹` are read apart: they follow the document's
55
+ * script (see {@link parseNumberFormat}). */
37
56
  const NUMBER_FORMAT_TOKENS = new Map([
38
57
  ['1', 'decimal'],
39
58
  ['i', 'lower-roman'],
40
59
  ['I', 'upper-roman'],
41
60
  ['a', 'lower-alpha'],
42
61
  ['A', 'upper-alpha'],
62
+ ['〇', 'cjk-decimal'],
63
+ ['①', 'circled-decimal'],
64
+ ['甲', 'cjk-heavenly-stem'],
65
+ ['子', 'cjk-earthly-branch'],
66
+ ['1', 'fullwidth-decimal'],
43
67
  ]);
68
+ /** Whether `locale` is written in Traditional characters (`zh-Hant`,
69
+ * `zh-TW`, `zh-HK`…). */
70
+ function traditional(locale) {
71
+ return localeScript(locale) === 'Hant';
72
+ }
73
+ /** The informal Chinese style of a document's script: `trad-chinese-informal`
74
+ * for a Traditional tag, else `simp-chinese-informal`. What `{1:一}`, the
75
+ * `{numberHan}` placeholder and spelled-out Chinese numbers use. */
76
+ export function chineseInformalStyle(locale) {
77
+ return traditional(locale) ? 'trad-chinese-informal' : 'simp-chinese-informal';
78
+ }
44
79
  /**
45
80
  * The numeral style a numbering-format value names, in any of the
46
81
  * spellings the engine accepts (see `NUMBER_FORMAT_NAMES`: `decimal` /
47
82
  * `arabic`, `lower-roman` / `roman-lower` / `i`, `upper-alpha` /
48
- * `alpha-upper` / `upper-latin` / `A`…; names are case-insensitive).
49
- * `undefined` for anything else — the caller numbers in decimal.
83
+ * `alpha-upper` / `upper-latin` / `A`, the CSS names of the East Asian
84
+ * styles and their one-character tokens `〇`, `①`, `甲`, `子`, `1`…; names
85
+ * are case-insensitive). `一` and `壹` name the informal and formal Chinese
86
+ * numerals of the document's script: Traditional when `locale` is
87
+ * (`zh-Hant`, `zh-TW`…), else Simplified. `undefined` for anything else —
88
+ * the caller numbers in decimal.
50
89
  */
51
- export function parseNumberFormat(value) {
90
+ export function parseNumberFormat(value, locale) {
52
91
  if (typeof value !== 'string')
53
92
  return undefined;
54
93
  const v = value.trim();
94
+ if (v === '一')
95
+ return chineseInformalStyle(locale);
96
+ if (v === '壹')
97
+ return traditional(locale) ? 'trad-chinese-formal' : 'simp-chinese-formal';
55
98
  return NUMBER_FORMAT_TOKENS.get(v) ?? NUMBER_FORMAT_NAMES.get(v.toLowerCase());
56
99
  }
57
100
  /** A numeral style in the ordered-list vocabulary (`arabic` for decimal). */
@@ -59,19 +102,20 @@ export function toOrderedListNumberFormat(style) {
59
102
  return style === 'decimal' ? 'arabic' : style;
60
103
  }
61
104
  /** A template token's style: its own alias, else any format-field
62
- * spelling (`{1:roman-lower}`), else decimal. */
63
- function templateStyle(raw) {
105
+ * spelling (`{1:roman-lower}`, `{1:一}` in the script of `locale`), else
106
+ * decimal. */
107
+ function templateStyle(raw, locale) {
64
108
  const s = raw.trim();
65
- return Object.prototype.hasOwnProperty.call(STYLE_ALIASES, s) ? STYLE_ALIASES[s] : parseNumberFormat(s) ?? 'decimal';
109
+ return Object.prototype.hasOwnProperty.call(STYLE_ALIASES, s) ? STYLE_ALIASES[s] : parseNumberFormat(s, locale) ?? 'decimal';
66
110
  }
67
111
  const SPELLED_STYLES = new Set(['words', 'Words', 'WORDS', 'ordinal', 'Ordinal', 'ORDINAL']);
68
- function counterStyleOf(raw) {
112
+ function counterStyleOf(raw, locale) {
69
113
  if (!raw)
70
114
  return 'decimal';
71
115
  const key = raw.trim();
72
116
  if (SPELLED_STYLES.has(key))
73
117
  return key;
74
- return templateStyle(key);
118
+ return templateStyle(key, locale);
75
119
  }
76
120
  /** A counter value in a template style; spelled-out styles use the
77
121
  * document language `locale`. */
@@ -84,7 +128,9 @@ export function formatCounter(n, style, locale) {
84
128
  const wordsCase = style === style.toUpperCase() ? 'upper' : style[0] === style[0].toUpperCase() ? 'capital' : 'lower';
85
129
  return caseWords(numberToWords(n, kind, locale), wordsCase, locale);
86
130
  }
87
- export function parseTemplate(tpl) {
131
+ /** The tokens of a numbering template. `locale` (the document language)
132
+ * decides the script of the `{1:一}` and `{1:壹}` tokens. */
133
+ export function parseTemplate(tpl, locale) {
88
134
  const tokens = [];
89
135
  let buf = '';
90
136
  let i = 0;
@@ -115,7 +161,7 @@ export function parseTemplate(tpl) {
115
161
  const [rawLevel, rawStyle] = body.split(':');
116
162
  const level = Number(rawLevel);
117
163
  if (Number.isInteger(level) && level >= 1 && level <= 6) {
118
- const style = counterStyleOf(rawStyle);
164
+ const style = counterStyleOf(rawStyle, locale);
119
165
  flush();
120
166
  tokens.push({ kind: 'counter', level, style });
121
167
  i = end + 1;
@@ -162,7 +208,26 @@ function toRoman(n) {
162
208
  return s;
163
209
  }
164
210
  export function formatNumeral(n, style) {
165
- if (n <= 0)
211
+ if (n === 0) {
212
+ // The positional East Asian styles have a zero; the others print
213
+ // nothing for it, as before.
214
+ switch (style) {
215
+ case 'simp-chinese-informal':
216
+ case 'trad-chinese-informal':
217
+ case 'simp-chinese-formal':
218
+ case 'trad-chinese-formal':
219
+ return '零';
220
+ case 'cjk-decimal':
221
+ return '〇';
222
+ case 'circled-decimal':
223
+ return '⓪';
224
+ case 'fullwidth-decimal':
225
+ return '0';
226
+ default:
227
+ return '';
228
+ }
229
+ }
230
+ if (n < 0)
166
231
  return '';
167
232
  switch (style) {
168
233
  case 'decimal':
@@ -177,6 +242,24 @@ export function formatNumeral(n, style) {
177
242
  return toRoman(n);
178
243
  case 'lower-roman':
179
244
  return toRoman(n).toLowerCase();
245
+ case 'simp-chinese-informal':
246
+ return chineseNumeral(n, 'informal', false);
247
+ case 'trad-chinese-informal':
248
+ return chineseNumeral(n, 'informal', true);
249
+ case 'simp-chinese-formal':
250
+ return chineseNumeral(n, 'formal', false);
251
+ case 'trad-chinese-formal':
252
+ return chineseNumeral(n, 'formal', true);
253
+ case 'cjk-decimal':
254
+ return cjkDecimal(n);
255
+ case 'cjk-heavenly-stem':
256
+ return fixedSymbol(n, CJK_HEAVENLY_STEMS);
257
+ case 'cjk-earthly-branch':
258
+ return fixedSymbol(n, CJK_EARTHLY_BRANCHES);
259
+ case 'circled-decimal':
260
+ return circledDecimal(n);
261
+ case 'fullwidth-decimal':
262
+ return fullwidthDecimal(n);
180
263
  default:
181
264
  // A style from outside the type (a hand-written config, a stale
182
265
  // continuation) numbers in decimal rather than printing "undefined".
@@ -202,7 +285,9 @@ export function renderCounterTemplate(pieces) {
202
285
  continue;
203
286
  }
204
287
  if (prev.length > 0 && work[i - 1]?.kind === 'literal') {
205
- out = out.replace(/[^A-Za-z0-9]+$/, '');
288
+ // Punctuation and spaces go; letters and numerals of any script
289
+ // stay (第 before a missing counter is text, not a separator).
290
+ out = out.replace(/[^\p{L}\p{N}]+$/u, '');
206
291
  }
207
292
  continue;
208
293
  }
@@ -322,7 +407,7 @@ isNumbered = () => true, options = {}) {
322
407
  const tokensOf = (tpl) => {
323
408
  let tokens = parsed.get(tpl);
324
409
  if (tokens === undefined) {
325
- tokens = tpl.length > 0 ? parseTemplate(tpl) : null;
410
+ tokens = tpl.length > 0 ? parseTemplate(tpl, options.locale) : null;
326
411
  parsed.set(tpl, tokens);
327
412
  }
328
413
  return tokens;