postext 1.25.4 → 1.26.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 (214) hide show
  1. package/dist/__tests__/cjk/headingNumberMark.test.d.ts +2 -0
  2. package/dist/__tests__/cjk/headingNumberMark.test.d.ts.map +1 -0
  3. package/dist/__tests__/cjk/headingNumberMark.test.js +108 -0
  4. package/dist/__tests__/cjk/headingNumberMark.test.js.map +1 -0
  5. package/dist/__tests__/cjk/japaneseDash.test.d.ts +2 -0
  6. package/dist/__tests__/cjk/japaneseDash.test.d.ts.map +1 -0
  7. package/dist/__tests__/cjk/japaneseDash.test.js +250 -0
  8. package/dist/__tests__/cjk/japaneseDash.test.js.map +1 -0
  9. package/dist/__tests__/cjk/japaneseSpacing.test.js +1 -1
  10. package/dist/__tests__/cjk/punctuation.test.js +5 -3
  11. package/dist/__tests__/cjk/punctuation.test.js.map +1 -1
  12. package/dist/__tests__/columnRuleBands.test.js +47 -0
  13. package/dist/__tests__/columnRuleBands.test.js.map +1 -1
  14. package/dist/__tests__/comics/canvas.test.js +38 -1
  15. package/dist/__tests__/comics/canvas.test.js.map +1 -1
  16. package/dist/__tests__/comics/html.test.js +16 -3
  17. package/dist/__tests__/comics/html.test.js.map +1 -1
  18. package/dist/__tests__/design/cjkDesignDash.test.js +7 -4
  19. package/dist/__tests__/design/cjkDesignDash.test.js.map +1 -1
  20. package/dist/__tests__/englishApostropheHyphenation.test.d.ts +2 -0
  21. package/dist/__tests__/englishApostropheHyphenation.test.d.ts.map +1 -0
  22. package/dist/__tests__/englishApostropheHyphenation.test.js +47 -0
  23. package/dist/__tests__/englishApostropheHyphenation.test.js.map +1 -0
  24. package/dist/__tests__/exports.test.js +1 -0
  25. package/dist/__tests__/exports.test.js.map +1 -1
  26. package/dist/__tests__/leaderMinRepeats.test.d.ts +2 -0
  27. package/dist/__tests__/leaderMinRepeats.test.d.ts.map +1 -0
  28. package/dist/__tests__/leaderMinRepeats.test.js +109 -0
  29. package/dist/__tests__/leaderMinRepeats.test.js.map +1 -0
  30. package/dist/__tests__/pipeline/footnoteRuntTracking.test.d.ts +2 -0
  31. package/dist/__tests__/pipeline/footnoteRuntTracking.test.d.ts.map +1 -0
  32. package/dist/__tests__/pipeline/footnoteRuntTracking.test.js +90 -0
  33. package/dist/__tests__/pipeline/footnoteRuntTracking.test.js.map +1 -0
  34. package/dist/__tests__/pipeline/orderedNumberAlign.test.d.ts +2 -0
  35. package/dist/__tests__/pipeline/orderedNumberAlign.test.d.ts.map +1 -0
  36. package/dist/__tests__/pipeline/orderedNumberAlign.test.js +108 -0
  37. package/dist/__tests__/pipeline/orderedNumberAlign.test.js.map +1 -0
  38. package/dist/__tests__/pipeline/trailingCapColumnNote.test.d.ts +2 -0
  39. package/dist/__tests__/pipeline/trailingCapColumnNote.test.d.ts.map +1 -0
  40. package/dist/__tests__/pipeline/trailingCapColumnNote.test.js +63 -0
  41. package/dist/__tests__/pipeline/trailingCapColumnNote.test.js.map +1 -0
  42. package/dist/__tests__/pipeline/trailingCapFloatHead.test.d.ts +2 -0
  43. package/dist/__tests__/pipeline/trailingCapFloatHead.test.d.ts.map +1 -0
  44. package/dist/__tests__/pipeline/trailingCapFloatHead.test.js +91 -0
  45. package/dist/__tests__/pipeline/trailingCapFloatHead.test.js.map +1 -0
  46. package/dist/__tests__/rtl/arabicLeadingNumbers.test.d.ts +2 -0
  47. package/dist/__tests__/rtl/arabicLeadingNumbers.test.d.ts.map +1 -0
  48. package/dist/__tests__/rtl/arabicLeadingNumbers.test.js +186 -0
  49. package/dist/__tests__/rtl/arabicLeadingNumbers.test.js.map +1 -0
  50. package/dist/__tests__/rtl/listMarkerDirection.test.d.ts +2 -0
  51. package/dist/__tests__/rtl/listMarkerDirection.test.d.ts.map +1 -0
  52. package/dist/__tests__/rtl/listMarkerDirection.test.js +197 -0
  53. package/dist/__tests__/rtl/listMarkerDirection.test.js.map +1 -0
  54. package/dist/__tests__/trackedLigatures.test.d.ts +2 -0
  55. package/dist/__tests__/trackedLigatures.test.d.ts.map +1 -0
  56. package/dist/__tests__/trackedLigatures.test.js +230 -0
  57. package/dist/__tests__/trackedLigatures.test.js.map +1 -0
  58. package/dist/__tests__/vectorRasterScale.test.d.ts +2 -0
  59. package/dist/__tests__/vectorRasterScale.test.d.ts.map +1 -0
  60. package/dist/__tests__/vectorRasterScale.test.js +304 -0
  61. package/dist/__tests__/vectorRasterScale.test.js.map +1 -0
  62. package/dist/bidi.d.ts +43 -3
  63. package/dist/bidi.d.ts.map +1 -1
  64. package/dist/bidi.js +29 -7
  65. package/dist/bidi.js.map +1 -1
  66. package/dist/canvas-backend/blockRender.d.ts.map +1 -1
  67. package/dist/canvas-backend/blockRender.js +43 -5
  68. package/dist/canvas-backend/blockRender.js.map +1 -1
  69. package/dist/canvas-backend/comic.d.ts +8 -4
  70. package/dist/canvas-backend/comic.d.ts.map +1 -1
  71. package/dist/canvas-backend/comic.js +13 -6
  72. package/dist/canvas-backend/comic.js.map +1 -1
  73. package/dist/canvas-backend/deviceScale.d.ts +31 -0
  74. package/dist/canvas-backend/deviceScale.d.ts.map +1 -0
  75. package/dist/canvas-backend/deviceScale.js +45 -0
  76. package/dist/canvas-backend/deviceScale.js.map +1 -0
  77. package/dist/canvas-backend/index.d.ts +5 -1
  78. package/dist/canvas-backend/index.d.ts.map +1 -1
  79. package/dist/canvas-backend/index.js.map +1 -1
  80. package/dist/canvas-backend/renderResourceBlock.d.ts +5 -3
  81. package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
  82. package/dist/canvas-backend/renderResourceBlock.js +39 -6
  83. package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
  84. package/dist/canvas-backend/trackedText.d.ts +55 -0
  85. package/dist/canvas-backend/trackedText.d.ts.map +1 -0
  86. package/dist/canvas-backend/trackedText.js +145 -0
  87. package/dist/canvas-backend/trackedText.js.map +1 -0
  88. package/dist/canvas-backend/wordRuns.d.ts +4 -0
  89. package/dist/canvas-backend/wordRuns.d.ts.map +1 -1
  90. package/dist/canvas-backend/wordRuns.js +9 -1
  91. package/dist/canvas-backend/wordRuns.js.map +1 -1
  92. package/dist/columnRule.d.ts +2 -1
  93. package/dist/columnRule.d.ts.map +1 -1
  94. package/dist/columnRule.js +11 -3
  95. package/dist/columnRule.js.map +1 -1
  96. package/dist/comics/layoutPage.d.ts.map +1 -1
  97. package/dist/comics/layoutPage.js +54 -2
  98. package/dist/comics/layoutPage.js.map +1 -1
  99. package/dist/comics/lettering/__tests__/ellipsisFace.test.d.ts +2 -0
  100. package/dist/comics/lettering/__tests__/ellipsisFace.test.d.ts.map +1 -0
  101. package/dist/comics/lettering/__tests__/ellipsisFace.test.js +54 -0
  102. package/dist/comics/lettering/__tests__/ellipsisFace.test.js.map +1 -0
  103. package/dist/comics/lettering/__tests__/polish.test.js +8 -0
  104. package/dist/comics/lettering/__tests__/polish.test.js.map +1 -1
  105. package/dist/comics/lettering/__tests__/round4.test.d.ts +2 -0
  106. package/dist/comics/lettering/__tests__/round4.test.d.ts.map +1 -0
  107. package/dist/comics/lettering/__tests__/round4.test.js +212 -0
  108. package/dist/comics/lettering/__tests__/round4.test.js.map +1 -0
  109. package/dist/comics/lettering/letter.js +2 -2
  110. package/dist/comics/lettering/letter.js.map +1 -1
  111. package/dist/comics/lettering/placement.d.ts +10 -3
  112. package/dist/comics/lettering/placement.d.ts.map +1 -1
  113. package/dist/comics/lettering/placement.js +162 -22
  114. package/dist/comics/lettering/placement.js.map +1 -1
  115. package/dist/comics/lettering/text.d.ts.map +1 -1
  116. package/dist/comics/lettering/text.js +25 -3
  117. package/dist/comics/lettering/text.js.map +1 -1
  118. package/dist/comics/lettering/types.d.ts +29 -2
  119. package/dist/comics/lettering/types.d.ts.map +1 -1
  120. package/dist/defaults/orderedLists.d.ts +1 -0
  121. package/dist/defaults/orderedLists.d.ts.map +1 -1
  122. package/dist/defaults/orderedLists.js +7 -0
  123. package/dist/defaults/orderedLists.js.map +1 -1
  124. package/dist/design/bidiText.d.ts +5 -2
  125. package/dist/design/bidiText.d.ts.map +1 -1
  126. package/dist/design/bidiText.js +7 -4
  127. package/dist/design/bidiText.js.map +1 -1
  128. package/dist/design/layout.d.ts +5 -0
  129. package/dist/design/layout.d.ts.map +1 -1
  130. package/dist/design/layout.js +1 -1
  131. package/dist/design/layout.js.map +1 -1
  132. package/dist/html-backend.d.ts.map +1 -1
  133. package/dist/html-backend.js +32 -6
  134. package/dist/html-backend.js.map +1 -1
  135. package/dist/htmlComic.d.ts +2 -1
  136. package/dist/htmlComic.d.ts.map +1 -1
  137. package/dist/htmlComic.js +14 -1
  138. package/dist/htmlComic.js.map +1 -1
  139. package/dist/hyphenate.d.ts.map +1 -1
  140. package/dist/hyphenate.js +52 -0
  141. package/dist/hyphenate.js.map +1 -1
  142. package/dist/index.d.ts +3 -3
  143. package/dist/index.d.ts.map +1 -1
  144. package/dist/index.js +1 -1
  145. package/dist/index.js.map +1 -1
  146. package/dist/math/rasterCache.d.ts +7 -1
  147. package/dist/math/rasterCache.d.ts.map +1 -1
  148. package/dist/math/rasterCache.js +23 -11
  149. package/dist/math/rasterCache.js.map +1 -1
  150. package/dist/measure/bidiLines.d.ts +8 -0
  151. package/dist/measure/bidiLines.d.ts.map +1 -1
  152. package/dist/measure/bidiLines.js +13 -0
  153. package/dist/measure/bidiLines.js.map +1 -1
  154. package/dist/measure/cache.d.ts.map +1 -1
  155. package/dist/measure/cache.js +5 -3
  156. package/dist/measure/cache.js.map +1 -1
  157. package/dist/measure/cjkCompose.d.ts +10 -0
  158. package/dist/measure/cjkCompose.d.ts.map +1 -1
  159. package/dist/measure/cjkCompose.js +95 -19
  160. package/dist/measure/cjkCompose.js.map +1 -1
  161. package/dist/measure/cjkPunctuation.d.ts +10 -0
  162. package/dist/measure/cjkPunctuation.d.ts.map +1 -1
  163. package/dist/measure/cjkPunctuation.js +18 -1
  164. package/dist/measure/cjkPunctuation.js.map +1 -1
  165. package/dist/measure/hardBreaks.d.ts.map +1 -1
  166. package/dist/measure/hardBreaks.js +4 -1
  167. package/dist/measure/hardBreaks.js.map +1 -1
  168. package/dist/measure/leader.d.ts +6 -1
  169. package/dist/measure/leader.d.ts.map +1 -1
  170. package/dist/measure/leader.js +8 -3
  171. package/dist/measure/leader.js.map +1 -1
  172. package/dist/measure/plain.d.ts.map +1 -1
  173. package/dist/measure/plain.js +4 -2
  174. package/dist/measure/plain.js.map +1 -1
  175. package/dist/measure/rich.d.ts.map +1 -1
  176. package/dist/measure/rich.js +7 -4
  177. package/dist/measure/rich.js.map +1 -1
  178. package/dist/measure/types.d.ts +7 -0
  179. package/dist/measure/types.d.ts.map +1 -1
  180. package/dist/measure/types.js.map +1 -1
  181. package/dist/pipeline/build.d.ts.map +1 -1
  182. package/dist/pipeline/build.js +38 -5
  183. package/dist/pipeline/build.js.map +1 -1
  184. package/dist/pipeline/buildBlockKind.d.ts +5 -0
  185. package/dist/pipeline/buildBlockKind.d.ts.map +1 -1
  186. package/dist/pipeline/buildBlockKind.js +1 -0
  187. package/dist/pipeline/buildBlockKind.js.map +1 -1
  188. package/dist/pipeline/calloutLayout.d.ts.map +1 -1
  189. package/dist/pipeline/calloutLayout.js +8 -4
  190. package/dist/pipeline/calloutLayout.js.map +1 -1
  191. package/dist/pipeline/citations.d.ts.map +1 -1
  192. package/dist/pipeline/citations.js +52 -6
  193. package/dist/pipeline/citations.js.map +1 -1
  194. package/dist/pipeline/config.d.ts +6 -0
  195. package/dist/pipeline/config.d.ts.map +1 -1
  196. package/dist/pipeline/config.js +12 -1
  197. package/dist/pipeline/config.js.map +1 -1
  198. package/dist/pipeline/headerFooter.d.ts +2 -0
  199. package/dist/pipeline/headerFooter.d.ts.map +1 -1
  200. package/dist/pipeline/headerFooter.js +3 -1
  201. package/dist/pipeline/headerFooter.js.map +1 -1
  202. package/dist/pipeline/lists.d.ts +8 -0
  203. package/dist/pipeline/lists.d.ts.map +1 -1
  204. package/dist/pipeline/lists.js +18 -1
  205. package/dist/pipeline/lists.js.map +1 -1
  206. package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
  207. package/dist/pipeline/measureContentBlock.js +3 -0
  208. package/dist/pipeline/measureContentBlock.js.map +1 -1
  209. package/dist/types.d.ts +13 -0
  210. package/dist/types.d.ts.map +1 -1
  211. package/dist/vdt.d.ts +9 -0
  212. package/dist/vdt.d.ts.map +1 -1
  213. package/dist/vdt.js.map +1 -1
  214. package/package.json +1 -1
