postext 1.29.1 → 1.30.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 (300) hide show
  1. package/dist/__tests__/arabicLocale.test.js +5 -5
  2. package/dist/__tests__/arabicLocale.test.js.map +1 -1
  3. package/dist/__tests__/bundle/balloonPlacementPin.test.js +5 -4
  4. package/dist/__tests__/bundle/balloonPlacementPin.test.js.map +1 -1
  5. package/dist/__tests__/bundle/cjkRulesPin.test.js +8 -6
  6. package/dist/__tests__/bundle/cjkRulesPin.test.js.map +1 -1
  7. package/dist/__tests__/bundle/designOverflowPin.test.js +1 -1
  8. package/dist/__tests__/bundle/flowColumnsPin.test.js +4 -3
  9. package/dist/__tests__/bundle/flowColumnsPin.test.js.map +1 -1
  10. package/dist/__tests__/bundle/gridBalancingPin.test.js +5 -4
  11. package/dist/__tests__/bundle/gridBalancingPin.test.js.map +1 -1
  12. package/dist/__tests__/bundle/gridBreakRulesPin.test.js +14 -10
  13. package/dist/__tests__/bundle/gridBreakRulesPin.test.js.map +1 -1
  14. package/dist/__tests__/bundle/indexGroupSplitPin.test.js +4 -3
  15. package/dist/__tests__/bundle/indexGroupSplitPin.test.js.map +1 -1
  16. package/dist/__tests__/bundle/looseOrderPin.test.js +5 -4
  17. package/dist/__tests__/bundle/looseOrderPin.test.js.map +1 -1
  18. package/dist/__tests__/bundle/refLabelBreaksPin.test.js +5 -4
  19. package/dist/__tests__/bundle/refLabelBreaksPin.test.js.map +1 -1
  20. package/dist/__tests__/bundle/scriptContextPin.test.js +6 -5
  21. package/dist/__tests__/bundle/scriptContextPin.test.js.map +1 -1
  22. package/dist/__tests__/bundle/shapingLanguagePin.test.js +142 -46
  23. package/dist/__tests__/bundle/shapingLanguagePin.test.js.map +1 -1
  24. package/dist/__tests__/bundle/taskBoxPin.test.js +1 -1
  25. package/dist/__tests__/bundle/trailingStepPin.test.js +4 -3
  26. package/dist/__tests__/bundle/trailingStepPin.test.js.map +1 -1
  27. package/dist/__tests__/bundle/wideFloatStretchPin.test.js +4 -3
  28. package/dist/__tests__/bundle/wideFloatStretchPin.test.js.map +1 -1
  29. package/dist/__tests__/bundle.test.js +1 -1
  30. package/dist/__tests__/cellText.test.d.ts +2 -0
  31. package/dist/__tests__/cellText.test.d.ts.map +1 -0
  32. package/dist/__tests__/cellText.test.js +281 -0
  33. package/dist/__tests__/cellText.test.js.map +1 -0
  34. package/dist/__tests__/chineseLocale.test.js +24 -7
  35. package/dist/__tests__/chineseLocale.test.js.map +1 -1
  36. package/dist/__tests__/cjk/japaneseHtml.test.js +3 -3
  37. package/dist/__tests__/cjk/japaneseHtml.test.js.map +1 -1
  38. package/dist/__tests__/cjk/japaneseRuby.test.js +1 -1
  39. package/dist/__tests__/cjk/japaneseRuby.test.js.map +1 -1
  40. package/dist/__tests__/cjk/japaneseSegmentLanguage.test.js +3 -3
  41. package/dist/__tests__/cjk/japaneseSegmentLanguage.test.js.map +1 -1
  42. package/dist/__tests__/codeBlocks.test.js +1 -1
  43. package/dist/__tests__/contextState.test.d.ts +2 -0
  44. package/dist/__tests__/contextState.test.d.ts.map +1 -0
  45. package/dist/__tests__/contextState.test.js +478 -0
  46. package/dist/__tests__/contextState.test.js.map +1 -0
  47. package/dist/__tests__/contextText.test.d.ts +2 -0
  48. package/dist/__tests__/contextText.test.d.ts.map +1 -0
  49. package/dist/__tests__/contextText.test.js +371 -0
  50. package/dist/__tests__/contextText.test.js.map +1 -0
  51. package/dist/__tests__/design/designTextRender.test.js +8 -1
  52. package/dist/__tests__/design/designTextRender.test.js.map +1 -1
  53. package/dist/__tests__/exports.test.js +6 -0
  54. package/dist/__tests__/exports.test.js.map +1 -1
  55. package/dist/__tests__/fontUsage.test.js +40 -0
  56. package/dist/__tests__/fontUsage.test.js.map +1 -1
  57. package/dist/__tests__/hardBreaks.test.js +1 -1
  58. package/dist/__tests__/headingInlineMarks.test.js +1 -1
  59. package/dist/__tests__/html-backend.test.js +6 -2
  60. package/dist/__tests__/html-backend.test.js.map +1 -1
  61. package/dist/__tests__/japaneseNotes.test.js +4 -2
  62. package/dist/__tests__/japaneseNotes.test.js.map +1 -1
  63. package/dist/__tests__/lineEndPieces.test.d.ts +2 -0
  64. package/dist/__tests__/lineEndPieces.test.d.ts.map +1 -0
  65. package/dist/__tests__/lineEndPieces.test.js +374 -0
  66. package/dist/__tests__/lineEndPieces.test.js.map +1 -0
  67. package/dist/__tests__/mathSizeMigration.test.js +2 -2
  68. package/dist/__tests__/pipeline/calloutInlineResourceGap.test.js +1 -1
  69. package/dist/__tests__/pipeline/calloutSplitMinLinesChild.test.js +1 -1
  70. package/dist/__tests__/pipeline/colonListRoom.test.js +1 -1
  71. package/dist/__tests__/pipeline/compoundBreaks.test.js +1 -1
  72. package/dist/__tests__/pipeline/dashBreaks.test.js +1 -1
  73. package/dist/__tests__/pipeline/headingSplitOrphans.test.js +1 -1
  74. package/dist/__tests__/pipeline/inlineFigureSpace.test.js +1 -1
  75. package/dist/__tests__/pipeline/paragraphContainerTail.test.js +1 -1
  76. package/dist/__tests__/pipeline/raggedOptimal.test.js +1 -1
  77. package/dist/__tests__/plainGeminateHead.test.d.ts +2 -0
  78. package/dist/__tests__/plainGeminateHead.test.d.ts.map +1 -0
  79. package/dist/__tests__/plainGeminateHead.test.js +92 -0
  80. package/dist/__tests__/plainGeminateHead.test.js.map +1 -0
  81. package/dist/__tests__/presets/showcaseShapingLanguage.test.d.ts +2 -0
  82. package/dist/__tests__/presets/showcaseShapingLanguage.test.d.ts.map +1 -0
  83. package/dist/__tests__/presets/showcaseShapingLanguage.test.js +52 -0
  84. package/dist/__tests__/presets/showcaseShapingLanguage.test.js.map +1 -0
  85. package/dist/__tests__/reshapedTracking.test.d.ts +2 -0
  86. package/dist/__tests__/reshapedTracking.test.d.ts.map +1 -0
  87. package/dist/__tests__/reshapedTracking.test.js +358 -0
  88. package/dist/__tests__/reshapedTracking.test.js.map +1 -0
  89. package/dist/__tests__/rtl/designRunsPainted.test.d.ts +2 -0
  90. package/dist/__tests__/rtl/designRunsPainted.test.d.ts.map +1 -0
  91. package/dist/__tests__/rtl/designRunsPainted.test.js +184 -0
  92. package/dist/__tests__/rtl/designRunsPainted.test.js.map +1 -0
  93. package/dist/__tests__/rtl/designTextPaint.test.js +5 -1
  94. package/dist/__tests__/rtl/designTextPaint.test.js.map +1 -1
  95. package/dist/__tests__/rtl/htmlRtl.test.js +3 -3
  96. package/dist/__tests__/rtl/htmlRtl.test.js.map +1 -1
  97. package/dist/__tests__/rtl/listMarkerDirection.test.js +28 -28
  98. package/dist/__tests__/rtl/listMarkerDirection.test.js.map +1 -1
  99. package/dist/__tests__/rtl/tocNumberPainted.test.d.ts +2 -0
  100. package/dist/__tests__/rtl/tocNumberPainted.test.d.ts.map +1 -0
  101. package/dist/__tests__/rtl/tocNumberPainted.test.js +113 -0
  102. package/dist/__tests__/rtl/tocNumberPainted.test.js.map +1 -0
  103. package/dist/__tests__/scriptContext.test.js +141 -1
  104. package/dist/__tests__/scriptContext.test.js.map +1 -1
  105. package/dist/__tests__/shapingLanguage.test.js +60 -43
  106. package/dist/__tests__/shapingLanguage.test.js.map +1 -1
  107. package/dist/__tests__/trackedLetters.test.d.ts +2 -0
  108. package/dist/__tests__/trackedLetters.test.d.ts.map +1 -0
  109. package/dist/__tests__/trackedLetters.test.js +380 -0
  110. package/dist/__tests__/trackedLetters.test.js.map +1 -0
  111. package/dist/__tests__/trackedLigatures.test.js +23 -10
  112. package/dist/__tests__/trackedLigatures.test.js.map +1 -1
  113. package/dist/__tests__/verseLines.test.js +1 -1
  114. package/dist/__tests__/wordCacheOrder.test.d.ts +2 -0
  115. package/dist/__tests__/wordCacheOrder.test.d.ts.map +1 -0
  116. package/dist/__tests__/wordCacheOrder.test.js +352 -0
  117. package/dist/__tests__/wordCacheOrder.test.js.map +1 -0
  118. package/dist/__tests__/wordPieces.test.d.ts +2 -0
  119. package/dist/__tests__/wordPieces.test.d.ts.map +1 -0
  120. package/dist/__tests__/wordPieces.test.js +762 -0
  121. package/dist/__tests__/wordPieces.test.js.map +1 -0
  122. package/dist/bidi.d.ts +12 -0
  123. package/dist/bidi.d.ts.map +1 -1
  124. package/dist/bidi.js +23 -0
  125. package/dist/bidi.js.map +1 -1
  126. package/dist/bundle/configVersion.d.ts +49 -23
  127. package/dist/bundle/configVersion.d.ts.map +1 -1
  128. package/dist/bundle/configVersion.js +54 -25
  129. package/dist/bundle/configVersion.js.map +1 -1
  130. package/dist/canvas-backend/annotations.d.ts.map +1 -1
  131. package/dist/canvas-backend/annotations.js +8 -7
  132. package/dist/canvas-backend/annotations.js.map +1 -1
  133. package/dist/canvas-backend/blockRender.d.ts.map +1 -1
  134. package/dist/canvas-backend/blockRender.js +81 -47
  135. package/dist/canvas-backend/blockRender.js.map +1 -1
  136. package/dist/canvas-backend/cellText.d.ts +12 -0
  137. package/dist/canvas-backend/cellText.d.ts.map +1 -0
  138. package/dist/canvas-backend/cellText.js +114 -0
  139. package/dist/canvas-backend/cellText.js.map +1 -0
  140. package/dist/canvas-backend/chip.d.ts.map +1 -1
  141. package/dist/canvas-backend/chip.js +12 -9
  142. package/dist/canvas-backend/chip.js.map +1 -1
  143. package/dist/canvas-backend/comic.d.ts.map +1 -1
  144. package/dist/canvas-backend/comic.js +9 -8
  145. package/dist/canvas-backend/comic.js.map +1 -1
  146. package/dist/canvas-backend/contextState.d.ts +69 -0
  147. package/dist/canvas-backend/contextState.d.ts.map +1 -0
  148. package/dist/canvas-backend/contextState.js +96 -0
  149. package/dist/canvas-backend/contextState.js.map +1 -0
  150. package/dist/canvas-backend/contextText.d.ts +76 -0
  151. package/dist/canvas-backend/contextText.d.ts.map +1 -0
  152. package/dist/canvas-backend/contextText.js +102 -0
  153. package/dist/canvas-backend/contextText.js.map +1 -0
  154. package/dist/canvas-backend/decorations.d.ts.map +1 -1
  155. package/dist/canvas-backend/decorations.js +11 -10
  156. package/dist/canvas-backend/decorations.js.map +1 -1
  157. package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
  158. package/dist/canvas-backend/headerFooter.js +23 -15
  159. package/dist/canvas-backend/headerFooter.js.map +1 -1
  160. package/dist/canvas-backend/index.d.ts.map +1 -1
  161. package/dist/canvas-backend/index.js +41 -17
  162. package/dist/canvas-backend/index.js.map +1 -1
  163. package/dist/canvas-backend/mirrorFrame.d.ts.map +1 -1
  164. package/dist/canvas-backend/mirrorFrame.js +5 -4
  165. package/dist/canvas-backend/mirrorFrame.js.map +1 -1
  166. package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
  167. package/dist/canvas-backend/renderResourceBlock.js +36 -29
  168. package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
  169. package/dist/canvas-backend/runDirection.d.ts.map +1 -1
  170. package/dist/canvas-backend/runDirection.js +9 -5
  171. package/dist/canvas-backend/runDirection.js.map +1 -1
  172. package/dist/canvas-backend/scriptText.d.ts.map +1 -1
  173. package/dist/canvas-backend/scriptText.js +11 -9
  174. package/dist/canvas-backend/scriptText.js.map +1 -1
  175. package/dist/canvas-backend/segmentText.d.ts.map +1 -1
  176. package/dist/canvas-backend/segmentText.js +18 -5
  177. package/dist/canvas-backend/segmentText.js.map +1 -1
  178. package/dist/canvas-backend/swatch.d.ts.map +1 -1
  179. package/dist/canvas-backend/swatch.js +3 -2
  180. package/dist/canvas-backend/swatch.js.map +1 -1
  181. package/dist/canvas-backend/trackedText.d.ts +75 -1
  182. package/dist/canvas-backend/trackedText.d.ts.map +1 -1
  183. package/dist/canvas-backend/trackedText.js +192 -28
  184. package/dist/canvas-backend/trackedText.js.map +1 -1
  185. package/dist/canvas-backend/verticalText.d.ts +12 -2
  186. package/dist/canvas-backend/verticalText.d.ts.map +1 -1
  187. package/dist/canvas-backend/verticalText.js +64 -38
  188. package/dist/canvas-backend/verticalText.js.map +1 -1
  189. package/dist/canvas-backend/wordPieces.d.ts +31 -0
  190. package/dist/canvas-backend/wordPieces.d.ts.map +1 -0
  191. package/dist/canvas-backend/wordPieces.js +132 -0
  192. package/dist/canvas-backend/wordPieces.js.map +1 -0
  193. package/dist/canvas-backend/wordRuns.d.ts +13 -1
  194. package/dist/canvas-backend/wordRuns.d.ts.map +1 -1
  195. package/dist/canvas-backend/wordRuns.js +38 -23
  196. package/dist/canvas-backend/wordRuns.js.map +1 -1
  197. package/dist/comics/lettering/__tests__/fitAsPainted.test.d.ts +2 -0
  198. package/dist/comics/lettering/__tests__/fitAsPainted.test.d.ts.map +1 -0
  199. package/dist/comics/lettering/__tests__/fitAsPainted.test.js +97 -0
  200. package/dist/comics/lettering/__tests__/fitAsPainted.test.js.map +1 -0
  201. package/dist/comics/lettering/shape-text.d.ts.map +1 -1
  202. package/dist/comics/lettering/shape-text.js +39 -11
  203. package/dist/comics/lettering/shape-text.js.map +1 -1
  204. package/dist/defaults/bodyText.d.ts.map +1 -1
  205. package/dist/defaults/bodyText.js +6 -5
  206. package/dist/defaults/bodyText.js.map +1 -1
  207. package/dist/design/bidiText.d.ts +45 -6
  208. package/dist/design/bidiText.d.ts.map +1 -1
  209. package/dist/design/bidiText.js +78 -10
  210. package/dist/design/bidiText.js.map +1 -1
  211. package/dist/design/cjkText.d.ts +3 -0
  212. package/dist/design/cjkText.d.ts.map +1 -1
  213. package/dist/design/cjkText.js +1 -1
  214. package/dist/design/cjkText.js.map +1 -1
  215. package/dist/design/layout.d.ts.map +1 -1
  216. package/dist/design/layout.js +36 -5
  217. package/dist/design/layout.js.map +1 -1
  218. package/dist/design/richText.d.ts +9 -1
  219. package/dist/design/richText.d.ts.map +1 -1
  220. package/dist/design/richText.js +8 -2
  221. package/dist/design/richText.js.map +1 -1
  222. package/dist/fonts/usage.d.ts +2 -0
  223. package/dist/fonts/usage.d.ts.map +1 -1
  224. package/dist/fonts/usage.js +18 -0
  225. package/dist/fonts/usage.js.map +1 -1
  226. package/dist/html-backend.d.ts.map +1 -1
  227. package/dist/html-backend.js +664 -84
  228. package/dist/html-backend.js.map +1 -1
  229. package/dist/index.d.ts +3 -1
  230. package/dist/index.d.ts.map +1 -1
  231. package/dist/index.js +4 -1
  232. package/dist/index.js.map +1 -1
  233. package/dist/knuthPlass/breakpoints.d.ts.map +1 -1
  234. package/dist/knuthPlass/breakpoints.js +4 -2
  235. package/dist/knuthPlass/breakpoints.js.map +1 -1
  236. package/dist/knuthPlass/pretextAdapter.d.ts +6 -3
  237. package/dist/knuthPlass/pretextAdapter.d.ts.map +1 -1
  238. package/dist/knuthPlass/pretextAdapter.js +11 -3
  239. package/dist/knuthPlass/pretextAdapter.js.map +1 -1
  240. package/dist/knuthPlass/richAdapter.d.ts +13 -1
  241. package/dist/knuthPlass/richAdapter.d.ts.map +1 -1
  242. package/dist/knuthPlass/richAdapter.js +53 -5
  243. package/dist/knuthPlass/richAdapter.js.map +1 -1
  244. package/dist/knuthPlass/tracking.d.ts.map +1 -1
  245. package/dist/knuthPlass/tracking.js +3 -2
  246. package/dist/knuthPlass/tracking.js.map +1 -1
  247. package/dist/knuthPlass/types.d.ts +6 -0
  248. package/dist/knuthPlass/types.d.ts.map +1 -1
  249. package/dist/locale.d.ts +25 -18
  250. package/dist/locale.d.ts.map +1 -1
  251. package/dist/locale.js +27 -20
  252. package/dist/locale.js.map +1 -1
  253. package/dist/looseLines.d.ts.map +1 -1
  254. package/dist/looseLines.js +3 -2
  255. package/dist/looseLines.js.map +1 -1
  256. package/dist/measure/canvas.d.ts +21 -0
  257. package/dist/measure/canvas.d.ts.map +1 -1
  258. package/dist/measure/canvas.js +165 -85
  259. package/dist/measure/canvas.js.map +1 -1
  260. package/dist/measure/cjkCompose.d.ts.map +1 -1
  261. package/dist/measure/cjkCompose.js +31 -5
  262. package/dist/measure/cjkCompose.js.map +1 -1
  263. package/dist/measure/plain.d.ts.map +1 -1
  264. package/dist/measure/plain.js +31 -6
  265. package/dist/measure/plain.js.map +1 -1
  266. package/dist/measure/pretextLanguage.d.ts.map +1 -1
  267. package/dist/measure/pretextLanguage.js +49 -7
  268. package/dist/measure/pretextLanguage.js.map +1 -1
  269. package/dist/measure/rich.d.ts +18 -1
  270. package/dist/measure/rich.d.ts.map +1 -1
  271. package/dist/measure/rich.js +200 -29
  272. package/dist/measure/rich.js.map +1 -1
  273. package/dist/measure/script.d.ts +17 -1
  274. package/dist/measure/script.d.ts.map +1 -1
  275. package/dist/measure/script.js +17 -1
  276. package/dist/measure/script.js.map +1 -1
  277. package/dist/measure/trackedLigatures.d.ts +59 -0
  278. package/dist/measure/trackedLigatures.d.ts.map +1 -0
  279. package/dist/measure/trackedLigatures.js +144 -0
  280. package/dist/measure/trackedLigatures.js.map +1 -0
  281. package/dist/pipeline/build.d.ts.map +1 -1
  282. package/dist/pipeline/build.js +4 -3
  283. package/dist/pipeline/build.js.map +1 -1
  284. package/dist/pipeline/calloutLayout.d.ts.map +1 -1
  285. package/dist/pipeline/calloutLayout.js +26 -7
  286. package/dist/pipeline/calloutLayout.js.map +1 -1
  287. package/dist/pipeline/lists.d.ts +13 -4
  288. package/dist/pipeline/lists.d.ts.map +1 -1
  289. package/dist/pipeline/lists.js +49 -12
  290. package/dist/pipeline/lists.js.map +1 -1
  291. package/dist/pipeline/toc.d.ts.map +1 -1
  292. package/dist/pipeline/toc.js +33 -9
  293. package/dist/pipeline/toc.js.map +1 -1
  294. package/dist/types.d.ts +35 -22
  295. package/dist/types.d.ts.map +1 -1
  296. package/dist/wordPieces.d.ts +120 -0
  297. package/dist/wordPieces.d.ts.map +1 -0
  298. package/dist/wordPieces.js +319 -0
  299. package/dist/wordPieces.js.map +1 -0
  300. package/package.json +1 -1
