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
@@ -143,8 +143,8 @@ describe('maths in configurations written before postext 1.5 (EF-75)', () => {
143
143
  });
144
144
  it('writes bundles for today\'s rules, which read back unpinned', async () => {
145
145
  const { manifest, bytes } = await createBundle({ name: 'Now', chapters: [{ markdown: CHAPTER }], config: BODY });
146
- expect(CONFIG_VERSION).toBe(13);
147
- expect(manifest.configVersion).toBe(13);
146
+ expect(CONFIG_VERSION).toBe(14);
147
+ expect(manifest.configVersion).toBe(14);
148
148
  const again = await openBundle(bytes);
149
149
  expect(again.config.math).toBeUndefined();
150
150
  // …and a 1.4 bundle, opened and written again, is read back as it was
@@ -101,7 +101,7 @@ describe('configurations stored before rules 6 keep the 1.4 box spacing', () =>
101
101
  // It names the box cut (EF-115), so the box gap is the pin that shows.
102
102
  const config = { layout: { layoutType: 'single', boxChildSplitMinLines: 2 } };
103
103
  it('pins a configuration whose book embeds a resource in a box, once', () => {
104
- expect(CONFIG_VERSION).toBe(13);
104
+ expect(CONFIG_VERSION).toBe(14);
105
105
  // Stamped 5 (a 1.5 prerelease): the box gap is the only pin it gets.
106
106
  expect(migrateConfig(config, 5, { content: MD }).layout).toEqual({ layoutType: 'single', boxChildSplitMinLines: 2, inlineResourceGapInBoxes: false });
107
107
  // Unversioned (1.4): both gap pins.
@@ -155,7 +155,7 @@ describe('layout.boxChildSplitMinLines', () => {
155
155
  it('is pinned to 1 for configurations stored before rules 6 whose book holds a box', () => {
156
156
  const cfg = { layout: { layoutType: 'single', inlineResourceGap: 'around', inlineResourceGapInBoxes: true } };
157
157
  const box = twoLineItems(3);
158
- expect(CONFIG_VERSION).toBe(13);
158
+ expect(CONFIG_VERSION).toBe(14);
159
159
  // Unversioned (1.4) and stamped 5 (a 1.5 prerelease): pinned.
160
160
  expect(migrateConfig(cfg, undefined, { content: box }).layout?.boxChildSplitMinLines).toBe(1);
161
161
  expect(migrateConfig(cfg, 5, { content: ['No box here.', box] }).layout?.boxChildSplitMinLines).toBe(1);
@@ -110,7 +110,7 @@ describe('colonListRoom: \'line\' keeps the postext 1.4 room check (EF-110)', ()
110
110
  describe('configurations stored before rules 6 keep the 1.4 colon-list room', () => {
111
111
  const LIST = 'Look for these signs:\n\n- one\n- two';
112
112
  it('pins a configuration older than 6 whose book introduces a list with a colon, once', () => {
113
- expect(CONFIG_VERSION).toBe(13);
113
+ expect(CONFIG_VERSION).toBe(14);
114
114
  const stored = { bodyText: { fontFamily: 'Georgia' } };
115
115
  for (const version of [undefined, 3, 4, 5]) {
116
116
  expect(migrateConfig(stored, version, { content: LIST }).bodyText, `${version}`)
@@ -121,7 +121,7 @@ describe('a break after a compound’s hyphen on both paths (EF-186)', () => {
121
121
  expect(other).toBeGreaterThan(0);
122
122
  });
123
123
  it('is pinned off for configurations stored before rules 8 whose text sets a compound', () => {
124
- expect(CONFIG_VERSION).toBe(13);
124
+ expect(CONFIG_VERSION).toBe(14);
125
125
  const stored = { bodyText: { fontFamily: 'Georgia' } };
126
126
  for (const version of [undefined, 3, 6, 7]) {
127
127
  expect(migrateConfig(stored, version, { content: EN }).bodyText?.breakAfterHyphens, `${version}`).toBe(false);
@@ -303,7 +303,7 @@ describe('breakAfterDashes in the configuration', () => {
303
303
  expect(stripBodyTextDefaults({ breakAfterDashes: false })).toEqual({ breakAfterDashes: false });
304
304
  });
305
305
  it('is pinned off for configurations stored before rules 7 whose text sets a closed dash', () => {
306
- expect(CONFIG_VERSION).toBe(13);
306
+ expect(CONFIG_VERSION).toBe(14);
307
307
  const stored = { bodyText: { fontFamily: 'Georgia' } };
308
308
  for (const version of [undefined, 3, 5, 6]) {
309
309
  expect(migrateConfig(stored, version, { content: ALICE }).bodyText?.breakAfterDashes, `${version}`).toBe(false);
@@ -103,7 +103,7 @@ describe('a paragraph kept with the heading above it splits by the orphan rule t
103
103
  }
104
104
  // Stored under today's rules, it is read as it is.
105
105
  expect(migrateConfig(stored, CONFIG_VERSION, { content: markdown })).toBe(stored);
106
- expect(CONFIG_VERSION).toBe(13);
106
+ expect(CONFIG_VERSION).toBe(14);
107
107
  });
108
108
  it('pins only what the setting changes', () => {
109
109
  const plain = { bodyText: { fontFamily: 'Georgia' } };
@@ -126,7 +126,7 @@ describe('layout.inlineResourceGap and configurations stored before postext 1.5
126
126
  });
127
127
  it('pins a stored configuration whose book embeds a resource, once', () => {
128
128
  const config = { layout: { layoutType: 'single' } };
129
- expect(CONFIG_VERSION).toBe(13);
129
+ expect(CONFIG_VERSION).toBe(14);
130
130
  const pinned = migrateConfig(config, undefined, { content: MD });
131
131
  expect(pinned.layout).toEqual({ layoutType: 'single', inlineResourceGap: 'above' });
132
132
  // Stamped 4 (a 1.5 prerelease): the gap is the only pin it gets.
@@ -240,7 +240,7 @@ describe('paragraphStyles[].snapToGrid (EF-184)', () => {
240
240
  describe('configurations stored before rules 8 keep the 1.4 space under containers', () => {
241
241
  const stored = { bodyText: { fontFamily: 'Georgia' }, paragraphStyles: [{ id: 's' }] };
242
242
  it('pins \'add\' when the book holds a :::paragraphs container', () => {
243
- expect(CONFIG_VERSION).toBe(13);
243
+ expect(CONFIG_VERSION).toBe(14);
244
244
  for (const version of [undefined, 3, 5, 6, 7]) {
245
245
  expect(migrateConfig(stored, version, { content: GROUP_THEN_HEADING }).bodyText?.paragraphContainerSpacing, `${version}`).toBe('add');
246
246
  }
@@ -168,7 +168,7 @@ describe('optimalRagged in the configuration', () => {
168
168
  expect(stripBodyTextDefaults({ optimalRagged: false })).toEqual({ optimalRagged: false });
169
169
  });
170
170
  it('is pinned off for configurations stored before rules 7 that set running text ragged', () => {
171
- expect(CONFIG_VERSION).toBe(13);
171
+ expect(CONFIG_VERSION).toBe(14);
172
172
  const ragged = { bodyText: { textAlign: 'left' } };
173
173
  for (const version of [undefined, 3, 5, 6]) {
174
174
  expect(migrateConfig(ragged, version, { content: 'Text.' }).bodyText, `${version}`).toEqual({ textAlign: 'left', optimalRagged: false, scriptContext: false, shapingLanguage: 'host' });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=plainGeminateHead.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plainGeminateHead.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/plainGeminateHead.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,92 @@
1
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
+ import { clearMeasurementCache, measureBlock } from '../measure';
3
+ import { setMeasureLanguage } from '../measure/canvas';
4
+ import { setHyphenationLocale } from '../hyphenate';
5
+ // #770: the head of a break inside a Catalan `l·l`, in a plain paragraph.
6
+ // The line ends on the piece `col·` and prints a hyphen in the dot's
7
+ // place, so the dot's width is given back. The dot set alone was taken
8
+ // for it; a face that sets the dot after an `l` otherwise than alone
9
+ // (Castoro's Catalan form, 0.129 em there and 0.297 em alone; Lora's
10
+ // `l·` ligature) left the head off the text painted: `til-` 22.02 px for
11
+ // 25.28 at 19.4 px in Castoro.
12
+ const DOT = '·';
13
+ /** px at 10 px: every letter 5, a space 2.5, a hyphen 3, the dot 2.5; the
14
+ * face ligates `l·`, 1.3 narrower (as Lora). */
15
+ function faceWidth(text) {
16
+ const chars = Array.from(text);
17
+ let px = 0;
18
+ chars.forEach((ch, i) => {
19
+ if (ch === ' ')
20
+ px += 2.5;
21
+ else if (ch === '-')
22
+ px += 3;
23
+ else if (ch === DOT)
24
+ px += 2.5;
25
+ else
26
+ px += 5;
27
+ if (`${chars[i - 1] ?? ''}${ch}` === `l${DOT}`)
28
+ px -= 1.3;
29
+ });
30
+ return px;
31
+ }
32
+ class MeasureContext {
33
+ font = '10px Lliga';
34
+ lang = 'inherit';
35
+ direction = 'ltr';
36
+ measureText(s) {
37
+ return { width: faceWidth(s) };
38
+ }
39
+ }
40
+ const globals = globalThis;
41
+ const saved = { canvas: globals.OffscreenCanvas, context: globals.OffscreenCanvasRenderingContext2D };
42
+ const FONT = '10px Lliga';
43
+ const TEXT = `aa col${DOT}lecció bb`;
44
+ const GREEDY = { textAlign: 'left', hyphenate: true };
45
+ const OPTIMAL = { textAlign: 'justify', hyphenate: true, optimal: true };
46
+ function lay(language, options) {
47
+ setHyphenationLocale('ca');
48
+ setMeasureLanguage(language);
49
+ return measureBlock(TEXT, FONT, 32, 14, options).lines;
50
+ }
51
+ /** The width of the pieces a line ends on, back to its last space. */
52
+ function closing(line) {
53
+ let width = 0;
54
+ for (const s of [...(line.segments ?? [])].reverse()) {
55
+ if (s.kind === 'space')
56
+ break;
57
+ width += s.width;
58
+ }
59
+ return Math.round(width * 1000) / 1000;
60
+ }
61
+ describe('the head of a break inside an l·l in a plain paragraph (#770)', () => {
62
+ beforeEach(() => {
63
+ globals.OffscreenCanvasRenderingContext2D = MeasureContext;
64
+ globals.OffscreenCanvas = class {
65
+ getContext() {
66
+ return new MeasureContext();
67
+ }
68
+ };
69
+ clearMeasurementCache();
70
+ });
71
+ afterEach(() => {
72
+ setMeasureLanguage(undefined);
73
+ clearMeasurementCache();
74
+ globals.OffscreenCanvas = saved.canvas;
75
+ globals.OffscreenCanvasRenderingContext2D = saved.context;
76
+ });
77
+ for (const [name, options] of [['line by line', GREEDY], ['Knuth–Plass', OPTIMAL]]) {
78
+ it(`${name}: a document shaped in its own language measures the letters before the dot and the hyphen`, () => {
79
+ const lines = lay('ca', options);
80
+ expect(lines[0].text).toBe('aa col-');
81
+ // `col` 15 px and the hyphen 3: the text painted.
82
+ expect(closing(lines[0])).toBe(18);
83
+ });
84
+ it(`${name}: one shaped in the host's language keeps the width it had`, () => {
85
+ const lines = lay(undefined, options);
86
+ expect(lines[0].text).toBe('aa col-');
87
+ // `col·` 16.2 px, less the dot alone, 2.5, and the hyphen.
88
+ expect(closing(lines[0])).toBe(16.7);
89
+ });
90
+ }
91
+ });
92
+ //# sourceMappingURL=plainGeminateHead.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plainGeminateHead.test.js","sourceRoot":"","sources":["../../src/__tests__/plainGeminateHead.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAIpD,0EAA0E;AAC1E,qEAAqE;AACrE,uEAAuE;AACvE,qEAAqE;AACrE,qEAAqE;AACrE,yEAAyE;AACzE,+BAA+B;AAE/B,MAAM,GAAG,GAAG,GAAG,CAAC;AAChB;iDACiD;AACjD,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QACtB,IAAI,EAAE,KAAK,GAAG;YAAE,EAAE,IAAI,GAAG,CAAC;aACrB,IAAI,EAAE,KAAK,GAAG;YAAE,EAAE,IAAI,CAAC,CAAC;aACxB,IAAI,EAAE,KAAK,GAAG;YAAE,EAAE,IAAI,GAAG,CAAC;;YAC1B,EAAE,IAAI,CAAC,CAAC;QACb,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,IAAI,GAAG,EAAE;YAAE,EAAE,IAAI,GAAG,CAAC;IAC5D,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,CAAC;AACZ,CAAC;AACD,MAAM,cAAc;IAClB,IAAI,GAAG,YAAY,CAAC;IACpB,IAAI,GAAG,SAAS,CAAC;IACjB,SAAS,GAAG,KAAK,CAAC;IAClB,WAAW,CAAC,CAAS;QACnB,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,CAAC;CACF;AACD,MAAM,OAAO,GAAG,UAAiG,CAAC;AAClH,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,EAAE,OAAO,CAAC,iCAAiC,EAAE,CAAC;AAEtG,MAAM,IAAI,GAAG,YAAY,CAAC;AAC1B,MAAM,IAAI,GAAG,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,MAAM,GAAwB,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC3E,MAAM,OAAO,GAAwB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAE9F,SAAS,GAAG,CAAC,QAA4B,EAAE,OAA4B;IACrE,oBAAoB,CAAC,IAAa,CAAC,CAAC;IACpC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC7B,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC;AACzD,CAAC;AACD,sEAAsE;AACtE,SAAS,OAAO,CAAC,IAAa;IAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACrD,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;YAAE,MAAM;QAC9B,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AACzC,CAAC;AAED,QAAQ,CAAC,+DAA+D,EAAE,GAAG,EAAE;IAC7E,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,CAAC,iCAAiC,GAAG,cAAc,CAAC;QAC3D,OAAO,CAAC,eAAe,GAAG;YACxB,UAAU;gBACR,OAAO,IAAI,cAAc,EAAE,CAAC;YAC9B,CAAC;SACF,CAAC;QACF,qBAAqB,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,GAAG,EAAE;QACb,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC9B,qBAAqB,EAAE,CAAC;QACxB,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;QACvC,OAAO,CAAC,iCAAiC,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAU,EAAE,CAAC;QAC5F,EAAE,CAAC,GAAG,IAAI,4FAA4F,EAAE,GAAG,EAAE;YAC3G,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvC,kDAAkD;YAClD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,GAAG,IAAI,4DAA4D,EAAE,GAAG,EAAE;YAC3E,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvC,2DAA2D;YAC3D,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=showcaseShapingLanguage.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"showcaseShapingLanguage.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/presets/showcaseShapingLanguage.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ /* eslint-disable @typescript-eslint/ban-ts-comment -- node built-ins in a test */
2
+ // @ts-nocheck
3
+ /* #770: the showcase bundles (apps/web/public/presets) keep their lines
4
+ now that a document is shaped in its own language by default. Each was
5
+ laid out in the language of the page that hosted it and is stamped
6
+ below `configVersion` 14 (8, or nothing at all), so the engine's own
7
+ migration writes `bodyText.shapingLanguage: 'host'` on the body text
8
+ every one of its editions is laid out with. None is to be stamped again
9
+ without being laid out again: the stamp is what keeps it. */
10
+ import { describe, it, expect } from 'vitest';
11
+ import { readdirSync, readFileSync, existsSync } from 'node:fs';
12
+ import { join } from 'node:path';
13
+ import { CONFIG_VERSION, migrateBundleConfig } from '../../bundle/configVersion';
14
+ import { pickLocaleOverrides } from '../../bundle/manifest';
15
+ import { shapingLanguageOf } from '../../locale';
16
+ import { resolveAllConfig } from '../../pipeline/config';
17
+ const PRESETS = join(__dirname, '../../../../../apps/web/public/presets');
18
+ /** The editions a bundle serves: its own language, the ones it lists and
19
+ * the ones it rewords. */
20
+ function editionsOf(manifest) {
21
+ const listed = manifest.locales ?? [];
22
+ return [...new Set([...(manifest.locale ? [manifest.locale] : []), ...listed, ...Object.keys(manifest.localized ?? {})])];
23
+ }
24
+ describe('#770: the showcase bundles are shaped in the language of the host, as they were laid out', () => {
25
+ const ids = existsSync(PRESETS) ? readdirSync(PRESETS).filter((d) => existsSync(join(PRESETS, d, 'preset.json'))) : [];
26
+ const manifestOf = (id) => JSON.parse(readFileSync(join(PRESETS, id, 'preset.json'), 'utf8'));
27
+ it('finds the showcase bundles and their editions', () => {
28
+ expect(ids.length).toBeGreaterThan(5);
29
+ expect(ids.flatMap((id) => editionsOf(manifestOf(id))).length).toBeGreaterThanOrEqual(ids.length);
30
+ });
31
+ it.each(ids)('%s: stamped before 14, and every edition reads with the host\'s language', (id) => {
32
+ const manifest = manifestOf(id);
33
+ const stamp = manifest.configVersion;
34
+ expect(stamp === undefined || (typeof stamp === 'number' && stamp < 14), `${id} is stamped ${String(stamp)}`).toBe(true);
35
+ expect(CONFIG_VERSION).toBeGreaterThanOrEqual(14);
36
+ const editions = editionsOf(manifest);
37
+ expect(editions.length).toBeGreaterThan(0);
38
+ for (const locale of editions) {
39
+ const overrides = pickLocaleOverrides(manifest, locale);
40
+ const config = migrateBundleConfig({}, [manifest.config ?? {}, overrides?.config ?? {}], stamp);
41
+ expect(config.bodyText?.shapingLanguage, `${id} ${locale}`).toBe('host');
42
+ const resolved = resolveAllConfig({ ...config, locale: config.locale ?? locale });
43
+ expect(resolved.bodyText.shapingLanguage, `${id} ${locale}`).toBe('host');
44
+ expect(shapingLanguageOf(resolved), `${id} ${locale}`).toBeUndefined();
45
+ // The same manifest under today's stamp would be shaped in its own
46
+ // language: the stamp is what keeps it.
47
+ const restamped = migrateBundleConfig({}, [manifest.config ?? {}, overrides?.config ?? {}], CONFIG_VERSION);
48
+ expect(shapingLanguageOf(resolveAllConfig({ ...restamped, locale: restamped.locale ?? locale })), `${id} ${locale}`).not.toBeUndefined();
49
+ }
50
+ });
51
+ });
52
+ //# sourceMappingURL=showcaseShapingLanguage.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"showcaseShapingLanguage.test.js","sourceRoot":"","sources":["../../../src/__tests__/presets/showcaseShapingLanguage.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=reshapedTracking.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reshapedTracking.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/reshapedTracking.test.ts"],"names":[],"mappings":""}