@lightningjs/renderer 3.0.0-beta13 → 3.0.0-beta15

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 (278) hide show
  1. package/dist/exports/index.d.ts +1 -0
  2. package/dist/exports/index.js.map +1 -1
  3. package/dist/src/core/CoreNode.d.ts +1 -1
  4. package/dist/src/core/CoreTextNode.d.ts +0 -2
  5. package/dist/src/core/CoreTextNode.js +4 -16
  6. package/dist/src/core/CoreTextNode.js.map +1 -1
  7. package/dist/src/core/Stage.js +2 -3
  8. package/dist/src/core/Stage.js.map +1 -1
  9. package/dist/src/core/TextureError.d.ts +11 -0
  10. package/dist/src/core/TextureError.js +37 -0
  11. package/dist/src/core/TextureError.js.map +1 -0
  12. package/dist/src/core/animations/CoreAnimation.d.ts +3 -2
  13. package/dist/src/core/animations/CoreAnimation.js +3 -2
  14. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  15. package/dist/src/core/lib/WebGlContextWrapper.d.ts +6 -6
  16. package/dist/src/core/lib/WebGlContextWrapper.js +2 -2
  17. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  18. package/dist/src/core/lib/textureCompression.js +1 -1
  19. package/dist/src/core/lib/textureCompression.js.map +1 -1
  20. package/dist/src/core/platform.d.ts +10 -0
  21. package/dist/src/core/platform.js +81 -0
  22. package/dist/src/core/platform.js.map +1 -0
  23. package/dist/src/core/renderers/CoreShader.d.ts +9 -0
  24. package/{src/core/text-rendering/sdf/index.ts → dist/src/core/renderers/CoreShader.js} +11 -3
  25. package/dist/src/core/renderers/CoreShader.js.map +1 -0
  26. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +33 -0
  27. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +250 -0
  28. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -0
  29. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +17 -0
  30. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +125 -0
  31. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -0
  32. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +14 -0
  33. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +138 -0
  34. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -0
  35. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +19 -0
  36. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +58 -0
  37. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -0
  38. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +10 -0
  39. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +43 -0
  40. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +1 -0
  41. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +12 -0
  42. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +58 -0
  43. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -0
  44. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +9 -0
  45. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +38 -0
  46. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -0
  47. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +65 -0
  48. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +269 -0
  49. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -0
  50. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +34 -0
  51. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +114 -0
  52. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -0
  53. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +133 -0
  54. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +616 -0
  55. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -0
  56. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +83 -0
  57. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +233 -0
  58. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -0
  59. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +1 -1
  60. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +4 -5
  61. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  62. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +9 -0
  63. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +87 -0
  64. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -0
  65. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +10 -0
  66. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +119 -0
  67. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -0
  68. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +29 -0
  69. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +413 -0
  70. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -0
  71. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +28 -0
  72. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +131 -0
  73. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -0
  74. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +47 -0
  75. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +160 -0
  76. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -0
  77. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +31 -0
  78. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +71 -0
  79. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -0
  80. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +30 -0
  81. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +58 -0
  82. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -0
  83. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +31 -0
  84. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +71 -0
  85. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -0
  86. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +31 -0
  87. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +71 -0
  88. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -0
  89. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +31 -0
  90. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +71 -0
  91. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -0
  92. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +9 -0
  93. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +136 -0
  94. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -0
  95. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +36 -0
  96. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +85 -0
  97. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +1 -0
  98. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +45 -0
  99. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +104 -0
  100. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -0
  101. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +22 -0
  102. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +45 -0
  103. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +1 -0
  104. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +58 -0
  105. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +80 -0
  106. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +1 -0
  107. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +35 -0
  108. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +129 -0
  109. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -0
  110. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +39 -0
  111. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +116 -0
  112. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -0
  113. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +61 -0
  114. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +127 -0
  115. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +1 -0
  116. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +40 -0
  117. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +71 -0
  118. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -0
  119. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +115 -0
  120. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +61 -0
  121. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -0
  122. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +1 -1
  123. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  124. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +1 -1
  125. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
  126. package/dist/src/core/shaders/webgl/LinearGradient.js +26 -3
  127. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  128. package/dist/src/core/shaders/webgl/RadialGradient.js +49 -27
  129. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  130. package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
  131. package/dist/src/core/shaders/webgl/SdfShader.js +1 -10
  132. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
  133. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +21 -3
  134. package/dist/src/core/text-rendering/CanvasFontHandler.js +94 -32
  135. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -1
  136. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +2 -7
  137. package/dist/src/core/text-rendering/CanvasTextRenderer.js +51 -260
  138. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -1
  139. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +35 -5
  140. package/dist/src/core/text-rendering/SdfFontHandler.js +76 -56
  141. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -1
  142. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +1 -1
  143. package/dist/src/core/text-rendering/SdfTextRenderer.js +38 -82
  144. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -1
  145. package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +19 -0
  146. package/dist/src/core/text-rendering/{sdf/Utils.js → TextLayoutEngine.js} +125 -105
  147. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
  148. package/dist/src/core/text-rendering/TextRenderer.d.ts +30 -13
  149. package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +12 -0
  150. package/dist/src/core/text-rendering/TextRenderingUtils.js +14 -0
  151. package/dist/src/core/text-rendering/TextRenderingUtils.js.map +1 -0
  152. package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +72 -0
  153. package/dist/src/core/text-rendering/TextTextureRendererUtils.js +217 -0
  154. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -0
  155. package/dist/src/core/text-rendering/TrFontManager.d.ts +26 -0
  156. package/dist/src/core/text-rendering/TrFontManager.js +131 -0
  157. package/dist/src/core/text-rendering/TrFontManager.js.map +1 -0
  158. package/dist/src/core/text-rendering/Utils.d.ts +1 -42
  159. package/dist/src/core/text-rendering/Utils.js +4 -132
  160. package/dist/src/core/text-rendering/Utils.js.map +1 -1
  161. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +39 -0
  162. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +125 -0
  163. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -0
  164. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +103 -0
  165. package/dist/src/core/text-rendering/{sdf/index.js → font-face-types/SdfTrFontFace/internal/FontShaper.js} +4 -3
  166. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +1 -0
  167. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +62 -0
  168. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +88 -0
  169. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +1 -0
  170. package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +118 -0
  171. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +63 -0
  172. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +1 -0
  173. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +14 -0
  174. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +66 -0
  175. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +1 -0
  176. package/dist/src/core/text-rendering/font-face-types/utils.d.ts +1 -0
  177. package/dist/src/core/text-rendering/font-face-types/utils.js +38 -0
  178. package/dist/src/core/text-rendering/font-face-types/utils.js.map +1 -0
  179. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +59 -0
  180. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +397 -0
  181. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -0
  182. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +120 -0
  183. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +551 -0
  184. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -0
  185. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +92 -0
  186. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +607 -0
  187. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -0
  188. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +12 -0
  189. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +61 -0
  190. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +1 -0
  191. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +33 -0
  192. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +52 -0
  193. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +1 -0
  194. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +13 -0
  195. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +32 -0
  196. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +1 -0
  197. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +23 -0
  198. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +84 -0
  199. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +1 -0
  200. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +4 -0
  201. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +34 -0
  202. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +1 -0
  203. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +20 -0
  204. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +308 -0
  205. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -0
  206. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +10 -0
  207. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +40 -0
  208. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +1 -0
  209. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +26 -0
  210. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +70 -0
  211. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +1 -0
  212. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +16 -0
  213. package/dist/src/core/text-rendering/{canvas/Settings.js → renderers/SdfTextRenderer/internal/util.js} +22 -3
  214. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +1 -0
  215. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +373 -0
  216. package/dist/src/core/text-rendering/renderers/TextRenderer.js +178 -0
  217. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -0
  218. package/dist/src/core/utils.d.ts +2 -1
  219. package/dist/src/core/utils.js +1 -1
  220. package/dist/src/core/utils.js.map +1 -1
  221. package/dist/src/main-api/DynamicShaderController.d.ts +29 -0
  222. package/dist/src/main-api/DynamicShaderController.js +58 -0
  223. package/dist/src/main-api/DynamicShaderController.js.map +1 -0
  224. package/dist/src/main-api/Inspector.d.ts +124 -0
  225. package/dist/src/main-api/Inspector.js +283 -8
  226. package/dist/src/main-api/Inspector.js.map +1 -1
  227. package/dist/src/main-api/Renderer.d.ts +150 -26
  228. package/dist/src/main-api/Renderer.js +27 -25
  229. package/dist/src/main-api/Renderer.js.map +1 -1
  230. package/dist/src/main-api/ShaderController.d.ts +31 -0
  231. package/dist/src/main-api/ShaderController.js +37 -0
  232. package/dist/src/main-api/ShaderController.js.map +1 -0
  233. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  234. package/exports/index.ts +1 -0
  235. package/package.json +14 -15
  236. package/src/core/CoreTextNode.ts +4 -22
  237. package/src/core/Stage.ts +2 -3
  238. package/src/core/animations/CoreAnimation.ts +8 -7
  239. package/src/core/lib/WebGlContextWrapper.ts +4 -3
  240. package/src/core/lib/textureCompression.ts +4 -2
  241. package/src/core/renderers/webgl/WebGlShaderProgram.ts +5 -6
  242. package/src/core/shaders/canvas/RoundedWithBorder.ts +1 -1
  243. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +1 -1
  244. package/src/core/shaders/webgl/LinearGradient.ts +26 -3
  245. package/src/core/shaders/webgl/RadialGradient.ts +50 -28
  246. package/src/core/shaders/webgl/SdfShader.ts +1 -12
  247. package/src/core/text-rendering/CanvasFontHandler.ts +136 -39
  248. package/src/core/text-rendering/CanvasTextRenderer.ts +75 -440
  249. package/src/core/text-rendering/SdfFontHandler.ts +94 -60
  250. package/src/core/text-rendering/SdfTextRenderer.ts +62 -116
  251. package/src/core/text-rendering/{sdf/Utils.ts → TextLayoutEngine.ts} +209 -143
  252. package/src/core/text-rendering/TextRenderer.ts +36 -13
  253. package/src/core/text-rendering/Utils.ts +5 -163
  254. package/src/core/text-rendering/{sdf/Utils.test.ts → tests/Canvas.test.ts} +98 -122
  255. package/src/core/text-rendering/tests/SdfTests.test.ts +414 -0
  256. package/src/core/utils.ts +9 -7
  257. package/src/main-api/Inspector.ts +502 -12
  258. package/src/main-api/Renderer.ts +158 -26
  259. package/dist/src/core/text-rendering/canvas/Settings.d.ts +0 -64
  260. package/dist/src/core/text-rendering/canvas/Settings.js.map +0 -1
  261. package/dist/src/core/text-rendering/canvas/Utils.d.ts +0 -20
  262. package/dist/src/core/text-rendering/canvas/Utils.js +0 -144
  263. package/dist/src/core/text-rendering/canvas/Utils.js.map +0 -1
  264. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.d.ts +0 -60
  265. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js +0 -183
  266. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js.map +0 -1
  267. package/dist/src/core/text-rendering/canvas/draw.d.ts +0 -5
  268. package/dist/src/core/text-rendering/canvas/draw.js +0 -132
  269. package/dist/src/core/text-rendering/canvas/draw.js.map +0 -1
  270. package/dist/src/core/text-rendering/sdf/Utils.d.ts +0 -26
  271. package/dist/src/core/text-rendering/sdf/Utils.js.map +0 -1
  272. package/dist/src/core/text-rendering/sdf/index.d.ts +0 -1
  273. package/dist/src/core/text-rendering/sdf/index.js.map +0 -1
  274. package/src/core/text-rendering/canvas/Settings.ts +0 -99
  275. package/src/core/text-rendering/canvas/Utils.test.ts +0 -206
  276. package/src/core/text-rendering/canvas/Utils.ts +0 -178
  277. package/src/core/text-rendering/canvas/calculateRenderInfo.ts +0 -299
  278. package/src/core/text-rendering/canvas/draw.ts +0 -165
