scenejs_on_rails 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -5
  3. data/app/controllers/scenejs_controller.rb +53 -0
  4. data/app/views/scenejs/get_scenejs_data.html.erb +3 -0
  5. data/lib/scenejs_on_rails.rb +1 -1
  6. data/lib/scenejs_on_rails/rails.rb +5 -0
  7. data/lib/scenejs_on_rails/version.rb +1 -1
  8. data/vendor/assets/javascripts/scenejs.js +17307 -0
  9. data/vendor/assets/javascripts/scenejs_extras/gui.js +478 -0
  10. data/vendor/assets/javascripts/scenejs_extras/gui/README.md +4 -0
  11. data/vendor/assets/javascripts/scenejs_extras/gui/dat.gui.min.js +94 -0
  12. data/vendor/assets/javascripts/scenejs_extras/gui/gui.js +385 -0
  13. data/vendor/assets/javascripts/scenejs_lib/cityBuilder.js +457 -0
  14. data/vendor/assets/javascripts/scenejs_lib/dat.gui.min.js +94 -0
  15. data/vendor/assets/javascripts/scenejs_lib/gl-matrix-min.js +28 -0
  16. data/vendor/assets/javascripts/scenejs_lib/gl-matrix.js +4078 -0
  17. data/vendor/assets/javascripts/scenejs_lib/require.js +36 -0
  18. data/vendor/assets/javascripts/scenejs_lib/requireConfig.js +18 -0
  19. data/vendor/assets/javascripts/scenejs_lib/requireWrapperEnd.js +1 -0
  20. data/vendor/assets/javascripts/scenejs_lib/requireWrapperStart.js +2 -0
  21. data/vendor/assets/javascripts/scenejs_lib/stats.min.js +6 -0
  22. data/vendor/assets/javascripts/scenejs_lib/sylvester.js +1 -0
  23. data/vendor/assets/javascripts/scenejs_lib/webgl-debug-utils.js +839 -0
  24. data/vendor/assets/javascripts/scenejs_plugins/geometry/boundary.js +59 -0
  25. data/vendor/assets/javascripts/scenejs_plugins/geometry/box.js +72 -0
  26. data/vendor/assets/javascripts/scenejs_plugins/geometry/plane.js +126 -0
  27. data/vendor/assets/javascripts/scenejs_plugins/geometry/quad.js +37 -0
  28. data/vendor/assets/javascripts/scenejs_plugins/geometry/skybox.js +86 -0
  29. data/vendor/assets/javascripts/scenejs_plugins/geometry/sphere.js +82 -0
  30. data/vendor/assets/javascripts/scenejs_plugins/geometry/teapot.js +5853 -0
  31. data/vendor/assets/javascripts/scenejs_plugins/geometry/torus.js +139 -0
  32. data/vendor/assets/javascripts/scenejs_plugins/geometry/vectorText.js +1499 -0
  33. data/vendor/assets/javascripts/scenejs_plugins/geometry/wobblyBox.js +44 -0
  34. data/vendor/assets/javascripts/scenejs_plugins/lib/canvas2image.js +198 -0
  35. data/vendor/assets/javascripts/scenejs_plugins/lib/frustum/frustumCullEngine.js +810 -0
  36. data/vendor/assets/javascripts/scenejs_plugins/lib/frustum/frustumCullSystem.js +185 -0
  37. data/vendor/assets/javascripts/scenejs_plugins/lib/frustum/frustumCullSystemPool.js +174 -0
  38. data/vendor/assets/javascripts/scenejs_plugins/lib/frustum/frustumCullWorker.js +142 -0
  39. data/vendor/assets/javascripts/scenejs_plugins/lib/gl-matrix-min.js +28 -0
  40. data/vendor/assets/javascripts/scenejs_plugins/lib/jquery-1.8.3.min.js +2 -0
  41. data/vendor/assets/javascripts/scenejs_plugins/lib/k3d.js +1029 -0
  42. data/vendor/assets/javascripts/scenejs_plugins/lib/physics/jiglib.all.min.js +3 -0
  43. data/vendor/assets/javascripts/scenejs_plugins/lib/physics/physics.js +223 -0
  44. data/vendor/assets/javascripts/scenejs_plugins/lib/physics/worker.js +330 -0
  45. data/vendor/assets/javascripts/scenejs_plugins/node/alpha/orbitTracking.js +295 -0
  46. data/vendor/assets/javascripts/scenejs_plugins/node/alpha/orbitTrackingTarget.js +43 -0
  47. data/vendor/assets/javascripts/scenejs_plugins/node/backgrounds/gradient.js +148 -0
  48. data/vendor/assets/javascripts/scenejs_plugins/node/cameras/orbit.js +172 -0
  49. data/vendor/assets/javascripts/scenejs_plugins/node/cameras/pickFlyOrbit.js +409 -0
  50. data/vendor/assets/javascripts/scenejs_plugins/node/canvas/capture.js +107 -0
  51. data/vendor/assets/javascripts/scenejs_plugins/node/demos/color.js +30 -0
  52. data/vendor/assets/javascripts/scenejs_plugins/node/demos/redTeapot.js +52 -0
  53. data/vendor/assets/javascripts/scenejs_plugins/node/demos/spinningTeapot.js +43 -0
  54. data/vendor/assets/javascripts/scenejs_plugins/node/effects/crt.js +36 -0
  55. data/vendor/assets/javascripts/scenejs_plugins/node/effects/fog.js +159 -0
  56. data/vendor/assets/javascripts/scenejs_plugins/node/effects/snowyPeaks.js +50 -0
  57. data/vendor/assets/javascripts/scenejs_plugins/node/effects/wobble.js +42 -0
  58. data/vendor/assets/javascripts/scenejs_plugins/node/effects/xray.js +126 -0
  59. data/vendor/assets/javascripts/scenejs_plugins/node/frustum/body.js +112 -0
  60. data/vendor/assets/javascripts/scenejs_plugins/node/frustum/cull.js +42 -0
  61. data/vendor/assets/javascripts/scenejs_plugins/node/frustum/lod.js +125 -0
  62. data/vendor/assets/javascripts/scenejs_plugins/node/heightmaps/custom.js +185 -0
  63. data/vendor/assets/javascripts/scenejs_plugins/node/import/3ds.js +91 -0
  64. data/vendor/assets/javascripts/scenejs_plugins/node/import/md2.js +139 -0
  65. data/vendor/assets/javascripts/scenejs_plugins/node/import/obj.js +100 -0
  66. data/vendor/assets/javascripts/scenejs_plugins/node/objects/buildings/building.js +352 -0
  67. data/vendor/assets/javascripts/scenejs_plugins/node/objects/buildings/building/HighRiseGlass.jpg +0 -0
  68. data/vendor/assets/javascripts/scenejs_plugins/node/objects/buildings/building/HighRiseGlassSpecular.jpg +0 -0
  69. data/vendor/assets/javascripts/scenejs_plugins/node/objects/buildings/building/highrise-windows.jpg +0 -0
  70. data/vendor/assets/javascripts/scenejs_plugins/node/objects/buildings/building/pixelcity_windows7.jpg +0 -0
  71. data/vendor/assets/javascripts/scenejs_plugins/node/objects/buildings/city.js +26 -0
  72. data/vendor/assets/javascripts/scenejs_plugins/node/objects/plants/ghostTree.js +387 -0
  73. data/vendor/assets/javascripts/scenejs_plugins/node/objects/space/planets/earth.js +168 -0
  74. data/vendor/assets/javascripts/scenejs_plugins/node/objects/space/planets/earth/earth-lights.gif +0 -0
  75. data/vendor/assets/javascripts/scenejs_plugins/node/objects/space/planets/earth/earth-specular.gif +0 -0
  76. data/vendor/assets/javascripts/scenejs_plugins/node/objects/space/planets/earth/earth-specular.jpg +0 -0
  77. data/vendor/assets/javascripts/scenejs_plugins/node/objects/space/planets/earth/earth.jpg +0 -0
  78. data/vendor/assets/javascripts/scenejs_plugins/node/objects/space/planets/earth/earthbump.jpg +0 -0
  79. data/vendor/assets/javascripts/scenejs_plugins/node/objects/space/planets/earth/earthclouds.jpg +0 -0
  80. data/vendor/assets/javascripts/scenejs_plugins/node/objects/toys/drinkingBird.js +632 -0
  81. data/vendor/assets/javascripts/scenejs_plugins/node/objects/vehicles/tank.js +77670 -0
  82. data/vendor/assets/javascripts/scenejs_plugins/node/objects/vehicles/tank.js~ +77636 -0
  83. data/vendor/assets/javascripts/scenejs_plugins/node/physics/body.js +85 -0
  84. data/vendor/assets/javascripts/scenejs_plugins/node/physics/box.js +30 -0
  85. data/vendor/assets/javascripts/scenejs_plugins/node/physics/material.js +35 -0
  86. data/vendor/assets/javascripts/scenejs_plugins/node/physics/plane.js +47 -0
  87. data/vendor/assets/javascripts/scenejs_plugins/node/physics/sphere.js +32 -0
  88. data/vendor/assets/javascripts/scenejs_plugins/node/physics/system.js +44 -0
  89. data/vendor/assets/javascripts/scenejs_plugins/node/physics/teapot.js +29 -0
  90. data/vendor/assets/javascripts/scenejs_plugins/node/prims/boundary.js +73 -0
  91. data/vendor/assets/javascripts/scenejs_plugins/node/prims/box.js +87 -0
  92. data/vendor/assets/javascripts/scenejs_plugins/node/prims/cylinder.js +186 -0
  93. data/vendor/assets/javascripts/scenejs_plugins/node/prims/grid.js +47 -0
  94. data/vendor/assets/javascripts/scenejs_plugins/node/prims/plane.js +137 -0
  95. data/vendor/assets/javascripts/scenejs_plugins/node/prims/quad.js +43 -0
  96. data/vendor/assets/javascripts/scenejs_plugins/node/prims/sphere.js +107 -0
  97. data/vendor/assets/javascripts/scenejs_plugins/node/prims/teapot.js +5846 -0
  98. data/vendor/assets/javascripts/scenejs_plugins/node/prims/torus.js +149 -0
  99. data/vendor/assets/javascripts/scenejs_plugins/node/prims/vectorText.js +1508 -0
  100. data/vendor/assets/javascripts/scenejs_plugins/node/skyboxes/clouds.js +19 -0
  101. data/vendor/assets/javascripts/scenejs_plugins/node/skyboxes/cloudySea.js +19 -0
  102. data/vendor/assets/javascripts/scenejs_plugins/node/skyboxes/custom.js +150 -0
  103. data/vendor/assets/javascripts/scenejs_plugins/node/skyboxes/grimmNight.js +19 -0
  104. data/vendor/assets/javascripts/scenejs_plugins/node/skyboxes/interstellarClouds.js +19 -0
  105. data/vendor/assets/javascripts/scenejs_plugins/node/skyboxes/miramarClouds.js +19 -0
  106. data/vendor/assets/javascripts/scenejs_plugins/node/skyboxes/stormyDays.js +19 -0
  107. data/vendor/assets/javascripts/scenejs_plugins/node/skyboxes/textures/clouds.jpg +0 -0
  108. data/vendor/assets/javascripts/scenejs_plugins/node/skyboxes/textures/cloudySea.jpg +0 -0
  109. data/vendor/assets/javascripts/scenejs_plugins/node/skyboxes/textures/grimmNight.jpg +0 -0
  110. data/vendor/assets/javascripts/scenejs_plugins/node/skyboxes/textures/interstellarClouds.jpg +0 -0
  111. data/vendor/assets/javascripts/scenejs_plugins/node/skyboxes/textures/miramarClouds.jpg +0 -0
  112. data/vendor/assets/javascripts/scenejs_plugins/node/skyboxes/textures/stormyDays.jpg +0 -0
  113. data/vendor/assets/javascripts/scenejs_plugins/node/skyboxes/textures/violentDays.jpg +0 -0
  114. data/vendor/assets/javascripts/scenejs_plugins/node/skyboxes/violentDays.js +19 -0
  115. data/vendor/assets/javascripts/scenejs_plugins/texture/image.js +67 -0
  116. data/vendor/assets/javascripts/scenejs_plugins/texture/video.js +105 -0
  117. metadata +113 -1