@@ -38,6 +38,71 @@
38
38
  * like any other, where the painter set the context right to left for
39
39
  * it (`fillSegmentWord`, `paintRunInDirection`): its pieces are set from
40
40
  * the right end of its box, each painted right to left.
41
+ *
42
+ * The tracking of a ligature (#770). The layout counts the tracking once
43
+ * a letter: a word is its natural width and the tracking times its
44
+ * letters, and that is what the browser paints wherever the
45
+ * letter-spacing dissolves nothing (Geist's `fi` is one glyph as wide as
46
+ * `f` and `i`: under a letter-spacing the two letters are set apart, each
47
+ * with the tracking after it). A ligature painted alone advanced by one
48
+ * tracking, as one glyph, so a word that held one ended a tracking short
49
+ * of its box for each letter the ligature had joined: `shift` in Source
50
+ * Serif 4 at 19.58 px on a line justified with 0.39 px a letter, box
51
+ * 43.37 px, painted 42.98 px, and `efit` on a line tightened by 0.34 px
52
+ * ran 0.34 px over the word after it. In a document shaped in its own
53
+ * language ({@link setLetterTracking}) the piece after a ligature starts
54
+ * the tracking of every letter before it further on, the ligature's
55
+ * letters each counted: the word ends where its box does, and the HTML
56
+ * and the PDF set it the same. A document that keeps its host's language
57
+ * is painted as it was, and so is a right-to-left word of any document
58
+ * (a Hebrew face with a ligature): one tracking a ligature in the three
59
+ * outputs.
60
+ *
61
+ * What a letter-spacing takes away besides ligatures (#770). Chrome sets
62
+ * no contextual alternate either under a letter-spacing (`calt`, with
63
+ * `liga` and `clig`), and the canvas cannot ask for them back. Cormorant
64
+ * SC draws the hyphen between two capitals 1.47 px wider at 17.71 px: the
65
+ * running head `A MAD TEA-PARTY`, tracked 2.5 px, was measured 192.76 px
66
+ * and painted 191.30 px, no pair of its letters being a ligature. Playpen
67
+ * Sans gives nearly every letter another form by its neighbours, so most
68
+ * pairs read as ligatures and their pieces stood where no shaping puts
69
+ * them: `UNIT 12` at 18.75 px, measured 98.52 px, ended at 97.70 px, and
70
+ * `FOR PARENTS AND CARERS` 1.31 px past its 322.85 px. In a document
71
+ * shaped in its own language a word whose pieces do not end where the
72
+ * word was measured to end, or that the letter-spacing reshapes with no
73
+ * ligature to keep, is painted whole at the letter-spacing that ends it
74
+ * there: the tracking, and what the reshaping took or gave shared among
75
+ * its letters (2.66 px a letter for `TEA-PARTY`). A text of several words
76
+ * is then painted word by word, each where the natural shaping puts it
77
+ * with the tracking of every letter before it, as the HTML sets its boxes
78
+ * ({@link fittedParts}). The forms are the ones the browser draws under a
79
+ * letter-spacing; the widths are the ones measured.
80
+ *
81
+ * A ligature and a form by the neighbours told apart (#770). To the probe
82
+ * they read the same: two neighbours whose width under a letter-spacing,
83
+ * the spacing taken off, is not their natural width. A ligature is one
84
+ * glyph, which no spacing opens; a form by the neighbours is still a
85
+ * glyph a letter, and under a letter-spacing the browser sets the same
86
+ * letters in their plain forms, each spaced. Playpen Sans reshapes `FO`
87
+ * and `OR` so: `FOR`, read as a ligature of three, was painted with no
88
+ * tracking inside and the tracking of its three letters after it. In
89
+ * `FOR PARENTS AND CARERS` at 17.71 px, tracked 3.125 px, its letters
90
+ * stood as close as in untracked text, those of the three other words
91
+ * 2.9 to 3.2 px apart, and 18.2 px lay between `FOR` and `PARENTS`
92
+ * against 12 px between the other words. A zero width non-joiner between
93
+ * the two letters tells them apart: it dissolves a ligature and leaves a
94
+ * form by the neighbours as it is. Chrome 154: `fi` in Source Serif 4 at
95
+ * 40 px is 26.16 px, 28.92 px under a letter-spacing and 28.92 px across
96
+ * a non-joiner; `FO` in Playpen Sans at 17.71 px 24.178, 24.107 and
97
+ * 24.178 px. The kerning stands across it: `AV` in Source Serif 4 is
98
+ * 52.08 px with and without, 56.84 px its two letters apart.
99
+ * In a document shaped in its own language two neighbours as wide across
100
+ * a non-joiner as without one are no ligature ({@link ligated}), and a
101
+ * word with none is painted whole at the letter-spacing that ends it on
102
+ * its box, as any other the letter-spacing reshapes: `FOR` at 2.68 px a
103
+ * letter. A document that keeps its host's language is painted as it
104
+ * was, and so is a right-to-left word of any document, which is never
105
+ * painted at a letter-spacing of its own.
41
106
  */
42
107
  /** One piece of a word painted apart from the rest. */
43
108
  export interface TrackedPiece {
@@ -46,11 +111,20 @@ export interface TrackedPiece {
46
111
  * start: its left end, or its right end for a right-to-left word. */
47
112
  offset: number;
48
113
  /** Glyphs of the word before the piece: each takes the tracking once (a
49
- * ligature is one glyph, as in the PDF). */
114
+ * ligature is one glyph, as in the PDF of a document that keeps its
115
+ * host's language). */
50
116
  glyphsBefore: number;
117
+ /** Letters (graphemes) of the word before the piece, the letters of a
118
+ * ligature each counted: what the layout counted the tracking of. */
119
+ lettersBefore: number;
51
120
  /** A ligature: painted with no letter-spacing. */
52
121
  ligature: boolean;
53
122
  }
123
+ /** Give a ligature of a tracked word the tracking of every letter it
124
+ * joins from now on (`on`), as the layout counted it, or of one glyph as
125
+ * up to postext 1.29: the page painter says which for the document it
126
+ * paints (`bodyText.shapingLanguage`, through `setSegmentLanguages`). */
127
+ export declare function setLetterTracking(on: boolean): void;
54
128
  /**
55
129
  * Whether the browser shapes `text`, in the context's font, otherwise once
56
130
  * a letter-spacing is set: its width at a letter-spacing, that spacing
@@ -1 +1 @@
1
- {"version":3,"file":"trackedText.d.ts","sourceRoot":"","sources":["../../src/canvas-backend/trackedText.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,uDAAuD;AACvD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb;0EACsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf;iDAC6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAuJD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAMpF;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,YAAY,EAAE,GAAG,IAAI,CAEzG;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,GAClD,MAAM,GAAG,SAAS,CAoBpB"}
1
+ {"version":3,"file":"trackedText.d.ts","sourceRoot":"","sources":["../../src/canvas-backend/trackedText.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyGG;AAEH,uDAAuD;AACvD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb;0EACsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf;;4BAEwB;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB;0EACsE;IACtE,aAAa,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAuED;;;0EAG0E;AAC1E,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAEnD;AAsOD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAMpF;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,YAAY,EAAE,GAAG,IAAI,CAEzG;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,GAClD,MAAM,GAAG,SAAS,CAiBpB"}
@@ -1,7 +1,10 @@
1
1
  import { bidiClassOf, needsBidi } from '../bidi';
2
2
  import { graphemesOf } from '../measure/graphemes';
3
3
  import { joiningScriptIn } from '../measure/joining';
4
+ import { hasCJK } from '../measure/cjk';
4
5
  import { paintAsOneRun } from './mirrorFrame';
6
+ import { letterSpacingOf, setLetterSpacing } from './contextState';
7
+ import { contextTextWidth } from './contextText';
5
8
  /** Letter-spacing the words are probed with, px. */
6
9
  const PROBE = 1;
7
10
  /** Least difference, px, between a word's natural width and its width
@@ -12,6 +15,16 @@ const TOLERANCE = 0.05;
12
15
  const MAX_WORDS = 8192;
13
16
  /** Font string → what is known of each text set in it. */
14
17
  const knownByFont = new Map();
18
+ /** Whether a ligature takes the tracking of each of its letters (see
19
+ * {@link setLetterTracking}). */
20
+ let letterTracking = false;
21
+ /** Give a ligature of a tracked word the tracking of every letter it
22
+ * joins from now on (`on`), as the layout counted it, or of one glyph as
23
+ * up to postext 1.29: the page painter says which for the document it
24
+ * paints (`bodyText.shapingLanguage`, through `setSegmentLanguages`). */
25
+ export function setLetterTracking(on) {
26
+ letterTracking = on;
27
+ }
15
28
  /** Bidi classes a right-to-left run holds at one level whatever stands
16
29
  * beside them: its letters, their marks, and the neutral characters that
17
30
  * take the run's direction. A digit, a Latin letter or a bidi control
@@ -19,12 +32,15 @@ const knownByFont = new Map();
19
32
  const ONE_LEVEL_RTL = new Set(['R', 'AL', 'NSM', 'WS', 'ON', 'CS', 'ES', 'ET']);
20
33
  function known(ctx, font) {
21
34
  // A face ligates otherwise under a language (no `fi` in Turkish): the
22
- // context's own is part of the key (#764).
35
+ // context's own is part of the key (#764). So is the document's way of
36
+ // telling a ligature (`letterTracking`): the pieces of a word are not
37
+ // the same in the two.
23
38
  const lang = ctx.lang;
24
- const key = typeof lang === 'string' && lang !== 'inherit' ? `${lang}\u0000${font}` : font;
39
+ const own = letterTracking ? '\u0001' : '';
40
+ const key = typeof lang === 'string' && lang !== 'inherit' ? `${own}${lang}\u0000${font}` : own + font;
25
41
  let k = knownByFont.get(key);
26
42
  if (!k)
27
- knownByFont.set(key, k = { otherwise: new Map(), words: new Map() });
43
+ knownByFont.set(key, k = { otherwise: new Map(), joined: new Map(), words: new Map(), fitted: new Map() });
28
44
  return k;
29
45
  }
30
46
  /** The direction `text` runs in when it may be painted in pieces at all
@@ -43,8 +59,8 @@ function divisible(text) {
43
59
  return 'rtl';
44
60
  }
45
61
  function widthAt(ctx, text, spacing) {
46
- ctx.letterSpacing = `${spacing}px`;
47
- return ctx.measureText(text).width;
62
+ setLetterSpacing(ctx, spacing);
63
+ return contextTextWidth(ctx, text);
48
64
  }
49
65
  /** {@link shapedOtherwise}, measured: the context's `letterSpacing` is
50
66
  * left at any value. */
@@ -70,6 +86,33 @@ function otherwise(ctx, font, text) {
70
86
  }
71
87
  return changed;
72
88
  }
89
+ /** ZERO WIDTH NON-JOINER: between two letters it asks for no ligature of
90
+ * them. */
91
+ const ZWNJ = '\u200C';
92
+ /**
93
+ * Whether two neighbours the letter-spacing reshapes are a ligature (see
94
+ * the module comment): in a document shaped in its own language, whether
95
+ * a non-joiner between them changes their natural width. As wide across
96
+ * it as without it, each letter keeps a glyph of its own, in a form by
97
+ * its neighbour that the letter-spacing takes away. A document that keeps
98
+ * its host's language reads every such pair as a ligature, as up to
99
+ * postext 1.29, and so does a measurer that gives the non-joiner a width.
100
+ * Asked of the pairs of a left-to-right word only.
101
+ */
102
+ function ligated(ctx, font, first, second) {
103
+ if (!letterTracking)
104
+ return true;
105
+ const { joined } = known(ctx, font);
106
+ const pair = first + second;
107
+ let is = joined.get(pair);
108
+ if (is === undefined) {
109
+ is = Math.abs(widthAt(ctx, first + ZWNJ + second, 0) - widthAt(ctx, pair, 0)) > TOLERANCE;
110
+ if (joined.size >= MAX_WORDS)
111
+ joined.clear();
112
+ joined.set(pair, is);
113
+ }
114
+ return is;
115
+ }
73
116
  function wordOf(ctx, font, text) {
74
117
  const direction = divisible(text);
75
118
  if (!direction)
@@ -83,7 +126,7 @@ function wordOf(ctx, font, text) {
83
126
  let ligatures = 0;
84
127
  for (let k = 0; k < letters.length;) {
85
128
  let end = k + 1;
86
- while (end < letters.length && otherwise(ctx, font, letters[end - 1] + letters[end]))
129
+ while (end < letters.length && otherwise(ctx, font, letters[end - 1] + letters[end]) && (direction === 'rtl' || ligated(ctx, font, letters[end - 1], letters[end])))
87
130
  end++;
88
131
  const ligature = end - k > 1;
89
132
  const last = groups[groups.length - 1];
@@ -95,21 +138,101 @@ function wordOf(ctx, font, text) {
95
138
  ligatures++;
96
139
  k = end;
97
140
  }
98
- // Shaped otherwise as a whole but by no pair of neighbours: left as it was.
141
+ // Shaped otherwise as a whole but by no ligature of two neighbours: left
142
+ // as it was.
99
143
  if (ligatures === 0)
100
144
  return null;
101
- ctx.letterSpacing = '0px';
102
- const natural = (from, to) => ctx.measureText(letters.slice(from, to).join('')).width;
145
+ setLetterSpacing(ctx, 0);
146
+ const natural = (from, to) => contextTextWidth(ctx, letters.slice(from, to).join(''));
103
147
  let glyphs = 0;
104
148
  const pieces = groups.map((g) => {
105
149
  // Up to the piece's first letter in the natural shaping, the kerning
106
150
  // before it counted: the pieces meet as the whole word's letters do.
107
151
  const offset = g.start === 0 ? 0 : natural(0, g.start + 1) - natural(g.start, g.start + 1);
108
- const piece = { text: letters.slice(g.start, g.end).join(''), offset, glyphsBefore: glyphs, ligature: g.ligature };
152
+ const piece = { text: letters.slice(g.start, g.end).join(''), offset, glyphsBefore: glyphs, lettersBefore: g.start, ligature: g.ligature };
109
153
  glyphs += g.ligature ? 1 : g.end - g.start;
110
154
  return piece;
111
155
  });
112
- return { pieces, natural: natural(0, letters.length), letters: letters.length, rtl: direction === 'rtl' };
156
+ const whole = natural(0, letters.length);
157
+ // Where the last piece ends, painted as it is alone: a ligature at its
158
+ // natural width, the letters after one as the letter-spacing shapes
159
+ // them.
160
+ const last = pieces[pieces.length - 1];
161
+ const end = last.offset + (last.ligature ? contextTextWidth(ctx, last.text) : spacedWidth(ctx, last.text).width);
162
+ return { pieces, natural: whole, letters: letters.length, rtl: direction === 'rtl', fits: Math.abs(end - whole) <= TOLERANCE };
163
+ }
164
+ /** The width of `text` under a letter-spacing with that spacing taken
165
+ * off, and what one px of letter-spacing adds to it (a px a letter,
166
+ * where the context spaces every letter). The context's `letterSpacing`
167
+ * is left at any value. */
168
+ function spacedWidth(ctx, text) {
169
+ const one = widthAt(ctx, text, PROBE);
170
+ const step = (widthAt(ctx, text, 2 * PROBE) - one) / PROBE;
171
+ return { width: one - step * PROBE, step };
172
+ }
173
+ /** Runs of spaces and the words between them. */
174
+ const PARTS_RE = /( +)/;
175
+ /**
176
+ * The parts a tracked `text` is painted in where its pieces do not fit
177
+ * or the letter-spacing reshapes it with no ligature to keep (see the
178
+ * module comment): its words and its runs of spaces, each where the
179
+ * natural shaping puts it (the canvas shapes a text word by word, and
180
+ * nothing is kerned across a space). A word keeps its pieces when they
181
+ * fit; one the letter-spacing reshapes otherwise is painted whole at the
182
+ * letter-spacing that ends it where it was measured; any other at the
183
+ * tracking. Null when every part is painted at the tracking (the text is
184
+ * painted whole), and for a text that is not left to right.
185
+ */
186
+ function fittedOf(ctx, font, text) {
187
+ if (divisible(text) !== 'ltr')
188
+ return null;
189
+ const parts = [];
190
+ let offset = 0;
191
+ let lettersBefore = 0;
192
+ let plain = true;
193
+ for (const part of text.split(PARTS_RE)) {
194
+ if (part === '')
195
+ continue;
196
+ setLetterSpacing(ctx, 0);
197
+ const natural = contextTextWidth(ctx, part);
198
+ const letters = graphemesOf(part).length;
199
+ let word = null;
200
+ let spaced;
201
+ // A word with a CJK character is left as it was: its cells are not
202
+ // measured at a natural width (the composer, a vertical line).
203
+ if (part[0] !== ' ' && letters > 1 && !hasCJK(part) && otherwise(ctx, font, part)) {
204
+ const cut = wordOf(ctx, font, part);
205
+ if (cut?.fits)
206
+ word = cut;
207
+ else {
208
+ const under = spacedWidth(ctx, part);
209
+ if (under.step > 0)
210
+ spaced = under;
211
+ }
212
+ }
213
+ if (word || spaced)
214
+ plain = false;
215
+ parts.push({ text: part, offset, lettersBefore, word, ...(spaced ? { spaced } : {}), natural, letters });
216
+ offset += natural;
217
+ lettersBefore += letters;
218
+ }
219
+ return plain ? null : { parts, natural: offset, letters: lettersBefore };
220
+ }
221
+ /** {@link fittedOf}, remembered. The context's `letterSpacing` is put
222
+ * back as it was found. */
223
+ function fittedParts(ctx, text) {
224
+ const font = ctx.font;
225
+ const { fitted } = known(ctx, font);
226
+ let parts = fitted.get(text);
227
+ if (parts === undefined) {
228
+ const spacing = letterSpacingOf(ctx);
229
+ parts = fittedOf(ctx, font, text);
230
+ setLetterSpacing(ctx, spacing);
231
+ if (fitted.size >= MAX_WORDS)
232
+ fitted.clear();
233
+ fitted.set(text, parts);
234
+ }
235
+ return parts;
113
236
  }
114
237
  /** {@link trackedPieces} with the word's measures. A word is cut only
115
238
  * where the context paints in its direction: a right-to-left word in a
@@ -122,9 +245,9 @@ function trackedWord(ctx, text) {
122
245
  const { words } = known(ctx, font);
123
246
  let word = words.get(text);
124
247
  if (word === undefined) {
125
- const spacing = ctx.letterSpacing;
248
+ const spacing = letterSpacingOf(ctx);
126
249
  word = wordOf(ctx, font, text);
127
- ctx.letterSpacing = spacing;
250
+ setLetterSpacing(ctx, spacing);
128
251
  if (words.size >= MAX_WORDS)
129
252
  words.clear();
130
253
  words.set(text, word);
@@ -148,9 +271,9 @@ function measures(ctx) {
148
271
  export function shapedOtherwise(ctx, text) {
149
272
  if (text.length < 2 || !measures(ctx))
150
273
  return false;
151
- const spacing = ctx.letterSpacing;
274
+ const spacing = letterSpacingOf(ctx);
152
275
  const changed = otherwise(ctx, ctx.font, text);
153
- ctx.letterSpacing = spacing;
276
+ setLetterSpacing(ctx, spacing);
154
277
  return changed;
155
278
  }
156
279
  /**
@@ -180,26 +303,67 @@ export function trackedPieces(ctx, text) {
180
303
  */
181
304
  export function fillTrackedWord(ctx, text, x, y, tracking, paint) {
182
305
  const word = tracking !== 0 ? trackedWord(ctx, text) : null;
306
+ // In a document shaped in its own language, a text whose pieces do not
307
+ // end where it was measured to end, or that the letter-spacing reshapes
308
+ // with no ligature to keep, is painted part by part (see the module
309
+ // comment).
310
+ if (letterTracking && tracking !== 0 && !(word?.fits) && text.length > 1 && measures(ctx) && !('direction' in ctx && ctx.direction === 'rtl')) {
311
+ const fitted = fittedParts(ctx, text);
312
+ if (fitted)
313
+ return fillFittedParts(ctx, fitted, x, y, tracking, paint);
314
+ }
183
315
  if (!word) {
184
316
  paint(text, x, y);
185
317
  return undefined;
186
318
  }
187
319
  const width = word.natural + tracking * word.letters;
320
+ paintAsOneRun(ctx, x, width, () => fillPieces(ctx, word, x, width, y, tracking, paint));
321
+ return width;
322
+ }
323
+ /** The pieces of `word`, whose box is `width` px from `x`. */
324
+ function fillPieces(ctx, word, x, width, y, tracking, paint) {
325
+ const align = ctx.textAlign;
326
+ // Each piece of a right-to-left word from its own right end.
327
+ if (word.rtl)
328
+ ctx.textAlign = 'right';
329
+ for (const piece of word.pieces) {
330
+ // A right-to-left word keeps one tracking a ligature, as in the
331
+ // HTML and the PDF.
332
+ const at = piece.offset + tracking * (letterTracking && !word.rtl ? piece.lettersBefore : piece.glyphsBefore);
333
+ if (piece.ligature)
334
+ setLetterSpacing(ctx, 0);
335
+ paint(piece.text, word.rtl ? x + width - at : x + at, y);
336
+ if (piece.ligature)
337
+ setLetterSpacing(ctx, tracking);
338
+ }
339
+ if (word.rtl)
340
+ ctx.textAlign = align;
341
+ }
342
+ /** {@link fittedParts} painted from `x`: one run in a mirrored frame.
343
+ * Returns the width the text was measured at. */
344
+ function fillFittedParts(ctx, fitted, x, y, tracking, paint) {
345
+ const width = fitted.natural + tracking * fitted.letters;
188
346
  paintAsOneRun(ctx, x, width, () => {
189
- const align = ctx.textAlign;
190
- // Each piece of a right-to-left word from its own right end.
191
- if (word.rtl)
192
- ctx.textAlign = 'right';
193
- for (const piece of word.pieces) {
194
- const at = piece.offset + tracking * piece.glyphsBefore;
195
- if (piece.ligature)
196
- ctx.letterSpacing = '0px';
197
- paint(piece.text, word.rtl ? x + width - at : x + at, y);
198
- if (piece.ligature)
199
- ctx.letterSpacing = `${tracking}px`;
347
+ for (const part of fitted.parts) {
348
+ const at = x + part.offset + tracking * part.lettersBefore;
349
+ if (part.word)
350
+ fillPieces(ctx, part.word, at, part.natural + tracking * part.letters, y, tracking, paint);
351
+ else if (part.spaced) {
352
+ // The letter-spacing under which the part, as the browser shapes
353
+ // it then, is as wide as its natural width and its tracking.
354
+ const fit = (part.natural + tracking * part.letters - part.spaced.width) / part.spaced.step;
355
+ // At no letter-spacing the browser would shape it naturally again.
356
+ if (Math.abs(fit) < 1e-6)
357
+ paint(part.text, at, y);
358
+ else {
359
+ setLetterSpacing(ctx, fit);
360
+ paint(part.text, at, y);
361
+ setLetterSpacing(ctx, tracking);
362
+ }
363
+ }
364
+ else
365
+ paint(part.text, at, y);
200
366
  }
201
- if (word.rtl)
202
- ctx.textAlign = align;
203
367
  });
204
368
  return width;
205
369
  }
@@ -1 +1 @@
1
- {"version":3,"file":"trackedText.js","sourceRoot":"","sources":["../../src/canvas-backend/trackedText.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trackedText.js","sourceRoot":"","sources":["../../src/canvas-backend/trackedText.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,15 @@ export interface VerticalPaintState {
45
45
  export declare function setVerticalPaint(state: VerticalPaintState | null): VerticalPaintState | null;
46
46
  /** Whether text painted now is set vertically. */
47
47
  export declare function verticalPaintActive(): boolean;
48
+ /**
49
+ * How far the pen moves down the line for `text` painted now in the
50
+ * context's font, as the layout measured it (`verticalTextWidth`): each
51
+ * sideways run at the advance the context gives it, each cell at its
52
+ * length in ems, `tracking` px after every character and every cell.
53
+ * The context's `letterSpacing` is 0 (the tracking is counted here).
54
+ * Undefined on a horizontal page.
55
+ */
56
+ export declare function verticalFlowAdvance(ctx: CanvasRenderingContext2D, text: string, tracking: number): number | undefined;
48
57
  /**
49
58
  * Paint the vertical forms of `family`'s punctuation (brackets, quotes,
50
59
  * mainland pause marks, ellipses) with `twinFamily`: the same font loaded
@@ -101,8 +110,9 @@ export type TextPaintMode = 'fill' | 'stroke' | 'fillStroke';
101
110
  * (`MarkCutRule`: whole by default; word by word for a line of a Latin
102
111
  * paragraph; character by character for a line of the CJK composer). In a
103
112
  * vertical flow (see the module comment) it sets the text vertically:
104
- * `tracking` (px after every character, default the context's
105
- * `letterSpacing`) is added after each cell and inside each sideways run.
113
+ * `tracking` (px after every character, default the letter-spacing the
114
+ * backend set on the context, `letterSpacingOf`) is added after each cell
115
+ * and inside each sideways run.
106
116
  * Returns nothing; the caller advances by the width the layout measured.
107
117
  */
108
118
  export declare function fillFlowText(ctx: CanvasRenderingContext2D, text: string, x: number, baseline: number, mode?: TextPaintMode, tracking?: number, cuts?: MarkCutRule,
@@ -1 +1 @@
1
- {"version":3,"file":"verticalText.d.ts","sourceRoot":"","sources":["../../src/canvas-backend/verticalText.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAsD,KAAK,iBAAiB,EAAsB,MAAM,gBAAgB,CAAC;AAEhI,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKnE,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,SAAS,CAAC;IAClB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B;uEACmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID;+CAC+C;AAC/C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,GAAG,kBAAkB,GAAG,IAAI,CAI5F;AAED,kDAAkD;AAClD,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAgBD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAInF;AAaD;;;4EAG4E;AAC5E,wBAAgB,4BAA4B,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CASlE;AAED,uDAAuD;AACvD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvE;AAED;sCACsC;AACtC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;iDACiD;AACjD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAUD;;;;8EAI8E;AAC9E,eAAO,MAAM,yBAAyB,QACc,CAAC;AAyFrD;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,sBAAsB,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAwDvH;AAmBD;+BAC+B;AAC/B,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC;AA2C7D;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,aAAsB,EAC5B,QAAQ,CAAC,EAAE,MAAM,EACjB,IAAI,GAAE,WAAoB;AAC1B;0CAC0C;AAC1C,MAAM,CAAC,EAAE,iBAAiB,GACzB,IAAI,CAUN;AA6KD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,wBAAwB,EAC7B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,EAC1D,KAAK,UAAQ,GACZ,IAAI,CAiBN"}
1
+ {"version":3,"file":"verticalText.d.ts","sourceRoot":"","sources":["../../src/canvas-backend/verticalText.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAsD,KAAK,iBAAiB,EAAsB,MAAM,gBAAgB,CAAC;AAEhI,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAOnE,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,SAAS,CAAC;IAClB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B;uEACmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID;+CAC+C;AAC/C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,GAAG,kBAAkB,GAAG,IAAI,CAI5F;AAED,kDAAkD;AAClD,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWrH;AAgBD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAInF;AAaD;;;4EAG4E;AAC5E,wBAAgB,4BAA4B,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CASlE;AAED,uDAAuD;AACvD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvE;AAED;sCACsC;AACtC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;iDACiD;AACjD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAUD;;;;8EAI8E;AAC9E,eAAO,MAAM,yBAAyB,QACc,CAAC;AAyFrD;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,sBAAsB,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAwDvH;AAmBD;+BAC+B;AAC/B,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC;AA4C7D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,aAAsB,EAC5B,QAAQ,CAAC,EAAE,MAAM,EACjB,IAAI,GAAE,WAAoB;AAC1B;0CAC0C;AAC1C,MAAM,CAAC,EAAE,iBAAiB,GACzB,IAAI,CAUN;AA6KD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,wBAAwB,EAC7B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,EAC1D,KAAK,UAAQ,GACZ,IAAI,CAiBN"}