@basementstudio/shader-lab 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/.biome/plugins/README.md +21 -0
  2. package/.biome/plugins/no-anchor-element.grit +12 -0
  3. package/.biome/plugins/no-relative-parent-imports.grit +10 -0
  4. package/.biome/plugins/no-unnecessary-forwardref.grit +9 -0
  5. package/.changeset/README.md +17 -0
  6. package/.changeset/config.json +11 -0
  7. package/.editorconfig +40 -0
  8. package/.env.example +81 -0
  9. package/.gitattributes +19 -0
  10. package/.github/workflows/canary.yml +80 -0
  11. package/.github/workflows/ci.yml +37 -0
  12. package/.github/workflows/release.yml +56 -0
  13. package/.tldrignore +84 -0
  14. package/.vscode/extensions.json +20 -0
  15. package/.vscode/settings.json +105 -0
  16. package/README.md +119 -0
  17. package/biome.json +249 -0
  18. package/bun.lock +1224 -0
  19. package/next.config.ts +131 -0
  20. package/package.json +73 -0
  21. package/packages/shader-lab-react/CHANGELOG.md +9 -0
  22. package/packages/shader-lab-react/README.md +119 -0
  23. package/packages/shader-lab-react/assets/patterns/bars/1.svg +3 -0
  24. package/packages/shader-lab-react/assets/patterns/bars/2.svg +3 -0
  25. package/packages/shader-lab-react/assets/patterns/bars/3.svg +3 -0
  26. package/packages/shader-lab-react/assets/patterns/bars/4.svg +3 -0
  27. package/packages/shader-lab-react/assets/patterns/bars/5.svg +3 -0
  28. package/packages/shader-lab-react/assets/patterns/bars/6.svg +3 -0
  29. package/packages/shader-lab-react/assets/patterns/candles/1.svg +3 -0
  30. package/packages/shader-lab-react/assets/patterns/candles/2.svg +3 -0
  31. package/packages/shader-lab-react/assets/patterns/candles/3.svg +3 -0
  32. package/packages/shader-lab-react/assets/patterns/candles/4.svg +3 -0
  33. package/packages/shader-lab-react/assets/patterns/shapes/1.svg +3 -0
  34. package/packages/shader-lab-react/assets/patterns/shapes/2.svg +3 -0
  35. package/packages/shader-lab-react/assets/patterns/shapes/3.svg +3 -0
  36. package/packages/shader-lab-react/assets/patterns/shapes/4.svg +4 -0
  37. package/packages/shader-lab-react/assets/patterns/shapes/5.svg +3 -0
  38. package/packages/shader-lab-react/assets/patterns/shapes/6.svg +4 -0
  39. package/packages/shader-lab-react/assets/textures/blue-noise.png +0 -0
  40. package/packages/shader-lab-react/package.json +36 -0
  41. package/packages/shader-lab-react/scripts/fix-esm-specifiers.mjs +57 -0
  42. package/packages/shader-lab-react/scripts/prepare-dist.mjs +4 -0
  43. package/packages/shader-lab-react/src/ambient/three-tsl.d.ts +146 -0
  44. package/packages/shader-lab-react/src/ambient/three-webgpu.d.ts +51 -0
  45. package/packages/shader-lab-react/src/easings.ts +4 -0
  46. package/packages/shader-lab-react/src/index.ts +35 -0
  47. package/packages/shader-lab-react/src/lib/editor/custom-shader/shared.ts +2 -0
  48. package/packages/shader-lab-react/src/renderer/ascii-atlas.ts +83 -0
  49. package/packages/shader-lab-react/src/renderer/ascii-pass.ts +416 -0
  50. package/packages/shader-lab-react/src/renderer/asset-url.ts +3 -0
  51. package/packages/shader-lab-react/src/renderer/blend-modes.ts +229 -0
  52. package/packages/shader-lab-react/src/renderer/contracts.ts +54 -0
  53. package/packages/shader-lab-react/src/renderer/create-webgpu-renderer.ts +48 -0
  54. package/packages/shader-lab-react/src/renderer/crt-pass.ts +1040 -0
  55. package/packages/shader-lab-react/src/renderer/custom-shader-pass.ts +108 -0
  56. package/packages/shader-lab-react/src/renderer/custom-shader-runtime.ts +309 -0
  57. package/packages/shader-lab-react/src/renderer/dither-textures.ts +99 -0
  58. package/packages/shader-lab-react/src/renderer/dithering-pass.ts +322 -0
  59. package/packages/shader-lab-react/src/renderer/gradient-pass.ts +521 -0
  60. package/packages/shader-lab-react/src/renderer/halftone-pass.ts +932 -0
  61. package/packages/shader-lab-react/src/renderer/ink-pass.ts +802 -0
  62. package/packages/shader-lab-react/src/renderer/live-pass.ts +194 -0
  63. package/packages/shader-lab-react/src/renderer/media-pass.ts +187 -0
  64. package/packages/shader-lab-react/src/renderer/media-texture.ts +66 -0
  65. package/packages/shader-lab-react/src/renderer/particle-grid-pass.ts +389 -0
  66. package/packages/shader-lab-react/src/renderer/pass-node.ts +209 -0
  67. package/packages/shader-lab-react/src/renderer/pattern-atlas.ts +133 -0
  68. package/packages/shader-lab-react/src/renderer/pattern-pass.ts +552 -0
  69. package/packages/shader-lab-react/src/renderer/pipeline-manager.ts +369 -0
  70. package/packages/shader-lab-react/src/renderer/pixel-sorting-pass.ts +277 -0
  71. package/packages/shader-lab-react/src/renderer/shaders/tsl/color/tonemapping.ts +87 -0
  72. package/packages/shader-lab-react/src/renderer/shaders/tsl/cosine-palette.ts +9 -0
  73. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/common.ts +31 -0
  74. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/curl-noise-3d.ts +36 -0
  75. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/curl-noise-4d.ts +36 -0
  76. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/fbm.ts +13 -0
  77. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/perlin-noise-3d.ts +96 -0
  78. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/ridge-noise.ts +24 -0
  79. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/simplex-noise-3d.ts +79 -0
  80. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/simplex-noise-4d.ts +89 -0
  81. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/turbulence.ts +56 -0
  82. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/value-noise-3d.ts +32 -0
  83. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/voronoi-noise-3d.ts +60 -0
  84. package/packages/shader-lab-react/src/renderer/shaders/tsl/patterns/bloom-edge-pattern.ts +15 -0
  85. package/packages/shader-lab-react/src/renderer/shaders/tsl/patterns/bloom.ts +11 -0
  86. package/packages/shader-lab-react/src/renderer/shaders/tsl/patterns/canvas-weave-pattern.ts +24 -0
  87. package/packages/shader-lab-react/src/renderer/shaders/tsl/patterns/grain-texture-pattern.ts +9 -0
  88. package/packages/shader-lab-react/src/renderer/shaders/tsl/patterns/repeating-pattern.ts +11 -0
  89. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/atan2.ts +9 -0
  90. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-conj.ts +9 -0
  91. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-cos.ts +10 -0
  92. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-div.ts +11 -0
  93. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-log.ts +7 -0
  94. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-mobius.ts +12 -0
  95. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-mul.ts +9 -0
  96. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-pow.ts +16 -0
  97. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-sin.ts +10 -0
  98. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-sqrt.ts +18 -0
  99. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-tan.ts +12 -0
  100. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-to-polar.ts +10 -0
  101. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/hyperbolic.ts +20 -0
  102. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/index.ts +48 -0
  103. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/rotate.ts +15 -0
  104. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/screen-aspect-uv.ts +15 -0
  105. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-box-2d.ts +6 -0
  106. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-diamond.ts +6 -0
  107. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-rhombus.ts +27 -0
  108. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-sphere.ts +6 -0
  109. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/smax.ts +7 -0
  110. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/smin.ts +7 -0
  111. package/packages/shader-lab-react/src/renderer/text-pass.ts +176 -0
  112. package/packages/shader-lab-react/src/runtime-clock.ts +42 -0
  113. package/packages/shader-lab-react/src/runtime-frame.ts +29 -0
  114. package/packages/shader-lab-react/src/shader-lab-composition.tsx +163 -0
  115. package/packages/shader-lab-react/src/timeline.ts +283 -0
  116. package/packages/shader-lab-react/src/types/editor.ts +5 -0
  117. package/packages/shader-lab-react/src/types.ts +141 -0
  118. package/packages/shader-lab-react/tsconfig.build.json +8 -0
  119. package/packages/shader-lab-react/tsconfig.json +21 -0
  120. package/postcss.config.mjs +5 -0
  121. package/public/assets/fonts/msdf/geist-mono/GeistMono-Regular-msdf-atlas.png +0 -0
  122. package/public/assets/fonts/msdf/geist-mono/GeistMono-Regular-msdf.json +1412 -0
  123. package/public/assets/patterns/bars/1.svg +3 -0
  124. package/public/assets/patterns/bars/2.svg +3 -0
  125. package/public/assets/patterns/bars/3.svg +3 -0
  126. package/public/assets/patterns/bars/4.svg +3 -0
  127. package/public/assets/patterns/bars/5.svg +3 -0
  128. package/public/assets/patterns/bars/6.svg +3 -0
  129. package/public/assets/patterns/candles/1.svg +3 -0
  130. package/public/assets/patterns/candles/2.svg +3 -0
  131. package/public/assets/patterns/candles/3.svg +3 -0
  132. package/public/assets/patterns/candles/4.svg +3 -0
  133. package/public/assets/patterns/shapes/1.svg +3 -0
  134. package/public/assets/patterns/shapes/2.svg +3 -0
  135. package/public/assets/patterns/shapes/3.svg +3 -0
  136. package/public/assets/patterns/shapes/4.svg +4 -0
  137. package/public/assets/patterns/shapes/5.svg +3 -0
  138. package/public/assets/patterns/shapes/6.svg +4 -0
  139. package/public/fonts/geist/Geist-Mono.woff2 +0 -0
  140. package/public/textures/blue-noise.png +0 -0
  141. package/public/textures/crt-mask.png +0 -0
  142. package/src/app/design/page.tsx +398 -0
  143. package/src/app/favicon.ico +0 -0
  144. package/src/app/globals.css +280 -0
  145. package/src/app/layout.tsx +89 -0
  146. package/src/app/page.tsx +20 -0
  147. package/src/app/robots.ts +13 -0
  148. package/src/app/sitemap.ts +13 -0
  149. package/src/components/editor/editor-canvas-viewport.tsx +116 -0
  150. package/src/components/editor/editor-export-dialog.tsx +1177 -0
  151. package/src/components/editor/editor-timeline-overlay.tsx +983 -0
  152. package/src/components/editor/editor-topbar.tsx +287 -0
  153. package/src/components/editor/layer-sidebar.tsx +738 -0
  154. package/src/components/editor/properties-sidebar-content.tsx +574 -0
  155. package/src/components/editor/properties-sidebar-fields.tsx +389 -0
  156. package/src/components/editor/properties-sidebar-utils.ts +178 -0
  157. package/src/components/editor/properties-sidebar.tsx +421 -0
  158. package/src/components/ui/button/index.tsx +57 -0
  159. package/src/components/ui/color-picker/index.tsx +358 -0
  160. package/src/components/ui/glass-panel/index.tsx +45 -0
  161. package/src/components/ui/icon-button/index.tsx +46 -0
  162. package/src/components/ui/select/index.tsx +136 -0
  163. package/src/components/ui/slider/index.tsx +192 -0
  164. package/src/components/ui/toggle/index.tsx +34 -0
  165. package/src/components/ui/typography/index.tsx +61 -0
  166. package/src/components/ui/xy-pad/index.tsx +160 -0
  167. package/src/features/editor/components/editor-export-dialog.module.css +271 -0
  168. package/src/hooks/use-editor-renderer.ts +182 -0
  169. package/src/lib/app.ts +6 -0
  170. package/src/lib/cn.ts +7 -0
  171. package/src/lib/easings.ts +240 -0
  172. package/src/lib/editor/config/layer-registry.ts +2434 -0
  173. package/src/lib/editor/custom-shader/shared.ts +28 -0
  174. package/src/lib/editor/export.ts +420 -0
  175. package/src/lib/editor/history.ts +71 -0
  176. package/src/lib/editor/layers.ts +76 -0
  177. package/src/lib/editor/parameter-schema.ts +75 -0
  178. package/src/lib/editor/project-file.ts +145 -0
  179. package/src/lib/editor/shader-export-snippet.ts +37 -0
  180. package/src/lib/editor/shader-export.ts +315 -0
  181. package/src/lib/editor/timeline/evaluate.ts +252 -0
  182. package/src/lib/editor/view-transform.ts +58 -0
  183. package/src/lib/fonts.ts +28 -0
  184. package/src/renderer/ascii-atlas.ts +83 -0
  185. package/src/renderer/ascii-pass.ts +416 -0
  186. package/src/renderer/blend-modes.ts +229 -0
  187. package/src/renderer/contracts.ts +161 -0
  188. package/src/renderer/create-webgpu-renderer.ts +48 -0
  189. package/src/renderer/crt-pass.ts +1040 -0
  190. package/src/renderer/custom-shader-pass.ts +117 -0
  191. package/src/renderer/custom-shader-runtime.ts +309 -0
  192. package/src/renderer/dither-textures.ts +99 -0
  193. package/src/renderer/dithering-pass.ts +322 -0
  194. package/src/renderer/gradient-pass.ts +520 -0
  195. package/src/renderer/halftone-pass.ts +932 -0
  196. package/src/renderer/ink-pass.ts +683 -0
  197. package/src/renderer/live-pass.ts +194 -0
  198. package/src/renderer/media-pass.ts +187 -0
  199. package/src/renderer/media-texture.ts +66 -0
  200. package/src/renderer/particle-grid-pass.ts +389 -0
  201. package/src/renderer/pass-node-factory.ts +33 -0
  202. package/src/renderer/pass-node.ts +209 -0
  203. package/src/renderer/pattern-atlas.ts +97 -0
  204. package/src/renderer/pattern-pass.ts +552 -0
  205. package/src/renderer/pipeline-manager.ts +343 -0
  206. package/src/renderer/pixel-sorting-pass.ts +277 -0
  207. package/src/renderer/project-clock.ts +57 -0
  208. package/src/renderer/shaders/tsl/color/tonemapping.ts +86 -0
  209. package/src/renderer/shaders/tsl/cosine-palette.ts +8 -0
  210. package/src/renderer/shaders/tsl/noise/common.ts +30 -0
  211. package/src/renderer/shaders/tsl/noise/curl-noise-3d.ts +35 -0
  212. package/src/renderer/shaders/tsl/noise/curl-noise-4d.ts +35 -0
  213. package/src/renderer/shaders/tsl/noise/fbm.ts +12 -0
  214. package/src/renderer/shaders/tsl/noise/perlin-noise-3d.ts +97 -0
  215. package/src/renderer/shaders/tsl/noise/ridge-noise.ts +23 -0
  216. package/src/renderer/shaders/tsl/noise/simplex-noise-3d.ts +78 -0
  217. package/src/renderer/shaders/tsl/noise/simplex-noise-4d.ts +88 -0
  218. package/src/renderer/shaders/tsl/noise/turbulence.ts +55 -0
  219. package/src/renderer/shaders/tsl/noise/value-noise-3d.ts +31 -0
  220. package/src/renderer/shaders/tsl/noise/voronoi-noise-3d.ts +59 -0
  221. package/src/renderer/shaders/tsl/patterns/bloom-edge-pattern.ts +14 -0
  222. package/src/renderer/shaders/tsl/patterns/bloom.ts +10 -0
  223. package/src/renderer/shaders/tsl/patterns/canvas-weave-pattern.ts +23 -0
  224. package/src/renderer/shaders/tsl/patterns/grain-texture-pattern.ts +8 -0
  225. package/src/renderer/shaders/tsl/patterns/repeating-pattern.ts +10 -0
  226. package/src/renderer/shaders/tsl/utils/atan2.ts +8 -0
  227. package/src/renderer/shaders/tsl/utils/complex-conj.ts +8 -0
  228. package/src/renderer/shaders/tsl/utils/complex-cos.ts +9 -0
  229. package/src/renderer/shaders/tsl/utils/complex-div.ts +10 -0
  230. package/src/renderer/shaders/tsl/utils/complex-log.ts +6 -0
  231. package/src/renderer/shaders/tsl/utils/complex-mobius.ts +11 -0
  232. package/src/renderer/shaders/tsl/utils/complex-mul.ts +8 -0
  233. package/src/renderer/shaders/tsl/utils/complex-pow.ts +15 -0
  234. package/src/renderer/shaders/tsl/utils/complex-sin.ts +9 -0
  235. package/src/renderer/shaders/tsl/utils/complex-sqrt.ts +17 -0
  236. package/src/renderer/shaders/tsl/utils/complex-tan.ts +11 -0
  237. package/src/renderer/shaders/tsl/utils/complex-to-polar.ts +9 -0
  238. package/src/renderer/shaders/tsl/utils/hyperbolic.ts +19 -0
  239. package/src/renderer/shaders/tsl/utils/index.ts +47 -0
  240. package/src/renderer/shaders/tsl/utils/rotate.ts +14 -0
  241. package/src/renderer/shaders/tsl/utils/screen-aspect-uv.ts +14 -0
  242. package/src/renderer/shaders/tsl/utils/sd-box-2d.ts +5 -0
  243. package/src/renderer/shaders/tsl/utils/sd-diamond.ts +5 -0
  244. package/src/renderer/shaders/tsl/utils/sd-rhombus.ts +26 -0
  245. package/src/renderer/shaders/tsl/utils/sd-sphere.ts +5 -0
  246. package/src/renderer/shaders/tsl/utils/smax.ts +7 -0
  247. package/src/renderer/shaders/tsl/utils/smin.ts +6 -0
  248. package/src/renderer/text-pass.ts +176 -0
  249. package/src/store/asset-store.ts +193 -0
  250. package/src/store/editor-store.ts +223 -0
  251. package/src/store/history-store.ts +172 -0
  252. package/src/store/index.ts +31 -0
  253. package/src/store/layer-store.ts +675 -0
  254. package/src/store/timeline-store.ts +572 -0
  255. package/src/types/assets.d.ts +6 -0
  256. package/src/types/css.d.ts +21 -0
  257. package/src/types/editor.ts +357 -0
  258. package/src/types/react.d.ts +15 -0
  259. package/src/types/three-tsl.d.ts +146 -0
  260. package/src/types/three-webgpu.d.ts +51 -0
  261. package/tsconfig.json +49 -0
