@zephyr3d/scene 0.9.5 → 0.9.7

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 (621) hide show
  1. package/dist/animation/joint_dynamics/controller.js +92 -32
  2. package/dist/animation/joint_dynamics/controller.js.map +1 -1
  3. package/dist/animation/joint_dynamics/convex_collider.js +320 -0
  4. package/dist/animation/joint_dynamics/convex_collider.js.map +1 -0
  5. package/dist/animation/joint_dynamics/joint_dynamics_system.js +57 -19
  6. package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
  7. package/dist/animation/joint_dynamics/solver.js +71 -27
  8. package/dist/animation/joint_dynamics/solver.js.map +1 -1
  9. package/dist/animation/joint_dynamics_modifier.js +21 -20
  10. package/dist/animation/joint_dynamics_modifier.js.map +1 -1
  11. package/dist/animation/skeleton.js +7 -10
  12. package/dist/animation/skeleton.js.map +1 -1
  13. package/dist/app/engine.js +134 -140
  14. package/dist/app/engine.js.map +1 -1
  15. package/dist/app/scriptregistry.js +47 -16
  16. package/dist/app/scriptregistry.js.map +1 -1
  17. package/dist/asset/assetmanager.js +3 -1
  18. package/dist/asset/assetmanager.js.map +1 -1
  19. package/dist/asset/model.js +346 -7
  20. package/dist/asset/model.js.map +1 -1
  21. package/dist/avatar/wardrobe.js +20 -16
  22. package/dist/avatar/wardrobe.js.map +1 -1
  23. package/dist/camera/camera.js +416 -210
  24. package/dist/camera/camera.js.map +1 -1
  25. package/dist/index.d.ts +1350 -621
  26. package/dist/index.js +6 -11
  27. package/dist/index.js.map +1 -1
  28. package/dist/material/blinn.js +1 -1
  29. package/dist/material/blinn.js.map +1 -1
  30. package/dist/material/lambert.js +1 -1
  31. package/dist/material/lambert.js.map +1 -1
  32. package/dist/material/material.js +23 -1
  33. package/dist/material/material.js.map +1 -1
  34. package/dist/material/meshmaterial.js +178 -23
  35. package/dist/material/meshmaterial.js.map +1 -1
  36. package/dist/material/mixins/albedocolor.js +4 -4
  37. package/dist/material/mixins/albedocolor.js.map +1 -1
  38. package/dist/material/mixins/lightmodel/blinnphong.js +2 -1
  39. package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
  40. package/dist/material/mixins/lightmodel/lambert.js +2 -1
  41. package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
  42. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +63 -16
  43. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
  44. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +105 -32
  45. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  46. package/dist/material/mixins/lightmodel/pbrspecularglossness.js +16 -6
  47. package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
  48. package/dist/material/mixins/lit.js +1 -1
  49. package/dist/material/mixins/lit.js.map +1 -1
  50. package/dist/material/mixins/pbr/common.js +276 -65
  51. package/dist/material/mixins/pbr/common.js.map +1 -1
  52. package/dist/material/mixins/texture.js +3 -3
  53. package/dist/material/mixins/texture.js.map +1 -1
  54. package/dist/material/mixins/vertexcolor.js +2 -2
  55. package/dist/material/mixins/vertexcolor.js.map +1 -1
  56. package/dist/material/msdf_text.js +3 -3
  57. package/dist/material/msdf_text.js.map +1 -1
  58. package/dist/material/mtoon.js +574 -0
  59. package/dist/material/mtoon.js.map +1 -0
  60. package/dist/material/pbrblueprint.js +499 -336
  61. package/dist/material/pbrblueprint.js.map +1 -1
  62. package/dist/material/pbrmr.js +118 -100
  63. package/dist/material/pbrmr.js.map +1 -1
  64. package/dist/material/pbrsg.js +1 -1
  65. package/dist/material/pbrsg.js.map +1 -1
  66. package/dist/material/shader/helper.js +324 -294
  67. package/dist/material/shader/helper.js.map +1 -1
  68. package/dist/material/subsurfaceprofile.js +812 -0
  69. package/dist/material/subsurfaceprofile.js.map +1 -0
  70. package/dist/material/unlit.js +1 -1
  71. package/dist/material/unlit.js.map +1 -1
  72. package/dist/posteffect/compositor.js +46 -11
  73. package/dist/posteffect/compositor.js.map +1 -1
  74. package/dist/posteffect/ssr.js +422 -96
  75. package/dist/posteffect/ssr.js.map +1 -1
  76. package/dist/posteffect/sss.js +1053 -0
  77. package/dist/posteffect/sss.js.map +1 -0
  78. package/dist/posteffect/taa.js +61 -60
  79. package/dist/posteffect/taa.js.map +1 -1
  80. package/dist/render/abuffer_oit.js +63 -12
  81. package/dist/render/abuffer_oit.js.map +1 -1
  82. package/dist/render/cluster_light.js +6 -5
  83. package/dist/render/cluster_light.js.map +1 -1
  84. package/dist/render/drawable.js +1 -5
  85. package/dist/render/drawable.js.map +1 -1
  86. package/dist/render/drawable_mixin.js +2 -1
  87. package/dist/render/drawable_mixin.js.map +1 -1
  88. package/dist/render/fbm_wavegenerator.js +2 -1
  89. package/dist/render/fbm_wavegenerator.js.map +1 -1
  90. package/dist/render/gerstner_wavegenerator.js +2 -1
  91. package/dist/render/gerstner_wavegenerator.js.map +1 -1
  92. package/dist/render/globalbindgroup_allocator.js +2 -1
  93. package/dist/render/globalbindgroup_allocator.js.map +1 -1
  94. package/dist/render/lightpass.js +110 -23
  95. package/dist/render/lightpass.js.map +1 -1
  96. package/dist/render/render_queue.js +51 -8
  97. package/dist/render/render_queue.js.map +1 -1
  98. package/dist/render/renderer.js +80 -66
  99. package/dist/render/renderer.js.map +1 -1
  100. package/dist/render/rendergraph/device_pool_allocator.js +8 -0
  101. package/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
  102. package/dist/render/rendergraph/forward_plus_builder.js +481 -95
  103. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
  104. package/dist/render/rendergraph/history_resource_manager.js +55 -0
  105. package/dist/render/rendergraph/history_resource_manager.js.map +1 -1
  106. package/dist/render/rendergraph/history_resources.js +3 -1
  107. package/dist/render/rendergraph/history_resources.js.map +1 -1
  108. package/dist/render/rendergraph/types.js.map +1 -1
  109. package/dist/render/renderpass.js +10 -4
  110. package/dist/render/renderpass.js.map +1 -1
  111. package/dist/render/sky.js +31 -1
  112. package/dist/render/sky.js.map +1 -1
  113. package/dist/render/weightedblended_oit.js +23 -5
  114. package/dist/render/weightedblended_oit.js.map +1 -1
  115. package/dist/scene/basesprite.js +4 -2
  116. package/dist/scene/basesprite.js.map +1 -1
  117. package/dist/scene/batchgroup.js +3 -1
  118. package/dist/scene/batchgroup.js.map +1 -1
  119. package/dist/scene/environment.js +11 -1
  120. package/dist/scene/environment.js.map +1 -1
  121. package/dist/scene/light.js +21 -3
  122. package/dist/scene/light.js.map +1 -1
  123. package/dist/scene/mesh.js +29 -14
  124. package/dist/scene/mesh.js.map +1 -1
  125. package/dist/scene/meshdrawable.js +6 -0
  126. package/dist/scene/meshdrawable.js.map +1 -1
  127. package/dist/scene/msdftext.js +5 -2
  128. package/dist/scene/msdftext.js.map +1 -1
  129. package/dist/scene/msdftextsprite.js +5 -3
  130. package/dist/scene/msdftextsprite.js.map +1 -1
  131. package/dist/scene/particlesys.js +3 -1
  132. package/dist/scene/particlesys.js.map +1 -1
  133. package/dist/scene/scene.js +6 -5
  134. package/dist/scene/scene.js.map +1 -1
  135. package/dist/scene/terrain-cm/grass.js +4 -2
  136. package/dist/scene/terrain-cm/grass.js.map +1 -1
  137. package/dist/scene/terrain-cm/grassmaterial.js +2 -1
  138. package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
  139. package/dist/scene/terrain-cm/terrain-cm.js +4 -2
  140. package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
  141. package/dist/scene/water.js +4 -2
  142. package/dist/scene/water.js.map +1 -1
  143. package/dist/shaders/shadow.js +26 -393
  144. package/dist/shaders/shadow.js.map +1 -1
  145. package/dist/shadow/esm.js +112 -12
  146. package/dist/shadow/esm.js.map +1 -1
  147. package/dist/shadow/pcf_opt.js +2 -2
  148. package/dist/shadow/pcf_opt.js.map +1 -1
  149. package/dist/shadow/pcf_pd.js +19 -10
  150. package/dist/shadow/pcf_pd.js.map +1 -1
  151. package/dist/shadow/shader.js +58 -7
  152. package/dist/shadow/shader.js.map +1 -1
  153. package/dist/shadow/shadow_impl.js +6 -0
  154. package/dist/shadow/shadow_impl.js.map +1 -1
  155. package/dist/shadow/shadow_region.js +229 -0
  156. package/dist/shadow/shadow_region.js.map +1 -0
  157. package/dist/shadow/shadowmapper.js +67 -59
  158. package/dist/shadow/shadowmapper.js.map +1 -1
  159. package/dist/shadow/vsm.js +45 -19
  160. package/dist/shadow/vsm.js.map +1 -1
  161. package/dist/text/font/cff_font.js +890 -0
  162. package/dist/text/font/cff_font.js.map +1 -0
  163. package/dist/text/font/font_asset.js +17 -3
  164. package/dist/text/font/font_asset.js.map +1 -1
  165. package/dist/utility/blueprint/common/constants.js +8 -8
  166. package/dist/utility/blueprint/common/constants.js.map +1 -1
  167. package/dist/utility/blueprint/material/pbr.js +31 -4
  168. package/dist/utility/blueprint/material/pbr.js.map +1 -1
  169. package/dist/utility/blueprint/material/texture.js +1 -17
  170. package/dist/utility/blueprint/material/texture.js.map +1 -1
  171. package/dist/utility/serialization/manager.js +327 -359
  172. package/dist/utility/serialization/manager.js.map +1 -1
  173. package/dist/utility/serialization/scene/animation.js +5 -2
  174. package/dist/utility/serialization/scene/animation.js.map +1 -1
  175. package/dist/utility/serialization/scene/batch.js +4 -1
  176. package/dist/utility/serialization/scene/batch.js.map +1 -1
  177. package/dist/utility/serialization/scene/camera.js +249 -54
  178. package/dist/utility/serialization/scene/camera.js.map +1 -1
  179. package/dist/utility/serialization/scene/common.js +37 -1
  180. package/dist/utility/serialization/scene/common.js.map +1 -1
  181. package/dist/utility/serialization/scene/light.js +42 -3
  182. package/dist/utility/serialization/scene/light.js.map +1 -1
  183. package/dist/utility/serialization/scene/material.js +1112 -646
  184. package/dist/utility/serialization/scene/material.js.map +1 -1
  185. package/dist/utility/serialization/scene/mesh.js +7 -4
  186. package/dist/utility/serialization/scene/mesh.js.map +1 -1
  187. package/dist/utility/serialization/scene/node.js +31 -12
  188. package/dist/utility/serialization/scene/node.js.map +1 -1
  189. package/dist/utility/serialization/scene/particle.js +4 -1
  190. package/dist/utility/serialization/scene/particle.js.map +1 -1
  191. package/dist/utility/serialization/scene/primitive.js +3 -1
  192. package/dist/utility/serialization/scene/primitive.js.map +1 -1
  193. package/dist/utility/serialization/scene/scene.js +18 -0
  194. package/dist/utility/serialization/scene/scene.js.map +1 -1
  195. package/dist/utility/serialization/scene/sprite.js +6 -3
  196. package/dist/utility/serialization/scene/sprite.js.map +1 -1
  197. package/dist/utility/serialization/scene/terrain.js +5 -2
  198. package/dist/utility/serialization/scene/terrain.js.map +1 -1
  199. package/dist/utility/serialization/scene/text.js +3 -1
  200. package/dist/utility/serialization/scene/text.js.map +1 -1
  201. package/dist/utility/serialization/scene/water.js +4 -1
  202. package/dist/utility/serialization/scene/water.js.map +1 -1
  203. package/dist/utility/textures/ltcdata.js +6 -0
  204. package/dist/utility/textures/ltcdata.js.map +1 -0
  205. package/dist/utility/textures/ltclut.js +61 -0
  206. package/dist/utility/textures/ltclut.js.map +1 -0
  207. package/dist/values.js +9 -1
  208. package/dist/values.js.map +1 -1
  209. package/package.json +3 -3
  210. package/dist/animation/ik/ik_chain_builder.js +0 -68
  211. package/dist/animation/ik/ik_chain_builder.js.map +0 -1
  212. package/dist/animation/ik/ik_pole_constraint.js +0 -123
  213. package/dist/animation/ik/ik_pole_constraint.js.map +0 -1
  214. package/dist/animation/ik/ik_track.js +0 -96
  215. package/dist/animation/ik/ik_track.js.map +0 -1
  216. package/dist/animation/ik_postprocessor.js +0 -71
  217. package/dist/animation/ik_postprocessor.js.map +0 -1
  218. package/dist/animation/joint_dynamics/math.js +0 -16
  219. package/dist/animation/joint_dynamics/math.js.map +0 -1
  220. package/dist/animation/manual_transform_processor.js +0 -156
  221. package/dist/animation/manual_transform_processor.js.map +0 -1
  222. package/dist/animation/skeleton_postprocessor.js +0 -50
  223. package/dist/animation/skeleton_postprocessor.js.map +0 -1
  224. package/dist/animation/spring2/collision.js +0 -469
  225. package/dist/animation/spring2/collision.js.map +0 -1
  226. package/dist/animation/spring2/constraints.js +0 -329
  227. package/dist/animation/spring2/constraints.js.map +0 -1
  228. package/dist/animation/spring2/controller.js +0 -434
  229. package/dist/animation/spring2/controller.js.map +0 -1
  230. package/dist/animation/spring2/math.js +0 -16
  231. package/dist/animation/spring2/math.js.map +0 -1
  232. package/dist/animation/spring2/solver.js +0 -624
  233. package/dist/animation/spring2/solver.js.map +0 -1
  234. package/dist/animation/spring2/spring_system.js +0 -118
  235. package/dist/animation/spring2/spring_system.js.map +0 -1
  236. package/dist/animation/spring2/types.js +0 -19
  237. package/dist/animation/spring2/types.js.map +0 -1
  238. package/dist/animation/spring_postprocessor.js +0 -54
  239. package/dist/animation/spring_postprocessor.js.map +0 -1
  240. package/dist/asset/loaders/gltf/gltf_loader.js +0 -1276
  241. package/dist/asset/loaders/gltf/gltf_loader.js.map +0 -1
  242. package/dist/asset/loaders/gltf/helpers.js +0 -331
  243. package/dist/asset/loaders/gltf/helpers.js.map +0 -1
  244. package/dist/material/sprite3d.js +0 -301
  245. package/dist/material/sprite3d.js.map +0 -1
  246. package/dist/material/sprite3d_std.js +0 -116
  247. package/dist/material/sprite3d_std.js.map +0 -1
  248. package/dist/material/sprite3dblueprint.js +0 -235
  249. package/dist/material/sprite3dblueprint.js.map +0 -1
  250. package/dist/material/sprite_sdf.js +0 -106
  251. package/dist/material/sprite_sdf.js.map +0 -1
  252. package/dist/material/terrainmaterial.js +0 -368
  253. package/dist/material/terrainmaterial.js.map +0 -1
  254. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
  255. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
  256. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
  257. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
  258. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
  259. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
  260. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
  261. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
  262. package/dist/render/deferredlightpass.js +0 -510
  263. package/dist/render/deferredlightpass.js.map +0 -1
  264. package/dist/render/deferredshadowlightpass.js +0 -428
  265. package/dist/render/deferredshadowlightpass.js.map +0 -1
  266. package/dist/render/gbufferpass.js +0 -50
  267. package/dist/render/gbufferpass.js.map +0 -1
  268. package/dist/scene/sdftextsprite.js +0 -322
  269. package/dist/scene/sdftextsprite.js.map +0 -1
  270. package/dist/scene/sprite3d.js +0 -18
  271. package/dist/scene/sprite3d.js.map +0 -1
  272. package/dist/scene/terrain/grass.js +0 -280
  273. package/dist/scene/terrain/grass.js.map +0 -1
  274. package/dist/scene/terrain/heightfield.js +0 -475
  275. package/dist/scene/terrain/heightfield.js.map +0 -1
  276. package/dist/scene/terrain/patch.js +0 -532
  277. package/dist/scene/terrain/patch.js.map +0 -1
  278. package/dist/scene/terrain/quadtree.js +0 -461
  279. package/dist/scene/terrain/quadtree.js.map +0 -1
  280. package/dist/scene/terrain/terrain.js +0 -231
  281. package/dist/scene/terrain/terrain.js.map +0 -1
  282. package/dist/src/animation/animation.js +0 -127
  283. package/dist/src/animation/animation.js.map +0 -1
  284. package/dist/src/animation/animationset.js +0 -255
  285. package/dist/src/animation/animationset.js.map +0 -1
  286. package/dist/src/animation/animationtrack.js +0 -34
  287. package/dist/src/animation/animationtrack.js.map +0 -1
  288. package/dist/src/animation/eulerrotationtrack.js +0 -52
  289. package/dist/src/animation/eulerrotationtrack.js.map +0 -1
  290. package/dist/src/animation/morphtarget.js +0 -93
  291. package/dist/src/animation/morphtarget.js.map +0 -1
  292. package/dist/src/animation/morphtrack.js +0 -70
  293. package/dist/src/animation/morphtrack.js.map +0 -1
  294. package/dist/src/animation/proptrack.js +0 -161
  295. package/dist/src/animation/proptrack.js.map +0 -1
  296. package/dist/src/animation/rotationtrack.js +0 -51
  297. package/dist/src/animation/rotationtrack.js.map +0 -1
  298. package/dist/src/animation/scaletrack.js +0 -50
  299. package/dist/src/animation/scaletrack.js.map +0 -1
  300. package/dist/src/animation/skeleton.js +0 -204
  301. package/dist/src/animation/skeleton.js.map +0 -1
  302. package/dist/src/animation/translationtrack.js +0 -50
  303. package/dist/src/animation/translationtrack.js.map +0 -1
  304. package/dist/src/app/app.js +0 -129
  305. package/dist/src/app/app.js.map +0 -1
  306. package/dist/src/app/inputmgr.js +0 -267
  307. package/dist/src/app/inputmgr.js.map +0 -1
  308. package/dist/src/asset/assetmanager.js +0 -404
  309. package/dist/src/asset/assetmanager.js.map +0 -1
  310. package/dist/src/asset/builtin.js +0 -337
  311. package/dist/src/asset/builtin.js.map +0 -1
  312. package/dist/src/asset/loaders/dds/dds.js +0 -470
  313. package/dist/src/asset/loaders/dds/dds.js.map +0 -1
  314. package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
  315. package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
  316. package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
  317. package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
  318. package/dist/src/asset/loaders/gltf/helpers.js +0 -327
  319. package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
  320. package/dist/src/asset/loaders/hdr/hdr.js +0 -180
  321. package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
  322. package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
  323. package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
  324. package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
  325. package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
  326. package/dist/src/asset/loaders/loader.js +0 -45
  327. package/dist/src/asset/loaders/loader.js.map +0 -1
  328. package/dist/src/asset/model.js +0 -414
  329. package/dist/src/asset/model.js.map +0 -1
  330. package/dist/src/blitter/bilateralblur.js +0 -221
  331. package/dist/src/blitter/bilateralblur.js.map +0 -1
  332. package/dist/src/blitter/blitter.js +0 -390
  333. package/dist/src/blitter/blitter.js.map +0 -1
  334. package/dist/src/blitter/box.js +0 -118
  335. package/dist/src/blitter/box.js.map +0 -1
  336. package/dist/src/blitter/copy.js +0 -22
  337. package/dist/src/blitter/copy.js.map +0 -1
  338. package/dist/src/blitter/gaussianblur.js +0 -228
  339. package/dist/src/blitter/gaussianblur.js.map +0 -1
  340. package/dist/src/camera/base.js +0 -92
  341. package/dist/src/camera/base.js.map +0 -1
  342. package/dist/src/camera/camera.js +0 -1005
  343. package/dist/src/camera/camera.js.map +0 -1
  344. package/dist/src/camera/fps.js +0 -238
  345. package/dist/src/camera/fps.js.map +0 -1
  346. package/dist/src/camera/orbit.js +0 -245
  347. package/dist/src/camera/orbit.js.map +0 -1
  348. package/dist/src/camera/orthocamera.js +0 -167
  349. package/dist/src/camera/orthocamera.js.map +0 -1
  350. package/dist/src/camera/perspectivecamera.js +0 -141
  351. package/dist/src/camera/perspectivecamera.js.map +0 -1
  352. package/dist/src/index.js +0 -120
  353. package/dist/src/index.js.map +0 -1
  354. package/dist/src/material/blinn.js +0 -81
  355. package/dist/src/material/blinn.js.map +0 -1
  356. package/dist/src/material/grassmaterial.js +0 -113
  357. package/dist/src/material/grassmaterial.js.map +0 -1
  358. package/dist/src/material/lambert.js +0 -92
  359. package/dist/src/material/lambert.js.map +0 -1
  360. package/dist/src/material/material.js +0 -301
  361. package/dist/src/material/material.js.map +0 -1
  362. package/dist/src/material/meshmaterial.js +0 -704
  363. package/dist/src/material/meshmaterial.js.map +0 -1
  364. package/dist/src/material/mixins/albedocolor.js +0 -76
  365. package/dist/src/material/mixins/albedocolor.js.map +0 -1
  366. package/dist/src/material/mixins/foliage.js +0 -47
  367. package/dist/src/material/mixins/foliage.js.map +0 -1
  368. package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
  369. package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
  370. package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
  371. package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
  372. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
  373. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
  374. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
  375. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
  376. package/dist/src/material/mixins/lit.js +0 -476
  377. package/dist/src/material/mixins/lit.js.map +0 -1
  378. package/dist/src/material/mixins/pbr/common.js +0 -918
  379. package/dist/src/material/mixins/pbr/common.js.map +0 -1
  380. package/dist/src/material/mixins/texture.js +0 -172
  381. package/dist/src/material/mixins/texture.js.map +0 -1
  382. package/dist/src/material/mixins/vertexcolor.js +0 -56
  383. package/dist/src/material/mixins/vertexcolor.js.map +0 -1
  384. package/dist/src/material/particle.js +0 -178
  385. package/dist/src/material/particle.js.map +0 -1
  386. package/dist/src/material/pbrmr.js +0 -97
  387. package/dist/src/material/pbrmr.js.map +0 -1
  388. package/dist/src/material/pbrsg.js +0 -97
  389. package/dist/src/material/pbrsg.js.map +0 -1
  390. package/dist/src/material/shader/helper.js +0 -1209
  391. package/dist/src/material/shader/helper.js.map +0 -1
  392. package/dist/src/material/terrain-cm.js +0 -606
  393. package/dist/src/material/terrain-cm.js.map +0 -1
  394. package/dist/src/material/terrainmaterial.js +0 -375
  395. package/dist/src/material/terrainmaterial.js.map +0 -1
  396. package/dist/src/material/unlit.js +0 -41
  397. package/dist/src/material/unlit.js.map +0 -1
  398. package/dist/src/material/water.js +0 -417
  399. package/dist/src/material/water.js.map +0 -1
  400. package/dist/src/posteffect/bloom.js +0 -361
  401. package/dist/src/posteffect/bloom.js.map +0 -1
  402. package/dist/src/posteffect/compositor.js +0 -226
  403. package/dist/src/posteffect/compositor.js.map +0 -1
  404. package/dist/src/posteffect/fxaa.js +0 -273
  405. package/dist/src/posteffect/fxaa.js.map +0 -1
  406. package/dist/src/posteffect/grayscale.js +0 -69
  407. package/dist/src/posteffect/grayscale.js.map +0 -1
  408. package/dist/src/posteffect/motionblur.js +0 -96
  409. package/dist/src/posteffect/motionblur.js.map +0 -1
  410. package/dist/src/posteffect/posteffect.js +0 -126
  411. package/dist/src/posteffect/posteffect.js.map +0 -1
  412. package/dist/src/posteffect/sao.js +0 -324
  413. package/dist/src/posteffect/sao.js.map +0 -1
  414. package/dist/src/posteffect/ssr.js +0 -489
  415. package/dist/src/posteffect/ssr.js.map +0 -1
  416. package/dist/src/posteffect/taa.js +0 -172
  417. package/dist/src/posteffect/taa.js.map +0 -1
  418. package/dist/src/posteffect/tonemap.js +0 -94
  419. package/dist/src/posteffect/tonemap.js.map +0 -1
  420. package/dist/src/render/abuffer_oit.js +0 -361
  421. package/dist/src/render/abuffer_oit.js.map +0 -1
  422. package/dist/src/render/clipmap.js +0 -851
  423. package/dist/src/render/clipmap.js.map +0 -1
  424. package/dist/src/render/cluster_light.js +0 -333
  425. package/dist/src/render/cluster_light.js.map +0 -1
  426. package/dist/src/render/cull_visitor.js +0 -187
  427. package/dist/src/render/cull_visitor.js.map +0 -1
  428. package/dist/src/render/depthpass.js +0 -68
  429. package/dist/src/render/depthpass.js.map +0 -1
  430. package/dist/src/render/drawable_mixin.js +0 -227
  431. package/dist/src/render/drawable_mixin.js.map +0 -1
  432. package/dist/src/render/envlight.js +0 -463
  433. package/dist/src/render/envlight.js.map +0 -1
  434. package/dist/src/render/fbm_wavegenerator.js +0 -251
  435. package/dist/src/render/fbm_wavegenerator.js.map +0 -1
  436. package/dist/src/render/fft_wavegenerator.js +0 -1006
  437. package/dist/src/render/fft_wavegenerator.js.map +0 -1
  438. package/dist/src/render/fullscreenquad.js +0 -38
  439. package/dist/src/render/fullscreenquad.js.map +0 -1
  440. package/dist/src/render/gerstner_wavegenerator.js +0 -314
  441. package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
  442. package/dist/src/render/globalbindgroup_allocator.js +0 -60
  443. package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
  444. package/dist/src/render/hzb.js +0 -273
  445. package/dist/src/render/hzb.js.map +0 -1
  446. package/dist/src/render/lightpass.js +0 -172
  447. package/dist/src/render/lightpass.js.map +0 -1
  448. package/dist/src/render/objectcolorpass.js +0 -51
  449. package/dist/src/render/objectcolorpass.js.map +0 -1
  450. package/dist/src/render/primitive.js +0 -364
  451. package/dist/src/render/primitive.js.map +0 -1
  452. package/dist/src/render/render_queue.js +0 -467
  453. package/dist/src/render/render_queue.js.map +0 -1
  454. package/dist/src/render/renderbundle_wrapper.js +0 -152
  455. package/dist/src/render/renderbundle_wrapper.js.map +0 -1
  456. package/dist/src/render/renderer.js +0 -455
  457. package/dist/src/render/renderer.js.map +0 -1
  458. package/dist/src/render/renderpass.js +0 -200
  459. package/dist/src/render/renderpass.js.map +0 -1
  460. package/dist/src/render/shadowmap_pass.js +0 -56
  461. package/dist/src/render/shadowmap_pass.js.map +0 -1
  462. package/dist/src/render/sky.js +0 -1103
  463. package/dist/src/render/sky.js.map +0 -1
  464. package/dist/src/render/weightedblended_oit.js +0 -168
  465. package/dist/src/render/weightedblended_oit.js.map +0 -1
  466. package/dist/src/scene/batchgroup.js +0 -162
  467. package/dist/src/scene/batchgroup.js.map +0 -1
  468. package/dist/src/scene/environment.js +0 -209
  469. package/dist/src/scene/environment.js.map +0 -1
  470. package/dist/src/scene/graph_node.js +0 -72
  471. package/dist/src/scene/graph_node.js.map +0 -1
  472. package/dist/src/scene/light.js +0 -416
  473. package/dist/src/scene/light.js.map +0 -1
  474. package/dist/src/scene/mesh.js +0 -341
  475. package/dist/src/scene/mesh.js.map +0 -1
  476. package/dist/src/scene/octree.js +0 -649
  477. package/dist/src/scene/octree.js.map +0 -1
  478. package/dist/src/scene/particlesys.js +0 -738
  479. package/dist/src/scene/particlesys.js.map +0 -1
  480. package/dist/src/scene/raycast_visitor.js +0 -103
  481. package/dist/src/scene/raycast_visitor.js.map +0 -1
  482. package/dist/src/scene/scene.js +0 -284
  483. package/dist/src/scene/scene.js.map +0 -1
  484. package/dist/src/scene/scene_node.js +0 -732
  485. package/dist/src/scene/scene_node.js.map +0 -1
  486. package/dist/src/scene/terrain/grass.js +0 -278
  487. package/dist/src/scene/terrain/grass.js.map +0 -1
  488. package/dist/src/scene/terrain/heightfield.js +0 -475
  489. package/dist/src/scene/terrain/heightfield.js.map +0 -1
  490. package/dist/src/scene/terrain/patch.js +0 -530
  491. package/dist/src/scene/terrain/patch.js.map +0 -1
  492. package/dist/src/scene/terrain/quadtree.js +0 -461
  493. package/dist/src/scene/terrain/quadtree.js.map +0 -1
  494. package/dist/src/scene/terrain/terrain.js +0 -246
  495. package/dist/src/scene/terrain/terrain.js.map +0 -1
  496. package/dist/src/scene/terrain-cm/grass.js +0 -594
  497. package/dist/src/scene/terrain-cm/grass.js.map +0 -1
  498. package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
  499. package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
  500. package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
  501. package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
  502. package/dist/src/scene/water.js +0 -374
  503. package/dist/src/scene/water.js.map +0 -1
  504. package/dist/src/shaders/atmosphere.js +0 -957
  505. package/dist/src/shaders/atmosphere.js.map +0 -1
  506. package/dist/src/shaders/fog.js +0 -112
  507. package/dist/src/shaders/fog.js.map +0 -1
  508. package/dist/src/shaders/misc.js +0 -266
  509. package/dist/src/shaders/misc.js.map +0 -1
  510. package/dist/src/shaders/noise.js +0 -222
  511. package/dist/src/shaders/noise.js.map +0 -1
  512. package/dist/src/shaders/pbr.js +0 -51
  513. package/dist/src/shaders/pbr.js.map +0 -1
  514. package/dist/src/shaders/shadow.js +0 -636
  515. package/dist/src/shaders/shadow.js.map +0 -1
  516. package/dist/src/shaders/ssr.js +0 -490
  517. package/dist/src/shaders/ssr.js.map +0 -1
  518. package/dist/src/shaders/temporal.js +0 -215
  519. package/dist/src/shaders/temporal.js.map +0 -1
  520. package/dist/src/shaders/water.js +0 -756
  521. package/dist/src/shaders/water.js.map +0 -1
  522. package/dist/src/shadow/esm.js +0 -237
  523. package/dist/src/shadow/esm.js.map +0 -1
  524. package/dist/src/shadow/pcf_opt.js +0 -181
  525. package/dist/src/shadow/pcf_opt.js.map +0 -1
  526. package/dist/src/shadow/pcf_pd.js +0 -189
  527. package/dist/src/shadow/pcf_pd.js.map +0 -1
  528. package/dist/src/shadow/shader.js +0 -37
  529. package/dist/src/shadow/shader.js.map +0 -1
  530. package/dist/src/shadow/shadow_impl.js +0 -15
  531. package/dist/src/shadow/shadow_impl.js.map +0 -1
  532. package/dist/src/shadow/shadowmapper.js +0 -790
  533. package/dist/src/shadow/shadowmapper.js.map +0 -1
  534. package/dist/src/shadow/ssm.js +0 -159
  535. package/dist/src/shadow/ssm.js.map +0 -1
  536. package/dist/src/shadow/vsm.js +0 -297
  537. package/dist/src/shadow/vsm.js.map +0 -1
  538. package/dist/src/shapes/box.js +0 -386
  539. package/dist/src/shapes/box.js.map +0 -1
  540. package/dist/src/shapes/cylinder.js +0 -125
  541. package/dist/src/shapes/cylinder.js.map +0 -1
  542. package/dist/src/shapes/plane.js +0 -88
  543. package/dist/src/shapes/plane.js.map +0 -1
  544. package/dist/src/shapes/shape.js +0 -87
  545. package/dist/src/shapes/shape.js.map +0 -1
  546. package/dist/src/shapes/sphere.js +0 -114
  547. package/dist/src/shapes/sphere.js.map +0 -1
  548. package/dist/src/shapes/tetrahedron.js +0 -188
  549. package/dist/src/shapes/tetrahedron.js.map +0 -1
  550. package/dist/src/shapes/torus.js +0 -111
  551. package/dist/src/shapes/torus.js.map +0 -1
  552. package/dist/src/utility/aabbtree.js +0 -400
  553. package/dist/src/utility/aabbtree.js.map +0 -1
  554. package/dist/src/utility/bounding_volume.js +0 -29
  555. package/dist/src/utility/bounding_volume.js.map +0 -1
  556. package/dist/src/utility/debug.js +0 -28
  557. package/dist/src/utility/debug.js.map +0 -1
  558. package/dist/src/utility/draco/decoder.js +0 -116
  559. package/dist/src/utility/draco/decoder.js.map +0 -1
  560. package/dist/src/utility/misc.js +0 -105
  561. package/dist/src/utility/misc.js.map +0 -1
  562. package/dist/src/utility/panorama.js +0 -163
  563. package/dist/src/utility/panorama.js.map +0 -1
  564. package/dist/src/utility/pmrem.js +0 -354
  565. package/dist/src/utility/pmrem.js.map +0 -1
  566. package/dist/src/utility/rendermipmap.js +0 -115
  567. package/dist/src/utility/rendermipmap.js.map +0 -1
  568. package/dist/src/utility/serialization/json.js +0 -402
  569. package/dist/src/utility/serialization/json.js.map +0 -1
  570. package/dist/src/utility/serialization/manager.js +0 -623
  571. package/dist/src/utility/serialization/manager.js.map +0 -1
  572. package/dist/src/utility/serialization/scene/animation.js +0 -248
  573. package/dist/src/utility/serialization/scene/animation.js.map +0 -1
  574. package/dist/src/utility/serialization/scene/batch.js +0 -59
  575. package/dist/src/utility/serialization/scene/batch.js.map +0 -1
  576. package/dist/src/utility/serialization/scene/camera.js +0 -790
  577. package/dist/src/utility/serialization/scene/camera.js.map +0 -1
  578. package/dist/src/utility/serialization/scene/common.js +0 -222
  579. package/dist/src/utility/serialization/scene/common.js.map +0 -1
  580. package/dist/src/utility/serialization/scene/light.js +0 -575
  581. package/dist/src/utility/serialization/scene/light.js.map +0 -1
  582. package/dist/src/utility/serialization/scene/material.js +0 -1111
  583. package/dist/src/utility/serialization/scene/material.js.map +0 -1
  584. package/dist/src/utility/serialization/scene/mesh.js +0 -148
  585. package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
  586. package/dist/src/utility/serialization/scene/misc.js +0 -39
  587. package/dist/src/utility/serialization/scene/misc.js.map +0 -1
  588. package/dist/src/utility/serialization/scene/node.js +0 -451
  589. package/dist/src/utility/serialization/scene/node.js.map +0 -1
  590. package/dist/src/utility/serialization/scene/particle.js +0 -425
  591. package/dist/src/utility/serialization/scene/particle.js.map +0 -1
  592. package/dist/src/utility/serialization/scene/primitive.js +0 -692
  593. package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
  594. package/dist/src/utility/serialization/scene/scene.js +0 -704
  595. package/dist/src/utility/serialization/scene/scene.js.map +0 -1
  596. package/dist/src/utility/serialization/scene/terrain.js +0 -488
  597. package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
  598. package/dist/src/utility/serialization/scene/water.js +0 -465
  599. package/dist/src/utility/serialization/scene/water.js.map +0 -1
  600. package/dist/src/utility/shprojector.js +0 -297
  601. package/dist/src/utility/shprojector.js.map +0 -1
  602. package/dist/src/utility/textures/ggxlut.js +0 -213
  603. package/dist/src/utility/textures/ggxlut.js.map +0 -1
  604. package/dist/src/utility/textures/gradientnoise.js +0 -62
  605. package/dist/src/utility/textures/gradientnoise.js.map +0 -1
  606. package/dist/src/utility/textures/randomnoise.js +0 -41
  607. package/dist/src/utility/textures/randomnoise.js.map +0 -1
  608. package/dist/src/values.js +0 -162
  609. package/dist/src/values.js.map +0 -1
  610. package/dist/utility/blueprint/material/common.js +0 -7
  611. package/dist/utility/blueprint/material/common.js.map +0 -1
  612. package/dist/utility/serialization/blueprint/constants.js +0 -255
  613. package/dist/utility/serialization/blueprint/constants.js.map +0 -1
  614. package/dist/utility/serialization/blueprint/material/constants.js +0 -203
  615. package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
  616. package/dist/utility/serialization/blueprint/material/texture.js +0 -165
  617. package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
  618. package/dist/utility/serialization/scene/cloth_script.js +0 -834
  619. package/dist/utility/serialization/scene/cloth_script.js.map +0 -1
  620. package/dist/utility/serialization/scene/spring_script.js +0 -596
  621. package/dist/utility/serialization/scene/spring_script.js.map +0 -1
