postext 1.8.5 → 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,492 @@
1
+ /**
2
+ * Punctuation widths, Han–Latin spacing and hanging punctuation of CJK
3
+ * text (clreq §6.1.3, §6.2.2, §6.3.2, §6.3.3), for the CJK composer
4
+ * (`cjkCompose.ts`).
5
+ *
6
+ * The model is additive, as in metal type and every CJK composer since: a
7
+ * full-width mark is half an em of glyph and half an em of blank on one
8
+ * side — before the glyph for an opening bracket or quote, after it for a
9
+ * closing one and for the mainland's pause and stop marks (set in the
10
+ * corner of their box), a quarter em on each side for the marks Taiwan and
11
+ * Hong Kong centre. What is adjusted is the blank, never the glyph: a mark
12
+ * that gives up blank on its start side is painted that far before its box
13
+ * (`VDTLineSegment.inkOffset`), so its ink stays where the reader expects
14
+ * it.
15
+ *
16
+ * The width decisions go through {@link punctuationBox} (the style and the
17
+ * region), {@link compressPair} (two marks that meet), the line edges
18
+ * ({@link lineStartTrim}, {@link lineEndTrim}) and the reduction a line
19
+ * makes to take one more character ({@link punctuationShrink}). All of them
20
+ * work on the inline axis only: vertical text passes `vertical: true`,
21
+ * which fixes :;?! at one em (clreq §6.3.2.1), and otherwise reuses them
22
+ * as they are.
23
+ *
24
+ * Which blank a region's glyphs carry is decided by the region, not by the
25
+ * font: a Traditional Chinese font set under a mainland tag (or the
26
+ * reverse) puts its marks where its designer did, and compression then
27
+ * trims the wrong side. Books should be set in a face of their region
28
+ * (Noto Serif SC for the mainland, TC for Taiwan, HK for Hong Kong).
29
+ */
30
+ import { dimensionToPx } from '../units';
31
+ import { languageOf } from '../locale';
32
+ /** The composition outside a build: every mark at its full advance, no
33
+ * compression, no hanging, no Han–Latin space — CJK text set as the
34
+ * composer set it before these settings existed. A build replaces it with
35
+ * the document's (`setCjkComposition`). */
36
+ export const PLAIN_CJK_COMPOSITION = {
37
+ region: 'mainland',
38
+ punctuationWidth: 'fullwidth',
39
+ compressAdjacent: false,
40
+ trimLineStart: false,
41
+ hangingPunctuation: 'none',
42
+ latinSpacing: { em: 0 },
43
+ };
44
+ let documentComposition = PLAIN_CJK_COMPOSITION;
45
+ /** Set the composition CJK text is set with when a measurement names none
46
+ * (the build does, from the resolved `cjk`), as `setCjkLineBreak` sets the
47
+ * line-break level. `undefined` restores {@link PLAIN_CJK_COMPOSITION}. */
48
+ export function setCjkComposition(composition) {
49
+ documentComposition = composition ?? PLAIN_CJK_COMPOSITION;
50
+ }
51
+ /** The composition set by {@link setCjkComposition}. */
52
+ export function getCjkComposition() {
53
+ return documentComposition;
54
+ }
55
+ /** The composition of a resolved `cjk` config: `latinSpacing` in em when it
56
+ * is written in em (or rem), else converted to px at `dpi`. `locale` is
57
+ * the document language (`language`). */
58
+ export function cjkCompositionOf(cjk, dpi, locale) {
59
+ const ls = cjk.latinSpacing;
60
+ const language = languageOf(locale);
61
+ return {
62
+ region: cjk.region,
63
+ punctuationWidth: cjk.punctuationWidth,
64
+ compressAdjacent: cjk.compressAdjacent,
65
+ trimLineStart: cjk.trimLineStart,
66
+ hangingPunctuation: cjk.hangingPunctuation,
67
+ latinSpacing: ls.unit === 'em' || ls.unit === 'rem' ? { em: Math.max(0, ls.value) } : { px: Math.max(0, dimensionToPx(ls, dpi)) },
68
+ ...(language ? { language } : {}),
69
+ };
70
+ }
71
+ /** Kana and hangul: a paragraph holding them is Japanese or Korean. */
72
+ const KANA_HANGUL_RE = /[ᄀ-ᇿ぀-ゟ゠-ヿ㄰-㆏ㇰ-ㇿꥠ-꥿가-힯ힰ-퟿ヲ-゚]/;
73
+ /** Whether the composition sets Japanese or Korean text. */
74
+ function japaneseOrKorean(c) {
75
+ return c.language === 'ja' || c.language === 'ko';
76
+ }
77
+ /**
78
+ * Whether the marks Latin text shares with Chinese (“ ” ‘ ’ … — ·) may take
79
+ * a Chinese mark's box in a paragraph of `text` (clreq's context routing,
80
+ * `cjkCompose.ts`). They do in Chinese text: in a Chinese document, and in
81
+ * a CJK paragraph of a document in another language (or none) unless it
82
+ * holds kana or hangul. Never in a Japanese or Korean document, whose
83
+ * typography sets them otherwise (Korean at their proportional width).
84
+ */
85
+ export function routesSharedMarks(c, text) {
86
+ if (japaneseOrKorean(c))
87
+ return false;
88
+ return c.language === 'zh' || !KANA_HANGUL_RE.test(text);
89
+ }
90
+ const verticalOf = new WeakMap();
91
+ /** `c` for text set in the writing mode `vertical` names: the same
92
+ * composition, flagged `vertical` when the text runs down the page (the
93
+ * composer derives it from the writing mode it measures in, so a
94
+ * horizontal heading in a vertical book, or a caption, is set as
95
+ * horizontal text). */
96
+ export function compositionFor(c, vertical) {
97
+ if (!!c.vertical === vertical)
98
+ return c;
99
+ let hit = verticalOf.get(c);
100
+ if (!hit) {
101
+ hit = { ...c };
102
+ if (vertical)
103
+ hit.vertical = true;
104
+ else
105
+ delete hit.vertical;
106
+ verticalOf.set(c, hit);
107
+ }
108
+ return hit;
109
+ }
110
+ /** The settings of a composition as a cache key: measurements of CJK text
111
+ * under other settings never share an entry. */
112
+ export function cjkCompositionKey(c) {
113
+ const ls = c.latinSpacing.px !== undefined ? `${c.latinSpacing.px}px` : `${c.latinSpacing.em}em`;
114
+ // The language counts where it changes a measurement: Japanese and
115
+ // Korean route no shared marks, and only a Chinese document routes them
116
+ // in a paragraph with kana.
117
+ const lang = japaneseOrKorean(c) ? ':jk' : c.language === 'zh' ? ':zh' : '';
118
+ return `${c.region}:${c.punctuationWidth}:${c.compressAdjacent ? 1 : 0}:${c.trimLineStart ? 1 : 0}:${c.hangingPunctuation}:${ls}${c.vertical ? ':v' : ''}${lang}`;
119
+ }
120
+ /** Whether a composition changes nothing: the text is set as without it. */
121
+ export function isPlainComposition(c) {
122
+ return c.punctuationWidth === 'fullwidth' && !c.compressAdjacent && !c.trimLineStart
123
+ && c.hangingPunctuation === 'none' && (c.latinSpacing.px ?? c.latinSpacing.em ?? 0) === 0;
124
+ }
125
+ /** ?! and their doubles. */
126
+ const QUESTION_EXCLAMATION = new Set(['?', '!', '?', '!', '‼', '⁇', '⁈', '⁉', '﹖', '﹗', '︖', '︕']);
127
+ /** :;, fixed at one em in vertical text. */
128
+ const COLON_SEMICOLON = new Set([':', ';', '﹕', '﹔', '︓', '︔']);
129
+ /**
130
+ * The side of a mark's blank along the line (clreq §6.3.2.1): opening
131
+ * brackets and quotes before their glyph, closing ones after it; the
132
+ * mainland's pause and stop marks (、,。.;:?!, in the corner of their
133
+ * box) after it; the marks Taiwan and Hong Kong centre (、,。.;:) and
134
+ * interpuncts on both sides. ?! are fixed at one em in horizontal Taiwan
135
+ * and Hong Kong text, and :;?! in vertical text everywhere. Any other
136
+ * character has no blank.
137
+ */
138
+ export function punctuationSide(grapheme, cls, region, vertical = false) {
139
+ switch (cls) {
140
+ case 'opening':
141
+ return 'start';
142
+ case 'closing':
143
+ return 'end';
144
+ case 'interpunct':
145
+ return 'both';
146
+ case 'pause':
147
+ case 'stop':
148
+ if (vertical && (QUESTION_EXCLAMATION.has(grapheme) || COLON_SEMICOLON.has(grapheme)))
149
+ return 'none';
150
+ if (region === 'mainland')
151
+ return 'end';
152
+ return QUESTION_EXCLAMATION.has(grapheme) ? 'none' : 'both';
153
+ default:
154
+ return 'none';
155
+ }
156
+ }
157
+ /** A mark's advance now: its full advance less the blank it gave up. */
158
+ export function boxCut(box) {
159
+ return box.cutStart + box.cutEnd;
160
+ }
161
+ /** The blank a mark still holds on each side. */
162
+ function blankStart(box) {
163
+ if (box.side === 'start')
164
+ return box.blank - box.cutStart;
165
+ if (box.side === 'both')
166
+ return box.blank / 2 - box.cutStart;
167
+ return 0;
168
+ }
169
+ function blankEnd(box) {
170
+ if (box.side === 'end')
171
+ return box.blank - box.cutEnd;
172
+ if (box.side === 'both')
173
+ return box.blank / 2 - box.cutEnd;
174
+ return 0;
175
+ }
176
+ /** Give up `amount` px of blank, on the mark's own side (half each side for
177
+ * a centred mark); never more than it holds. Returns what was given up. */
178
+ function giveUp(box, amount) {
179
+ if (amount <= 0)
180
+ return 0;
181
+ if (box.side === 'start') {
182
+ const take = Math.min(amount, blankStart(box));
183
+ box.cutStart += take;
184
+ return take;
185
+ }
186
+ if (box.side === 'end') {
187
+ const take = Math.min(amount, blankEnd(box));
188
+ box.cutEnd += take;
189
+ return take;
190
+ }
191
+ if (box.side === 'both') {
192
+ const each = Math.min(amount / 2, blankStart(box), blankEnd(box));
193
+ box.cutStart += each;
194
+ box.cutEnd += each;
195
+ return each * 2;
196
+ }
197
+ return 0;
198
+ }
199
+ /** Stop marks (。.!?): the Kaiming style keeps them one em inside the
200
+ * line. */
201
+ function isStop(box) {
202
+ return box.cls === 'stop';
203
+ }
204
+ /**
205
+ * A mark (`grapheme` of class `cls`, full advance `advance` px, font em
206
+ * `em` px) with the blank its style sets aside (clreq §6.3.2.1): none under
207
+ * `fullwidth` and `lineEndHalf`, all of it under `halfwidth`, and under
208
+ * `kaiming` all but for the stop marks 。.?!. The mainland interpunct is
209
+ * half an em under every style (GB/T 15834, clreq §5.1), centred, in either
210
+ * writing mode: a full-width glyph gives up its blank here, and in vertical
211
+ * text its cell is half an em already (`verticalCellEms`), so it is no
212
+ * adjustable mark there. Undefined for a character that is no adjustable
213
+ * mark.
214
+ */
215
+ export function punctuationBox(grapheme, cls, advance, em, c) {
216
+ const side = punctuationSide(grapheme, cls, c.region, c.vertical);
217
+ if (side === 'none' || em <= 0 || advance < em * 0.75)
218
+ return undefined;
219
+ const box = { cls, grapheme, side, em, blank: Math.max(0, advance - em / 2), cutStart: 0, cutEnd: 0 };
220
+ const style = c.punctuationWidth;
221
+ if (style === 'halfwidth' || (style === 'kaiming' && !isStop(box)) || (cls === 'interpunct' && c.region === 'mainland'))
222
+ giveUp(box, box.blank);
223
+ return box;
224
+ }
225
+ /** Whether a mark takes part in the adjacent-mark rules. */
226
+ function isMarkClass(cls) {
227
+ return cls === 'opening' || cls === 'closing' || cls === 'pause' || cls === 'stop' || cls === 'interpunct';
228
+ }
229
+ /**
230
+ * Two marks that meet (`a` then `b`) give up the blank between them, so the
231
+ * pair takes 1.5 em instead of 2 (clreq §6.3.2.2, the eight rules of the
232
+ * earlier clreq drafts): a closing bracket after another or after a
233
+ * mainland pause or stop mark (。」, not the centred marks of Taiwan and
234
+ * Hong Kong), a pause or stop mark after a closing bracket (」,), an
235
+ * opening bracket after any of them or after another opening one (,「
236
+ * 》( 「『); a quarter em between an interpunct and a closing bracket
237
+ * before it or an opening one after it. Only the blank between the two is
238
+ * given up — the bracket's first — and never more than takes the pair to
239
+ * 1.5 em, so a Kaiming pair that already takes 1.5 em (。”) keeps it.
240
+ */
241
+ export function compressPair(a, b) {
242
+ if (!isMarkClass(a.cls) || !isMarkClass(b.cls))
243
+ return;
244
+ let limit = Math.max(a.em, b.em) / 2;
245
+ let ok = false;
246
+ if (b.cls === 'closing' && (a.cls === 'closing' || ((a.cls === 'pause' || a.cls === 'stop') && a.side === 'end')))
247
+ ok = true;
248
+ else if (a.cls === 'closing' && (b.cls === 'pause' || b.cls === 'stop'))
249
+ ok = true;
250
+ else if (b.cls === 'opening' && a.cls !== 'interpunct')
251
+ ok = true;
252
+ else if ((a.cls === 'closing' && b.cls === 'interpunct') || (a.cls === 'interpunct' && b.cls === 'opening')) {
253
+ ok = true;
254
+ limit = Math.max(a.em, b.em) / 4;
255
+ }
256
+ if (!ok)
257
+ return;
258
+ // The pair's advance over 1.5 em: what may go.
259
+ const over = (a.blank - boxCut(a)) + (b.blank - boxCut(b)) - Math.max(a.em, b.em) / 2;
260
+ let want = Math.min(limit, over);
261
+ if (want <= 1e-9)
262
+ return;
263
+ // The blank between them: a's end side, b's start side — a bracket's
264
+ // half-em blank before a centred mark's quarter.
265
+ const takeEnd = (box, n) => {
266
+ const t = Math.min(n, Math.max(0, blankEnd(box)));
267
+ box.cutEnd += t;
268
+ if (t > 0)
269
+ box.pairEnd = (box.pairEnd ?? 0) + t;
270
+ return t;
271
+ };
272
+ const takeStart = (box, n) => {
273
+ const t = Math.min(n, Math.max(0, blankStart(box)));
274
+ box.cutStart += t;
275
+ if (t > 0)
276
+ box.pairStart = (box.pairStart ?? 0) + t;
277
+ return t;
278
+ };
279
+ if (a.side === 'end' || a.side === 'start') {
280
+ want -= takeEnd(a, want);
281
+ want -= takeStart(b, want);
282
+ }
283
+ else {
284
+ want -= takeStart(b, want);
285
+ want -= takeEnd(a, want);
286
+ }
287
+ }
288
+ /**
289
+ * Under Kaiming a stop mark keeps its blank inside the line and a closing
290
+ * mark gives its own up, so where the two meet (。” ?” 。)) the stop's half
291
+ * em would stand between them and the quote would read as the next
292
+ * character's. The blank goes after the closing mark instead: 。”␣, the
293
+ * glyphs together, as full width with `compressAdjacent` sets them; the
294
+ * pair keeps its width. A closing mark after that one takes the blank on
295
+ * (。”)␣). The blank is still the stop's: it goes at a line end
296
+ * ({@link lineEndTrim}), gives way with the stop marks' to take in a
297
+ * character ({@link punctuationShrink}), and returns to the stop when the
298
+ * line breaks between the two. Mainland marks only (in the corner of their
299
+ * box): a centred mark keeps its blank on both sides.
300
+ */
301
+ export function carryStopBlank(a, b) {
302
+ if (b.cls !== 'closing' || b.side !== 'end' || a.side !== 'end')
303
+ return;
304
+ if (!isStop(a) && !a.carry)
305
+ return;
306
+ const moved = Math.min(Math.max(0, blankEnd(a)), b.cutEnd);
307
+ if (moved <= 1e-9)
308
+ return;
309
+ a.cutEnd += moved;
310
+ a.pairEnd = (a.pairEnd ?? 0) + moved;
311
+ if (a.carry)
312
+ a.carry = Math.max(0, a.carry - moved);
313
+ b.cutEnd -= moved;
314
+ b.carry = (b.carry ?? 0) + moved;
315
+ }
316
+ /** The blank a mark gives up when it opens a line: an opening bracket or
317
+ * quote its start half, with `trimLineStart` (clreq §6.3.2.3). */
318
+ export function lineStartTrim(box, c) {
319
+ if (!box || !c.trimLineStart || box.cls !== 'opening')
320
+ return 0;
321
+ return Math.max(0, blankStart(box));
322
+ }
323
+ /** The blank a mark gives up when it ends a line: every mark under
324
+ * `lineEndHalf` (GB/T 15834—2011 §5.1.10), the stop marks under
325
+ * `kaiming` (the rest are half already, but for a closing mark holding a
326
+ * stop's blank, {@link carryStopBlank}), a closing bracket or quote with
327
+ * `trimLineStart` (clreq §6.3.2.3). A centred mark gives up a quarter em
328
+ * each side. */
329
+ export function lineEndTrim(box, c) {
330
+ if (!box || box.side === 'start')
331
+ return 0;
332
+ const rest = box.side === 'both' ? Math.max(0, blankStart(box)) + Math.max(0, blankEnd(box)) : Math.max(0, blankEnd(box));
333
+ if (c.punctuationWidth === 'lineEndHalf')
334
+ return rest;
335
+ if (c.punctuationWidth === 'kaiming' && (isStop(box) || box.cls === 'closing'))
336
+ return rest;
337
+ if (c.trimLineStart && box.cls === 'closing')
338
+ return rest;
339
+ return 0;
340
+ }
341
+ /** Apply the edge trims of a line to a mark: `start` from
342
+ * {@link lineStartTrim}, `end` from {@link lineEndTrim}. */
343
+ export function applyLineTrim(box, start, end) {
344
+ if (start > 0)
345
+ box.cutStart += start;
346
+ if (end <= 0)
347
+ return;
348
+ if (box.side === 'both') {
349
+ // A centred mark gives up what it holds on both sides.
350
+ const s = Math.min(end, Math.max(0, blankStart(box)));
351
+ box.cutStart += s;
352
+ box.cutEnd += end - s;
353
+ }
354
+ else
355
+ box.cutEnd += end;
356
+ }
357
+ /**
358
+ * A mark at a line edge — it opens the line (`start`), ends it (`end`) or
359
+ * both: the blank it gave up to the mark across the break comes back, as
360
+ * the two no longer meet (clreq §6.3.2.2 compresses marks that meet on a
361
+ * line), then the edge trims apply ({@link lineStartTrim},
362
+ * {@link lineEndTrim}). Changes `box`; returns the blank given up at the
363
+ * edges less the blank that came back, px (negative when the mark grows:
364
+ * a full-width `,` whose `「` went to the next line is one em again).
365
+ */
366
+ export function applyLineEdges(box, c, start, end) {
367
+ const before = boxCut(box);
368
+ if (start) {
369
+ if (box.pairStart) {
370
+ box.cutStart -= box.pairStart;
371
+ box.pairStart = 0;
372
+ }
373
+ if (box.carry) {
374
+ // The stop whose blank it held ends the line before.
375
+ box.cutEnd += box.carry;
376
+ box.carry = 0;
377
+ }
378
+ applyLineTrim(box, lineStartTrim(box, c), 0);
379
+ }
380
+ if (end) {
381
+ if (box.pairEnd) {
382
+ box.cutEnd -= box.pairEnd;
383
+ box.pairEnd = 0;
384
+ }
385
+ applyLineTrim(box, 0, lineEndTrim(box, c));
386
+ }
387
+ return boxCut(box) - before;
388
+ }
389
+ /** What {@link applyLineEdges} would give up at the edges, leaving `box`
390
+ * as it is. */
391
+ export function lineEdgeCut(box, c, start, end) {
392
+ if (!(start && (box.pairStart || box.carry)) && !(end && box.pairEnd)) {
393
+ // Nothing comes back: the trims alone (an opening mark's start trim and
394
+ // an end trim never touch the same blank).
395
+ return (start ? lineStartTrim(box, c) : 0) + (end ? lineEndTrim(box, c) : 0);
396
+ }
397
+ return applyLineEdges({ ...box }, c, start, end);
398
+ }
399
+ /**
400
+ * The blank a mark may still give up when its line is compressed to take
401
+ * one more character that may not open the next line (push-in, clreq
402
+ * §6.2.2.3), after its style, its neighbours and the line edges took
403
+ * theirs. `fullwidth` marks give up nothing (a full-width book keeps its
404
+ * grid); `halfwidth` marks have nothing left; `kaiming` lets its stop marks
405
+ * go down to half an em, last (only to resolve a prohibition: a line that
406
+ * merely falls short is spread, so Kaiming keeps 。?! one em inside the
407
+ * line), and with them the stop's blank a closing mark holds
408
+ * ({@link carryStopBlank}); `lineEndHalf` lets every mark go down to half an
409
+ * em.
410
+ */
411
+ export function punctuationShrink(box, c) {
412
+ if (!box)
413
+ return 0;
414
+ const rest = Math.max(0, box.blank - boxCut(box));
415
+ switch (c.punctuationWidth) {
416
+ case 'kaiming':
417
+ return isStop(box) || box.carry ? rest : 0;
418
+ case 'lineEndHalf':
419
+ return rest;
420
+ default:
421
+ return 0;
422
+ }
423
+ }
424
+ /** Give up `amount` px of a mark's blank to compress its line (see
425
+ * {@link punctuationShrink}); returns what it gave. */
426
+ export function shrinkPunctuation(box, amount) {
427
+ return giveUp(box, amount);
428
+ }
429
+ /** The step of clreq §6.2.2.3's reduction order a mark belongs to:
430
+ * interpuncts, then brackets, then pause marks, then (after the Han–Latin
431
+ * spaces) stop marks, and a closing mark holding a stop's blank. */
432
+ export function shrinkStep(box) {
433
+ if (box.carry)
434
+ return 6;
435
+ switch (box.cls) {
436
+ case 'interpunct': return 2;
437
+ case 'opening':
438
+ case 'closing': return 3;
439
+ case 'pause': return 4;
440
+ default: return 6;
441
+ }
442
+ }
443
+ /**
444
+ * The advance of one mark and where its glyph is painted, px — the width
445
+ * decision of {@link punctuationBox} and the line edges, for a single mark
446
+ * with no neighbour: the reuse point for renderers and vertical text.
447
+ * Characters that are no adjustable mark keep `advance`.
448
+ */
449
+ export function punctuationAdvance(grapheme, cls, advance, em, c, edges = {}) {
450
+ const box = punctuationBox(grapheme, cls, advance, em, c);
451
+ if (!box)
452
+ return { advance, inkOffset: 0 };
453
+ applyLineTrim(box, edges.lineStart ? lineStartTrim(box, c) : 0, edges.lineEnd ? lineEndTrim(box, c) : 0);
454
+ return { advance: advance - boxCut(box), inkOffset: box.cutStart > 0 ? -box.cutStart : 0 };
455
+ }
456
+ /** Marks that may hang in any region: 、,。. */
457
+ const HANG_ANYWHERE = new Set(['、', ',', '。', '.', '、', '。']);
458
+ /**
459
+ * Whether a mark may hang past the end of its line
460
+ * (`cjk.hangingPunctuation`, clreq §6.1.3): 、,。. everywhere and, on the
461
+ * mainland (whose marks sit at the start of their box), every pause and
462
+ * stop mark; under `'allow'`, never in horizontal Taiwan and Hong Kong
463
+ * text, whose centred marks look cut off.
464
+ */
465
+ export function mayHang(grapheme, cls, c) {
466
+ if (c.hangingPunctuation === 'none')
467
+ return false;
468
+ if (cls !== 'pause' && cls !== 'stop')
469
+ return false;
470
+ if (c.hangingPunctuation === 'allow' && c.region !== 'mainland' && !c.vertical)
471
+ return false;
472
+ return HANG_ANYWHERE.has(grapheme) || c.region === 'mainland';
473
+ }
474
+ /** Han characters, kana, bopomofo and 〇々: what takes the Han–Latin
475
+ * space on one side. */
476
+ const HAN_RE = /^[々〇〡-〩〸-〻぀-ゟ゠-ヿ㄀-ㄯㆠ-ㆿㇰ-ㇿ㐀-䶿一-鿿豈-﫿\u{20000}-\u{3FFFF}]/u;
477
+ const LATIN_RE = /[\p{L}\p{N}]/u;
478
+ /** Whether a grapheme takes the Han–Latin space on its Latin side: a letter
479
+ * or a digit (not a sign such as ¥ or %). */
480
+ export function isLatinSpacingLatin(grapheme) {
481
+ return grapheme !== undefined && LATIN_RE.test(grapheme);
482
+ }
483
+ /** Whether a grapheme takes the Han–Latin space on its Han side. */
484
+ export function isLatinSpacingHan(grapheme) {
485
+ return grapheme !== undefined && HAN_RE.test(grapheme);
486
+ }
487
+ /** The Han–Latin space in px for text whose CJK font has an em of `em`
488
+ * px. */
489
+ export function latinSpacingPx(c, em) {
490
+ return c.latinSpacing.px ?? (c.latinSpacing.em ?? 0) * em;
491
+ }
492
+ //# sourceMappingURL=cjkPunctuation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cjkPunctuation.js","sourceRoot":"","sources":["../../src/measure/cjkPunctuation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Graphemes: what canvas `letterSpacing` and CSS `letter-spacing` space
3
+ * apart. Tracking is counted per grapheme, not per UTF-16 unit, so a
4
+ * supplementary-plane ideograph (𠺕), an emoji or a letter with a combining
5
+ * accent takes one share of it, as the renderers paint it.
6
+ */
7
+ /** How many graphemes `text` holds. */
8
+ export declare function graphemeCount(text: string): number;
9
+ /** The graphemes of `text`, in order. */
10
+ export declare function graphemesOf(text: string): string[];
11
+ /** The last grapheme of `text` ('' when empty). */
12
+ export declare function lastGrapheme(text: string): string;
13
+ //# sourceMappingURL=graphemes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphemes.d.ts","sourceRoot":"","sources":["../../src/measure/graphemes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,uCAAuC;AACvC,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,yCAAyC;AACzC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAGlD;AAED,mDAAmD;AACnD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMjD"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Graphemes: what canvas `letterSpacing` and CSS `letter-spacing` space
3
+ * apart. Tracking is counted per grapheme, not per UTF-16 unit, so a
4
+ * supplementary-plane ideograph (𠺕), an emoji or a letter with a combining
5
+ * accent takes one share of it, as the renderers paint it.
6
+ */
7
+ const segmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });
8
+ /** Text whose graphemes are not one UTF-16 unit each: combining marks,
9
+ * joiners and variation selectors, surrogate pairs, CR LF and conjoining
10
+ * Hangul jamo. Anything else counts its length. */
11
+ const COMPLEX_RE = /[\p{M}\u200D\uFE00-\uFE0F\u1100-\u11FF\u{10000}-\u{10FFFF}\uD800-\uDFFF]|\r\n/u;
12
+ /** How many graphemes `text` holds. */
13
+ export function graphemeCount(text) {
14
+ if (!COMPLEX_RE.test(text))
15
+ return text.length;
16
+ let n = 0;
17
+ const it = segmenter.segment(text)[Symbol.iterator]();
18
+ while (!it.next().done)
19
+ n++;
20
+ return n;
21
+ }
22
+ /** The graphemes of `text`, in order. */
23
+ export function graphemesOf(text) {
24
+ if (!COMPLEX_RE.test(text))
25
+ return Array.from(text);
26
+ return Array.from(segmenter.segment(text), (g) => g.segment);
27
+ }
28
+ /** The last grapheme of `text` ('' when empty). */
29
+ export function lastGrapheme(text) {
30
+ if (text.length === 0)
31
+ return '';
32
+ const tail = text.length > 24 ? text.slice(-24) : text;
33
+ if (!COMPLEX_RE.test(tail))
34
+ return text[text.length - 1];
35
+ const all = graphemesOf(tail);
36
+ return all[all.length - 1] ?? '';
37
+ }
38
+ //# sourceMappingURL=graphemes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphemes.js","sourceRoot":"","sources":["../../src/measure/graphemes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;AAE7E;;oDAEoD;AACpD,MAAM,UAAU,GAAG,gFAAgF,CAAC;AAEpG,uCAAuC;AACvC,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IAC/C,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACtD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI;QAAE,CAAC,EAAE,CAAC;IAC5B,OAAO,CAAC,CAAC;AACX,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC/D,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IAC1D,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACnC,CAAC"}
@@ -5,6 +5,9 @@ export { buildFontString, initHyphenator, clearMeasurementCache, createMeasureme
5
5
  export { measureGlyphWidth, measureTextWidth } from './canvas';
6
6
  export { measureBlock } from './plain';
7
7
  export { measureRichBlock } from './rich';
8
+ export { setCjkLineBreak, getCjkLineBreak } from './cjkClasses';
9
+ export { setCjkComposition, getCjkComposition, cjkCompositionOf, cjkCompositionKey, punctuationAdvance, punctuationSide, PLAIN_CJK_COMPOSITION } from './cjkPunctuation';
10
+ export type { CjkComposition, PunctuationSide } from './cjkPunctuation';
8
11
  /** {@link measureBlock} through `cache`: the same text, font, width,
9
12
  * leading and options measured before come back from it (a copy). A
10
13
  * measurement with `options.keepBreaks` or `options.restWidths` is never
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/measure/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAMpF,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC/G,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AACxG,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAwC1C;;;;;;;+CAO+C;AAC/C,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,mBAAmB,GAAG,SAAS,EACxC,KAAK,EAAE,gBAAgB,GACtB,aAAa,CAIf;AAED;;4CAE4C;AAC5C,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,UAAU,EAAE,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,mBAAmB,GAAG,SAAS,EACxC,KAAK,EAAE,gBAAgB,GACtB,aAAa,CAIf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/measure/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAMpF,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC/G,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AACxG,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzK,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAwCxE;;;;;;;+CAO+C;AAC/C,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,mBAAmB,GAAG,SAAS,EACxC,KAAK,EAAE,gBAAgB,GACtB,aAAa,CAIf;AAED;;4CAE4C;AAC5C,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,UAAU,EAAE,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,mBAAmB,GAAG,SAAS,EACxC,KAAK,EAAE,gBAAgB,GACtB,aAAa,CAIf"}
@@ -6,6 +6,8 @@ export { buildFontString, initHyphenator, clearMeasurementCache, createMeasureme
6
6
  export { measureGlyphWidth, measureTextWidth } from './canvas';
7
7
  export { measureBlock } from './plain';
8
8
  export { measureRichBlock } from './rich';
9
+ export { setCjkLineBreak, getCjkLineBreak } from './cjkClasses';
10
+ export { setCjkComposition, getCjkComposition, cjkCompositionOf, cjkCompositionKey, punctuationAdvance, punctuationSide, PLAIN_CJK_COMPOSITION } from './cjkPunctuation';
9
11
  /** The caches that hold measurements made with the line-breaking options
10
12
  * added after postext 1.4 (`breakAfterDashes`, `optimalRagged`,
11
13
  * `breakAfterHyphens`, `hyphenateCompounds: false`, `repeatHyphen`), per
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/measure/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/measure/index.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,12 @@ import type { InlineSpan } from '../parse';
8
8
  * and the hyphen a break adds — and a
9
9
  * segment holding any linked character takes that link's `href` (a word
10
10
  * glued to the link text, like its closing full stop, is part of the link
11
- * area). Returns `lines` itself when nothing is linked, or when the
12
- * segments cannot be matched (the block then simply has no live links).
11
+ * area). Characters the layout added (`inserted`: the 《》 of
12
+ * `cjk.bookTitleMark: 'brackets'`, which are spans, and a warichu note's
13
+ * brackets, which the composer adds and no span holds) are no character of
14
+ * the text: their spans and segments are passed over, and never linked.
15
+ * Returns `lines` itself when nothing is linked, or when the segments
16
+ * cannot be matched (the block then simply has no live links).
13
17
  */
14
18
  export declare function linkSegments(lines: VDTLine[], spans: readonly InlineSpan[]): VDTLine[];
15
19
  //# sourceMappingURL=links.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/measure/links.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,QAAQ,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA2B3C;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,OAAO,EAAE,CA+DtF"}
1
+ {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/measure/links.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,QAAQ,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA4B3C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,OAAO,EAAE,CAoEtF"}