@@ -0,0 +1,1412 @@
1
+ {
2
+ "pages": [
3
+ "GeistMono-Regular-msdf-atlas.png"
4
+ ],
5
+ "chars": [
6
+ {
7
+ "id": 65,
8
+ "index": 0,
9
+ "char": "A",
10
+ "width": 32,
11
+ "height": 39,
12
+ "xoffset": -2,
13
+ "yoffset": 11.239999771118164,
14
+ "xadvance": 28.80000114440918,
15
+ "chnl": 15,
16
+ "x": 0,
17
+ "y": 0,
18
+ "page": 0
19
+ },
20
+ {
21
+ "id": 66,
22
+ "index": 1,
23
+ "char": "B",
24
+ "width": 31,
25
+ "height": 39,
26
+ "xoffset": -2,
27
+ "yoffset": 11.239999771118164,
28
+ "xadvance": 28.80000114440918,
29
+ "chnl": 15,
30
+ "x": 36,
31
+ "y": 0,
32
+ "page": 0
33
+ },
34
+ {
35
+ "id": 67,
36
+ "index": 2,
37
+ "char": "C",
38
+ "width": 31,
39
+ "height": 40,
40
+ "xoffset": -2,
41
+ "yoffset": 11.239999771118164,
42
+ "xadvance": 28.80000114440918,
43
+ "chnl": 15,
44
+ "x": 71,
45
+ "y": 0,
46
+ "page": 0
47
+ },
48
+ {
49
+ "id": 68,
50
+ "index": 3,
51
+ "char": "D",
52
+ "width": 31,
53
+ "height": 39,
54
+ "xoffset": -2,
55
+ "yoffset": 11.239999771118164,
56
+ "xadvance": 28.80000114440918,
57
+ "chnl": 15,
58
+ "x": 106,
59
+ "y": 0,
60
+ "page": 0
61
+ },
62
+ {
63
+ "id": 69,
64
+ "index": 4,
65
+ "char": "E",
66
+ "width": 30,
67
+ "height": 39,
68
+ "xoffset": -2,
69
+ "yoffset": 11.239999771118164,
70
+ "xadvance": 28.80000114440918,
71
+ "chnl": 15,
72
+ "x": 141,
73
+ "y": 0,
74
+ "page": 0
75
+ },
76
+ {
77
+ "id": 70,
78
+ "index": 5,
79
+ "char": "F",
80
+ "width": 30,
81
+ "height": 39,
82
+ "xoffset": -2,
83
+ "yoffset": 11.239999771118164,
84
+ "xadvance": 28.80000114440918,
85
+ "chnl": 15,
86
+ "x": 175,
87
+ "y": 0,
88
+ "page": 0
89
+ },
90
+ {
91
+ "id": 71,
92
+ "index": 6,
93
+ "char": "G",
94
+ "width": 31,
95
+ "height": 40,
96
+ "xoffset": -2,
97
+ "yoffset": 11.239999771118164,
98
+ "xadvance": 28.80000114440918,
99
+ "chnl": 15,
100
+ "x": 209,
101
+ "y": 0,
102
+ "page": 0
103
+ },
104
+ {
105
+ "id": 72,
106
+ "index": 7,
107
+ "char": "H",
108
+ "width": 30,
109
+ "height": 39,
110
+ "xoffset": -2,
111
+ "yoffset": 11.239999771118164,
112
+ "xadvance": 28.80000114440918,
113
+ "chnl": 15,
114
+ "x": 244,
115
+ "y": 0,
116
+ "page": 0
117
+ },
118
+ {
119
+ "id": 73,
120
+ "index": 8,
121
+ "char": "I",
122
+ "width": 29,
123
+ "height": 39,
124
+ "xoffset": -2,
125
+ "yoffset": 11.239999771118164,
126
+ "xadvance": 28.80000114440918,
127
+ "chnl": 15,
128
+ "x": 278,
129
+ "y": 0,
130
+ "page": 0
131
+ },
132
+ {
133
+ "id": 74,
134
+ "index": 9,
135
+ "char": "J",
136
+ "width": 29,
137
+ "height": 40,
138
+ "xoffset": -2,
139
+ "yoffset": 11.239999771118164,
140
+ "xadvance": 28.80000114440918,
141
+ "chnl": 15,
142
+ "x": 311,
143
+ "y": 0,
144
+ "page": 0
145
+ },
146
+ {
147
+ "id": 75,
148
+ "index": 10,
149
+ "char": "K",
150
+ "width": 31,
151
+ "height": 39,
152
+ "xoffset": -2,
153
+ "yoffset": 11.239999771118164,
154
+ "xadvance": 28.80000114440918,
155
+ "chnl": 15,
156
+ "x": 344,
157
+ "y": 0,
158
+ "page": 0
159
+ },
160
+ {
161
+ "id": 76,
162
+ "index": 11,
163
+ "char": "L",
164
+ "width": 30,
165
+ "height": 39,
166
+ "xoffset": -2,
167
+ "yoffset": 11.239999771118164,
168
+ "xadvance": 28.80000114440918,
169
+ "chnl": 15,
170
+ "x": 379,
171
+ "y": 0,
172
+ "page": 0
173
+ },
174
+ {
175
+ "id": 77,
176
+ "index": 12,
177
+ "char": "M",
178
+ "width": 31,
179
+ "height": 39,
180
+ "xoffset": -2,
181
+ "yoffset": 11.239999771118164,
182
+ "xadvance": 28.80000114440918,
183
+ "chnl": 15,
184
+ "x": 413,
185
+ "y": 0,
186
+ "page": 0
187
+ },
188
+ {
189
+ "id": 78,
190
+ "index": 13,
191
+ "char": "N",
192
+ "width": 30,
193
+ "height": 39,
194
+ "xoffset": -2,
195
+ "yoffset": 11.239999771118164,
196
+ "xadvance": 28.80000114440918,
197
+ "chnl": 15,
198
+ "x": 448,
199
+ "y": 0,
200
+ "page": 0
201
+ },
202
+ {
203
+ "id": 79,
204
+ "index": 14,
205
+ "char": "O",
206
+ "width": 31,
207
+ "height": 40,
208
+ "xoffset": -2,
209
+ "yoffset": 11.239999771118164,
210
+ "xadvance": 28.80000114440918,
211
+ "chnl": 15,
212
+ "x": 0,
213
+ "y": 44,
214
+ "page": 0
215
+ },
216
+ {
217
+ "id": 80,
218
+ "index": 15,
219
+ "char": "P",
220
+ "width": 31,
221
+ "height": 39,
222
+ "xoffset": -2,
223
+ "yoffset": 11.239999771118164,
224
+ "xadvance": 28.80000114440918,
225
+ "chnl": 15,
226
+ "x": 35,
227
+ "y": 44,
228
+ "page": 0
229
+ },
230
+ {
231
+ "id": 81,
232
+ "index": 16,
233
+ "char": "Q",
234
+ "width": 31,
235
+ "height": 45,
236
+ "xoffset": -2,
237
+ "yoffset": 11.239999771118164,
238
+ "xadvance": 28.80000114440918,
239
+ "chnl": 15,
240
+ "x": 70,
241
+ "y": 44,
242
+ "page": 0
243
+ },
244
+ {
245
+ "id": 82,
246
+ "index": 17,
247
+ "char": "R",
248
+ "width": 30,
249
+ "height": 39,
250
+ "xoffset": -2,
251
+ "yoffset": 11.239999771118164,
252
+ "xadvance": 28.80000114440918,
253
+ "chnl": 15,
254
+ "x": 105,
255
+ "y": 44,
256
+ "page": 0
257
+ },
258
+ {
259
+ "id": 83,
260
+ "index": 18,
261
+ "char": "S",
262
+ "width": 31,
263
+ "height": 40,
264
+ "xoffset": -2,
265
+ "yoffset": 11.239999771118164,
266
+ "xadvance": 28.80000114440918,
267
+ "chnl": 15,
268
+ "x": 139,
269
+ "y": 44,
270
+ "page": 0
271
+ },
272
+ {
273
+ "id": 84,
274
+ "index": 19,
275
+ "char": "T",
276
+ "width": 31,
277
+ "height": 39,
278
+ "xoffset": -2,
279
+ "yoffset": 11.239999771118164,
280
+ "xadvance": 28.80000114440918,
281
+ "chnl": 15,
282
+ "x": 174,
283
+ "y": 44,
284
+ "page": 0
285
+ },
286
+ {
287
+ "id": 85,
288
+ "index": 20,
289
+ "char": "U",
290
+ "width": 30,
291
+ "height": 40,
292
+ "xoffset": -2,
293
+ "yoffset": 11.239999771118164,
294
+ "xadvance": 28.80000114440918,
295
+ "chnl": 15,
296
+ "x": 209,
297
+ "y": 44,
298
+ "page": 0
299
+ },
300
+ {
301
+ "id": 86,
302
+ "index": 21,
303
+ "char": "V",
304
+ "width": 32,
305
+ "height": 39,
306
+ "xoffset": -2,
307
+ "yoffset": 11.239999771118164,
308
+ "xadvance": 28.80000114440918,
309
+ "chnl": 15,
310
+ "x": 243,
311
+ "y": 44,
312
+ "page": 0
313
+ },
314
+ {
315
+ "id": 87,
316
+ "index": 22,
317
+ "char": "W",
318
+ "width": 32,
319
+ "height": 39,
320
+ "xoffset": -2,
321
+ "yoffset": 11.239999771118164,
322
+ "xadvance": 28.80000114440918,
323
+ "chnl": 15,
324
+ "x": 279,
325
+ "y": 44,
326
+ "page": 0
327
+ },
328
+ {
329
+ "id": 88,
330
+ "index": 23,
331
+ "char": "X",
332
+ "width": 31,
333
+ "height": 39,
334
+ "xoffset": -2,
335
+ "yoffset": 11.239999771118164,
336
+ "xadvance": 28.80000114440918,
337
+ "chnl": 15,
338
+ "x": 315,
339
+ "y": 44,
340
+ "page": 0
341
+ },
342
+ {
343
+ "id": 89,
344
+ "index": 24,
345
+ "char": "Y",
346
+ "width": 31,
347
+ "height": 39,
348
+ "xoffset": -2,
349
+ "yoffset": 11.239999771118164,
350
+ "xadvance": 28.80000114440918,
351
+ "chnl": 15,
352
+ "x": 350,
353
+ "y": 44,
354
+ "page": 0
355
+ },
356
+ {
357
+ "id": 90,
358
+ "index": 25,
359
+ "char": "Z",
360
+ "width": 31,
361
+ "height": 39,
362
+ "xoffset": -2,
363
+ "yoffset": 11.239999771118164,
364
+ "xadvance": 28.80000114440918,
365
+ "chnl": 15,
366
+ "x": 385,
367
+ "y": 44,
368
+ "page": 0
369
+ },
370
+ {
371
+ "id": 97,
372
+ "index": 26,
373
+ "char": "a",
374
+ "width": 31,
375
+ "height": 32,
376
+ "xoffset": -2,
377
+ "yoffset": 19.239999771118164,
378
+ "xadvance": 28.80000114440918,
379
+ "chnl": 15,
380
+ "x": 420,
381
+ "y": 44,
382
+ "page": 0
383
+ },
384
+ {
385
+ "id": 98,
386
+ "index": 27,
387
+ "char": "b",
388
+ "width": 31,
389
+ "height": 40,
390
+ "xoffset": -2,
391
+ "yoffset": 11.239999771118164,
392
+ "xadvance": 28.80000114440918,
393
+ "chnl": 15,
394
+ "x": 455,
395
+ "y": 44,
396
+ "page": 0
397
+ },
398
+ {
399
+ "id": 99,
400
+ "index": 28,
401
+ "char": "c",
402
+ "width": 30,
403
+ "height": 32,
404
+ "xoffset": -2,
405
+ "yoffset": 19.239999771118164,
406
+ "xadvance": 28.80000114440918,
407
+ "chnl": 15,
408
+ "x": 0,
409
+ "y": 93,
410
+ "page": 0
411
+ },
412
+ {
413
+ "id": 100,
414
+ "index": 29,
415
+ "char": "d",
416
+ "width": 29,
417
+ "height": 40,
418
+ "xoffset": -2,
419
+ "yoffset": 11.239999771118164,
420
+ "xadvance": 28.80000114440918,
421
+ "chnl": 15,
422
+ "x": 34,
423
+ "y": 93,
424
+ "page": 0
425
+ },
426
+ {
427
+ "id": 101,
428
+ "index": 30,
429
+ "char": "e",
430
+ "width": 30,
431
+ "height": 32,
432
+ "xoffset": -2,
433
+ "yoffset": 19.239999771118164,
434
+ "xadvance": 28.80000114440918,
435
+ "chnl": 15,
436
+ "x": 67,
437
+ "y": 93,
438
+ "page": 0
439
+ },
440
+ {
441
+ "id": 102,
442
+ "index": 31,
443
+ "char": "f",
444
+ "width": 30,
445
+ "height": 39,
446
+ "xoffset": -2,
447
+ "yoffset": 11.239999771118164,
448
+ "xadvance": 28.80000114440918,
449
+ "chnl": 15,
450
+ "x": 101,
451
+ "y": 93,
452
+ "page": 0
453
+ },
454
+ {
455
+ "id": 103,
456
+ "index": 32,
457
+ "char": "g",
458
+ "width": 30,
459
+ "height": 39,
460
+ "xoffset": -2,
461
+ "yoffset": 19.239999771118164,
462
+ "xadvance": 28.80000114440918,
463
+ "chnl": 15,
464
+ "x": 135,
465
+ "y": 93,
466
+ "page": 0
467
+ },
468
+ {
469
+ "id": 104,
470
+ "index": 33,
471
+ "char": "h",
472
+ "width": 29,
473
+ "height": 39,
474
+ "xoffset": -2,
475
+ "yoffset": 11.239999771118164,
476
+ "xadvance": 28.80000114440918,
477
+ "chnl": 15,
478
+ "x": 169,
479
+ "y": 93,
480
+ "page": 0
481
+ },
482
+ {
483
+ "id": 105,
484
+ "index": 34,
485
+ "char": "i",
486
+ "width": 31,
487
+ "height": 39,
488
+ "xoffset": -2,
489
+ "yoffset": 11.239999771118164,
490
+ "xadvance": 28.80000114440918,
491
+ "chnl": 15,
492
+ "x": 202,
493
+ "y": 93,
494
+ "page": 0
495
+ },
496
+ {
497
+ "id": 106,
498
+ "index": 35,
499
+ "char": "j",
500
+ "width": 26,
501
+ "height": 47,
502
+ "xoffset": -2,
503
+ "yoffset": 11.239999771118164,
504
+ "xadvance": 28.80000114440918,
505
+ "chnl": 15,
506
+ "x": 237,
507
+ "y": 93,
508
+ "page": 0
509
+ },
510
+ {
511
+ "id": 107,
512
+ "index": 36,
513
+ "char": "k",
514
+ "width": 31,
515
+ "height": 39,
516
+ "xoffset": -2,
517
+ "yoffset": 11.239999771118164,
518
+ "xadvance": 28.80000114440918,
519
+ "chnl": 15,
520
+ "x": 267,
521
+ "y": 93,
522
+ "page": 0
523
+ },
524
+ {
525
+ "id": 108,
526
+ "index": 37,
527
+ "char": "l",
528
+ "width": 30,
529
+ "height": 39,
530
+ "xoffset": -2,
531
+ "yoffset": 11.239999771118164,
532
+ "xadvance": 28.80000114440918,
533
+ "chnl": 15,
534
+ "x": 302,
535
+ "y": 93,
536
+ "page": 0
537
+ },
538
+ {
539
+ "id": 109,
540
+ "index": 38,
541
+ "char": "m",
542
+ "width": 31,
543
+ "height": 31,
544
+ "xoffset": -2,
545
+ "yoffset": 19.239999771118164,
546
+ "xadvance": 28.80000114440918,
547
+ "chnl": 15,
548
+ "x": 336,
549
+ "y": 93,
550
+ "page": 0
551
+ },
552
+ {
553
+ "id": 110,
554
+ "index": 39,
555
+ "char": "n",
556
+ "width": 29,
557
+ "height": 31,
558
+ "xoffset": -2,
559
+ "yoffset": 19.239999771118164,
560
+ "xadvance": 28.80000114440918,
561
+ "chnl": 15,
562
+ "x": 371,
563
+ "y": 93,
564
+ "page": 0
565
+ },
566
+ {
567
+ "id": 111,
568
+ "index": 40,
569
+ "char": "o",
570
+ "width": 31,
571
+ "height": 32,
572
+ "xoffset": -2,
573
+ "yoffset": 19.239999771118164,
574
+ "xadvance": 28.80000114440918,
575
+ "chnl": 15,
576
+ "x": 404,
577
+ "y": 93,
578
+ "page": 0
579
+ },
580
+ {
581
+ "id": 112,
582
+ "index": 41,
583
+ "char": "p",
584
+ "width": 31,
585
+ "height": 39,
586
+ "xoffset": -2,
587
+ "yoffset": 19.239999771118164,
588
+ "xadvance": 28.80000114440918,
589
+ "chnl": 15,
590
+ "x": 439,
591
+ "y": 93,
592
+ "page": 0
593
+ },
594
+ {
595
+ "id": 113,
596
+ "index": 42,
597
+ "char": "q",
598
+ "width": 29,
599
+ "height": 39,
600
+ "xoffset": -2,
601
+ "yoffset": 19.239999771118164,
602
+ "xadvance": 28.80000114440918,
603
+ "chnl": 15,
604
+ "x": 474,
605
+ "y": 93,
606
+ "page": 0
607
+ },
608
+ {
609
+ "id": 114,
610
+ "index": 43,
611
+ "char": "r",
612
+ "width": 30,
613
+ "height": 30,
614
+ "xoffset": -2,
615
+ "yoffset": 20.239999771118164,
616
+ "xadvance": 28.80000114440918,
617
+ "chnl": 15,
618
+ "x": 0,
619
+ "y": 144,
620
+ "page": 0
621
+ },
622
+ {
623
+ "id": 115,
624
+ "index": 44,
625
+ "char": "s",
626
+ "width": 29,
627
+ "height": 32,
628
+ "xoffset": -2,
629
+ "yoffset": 19.239999771118164,
630
+ "xadvance": 28.80000114440918,
631
+ "chnl": 15,
632
+ "x": 34,
633
+ "y": 144,
634
+ "page": 0
635
+ },
636
+ {
637
+ "id": 116,
638
+ "index": 45,
639
+ "char": "t",
640
+ "width": 29,
641
+ "height": 36,
642
+ "xoffset": -2,
643
+ "yoffset": 14.239999771118164,
644
+ "xadvance": 28.80000114440918,
645
+ "chnl": 15,
646
+ "x": 67,
647
+ "y": 144,
648
+ "page": 0
649
+ },
650
+ {
651
+ "id": 117,
652
+ "index": 46,
653
+ "char": "u",
654
+ "width": 29,
655
+ "height": 31,
656
+ "xoffset": -2,
657
+ "yoffset": 20.239999771118164,
658
+ "xadvance": 28.80000114440918,
659
+ "chnl": 15,
660
+ "x": 100,
661
+ "y": 144,
662
+ "page": 0
663
+ },
664
+ {
665
+ "id": 118,
666
+ "index": 47,
667
+ "char": "v",
668
+ "width": 31,
669
+ "height": 30,
670
+ "xoffset": -2,
671
+ "yoffset": 20.239999771118164,
672
+ "xadvance": 28.80000114440918,
673
+ "chnl": 15,
674
+ "x": 133,
675
+ "y": 144,
676
+ "page": 0
677
+ },
678
+ {
679
+ "id": 119,
680
+ "index": 48,
681
+ "char": "w",
682
+ "width": 32,
683
+ "height": 30,
684
+ "xoffset": -2,
685
+ "yoffset": 20.239999771118164,
686
+ "xadvance": 28.80000114440918,
687
+ "chnl": 15,
688
+ "x": 168,
689
+ "y": 144,
690
+ "page": 0
691
+ },
692
+ {
693
+ "id": 120,
694
+ "index": 49,
695
+ "char": "x",
696
+ "width": 31,
697
+ "height": 30,
698
+ "xoffset": -2,
699
+ "yoffset": 20.239999771118164,
700
+ "xadvance": 28.80000114440918,
701
+ "chnl": 15,
702
+ "x": 204,
703
+ "y": 144,
704
+ "page": 0
705
+ },
706
+ {
707
+ "id": 121,
708
+ "index": 50,
709
+ "char": "y",
710
+ "width": 31,
711
+ "height": 38,
712
+ "xoffset": -2,
713
+ "yoffset": 20.239999771118164,
714
+ "xadvance": 28.80000114440918,
715
+ "chnl": 15,
716
+ "x": 239,
717
+ "y": 144,
718
+ "page": 0
719
+ },
720
+ {
721
+ "id": 122,
722
+ "index": 51,
723
+ "char": "z",
724
+ "width": 29,
725
+ "height": 30,
726
+ "xoffset": -2,
727
+ "yoffset": 20.239999771118164,
728
+ "xadvance": 28.80000114440918,
729
+ "chnl": 15,
730
+ "x": 274,
731
+ "y": 144,
732
+ "page": 0
733
+ },
734
+ {
735
+ "id": 48,
736
+ "index": 52,
737
+ "char": "0",
738
+ "width": 31,
739
+ "height": 40,
740
+ "xoffset": -2,
741
+ "yoffset": 11.239999771118164,
742
+ "xadvance": 28.80000114440918,
743
+ "chnl": 15,
744
+ "x": 307,
745
+ "y": 144,
746
+ "page": 0
747
+ },
748
+ {
749
+ "id": 49,
750
+ "index": 53,
751
+ "char": "1",
752
+ "width": 30,
753
+ "height": 39,
754
+ "xoffset": -2,
755
+ "yoffset": 11.239999771118164,
756
+ "xadvance": 28.80000114440918,
757
+ "chnl": 15,
758
+ "x": 342,
759
+ "y": 144,
760
+ "page": 0
761
+ },
762
+ {
763
+ "id": 50,
764
+ "index": 54,
765
+ "char": "2",
766
+ "width": 31,
767
+ "height": 39,
768
+ "xoffset": -2,
769
+ "yoffset": 11.239999771118164,
770
+ "xadvance": 28.80000114440918,
771
+ "chnl": 15,
772
+ "x": 376,
773
+ "y": 144,
774
+ "page": 0
775
+ },
776
+ {
777
+ "id": 51,
778
+ "index": 55,
779
+ "char": "3",
780
+ "width": 31,
781
+ "height": 40,
782
+ "xoffset": -2,
783
+ "yoffset": 11.239999771118164,
784
+ "xadvance": 28.80000114440918,
785
+ "chnl": 15,
786
+ "x": 411,
787
+ "y": 144,
788
+ "page": 0
789
+ },
790
+ {
791
+ "id": 52,
792
+ "index": 56,
793
+ "char": "4",
794
+ "width": 31,
795
+ "height": 39,
796
+ "xoffset": -2,
797
+ "yoffset": 11.239999771118164,
798
+ "xadvance": 28.80000114440918,
799
+ "chnl": 15,
800
+ "x": 446,
801
+ "y": 144,
802
+ "page": 0
803
+ },
804
+ {
805
+ "id": 53,
806
+ "index": 57,
807
+ "char": "5",
808
+ "width": 30,
809
+ "height": 40,
810
+ "xoffset": -2,
811
+ "yoffset": 11.239999771118164,
812
+ "xadvance": 28.80000114440918,
813
+ "chnl": 15,
814
+ "x": 481,
815
+ "y": 144,
816
+ "page": 0
817
+ },
818
+ {
819
+ "id": 54,
820
+ "index": 58,
821
+ "char": "6",
822
+ "width": 31,
823
+ "height": 40,
824
+ "xoffset": -2,
825
+ "yoffset": 11.239999771118164,
826
+ "xadvance": 28.80000114440918,
827
+ "chnl": 15,
828
+ "x": 0,
829
+ "y": 188,
830
+ "page": 0
831
+ },
832
+ {
833
+ "id": 55,
834
+ "index": 59,
835
+ "char": "7",
836
+ "width": 30,
837
+ "height": 39,
838
+ "xoffset": -2,
839
+ "yoffset": 11.239999771118164,
840
+ "xadvance": 28.80000114440918,
841
+ "chnl": 15,
842
+ "x": 35,
843
+ "y": 188,
844
+ "page": 0
845
+ },
846
+ {
847
+ "id": 56,
848
+ "index": 60,
849
+ "char": "8",
850
+ "width": 31,
851
+ "height": 40,
852
+ "xoffset": -2,
853
+ "yoffset": 11.239999771118164,
854
+ "xadvance": 28.80000114440918,
855
+ "chnl": 15,
856
+ "x": 69,
857
+ "y": 188,
858
+ "page": 0
859
+ },
860
+ {
861
+ "id": 57,
862
+ "index": 61,
863
+ "char": "9",
864
+ "width": 31,
865
+ "height": 40,
866
+ "xoffset": -2,
867
+ "yoffset": 11.239999771118164,
868
+ "xadvance": 28.80000114440918,
869
+ "chnl": 15,
870
+ "x": 104,
871
+ "y": 188,
872
+ "page": 0
873
+ },
874
+ {
875
+ "id": 32,
876
+ "index": 62,
877
+ "char": " ",
878
+ "width": 4,
879
+ "height": 4,
880
+ "xoffset": -2,
881
+ "yoffset": 46.239999771118164,
882
+ "xadvance": 28.80000114440918,
883
+ "chnl": 15,
884
+ "x": 139,
885
+ "y": 188,
886
+ "page": 0
887
+ },
888
+ {
889
+ "id": 46,
890
+ "index": 63,
891
+ "char": ".",
892
+ "width": 22,
893
+ "height": 10,
894
+ "xoffset": -2,
895
+ "yoffset": 40.239999771118164,
896
+ "xadvance": 28.80000114440918,
897
+ "chnl": 15,
898
+ "x": 147,
899
+ "y": 188,
900
+ "page": 0
901
+ },
902
+ {
903
+ "id": 44,
904
+ "index": 64,
905
+ "char": ",",
906
+ "width": 22,
907
+ "height": 18,
908
+ "xoffset": -2,
909
+ "yoffset": 40.239999771118164,
910
+ "xadvance": 28.80000114440918,
911
+ "chnl": 15,
912
+ "x": 173,
913
+ "y": 188,
914
+ "page": 0
915
+ },
916
+ {
917
+ "id": 59,
918
+ "index": 65,
919
+ "char": ";",
920
+ "width": 22,
921
+ "height": 37,
922
+ "xoffset": -2,
923
+ "yoffset": 21.239999771118164,
924
+ "xadvance": 28.80000114440918,
925
+ "chnl": 15,
926
+ "x": 199,
927
+ "y": 188,
928
+ "page": 0
929
+ },
930
+ {
931
+ "id": 58,
932
+ "index": 66,
933
+ "char": ":",
934
+ "width": 22,
935
+ "height": 29,
936
+ "xoffset": -2,
937
+ "yoffset": 21.239999771118164,
938
+ "xadvance": 28.80000114440918,
939
+ "chnl": 15,
940
+ "x": 225,
941
+ "y": 188,
942
+ "page": 0
943
+ },
944
+ {
945
+ "id": 33,
946
+ "index": 67,
947
+ "char": "!",
948
+ "width": 22,
949
+ "height": 39,
950
+ "xoffset": -2,
951
+ "yoffset": 11.239999771118164,
952
+ "xadvance": 28.80000114440918,
953
+ "chnl": 15,
954
+ "x": 251,
955
+ "y": 188,
956
+ "page": 0
957
+ },
958
+ {
959
+ "id": 63,
960
+ "index": 68,
961
+ "char": "?",
962
+ "width": 30,
963
+ "height": 39,
964
+ "xoffset": -2,
965
+ "yoffset": 11.239999771118164,
966
+ "xadvance": 28.80000114440918,
967
+ "chnl": 15,
968
+ "x": 277,
969
+ "y": 188,
970
+ "page": 0
971
+ },
972
+ {
973
+ "id": 39,
974
+ "index": 69,
975
+ "char": "'",
976
+ "width": 21,
977
+ "height": 39,
978
+ "xoffset": -2,
979
+ "yoffset": 11.239999771118164,
980
+ "xadvance": 28.80000114440918,
981
+ "chnl": 15,
982
+ "x": 311,
983
+ "y": 188,
984
+ "page": 0
985
+ },
986
+ {
987
+ "id": 45,
988
+ "index": 70,
989
+ "char": "-",
990
+ "width": 28,
991
+ "height": 20,
992
+ "xoffset": -2,
993
+ "yoffset": 30.239999771118164,
994
+ "xadvance": 28.80000114440918,
995
+ "chnl": 15,
996
+ "x": 336,
997
+ "y": 188,
998
+ "page": 0
999
+ },
1000
+ {
1001
+ "id": 95,
1002
+ "index": 71,
1003
+ "char": "_",
1004
+ "width": 29,
1005
+ "height": 8,
1006
+ "xoffset": -2,
1007
+ "yoffset": 46.239999771118164,
1008
+ "xadvance": 28.80000114440918,
1009
+ "chnl": 15,
1010
+ "x": 368,
1011
+ "y": 188,
1012
+ "page": 0
1013
+ },
1014
+ {
1015
+ "id": 40,
1016
+ "index": 72,
1017
+ "char": "(",
1018
+ "width": 26,
1019
+ "height": 47,
1020
+ "xoffset": -2,
1021
+ "yoffset": 9.239999771118164,
1022
+ "xadvance": 28.80000114440918,
1023
+ "chnl": 15,
1024
+ "x": 401,
1025
+ "y": 188,
1026
+ "page": 0
1027
+ },
1028
+ {
1029
+ "id": 41,
1030
+ "index": 73,
1031
+ "char": ")",
1032
+ "width": 26,
1033
+ "height": 47,
1034
+ "xoffset": -2,
1035
+ "yoffset": 9.239999771118164,
1036
+ "xadvance": 28.80000114440918,
1037
+ "chnl": 15,
1038
+ "x": 431,
1039
+ "y": 188,
1040
+ "page": 0
1041
+ },
1042
+ {
1043
+ "id": 91,
1044
+ "index": 74,
1045
+ "char": "[",
1046
+ "width": 27,
1047
+ "height": 47,
1048
+ "xoffset": -2,
1049
+ "yoffset": 9.239999771118164,
1050
+ "xadvance": 28.80000114440918,
1051
+ "chnl": 15,
1052
+ "x": 461,
1053
+ "y": 188,
1054
+ "page": 0
1055
+ },
1056
+ {
1057
+ "id": 93,
1058
+ "index": 75,
1059
+ "char": "]",
1060
+ "width": 27,
1061
+ "height": 47,
1062
+ "xoffset": -2,
1063
+ "yoffset": 9.239999771118164,
1064
+ "xadvance": 28.80000114440918,
1065
+ "chnl": 15,
1066
+ "x": 0,
1067
+ "y": 239,
1068
+ "page": 0
1069
+ },
1070
+ {
1071
+ "id": 123,
1072
+ "index": 76,
1073
+ "char": "{",
1074
+ "width": 28,
1075
+ "height": 47,
1076
+ "xoffset": -2,
1077
+ "yoffset": 9.239999771118164,
1078
+ "xadvance": 28.80000114440918,
1079
+ "chnl": 15,
1080
+ "x": 31,
1081
+ "y": 239,
1082
+ "page": 0
1083
+ },
1084
+ {
1085
+ "id": 125,
1086
+ "index": 77,
1087
+ "char": "}",
1088
+ "width": 28,
1089
+ "height": 47,
1090
+ "xoffset": -2,
1091
+ "yoffset": 9.239999771118164,
1092
+ "xadvance": 28.80000114440918,
1093
+ "chnl": 15,
1094
+ "x": 63,
1095
+ "y": 239,
1096
+ "page": 0
1097
+ },
1098
+ {
1099
+ "id": 64,
1100
+ "index": 78,
1101
+ "char": "@",
1102
+ "width": 32,
1103
+ "height": 45,
1104
+ "xoffset": -2,
1105
+ "yoffset": 11.239999771118164,
1106
+ "xadvance": 28.80000114440918,
1107
+ "chnl": 15,
1108
+ "x": 95,
1109
+ "y": 239,
1110
+ "page": 0
1111
+ },
1112
+ {
1113
+ "id": 35,
1114
+ "index": 79,
1115
+ "char": "#",
1116
+ "width": 31,
1117
+ "height": 39,
1118
+ "xoffset": -2,
1119
+ "yoffset": 11.239999771118164,
1120
+ "xadvance": 28.80000114440918,
1121
+ "chnl": 15,
1122
+ "x": 131,
1123
+ "y": 239,
1124
+ "page": 0
1125
+ },
1126
+ {
1127
+ "id": 36,
1128
+ "index": 80,
1129
+ "char": "$",
1130
+ "width": 31,
1131
+ "height": 48,
1132
+ "xoffset": -2,
1133
+ "yoffset": 7.239999771118164,
1134
+ "xadvance": 28.80000114440918,
1135
+ "chnl": 15,
1136
+ "x": 166,
1137
+ "y": 239,
1138
+ "page": 0
1139
+ },
1140
+ {
1141
+ "id": 37,
1142
+ "index": 81,
1143
+ "char": "%",
1144
+ "width": 33,
1145
+ "height": 40,
1146
+ "xoffset": -2,
1147
+ "yoffset": 11.239999771118164,
1148
+ "xadvance": 28.80000114440918,
1149
+ "chnl": 15,
1150
+ "x": 201,
1151
+ "y": 239,
1152
+ "page": 0
1153
+ },
1154
+ {
1155
+ "id": 38,
1156
+ "index": 82,
1157
+ "char": "&",
1158
+ "width": 32,
1159
+ "height": 40,
1160
+ "xoffset": -2,
1161
+ "yoffset": 11.239999771118164,
1162
+ "xadvance": 28.80000114440918,
1163
+ "chnl": 15,
1164
+ "x": 238,
1165
+ "y": 239,
1166
+ "page": 0
1167
+ },
1168
+ {
1169
+ "id": 42,
1170
+ "index": 83,
1171
+ "char": "*",
1172
+ "width": 29,
1173
+ "height": 39,
1174
+ "xoffset": -2,
1175
+ "yoffset": 11.239999771118164,
1176
+ "xadvance": 28.80000114440918,
1177
+ "chnl": 15,
1178
+ "x": 274,
1179
+ "y": 239,
1180
+ "page": 0
1181
+ },
1182
+ {
1183
+ "id": 43,
1184
+ "index": 84,
1185
+ "char": "+",
1186
+ "width": 30,
1187
+ "height": 30,
1188
+ "xoffset": -2,
1189
+ "yoffset": 20.239999771118164,
1190
+ "xadvance": 28.80000114440918,
1191
+ "chnl": 15,
1192
+ "x": 307,
1193
+ "y": 239,
1194
+ "page": 0
1195
+ },
1196
+ {
1197
+ "id": 61,
1198
+ "index": 85,
1199
+ "char": "=",
1200
+ "width": 29,
1201
+ "height": 26,
1202
+ "xoffset": -2,
1203
+ "yoffset": 24.239999771118164,
1204
+ "xadvance": 28.80000114440918,
1205
+ "chnl": 15,
1206
+ "x": 341,
1207
+ "y": 239,
1208
+ "page": 0
1209
+ },
1210
+ {
1211
+ "id": 47,
1212
+ "index": 86,
1213
+ "char": "/",
1214
+ "width": 28,
1215
+ "height": 47,
1216
+ "xoffset": -2,
1217
+ "yoffset": 9.239999771118164,
1218
+ "xadvance": 28.80000114440918,
1219
+ "chnl": 15,
1220
+ "x": 374,
1221
+ "y": 239,
1222
+ "page": 0
1223
+ },
1224
+ {
1225
+ "id": 92,
1226
+ "index": 87,
1227
+ "char": "\\",
1228
+ "width": 28,
1229
+ "height": 47,
1230
+ "xoffset": -2,
1231
+ "yoffset": 9.239999771118164,
1232
+ "xadvance": 28.80000114440918,
1233
+ "chnl": 15,
1234
+ "x": 406,
1235
+ "y": 239,
1236
+ "page": 0
1237
+ },
1238
+ {
1239
+ "id": 34,
1240
+ "index": 88,
1241
+ "char": "\"",
1242
+ "width": 25,
1243
+ "height": 39,
1244
+ "xoffset": -2,
1245
+ "yoffset": 11.239999771118164,
1246
+ "xadvance": 28.80000114440918,
1247
+ "chnl": 15,
1248
+ "x": 438,
1249
+ "y": 239,
1250
+ "page": 0
1251
+ },
1252
+ {
1253
+ "id": 60,
1254
+ "index": 89,
1255
+ "char": "<",
1256
+ "width": 30,
1257
+ "height": 31,
1258
+ "xoffset": -2,
1259
+ "yoffset": 19.239999771118164,
1260
+ "xadvance": 28.80000114440918,
1261
+ "chnl": 15,
1262
+ "x": 467,
1263
+ "y": 239,
1264
+ "page": 0
1265
+ },
1266
+ {
1267
+ "id": 62,
1268
+ "index": 90,
1269
+ "char": ">",
1270
+ "width": 30,
1271
+ "height": 31,
1272
+ "xoffset": -2,
1273
+ "yoffset": 19.239999771118164,
1274
+ "xadvance": 28.80000114440918,
1275
+ "chnl": 15,
1276
+ "x": 0,
1277
+ "y": 291,
1278
+ "page": 0
1279
+ }
1280
+ ],
1281
+ "info": {
1282
+ "face": "Geist Mono Regular",
1283
+ "size": 48,
1284
+ "bold": 0,
1285
+ "italic": 0,
1286
+ "charset": [
1287
+ "A",
1288
+ "B",
1289
+ "C",
1290
+ "D",
1291
+ "E",
1292
+ "F",
1293
+ "G",
1294
+ "H",
1295
+ "I",
1296
+ "J",
1297
+ "K",
1298
+ "L",
1299
+ "M",
1300
+ "N",
1301
+ "O",
1302
+ "P",
1303
+ "Q",
1304
+ "R",
1305
+ "S",
1306
+ "T",
1307
+ "U",
1308
+ "V",
1309
+ "W",
1310
+ "X",
1311
+ "Y",
1312
+ "Z",
1313
+ "a",
1314
+ "b",
1315
+ "c",
1316
+ "d",
1317
+ "e",
1318
+ "f",
1319
+ "g",
1320
+ "h",
1321
+ "i",
1322
+ "j",
1323
+ "k",
1324
+ "l",
1325
+ "m",
1326
+ "n",
1327
+ "o",
1328
+ "p",
1329
+ "q",
1330
+ "r",
1331
+ "s",
1332
+ "t",
1333
+ "u",
1334
+ "v",
1335
+ "w",
1336
+ "x",
1337
+ "y",
1338
+ "z",
1339
+ "0",
1340
+ "1",
1341
+ "2",
1342
+ "3",
1343
+ "4",
1344
+ "5",
1345
+ "6",
1346
+ "7",
1347
+ "8",
1348
+ "9",
1349
+ " ",
1350
+ ".",
1351
+ ",",
1352
+ ";",
1353
+ ":",
1354
+ "!",
1355
+ "?",
1356
+ "'",
1357
+ "-",
1358
+ "_",
1359
+ "(",
1360
+ ")",
1361
+ "[",
1362
+ "]",
1363
+ "{",
1364
+ "}",
1365
+ "@",
1366
+ "#",
1367
+ "$",
1368
+ "%",
1369
+ "&",
1370
+ "*",
1371
+ "+",
1372
+ "=",
1373
+ "/",
1374
+ "\\",
1375
+ "\"",
1376
+ "<",
1377
+ ">"
1378
+ ],
1379
+ "unicode": 1,
1380
+ "stretchH": 100,
1381
+ "smooth": 1,
1382
+ "aa": 1,
1383
+ "padding": [
1384
+ 2,
1385
+ 2,
1386
+ 2,
1387
+ 2
1388
+ ],
1389
+ "spacing": [
1390
+ 0,
1391
+ 0
1392
+ ],
1393
+ "outline": 0
1394
+ },
1395
+ "common": {
1396
+ "lineHeight": 62.40000343322754,
1397
+ "base": 48.239999771118164,
1398
+ "scaleW": 512,
1399
+ "scaleH": 512,
1400
+ "pages": 1,
1401
+ "packed": 0,
1402
+ "alphaChnl": 0,
1403
+ "redChnl": 0,
1404
+ "greenChnl": 0,
1405
+ "blueChnl": 0
1406
+ },
1407
+ "distanceField": {
1408
+ "fieldType": "msdf",
1409
+ "distanceRange": 4
1410
+ },
1411
+ "kernings": []
1412
+ }