@@ -28,6 +28,8 @@ import type { ImageTexture } from '../textures/ImageTexture.js';
28
28
  import type { Stage } from '../Stage.js';
29
29
  import type { CoreTextNode } from '../CoreTextNode.js';
30
30
  import { UpdateType } from '../CoreNode.js';
31
+ import { hasZeroWidthSpace } from './Utils.js';
32
+ import { normalizeFontMetrics } from './TextLayoutEngine.js';
31
33
 
32
34
  /**
33
35
  * SDF Font Data structure matching msdf-bmfont-xml output
@@ -115,31 +117,24 @@ type KerningTable = Record<
115
117
  * @typedef {Object} SdfFontCache
116
118
  * Cached font data for performance
117
119
  */
118
- interface SdfFontCache {
120
+ export interface SdfFont {
119
121
  data: SdfFontData;
120
122
  glyphMap: Map<number, SdfFontData['chars'][0]>;
121
123
  kernings: KerningTable;
122
124
  atlasTexture: ImageTexture;
123
- metrics: NormalizedFontMetrics;
125
+ metrics: FontMetrics;
124
126
  maxCharHeight: number;
125
127
  }
126
128
 
127
129
  //global state variables for SdfFontHandler
128
- const fontCache: Record<string, SdfFontCache> = Object.create(null);
129
- const loadedFonts = new Set<string>();
130
+ const fontCache = new Map<string, SdfFont>();
130
131
  const fontLoadPromises = new Map<string, Promise<void>>();
131
- const nodesWaitingForFont: Record<string, CoreTextNode[]> = Object.create(null);
132
+ const normalizedMetrics = new Map<string, NormalizedFontMetrics>();
133
+ const nodesWaitingForFont: Record<string, CoreTextNode[]> = Object.create(
134
+ null,
135
+ ) as Record<string, CoreTextNode[]>;
132
136
  let initialized = false;
133
137
 
134
- /**
135
- * Normalize font metrics to be in the range of 0 to 1
136
- */
137
- const normalizeMetrics = (metrics: FontMetrics): NormalizedFontMetrics => ({
138
- ascender: metrics.ascender / metrics.unitsPerEm,
139
- descender: metrics.descender / metrics.unitsPerEm,
140
- lineGap: metrics.lineGap / metrics.unitsPerEm,
141
- });
142
-
143
138
  /**
144
139
  * Build kerning lookup table for fast access
145
140
  * @param {Array} kernings - Kerning data from font
@@ -236,35 +231,31 @@ const processFontData = (
236
231
  i++;
237
232
  }
238
233
 
239
- // Determine metrics
240
- let normalizedMetrics: NormalizedFontMetrics;
241
-
242
- if (metrics !== undefined) {
243
- normalizedMetrics = normalizeMetrics(metrics);
244
- } else if (fontData.lightningMetrics !== undefined) {
245
- normalizedMetrics = normalizeMetrics(fontData.lightningMetrics);
246
- } else {
234
+ if (metrics === undefined && fontData.lightningMetrics === undefined) {
247
235
  console.warn(
248
236
  `Font metrics not found for SDF font ${fontFamily}. ` +
249
237
  'Make sure you are using the latest version of the Lightning ' +
250
238
  '3 msdf-generator tool to generate your SDF fonts. Using default metrics.',
251
239
  );
252
- // Use default metrics
253
- normalizedMetrics = {
254
- ascender: 0.8,
255
- descender: -0.2,
256
- lineGap: 0.2,
257
- };
258
240
  }
241
+
242
+ metrics = metrics ||
243
+ fontData.lightningMetrics || {
244
+ ascender: 800,
245
+ descender: -200,
246
+ lineGap: 200,
247
+ unitsPerEm: 1000,
248
+ };
249
+
259
250
  // Cache processed data
260
- fontCache[fontFamily] = {
251
+ fontCache.set(fontFamily, {
261
252
  data: fontData,
262
253
  glyphMap,
263
254
  kernings,
264
255
  atlasTexture,
265
- metrics: normalizedMetrics,
256
+ metrics,
266
257
  maxCharHeight,
267
- };
258
+ });
268
259
  };
269
260
 
270
261
  /**
@@ -292,7 +283,7 @@ export const loadFont = async (
292
283
  ): Promise<void> => {
293
284
  const { fontFamily, atlasUrl, atlasDataUrl, metrics } = options;
294
285
  // Early return if already loaded
295
- if (loadedFonts.has(fontFamily) === true) {
286
+ if (fontCache.get(fontFamily) !== undefined) {
296
287
  return;
297
288
  }
298
289
 
@@ -341,7 +332,6 @@ export const loadFont = async (
341
332
  if (atlasTexture.state === 'loaded') {
342
333
  // If already loaded, process immediately
343
334
  processFontData(fontFamily, fontData, atlasTexture, metrics);
344
- loadedFonts.add(fontFamily);
345
335
  fontLoadPromises.delete(fontFamily);
346
336
 
347
337
  for (let key in nwff) {
@@ -355,8 +345,7 @@ export const loadFont = async (
355
345
  // Process and cache font data
356
346
  processFontData(fontFamily, fontData, atlasTexture, metrics);
357
347
 
358
- // Mark as loaded
359
- loadedFonts.add(fontFamily);
348
+ // remove from promises
360
349
  fontLoadPromises.delete(fontFamily);
361
350
 
362
351
  for (let key in nwff) {
@@ -435,7 +424,7 @@ export const type = 'sdf';
435
424
  * Check if a font is already loaded by font family
436
425
  */
437
426
  export const isFontLoaded = (fontFamily: string): boolean => {
438
- return loadedFonts.has(fontFamily);
427
+ return fontCache.has(fontFamily);
439
428
  };
440
429
 
441
430
  /**
@@ -443,24 +432,26 @@ export const isFontLoaded = (fontFamily: string): boolean => {
443
432
  */
444
433
  export const getFontMetrics = (
445
434
  fontFamily: string,
446
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
435
+
447
436
  fontSize: number,
448
437
  ): NormalizedFontMetrics => {
449
- const cache = fontCache[fontFamily];
450
- return cache ? cache.metrics : { ascender: 0, descender: 0, lineGap: 0 };
438
+ const out = normalizedMetrics.get(fontFamily);
439
+ if (out !== undefined) {
440
+ return out;
441
+ }
442
+ let metrics = fontCache.get(fontFamily)!.metrics;
443
+ return processFontMetrics(fontFamily, fontSize, metrics);
451
444
  };
452
445
 
453
- /**
454
- * Set font metrics for a font family
455
- */
456
- export const setFontMetrics = (
446
+ export const processFontMetrics = (
457
447
  fontFamily: string,
458
- metrics: NormalizedFontMetrics,
459
- ): void => {
460
- const cache = fontCache[fontFamily];
461
- if (cache !== undefined) {
462
- cache.metrics = metrics;
463
- }
448
+ fontSize: number,
449
+ metrics: FontMetrics,
450
+ ): NormalizedFontMetrics => {
451
+ const label = fontFamily + fontSize;
452
+ const normalized = normalizeFontMetrics(metrics, fontSize);
453
+ normalizedMetrics.set(label, normalized);
454
+ return normalized;
464
455
  };
465
456
 
466
457
  /**
@@ -473,7 +464,7 @@ export const getGlyph = (
473
464
  fontFamily: string,
474
465
  codepoint: number,
475
466
  ): SdfFontData['chars'][0] | null => {
476
- const cache = fontCache[fontFamily];
467
+ const cache = fontCache.get(fontFamily);
477
468
  if (cache === undefined) return null;
478
469
 
479
470
  return cache.glyphMap.get(codepoint) || cache.glyphMap.get(63) || null; // 63 = '?'
@@ -491,7 +482,7 @@ export const getKerning = (
491
482
  firstGlyph: number,
492
483
  secondGlyph: number,
493
484
  ): number => {
494
- const cache = fontCache[fontFamily];
485
+ const cache = fontCache.get(fontFamily);
495
486
  if (cache === undefined) return 0;
496
487
 
497
488
  const seconds = cache.kernings[secondGlyph];
@@ -504,7 +495,7 @@ export const getKerning = (
504
495
  * @returns {ImageTexture|null} Atlas texture or null
505
496
  */
506
497
  export const getAtlas = (fontFamily: string): ImageTexture | null => {
507
- const cache = fontCache[fontFamily];
498
+ const cache = fontCache.get(fontFamily);
508
499
  return cache !== undefined ? cache.atlasTexture : null;
509
500
  };
510
501
 
@@ -513,9 +504,8 @@ export const getAtlas = (fontFamily: string): ImageTexture | null => {
513
504
  * @param {string} fontFamily - Font family name
514
505
  * @returns {SdfFontData|null} Font data or null
515
506
  */
516
- export const getFontData = (fontFamily: string): SdfFontData | null => {
517
- const cache = fontCache[fontFamily];
518
- return cache !== undefined ? cache.data : null;
507
+ export const getFontData = (fontFamily: string): SdfFont | undefined => {
508
+ return fontCache.get(fontFamily);
519
509
  };
520
510
 
521
511
  /**
@@ -524,7 +514,7 @@ export const getFontData = (fontFamily: string): SdfFontData | null => {
524
514
  * @returns {number} Max character height or 0
525
515
  */
526
516
  export const getMaxCharHeight = (fontFamily: string): number => {
527
- const cache = fontCache[fontFamily];
517
+ const cache = fontCache.get(fontFamily);
528
518
  return cache !== undefined ? cache.maxCharHeight : 0;
529
519
  };
530
520
 
@@ -533,7 +523,7 @@ export const getMaxCharHeight = (fontFamily: string): number => {
533
523
  * @returns {string[]} Array of font family names
534
524
  */
535
525
  export const getLoadedFonts = (): string[] => {
536
- return Array.from(loadedFonts);
526
+ return Array.from(fontCache.keys());
537
527
  };
538
528
 
539
529
  /**
@@ -541,14 +531,58 @@ export const getLoadedFonts = (): string[] => {
541
531
  * @param {string} fontFamily - Font family name
542
532
  */
543
533
  export const unloadFont = (fontFamily: string): void => {
544
- const cache = fontCache[fontFamily];
534
+ const cache = fontCache.get(fontFamily);
545
535
  if (cache !== undefined) {
546
536
  // Free texture if needed
547
537
  if (typeof cache.atlasTexture.free === 'function') {
548
538
  cache.atlasTexture.free();
549
539
  }
550
540
 
551
- delete fontCache[fontFamily];
552
- loadedFonts.delete(fontFamily);
541
+ fontCache.delete(fontFamily);
542
+ }
543
+ };
544
+
545
+ export const measureText = (
546
+ text: string,
547
+ fontFamily: string,
548
+ letterSpacing: number,
549
+ ): number => {
550
+ if (text.length === 1) {
551
+ const char = text.charAt(0);
552
+ const codepoint = text.codePointAt(0);
553
+ if (codepoint === undefined) return 0;
554
+ if (hasZeroWidthSpace(char) === true) return 0;
555
+
556
+ const glyph = getGlyph(fontFamily, codepoint);
557
+ if (glyph === null) return 0;
558
+ return glyph.xadvance + letterSpacing;
559
+ }
560
+ let width = 0;
561
+ let prevCodepoint = 0;
562
+ for (let i = 0; i < text.length; i++) {
563
+ const char = text.charAt(i);
564
+ const codepoint = text.codePointAt(i);
565
+ if (codepoint === undefined) continue;
566
+
567
+ // Skip zero-width spaces in width calculations
568
+ if (hasZeroWidthSpace(char)) {
569
+ continue;
570
+ }
571
+
572
+ const glyph = getGlyph(fontFamily, codepoint);
573
+ if (glyph === null) continue;
574
+
575
+ let advance = glyph.xadvance;
576
+
577
+ // Add kerning if there's a previous character
578
+ if (prevCodepoint !== 0) {
579
+ const kerning = getKerning(fontFamily, prevCodepoint, codepoint);
580
+ advance += kerning;
581
+ }
582
+
583
+ width += advance + letterSpacing;
584
+ prevCodepoint = codepoint;
553
585
  }
586
+
587
+ return width;
554
588
  };
@@ -20,11 +20,12 @@
20
20
  import type { Stage } from '../Stage.js';
21
21
  import type {
22
22
  FontHandler,
23
+ TextLineStruct,
23
24
  TextRenderInfo,
24
25
  TextRenderProps,
25
26
  } from './TextRenderer.js';
26
27
  import type { CoreTextNodeProps } from '../CoreTextNode.js';
27
- import { isZeroWidthSpace } from './Utils.js';
28
+ import { hasZeroWidthSpace } from './Utils.js';
28
29
  import * as SdfFontHandler from './SdfFontHandler.js';
29
30
  import type { CoreRenderer } from '../renderers/CoreRenderer.js';
30
31
  import { WebGlRenderer } from '../renderers/webgl/WebGlRenderer.js';
@@ -35,7 +36,7 @@ import type { WebGlCtxTexture } from '../renderers/webgl/WebGlCtxTexture.js';
35
36
  import type { WebGlShaderNode } from '../renderers/webgl/WebGlShaderNode.js';
36
37
  import { mergeColorAlpha } from '../../utils.js';
37
38
  import type { TextLayout, GlyphLayout } from './TextRenderer.js';
38
- import { wrapText, measureLines } from './sdf/index.js';
39
+ import { mapTextLayout } from './TextLayoutEngine.js';
39
40
 
40
41
  // Each glyph requires 6 vertices (2 triangles) with 4 floats each (x, y, u, v)
41
42
  const FLOATS_PER_VERTEX = 4;
@@ -64,7 +65,7 @@ const font: FontHandler = SdfFontHandler;
64
65
  * @param props - Text rendering properties
65
66
  * @returns Object containing ImageData and dimensions
66
67
  */
67
- const renderText = (stage: Stage, props: CoreTextNodeProps): TextRenderInfo => {
68
+ const renderText = (props: CoreTextNodeProps): TextRenderInfo => {
68
69
  // Early return if no text
69
70
  if (props.text.length === 0) {
70
71
  return {
@@ -75,7 +76,7 @@ const renderText = (stage: Stage, props: CoreTextNodeProps): TextRenderInfo => {
75
76
 
76
77
  // Get font cache for this font family
77
78
  const fontData = SdfFontHandler.getFontData(props.fontFamily);
78
- if (fontData === null) {
79
+ if (fontData === undefined) {
79
80
  // Font not loaded, return empty result
80
81
  return {
81
82
  width: 0,
@@ -88,6 +89,8 @@ const renderText = (stage: Stage, props: CoreTextNodeProps): TextRenderInfo => {
88
89
 
89
90
  // For SDF renderer, ImageData is null since we render via WebGL
90
91
  return {
92
+ remainingLines: 0,
93
+ hasRemainingText: false,
91
94
  width: layout.width,
92
95
  height: layout.height,
93
96
  layout, // Cache layout for addQuads
@@ -187,7 +190,6 @@ const renderQuads = (
187
190
  ): void => {
188
191
  const fontFamily = renderProps.fontFamily;
189
192
  const color = renderProps.color;
190
- const offsetY = renderProps.offsetY;
191
193
  const worldAlpha = renderProps.worldAlpha;
192
194
  const globalTransform = renderProps.globalTransform;
193
195
 
@@ -243,9 +245,7 @@ const renderQuads = (
243
245
  transform: globalTransform,
244
246
  color: mergeColorAlpha(color, worldAlpha),
245
247
  size: layout.fontScale, // Use proper font scaling in shader
246
- scrollY: offsetY || 0,
247
248
  distanceRange: layout.distanceRange,
248
- debug: false, // Disable debug mode
249
249
  } satisfies SdfShaderProps,
250
250
  sdfBuffers: webGlBuffers,
251
251
  shader: sdfShader,
@@ -274,132 +274,79 @@ const renderQuads = (
274
274
  */
275
275
  const generateTextLayout = (
276
276
  props: CoreTextNodeProps,
277
- fontData: SdfFontHandler.SdfFontData,
277
+ fontCache: SdfFontHandler.SdfFont,
278
278
  ): TextLayout => {
279
- const commonFontData = fontData.common;
280
- const text = props.text;
281
279
  const fontSize = props.fontSize;
282
- const letterSpacing = props.letterSpacing;
283
280
  const fontFamily = props.fontFamily;
284
- const textAlign = props.textAlign;
285
- const maxWidth = props.maxWidth;
286
- const maxHeight = props.maxHeight;
287
- const maxLines = props.maxLines;
288
- const overflowSuffix = props.overflowSuffix;
289
- const wordBreak = props.wordBreak;
290
-
291
- // Use the font's design size for proper scaling
292
- const designLineHeight = commonFontData.lineHeight;
281
+ const lineHeight = props.lineHeight;
282
+ const metrics = SdfFontHandler.getFontMetrics(fontFamily, fontSize);
283
+ const verticalAlign = props.verticalAlign;
293
284
 
285
+ const fontData = fontCache.data;
286
+ const commonFontData = fontData.common;
294
287
  const designFontSize = fontData.info.size;
295
288
 
296
- const lineHeight =
297
- props.lineHeight || (designLineHeight * fontSize) / designFontSize;
298
289
  const atlasWidth = commonFontData.scaleW;
299
290
  const atlasHeight = commonFontData.scaleH;
300
291
 
301
292
  // Calculate the pixel scale from design units to pixels
302
- const finalScale = fontSize / designFontSize;
303
-
304
- // Calculate design letter spacing
305
- const designLetterSpacing = (letterSpacing * designFontSize) / fontSize;
306
-
307
- // Determine text wrapping behavior based on contain mode
308
- const shouldWrapText = maxWidth > 0;
309
- const heightConstraint = maxHeight > 0;
310
-
311
- // Calculate maximum lines constraint from height if needed
312
- let effectiveMaxLines = maxLines;
313
- if (heightConstraint === true) {
314
- const maxLinesFromHeight = Math.floor(
315
- maxHeight / (lineHeight * finalScale),
316
- );
317
- if (effectiveMaxLines === 0 || maxLinesFromHeight < effectiveMaxLines) {
318
- effectiveMaxLines = maxLinesFromHeight;
319
- }
320
- }
293
+ const fontScale = fontSize / designFontSize;
294
+ const letterSpacing = props.letterSpacing / fontScale;
295
+
296
+ const maxWidth = props.maxWidth / fontScale;
297
+ const maxHeight = props.maxHeight;
298
+ const [
299
+ lines,
300
+ remainingLines,
301
+ hasRemainingText,
302
+ bareLineHeight,
303
+ lineHeightPx,
304
+ effectiveWidth,
305
+ effectiveHeight,
306
+ ] = mapTextLayout(
307
+ SdfFontHandler.measureText,
308
+ metrics,
309
+ props.text,
310
+ props.textAlign,
311
+ verticalAlign,
312
+ fontFamily,
313
+ lineHeight,
314
+ props.overflowSuffix,
315
+ props.wordBreak,
316
+ letterSpacing,
317
+ props.maxLines,
318
+ maxWidth,
319
+ maxHeight,
320
+ );
321
321
 
322
- const hasMaxLines = effectiveMaxLines > 0;
323
-
324
- // Split text into lines based on wrapping constraints
325
- const [lines, remainingLines, remainingText] = shouldWrapText
326
- ? wrapText(
327
- text,
328
- fontFamily,
329
- finalScale,
330
- maxWidth,
331
- letterSpacing,
332
- overflowSuffix,
333
- wordBreak,
334
- effectiveMaxLines,
335
- hasMaxLines,
336
- )
337
- : measureLines(
338
- text.split('\n'),
339
- fontFamily,
340
- letterSpacing,
341
- finalScale,
342
- effectiveMaxLines,
343
- hasMaxLines,
344
- );
322
+ const lineAmount = lines.length;
345
323
 
346
324
  const glyphs: GlyphLayout[] = [];
347
- let maxWidthFound = 0;
325
+ let currentX = 0;
348
326
  let currentY = 0;
349
-
350
- for (let i = 0; i < lines.length; i++) {
351
- if (lines[i]![1] > maxWidthFound) {
352
- maxWidthFound = lines[i]![1];
353
- }
354
- }
355
-
356
- // Second pass: Generate glyph layouts with proper alignment
357
- let lineIndex = 0;
358
- const linesLength = lines.length;
359
-
360
- while (lineIndex < linesLength) {
361
- const [line, lineWidth] = lines[lineIndex]!;
362
- lineIndex++;
363
-
364
- // Calculate line X offset based on text alignment
365
- let lineXOffset = 0;
366
- if (textAlign === 'center') {
367
- const availableWidth = shouldWrapText
368
- ? maxWidth / finalScale
369
- : maxWidthFound;
370
- lineXOffset = (availableWidth - lineWidth) / 2;
371
- } else if (textAlign === 'right') {
372
- const availableWidth = shouldWrapText
373
- ? maxWidth / finalScale
374
- : maxWidthFound;
375
- lineXOffset = availableWidth - lineWidth;
376
- }
377
-
378
- let currentX = lineXOffset;
379
- let charIndex = 0;
380
- const lineLength = line.length;
327
+ for (let i = 0; i < lineAmount; i++) {
328
+ const line = lines[i] as TextLineStruct;
329
+ const textLine = line[0];
330
+ const textLineLength = textLine.length;
381
331
  let prevCodepoint = 0;
332
+ currentX = line[2];
333
+ //convert Y coord to vertex value
334
+ currentY = line[3] / fontScale;
382
335
 
383
- while (charIndex < lineLength) {
384
- const char = line.charAt(charIndex);
385
- const codepoint = char.codePointAt(0);
386
- charIndex++;
387
-
388
- if (codepoint === undefined) {
336
+ for (let j = 0; j < textLineLength; j++) {
337
+ const char = textLine.charAt(j);
338
+ if (hasZeroWidthSpace(char) === true) {
389
339
  continue;
390
340
  }
391
-
392
- // Skip zero-width spaces for rendering but keep them in the text flow
393
- if (isZeroWidthSpace(char)) {
341
+ const codepoint = char.codePointAt(0);
342
+ if (codepoint === undefined) {
394
343
  continue;
395
344
  }
396
-
397
345
  // Get glyph data from font handler
398
346
  const glyph = SdfFontHandler.getGlyph(fontFamily, codepoint);
399
347
  if (glyph === null) {
400
348
  continue;
401
349
  }
402
-
403
350
  // Calculate advance with kerning (in design units)
404
351
  let advance = glyph.xadvance;
405
352
 
@@ -432,21 +379,20 @@ const generateTextLayout = (
432
379
  glyphs.push(glyphLayout);
433
380
 
434
381
  // Advance position with letter spacing (in design units)
435
- currentX += advance + designLetterSpacing;
382
+ currentX += advance + letterSpacing;
436
383
  prevCodepoint = codepoint;
437
384
  }
438
-
439
- currentY += designLineHeight;
385
+ currentY += lineHeightPx;
440
386
  }
441
387
 
442
388
  // Convert final dimensions to pixel space for the layout
443
389
  return {
444
390
  glyphs,
445
- distanceRange: finalScale * fontData.distanceField.distanceRange,
446
- width: Math.ceil(maxWidthFound * finalScale),
447
- height: Math.ceil(designLineHeight * lines.length * finalScale),
448
- fontScale: finalScale,
449
- lineHeight,
391
+ distanceRange: fontScale * fontData.distanceField.distanceRange,
392
+ width: maxWidth || effectiveWidth * fontScale,
393
+ height: maxHeight || effectiveHeight,
394
+ fontScale: fontScale,
395
+ lineHeight: lineHeightPx,
450
396
  fontFamily,
451
397
  };
452
398
  };