@@ -0,0 +1,139 @@
1
+ /*
2
+ * Based on TorusGeometry by Mr. Doob and oosmoxiecode
3
+ *
4
+ */
5
+ SceneJS.Plugins.addPlugin(
6
+
7
+ "geometry", // Node type
8
+ "torus",
9
+
10
+ new (function () {
11
+
12
+ this.getSource = function () {
13
+ var publish;
14
+ return {
15
+ subscribe:function (fn) {
16
+ publish = fn;
17
+ },
18
+ configure:function (cfg) {
19
+ publish(build(cfg));
20
+ }
21
+ };
22
+ };
23
+
24
+ function build(cfg) {
25
+
26
+ var radius = cfg.radius || 1;
27
+ var tube = cfg.tube || 0.3;
28
+ var segmentsR = cfg.segmentsR || 32;
29
+ var segmentsT = cfg.segmentsT || 24;
30
+ var arc = cfg.arc || Math.PI * 2;
31
+ var coreId = "torus_" + (cfg.wire == true ? "wire_" : "") + radius + "_" + tube + "_" + segmentsR + "_" + segmentsT + "_" + arc;
32
+
33
+ var positions = [];
34
+ var normals = [];
35
+ var uvs = [];
36
+ var indices = [];
37
+
38
+ var u;
39
+ var v;
40
+ var centerX;
41
+ var centerY;
42
+ var centerZ = 0;
43
+ var x;
44
+ var y;
45
+ var z;
46
+ var vec;
47
+
48
+ for (var j = 0; j <= segmentsR; j++) {
49
+ for (var i = 0; i <= segmentsT; i++) {
50
+
51
+ u = i / segmentsT * arc;
52
+ v = j / segmentsR * Math.PI * 2;
53
+
54
+ centerX = radius * Math.cos(u);
55
+ centerY = radius * Math.sin(u);
56
+
57
+ x = (radius + tube * Math.cos(v) ) * Math.cos(u);
58
+ y = (radius + tube * Math.cos(v) ) * Math.sin(u);
59
+ z = tube * Math.sin(v);
60
+
61
+ positions.push(x);
62
+ positions.push(y);
63
+ positions.push(z);
64
+
65
+ uvs.push(i / segmentsT);
66
+ uvs.push(1 - j / segmentsR);
67
+
68
+ vec = normalize(sub([x, y, z], [centerX, centerY, centerZ], []), []);
69
+
70
+ normals.push(vec[0]);
71
+ normals.push(vec[1]);
72
+ normals.push(vec[2]);
73
+ }
74
+ }
75
+
76
+ var a;
77
+ var b;
78
+ var c;
79
+ var d;
80
+
81
+ for (var j = 1; j <= segmentsR; j++) {
82
+ for (var i = 1; i <= segmentsT; i++) {
83
+
84
+ a = ( segmentsT + 1 ) * j + i - 1;
85
+ b = ( segmentsT + 1 ) * ( j - 1 ) + i - 1;
86
+ c = ( segmentsT + 1 ) * ( j - 1 ) + i;
87
+ d = ( segmentsT + 1 ) * j + i;
88
+
89
+ indices.push(a);
90
+ indices.push(b);
91
+ indices.push(c);
92
+
93
+ indices.push(c);
94
+ indices.push(d);
95
+ indices.push(a);
96
+ }
97
+ }
98
+
99
+ return {
100
+ primitive:cfg.wire ? "lines" : "triangles",
101
+ coreId:coreId,
102
+ positions:new Float32Array(positions),
103
+ normals:new Float32Array(normals),
104
+ uv:new Float32Array(uvs),
105
+ indices:new Uint16Array(indices)
106
+ };
107
+ }
108
+
109
+ function normalize(v, dest) {
110
+ var f = 1.0 / len(v);
111
+ return mul(v, f, dest);
112
+ }
113
+
114
+ function len(v) {
115
+ return Math.sqrt(sqLen(v));
116
+ }
117
+
118
+ var sqLen = function (v) {
119
+ return dot(v, v);
120
+ };
121
+
122
+ var dot = function (u, v) {
123
+ return (u[0] * v[0] + u[1] * v[1] + u[2] * v[2]);
124
+ };
125
+
126
+ function mul(v, s, dest) {
127
+ dest[0] = v[0] * s;
128
+ dest[1] = v[1] * s;
129
+ dest[2] = v[2] * s;
130
+ return dest;
131
+ }
132
+
133
+ function sub(u, v, dest) {
134
+ dest[0] = u[0] - v[0];
135
+ dest[1] = u[1] - v[1];
136
+ dest[2] = u[2] - v[2];
137
+ return dest;
138
+ }
139
+ })());
@@ -0,0 +1,1499 @@
1
+ SceneJS.Plugins.addPlugin(
2
+
3
+ "geometry", // Node type
4
+ "vectorText",
5
+
6
+ new (function () {
7
+
8
+ this.getSource = function () {
9
+ var publish;
10
+ return {
11
+ subscribe:function (fn) {
12
+ publish = fn;
13
+ },
14
+ configure:function (cfg) {
15
+ publish(build(cfg));
16
+ }
17
+ };
18
+ };
19
+
20
+ // Letter stroke data, initialised below
21
+ var letters;
22
+
23
+ function build(cfg) {
24
+
25
+ var positions = [];
26
+ var indices = [];
27
+ var lines = cfg.text ? cfg.text.split("\n") : [];
28
+ var countVerts = 0;
29
+ var y = cfg.yPos || 0;
30
+ var x;
31
+ var str;
32
+ var len;
33
+ var c;
34
+ var mag = (cfg.size || 1) / 25.0;
35
+ var penUp;
36
+ var p1;
37
+ var p2;
38
+ var needLine;
39
+ var pointsLen;
40
+ var a;
41
+
42
+ for (var iLine = 0; iLine < lines.length; iLine++) {
43
+
44
+ x = cfg.xPos || 0;
45
+ str = lines[iLine];
46
+ len = str.length;
47
+
48
+ for (var i = 0; i < len; i++) {
49
+
50
+ c = letters[str.charAt(i)];
51
+
52
+ if (c == '\n') {
53
+ //alert("newline");
54
+ }
55
+
56
+ if (!c) {
57
+ continue;
58
+ }
59
+
60
+ penUp = 1;
61
+ p1 = -1;
62
+ p2 = -1;
63
+ needLine = false;
64
+
65
+ pointsLen = c.points.length;
66
+
67
+ for (var j = 0; j < pointsLen; j++) {
68
+ a = c.points[j];
69
+
70
+ if (a[0] == -1 && a[1] == -1) {
71
+ penUp = 1;
72
+ needLine = false;
73
+ continue;
74
+ }
75
+
76
+ positions.push(x + a[0] * mag);
77
+ positions.push(y + a[1] * mag);
78
+ positions.push(0);
79
+
80
+ if (p1 == -1) {
81
+ p1 = countVerts;
82
+ } else if (p2 == -1) {
83
+ p2 = countVerts;
84
+ } else {
85
+ p1 = p2;
86
+ p2 = countVerts;
87
+ }
88
+ countVerts++;
89
+
90
+ if (penUp) {
91
+ penUp = false;
92
+
93
+ } else {
94
+ indices.push(p1);
95
+ indices.push(p2);
96
+ }
97
+
98
+ needLine = true;
99
+ }
100
+ x += c.width * mag;
101
+
102
+ }
103
+ y += 25 * mag;
104
+ }
105
+
106
+ return {
107
+ primitive:"lines",
108
+ positions:new Float32Array(positions),
109
+ indices:new Uint16Array(indices)
110
+ };
111
+ }
112
+
113
+ letters = {
114
+ ' ':{ width:16, points:[] },
115
+ '!':{ width:10, points:[
116
+ [5, 21],
117
+ [5, 7],
118
+ [-1, -1],
119
+ [5, 2],
120
+ [4, 1],
121
+ [5, 0],
122
+ [6, 1],
123
+ [5, 2]
124
+ ] },
125
+ '"':{ width:16, points:[
126
+ [4, 21],
127
+ [4, 14],
128
+ [-1, -1],
129
+ [12, 21],
130
+ [12, 14]
131
+ ] },
132
+ '#':{ width:21, points:[
133
+ [11, 25],
134
+ [4, -7],
135
+ [-1, -1],
136
+ [17, 25],
137
+ [10, -7],
138
+ [-1, -1],
139
+ [4, 12],
140
+ [18, 12],
141
+ [-1, -1],
142
+ [3, 6],
143
+ [17, 6]
144
+ ] },
145
+ '$':{ width:20, points:[
146
+ [8, 25],
147
+ [8, -4],
148
+ [-1, -1],
149
+ [12, 25],
150
+ [12, -4],
151
+ [-1, -1],
152
+ [17, 18],
153
+ [15, 20],
154
+ [12, 21],
155
+ [8, 21],
156
+ [5, 20],
157
+ [3, 18],
158
+ [3, 16],
159
+ [4, 14],
160
+ [5, 13],
161
+ [7, 12],
162
+ [13, 10],
163
+ [15, 9],
164
+ [16, 8],
165
+ [17, 6],
166
+ [17, 3],
167
+ [15, 1],
168
+ [12, 0],
169
+ [8, 0],
170
+ [5, 1],
171
+ [3, 3]
172
+ ] },
173
+ '%':{ width:24, points:[
174
+ [21, 21],
175
+ [3, 0],
176
+ [-1, -1],
177
+ [8, 21],
178
+ [10, 19],
179
+ [10, 17],
180
+ [9, 15],
181
+ [7, 14],
182
+ [5, 14],
183
+ [3, 16],
184
+ [3, 18],
185
+ [4, 20],
186
+ [6, 21],
187
+ [8, 21],
188
+ [10, 20],
189
+ [13, 19],
190
+ [16, 19],
191
+ [19, 20],
192
+ [21, 21],
193
+ [-1, -1],
194
+ [17, 7],
195
+ [15, 6],
196
+ [14, 4],
197
+ [14, 2],
198
+ [16, 0],
199
+ [18, 0],
200
+ [20, 1],
201
+ [21, 3],
202
+ [21, 5],
203
+ [19, 7],
204
+ [17, 7]
205
+ ] },
206
+ '&':{ width:26, points:[
207
+ [23, 12],
208
+ [23, 13],
209
+ [22, 14],
210
+ [21, 14],
211
+ [20, 13],
212
+ [19, 11],
213
+ [17, 6],
214
+ [15, 3],
215
+ [13, 1],
216
+ [11, 0],
217
+ [7, 0],
218
+ [5, 1],
219
+ [4, 2],
220
+ [3, 4],
221
+ [3, 6],
222
+ [4, 8],
223
+ [5, 9],
224
+ [12, 13],
225
+ [13, 14],
226
+ [14, 16],
227
+ [14, 18],
228
+ [13, 20],
229
+ [11, 21],
230
+ [9, 20],
231
+ [8, 18],
232
+ [8, 16],
233
+ [9, 13],
234
+ [11, 10],
235
+ [16, 3],
236
+ [18, 1],
237
+ [20, 0],
238
+ [22, 0],
239
+ [23, 1],
240
+ [23, 2]
241
+ ] },
242
+ '\'':{ width:10, points:[
243
+ [5, 19],
244
+ [4, 20],
245
+ [5, 21],
246
+ [6, 20],
247
+ [6, 18],
248
+ [5, 16],
249
+ [4, 15]
250
+ ] },
251
+ '(':{ width:14, points:[
252
+ [11, 25],
253
+ [9, 23],
254
+ [7, 20],
255
+ [5, 16],
256
+ [4, 11],
257
+ [4, 7],
258
+ [5, 2],
259
+ [7, -2],
260
+ [9, -5],
261
+ [11, -7]
262
+ ] },
263
+ ')':{ width:14, points:[
264
+ [3, 25],
265
+ [5, 23],
266
+ [7, 20],
267
+ [9, 16],
268
+ [10, 11],
269
+ [10, 7],
270
+ [9, 2],
271
+ [7, -2],
272
+ [5, -5],
273
+ [3, -7]
274
+ ] },
275
+ '*':{ width:16, points:[
276
+ [8, 21],
277
+ [8, 9],
278
+ [-1, -1],
279
+ [3, 18],
280
+ [13, 12],
281
+ [-1, -1],
282
+ [13, 18],
283
+ [3, 12]
284
+ ] },
285
+ '+':{ width:26, points:[
286
+ [13, 18],
287
+ [13, 0],
288
+ [-1, -1],
289
+ [4, 9],
290
+ [22, 9]
291
+ ] },
292
+ ',':{ width:10, points:[
293
+ [6, 1],
294
+ [5, 0],
295
+ [4, 1],
296
+ [5, 2],
297
+ [6, 1],
298
+ [6, -1],
299
+ [5, -3],
300
+ [4, -4]
301
+ ] },
302
+ '-':{ width:26, points:[
303
+ [4, 9],
304
+ [22, 9]
305
+ ] },
306
+ '.':{ width:10, points:[
307
+ [5, 2],
308
+ [4, 1],
309
+ [5, 0],
310
+ [6, 1],
311
+ [5, 2]
312
+ ] },
313
+ '/':{ width:22, points:[
314
+ [20, 25],
315
+ [2, -7]
316
+ ] },
317
+ '0':{ width:20, points:[
318
+ [9, 21],
319
+ [6, 20],
320
+ [4, 17],
321
+ [3, 12],
322
+ [3, 9],
323
+ [4, 4],
324
+ [6, 1],
325
+ [9, 0],
326
+ [11, 0],
327
+ [14, 1],
328
+ [16, 4],
329
+ [17, 9],
330
+ [17, 12],
331
+ [16, 17],
332
+ [14, 20],
333
+ [11, 21],
334
+ [9, 21]
335
+ ] },
336
+ '1':{ width:20, points:[
337
+ [6, 17],
338
+ [8, 18],
339
+ [11, 21],
340
+ [11, 0]
341
+ ] },
342
+ '2':{ width:20, points:[
343
+ [4, 16],
344
+ [4, 17],
345
+ [5, 19],
346
+ [6, 20],
347
+ [8, 21],
348
+ [12, 21],
349
+ [14, 20],
350
+ [15, 19],
351
+ [16, 17],
352
+ [16, 15],
353
+ [15, 13],
354
+ [13, 10],
355
+ [3, 0],
356
+ [17, 0]
357
+ ] },
358
+ '3':{ width:20, points:[
359
+ [5, 21],
360
+ [16, 21],
361
+ [10, 13],
362
+ [13, 13],
363
+ [15, 12],
364
+ [16, 11],
365
+ [17, 8],
366
+ [17, 6],
367
+ [16, 3],
368
+ [14, 1],
369
+ [11, 0],
370
+ [8, 0],
371
+ [5, 1],
372
+ [4, 2],
373
+ [3, 4]
374
+ ] },
375
+ '4':{ width:20, points:[
376
+ [13, 21],
377
+ [3, 7],
378
+ [18, 7],
379
+ [-1, -1],
380
+ [13, 21],
381
+ [13, 0]
382
+ ] },
383
+ '5':{ width:20, points:[
384
+ [15, 21],
385
+ [5, 21],
386
+ [4, 12],
387
+ [5, 13],
388
+ [8, 14],
389
+ [11, 14],
390
+ [14, 13],
391
+ [16, 11],
392
+ [17, 8],
393
+ [17, 6],
394
+ [16, 3],
395
+ [14, 1],
396
+ [11, 0],
397
+ [8, 0],
398
+ [5, 1],
399
+ [4, 2],
400
+ [3, 4]
401
+ ] },
402
+ '6':{ width:20, points:[
403
+ [16, 18],
404
+ [15, 20],
405
+ [12, 21],
406
+ [10, 21],
407
+ [7, 20],
408
+ [5, 17],
409
+ [4, 12],
410
+ [4, 7],
411
+ [5, 3],
412
+ [7, 1],
413
+ [10, 0],
414
+ [11, 0],
415
+ [14, 1],
416
+ [16, 3],
417
+ [17, 6],
418
+ [17, 7],
419
+ [16, 10],
420
+ [14, 12],
421
+ [11, 13],
422
+ [10, 13],
423
+ [7, 12],
424
+ [5, 10],
425
+ [4, 7]
426
+ ] },
427
+ '7':{ width:20, points:[
428
+ [17, 21],
429
+ [7, 0],
430
+ [-1, -1],
431
+ [3, 21],
432
+ [17, 21]
433
+ ] },
434
+ '8':{ width:20, points:[
435
+ [8, 21],
436
+ [5, 20],
437
+ [4, 18],
438
+ [4, 16],
439
+ [5, 14],
440
+ [7, 13],
441
+ [11, 12],
442
+ [14, 11],
443
+ [16, 9],
444
+ [17, 7],
445
+ [17, 4],
446
+ [16, 2],
447
+ [15, 1],
448
+ [12, 0],
449
+ [8, 0],
450
+ [5, 1],
451
+ [4, 2],
452
+ [3, 4],
453
+ [3, 7],
454
+ [4, 9],
455
+ [6, 11],
456
+ [9, 12],
457
+ [13, 13],
458
+ [15, 14],
459
+ [16, 16],
460
+ [16, 18],
461
+ [15, 20],
462
+ [12, 21],
463
+ [8, 21]
464
+ ] },
465
+ '9':{ width:20, points:[
466
+ [16, 14],
467
+ [15, 11],
468
+ [13, 9],
469
+ [10, 8],
470
+ [9, 8],
471
+ [6, 9],
472
+ [4, 11],
473
+ [3, 14],
474
+ [3, 15],
475
+ [4, 18],
476
+ [6, 20],
477
+ [9, 21],
478
+ [10, 21],
479
+ [13, 20],
480
+ [15, 18],
481
+ [16, 14],
482
+ [16, 9],
483
+ [15, 4],
484
+ [13, 1],
485
+ [10, 0],
486
+ [8, 0],
487
+ [5, 1],
488
+ [4, 3]
489
+ ] },
490
+ ':':{ width:10, points:[
491
+ [5, 14],
492
+ [4, 13],
493
+ [5, 12],
494
+ [6, 13],
495
+ [5, 14],
496
+ [-1, -1],
497
+ [5, 2],
498
+ [4, 1],
499
+ [5, 0],
500
+ [6, 1],
501
+ [5, 2]
502
+ ] },
503
+ ';':{ width:10, points:[
504
+ [5, 14],
505
+ [4, 13],
506
+ [5, 12],
507
+ [6, 13],
508
+ [5, 14],
509
+ [-1, -1],
510
+ [6, 1],
511
+ [5, 0],
512
+ [4, 1],
513
+ [5, 2],
514
+ [6, 1],
515
+ [6, -1],
516
+ [5, -3],
517
+ [4, -4]
518
+ ] },
519
+ '<':{ width:24, points:[
520
+ [20, 18],
521
+ [4, 9],
522
+ [20, 0]
523
+ ] },
524
+ '=':{ width:26, points:[
525
+ [4, 12],
526
+ [22, 12],
527
+ [-1, -1],
528
+ [4, 6],
529
+ [22, 6]
530
+ ] },
531
+ '>':{ width:24, points:[
532
+ [4, 18],
533
+ [20, 9],
534
+ [4, 0]
535
+ ] },
536
+ '?':{ width:18, points:[
537
+ [3, 16],
538
+ [3, 17],
539
+ [4, 19],
540
+ [5, 20],
541
+ [7, 21],
542
+ [11, 21],
543
+ [13, 20],
544
+ [14, 19],
545
+ [15, 17],
546
+ [15, 15],
547
+ [14, 13],
548
+ [13, 12],
549
+ [9, 10],
550
+ [9, 7],
551
+ [-1, -1],
552
+ [9, 2],
553
+ [8, 1],
554
+ [9, 0],
555
+ [10, 1],
556
+ [9, 2]
557
+ ] },
558
+ '@':{ width:27, points:[
559
+ [18, 13],
560
+ [17, 15],
561
+ [15, 16],
562
+ [12, 16],
563
+ [10, 15],
564
+ [9, 14],
565
+ [8, 11],
566
+ [8, 8],
567
+ [9, 6],
568
+ [11, 5],
569
+ [14, 5],
570
+ [16, 6],
571
+ [17, 8],
572
+ [-1, -1],
573
+ [12, 16],
574
+ [10, 14],
575
+ [9, 11],
576
+ [9, 8],
577
+ [10, 6],
578
+ [11, 5],
579
+ [-1, -1],
580
+ [18, 16],
581
+ [17, 8],
582
+ [17, 6],
583
+ [19, 5],
584
+ [21, 5],
585
+ [23, 7],
586
+ [24, 10],
587
+ [24, 12],
588
+ [23, 15],
589
+ [22, 17],
590
+ [20, 19],
591
+ [18, 20],
592
+ [15, 21],
593
+ [12, 21],
594
+ [9, 20],
595
+ [7, 19],
596
+ [5, 17],
597
+ [4, 15],
598
+ [3, 12],
599
+ [3, 9],
600
+ [4, 6],
601
+ [5, 4],
602
+ [7, 2],
603
+ [9, 1],
604
+ [12, 0],
605
+ [15, 0],
606
+ [18, 1],
607
+ [20, 2],
608
+ [21, 3],
609
+ [-1, -1],
610
+ [19, 16],
611
+ [18, 8],
612
+ [18, 6],
613
+ [19, 5]
614
+ ] },
615
+ 'A':{ width:18, points:[
616
+ [9, 21],
617
+ [1, 0],
618
+ [-1, -1],
619
+ [9, 21],
620
+ [17, 0],
621
+ [-1, -1],
622
+ [4, 7],
623
+ [14, 7]
624
+ ] },
625
+ 'B':{ width:21, points:[
626
+ [4, 21],
627
+ [4, 0],
628
+ [-1, -1],
629
+ [4, 21],
630
+ [13, 21],
631
+ [16, 20],
632
+ [17, 19],
633
+ [18, 17],
634
+ [18, 15],
635
+ [17, 13],
636
+ [16, 12],
637
+ [13, 11],
638
+ [-1, -1],
639
+ [4, 11],
640
+ [13, 11],
641
+ [16, 10],
642
+ [17, 9],
643
+ [18, 7],
644
+ [18, 4],
645
+ [17, 2],
646
+ [16, 1],
647
+ [13, 0],
648
+ [4, 0]
649
+ ] },
650
+ 'C':{ width:21, points:[
651
+ [18, 16],
652
+ [17, 18],
653
+ [15, 20],
654
+ [13, 21],
655
+ [9, 21],
656
+ [7, 20],
657
+ [5, 18],
658
+ [4, 16],
659
+ [3, 13],
660
+ [3, 8],
661
+ [4, 5],
662
+ [5, 3],
663
+ [7, 1],
664
+ [9, 0],
665
+ [13, 0],
666
+ [15, 1],
667
+ [17, 3],
668
+ [18, 5]
669
+ ] },
670
+ 'D':{ width:21, points:[
671
+ [4, 21],
672
+ [4, 0],
673
+ [-1, -1],
674
+ [4, 21],
675
+ [11, 21],
676
+ [14, 20],
677
+ [16, 18],
678
+ [17, 16],
679
+ [18, 13],
680
+ [18, 8],
681
+ [17, 5],
682
+ [16, 3],
683
+ [14, 1],
684
+ [11, 0],
685
+ [4, 0]
686
+ ] },
687
+ 'E':{ width:19, points:[
688
+ [4, 21],
689
+ [4, 0],
690
+ [-1, -1],
691
+ [4, 21],
692
+ [17, 21],
693
+ [-1, -1],
694
+ [4, 11],
695
+ [12, 11],
696
+ [-1, -1],
697
+ [4, 0],
698
+ [17, 0]
699
+ ] },
700
+ 'F':{ width:18, points:[
701
+ [4, 21],
702
+ [4, 0],
703
+ [-1, -1],
704
+ [4, 21],
705
+ [17, 21],
706
+ [-1, -1],
707
+ [4, 11],
708
+ [12, 11]
709
+ ] },
710
+ 'G':{ width:21, points:[
711
+ [18, 16],
712
+ [17, 18],
713
+ [15, 20],
714
+ [13, 21],
715
+ [9, 21],
716
+ [7, 20],
717
+ [5, 18],
718
+ [4, 16],
719
+ [3, 13],
720
+ [3, 8],
721
+ [4, 5],
722
+ [5, 3],
723
+ [7, 1],
724
+ [9, 0],
725
+ [13, 0],
726
+ [15, 1],
727
+ [17, 3],
728
+ [18, 5],
729
+ [18, 8],
730
+ [-1, -1],
731
+ [13, 8],
732
+ [18, 8]
733
+ ] },
734
+ 'H':{ width:22, points:[
735
+ [4, 21],
736
+ [4, 0],
737
+ [-1, -1],
738
+ [18, 21],
739
+ [18, 0],
740
+ [-1, -1],
741
+ [4, 11],
742
+ [18, 11]
743
+ ] },
744
+ 'I':{ width:8, points:[
745
+ [4, 21],
746
+ [4, 0]
747
+ ] },
748
+ 'J':{ width:16, points:[
749
+ [12, 21],
750
+ [12, 5],
751
+ [11, 2],
752
+ [10, 1],
753
+ [8, 0],
754
+ [6, 0],
755
+ [4, 1],
756
+ [3, 2],
757
+ [2, 5],
758
+ [2, 7]
759
+ ] },
760
+ 'K':{ width:21, points:[
761
+ [4, 21],
762
+ [4, 0],
763
+ [-1, -1],
764
+ [18, 21],
765
+ [4, 7],
766
+ [-1, -1],
767
+ [9, 12],
768
+ [18, 0]
769
+ ] },
770
+ 'L':{ width:17, points:[
771
+ [4, 21],
772
+ [4, 0],
773
+ [-1, -1],
774
+ [4, 0],
775
+ [16, 0]
776
+ ] },
777
+ 'M':{ width:24, points:[
778
+ [4, 21],
779
+ [4, 0],
780
+ [-1, -1],
781
+ [4, 21],
782
+ [12, 0],
783
+ [-1, -1],
784
+ [20, 21],
785
+ [12, 0],
786
+ [-1, -1],
787
+ [20, 21],
788
+ [20, 0]
789
+ ] },
790
+ 'N':{ width:22, points:[
791
+ [4, 21],
792
+ [4, 0],
793
+ [-1, -1],
794
+ [4, 21],
795
+ [18, 0],
796
+ [-1, -1],
797
+ [18, 21],
798
+ [18, 0]
799
+ ] },
800
+ 'O':{ width:22, points:[
801
+ [9, 21],
802
+ [7, 20],
803
+ [5, 18],
804
+ [4, 16],
805
+ [3, 13],
806
+ [3, 8],
807
+ [4, 5],
808
+ [5, 3],
809
+ [7, 1],
810
+ [9, 0],
811
+ [13, 0],
812
+ [15, 1],
813
+ [17, 3],
814
+ [18, 5],
815
+ [19, 8],
816
+ [19, 13],
817
+ [18, 16],
818
+ [17, 18],
819
+ [15, 20],
820
+ [13, 21],
821
+ [9, 21]
822
+ ] },
823
+ 'P':{ width:21, points:[
824
+ [4, 21],
825
+ [4, 0],
826
+ [-1, -1],
827
+ [4, 21],
828
+ [13, 21],
829
+ [16, 20],
830
+ [17, 19],
831
+ [18, 17],
832
+ [18, 14],
833
+ [17, 12],
834
+ [16, 11],
835
+ [13, 10],
836
+ [4, 10]
837
+ ] },
838
+ 'Q':{ width:22, points:[
839
+ [9, 21],
840
+ [7, 20],
841
+ [5, 18],
842
+ [4, 16],
843
+ [3, 13],
844
+ [3, 8],
845
+ [4, 5],
846
+ [5, 3],
847
+ [7, 1],
848
+ [9, 0],
849
+ [13, 0],
850
+ [15, 1],
851
+ [17, 3],
852
+ [18, 5],
853
+ [19, 8],
854
+ [19, 13],
855
+ [18, 16],
856
+ [17, 18],
857
+ [15, 20],
858
+ [13, 21],
859
+ [9, 21],
860
+ [-1, -1],
861
+ [12, 4],
862
+ [18, -2]
863
+ ] },
864
+ 'R':{ width:21, points:[
865
+ [4, 21],
866
+ [4, 0],
867
+ [-1, -1],
868
+ [4, 21],
869
+ [13, 21],
870
+ [16, 20],
871
+ [17, 19],
872
+ [18, 17],
873
+ [18, 15],
874
+ [17, 13],
875
+ [16, 12],
876
+ [13, 11],
877
+ [4, 11],
878
+ [-1, -1],
879
+ [11, 11],
880
+ [18, 0]
881
+ ] },
882
+ 'S':{ width:20, points:[
883
+ [17, 18],
884
+ [15, 20],
885
+ [12, 21],
886
+ [8, 21],
887
+ [5, 20],
888
+ [3, 18],
889
+ [3, 16],
890
+ [4, 14],
891
+ [5, 13],
892
+ [7, 12],
893
+ [13, 10],
894
+ [15, 9],
895
+ [16, 8],
896
+ [17, 6],
897
+ [17, 3],
898
+ [15, 1],
899
+ [12, 0],
900
+ [8, 0],
901
+ [5, 1],
902
+ [3, 3]
903
+ ] },
904
+ 'T':{ width:16, points:[
905
+ [8, 21],
906
+ [8, 0],
907
+ [-1, -1],
908
+ [1, 21],
909
+ [15, 21]
910
+ ] },
911
+ 'U':{ width:22, points:[
912
+ [4, 21],
913
+ [4, 6],
914
+ [5, 3],
915
+ [7, 1],
916
+ [10, 0],
917
+ [12, 0],
918
+ [15, 1],
919
+ [17, 3],
920
+ [18, 6],
921
+ [18, 21]
922
+ ] },
923
+ 'V':{ width:18, points:[
924
+ [1, 21],
925
+ [9, 0],
926
+ [-1, -1],
927
+ [17, 21],
928
+ [9, 0]
929
+ ] },
930
+ 'W':{ width:24, points:[
931
+ [2, 21],
932
+ [7, 0],
933
+ [-1, -1],
934
+ [12, 21],
935
+ [7, 0],
936
+ [-1, -1],
937
+ [12, 21],
938
+ [17, 0],
939
+ [-1, -1],
940
+ [22, 21],
941
+ [17, 0]
942
+ ] },
943
+ 'X':{ width:20, points:[
944
+ [3, 21],
945
+ [17, 0],
946
+ [-1, -1],
947
+ [17, 21],
948
+ [3, 0]
949
+ ] },
950
+ 'Y':{ width:18, points:[
951
+ [1, 21],
952
+ [9, 11],
953
+ [9, 0],
954
+ [-1, -1],
955
+ [17, 21],
956
+ [9, 11]
957
+ ] },
958
+ 'Z':{ width:20, points:[
959
+ [17, 21],
960
+ [3, 0],
961
+ [-1, -1],
962
+ [3, 21],
963
+ [17, 21],
964
+ [-1, -1],
965
+ [3, 0],
966
+ [17, 0]
967
+ ] },
968
+ '[':{ width:14, points:[
969
+ [4, 25],
970
+ [4, -7],
971
+ [-1, -1],
972
+ [5, 25],
973
+ [5, -7],
974
+ [-1, -1],
975
+ [4, 25],
976
+ [11, 25],
977
+ [-1, -1],
978
+ [4, -7],
979
+ [11, -7]
980
+ ] },
981
+ '\\':{ width:14, points:[
982
+ [0, 21],
983
+ [14, -3]
984
+ ] },
985
+ ']':{ width:14, points:[
986
+ [9, 25],
987
+ [9, -7],
988
+ [-1, -1],
989
+ [10, 25],
990
+ [10, -7],
991
+ [-1, -1],
992
+ [3, 25],
993
+ [10, 25],
994
+ [-1, -1],
995
+ [3, -7],
996
+ [10, -7]
997
+ ] },
998
+ '^':{ width:16, points:[
999
+ [6, 15],
1000
+ [8, 18],
1001
+ [10, 15],
1002
+ [-1, -1],
1003
+ [3, 12],
1004
+ [8, 17],
1005
+ [13, 12],
1006
+ [-1, -1],
1007
+ [8, 17],
1008
+ [8, 0]
1009
+ ] },
1010
+ '_':{ width:16, points:[
1011
+ [0, -2],
1012
+ [16, -2]
1013
+ ] },
1014
+ '`':{ width:10, points:[
1015
+ [6, 21],
1016
+ [5, 20],
1017
+ [4, 18],
1018
+ [4, 16],
1019
+ [5, 15],
1020
+ [6, 16],
1021
+ [5, 17]
1022
+ ] },
1023
+ 'a':{ width:19, points:[
1024
+ [15, 14],
1025
+ [15, 0],
1026
+ [-1, -1],
1027
+ [15, 11],
1028
+ [13, 13],
1029
+ [11, 14],
1030
+ [8, 14],
1031
+ [6, 13],
1032
+ [4, 11],
1033
+ [3, 8],
1034
+ [3, 6],
1035
+ [4, 3],
1036
+ [6, 1],
1037
+ [8, 0],
1038
+ [11, 0],
1039
+ [13, 1],
1040
+ [15, 3]
1041
+ ] },
1042
+ 'b':{ width:19, points:[
1043
+ [4, 21],
1044
+ [4, 0],
1045
+ [-1, -1],
1046
+ [4, 11],
1047
+ [6, 13],
1048
+ [8, 14],
1049
+ [11, 14],
1050
+ [13, 13],
1051
+ [15, 11],
1052
+ [16, 8],
1053
+ [16, 6],
1054
+ [15, 3],
1055
+ [13, 1],
1056
+ [11, 0],
1057
+ [8, 0],
1058
+ [6, 1],
1059
+ [4, 3]
1060
+ ] },
1061
+ 'c':{ width:18, points:[
1062
+ [15, 11],
1063
+ [13, 13],
1064
+ [11, 14],
1065
+ [8, 14],
1066
+ [6, 13],
1067
+ [4, 11],
1068
+ [3, 8],
1069
+ [3, 6],
1070
+ [4, 3],
1071
+ [6, 1],
1072
+ [8, 0],
1073
+ [11, 0],
1074
+ [13, 1],
1075
+ [15, 3]
1076
+ ] },
1077
+ 'd':{ width:19, points:[
1078
+ [15, 21],
1079
+ [15, 0],
1080
+ [-1, -1],
1081
+ [15, 11],
1082
+ [13, 13],
1083
+ [11, 14],
1084
+ [8, 14],
1085
+ [6, 13],
1086
+ [4, 11],
1087
+ [3, 8],
1088
+ [3, 6],
1089
+ [4, 3],
1090
+ [6, 1],
1091
+ [8, 0],
1092
+ [11, 0],
1093
+ [13, 1],
1094
+ [15, 3]
1095
+ ] },
1096
+ 'e':{ width:18, points:[
1097
+ [3, 8],
1098
+ [15, 8],
1099
+ [15, 10],
1100
+ [14, 12],
1101
+ [13, 13],
1102
+ [11, 14],
1103
+ [8, 14],
1104
+ [6, 13],
1105
+ [4, 11],
1106
+ [3, 8],
1107
+ [3, 6],
1108
+ [4, 3],
1109
+ [6, 1],
1110
+ [8, 0],
1111
+ [11, 0],
1112
+ [13, 1],
1113
+ [15, 3]
1114
+ ] },
1115
+ 'f':{ width:12, points:[
1116
+ [10, 21],
1117
+ [8, 21],
1118
+ [6, 20],
1119
+ [5, 17],
1120
+ [5, 0],
1121
+ [-1, -1],
1122
+ [2, 14],
1123
+ [9, 14]
1124
+ ] },
1125
+ 'g':{ width:19, points:[
1126
+ [15, 14],
1127
+ [15, -2],
1128
+ [14, -5],
1129
+ [13, -6],
1130
+ [11, -7],
1131
+ [8, -7],
1132
+ [6, -6],
1133
+ [-1, -1],
1134
+ [15, 11],
1135
+ [13, 13],
1136
+ [11, 14],
1137
+ [8, 14],
1138
+ [6, 13],
1139
+ [4, 11],
1140
+ [3, 8],
1141
+ [3, 6],
1142
+ [4, 3],
1143
+ [6, 1],
1144
+ [8, 0],
1145
+ [11, 0],
1146
+ [13, 1],
1147
+ [15, 3]
1148
+ ] },
1149
+ 'h':{ width:19, points:[
1150
+ [4, 21],
1151
+ [4, 0],
1152
+ [-1, -1],
1153
+ [4, 10],
1154
+ [7, 13],
1155
+ [9, 14],
1156
+ [12, 14],
1157
+ [14, 13],
1158
+ [15, 10],
1159
+ [15, 0]
1160
+ ] },
1161
+ 'i':{ width:8, points:[
1162
+ [3, 21],
1163
+ [4, 20],
1164
+ [5, 21],
1165
+ [4, 22],
1166
+ [3, 21],
1167
+ [-1, -1],
1168
+ [4, 14],
1169
+ [4, 0]
1170
+ ] },
1171
+ 'j':{ width:10, points:[
1172
+ [5, 21],
1173
+ [6, 20],
1174
+ [7, 21],
1175
+ [6, 22],
1176
+ [5, 21],
1177
+ [-1, -1],
1178
+ [6, 14],
1179
+ [6, -3],
1180
+ [5, -6],
1181
+ [3, -7],
1182
+ [1, -7]
1183
+ ] },
1184
+ 'k':{ width:17, points:[
1185
+ [4, 21],
1186
+ [4, 0],
1187
+ [-1, -1],
1188
+ [14, 14],
1189
+ [4, 4],
1190
+ [-1, -1],
1191
+ [8, 8],
1192
+ [15, 0]
1193
+ ] },
1194
+ 'l':{ width:8, points:[
1195
+ [4, 21],
1196
+ [4, 0]
1197
+ ] },
1198
+ 'm':{ width:30, points:[
1199
+ [4, 14],
1200
+ [4, 0],
1201
+ [-1, -1],
1202
+ [4, 10],
1203
+ [7, 13],
1204
+ [9, 14],
1205
+ [12, 14],
1206
+ [14, 13],
1207
+ [15, 10],
1208
+ [15, 0],
1209
+ [-1, -1],
1210
+ [15, 10],
1211
+ [18, 13],
1212
+ [20, 14],
1213
+ [23, 14],
1214
+ [25, 13],
1215
+ [26, 10],
1216
+ [26, 0]
1217
+ ] },
1218
+ 'n':{ width:19, points:[
1219
+ [4, 14],
1220
+ [4, 0],
1221
+ [-1, -1],
1222
+ [4, 10],
1223
+ [7, 13],
1224
+ [9, 14],
1225
+ [12, 14],
1226
+ [14, 13],
1227
+ [15, 10],
1228
+ [15, 0]
1229
+ ] },
1230
+ 'o':{ width:19, points:[
1231
+ [8, 14],
1232
+ [6, 13],
1233
+ [4, 11],
1234
+ [3, 8],
1235
+ [3, 6],
1236
+ [4, 3],
1237
+ [6, 1],
1238
+ [8, 0],
1239
+ [11, 0],
1240
+ [13, 1],
1241
+ [15, 3],
1242
+ [16, 6],
1243
+ [16, 8],
1244
+ [15, 11],
1245
+ [13, 13],
1246
+ [11, 14],
1247
+ [8, 14]
1248
+ ] },
1249
+ 'p':{ width:19, points:[
1250
+ [4, 14],
1251
+ [4, -7],
1252
+ [-1, -1],
1253
+ [4, 11],
1254
+ [6, 13],
1255
+ [8, 14],
1256
+ [11, 14],
1257
+ [13, 13],
1258
+ [15, 11],
1259
+ [16, 8],
1260
+ [16, 6],
1261
+ [15, 3],
1262
+ [13, 1],
1263
+ [11, 0],
1264
+ [8, 0],
1265
+ [6, 1],
1266
+ [4, 3]
1267
+ ] },
1268
+ 'q':{ width:19, points:[
1269
+ [15, 14],
1270
+ [15, -7],
1271
+ [-1, -1],
1272
+ [15, 11],
1273
+ [13, 13],
1274
+ [11, 14],
1275
+ [8, 14],
1276
+ [6, 13],
1277
+ [4, 11],
1278
+ [3, 8],
1279
+ [3, 6],
1280
+ [4, 3],
1281
+ [6, 1],
1282
+ [8, 0],
1283
+ [11, 0],
1284
+ [13, 1],
1285
+ [15, 3]
1286
+ ] },
1287
+ 'r':{ width:13, points:[
1288
+ [4, 14],
1289
+ [4, 0],
1290
+ [-1, -1],
1291
+ [4, 8],
1292
+ [5, 11],
1293
+ [7, 13],
1294
+ [9, 14],
1295
+ [12, 14]
1296
+ ] },
1297
+ 's':{ width:17, points:[
1298
+ [14, 11],
1299
+ [13, 13],
1300
+ [10, 14],
1301
+ [7, 14],
1302
+ [4, 13],
1303
+ [3, 11],
1304
+ [4, 9],
1305
+ [6, 8],
1306
+ [11, 7],
1307
+ [13, 6],
1308
+ [14, 4],
1309
+ [14, 3],
1310
+ [13, 1],
1311
+ [10, 0],
1312
+ [7, 0],
1313
+ [4, 1],
1314
+ [3, 3]
1315
+ ] },
1316
+ 't':{ width:12, points:[
1317
+ [5, 21],
1318
+ [5, 4],
1319
+ [6, 1],
1320
+ [8, 0],
1321
+ [10, 0],
1322
+ [-1, -1],
1323
+ [2, 14],
1324
+ [9, 14]
1325
+ ] },
1326
+ 'u':{ width:19, points:[
1327
+ [4, 14],
1328
+ [4, 4],
1329
+ [5, 1],
1330
+ [7, 0],
1331
+ [10, 0],
1332
+ [12, 1],
1333
+ [15, 4],
1334
+ [-1, -1],
1335
+ [15, 14],
1336
+ [15, 0]
1337
+ ] },
1338
+ 'v':{ width:16, points:[
1339
+ [2, 14],
1340
+ [8, 0],
1341
+ [-1, -1],
1342
+ [14, 14],
1343
+ [8, 0]
1344
+ ] },
1345
+ 'w':{ width:22, points:[
1346
+ [3, 14],
1347
+ [7, 0],
1348
+ [-1, -1],
1349
+ [11, 14],
1350
+ [7, 0],
1351
+ [-1, -1],
1352
+ [11, 14],
1353
+ [15, 0],
1354
+ [-1, -1],
1355
+ [19, 14],
1356
+ [15, 0]
1357
+ ] },
1358
+ 'x':{ width:17, points:[
1359
+ [3, 14],
1360
+ [14, 0],
1361
+ [-1, -1],
1362
+ [14, 14],
1363
+ [3, 0]
1364
+ ] },
1365
+ 'y':{ width:16, points:[
1366
+ [2, 14],
1367
+ [8, 0],
1368
+ [-1, -1],
1369
+ [14, 14],
1370
+ [8, 0],
1371
+ [6, -4],
1372
+ [4, -6],
1373
+ [2, -7],
1374
+ [1, -7]
1375
+ ] },
1376
+ 'z':{ width:17, points:[
1377
+ [14, 14],
1378
+ [3, 0],
1379
+ [-1, -1],
1380
+ [3, 14],
1381
+ [14, 14],
1382
+ [-1, -1],
1383
+ [3, 0],
1384
+ [14, 0]
1385
+ ] },
1386
+ '{':{ width:14, points:[
1387
+ [9, 25],
1388
+ [7, 24],
1389
+ [6, 23],
1390
+ [5, 21],
1391
+ [5, 19],
1392
+ [6, 17],
1393
+ [7, 16],
1394
+ [8, 14],
1395
+ [8, 12],
1396
+ [6, 10],
1397
+ [-1, -1],
1398
+ [7, 24],
1399
+ [6, 22],
1400
+ [6, 20],
1401
+ [7, 18],
1402
+ [8, 17],
1403
+ [9, 15],
1404
+ [9, 13],
1405
+ [8, 11],
1406
+ [4, 9],
1407
+ [8, 7],
1408
+ [9, 5],
1409
+ [9, 3],
1410
+ [8, 1],
1411
+ [7, 0],
1412
+ [6, -2],
1413
+ [6, -4],
1414
+ [7, -6],
1415
+ [-1, -1],
1416
+ [6, 8],
1417
+ [8, 6],
1418
+ [8, 4],
1419
+ [7, 2],
1420
+ [6, 1],
1421
+ [5, -1],
1422
+ [5, -3],
1423
+ [6, -5],
1424
+ [7, -6],
1425
+ [9, -7]
1426
+ ] },
1427
+ '|':{ width:8, points:[
1428
+ [4, 25],
1429
+ [4, -7]
1430
+ ] },
1431
+ '}':{ width:14, points:[
1432
+ [5, 25],
1433
+ [7, 24],
1434
+ [8, 23],
1435
+ [9, 21],
1436
+ [9, 19],
1437
+ [8, 17],
1438
+ [7, 16],
1439
+ [6, 14],
1440
+ [6, 12],
1441
+ [8, 10],
1442
+ [-1, -1],
1443
+ [7, 24],
1444
+ [8, 22],
1445
+ [8, 20],
1446
+ [7, 18],
1447
+ [6, 17],
1448
+ [5, 15],
1449
+ [5, 13],
1450
+ [6, 11],
1451
+ [10, 9],
1452
+ [6, 7],
1453
+ [5, 5],
1454
+ [5, 3],
1455
+ [6, 1],
1456
+ [7, 0],
1457
+ [8, -2],
1458
+ [8, -4],
1459
+ [7, -6],
1460
+ [-1, -1],
1461
+ [8, 8],
1462
+ [6, 6],
1463
+ [6, 4],
1464
+ [7, 2],
1465
+ [8, 1],
1466
+ [9, -1],
1467
+ [9, -3],
1468
+ [8, -5],
1469
+ [7, -6],
1470
+ [5, -7]
1471
+ ] },
1472
+ '~':{ width:24, points:[
1473
+ [3, 6],
1474
+ [3, 8],
1475
+ [4, 11],
1476
+ [6, 12],
1477
+ [8, 12],
1478
+ [10, 11],
1479
+ [14, 8],
1480
+ [16, 7],
1481
+ [18, 7],
1482
+ [20, 8],
1483
+ [21, 10],
1484
+ [-1, -1],
1485
+ [3, 8],
1486
+ [4, 10],
1487
+ [6, 11],
1488
+ [8, 11],
1489
+ [10, 10],
1490
+ [14, 7],
1491
+ [16, 6],
1492
+ [18, 6],
1493
+ [20, 7],
1494
+ [21, 10],
1495
+ [21, 12]
1496
+ ] }
1497
+ };
1498
+
1499
+ })());