@@ -0,0 +1,890 @@
1
+ /**
2
+ * CFF Type 2 glyph provider for OpenType/CFF fonts.
3
+ *
4
+ * @internal
5
+ */ class CFFGlyphProvider {
6
+ _charStrings;
7
+ _globalSubrs;
8
+ _globalSubrBias;
9
+ _privateInfo;
10
+ _fdArray;
11
+ _fdSelect;
12
+ constructor(charStrings, globalSubrs, privateInfo, fdArray, fdSelect){
13
+ this._charStrings = charStrings;
14
+ this._globalSubrs = globalSubrs;
15
+ this._globalSubrBias = getSubrBias(globalSubrs.length);
16
+ this._privateInfo = privateInfo;
17
+ this._fdArray = fdArray;
18
+ this._fdSelect = fdSelect;
19
+ }
20
+ getGlyph(glyphIndex, advanceWidths, leftSideBearings) {
21
+ const charString = this._charStrings[glyphIndex];
22
+ if (!charString) {
23
+ return null;
24
+ }
25
+ const privateInfo = this.getPrivateInfo(glyphIndex);
26
+ const interpreter = new Type2CharStringInterpreter(this._globalSubrs, this._globalSubrBias, privateInfo.subrs, privateInfo.subrBias);
27
+ const contours = interpreter.parse(charString);
28
+ const bounds = computeBounds(contours);
29
+ return {
30
+ glyphIndex,
31
+ advanceWidth: advanceWidths[glyphIndex] ?? 0,
32
+ leftSideBearing: leftSideBearings[glyphIndex] ?? 0,
33
+ xMin: bounds.xMin,
34
+ yMin: bounds.yMin,
35
+ xMax: bounds.xMax,
36
+ yMax: bounds.yMax,
37
+ contours
38
+ };
39
+ }
40
+ getPrivateInfo(glyphIndex) {
41
+ const fdIndex = this.getFDIndex(glyphIndex);
42
+ return fdIndex >= 0 ? this._fdArray[fdIndex]?.privateInfo ?? this._privateInfo : this._privateInfo;
43
+ }
44
+ getFDIndex(glyphIndex) {
45
+ if (!this._fdSelect) {
46
+ return -1;
47
+ }
48
+ if (this._fdSelect.format === 0) {
49
+ return this._fdSelect.fds[glyphIndex] ?? -1;
50
+ }
51
+ const ranges = this._fdSelect.ranges;
52
+ for(let i = 0; i < ranges.length; i++){
53
+ const start = ranges[i].first;
54
+ const end = i + 1 < ranges.length ? ranges[i + 1].first : this._fdSelect.sentinel;
55
+ if (glyphIndex >= start && glyphIndex < end) {
56
+ return ranges[i].fd;
57
+ }
58
+ }
59
+ return -1;
60
+ }
61
+ }
62
+ /** @internal */ function parseCFFGlyphProvider(reader, tableOffset, glyphCount) {
63
+ const major = reader.uint8(tableOffset);
64
+ if (major !== 1) {
65
+ throw new Error(`Unsupported CFF table version: ${major}`);
66
+ }
67
+ const headerSize = reader.uint8(tableOffset + 2);
68
+ let offset = tableOffset + headerSize;
69
+ const nameIndex = readIndex(reader, offset);
70
+ offset = nameIndex.endOffset;
71
+ const topDictIndex = readIndex(reader, offset);
72
+ offset = topDictIndex.endOffset;
73
+ const stringIndex = readIndex(reader, offset);
74
+ offset = stringIndex.endOffset;
75
+ const globalSubrIndex = readIndex(reader, offset);
76
+ const topDictBytes = topDictIndex.objects[0];
77
+ if (!topDictBytes) {
78
+ throw new Error('CFF Top DICT not found');
79
+ }
80
+ const topDict = parseDict(topDictBytes, 'dict');
81
+ const charStringsOffset = getDictNumber(topDict, '17');
82
+ if (charStringsOffset === null) {
83
+ throw new Error('CFF CharStrings offset not found');
84
+ }
85
+ const charStrings = readIndex(reader, tableOffset + charStringsOffset);
86
+ const privateInfo = readTopPrivateInfo(reader, tableOffset, topDict);
87
+ const fdArrayOffset = getDictNumber(topDict, '12 36');
88
+ const fdSelectOffset = getDictNumber(topDict, '12 37');
89
+ const fdArray = fdArrayOffset !== null ? readFDArray(reader, tableOffset, fdArrayOffset) : [];
90
+ const fdSelect = fdSelectOffset !== null ? readFDSelect(reader, tableOffset + fdSelectOffset, glyphCount) : null;
91
+ return new CFFGlyphProvider(charStrings.objects, globalSubrIndex.objects, privateInfo, fdArray, fdSelect);
92
+ }
93
+ function readTopPrivateInfo(reader, tableOffset, topDict) {
94
+ const privateEntry = topDict.get('18');
95
+ if (!privateEntry || privateEntry.length < 2) {
96
+ return {
97
+ subrs: [],
98
+ subrBias: getSubrBias(0)
99
+ };
100
+ }
101
+ return readPrivateInfo(reader, tableOffset, privateEntry[1], privateEntry[0]);
102
+ }
103
+ function readFDArray(reader, tableOffset, fdArrayOffset) {
104
+ const fdIndex = readIndex(reader, tableOffset + fdArrayOffset);
105
+ return fdIndex.objects.map((fontDictBytes)=>{
106
+ const fontDict = parseDict(fontDictBytes, 'dict');
107
+ const privateEntry = fontDict.get('18');
108
+ return {
109
+ privateInfo: privateEntry && privateEntry.length >= 2 ? readPrivateInfo(reader, tableOffset, privateEntry[1], privateEntry[0]) : {
110
+ subrs: [],
111
+ subrBias: getSubrBias(0)
112
+ }
113
+ };
114
+ });
115
+ }
116
+ function readPrivateInfo(reader, tableOffset, privateOffset, privateSize) {
117
+ const bytes = readBytes(reader, tableOffset + privateOffset, privateSize);
118
+ const dict = parseDict(bytes, 'dict');
119
+ const subrsOffset = getDictNumber(dict, '19');
120
+ const subrs = subrsOffset !== null ? readIndex(reader, tableOffset + privateOffset + subrsOffset).objects : [];
121
+ return {
122
+ subrs,
123
+ subrBias: getSubrBias(subrs.length)
124
+ };
125
+ }
126
+ function readFDSelect(reader, offset, glyphCount) {
127
+ const format = reader.uint8(offset);
128
+ if (format === 0) {
129
+ return {
130
+ format,
131
+ fds: readBytes(reader, offset + 1, glyphCount)
132
+ };
133
+ }
134
+ if (format === 3) {
135
+ const ranges = [];
136
+ const nRanges = reader.uint16(offset + 1);
137
+ let cursor = offset + 3;
138
+ for(let i = 0; i < nRanges; i++){
139
+ ranges.push({
140
+ first: reader.uint16(cursor),
141
+ fd: reader.uint8(cursor + 2)
142
+ });
143
+ cursor += 3;
144
+ }
145
+ return {
146
+ format,
147
+ ranges,
148
+ sentinel: reader.uint16(cursor)
149
+ };
150
+ }
151
+ throw new Error(`Unsupported CFF FDSelect format: ${format}`);
152
+ }
153
+ function readIndex(reader, offset) {
154
+ const count = reader.uint16(offset);
155
+ if (count === 0) {
156
+ return {
157
+ objects: [],
158
+ endOffset: offset + 2
159
+ };
160
+ }
161
+ const offSize = reader.uint8(offset + 2);
162
+ const offsetsStart = offset + 3;
163
+ const dataStart = offsetsStart + (count + 1) * offSize;
164
+ const offsets = [];
165
+ for(let i = 0; i <= count; i++){
166
+ offsets.push(readOffset(reader, offsetsStart + i * offSize, offSize));
167
+ }
168
+ const objects = [];
169
+ for(let i = 0; i < count; i++){
170
+ const start = dataStart + offsets[i] - 1;
171
+ const end = dataStart + offsets[i + 1] - 1;
172
+ objects.push(readBytes(reader, start, Math.max(end - start, 0)));
173
+ }
174
+ return {
175
+ objects,
176
+ endOffset: dataStart + offsets[count] - 1
177
+ };
178
+ }
179
+ function readOffset(reader, offset, size) {
180
+ let value = 0;
181
+ for(let i = 0; i < size; i++){
182
+ value = value * 256 + reader.uint8(offset + i);
183
+ }
184
+ return value;
185
+ }
186
+ function readBytes(reader, offset, length) {
187
+ return new Uint8Array(reader.buffer.slice(offset, offset + length));
188
+ }
189
+ function parseDict(bytes, kind) {
190
+ const dict = new Map();
191
+ const stack = [];
192
+ let i = 0;
193
+ while(i < bytes.length){
194
+ const b = bytes[i++];
195
+ if (isDictOperatorByte(b)) {
196
+ let op = String(b);
197
+ if (b === 12) {
198
+ op = `12 ${bytes[i++]}`;
199
+ }
200
+ dict.set(op, stack.splice(0));
201
+ } else {
202
+ const parsed = readNumber(bytes, i - 1, kind);
203
+ stack.push(parsed.value);
204
+ i = parsed.next;
205
+ }
206
+ }
207
+ return dict;
208
+ }
209
+ function isDictOperatorByte(b) {
210
+ return b <= 21 && b !== 28 && b !== 29 && b !== 30;
211
+ }
212
+ function getDictNumber(dict, key, index = 0) {
213
+ const values = dict.get(key);
214
+ return values && index < values.length ? values[index] : null;
215
+ }
216
+ function getSubrBias(count) {
217
+ return count < 1240 ? 107 : count < 33900 ? 1131 : 32768;
218
+ }
219
+ class Type2CharStringInterpreter {
220
+ _globalSubrs;
221
+ _globalSubrBias;
222
+ _localSubrs;
223
+ _localSubrBias;
224
+ _stack;
225
+ _transient;
226
+ _contours;
227
+ _currentContour;
228
+ _x;
229
+ _y;
230
+ _hintCount;
231
+ _widthConsumed;
232
+ constructor(globalSubrs, globalSubrBias, localSubrs, localSubrBias){
233
+ this._globalSubrs = globalSubrs;
234
+ this._globalSubrBias = globalSubrBias;
235
+ this._localSubrs = localSubrs;
236
+ this._localSubrBias = localSubrBias;
237
+ this._stack = [];
238
+ this._transient = new Array(32).fill(0);
239
+ this._contours = [];
240
+ this._currentContour = null;
241
+ this._x = 0;
242
+ this._y = 0;
243
+ this._hintCount = 0;
244
+ this._widthConsumed = false;
245
+ }
246
+ parse(bytes) {
247
+ this.execute(bytes, 0);
248
+ this.closeContour();
249
+ return this._contours;
250
+ }
251
+ execute(bytes, depth) {
252
+ if (depth > 32) {
253
+ throw new Error('CFF Type2 charstring subroutine nesting too deep');
254
+ }
255
+ let i = 0;
256
+ while(i < bytes.length){
257
+ const b = bytes[i++];
258
+ if (isType2NumberByte(b)) {
259
+ const parsed = readNumber(bytes, i - 1, 'charstring');
260
+ this._stack.push(parsed.value);
261
+ i = parsed.next;
262
+ continue;
263
+ }
264
+ if (b === 12) {
265
+ const status = this.handleEscapedOperator(bytes[i++]);
266
+ if (status !== 'continue') {
267
+ return status;
268
+ }
269
+ continue;
270
+ }
271
+ if (b === 19 || b === 20) {
272
+ this.consumeStemHints();
273
+ i += Math.ceil(this._hintCount / 8);
274
+ this._stack.length = 0;
275
+ continue;
276
+ }
277
+ const status = this.handleOperator(b, depth);
278
+ if (status !== 'continue') {
279
+ return status;
280
+ }
281
+ }
282
+ return 'continue';
283
+ }
284
+ handleOperator(op, depth) {
285
+ switch(op){
286
+ case 1:
287
+ case 3:
288
+ case 18:
289
+ case 23:
290
+ this.consumeStemHints();
291
+ this._stack.length = 0;
292
+ break;
293
+ case 4:
294
+ {
295
+ const [dy] = this.consumeMoveArgs(1);
296
+ this.moveTo(0, dy);
297
+ break;
298
+ }
299
+ case 5:
300
+ this.applyRLineTo(this.consumeArgs());
301
+ break;
302
+ case 6:
303
+ this.applyHVLineTo(this.consumeArgs(), true);
304
+ break;
305
+ case 7:
306
+ this.applyHVLineTo(this.consumeArgs(), false);
307
+ break;
308
+ case 8:
309
+ this.applyRRCurveTo(this.consumeArgs());
310
+ break;
311
+ case 10:
312
+ return this.callSubr(false, depth);
313
+ case 11:
314
+ return 'return';
315
+ case 14:
316
+ this._stack.length = 0;
317
+ this.closeContour();
318
+ return 'end';
319
+ case 21:
320
+ {
321
+ const [dx, dy] = this.consumeMoveArgs(2);
322
+ this.moveTo(dx, dy);
323
+ break;
324
+ }
325
+ case 22:
326
+ {
327
+ const [dx] = this.consumeMoveArgs(1);
328
+ this.moveTo(dx, 0);
329
+ break;
330
+ }
331
+ case 24:
332
+ this.applyRCurveLine(this.consumeArgs());
333
+ break;
334
+ case 25:
335
+ this.applyRLineCurve(this.consumeArgs());
336
+ break;
337
+ case 26:
338
+ this.applyVVCurveTo(this.consumeArgs());
339
+ break;
340
+ case 27:
341
+ this.applyHHCurveTo(this.consumeArgs());
342
+ break;
343
+ case 29:
344
+ return this.callSubr(true, depth);
345
+ case 30:
346
+ this.applyVHCurveTo(this.consumeArgs());
347
+ break;
348
+ case 31:
349
+ this.applyHVCurveTo(this.consumeArgs());
350
+ break;
351
+ default:
352
+ this._stack.length = 0;
353
+ break;
354
+ }
355
+ return 'continue';
356
+ }
357
+ handleEscapedOperator(op) {
358
+ switch(op){
359
+ case 3:
360
+ this.binaryStackOp((a, b)=>a && b ? 1 : 0);
361
+ break;
362
+ case 4:
363
+ this.binaryStackOp((a, b)=>a || b ? 1 : 0);
364
+ break;
365
+ case 5:
366
+ {
367
+ const a = this._stack.pop() ?? 0;
368
+ this._stack.push(a ? 0 : 1);
369
+ break;
370
+ }
371
+ case 9:
372
+ {
373
+ const a = this._stack.pop() ?? 0;
374
+ this._stack.push(Math.abs(a));
375
+ break;
376
+ }
377
+ case 10:
378
+ this.binaryStackOp((a, b)=>a + b);
379
+ break;
380
+ case 11:
381
+ this.binaryStackOp((a, b)=>a - b);
382
+ break;
383
+ case 12:
384
+ this.binaryStackOp((a, b)=>a / b);
385
+ break;
386
+ case 14:
387
+ {
388
+ const a = this._stack.pop() ?? 0;
389
+ this._stack.push(-a);
390
+ break;
391
+ }
392
+ case 15:
393
+ this.binaryStackOp((a, b)=>a === b ? 1 : 0);
394
+ break;
395
+ case 18:
396
+ this._stack.pop();
397
+ break;
398
+ case 20:
399
+ {
400
+ const value = this._stack.pop() ?? 0;
401
+ const index = this._stack.pop() ?? 0;
402
+ this._transient[index | 0] = value;
403
+ break;
404
+ }
405
+ case 21:
406
+ {
407
+ const index = this._stack.pop() ?? 0;
408
+ this._stack.push(this._transient[index | 0] ?? 0);
409
+ break;
410
+ }
411
+ case 22:
412
+ this.applyIfElse();
413
+ break;
414
+ case 23:
415
+ this._stack.push(Math.random());
416
+ break;
417
+ case 24:
418
+ this.binaryStackOp((a, b)=>a * b);
419
+ break;
420
+ case 26:
421
+ {
422
+ const a = this._stack.pop() ?? 0;
423
+ this._stack.push(Math.sqrt(Math.max(a, 0)));
424
+ break;
425
+ }
426
+ case 27:
427
+ {
428
+ const a = this._stack[this._stack.length - 1] ?? 0;
429
+ this._stack.push(a);
430
+ break;
431
+ }
432
+ case 28:
433
+ this.exchangeStackTop();
434
+ break;
435
+ case 29:
436
+ this.indexStack();
437
+ break;
438
+ case 30:
439
+ this.rollStack();
440
+ break;
441
+ case 34:
442
+ this.applyHFlex(this.consumeArgs());
443
+ break;
444
+ case 35:
445
+ this.applyFlex(this.consumeArgs());
446
+ break;
447
+ case 36:
448
+ this.applyHFlex1(this.consumeArgs());
449
+ break;
450
+ case 37:
451
+ this.applyFlex1(this.consumeArgs());
452
+ break;
453
+ default:
454
+ this._stack.length = 0;
455
+ break;
456
+ }
457
+ return 'continue';
458
+ }
459
+ consumeStemHints() {
460
+ if (!this._widthConsumed && this._stack.length % 2 === 1) {
461
+ this._stack.shift();
462
+ this._widthConsumed = true;
463
+ }
464
+ this._hintCount += Math.floor(this._stack.length / 2);
465
+ }
466
+ consumeMoveArgs(count) {
467
+ if (!this._widthConsumed && this._stack.length > count) {
468
+ this._stack.shift();
469
+ this._widthConsumed = true;
470
+ }
471
+ const args = this._stack.splice(Math.max(0, this._stack.length - count), count);
472
+ this._stack.length = 0;
473
+ while(args.length < count){
474
+ args.unshift(0);
475
+ }
476
+ return args;
477
+ }
478
+ consumeArgs() {
479
+ return this._stack.splice(0);
480
+ }
481
+ callSubr(global, depth) {
482
+ const operand = this._stack.pop();
483
+ if (operand === undefined) {
484
+ return 'continue';
485
+ }
486
+ const subrs = global ? this._globalSubrs : this._localSubrs;
487
+ const bias = global ? this._globalSubrBias : this._localSubrBias;
488
+ const subr = subrs[operand + bias | 0];
489
+ if (subr) {
490
+ const status = this.execute(subr, depth + 1);
491
+ return status === 'return' ? 'continue' : status;
492
+ }
493
+ return 'continue';
494
+ }
495
+ moveTo(dx, dy) {
496
+ this.closeContour();
497
+ this._x += dx;
498
+ this._y += dy;
499
+ this._currentContour = [
500
+ {
501
+ x: this._x,
502
+ y: this._y,
503
+ onCurve: true
504
+ }
505
+ ];
506
+ }
507
+ lineTo(dx, dy) {
508
+ this.ensureContour();
509
+ this._x += dx;
510
+ this._y += dy;
511
+ this._currentContour.push({
512
+ x: this._x,
513
+ y: this._y,
514
+ onCurve: true
515
+ });
516
+ }
517
+ curveTo(dx1, dy1, dx2, dy2, dx3, dy3) {
518
+ this.ensureContour();
519
+ const p0 = {
520
+ x: this._x,
521
+ y: this._y
522
+ };
523
+ const p1 = {
524
+ x: p0.x + dx1,
525
+ y: p0.y + dy1
526
+ };
527
+ const p2 = {
528
+ x: p1.x + dx2,
529
+ y: p1.y + dy2
530
+ };
531
+ const p3 = {
532
+ x: p2.x + dx3,
533
+ y: p2.y + dy3
534
+ };
535
+ appendCubicAsQuadratics(this._currentContour, p0, p1, p2, p3);
536
+ this._x = p3.x;
537
+ this._y = p3.y;
538
+ }
539
+ ensureContour() {
540
+ if (!this._currentContour) {
541
+ this._currentContour = [
542
+ {
543
+ x: this._x,
544
+ y: this._y,
545
+ onCurve: true
546
+ }
547
+ ];
548
+ }
549
+ }
550
+ closeContour() {
551
+ const contour = this._currentContour;
552
+ if (contour && contour.length > 0) {
553
+ const first = contour[0];
554
+ const last = contour[contour.length - 1];
555
+ if (first.onCurve && last.onCurve && samePoint(first, last)) {
556
+ contour.pop();
557
+ }
558
+ if (contour.length > 0) {
559
+ this._contours.push(contour);
560
+ }
561
+ }
562
+ this._currentContour = null;
563
+ }
564
+ applyRLineTo(args) {
565
+ for(let i = 0; i + 1 < args.length; i += 2){
566
+ this.lineTo(args[i], args[i + 1]);
567
+ }
568
+ }
569
+ applyHVLineTo(args, horizontalFirst) {
570
+ let horizontal = horizontalFirst;
571
+ for (const arg of args){
572
+ if (horizontal) {
573
+ this.lineTo(arg, 0);
574
+ } else {
575
+ this.lineTo(0, arg);
576
+ }
577
+ horizontal = !horizontal;
578
+ }
579
+ }
580
+ applyRRCurveTo(args) {
581
+ for(let i = 0; i + 5 < args.length; i += 6){
582
+ this.curveTo(args[i], args[i + 1], args[i + 2], args[i + 3], args[i + 4], args[i + 5]);
583
+ }
584
+ }
585
+ applyRCurveLine(args) {
586
+ let i = 0;
587
+ for(; i + 7 < args.length; i += 6){
588
+ this.curveTo(args[i], args[i + 1], args[i + 2], args[i + 3], args[i + 4], args[i + 5]);
589
+ }
590
+ if (i + 1 < args.length) {
591
+ this.lineTo(args[i], args[i + 1]);
592
+ }
593
+ }
594
+ applyRLineCurve(args) {
595
+ let i = 0;
596
+ for(; i + 7 < args.length; i += 2){
597
+ this.lineTo(args[i], args[i + 1]);
598
+ }
599
+ if (i + 5 < args.length) {
600
+ this.curveTo(args[i], args[i + 1], args[i + 2], args[i + 3], args[i + 4], args[i + 5]);
601
+ }
602
+ }
603
+ applyVVCurveTo(args) {
604
+ let i = 0;
605
+ let dx1 = 0;
606
+ if (args.length % 4 === 1) {
607
+ dx1 = args[i++];
608
+ }
609
+ while(i + 3 < args.length){
610
+ this.curveTo(dx1, args[i], args[i + 1], args[i + 2], 0, args[i + 3]);
611
+ dx1 = 0;
612
+ i += 4;
613
+ }
614
+ }
615
+ applyHHCurveTo(args) {
616
+ let i = 0;
617
+ let dy1 = 0;
618
+ if (args.length % 4 === 1) {
619
+ dy1 = args[i++];
620
+ }
621
+ while(i + 3 < args.length){
622
+ this.curveTo(args[i], dy1, args[i + 1], args[i + 2], args[i + 3], 0);
623
+ dy1 = 0;
624
+ i += 4;
625
+ }
626
+ }
627
+ applyVHCurveTo(args) {
628
+ let i = 0;
629
+ let vertical = true;
630
+ while(i + 3 < args.length){
631
+ if (vertical) {
632
+ const dy1 = args[i++];
633
+ const dx2 = args[i++];
634
+ const dy2 = args[i++];
635
+ const dx3 = args[i++];
636
+ const dy3 = i === args.length - 1 ? args[i++] : 0;
637
+ this.curveTo(0, dy1, dx2, dy2, dx3, dy3);
638
+ } else {
639
+ const dx1 = args[i++];
640
+ const dx2 = args[i++];
641
+ const dy2 = args[i++];
642
+ const dy3 = args[i++];
643
+ const dx3 = i === args.length - 1 ? args[i++] : 0;
644
+ this.curveTo(dx1, 0, dx2, dy2, dx3, dy3);
645
+ }
646
+ vertical = !vertical;
647
+ }
648
+ }
649
+ applyHVCurveTo(args) {
650
+ let i = 0;
651
+ let horizontal = true;
652
+ while(i + 3 < args.length){
653
+ if (horizontal) {
654
+ const dx1 = args[i++];
655
+ const dx2 = args[i++];
656
+ const dy2 = args[i++];
657
+ const dy3 = args[i++];
658
+ const dx3 = i === args.length - 1 ? args[i++] : 0;
659
+ this.curveTo(dx1, 0, dx2, dy2, dx3, dy3);
660
+ } else {
661
+ const dy1 = args[i++];
662
+ const dx2 = args[i++];
663
+ const dy2 = args[i++];
664
+ const dx3 = args[i++];
665
+ const dy3 = i === args.length - 1 ? args[i++] : 0;
666
+ this.curveTo(0, dy1, dx2, dy2, dx3, dy3);
667
+ }
668
+ horizontal = !horizontal;
669
+ }
670
+ }
671
+ applyHFlex(args) {
672
+ if (args.length < 7) {
673
+ return;
674
+ }
675
+ this.curveTo(args[0], 0, args[1], args[2], args[3], 0);
676
+ this.curveTo(args[4], 0, args[5], -args[2], args[6], 0);
677
+ }
678
+ applyFlex(args) {
679
+ if (args.length < 12) {
680
+ return;
681
+ }
682
+ this.curveTo(args[0], args[1], args[2], args[3], args[4], args[5]);
683
+ this.curveTo(args[6], args[7], args[8], args[9], args[10], args[11]);
684
+ }
685
+ applyHFlex1(args) {
686
+ if (args.length < 9) {
687
+ return;
688
+ }
689
+ this.curveTo(args[0], args[1], args[2], args[3], args[4], 0);
690
+ this.curveTo(args[5], 0, args[6], args[7], args[8], -(args[1] + args[3] + args[7]));
691
+ }
692
+ applyFlex1(args) {
693
+ if (args.length < 11) {
694
+ return;
695
+ }
696
+ const dx = args[0] + args[2] + args[4] + args[6] + args[8];
697
+ const dy = args[1] + args[3] + args[5] + args[7] + args[9];
698
+ const dx6 = Math.abs(dx) > Math.abs(dy) ? args[10] : -dx;
699
+ const dy6 = Math.abs(dx) > Math.abs(dy) ? -dy : args[10];
700
+ this.curveTo(args[0], args[1], args[2], args[3], args[4], args[5]);
701
+ this.curveTo(args[6], args[7], args[8], args[9], dx6, dy6);
702
+ }
703
+ binaryStackOp(op) {
704
+ const b = this._stack.pop() ?? 0;
705
+ const a = this._stack.pop() ?? 0;
706
+ this._stack.push(op(a, b));
707
+ }
708
+ applyIfElse() {
709
+ const s2 = this._stack.pop() ?? 0;
710
+ const s1 = this._stack.pop() ?? 0;
711
+ const v2 = this._stack.pop() ?? 0;
712
+ const v1 = this._stack.pop() ?? 0;
713
+ this._stack.push(v1 <= v2 ? s1 : s2);
714
+ }
715
+ exchangeStackTop() {
716
+ const a = this._stack.pop();
717
+ const b = this._stack.pop();
718
+ if (a !== undefined && b !== undefined) {
719
+ this._stack.push(a, b);
720
+ }
721
+ }
722
+ indexStack() {
723
+ const index = this._stack.pop() ?? 0;
724
+ const i = Math.max(0, this._stack.length - 1 - (index | 0));
725
+ this._stack.push(this._stack[i] ?? 0);
726
+ }
727
+ rollStack() {
728
+ const j = this._stack.pop() ?? 0;
729
+ const n = this._stack.pop() ?? 0;
730
+ const count = n | 0;
731
+ if (count <= 0 || count > this._stack.length) {
732
+ return;
733
+ }
734
+ const segment = this._stack.splice(this._stack.length - count, count);
735
+ const shift = ((j | 0) % count + count) % count;
736
+ this._stack.push(...segment.slice(count - shift), ...segment.slice(0, count - shift));
737
+ }
738
+ }
739
+ function isType2NumberByte(b) {
740
+ return b === 28 || b === 255 || b >= 32;
741
+ }
742
+ function readNumber(bytes, offset, kind) {
743
+ const b0 = bytes[offset];
744
+ if (b0 >= 32 && b0 <= 246) {
745
+ return {
746
+ value: b0 - 139,
747
+ next: offset + 1
748
+ };
749
+ }
750
+ if (b0 >= 247 && b0 <= 250) {
751
+ return {
752
+ value: (b0 - 247) * 256 + bytes[offset + 1] + 108,
753
+ next: offset + 2
754
+ };
755
+ }
756
+ if (b0 >= 251 && b0 <= 254) {
757
+ return {
758
+ value: -(b0 - 251) * 256 - bytes[offset + 1] - 108,
759
+ next: offset + 2
760
+ };
761
+ }
762
+ if (b0 === 28) {
763
+ const value = toInt16(bytes[offset + 1] << 8 | bytes[offset + 2]);
764
+ return {
765
+ value,
766
+ next: offset + 3
767
+ };
768
+ }
769
+ if (b0 === 29 && kind === 'dict') {
770
+ const value = bytes[offset + 1] << 24 | bytes[offset + 2] << 16 | bytes[offset + 3] << 8 | bytes[offset + 4];
771
+ return {
772
+ value,
773
+ next: offset + 5
774
+ };
775
+ }
776
+ if (b0 === 30 && kind === 'dict') {
777
+ return readRealNumber(bytes, offset + 1);
778
+ }
779
+ if (b0 === 255) {
780
+ const value = (bytes[offset + 1] << 24 | bytes[offset + 2] << 16 | bytes[offset + 3] << 8 | bytes[offset + 4]) / 65536;
781
+ return {
782
+ value,
783
+ next: offset + 5
784
+ };
785
+ }
786
+ throw new Error(`Invalid CFF number byte: ${b0}`);
787
+ }
788
+ function readRealNumber(bytes, offset) {
789
+ let text = '';
790
+ let i = offset;
791
+ let done = false;
792
+ while(!done && i < bytes.length){
793
+ const b = bytes[i++];
794
+ for (const nibble of [
795
+ b >> 4,
796
+ b & 15
797
+ ]){
798
+ if (nibble <= 9) {
799
+ text += String(nibble);
800
+ } else if (nibble === 10) {
801
+ text += '.';
802
+ } else if (nibble === 11) {
803
+ text += 'E';
804
+ } else if (nibble === 12) {
805
+ text += 'E-';
806
+ } else if (nibble === 14) {
807
+ text += '-';
808
+ } else if (nibble === 15) {
809
+ done = true;
810
+ break;
811
+ }
812
+ }
813
+ }
814
+ return {
815
+ value: Number(text),
816
+ next: i
817
+ };
818
+ }
819
+ function toInt16(value) {
820
+ return value & 0x8000 ? value - 0x10000 : value;
821
+ }
822
+ function appendCubicAsQuadratics(contour, p0, p1, p2, p3) {
823
+ const segments = 6;
824
+ for(let i = 1; i <= segments; i++){
825
+ const t0 = (i - 1) / segments;
826
+ const t1 = i / segments;
827
+ const tm = (t0 + t1) * 0.5;
828
+ const q0 = cubicPoint(p0, p1, p2, p3, t0);
829
+ const q2 = cubicPoint(p0, p1, p2, p3, t1);
830
+ const qm = cubicPoint(p0, p1, p2, p3, tm);
831
+ const q1 = {
832
+ x: 2 * qm.x - 0.5 * q0.x - 0.5 * q2.x,
833
+ y: 2 * qm.y - 0.5 * q0.y - 0.5 * q2.y
834
+ };
835
+ contour.push({
836
+ x: q1.x,
837
+ y: q1.y,
838
+ onCurve: false
839
+ }, {
840
+ x: q2.x,
841
+ y: q2.y,
842
+ onCurve: true
843
+ });
844
+ }
845
+ }
846
+ function cubicPoint(p0, p1, p2, p3, t) {
847
+ const mt = 1 - t;
848
+ const a = mt * mt * mt;
849
+ const b = 3 * mt * mt * t;
850
+ const c = 3 * mt * t * t;
851
+ const d = t * t * t;
852
+ return {
853
+ x: a * p0.x + b * p1.x + c * p2.x + d * p3.x,
854
+ y: a * p0.y + b * p1.y + c * p2.y + d * p3.y
855
+ };
856
+ }
857
+ function samePoint(a, b) {
858
+ return Math.abs(a.x - b.x) < 1e-6 && Math.abs(a.y - b.y) < 1e-6;
859
+ }
860
+ function computeBounds(contours) {
861
+ if (contours.length === 0) {
862
+ return {
863
+ xMin: 0,
864
+ yMin: 0,
865
+ xMax: 0,
866
+ yMax: 0
867
+ };
868
+ }
869
+ let xMin = Number.POSITIVE_INFINITY;
870
+ let yMin = Number.POSITIVE_INFINITY;
871
+ let xMax = Number.NEGATIVE_INFINITY;
872
+ let yMax = Number.NEGATIVE_INFINITY;
873
+ for (const contour of contours){
874
+ for (const point of contour){
875
+ xMin = Math.min(xMin, point.x);
876
+ yMin = Math.min(yMin, point.y);
877
+ xMax = Math.max(xMax, point.x);
878
+ yMax = Math.max(yMax, point.y);
879
+ }
880
+ }
881
+ return {
882
+ xMin,
883
+ yMin,
884
+ xMax,
885
+ yMax
886
+ };
887
+ }
888
+
889
+ export { CFFGlyphProvider, parseCFFGlyphProvider };
890
+ //# sourceMappingURL=cff_font.js.map