@@ -5,15 +5,17 @@ import { hasCJK } from './cjk';
5
5
  import { getCjkLineBreak } from './cjkClasses';
6
6
  import { getMeasureRegion, getMeasureUprightDigits, getMeasureWritingMode } from './vertical';
7
7
  import { cjkCompositionKey, getCjkComposition } from './cjkPunctuation';
8
- import { getMeasureDirection } from './bidiLines';
8
+ import { getMeasureArabicNumbers, getMeasureDirection } from './bidiLines';
9
9
  import { evictionsSince, measurementGeneration } from './canvas';
10
10
  /** Options that change a block's lines, joined into its cache key. The
11
11
  * active hyphenation dictionary is one: soft hyphens (and the syllables an
12
12
  * overlong word is divided at) depend on it. So is a right-to-left base
13
13
  * direction (`MeasureBlockOptions.direction`, else the build's), which
14
- * joins the key only when set, so every left-to-right key is unchanged. */
14
+ * joins the key only when set, so every left-to-right key is unchanged;
15
+ * and the Arabic reading of leading numbers (#665), in the documents
16
+ * that have it. */
15
17
  function optionsKey(options) {
16
- return `${(options?.direction ?? getMeasureDirection()) === 'rtl' ? 'rtl\x00' : ''}${options?.textAlign ?? ''}\x00${options?.hyphenate ?? ''}\x00${options?.firstLineIndentPx ?? ''}\x00${options?.hangingIndent ?? ''}\x00${options?.optimal ?? ''}\x00${options?.maxStretchRatio ?? ''}\x00${options?.minShrinkRatio ?? ''}\x00${options?.runtPenalty ?? ''}\x00${options?.runtMinCharacters ?? ''}\x00${options?.looseness ?? ''}\x00${options?.letterSpacingPx ?? ''}\x00${options?.hyphenationZonePx ?? ''}\x00${getHyphenationLocale()}${options?.justifyTrackingPx ? `\x00${options.justifyTrackingPx}` : ''}${options?.runtGraded ? '\x00rg' : ''}${options?.labelColumnPx !== undefined ? `\x00lc${options.labelColumnPx}` : ''}${options?.avoidHyphenAtLines?.length ? `\x00ah${options.avoidHyphenAtLines.join(',')}` : ''}${options?.kashida ? `\x00k${options.kashida.patterns}:${options.kashida.perWord}:${options.kashida.maxLengthPx}` : ''}${options?.lineIndentsPx?.length ? `\x00li${options.lineIndentsPx.join(',')}` : ''}${options?.tabs ? `\x00tb${JSON.stringify(options.tabs)}` : ''}`;
18
+ return `${(options?.direction ?? getMeasureDirection()) === 'rtl' ? 'rtl\x00' : ''}${getMeasureArabicNumbers() ? 'an\x00' : ''}${options?.textAlign ?? ''}\x00${options?.hyphenate ?? ''}\x00${options?.firstLineIndentPx ?? ''}\x00${options?.hangingIndent ?? ''}\x00${options?.optimal ?? ''}\x00${options?.maxStretchRatio ?? ''}\x00${options?.minShrinkRatio ?? ''}\x00${options?.runtPenalty ?? ''}\x00${options?.runtMinCharacters ?? ''}\x00${options?.looseness ?? ''}\x00${options?.letterSpacingPx ?? ''}\x00${options?.hyphenationZonePx ?? ''}\x00${getHyphenationLocale()}${options?.justifyTrackingPx ? `\x00${options.justifyTrackingPx}` : ''}${options?.runtGraded ? '\x00rg' : ''}${options?.labelColumnPx !== undefined ? `\x00lc${options.labelColumnPx}` : ''}${options?.labelLength ? `\x00ll${options.labelLength}` : ''}${options?.avoidHyphenAtLines?.length ? `\x00ah${options.avoidHyphenAtLines.join(',')}` : ''}${options?.kashida ? `\x00k${options.kashida.patterns}:${options.kashida.perWord}:${options.kashida.maxLengthPx}` : ''}${options?.lineIndentsPx?.length ? `\x00li${options.lineIndentsPx.join(',')}` : ''}${options?.tabs ? `\x00tb${JSON.stringify(options.tabs)}` : ''}`;
17
19
  }
18
20
  /** The CJK line-break level and composition (punctuation widths, hanging,
19
21
  * the Han–Latin space), joined to the key of a text that holds CJK only,
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/measure/cache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjE;;;;4EAI4E;AAC5E,SAAS,UAAU,CAAC,OAAwC;IAC1D,OAAO,GAAG,CAAC,OAAO,EAAE,SAAS,IAAI,mBAAmB,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,IAAI,EAAE,OAAO,OAAO,EAAE,SAAS,IAAI,EAAE,OAAO,OAAO,EAAE,iBAAiB,IAAI,EAAE,OAAO,OAAO,EAAE,aAAa,IAAI,EAAE,OAAO,OAAO,EAAE,OAAO,IAAI,EAAE,OAAO,OAAO,EAAE,eAAe,IAAI,EAAE,OAAO,OAAO,EAAE,cAAc,IAAI,EAAE,OAAO,OAAO,EAAE,WAAW,IAAI,EAAE,OAAO,OAAO,EAAE,iBAAiB,IAAI,EAAE,OAAO,OAAO,EAAE,SAAS,IAAI,EAAE,OAAO,OAAO,EAAE,eAAe,IAAI,EAAE,OAAO,OAAO,EAAE,iBAAiB,IAAI,EAAE,OAAO,oBAAoB,EAAE,GAAG,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACnjC,CAAC;AAED;;;;6DAI6D;AAC7D,SAAS,MAAM,CAAC,IAAY,EAAE,OAAwC;IACpE,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,WAAW,IAAI,qBAAqB,EAAE,CAAC,KAAK,aAAa,CAAC;IACrF,wEAAwE;IACxE,4CAA4C;IAC5C,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;IACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,gBAAgB,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,yEAAyE;IACzE,MAAM,EAAE,GAAG,OAAO,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,OAAO,WAAW,OAAO,EAAE,YAAY,IAAI,eAAe,EAAE,IAAI,iBAAiB,CAAC,OAAO,EAAE,cAAc,IAAI,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;AAC/I,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAY,EACZ,IAAY,EACZ,UAAkB,EAClB,YAAoB,EACpB,OAAwC;IAExC,OAAO,GAAG,IAAI,OAAO,IAAI,OAAO,UAAU,OAAO,YAAY,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;AACpH,CAAC;AAED;oDACoD;AACpD,SAAS,YAAY,CAAC,IAAqC;IACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9H,OAAO,SAAS,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACtE,CAAC;AAED;;4EAE4E;AAC5E,SAAS,YAAY,CAAC,IAAgB;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;IAC/B,OAAO,MAAM,IAAI,CAAC,IAAK,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACxF,CAAC;AAED;;;6DAG6D;AAC7D,SAAS,kBAAkB,CAAC,CAAa;IACvC,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACjK,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,CAAC,YAAY;QAAE,GAAG,IAAI,OAAO,CAAC,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,YAAY,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;IAC7H,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS;QAAE,GAAG,IAAI,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC;IAC7D,IAAI,CAAC,CAAC,SAAS;QAAE,GAAG,IAAI,OAAO,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACrE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACjB,GAAG,IAAI,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,IAAI,CAAC,CAAC,UAAU,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;QACjH,sEAAsE;QACtE,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ;YAAE,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpL,CAAC;IACD,IAAI,CAAC,CAAC,OAAO;QAAE,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;IACpJ,IAAI,CAAC,CAAC,QAAQ;QAAE,GAAG,IAAI,MAAM,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK;QAAE,GAAG,IAAI,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACrG,IAAI,CAAC,CAAC,QAAQ;QAAE,GAAG,IAAI,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;IACrG,IAAI,CAAC,CAAC,MAAM;QAAE,GAAG,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;IACvM,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAmB,EACnB,KAAuC,EACvC,UAAkB,EAClB,YAAoB,EACpB,OAAwC;IAExC,yEAAyE;IACzE,0EAA0E;IAC1E,mDAAmD;IACnD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,EAAE,UAAU,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzvB,OAAO,QAAQ,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,UAAU,OAAO,YAAY,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;AAC7M,CAAC;AAED;;2CAE2C;AAC3C,SAAS,UAAU,CAAC,KAAmB,EAAE,OAAe;IACtD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACnG,OAAO,UAAU,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC7G,CAAC;AAED;;;cAGc;AACd,SAAS,kBAAkB,CAAC,KAAoB;IAC9C,OAAO;QACL,GAAG,KAAK;QACR,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7B,GAAG,CAAC;YACJ,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;YACnB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;SACrE,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED;;+DAE+D;AAC/D,SAAS,cAAc,CAAC,GAAW,EAAE,QAA6B;IAChE,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;IAC7D,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;2EAE2E;AAC3E,SAAS,OAAO,CAAC,KAAuB;IACtC,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;IAC3C,IAAI,KAAK,CAAC,WAAW,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IACnD,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC9D,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,GAAG;YAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;;YAC1B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;gBAAE,IAAI,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC;oBAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5G,CAAC;IACD,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC;IAC/B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,IAAY,EACZ,UAAkB,EAClB,YAAoB,EACpB,OAAwC,EACxC,KAAuB;IAEvB,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,MAAM;QAAE,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC3E,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAmB,EACnB,UAAkB,EAClB,QAAgB,EAChB,UAAkB,EAClB,cAAsB,EACtB,UAAkB,EAClB,YAAoB,EACpB,OAAwC,EACxC,KAAuB;IAEvB,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC5H,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,MAAM;QAAE,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC5H,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/measure/cache.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,7 @@ import type { InlineSpan } from '../parse';
36
36
  import type { VDTSegmentMarks } from '../vdt';
37
37
  import { type MeasuredBlock, type MeasureBlockOptions } from './types';
38
38
  import { type CjkLineBreakLevel } from './cjkClasses';
39
+ import { type CjkComposition } from './cjkPunctuation';
39
40
  /**
40
41
  * Whether a paragraph is set by the CJK composer: it holds more CJK letters
41
42
  * than word spaces. A word space is a run of spaces between two characters
@@ -53,6 +54,15 @@ export declare function isCjkParagraph(text: string): boolean;
53
54
  * CJK letters than word spaces (see {@link isCjkParagraph}). Both
54
55
  * measuring paths ask this, so they agree. */
55
56
  export declare function composesAsCjk(text: string): boolean;
57
+ /**
58
+ * Whether the CJK composer sets a paragraph that is nothing but a row of
59
+ * dashes (――――――, a rule the author typed between two passages): in a
60
+ * Chinese or Japanese document it does (#680), so the row is drawn as one
61
+ * rule (`routeSharedMarks`) where the word-by-word path would paint each
62
+ * dash at its face's advance, a stroke per cell. The dashes alone say
63
+ * nothing about the language ({@link composesAsCjk}); the document does.
64
+ */
65
+ export declare function composesDashRow(text: string, c?: CjkComposition): boolean;
56
66
  /** The marks a span sets on its characters (#193, #421), the defaults
57
67
  * of what the span leaves unset filled in (`cjk.emphasisMark` has filled
58
68
  * the region's in already, `pipeline/annotations.ts`): emphasis dots a
@@ -1 +1 @@
1
- {"version":3,"file":"cjkCompose.d.ts","sourceRoot":"","sources":["../../src/measure/cjkCompose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAA4B,UAAU,EAAiB,MAAM,UAAU,CAAC;AACpF,OAAO,KAAK,EAAwD,eAAe,EAAc,MAAM,QAAQ,CAAC;AAGhH,OAAO,EAA2D,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAmBhI,OAAO,EAeL,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AAkDtB;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAsBpD;AAED;;;+CAG+C;AAC/C,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AA2ID;;;;uCAIuC;AACvC,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,CAqB1F;AAg8ED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,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,GACvC,aAAa,CAuIf;AAaD;6BAC6B;AAC7B,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CACtC;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,GAAE,iBAAqC,GAAG,aAAa,CAoC9K"}
1
+ {"version":3,"file":"cjkCompose.d.ts","sourceRoot":"","sources":["../../src/measure/cjkCompose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAA4B,UAAU,EAAiB,MAAM,UAAU,CAAC;AACpF,OAAO,KAAK,EAAwD,eAAe,EAAc,MAAM,QAAQ,CAAC;AAGhH,OAAO,EAA2D,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAmBhI,OAAO,EAeL,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AAStB,OAAO,EAwBL,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAC;AAgB1B;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAsBpD;AAED;;;+CAG+C;AAC/C,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAKD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,GAAE,cAAoC,GAAG,OAAO,CAE9F;AA2ID;;;;uCAIuC;AACvC,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,CAqB1F;AA0gFD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,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,GACvC,aAAa,CAyIf;AAaD;6BAC6B;AAC7B,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CACtC;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,GAAE,iBAAqC,GAAG,aAAa,CAoC9K"}
@@ -46,7 +46,7 @@ import { cellAdvance, flowTextWidth, fontEm, fontFamilyOf, getMeasureRegion, get
46
46
  import { isUprightMarkPair, verticalRuns } from '../writingMode';
47
47
  import { foldWidth, isZhuyin, kuntenGeometry, noteRowBaselines, readingAdvance, readingBaseline, rubyGeometry, splitNote, withFontSize, ZHUYIN_SIZE_RATIO } from './cjkAnnotate';
48
48
  import { boxesWidth, fullSizeKana, layoutJisRuby, layoutJukugo } from './rubyJis';
49
- import { applyLineEdges, blankEnd, blankStart, boxCut, carryStopBlank, compositionFor, compressPair, DEFAULT_TITLE_MIN_CHARS, getCjkComposition, isLatinSpacingHan, isLatinSpacingLatin, isJlreqSpacing, isPlainComposition, jlreqShrinkStep, latinSpacingPx, lineEdgeCut, mayHang, punctuationBox, punctuationShrink, routesSharedMarks, shrinkPunctuation, shrinkStep, } from './cjkPunctuation';
49
+ import { applyLineEdges, blankEnd, blankStart, boxCut, carryStopBlank, compositionFor, compressPair, DEFAULT_TITLE_MIN_CHARS, getCjkComposition, isLatinSpacingHan, isLatinSpacingLatin, isJlreqSpacing, isPlainComposition, jlreqShrinkStep, latinSpacingPx, lineEdgeCut, joinsDashPairs, mayHang, punctuationBox, punctuationShrink, routesSharedMarks, shrinkPunctuation, shrinkStep, } from './cjkPunctuation';
50
50
  /** Fit tolerance of the breaker (px): running sums of many widths may
51
51
  * land a hair past a measure they fill exactly. */
52
52
  const FIT_EPS = 1e-6;
@@ -103,6 +103,19 @@ export function isCjkParagraph(text) {
103
103
  export function composesAsCjk(text) {
104
104
  return hasCJK(text) && isCjkParagraph(text);
105
105
  }
106
+ /** A paragraph that is a row of dashes and nothing else. */
107
+ const DASH_ROW_RE = /^\s*(?:\u2014{2,}|\u2015{2,})\s*$/;
108
+ /**
109
+ * Whether the CJK composer sets a paragraph that is nothing but a row of
110
+ * dashes (――――――, a rule the author typed between two passages): in a
111
+ * Chinese or Japanese document it does (#680), so the row is drawn as one
112
+ * rule (`routeSharedMarks`) where the word-by-word path would paint each
113
+ * dash at its face's advance, a stroke per cell. The dashes alone say
114
+ * nothing about the language ({@link composesAsCjk}); the document does.
115
+ */
116
+ export function composesDashRow(text, c = getCjkComposition()) {
117
+ return (c.language === 'ja' || c.language === 'zh') && DASH_ROW_RE.test(text);
118
+ }
106
119
  /** The marks a span sets on its characters (#193, #421), the defaults
107
120
  * of what the span leaves unset filled in (`cjk.emphasisMark` has filled
108
121
  * the region's in already, `pipeline/annotations.ts`): emphasis dots a
@@ -854,7 +867,7 @@ function buildUnits(spans, fonts, letterSpacingPx, vertical = false, route = fal
854
867
  if (vertical && getMeasureRegion() === 'japan')
855
868
  combineMarkPairs(units, letterSpacingPx);
856
869
  if (route)
857
- routeSharedMarks(units, letterSpacingPx, vertical);
870
+ routeSharedMarks(units, letterSpacingPx, vertical, route === 'dashes');
858
871
  return units;
859
872
  }
860
873
  /** Give each kanbun mark (#430) to the last unit its spans made (a space
@@ -1030,7 +1043,14 @@ function unitScript(v) {
1030
1043
  * it does any mark's (`cjk.punctuationWidth`). A glyph one em wide already changes
1031
1044
  * nothing. Next to Western text on both sides (`He said “yes”`) they keep
1032
1045
  * their own advance, and so do they in Japanese and Korean text (the
1033
- * composer calls this for Chinese text only, `routesSharedMarks`).
1046
+ * composer routes them for Chinese text only, `routesSharedMarks`). In
1047
+ * Japanese text (`dashesOnly`, #680) only a two-em dash is set here: its
1048
+ * dashes keep the advance the face gives them and are stretched into one
1049
+ * stroke, as JLReq's double dash is one mark.
1050
+ *
1051
+ * A row of dashes longer than two (a rule drawn with ――――) is cut into
1052
+ * pairs, and an odd dash at its end: each runs on into the dashes it
1053
+ * touches (`continuesDash`), so the row is one rule.
1034
1054
  *
1035
1055
  * Down a vertical line (`vertical`) every mark stands in a cell of its own
1036
1056
  * already; only the 破折号 is set here: the font's vertical form of a dash
@@ -1040,7 +1060,7 @@ function unitScript(v) {
1040
1060
  * frame (sideways), the stretch running down the column
1041
1061
  * (`VDTLineSegment.inkScale`).
1042
1062
  */
1043
- function routeSharedMarks(units, letterSpacingPx, vertical = false) {
1063
+ function routeSharedMarks(units, letterSpacingPx, vertical = false, dashesOnly = false) {
1044
1064
  if (!units.some(isSharedMarkUnit))
1045
1065
  return;
1046
1066
  // The script of the nearest unit on each side that is not transparent
@@ -1063,10 +1083,16 @@ function routeSharedMarks(units, letterSpacingPx, vertical = false) {
1063
1083
  const u = units[k];
1064
1084
  if (!isSharedMarkUnit(u))
1065
1085
  continue;
1066
- const dash = u.graphemes === 2 && (u.text[0] === '\u2014' || u.text[0] === '\u2015');
1067
- // Vertical text: a 破折号 only, and not one whose orientation the
1068
- // author set (`:upright[…]`, `:sideways[…]`).
1069
- if (vertical && (!dash || u.orient))
1086
+ // A row of dashes (――――) is one rule: a pair, or the odd dash of the
1087
+ // row, runs on into the dashes that touch it (#680).
1088
+ const joinsBefore = continuesDash(units[k - 1], u);
1089
+ const joinsAfter = continuesDash(u, units[k + 1]);
1090
+ const dashChar = !(vertical && u.orient) && (u.text[0] === '\u2014' || u.text[0] === '\u2015');
1091
+ const dash = dashChar && (u.graphemes === 2 || joinsBefore || joinsAfter);
1092
+ // Vertical text, and Japanese text in either direction: a dash pair
1093
+ // only, and not one whose orientation the author set (`:upright[…]`,
1094
+ // `:sideways[…]`).
1095
+ if ((vertical || dashesOnly) && !dash)
1070
1096
  continue;
1071
1097
  const b = before[k];
1072
1098
  const a = after[k];
@@ -1075,20 +1101,23 @@ function routeSharedMarks(units, letterSpacingPx, vertical = false) {
1075
1101
  const em = emOfFont(u.style.font);
1076
1102
  const font = u.style.font;
1077
1103
  let place;
1078
- const rule = dash ? dashRule(u.text[0], font, em, em + letterSpacingPx, vertical) : undefined;
1104
+ // Japanese text keeps each dash the advance its face gives it, so no
1105
+ // line moves; Chinese text gives it an em.
1106
+ const cell = dashesOnly ? u.width / u.graphemes : em + letterSpacingPx;
1107
+ const rule = dash ? dashRule(u.text[0], font, em, cell, vertical, u.graphemes, joinsBefore, joinsAfter) : undefined;
1079
1108
  if (rule) {
1080
1109
  place = rule.place;
1081
1110
  if (rule.scale !== undefined)
1082
1111
  u.scale = rule.scale;
1083
1112
  if (rule.shift !== undefined)
1084
1113
  u.shift = rule.shift;
1085
- if (vertical) {
1086
- // The cells keep their length down the line.
1114
+ if (vertical || dashesOnly) {
1115
+ // The cells keep their length along the line.
1087
1116
  u.place = place;
1088
1117
  continue;
1089
1118
  }
1090
1119
  }
1091
- else if (vertical) {
1120
+ else if (vertical || dashesOnly) {
1092
1121
  // No ink metrics: each dash in its vertical form, as it was.
1093
1122
  continue;
1094
1123
  }
@@ -1116,6 +1145,20 @@ function routeSharedMarks(units, letterSpacingPx, vertical = false) {
1116
1145
  u.place = place;
1117
1146
  }
1118
1147
  }
1148
+ /** The dash a unit is made of (— or ―): a pair, or a single dash; none for
1149
+ * a unit whose orientation the author set. */
1150
+ function dashOfUnit(u) {
1151
+ if (!u || u.orient || !isSharedMarkUnit(u))
1152
+ return undefined;
1153
+ const g = u.text[0];
1154
+ return g === '\u2014' || g === '\u2015' ? g : undefined;
1155
+ }
1156
+ /** Whether the dashes of `b` go on the rule of `a`, the unit before it:
1157
+ * the same dash in the same face, with nothing between them. */
1158
+ function continuesDash(a, b) {
1159
+ const g = dashOfUnit(a);
1160
+ return g !== undefined && g === dashOfUnit(b) && a.style.font === b.style.font && !b.zwspBefore && a.link === b.link;
1161
+ }
1119
1162
  /** How far past the join each dash of a 破折号 runs, em: the two strokes
1120
1163
  * overlap, so no seam shows between them at any resolution. */
1121
1164
  const DASH_JOIN_EM = 0.02;
@@ -1132,17 +1175,30 @@ const DASH_JOIN_EM = 0.02;
1132
1175
  * (`measureCentralBaseline`). Undefined when the measurer gives no ink
1133
1176
  * metrics, or when the dash already fills its em (a face whose two dashes
1134
1177
  * join by themselves). Down a vertical line (`vertical`) the scale is set
1135
- * even when it is 1: it tells the renderers to paint the dash turned.
1178
+ * even when it is 1: it tells the renderers to paint the dash turned. A
1179
+ * unit of a longer row (#680) overlaps the dashes it touches on that side
1180
+ * by the join instead of ending the side bearing short of its cells.
1136
1181
  */
1137
- function dashRule(g, font, em, cell, vertical = false) {
1182
+ function dashRule(g, font, em, cell, vertical = false,
1183
+ /** The dashes of the unit: a pair, or the odd dash of a longer row. */
1184
+ count = 2,
1185
+ /** The rule runs on from the dashes before the unit, and into those
1186
+ * after it: on that side it overlaps them instead of ending the face's
1187
+ * side bearing inside its cells. */
1188
+ joinsBefore = false, joinsAfter = false) {
1138
1189
  const ink = measureInkExtent(g, font);
1139
1190
  // No ink metrics, or a dash already drawn edge to edge across its em.
1140
1191
  if (!ink || (ink.start <= 0.01 * em && ink.end >= cell - 0.01 * em))
1141
1192
  return undefined;
1142
1193
  const side = Math.min(Math.max(ink.start, 0), 0.1 * em);
1143
1194
  const join = DASH_JOIN_EM * em;
1144
- const scale = (cell - side + join) / (ink.end - ink.start);
1145
- const place = [side - ink.start * scale, -join - ink.start * scale];
1195
+ // Where the unit's ink starts and ends in its cells, and the length of
1196
+ // each stroke: two strokes overlap by twice the join.
1197
+ const start = joinsBefore ? -join : side;
1198
+ const end = count * cell + (joinsAfter ? join : -side);
1199
+ const stroke = (end - start + (count - 1) * 2 * join) / count;
1200
+ const scale = stroke / (ink.end - ink.start);
1201
+ const place = count === 1 ? [start - ink.start * scale] : [start - ink.start * scale, end - stroke - cell - ink.start * scale];
1146
1202
  const box = measureInkBox(g, font);
1147
1203
  const shift = box ? (box.ascent - box.descent) / 2 - measureCentralBaseline(fontFamilyOf(font)) * em : 0;
1148
1204
  return {
@@ -1186,6 +1242,19 @@ const QUESTION_MARKS = new Set(['?', '!', '‼', '⁇', '⁈', '⁉']);
1186
1242
  function charUnitIn(u, set) {
1187
1243
  return !!u && u.kind === 'text' && !u.run && u.graphemes === 1 && !u.ruby && !u.kunten && !u.note && !u.orient && !u.style.script && set.has(u.text);
1188
1244
  }
1245
+ /** The unit that holds the last character of a block's opening label
1246
+ * (`MeasureBlockOptions.labelLength`, UTF-16 units of the text): the
1247
+ * units before it and itself are the label. -1 when the text is shorter
1248
+ * than the label. */
1249
+ function labelEndUnit(units, labelLength) {
1250
+ let seen = 0;
1251
+ for (let k = 0; k < units.length; k++) {
1252
+ seen += units[k].text.length;
1253
+ if (seen >= labelLength)
1254
+ return k;
1255
+ }
1256
+ return -1;
1257
+ }
1189
1258
  /**
1190
1259
  * The punctuation widths and Han–Latin spaces of a paragraph's units, as
1191
1260
  * the composition sets them (see `cjkPunctuation.ts`): each full-width mark
@@ -1200,7 +1269,7 @@ function charUnitIn(u, set) {
1200
1269
  * ・ between kanji numerals is set solid (`Unit.solid`), and with
1201
1270
  * `spaceAfterQuestion` a ? or ! takes its one-em space (`Unit.aki`).
1202
1271
  */
1203
- function prepareUnits(units, c, letterSpacingPx) {
1272
+ function prepareUnits(units, c, letterSpacingPx, labelLength = 0) {
1204
1273
  const plain = isPlainComposition(c);
1205
1274
  // Down the line the mainland interpunct's cell is half an em already.
1206
1275
  if (plain && (c.region !== 'mainland' || c.vertical))
@@ -1223,10 +1292,15 @@ function prepareUnits(units, c, letterSpacingPx) {
1223
1292
  if (c.region === 'japan') {
1224
1293
  // 二、三日, 三・一四: the mark between two kanji numerals is its glyph
1225
1294
  // alone (JLReq §3.1.3), and the number is not broken there.
1295
+ // A heading's number is not half of a number with its title (#679):
1296
+ // the unit that ends it is where the rule stops reading.
1297
+ const labelEnd = labelLength > 0 ? labelEndUnit(units, labelLength) : -1;
1226
1298
  for (let k = 1; k + 1 < units.length; k++) {
1227
1299
  const u = units[k];
1228
1300
  if (!u.punct || (u.text !== '、' && u.text !== '・'))
1229
1301
  continue;
1302
+ if (k === labelEnd || k - 1 === labelEnd)
1303
+ continue;
1230
1304
  if (!charUnitIn(units[k - 1], KANJI_DIGITS) || !charUnitIn(units[k + 1], KANJI_DIGITS) || units[k + 1].glueBefore)
1231
1305
  continue;
1232
1306
  shrinkPunctuation(u.punct, u.punct.blank);
@@ -2711,8 +2785,10 @@ export function composeCjkParagraph(spans, normalFont, boldFont, italicFont, bol
2711
2785
  const composition = compositionFor(options?.cjkComposition ?? getCjkComposition(), vertical);
2712
2786
  // The marks Latin text shares with Chinese take Chinese boxes in Chinese
2713
2787
  // text only (`routesSharedMarks`).
2714
- const route = routesSharedMarks(composition, spans.map((s) => s.text).join(''));
2715
- const units = prepareUnits(buildAllUnits(spans, fonts, letterSpacingPx, vertical, route), composition, letterSpacingPx);
2788
+ const plainText = spans.map((s) => s.text).join('');
2789
+ // Japanese text: only its two-em dashes, drawn as one stroke (#680).
2790
+ const route = routesSharedMarks(composition, plainText) || (joinsDashPairs(composition, plainText) ? 'dashes' : false);
2791
+ const units = prepareUnits(buildAllUnits(spans, fonts, letterSpacingPx, vertical, route), composition, letterSpacingPx, options?.labelLength);
2716
2792
  // A bibliography label's column (#290).
2717
2793
  if (options?.labelColumnPx !== undefined) {
2718
2794
  setLabelTabs(units, (u) => u.token?.labelTab, options.labelColumnPx, (u, w) => {