-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSvgTreeEngine.js
More file actions
537 lines (506 loc) · 96.9 KB
/
SvgTreeEngine.js
File metadata and controls
537 lines (506 loc) · 96.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
// Information for text geometry; We use this in order to print variable names as pure geometry, i.e. without text. Variable names are composed of characters for which
// the whole German alphabet is supported (including "äAöÖüÜßẞ"), but only the special characters "()_'\". The special command prefix is automatically printed as '\'
// (but probably shouldn't occur in variable names). All unsupported characters are omitted when printing the variable names. So it is recommended to use a validator to
// restrict the input, or to implement support for all characters which can occur in variable names. Geometries were taken from a pdf document created by LaTeX.
class SymbolInfo {
constructor(width = 0, height = 0, preTransform = "", postTransform = "", path = "") {
this.width = width;
this.height = height;
this.preTransform = preTransform;
this.postTransform = postTransform;
this.path = path;
}
toString() {
return `<svg x="0" y="0" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="display: block;margin-left: auto;margin-right: auto;">\n<g fill="#000000" >\n<use xlink:href="#ref1" transform="${postTransform}" />\n</g>\n<defs>\n\t<path d="${path}" \tid="ref1"\n\ttransform="${preTransform}" />\n</defs>\n</svg>\n`;
}
}
// They all have to be internally handled by "\\" + <name> in _textLinks(), and are executed when cmdPrefix + <name> occurs in a variable name.
const __specialCommandNames = ["_"];
// Should only contain keys of single symbols.
const __characterPathData = new Map([
["\\", new SymbolInfo(7.0, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M528.6,-372.7 c-19.8,0 -36.7,12.2 -42.8,32.1 L67.2,1098.5 c-1.5,3 -1.5,7.6 -1.5,12.2 0,21.4 16.8,42.8 42.8,42.8 18.3,0 36.6,-12.2 41.2,-32.1 L569.9,-317.7 c1.5,-3 1.5,-7.6 1.5,-12.2 0,-21.4 -16.8,-42.8 -42.8,-42.8 z")],
["(", new SymbolInfo(7.0, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M527.1,-372.7 C278.1,-204.6 151.3,88.6 151.3,389.6 c0,302.5 126.8,595.8 375.8,763.9 l29,-33.6 C348.3,942.6 270.4,664.6 270.4,389.6 c0,-273.5 77.9,-551.4 285.7,-728.7 l-29,-33.6 z")],
[")", new SymbolInfo(7.0, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M151.3,-372.7 l-29.1,33.6 C330,-161.8 407.9,116.1 407.9,389.6 c0,275 -77.9,553 -285.7,730.3 l29.1,33.6 C400.3,985.4 527.1,692.1 527.1,389.6 c0,-301 -126.8,-594.2 -375.8,-762.3 z")],
["_", new SymbolInfo(7.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M15.3,-235.2 c-12.2,12.2 -12.2,55 0,67.2 l711.9,0 c12.2,-12.2 12.2,-55 0,-67.2 z")],
["'", new SymbolInfo(2.8, 16, "scale(0.001,-0.001)", "matrix(7,0,0,7,0,7.5)", "M182,58L93,90L298,804l218,10L182,58Z")],
["0", new SymbolInfo(7.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M380.4,0 c68.8,0 155.9,45.8 178.8,191 C576,288.8 576,392.6 576,507.2 c0,96.3 0,212.4 -15.3,297.9 C531.7,956.4 430.8,983.9 380.4,983.9 c-38.2,0 -152.8,-13.8 -181.8,-195.6 C186.4,705.8 186.4,605 186.4,507.2 c0,-90.1 0,-230.7 16.8,-322.3 C230.7,38.2 320.8,0 380.4,0 z m0,-33.5 C305.6,-33.5 194,-3 128.3,120.7 65.7,236.8 59.6,374.3 59.6,488.9 c0,122.2 7.6,241.4 56.5,346.8 62.7,142.1 174.2,181.8 265.8,181.8 64.2,0 189.5,-24.4 259.8,-171.1 C695.1,733.3 702.8,611.1 702.8,488.9 702.8,368.2 695.1,249 646.3,143.6 579,-1.4 462.9,-33.5 380.4,-33.5 z")],
["1", new SymbolInfo(7.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M145.1,0 l0,47.4 48.9,0 c137.5,0 142.1,18.3 142.1,73.3 l0,791.4 C256.7,872.4 166.5,872.4 136,872.4 l0,47.3 c48.9,0 183.3,0 278,97.8 35.2,0 35.2,-3.1 35.2,-39.7 l0,-852.5 c0,-56.5 4.6,-73.4 142.1,-73.4 l48.8,0 0,-47.3 -247.5,0 c-61.1,0 -194,0 -247.5,-4.6 z")],
["2", new SymbolInfo(7.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M76.4,0 c0,36.7 0,39.7 16.8,56.5 l293.3,327 c84.1,94.7 160.4,215.4 160.4,337.6 0,125.3 -65.6,249 -204.7,249 C253.6,970.1 171.1,913.6 136,814.3 c4.6,1.5 7.6,1.5 19.8,1.5 53.5,0 81,-39.7 81,-79.4 0,-62.6 -53.5,-81 -79.4,-81 -4.6,0 -81,0 -81,85.6 0,135.9 113,276.5 285.7,276.5 C548.5,1017.5 686,895.3 686,721.1 686,568.3 594.3,485.8 356,275 L194,117.6 l275,0 c33.6,0 134.5,0 145.2,12.3 15.2,22.9 25.9,90.1 33.6,135.9 l38.2,0 L643.2,0 z")],
["3", new SymbolInfo(7.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M372.8,-33.5 C206.3,-33.5 64.2,67.2 64.2,206.3 c0,67.2 48.9,88.6 85.5,88.6 44.3,0 85.6,-30.6 85.6,-85.6 0,-52.6 -38.9,-85.1 -85.9,-85.1 -4.9,0 -9.9,0.4 -15,1.1 C187.9,35.1 302.5,9.2 368.2,9.2 c67.2,0 172.6,44.3 172.6,252.1 C540.8,411 484.3,514.9 359,514.9 l-67.2,0 c-26,0 -36.7,0 -36.7,16.8 0,15.2 10.7,16.8 23,18.3 10.7,0 47.3,3.1 59.5,4.6 38.2,1.5 90.2,6.1 136,79.4 39.7,67.3 42.8,155.9 42.8,174.2 0,137.5 -84,171.1 -146.7,171.1 -55,0 -155.8,-19.9 -203.2,-94.7 22.9,0 94.8,0 94.8,-76.4 0,-44.3 -30.6,-77.9 -78,-77.9 -44.3,0 -77.9,29 -77.9,79.4 0,116.1 116.1,207.8 270.4,207.8 146.7,0 281.1,-85.6 281.1,-210.8 C656.9,686 568.3,579 443.1,537.8 601.9,505.7 698.2,386.5 698.2,261.3 c0,-155.9 -139,-294.8 -325.4,-294.8 z")],
["4", new SymbolInfo(7.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M458.3,304 l0,569.9 L85.6,304 z M301,0 l0,47.4 32.1,0 c113,0 116.1,16.8 116.1,71.8 l0,132.9 L42.8,256.7 l0,47.3 469,716.6 c12.2,18.3 16.8,18.3 30.6,18.3 24.4,0 24.4,-9.2 24.4,-39.7 l0,-695.2 152.8,0 0,-47.3 -152.8,0 0,-132.9 c0,-55 3.1,-71.9 116.1,-71.9 l32.1,0 L715,4.6 l-207.8,0 C443.1,4.6 363.6,4.6 301,0 z")],
["5", new SymbolInfo(7.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M352.9,-33.5 C181.8,-33.5 76.4,114.6 76.4,246 c0,70.3 53.5,80.9 74.9,80.9 50.4,0 76.3,-38.1 76.3,-74.8 0,-36.7 -25.9,-74.9 -76.3,-74.9 -16.9,0 -21.4,1.6 -26,3.1 C151.3,90.1 238.3,9.2 349.9,9.2 c70.2,0 126.8,39.7 163.4,99.3 C550,172.6 550,264.3 550,317.8 c0,76.4 -3.1,136 -27.5,192.5 -12.2,27.5 -50.4,97.8 -129.9,97.8 -123.7,0 -180.2,-82.5 -197,-107 -6.2,-9.2 -9.2,-13.7 -19.9,-13.7 -21.4,0 -21.4,12.2 -21.4,39.7 l0,452.2 c0,24.5 0,36.7 15.3,36.7 3,0 6.1,0 18.3,-4.6 C259.7,979.3 330,968.6 391.1,968.6 c102.4,0 177.2,30.6 207.8,44.3 7.6,4.6 10.7,4.6 12.2,4.6 10.7,0 15.3,-7.6 15.3,-16.8 0,-19.9 -107,-158.9 -294.9,-158.9 -48.9,0 -99.3,10.7 -129.8,19.9 l0,-297.9 c55,53.4 120.7,77.9 194,77.9 C560.7,641.7 686,488.9 686,307.1 686,113.1 530.1,-33.5 352.9,-33.5 z")],
["6", new SymbolInfo(7.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M383.5,9.2 c35.1,0 105.4,7.6 151.2,99.3 26,55 26,131.4 26,204.7 0,74.9 0,152.8 -27.5,209.3 -47.4,94.7 -117.6,94.7 -142.1,94.7 C253.6,617.2 204.7,464.4 204.7,345.3 c0,-27.5 0,-149.7 27.5,-221.5 9.2,-23 55,-114.6 151.3,-114.6 z m0,-42.7 C241.4,-33.5 64.2,74.9 64.2,482.8 c0,337.6 206.2,534.7 401.8,534.7 126.8,0 194,-73.3 194,-165 0,-59.6 -45.8,-73.3 -70.3,-73.3 -33.6,0 -70.3,22.9 -70.3,70.2 0,68.8 61.2,68.8 84.1,68.8 C569.9,970.1 505.7,979.3 469,979.3 c-77.9,0 -267.3,-55 -267.3,-441.5 l0,-36.7 c30.5,73.3 87.1,151.3 190.9,151.3 169.6,0 305.6,-146.7 305.6,-340.7 C698.2,110 553.1,-33.5 383.5,-33.5 z")],
["7", new SymbolInfo(7.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M339.2,-33.5 c-70.3,0 -70.3,68.6 -70.3,83.9 0,155.9 50.4,368.2 187.9,574.5 33.6,50.4 154.3,216.9 171.1,241.4 l-316.2,0 c-19.9,0 -139.1,0 -149.8,-9.2 C142.1,838.8 128.3,742.5 123.8,718.1 l-38.2,0 L136,1032.8 l38.2,0 c6.1,-29 9.1,-48.9 195.5,-48.9 l371.3,0 c0,-32.1 0,-35.1 -13.8,-53.5 L521,640.1 C453.8,545.4 432.4,414 426.3,378.9 414,296.4 409.4,212.4 409.4,128.3 l0,-77.9 c0,-15.3 0,-83.9 -70.2,-83.9 z")],
["8", new SymbolInfo(7.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M381.9,9.2 c125.3,0 239.9,79.4 239.9,192.5 0,93.2 -71.8,139 -114.6,168 L319.3,488.9 C189.4,417.1 140.6,319.3 140.6,230.7 140.6,103.9 250.6,9.2 381.9,9.2 z M438.5,576 c91.6,53.4 151.2,126.8 151.2,213.9 0,110 -97.8,189.4 -209.3,189.4 C271.9,979.3 172.6,915.1 172.6,821.9 172.6,796 178.8,744 249,698.2 L438.5,576 z M380.4,-33.5 C220,-33.5 64.2,68.8 64.2,230.7 c0,151.2 131.4,236.8 220,281.1 C246,537.8 189.4,576 172.6,594.3 c-64.1,71.8 -67.2,140.6 -67.2,168.1 0,142 123.8,255.1 276.5,255.1 139.1,0 275,-87.1 275,-227.6 C656.9,689 582.1,609.6 472.1,553.1 569.9,491.9 594.3,476.7 623.3,444.6 c58.1,-64.2 74.9,-132.9 74.9,-187.9 C698.2,93.2 553.1,-33.5 380.4,-33.5 z")],
["9", new SymbolInfo(7.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M371.3,368.2 c134.4,0 186.3,148.2 186.3,275 0,70.3 -6.1,166.5 -24.4,215.4 -26,68.8 -76.4,120.7 -146.7,120.7 C333.1,979.3 275,959.4 233.8,883.1 201.7,826.5 201.7,754.7 201.7,672.2 c0,-74.8 0,-151.2 27.5,-207.8 47.3,-96.2 117.6,-96.2 142.1,-96.2 z M314.7,-33.5 C184.9,-33.5 102.4,29 102.4,131.4 c0,59.6 45.8,73.3 70.2,73.3 33.7,0 70.3,-22.9 70.3,-70.3 0,-25.9 -12.2,-70.2 -79.4,-70.2 41.2,-52 123.7,-55 149.7,-55 88.6,0 247.5,70.2 247.5,427.7 l0,48.9 C525.6,397.2 462.9,333.1 369.7,333.1 198.6,333.1 64.2,482.8 64.2,673.8 c0,114.5 35.1,178.7 97.7,247.5 65.7,68.7 140.6,96.2 224.6,96.2 136,0 311.7,-103.9 311.7,-514.9 C698.2,174.2 511.8,-33.5 314.7,-33.5 z")],
["a", new SymbolInfo(7.4, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,-0.4,13)", "M267.4,16.8 c42.7,0 105.4,24.5 172.6,108.5 22.9,26 22.9,29 30.6,56.5 l76.3,299.5 c1.6,7.6 4.6,16.8 4.6,25.9 0,9.2 -21.4,134.5 -120.7,134.5 C369.7,641.7 301,585.1 253.6,495 c-35.1,-70.3 -84,-258.2 -84,-334.6 C169.6,100.8 191,16.8 267.4,16.8 z m-3.1,-33.5 C145.1,-16.7 61.1,84 61.1,227.6 c0,223.1 189.5,447.7 368.2,447.7 68.8,0 113.1,-41.3 140.6,-97.8 4.5,33.6 27.5,67.2 64.1,67.2 26,0 44.3,-15.3 44.3,-41.2 0,-6.1 0,-9.2 -10.7,-52 l-55,-213.9 C598.9,279.6 595.8,264.3 579,200.1 562.2,132.9 559.2,120.7 559.2,87.1 c0,-30.6 4.6,-70.3 45.8,-70.3 62.6,0 90.1,90.1 116.1,189.5 4.6,21.3 6.1,27.5 21.4,27.5 4.6,0 18.3,0 18.3,-15.3 C760.8,215.4 741,122.2 715,67.2 690.6,18.3 655.4,-16.7 601.9,-16.7 c-73.3,0 -126.8,50.3 -139,114.5 C371.3,-10.6 294.9,-16.7 264.3,-16.7 z")],
["b", new SymbolInfo(7.3, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M265.8,16.8 c59.6,0 129.9,55 180.3,157.4 27.5,58 77.9,233.7 77.9,323.9 0,97.7 -41.2,143.6 -96.2,143.6 -39.7,0 -108.5,-22.9 -183.4,-122.3 C230.7,502.6 230.7,499.6 221.5,466 L187.9,325.4 C163.5,229.2 163.5,200.1 163.5,171.1 c0,-113 50.4,-154.3 102.3,-154.3 z m0,-33.5 c-113,0 -194,94.6 -194,239.8 0,53.4 6.1,77.9 24.5,154.3 l125.2,498 c7.7,32.1 21.4,84 21.4,94.7 0,15.3 -3,26 -76.4,26 -22.9,0 -36.6,0 -36.6,18.3 0,27.5 16.8,29.1 29,30.6 39.7,3.1 151.2,15.3 186.4,15.3 19.8,0 19.8,-15.3 19.8,-16.8 L252.1,583.6 c45.8,47.4 108.5,91.7 178.7,91.7 C553.1,675.3 634,569.9 634,430.8 634,210.8 446.1,-16.7 265.8,-16.7 z")],
["c", new SymbolInfo(7.6, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M310.1,-16.7 C151.3,-16.7 62.6,103.9 62.6,241.4 c0,215.4 203.2,433.9 409.5,433.9 108.5,0 180.3,-56.5 180.3,-131.4 0,-61.1 -41.3,-97.8 -85.6,-97.8 -29,0 -56.5,16.8 -56.5,53.5 0,10.7 3,36.7 27.5,59.6 21.4,21.4 42.8,21.4 67.2,21.4 -21.4,41.2 -79.4,61.1 -131.4,61.1 -84,0 -168,-65.7 -215.4,-152.8 C206.3,394.2 175.7,246 175.7,183.3 175.7,91.7 216.9,16.8 313.2,16.8 c18.3,0 184.9,0 305.6,151.3 9.1,12.2 12.2,15.2 19.8,15.2 9.2,0 18.3,-10.7 18.3,-19.8 C656.9,145.1 528.6,-16.7 310.1,-16.7 z")],
["d", new SymbolInfo(8.0, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M267.4,16.8 c42.7,0 105.4,24.5 172.6,108.5 22.9,26 22.9,29 30.6,56.5 l76.3,299.5 c1.6,7.6 4.6,16.8 4.6,25.9 0,9.2 -21.4,134.5 -120.7,134.5 C369.7,641.7 301,585.1 253.6,495 c-35.1,-70.3 -84,-258.2 -84,-334.6 C169.6,100.8 191,16.8 267.4,16.8 z m-3.1,-33.5 C145.1,-16.7 61.1,84 61.1,227.6 c0,223.1 189.5,447.7 368.2,447.7 68.8,0 113.1,-41.3 140.6,-97.8 l91.6,362.1 4.6,30.5 c0,15.3 -3,26 -76.4,26 -22.9,0 -36.6,0 -36.6,18.3 0,19.9 9.1,27.5 21.3,29.1 26,3 171.2,16.8 194.1,16.8 19.8,0 19.8,-15.3 19.8,-16.8 L568.3,160.4 c-6.1,-26 -9.1,-36.6 -9.1,-73.3 0,-30.6 4.6,-70.3 45.8,-70.3 62.6,0 90.1,90.1 116.1,189.5 4.6,21.3 6.1,27.5 21.4,27.5 4.6,0 18.3,0 18.3,-15.3 C760.8,215.4 741,122.2 715,67.2 690.6,18.3 655.4,-16.7 601.9,-16.7 c-73.3,0 -126.8,50.3 -139,114.5 C371.3,-10.6 294.9,-16.7 264.3,-16.7 z")],
["e", new SymbolInfo(7.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M276.5,386.5 c62.7,0 307.1,0 307.1,158.9 0,52 -41.2,96.3 -113,96.3 -39.8,0 -197.1,-22.9 -256.7,-255.2 z M310.1,-16.7 C160.4,-16.7 70.3,103.9 70.3,259.7 c0,267.4 230.7,415.6 400.3,415.6 C576,675.3 634,612.6 634,545.4 634,524 626.4,433.9 519.4,388.1 443.1,356 330,352.9 285.7,352.9 l-81,0 C181.8,259.7 180.3,212.4 180.3,194 180.3,145.1 194,16.8 313.2,16.8 c18.3,0 184.9,0 305.6,151.3 9.1,12.2 12.2,15.2 19.8,15.2 9.2,0 18.3,-10.7 18.3,-19.8 C656.9,145.1 528.6,-16.7 310.1,-16.7 z")],
["f", new SymbolInfo(7.0, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,-1.55,13)", "M210.8,-313.1 C148.2,-313.1 81,-276.4 81,-207.7 c0,58.1 44.3,91.7 84,91.7 29,0 56.5,-18.3 56.5,-53.5 0,-22.9 -13.7,-77.9 -84,-82.5 29,-27.5 67.2,-27.5 73.3,-27.5 79.5,0 105.5,139 133,287.1 L458.3,611.1 l-100.8,0 c-29,0 -42.8,0 -42.8,18.3 0,29.1 16.8,29.1 45.9,29.1 l105.4,0 c36.6,192.5 41.2,207.8 50.4,239.8 45.8,151.3 142.1,178.8 194,178.8 62.7,0 132.9,-35.2 132.9,-105.4 C843.3,913.6 799,880 759.3,880 c-29,0 -56.5,18.3 -56.5,53.5 0,22.9 15.3,76.4 82.5,82.5 -29,27.5 -68.8,27.5 -74.9,27.5 -32.1,0 -58,-22.9 -71.8,-52 C629.4,973.2 608.1,864.7 601.9,832.6 l-32,-174.1 126.8,0 c25.9,0 41.2,0 41.2,-16.8 0,-30.6 -15.3,-30.6 -45.8,-30.6 l-131.4,0 L469,126.8 C467.5,116.1 432.4,-68.7 383.5,-164.9 356,-223 294.9,-313.1 210.8,-313.1 z")],
["g", new SymbolInfo(6.85, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,-1,13)", "M319.3,33.6 c44.3,0 91.7,27.5 123.8,55 33.6,29 68.7,67.2 77.9,107 l73.3,291.8 c1.5,6.1 4.6,15.2 4.6,22.9 0,7.6 -21.4,131.4 -122.2,131.4 -64.2,0 -129.9,-61.1 -171.1,-136 C264.3,427.8 220,247.5 220,174.2 220,113.1 242.9,33.6 319.3,33.6 z M226.1,-313.1 c-146.7,0 -203.2,30.6 -203.2,93.2 0,61.1 48.9,88.6 82.5,88.6 41.3,0 58.1,-29 58.1,-53.5 0,-25.9 -16.8,-65.7 -62.7,-79.4 42.8,-13.8 93.2,-15.3 122.3,-15.3 161.9,0 213.8,151.3 220,165 0,3.1 18.3,65.7 50.4,201.6 l-1.6,1.5 C476.7,71.8 404.9,0 314.7,0 204.7,0 111.5,90.1 111.5,241.4 c0,220 189.5,433.9 363.6,433.9 61.2,0 114.6,-39.7 142.1,-96.3 6.1,55 47.4,65.7 62.7,65.7 25.9,0 44.3,-15.3 44.3,-41.2 0,-10.7 -3.1,-18.4 -4.6,-27.5 L550,-102.3 C527.1,-193.9 417.1,-313.1 226.1,-313.1 z")],
["h", new SymbolInfo(8.75, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M128.3,-16.7 C114.6,-16.7 84,-9.1 84,26 c0,9.1 0,12.2 6.1,33.6 l221.6,880 4.6,30.5 c0,15.3 -3.1,26 -76.4,26 -23,0 -36.7,0 -36.7,18.3 0,27.5 16.8,29.1 29,30.6 39.7,3.1 151.3,15.3 186.4,15.3 19.9,0 19.9,-15.3 19.9,-16.8 L319.3,557.6 c56.5,70.3 129.9,117.7 226.1,117.7 114.6,0 175.7,-64.2 175.7,-163.5 0,-88.6 -68.7,-270.4 -93.2,-336.1 C614.2,142.1 600.4,105.4 600.4,67.2 c0,-35.1 10.7,-50.4 36.7,-50.4 84,0 132.9,108.5 155.8,189.5 7.7,22.9 7.7,27.5 22.9,27.5 4.6,0 18.4,0 18.4,-15.3 C834.2,206.3 777.6,-16.7 634,-16.7 c-71.8,0 -125.2,53.4 -125.2,125.2 0,30.5 7.6,48.9 19.8,84 36.7,93.2 94.7,259.7 94.7,342.2 0,55 -16.8,107 -82.5,107 -65.7,0 -113,-29.1 -146.6,-53.5 C342.2,546.9 294.9,461.4 290.3,447.6 c-1.5,-9.1 -13.8,-59.5 -16.8,-68.7 -7.7,-35.1 -16.8,-68.8 -26,-102.4 L213.9,139 184.9,22.9 C177.2,1.5 152.8,-16.7 128.3,-16.7 z")],
["i", new SymbolInfo(5.1, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,-0.2,13)", "M247.5,-16.7 c-73.3,0 -125.3,53.4 -125.3,125.2 0,32.1 19.9,82.5 35.2,122.2 24.4,65.7 93.2,242.9 105.4,282.6 6.1,15.3 16.8,47.4 16.8,79.5 0,48.9 -26,48.9 -38.2,48.9 -52,0 -113.1,-45.9 -154.3,-189.5 C79.4,427.8 77.9,424.7 62.6,424.7 c-3,0 -18.3,0 -18.3,15.3 0,13.8 58.1,235.3 201.7,235.3 76.4,0 125.3,-56.5 125.3,-125.3 0,-29 -7.7,-50.4 -19.9,-81 C336.1,427.8 336.1,424.7 317.8,380.4 L258.2,220 C223.1,126.8 213.9,105.4 213.9,67.2 c0,-35.1 10.7,-50.4 36.7,-50.4 77.9,0 128.3,93.2 155.8,189.5 7.6,22.9 7.6,27.5 22.9,27.5 4.6,0 18.3,0 18.3,-15.3 0,-13.8 -56.5,-235.2 -200.1,-235.2 z M352.9,873.9 c-36.6,0 -58,26 -58,55 0,41.2 41.2,81 82.5,81 35.1,0 56.5,-24.5 56.5,-55 0,-45.9 -45.8,-81 -81,-81 z")],
["j", new SymbolInfo(6.2, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,-0.6,13)", "M114.6,-313.1 c-73.3,0 -134.4,33.6 -134.4,94.7 0,55 44.2,87.1 82.4,87.1 41.3,0 58.1,-29 58.1,-53.5 0,-30.5 -22.9,-70.2 -68.8,-80.9 27.5,-13.8 50.5,-13.8 59.6,-13.8 85.6,0 158.9,87.1 187.9,203.2 L443.1,493.5 c6.1,25.9 10.7,42.8 10.7,77.9 0,64.2 -27.5,70.3 -48.9,70.3 -84.1,0 -154.3,-93.2 -192.5,-186.4 -12.3,-29 -13.8,-30.6 -27.5,-30.6 -3.1,0 -18.4,0 -18.4,15.3 0,13.8 87.1,235.3 242.9,235.3 C485.8,675.3 550,621.8 550,534.7 c0,-4.6 0,-25.9 -7.6,-56.5 L401.8,-80.9 C363.6,-232.1 221.5,-313.1 114.6,-313.1 z M524,873.9 c-35.1,0 -56.5,24.4 -56.5,55 0,45.8 45.8,81 81,81 36.6,0 58,-26 58,-55 0,-41.3 -41.2,-81 -82.5,-81 z")],
["k", new SymbolInfo(8.35, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M128.3,-16.7 C114.6,-16.7 84,-9.1 84,26 c0,9.1 0,12.2 6.1,33.6 l221.6,880 4.6,30.5 c0,15.3 -3.1,26 -76.4,26 -23,0 -36.7,0 -36.7,18.3 0,27.5 16.8,29.1 29,30.6 39.7,3.1 151.3,15.3 186.4,15.3 19.9,0 19.9,-15.3 19.9,-16.8 L279.6,398.8 c58,22.9 117.6,84 169.6,142 110,122.3 180.2,134.5 223,134.5 68.8,0 103.9,-50.4 103.9,-96.3 0,-59.6 -44.3,-93.2 -84,-93.2 -41.3,0 -58.1,29.1 -58.1,53.5 0,18.3 13.8,77.9 87.1,82.5 -3,3.1 -3,4.6 -6.1,6.1 -12.2,9.2 -13.7,9.2 -32.1,12.2 -3,1.6 -4.6,1.6 -13.7,1.6 C594.3,641.7 524,576 450.7,495 415.6,458.3 366.7,409.4 319.3,381.9 449.2,365.1 545.4,320.8 545.4,221.5 c0,-15.2 0,-21.4 -6.1,-47.3 C533.2,149.7 527.1,114.6 527.1,88.6 c0,-55 19.8,-71.8 48.9,-71.8 67.2,0 102.3,77.9 132.9,189.5 4.6,21.3 6.1,27.5 21.4,27.5 4.6,0 18.3,0 18.3,-15.3 0,-3.1 -16.8,-87.1 -55,-154.3 C660,7.6 618.8,-16.7 572.9,-16.7 c-79.4,0 -140.5,61 -140.5,151.1 0,16.9 3,35.2 6.1,53.5 4.6,15.3 4.6,21.4 4.6,32.1 0,100.8 -125.3,125.3 -177.3,129.9 C256.7,311.7 187.9,29 180.3,15.3 c-9.2,-18.3 -32.1,-32 -52,-32 z")],
["l", new SymbolInfo(4.85, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,-0.25,13)", "M206.3,-16.7 C134.4,-16.7 67.2,36.7 67.2,123.8 c0,24.4 3.1,35.1 7.7,51.9 L267.4,939.6 l4.5,30.5 c0,12.3 -1.5,26 -74.8,26 -22.9,0 -38.2,0 -38.2,16.8 0,29 16.8,30.6 29,32.1 39.7,3.1 151.3,15.3 186.4,15.3 19.9,0 19.9,-15.3 19.9,-16.8 L174.2,160.4 C166.5,131.4 165,123.8 165,87.1 c0,-21.4 0,-70.3 45.8,-70.3 61.1,0 90.2,90.1 116.1,189.5 4.6,21.3 6.2,27.5 21.4,27.5 4.6,0 18.4,0 18.4,-15.3 0,-3.1 -18.4,-91.7 -45.9,-149.7 C294.9,13.8 256.7,-16.7 206.3,-16.7 z")],
["m", new SymbolInfo(13.0, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M165,-16.7 c-22.9,0 -44.3,13.7 -44.3,41.1 0,7.7 9.2,42.8 13.7,65.7 l88.7,353 c19.8,79.4 24.4,96.2 24.4,128.3 0,58 -22.9,70.3 -47.4,70.3 -55,0 -85.5,-73.4 -111.5,-181.8 C79.4,426.3 77.9,424.7 62.6,424.7 c-3,0 -18.3,0 -18.3,15.3 0,4.6 19.9,94.7 47.4,148.2 13.7,27.5 42.7,87.1 113,87.1 68.8,0 132.9,-45.9 140.6,-132.9 26,35.1 100.8,132.9 238.3,132.9 38.2,0 87.1,-7.7 125.3,-39.7 42.8,-36.7 47.4,-88.7 48.9,-108.5 56.5,81 134.4,148.2 249,148.2 114.6,0 175.7,-64.2 175.7,-163.5 0,-87.1 -64.2,-256.7 -93.2,-336.1 -13.7,-33.6 -27.5,-70.3 -27.5,-108.5 0,-35.1 10.7,-50.4 36.7,-50.4 84,0 132.9,108.5 155.8,189.5 7.6,22.9 7.6,27.5 22.9,27.5 4.6,0 18.4,0 18.4,-15.3 0,-12.2 -56.6,-235.2 -200.2,-235.2 -71.8,0 -125.3,53.4 -125.3,125.2 0,30.5 6.2,47.3 19.9,84 30.6,81 94.7,255.1 94.7,342.2 0,55 -16.8,107 -82.5,107 C835.7,641.7 754.7,458.3 750.1,438.5 736.4,378.9 679.9,155.8 658.5,70.3 c-12.2,-48.9 -21.4,-87 -68.8,-87 -22.9,0 -44.3,13.7 -44.3,41.1 0,7.7 13.8,59.6 19.9,90.2 l30.5,116.1 42.8,177.2 c12.2,45.9 22.9,88.6 22.9,126.8 0,50.4 -13.7,107 -82.5,107 C433.9,641.7 352.9,502.6 330,455.3 c-1.5,-6.1 -13.7,-50.4 -19.9,-76.4 C302.5,343.8 293.3,310.1 284.2,276.5 L250.6,139 C241.4,100.8 223.1,29 221.5,26 210.8,-4.5 183.3,-16.7 165,-16.7 z")],
["n", new SymbolInfo(9.15, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M165,-16.7 c-22.9,0 -44.3,13.7 -44.3,41.1 0,7.7 9.2,42.8 13.7,65.7 l88.7,353 c19.8,79.4 24.4,96.2 24.4,128.3 0,50.4 -16.8,70.3 -47.4,70.3 -55,0 -85.5,-73.4 -111.5,-181.8 C79.4,426.3 77.9,424.7 62.6,424.7 c-3,0 -18.3,0 -18.3,15.3 0,6.1 21.4,96.3 45.8,148.2 15.3,27.5 44.3,87.1 114.6,87.1 70.3,0 132.9,-47.4 140.6,-132.9 26,35.1 100.8,132.9 238.3,132.9 110,0 175.7,-61.1 175.7,-163.5 0,-87.1 -64.2,-255.1 -93.2,-336.1 C652.4,142.1 638.6,105.4 638.6,67.2 c0,-35.1 10.7,-50.4 36.7,-50.4 74.8,0 125.3,85.6 155.8,189.5 7.7,22.9 7.7,27.5 22.9,27.5 4.6,0 18.4,0 18.4,-15.3 0,-12.2 -56.6,-235.2 -200.2,-235.2 -71.8,0 -125.3,53.4 -125.3,125.2 0,16.8 1.6,35.1 15.3,70.3 24.5,65.6 99.3,261.2 99.3,355.9 0,50.4 -13.7,107 -82.5,107 C433.9,641.7 352.9,502.6 330,455.3 c-1.5,-6.1 -13.7,-50.4 -19.9,-76.4 C302.5,343.8 293.3,310.1 284.2,276.5 L250.6,139 C241.4,100.8 223.1,29 221.5,26 210.8,-4.5 183.3,-16.7 165,-16.7 z")],
["o", new SymbolInfo(8.0, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M308.6,16.8 c70.3,0 154.3,52 207.8,140.6 58,99.3 88.6,259.7 88.6,319.3 0,91.6 -45.8,165 -134.4,165 -42.8,0 -129.9,-22.9 -206.3,-140.6 C215.4,423.2 175.7,258.2 175.7,183.3 175.7,64.2 242.9,16.8 308.6,16.8 z m-1.5,-33.5 C165,-16.7 62.6,90.1 62.6,241.4 c0,216.9 204.8,433.9 409.5,433.9 137.5,0 244.4,-99.3 244.4,-258.2 C716.5,194 510.3,-16.7 307.1,-16.7 z")],
["p", new SymbolInfo(8.0, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M378.9,21.4 c56.5,0 129.9,50.4 181.8,157.4 27.5,58 77.9,233.7 77.9,323.8 0,90.2 -36.7,143.7 -97.8,143.7 -25.9,0 -70.2,-10.7 -123.7,-58.1 C389.6,565.3 348.3,522.5 337.6,481.3 L262.8,181.8 c-4.6,-18.3 -4.6,-21.4 -4.6,-24.4 0,-9.2 19.9,-136 120.7,-136 z M-28.9,-296.3 c-12.3,0 -19.9,6.1 -19.9,18.3 0,29.1 16.8,29.1 35.1,29.1 67.2,0 70.2,10.7 82.5,62.6 L239.9,498.1 c6.1,25.9 10.7,42.7 10.7,77.9 0,58 -21.4,70.3 -47.4,70.3 -55,0 -85.6,-73.4 -111.5,-181.9 C82.5,430.8 81,429.3 65.7,429.3 c-3.1,0 -18.3,0 -18.3,15.3 0,4.6 19.8,96.2 47.3,148.2 13.8,27.5 42.8,87.1 113.1,87.1 56.5,0 122.2,-32.1 137.5,-114.6 C395.7,624.9 469,679.9 545.4,679.9 661.5,679.9 748.6,579 748.6,435.4 c0,-224.6 -191,-447.5 -368.2,-447.5 -77.9,0 -120.7,53.4 -140.5,97.7 C229.2,47.4 165,-201.6 165,-219.9 c0,-13.8 0,-24.4 76.4,-24.4 21.4,0 36.7,0 36.7,-16.9 0,-30.5 -19.9,-30.5 -27.5,-30.5 l-151.3,0 c-42.8,0 -87.1,-4.6 -128.2,-4.6 z")],
["q", new SymbolInfo(7.65, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M267.4,21.4 c85.5,0 171.1,97.8 194,140.5 C466,168.1 550,502.6 550,511.8 c0,10.7 -21.4,134.5 -120.7,134.5 C366.7,646.3 287.2,582.1 239.9,469 213.9,404.9 169.6,238.3 169.6,165 c0,-26 6.1,-143.6 97.8,-143.6 z M249,-296.3 c-19.8,0 -19.8,15.3 -19.8,16.8 0,30.6 15.2,30.6 35.1,30.6 85.6,1.5 97.8,7.6 110,50.4 4.6,13.7 55,219.9 68.8,273.4 -55,-55 -114.6,-91.6 -180.3,-91.6 C151.3,-16.7 61.1,77.9 61.1,227.6 c0,221.6 187.9,447.7 368.2,447.7 48.9,0 108.5,-24.5 142.1,-107 26,44.3 87.1,105.5 103.9,105.5 10.7,0 15.3,-9.2 15.3,-15.3 L479.7,-186.3 c-3,-13.7 -6.1,-22.9 -6.1,-33.6 0,-13.8 0,-24.4 73.3,-24.4 24.5,0 39.8,0 39.8,-16.9 0,-30.5 -19.9,-30.5 -27.5,-30.5 l-157.4,0 c-50.4,0 -103.9,-4.6 -152.8,-4.6 z")],
["r", new SymbolInfo(7.0, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M165,-16.7 c-22.9,0 -44.3,13.7 -44.3,41.1 0,7.7 9.2,42.8 13.7,65.7 l88.7,353 c19.8,79.4 24.4,96.2 24.4,128.3 0,58 -21.4,70.3 -47.4,70.3 -55,0 -85.5,-73.4 -111.5,-181.8 C79.4,426.3 77.9,424.7 62.6,424.7 c-3,0 -18.3,0 -18.3,15.3 0,4.6 19.9,96.3 47.4,148.2 13.7,27.5 42.7,87.1 113,87.1 71.8,0 126.8,-48.9 139.1,-117.7 29,42.8 96.2,117.7 195.5,117.7 77.9,0 126.8,-45.9 126.8,-99.3 0,-55 -42.8,-90.2 -84,-90.2 -41.3,0 -58.1,29.1 -58.1,53.5 0,39.7 33.6,76.4 79.5,84 -1.6,0 -24.5,18.4 -64.2,18.4 -65.7,0 -110,-39.8 -122.2,-50.4 C380.4,557.6 337.6,485.8 331.5,466 322.4,424.7 294.9,317.8 282.6,267.4 276.5,239.9 224.6,32.1 221.5,26 210.8,-4.5 183.3,-16.7 165,-16.7 z")],
["s", new SymbolInfo(6.9, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,-0.4,13)", "M297.9,-16.7 c-131.4,0 -218.5,61 -218.5,148.1 0,68.7 45.9,100.8 85.6,100.8 32.1,0 56.5,-18.3 56.5,-53.4 0,-39.6 -32.7,-81.9 -83.6,-81.9 -4.1,0 -8.3,0.3 -12.6,0.9 35.1,-81 152.8,-81 174.1,-81 183.4,0 218.5,128.3 218.5,168.1 0,84 -79.4,100.8 -158.9,116.1 -44.3,9.1 -157.3,32.1 -157.3,151.2 0,67.2 56.5,223.1 258.2,223.1 116.1,0 181.8,-62.7 181.8,-131.4 0,-59.6 -36.7,-85.6 -70.3,-85.6 -33.6,0 -47.4,23 -47.4,44.3 0,33.7 30.6,67.3 73.4,68.8 -23,59.6 -99.3,70.3 -137.5,70.3 C325.4,641.7 288.8,548.5 288.8,504.2 c0,-68.8 61.1,-79.5 116.1,-91.7 67.2,-13.7 111.5,-21.4 152.7,-64.2 C576,330 605,291.8 605,236.8 605,168.1 545.4,-16.7 297.9,-16.7 z")],
["t", new SymbolInfo(5.7, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M236.8,-16.7 c-82.5,0 -140.5,58 -140.5,140.5 0,27.5 6.1,53.4 116.1,487.3 l-134.5,0 c-30.5,0 -42.8,0 -42.8,18.3 0,29.1 15.3,29.1 45.9,29.1 l143.6,0 59.6,242.9 c13.7,53.5 56.5,55 61.1,55 26,0 44.3,-15.3 44.3,-41.3 0,-9.1 -7.7,-39.7 -62.7,-256.6 l134.5,0 c27.5,0 42.8,0 42.8,-16.8 0,-30.6 -15.3,-30.6 -45.9,-30.6 l-143.6,0 L201.7,160.4 c-6.1,-26 -9.2,-36.6 -9.2,-73.3 0,-50.4 15.3,-70.3 47.4,-70.3 51.9,0 132.9,36.7 198.6,195.6 7.6,16.8 9.1,21.4 22.9,21.4 6.1,0 18.3,0 18.3,-15.3 0,-12.2 -87.1,-235.2 -242.9,-235.2 z")],
["u", new SymbolInfo(8.8, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M352.9,-16.7 C270.4,-16.7 165,21.4 165,166.5 c0,74.9 32.1,169.6 88.6,320.9 9.2,22.9 26,67.2 26,103.9 0,48.8 -24.5,50.4 -38.2,50.4 C183.3,641.7 125.3,585.1 87.1,452.2 79.4,427.8 77.9,424.7 62.6,424.7 c-3,0 -18.3,0 -18.3,15.3 0,13.8 56.5,235.3 201.7,235.3 76.4,0 125.3,-56.5 125.3,-125.3 0,-29 -7.7,-50.4 -26,-96.2 C305.6,348.3 262.8,227.6 262.8,142.1 c0,-56.5 15.3,-125.3 94.7,-125.3 C469,16.8 530.1,139 531.7,145.1 c18.3,81 85.5,348.4 114.6,459.9 12.2,51.9 51.9,53.5 59.5,53.5 23,0 44.3,-13.8 44.3,-41.3 0,-9.1 -15.2,-67.2 -22.9,-102.3 -6.1,-23 -21.4,-81 -25.9,-103.9 L658.5,246 C646.3,192.5 627.9,120.7 627.9,87.1 c0,-50.4 15.3,-70.3 47.4,-70.3 64.1,0 93.2,103.9 114.6,189.5 4.5,21.3 6.1,27.5 21.4,27.5 4.5,0 18.3,0 18.3,-15.3 0,-3.1 -19.9,-96.3 -45.8,-151.3 C759.3,18.3 724.2,-16.7 670.7,-16.7 c-65.7,0 -119.2,39.6 -136,102.3 C508.8,51.9 453.8,-16.7 352.9,-16.7 z")],
["v", new SymbolInfo(8.25, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M371.3,-16.7 C301,-16.7 166.5,7.6 166.5,172.6 c0,65.7 19.9,136 87.1,313.2 10.7,27.5 26,68.8 26,107 0,48.9 -26,48.9 -38.2,48.9 -44.3,0 -110,-35.2 -154.3,-189.5 C79.4,427.8 77.9,424.7 62.6,424.7 c-3,0 -18.3,0 -18.3,15.3 0,13.8 58.1,235.3 201.7,235.3 76.4,0 125.3,-56.5 125.3,-125.3 0,-29 -7.7,-50.4 -18.4,-76.4 C305.6,346.8 264.3,235.3 264.3,149.7 264.3,70.3 299.4,16.8 377.4,16.8 c178.7,0 271.9,349.9 271.9,414 0,55 -19.9,94.8 -51.9,125.3 -16.8,16.8 -24.5,26 -24.5,45.8 0,33.7 36.7,73.4 74.9,73.4 27.5,0 67.2,-24.5 67.2,-107 0,-79.4 -87.1,-585 -343.7,-585 z")],
["w", new SymbolInfo(10.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M383.5,-16.7 c-114.6,0 -217,53.4 -217,192.4 0,58.1 18.4,128.3 85.6,308.6 10.7,26 27.5,68.8 27.5,107 0,48.8 -24.5,50.4 -38.2,50.4 C187.9,641.7 128.3,594.3 87.1,452.2 79.4,427.8 77.9,424.7 62.6,424.7 c-3,0 -18.3,0 -18.3,15.3 0,13.8 56.5,235.3 201.7,235.3 74.8,0 125.3,-56.5 125.3,-125.3 0,-30.6 -9.2,-51.9 -26,-97.8 C273.5,264.3 265.8,204.7 265.8,155.8 c0,-25.9 0,-139 122.3,-139 59.5,0 105.4,47.4 140.5,128.3 -1.5,7.7 -1.5,10.7 -1.5,27.5 0,27.5 3,55 13.7,100.9 10.7,39.7 82.5,331.5 87.1,342.2 10.7,30.6 38.2,42.8 56.5,42.8 23,0 44.4,-13.8 44.4,-41.3 0,-9.1 -15.3,-65.7 -23,-99.3 L641.7,261.3 C635.6,239.9 624.9,192.5 624.9,149.7 c0,-87.1 41.2,-132.9 113,-132.9 74.9,0 128.4,53.5 168.1,134.5 39.7,77.9 84,227.6 84,279.5 0,73.4 -38.2,113.1 -55,129.9 -13.7,12.2 -22.9,21.4 -22.9,41.2 0,33.7 38.2,73.4 76.4,73.4 25.9,0 67.2,-22.9 67.2,-107 0,-73.3 -48.9,-278 -100.8,-397.2 C915.1,79.4 847.9,-16.7 733.3,-16.7 c-45.8,0 -151.2,9.2 -190.9,106.8 C481.3,-16.7 409.4,-16.7 383.5,-16.7 z")],
["x", new SymbolInfo(8.6, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M187.9,-16.7 C120.7,-16.7 44.3,13.8 44.3,84 c0,48.9 38.2,88.6 84,88.6 23,0 56.6,-12.2 56.6,-53.4 0,-42.8 -33.6,-74.9 -71.8,-82.5 32,-19.9 67.2,-19.9 76.3,-19.9 67.3,0 120.7,64.2 145.2,158.9 56.5,213.9 82.5,316.2 82.5,363.6 0,88.6 -53.5,102.4 -82.5,102.4 -52,0 -152.8,-38.2 -204.7,-200.2 C126.8,427.8 122.2,424.7 110,424.7 c-3.1,0 -18.3,0 -18.3,15.3 0,38.2 87.1,235.3 245.9,235.3 44.3,0 126.8,-15.3 165,-116.1 18.4,35.1 71.8,116.1 160.5,116.1 51.9,0 142,-21.4 142,-100.9 0,-61.1 -48.8,-88.6 -82.5,-88.6 -41.2,0 -58,29.1 -58,53.5 0,36.7 30.5,74.9 73.3,82.5 -32.1,19.9 -68.7,19.9 -76.4,19.9 C554.6,641.7 519.4,501.1 510.3,461.4 l-52,-209.3 C441.5,184.9 432.4,151.3 432.4,117.6 c0,-51.9 24.4,-100.8 84,-100.8 48.9,0 152.8,36.7 203.2,200.1 3,10.7 6.1,16.9 19.8,16.9 4.6,0 18.4,0 18.4,-15.3 0,-38.2 -87.1,-235.2 -244.5,-235.2 -91.6,0 -146.6,59.5 -165,116 -4.5,-9.2 -59.5,-116 -160.4,-116 z")],
["y", new SymbolInfo(8.1, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M238.3,-313.1 c-94.7,0 -161.9,56.5 -161.9,132.9 0,74.9 50.4,99.3 85.5,99.3 15.3,0 56.6,-6.1 56.6,-53.4 0,-29.1 -15.3,-48.9 -30.6,-62.7 -21.4,-18.3 -41.2,-18.3 -65.7,-18.3 26,-59.6 94.7,-64.2 116.1,-64.2 70.3,0 128.4,44.3 168.1,96.3 61.1,80.9 79.4,155.8 99.3,235.1 C462.9,9.2 411,-16.7 351.4,-16.7 261.3,-16.7 165,29 165,165 c0,71.8 27.5,158.9 88.6,320.8 10.7,29.1 26,68.8 26,107 0,48.9 -26,48.9 -38.2,48.9 -52,0 -113.1,-45.9 -154.3,-189.5 C79.4,427.8 77.9,424.7 62.6,424.7 c-3,0 -18.3,0 -18.3,15.3 0,13.8 56.5,235.3 201.7,235.3 76.4,0 125.3,-56.5 125.3,-125.3 0,-30.6 -6.2,-47.4 -30.6,-110 C288.8,305.6 262.8,210.8 262.8,140.6 262.8,84 279.6,16.8 357.5,16.8 c100.8,0 166.5,107 172.6,129.9 l68.8,275 c9.2,41.2 19.9,82.5 30.5,122.2 6.2,27.5 18.4,74.9 21.4,82.5 13.8,22.9 38.2,32.1 53.5,32.1 22.9,0 44.3,-13.8 44.3,-41.3 0,-10.7 0,-13.7 -6.1,-35.1 L595.8,-1.4 C553.1,-174.1 395.7,-313.1 238.3,-313.1 z")],
["z", new SymbolInfo(7.8, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M84,-16.7 c-3,0 -18.3,0 -18.3,15.3 0,10.6 53.5,97.7 157.4,200 L360.6,326.9 c29,24.5 157.3,134.5 212.3,200.2 -39.7,0 -56.5,0 -117.6,22.9 -35.2,12.2 -64.2,22.9 -96.3,22.9 -12.2,0 -100.8,-1.5 -129.8,-71.8 -3.1,-9.2 -6.1,-16.8 -19.9,-16.8 -13.7,0 -18.3,9.2 -18.3,16.8 0,32.1 70.3,174.2 184.8,174.2 50.5,0 76.4,-30.6 105.5,-65.7 22.9,-26 41.2,-48.9 77.9,-48.9 36.6,0 68.7,24.4 114.6,97.8 7.6,13.7 12.2,16.8 22.9,16.8 3,0 16.8,0 16.8,-15.3 0,-6.1 -33.6,-79.4 -178.8,-221.5 C479.7,383.5 385,302.5 385,301 330,253.6 285.7,215.4 203.2,126.8 c13.7,4.6 38.2,4.6 41.2,4.6 32.1,0 55,-6.1 107,-26 C383.5,94.7 411,85.6 441.5,85.6 c50.4,0 148.2,29 183.4,128.3 4.5,10.7 7.6,19.9 21.4,19.9 12.2,0 18.3,-7.7 18.3,-15.3 C664.6,177.2 576,-16.7 424.7,-16.7 c-44.3,0 -71.8,24.3 -97.8,56.4 C288.8,84 273.5,97.8 238.3,97.8 189.4,97.8 143.6,56.5 108.5,3.1 99.3,-13.7 96.3,-16.7 84,-16.7 z")],
["ä", new SymbolInfo(8.2, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,-0.1,13)", "M308.6,68.8 c48.9,0 166.5,128.3 241.4,265.8 38.2,97.8 53.5,259.7 53.5,259.7 -29.1,18.3 -62.7,29 -94.7,29 C368.2,623.3 241.4,377.4 241.4,215.4 c0,-85.5 15.3,-146.6 67.2,-146.6 z m-41.2,-84 C139,-15.2 119.2,105.4 119.2,191 c0,239.8 221.5,479.7 385,479.7 61.1,0 80.9,-4.6 122.2,-9.2 13.9,-3.4 29.7,-4.4 46.2,-4.4 19.8,0 40.7,1.4 60.7,1.4 L627.9,183.3 c-6.1,-29 -15.3,-71.8 -15.3,-85.5 0,-18.4 13.8,-21.4 18.4,-21.4 15.3,0 44.3,24.4 85.5,81 19.9,0 27.5,-10.7 35.2,-24.5 C711.9,45.8 650.8,-15.2 556.1,-15.2 c-51.9,0 -62.6,39.6 -62.6,68.7 0,18.3 4.6,48.9 15.3,84 l19.8,64.2 -3,3 C433.9,68.8 348.3,-15.2 267.4,-15.2 z M420.1,805.1 c-38.2,0 -70.2,32.1 -70.2,70.3 0,38.2 32,70.3 70.2,70.3 38.2,0 70.3,-32.1 70.3,-70.3 0,-38.2 -32.1,-70.3 -70.3,-70.3 z m244.5,0 c-38.2,0 -70.3,32.1 -70.3,70.3 0,38.2 32.1,70.3 70.3,70.3 38.2,0 70.3,-32.1 70.3,-70.3 0,-38.2 -32.1,-70.3 -70.3,-70.3 z")],
["ö", new SymbolInfo(8.05, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,-0.1,13)", "M356,41.3 c56.5,0 119.1,27.5 161.9,93.1 56.5,85.6 65.7,217 65.7,278.1 0,45.8 -4.6,102.4 -24.4,140.6 -21.4,42.7 -45.9,67.2 -91.7,67.2 C305.6,620.3 246,397.2 246,259.7 246,99.3 311.7,41.3 356,41.3 z M333.1,-15.2 C139,-15.2 119.2,166.5 119.2,247.5 c0,183.3 120.7,423.2 375.8,423.2 187.9,0 215.4,-137.5 215.4,-247.5 C710.4,242.9 606.5,81 473.6,13.8 c-44.3,-22.9 -91.7,-29 -140.5,-29 z m27.5,820.3 c-38.2,0 -70.3,32.1 -70.3,70.3 0,38.2 32.1,70.3 70.3,70.3 38.2,0 70.2,-32.1 70.2,-70.3 0,-38.2 -32,-70.3 -70.2,-70.3 z m244.4,0 c-38.2,0 -70.3,32.1 -70.3,70.3 0,38.2 32.1,70.3 70.3,70.3 38.2,0 70.3,-32.1 70.3,-70.3 0,-38.2 -32.1,-70.3 -70.3,-70.3 z")],
["ü", new SymbolInfo(8.4, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,-0.1,13)", "M285.7,-15.2 c-53.5,0 -102.4,35.1 -102.4,122.1 0,29.1 4.6,62.7 15.3,102.4 L265.8,466 c10.7,39.7 19.9,73.3 19.9,87.1 0,18.3 -4.6,25.9 -15.3,25.9 C255.1,579 204.7,548.5 165,502.6 c-21.4,0 -30.6,12.3 -35.1,26 70.2,90.2 157.3,142.1 230.7,142.1 45.8,0 55,-21.4 55,-50.4 0,-29 -19.9,-91.7 -32.1,-140.6 l-65.7,-249 C307.1,189.4 304,157.4 304,132.9 c0,-41.2 18.4,-56.5 45.9,-56.5 76.4,0 151.2,108.5 264.3,301 l44.3,168 c15.3,58.1 12.2,125.3 70.3,125.3 48.8,0 64.1,-15.3 64.1,-41.3 0,-18.3 -13.7,-64.1 -19.8,-91.6 L687.5,189.4 c-9.2,-39.7 -16.8,-73.3 -16.8,-87 0,-18.4 4.6,-26 15.3,-26 15.3,0 59.6,30.5 99.3,76.4 21.4,0 30.5,-12.2 35.1,-26 -70.3,-90.1 -139,-142 -212.3,-142 -45.9,0 -56.6,21.3 -56.6,50.3 0,29.1 12.3,91.7 26,140.6 l16.8,59.6 -4.6,3 C481.3,79.4 404.9,-15.2 285.7,-15.2 z M433.9,805.1 c-38.2,0 -70.3,32.1 -70.3,70.3 0,38.2 32.1,70.3 70.3,70.3 38.2,0 70.3,-32.1 70.3,-70.3 0,-38.2 -32.1,-70.3 -70.3,-70.3 z m244.4,0 c-38.2,0 -70.2,32.1 -70.2,70.3 0,38.2 32,70.3 70.2,70.3 38.2,0 70.3,-32.1 70.3,-70.3 0,-38.2 -32.1,-70.3 -70.3,-70.3 z")],
["ß", new SymbolInfo(8.4, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M3.1,-363.5 c-105.4,0 -128.3,44.3 -128.3,73.3 0,22.9 15.3,48.9 53.5,48.9 30.5,0 51.9,-18.3 64.2,-36.7 12.1,-19.8 21.3,-35.1 41.1,-35.1 27.5,0 58.1,29 76.4,67.2 42.8,91.7 81,331.5 103.9,461.3 18.3,102.4 38.2,223.1 67.2,363.6 0,16.8 -3,16.8 -18.3,16.8 l-62.7,0 c-7.6,0 -12.2,3.1 -12.2,10.7 0,12.3 9.2,48.9 45.9,48.9 47.3,0 68.7,32.1 80.9,73.4 67.2,247.5 206.3,337.6 366.7,337.6 139,0 191,-73.3 191,-140.6 C872.4,800.6 747.1,701.3 634,627.9 l0,-3 C721.1,556.1 829.6,469 829.6,330 829.6,184.9 704.3,-15.2 519.4,-15.2 418.6,-15.2 391.1,32.1 391.1,85.6 c0,82.5 33.6,100.8 62.7,100.8 24.4,0 42.7,-12.2 42.7,-30.6 0,-53.4 -33.6,-61.1 -33.6,-87 0,-33.7 38.2,-33.7 68.8,-33.7 C605,35.1 689,184.9 689,308.6 689,421.7 624.9,524 536.3,605 l4.5,19.9 c39.8,25.9 209.3,148.2 209.3,300.9 0,56.6 -29,91.7 -93.2,91.7 C498.1,1017.5 452.2,840.3 415.6,675.3 l-23,-103.9 C313.2,209.3 268.9,-120.6 158.9,-278 114.6,-339.1 61.1,-363.5 3.1,-363.5 z")],
["A", new SymbolInfo(11.0, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M806.7,409.4 L757.8,913.6 456.8,409.4 z M73.3,0 C61.1,0 53.5,7.6 53.5,16.8 c0,29 13.7,29 32.1,30.6 67.2,4.5 126.8,25.9 187.9,128.3 l531.6,901.4 c9.2,15.3 15.3,26 39.8,26 25.9,0 25.9,-6.2 29,-36.7 L967.1,111.5 c4.6,-44.3 4.6,-55 99.3,-55 19.9,0 35.1,0 35.1,-16.8 C1101.5,9.2 1083.2,9.2 1074,9.2 l-172.6,0 C838.8,9.2 773.1,4.6 710.4,4.6 c-3,0 -21.4,0 -21.4,16.8 0,30.5 15.3,30.5 36.7,30.5 30.6,0 110,4.6 110,50.5 0,15.2 -21.4,223 -24.4,255.1 l-383.5,0 L311.7,161.9 C299.4,140.6 290.3,123.8 290.3,105.4 c0,-38.2 36.6,-50.4 71.8,-53.5 10.7,0 24.4,-1.5 24.4,-18.3 0,-29 -19.8,-29 -29,-29 l-152.8,0 C161.9,4.6 114.6,0 73.3,0 z")],
["B", new SymbolInfo(11.1, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M614.2,47.4 c180.2,0 316.2,148.2 316.2,299.4 0,65.7 -29,178.8 -175.7,178.8 l-288.7,0 L360.6,99.3 C352.9,71.8 352.9,68.8 352.9,64.2 c0,-12.3 4.6,-13.8 19.9,-15.3 9.1,-1.5 12.2,-1.5 33.6,-1.5 z m84,511.8 c186.4,0 317.8,145.1 317.8,279.6 0,67.2 -32.1,157.3 -166.6,157.3 l-197,0 c-65.7,0 -68.8,-4.6 -82.5,-58 L475.1,559.2 z M105.4,0 C77.9,0 64.2,0 64.2,16.8 c0,30.6 15.2,30.6 41.2,30.6 120.7,0 123.8,12.2 139,71.8 L449.2,939.6 c4.6,18.3 6.1,22.9 6.1,29 0,19.9 -13.8,21.4 -41.3,24.5 -25.9,3 -55,3 -58,3 -29.1,0 -42.8,0 -42.8,16.8 0,30.6 15.3,30.6 44.3,30.6 l513.3,0 c183.4,0 284.2,-97.8 284.2,-210.9 C1155,687.5 994.6,574.4 835.7,545.4 983.9,528.6 1072.5,440 1072.5,330 1072.5,180.3 892.2,0 650.8,0 z")],
["C", new SymbolInfo(11.1, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M490.4,-33.5 c-233.7,0 -414,166.4 -414,418.5 0,354.4 343.7,692.1 684.4,692.1 169.6,0 239.9,-114.6 253.6,-136 l107,117.7 c16.8,16.8 18.3,18.3 22.9,18.3 13.8,0 16.8,-10.7 16.8,-15.3 L1064.9,672.2 c-7.7,-27.5 -7.7,-30.5 -27.5,-30.5 -6.1,0 -23,0 -23,15.2 0,15.3 4.6,16.9 4.6,78 0,177.2 -90.1,294.8 -245.9,294.8 -136,0 -279.6,-76.4 -372.8,-184.8 C247.5,666.1 215.4,418.6 215.4,331.5 215.4,93.2 377.4,13.8 514.9,13.8 c79.4,0 175.7,25.9 281.1,111.5 105.4,88.6 140.5,197.1 154.3,241.4 3,12.2 10.7,15.2 19.8,15.2 3.1,0 18.4,0 18.4,-15.2 0,-4.6 -26,-143.6 -168.1,-268.9 C739.4,27.5 623.3,-33.5 490.4,-33.5 z")],
["D", new SymbolInfo(11.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M582.1,47.4 C770,47.4 890.7,163.5 935,220 c129.9,168.1 160.4,418.6 160.4,493.5 0,201.6 -126.8,282.6 -276.5,282.6 l-163.5,0 c-65.7,0 -68.7,-4.6 -82.5,-58 L363.6,99.3 C356,71.8 356,68.8 356,64.2 c0,-12.3 4.6,-13.8 19.8,-15.3 9.2,-1.5 12.3,-1.5 33.6,-1.5 z M103.9,0 C74.9,0 61.1,0 61.1,18.3 c0,29.1 16.8,29.1 42.8,29.1 120.7,0 123.7,12.2 139,71.8 L447.6,939.6 c4.6,18.3 6.2,22.9 6.2,29 0,16.8 -9.2,21.4 -33.7,24.5 -18.3,1.5 -45.8,3 -65.7,3 -30.5,0 -44.3,0 -44.3,18.3 0,29.1 16.8,29.1 45.9,29.1 l513.3,0 c229.2,0 359,-171.1 359,-386.6 C1228.3,322.4 927.4,0 609.6,0 z")],
["E", new SymbolInfo(11.2, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M100.8,0 C71.8,0 58.1,0 58.1,18.3 c0,29.1 16.8,29.1 42.7,29.1 120.7,0 123.8,12.2 139.1,71.8 L441.5,927.4 c7.7,27.5 7.7,30.5 7.7,36.6 0,27.5 -42.8,27.5 -99.3,27.5 -29.1,0 -42.8,0 -42.8,16.8 0,30.6 15.3,30.6 45.8,30.6 l771.5,0 c38.2,0 45.9,0 41.3,-41.3 L1135.1,733.3 c-3,-29 -4.5,-38.2 -21.3,-38.2 -13.8,0 -18.4,10.7 -18.4,18.4 0,7.6 1.5,18.3 1.5,27.5 6.2,41.2 6.2,44.3 6.2,80.9 0,125.3 -45.9,169.6 -232.3,169.6 l-215.4,0 c-67.2,0 -68.7,-6.1 -82.5,-59.6 L481.3,563.8 l143.6,0 c140.5,0 168,35.1 200.1,151.2 4.6,18.3 7.6,27.5 21.4,27.5 10.7,0 18.3,-7.6 18.3,-16.8 L777.6,368.2 c-6.1,-22.9 -10.7,-30.6 -22.9,-30.6 -13.7,0 -19.8,9.2 -19.8,16.8 0,4.6 1.5,9.2 4.5,16.9 10.7,45.8 10.7,64.1 10.7,74.8 0,38.2 0,70.3 -129.8,70.3 l-151.3,0 L365.1,99.3 C357.5,71.8 357.5,68.8 357.5,64.2 c0,-12.3 4.6,-13.8 19.9,-15.3 9.1,-1.5 12.2,-1.5 33.6,-1.5 l223,0 c261.3,0 317.8,102.3 417.1,328.4 3.1,9.2 6.1,18.4 19.9,18.4 18.3,0 18.3,-15.3 18.3,-16.8 0,-3.1 -4.6,-13.8 -7.6,-21.4 L941.1,26 C930.4,1.5 928.9,0 893.8,0 z")],
["F", new SymbolInfo(11.1, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M81,0 C76.4,0 58.1,0 58.1,18.3 c0,29.1 16.8,29.1 42.7,29.1 120.7,0 123.8,12.2 139.1,71.8 L441.5,927.4 c7.7,27.5 7.7,30.5 7.7,36.6 0,27.5 -42.8,27.5 -99.3,27.5 -29.1,0 -42.8,0 -42.8,16.8 0,30.6 15.3,30.6 45.8,30.6 l748.6,0 c38.2,0 45.9,0 41.3,-41.3 L1112.2,733.3 c-3,-29 -4.6,-38.2 -21.4,-38.2 -13.7,0 -18.3,10.7 -18.3,18.4 0,4.6 0,7.6 3.1,27.5 4.5,41.2 4.5,47.3 4.5,82.5 0,117.6 -35.1,168 -223,168 l-201.7,0 c-67.2,0 -68.7,-6.1 -82.5,-59.6 l-97.8,-388 139.1,0 c129.8,0 165,27.5 197.1,146.7 6.1,24.4 7.6,32 22.9,32 15.2,0 18.3,-13.7 18.3,-16.8 0,-4.5 0,-7.6 -4.6,-24.4 l-84,-331.5 C756.3,322.4 756.3,317.8 741,317.8 c-9.2,0 -18.4,6.1 -18.4,18.3 0,3.1 1.6,9.2 4.6,16.8 10.7,45.9 10.7,64.2 10.7,74.9 0,44.3 -12.2,68.7 -126.8,68.7 l-148.2,0 L368.2,120.7 C362.1,97.8 362.1,88.6 362.1,85.6 c0,-19.9 4.6,-26 48.9,-30.6 38.2,-3.1 45.8,-3.1 79.4,-3.1 35.2,0 38.2,0 42.8,-1.5 0,-1.5 9.2,-4.6 9.2,-16.8 0,-29 -18.4,-29 -32.1,-29 l-227.7,0 C238.3,4.6 125.3,0 81,0 z")],
["G", new SymbolInfo(11.1, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M493.5,-33.5 C246,-33.5 76.4,142.1 76.4,385 c0,354.4 343.7,692.1 684.4,692.1 169.6,0 239.9,-114.6 253.6,-136 l107,117.7 c16.8,16.8 18.3,18.3 22.9,18.3 13.8,0 16.8,-10.7 16.8,-15.3 L1064.9,667.6 c-7.7,-27.5 -7.7,-30.5 -27.5,-30.5 -6.1,0 -23,0 -23,15.3 0,15.2 4.6,16.8 4.6,77.9 0,177.2 -90.1,294.8 -245.9,294.8 -151.3,0 -299.5,-93.2 -382,-197 C230.7,629.4 215.4,377.4 215.4,330 215.4,96.3 375.8,9.2 522.5,9.2 576,9.2 774.6,26 817.4,194 c15.2,56.6 32,125.3 32,139.1 0,19.8 -7.6,24.4 -47.3,29 -35.2,3 -79.5,3 -81,3 -33.6,0 -45.8,0 -45.8,16.8 0,30.6 18.3,30.6 32.1,30.6 l213.9,0 c35.1,0 125.2,4.6 160.4,4.6 12.2,0 19.8,-6.1 19.8,-16.8 0,-29 -16.8,-30.6 -24.4,-30.6 C990,368.2 988.5,365.1 971.7,296.4 c-6.1,-26 -13.8,-52 -19.9,-77.9 l-29,-117.7 c-7.7,-32 -22.9,-90.1 -26,-93.2 0,-1.5 -3,-6.1 -10.7,-6.1 -15.3,0 -55,56.6 -68.7,94.8 C789.9,65.7 760.8,33.6 684.4,3.1 629.4,-19.8 560.7,-33.5 493.5,-33.5 z")],
["H", new SymbolInfo(12.8, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M81,-9.1 c-3.1,0 -21.4,0 -21.4,16.7 0,30.6 13.7,30.6 41.2,30.6 120.7,0 123.8,12.2 139.1,71.8 L444.6,930.4 c4.6,18.4 6.1,22.9 6.1,29 0,19.9 -13.8,21.4 -41.3,24.5 -25.9,3 -55,3 -58,3 -29,0 -42.8,0 -42.8,16.9 0,30.5 16.8,30.5 29,30.5 l197.1,0 c42.8,0 152.8,4.6 195.6,4.6 4.6,0 21.4,0 21.4,-16.8 0,-30.6 -12.3,-30.6 -52,-30.6 -110,0 -114.6,-15.2 -128.3,-70.2 L481.3,562.2 l465.9,0 L1038.9,935 c4.6,19.9 6.1,22.9 6.1,29 0,19.9 -13.7,21.4 -41.2,24.5 -26,3 -55,3 -58.1,3 -29,0 -42.8,0 -42.8,16.8 0,30.6 16.8,30.6 29,30.6 l197.1,0 c42.8,0 152.8,4.6 195.6,4.6 4.6,0 21.4,0 21.4,-16.8 0,-30.6 -12.2,-30.6 -52,-30.6 -111.5,0 -114.6,-15.3 -128.3,-70.3 L959.4,91.7 c-1.5,-9.2 -4.5,-16.8 -4.5,-26 0,-27.5 42.7,-27.5 99.3,-27.5 29,0 42.7,0 42.7,-16.8 0,-30.5 -18.3,-30.5 -30.5,-30.5 -32.1,0 -65.7,3.1 -99.3,3.1 -32.1,0 -65.7,1.5 -97.8,1.5 -42.8,0 -151.2,-4.6 -194,-4.6 -3.1,0 -21.4,0 -21.4,16.7 0,30.6 13.7,30.6 36.7,30.6 94.7,0 123.7,1.5 139,50.4 6.1,22.9 41.2,168.1 105.4,421.7 l-466,0 L365.1,91.7 c-1.5,-9.2 -4.5,-16.8 -4.5,-26 0,-27.5 42.7,-27.5 99.3,-27.5 29,0 42.7,0 42.7,-16.8 0,-30.5 -18.3,-30.5 -30.5,-30.5 C440,-9.1 406.4,-6 372.8,-6 c-32.1,0 -65.7,1.5 -97.8,1.5 C232.2,-4.5 123.8,-9.1 81,-9.1 z")],
["I", new SymbolInfo(7.6, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M74.9,-4.5 c-4.6,0 -23,0 -23,16.7 0,30.6 13.8,30.6 48.9,30.6 120.7,0 125.3,15.3 139.1,71.8 L446.1,938.1 c3.1,13.7 3.1,16.8 3.1,24.4 0,29 -41.3,29 -105.4,29 -29.1,0 -42.8,0 -42.8,16.8 0,30.6 19.8,30.6 30.5,30.6 l203.2,0 c44.3,0 157.4,4.6 201.7,4.6 6.1,0 22.9,0 22.9,-18.4 0,-29 -12.2,-29 -48.9,-29 -120.7,0 -125.3,-15.3 -139,-70.3 L366.7,111.5 c-3.1,-10.7 -6.1,-22.9 -6.1,-35.1 0,-16.8 6.1,-22.9 38.2,-26 30.5,-3 38.1,-3 65.6,-3 33.7,0 45.9,0 45.9,-18.4 C510.3,0 491.9,0 479.7,0 L275,0 C230.7,0 119.2,-4.5 74.9,-4.5 z")],
["J", new SymbolInfo(9.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M310.1,-38.1 c-120.7,0 -201.6,71.7 -201.6,166.4 0,103.9 74.8,122.3 102.3,122.3 26,0 67.3,-15.3 67.3,-64.2 0,-45.8 -39.8,-97.8 -99.3,-97.8 -3.1,0 -13.8,0 -18.4,1.5 C184.9,10.7 265.8,-4.5 305.6,-4.5 c79.4,0 183.3,80.9 220,229.1 L701.3,925.8 c3,12.3 6.1,23 6.1,32.1 0,21.4 -10.7,26 -47.4,30.6 -38.2,3 -53.5,3 -88.6,3 -39.7,0 -52,0 -52,16.8 0,30.6 18.4,30.6 32.1,30.6 l224.6,0 c38.2,0 131.4,4.6 169.6,4.6 12.2,0 21.4,-4.6 21.4,-18.4 0,-29 -16.8,-29 -41.3,-29 -84,0 -87,-13.7 -99.3,-64.2 L647.8,213.9 C609.6,62.6 450.7,-38.1 310.1,-38.1 z")],
["K", new SymbolInfo(12.7, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M81,-9.1 c-4.6,0 -22.9,0 -22.9,18.3 0,29 16.8,29 42.7,29 120.7,0 123.8,12.2 139.1,71.8 L444.6,930.4 c4.6,18.4 6.1,22.9 6.1,29 0,16.9 -9.2,21.4 -33.6,24.5 -18.3,1.5 -45.8,3 -65.7,3 -30.6,0 -44.3,0 -44.3,18.4 0,29 19.8,29 30.5,29 l197.1,0 c42.8,0 152.8,4.6 195.6,4.6 9.1,0 21.4,-3.1 21.4,-16.8 0,-30.6 -13.8,-30.6 -52,-30.6 -111.5,0 -114.6,-15.2 -128.3,-70.2 L449.2,430.8 1045,889.2 c9.2,7.6 55,42.7 55,70.2 0,21.4 -13.7,29.1 -47.4,32.1 -10.7,1.6 -18.3,6.1 -18.3,16.8 0,30.6 18.3,30.6 29,30.6 l169.6,0 c36.7,0 74.9,4.6 108.5,4.6 12.2,0 16.8,-10.7 16.8,-16.8 0,-27.5 -15.3,-29.1 -27.5,-30.6 -45.8,-4.6 -105.4,-10.7 -249,-116.1 L814.3,673.8 C797.5,661.5 770,640.1 770,638.6 c0,-4.6 6.1,-16.8 7.6,-21.4 l217,-505.7 C1017.5,58.1 1037.4,44.3 1100,42.8 c13.8,0 30.6,0 30.6,-16.8 0,-30.5 -19.9,-30.5 -27.5,-30.5 l-149.8,0 c-61.1,0 -125.2,-4.6 -186.4,-4.6 -3,0 -21.3,0 -21.3,16.7 0,30.6 16.8,30.6 33.6,30.6 13.7,0 79.4,1.5 79.4,47.4 0,9.1 0,12.2 -18.3,53.4 L663.1,550 435.4,372.8 C415.6,293.3 395.7,212.4 374.3,132.9 369.7,110 360.6,76.4 360.6,65.7 c0,-27.5 42.7,-27.5 99.3,-27.5 29,0 42.7,0 42.7,-16.8 0,-30.5 -19.8,-30.5 -30.5,-30.5 C440,-9.1 406.4,-6 372.8,-6 c-32.1,0 -65.7,1.5 -97.8,1.5 C232.2,-4.5 123.8,-9.1 81,-9.1 z")],
["L", new SymbolInfo(10.3, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M100.8,-4.5 c-27.5,0 -41.2,0 -41.2,16.7 0,30.6 15.3,30.6 41.2,30.6 120.7,0 123.8,12.2 139.1,71.8 L444.6,935 c4.6,18.3 6.1,22.9 6.1,29 0,19.9 -13.8,21.4 -41.3,24.5 -25.9,3 -55,3 -58,3 -29,0 -42.8,0 -42.8,16.8 0,30.6 18.3,30.6 29,30.6 l203.2,0 c50.5,0 175.7,4.6 226.1,4.6 7.7,0 24.5,0 24.5,-18.4 0,-29 -12.2,-29 -58.1,-29 -143.6,0 -148.2,-16.8 -161.9,-71.8 L365.1,94.7 C357.5,67.2 357.5,64.2 357.5,59.6 c0,-12.2 4.6,-13.8 19.9,-15.3 9.1,-1.5 12.2,-1.5 33.6,-1.5 l143.6,0 c264.3,0 331.5,174.1 383.5,314.7 10.7,24.4 12.2,32.1 25.9,32.1 13.8,0 18.4,-10.7 18.4,-16.8 0,-1.5 0,-4.6 -6.1,-21.4 L855.6,21.4 C846.4,-4.5 844.9,-4.5 808.2,-4.5 z")],
["M", new SymbolInfo(15.1, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M85.6,0 C73.3,0 64.2,4.6 64.2,18.3 c0,27.5 19.8,29.1 27.5,29.1 123.7,4.5 149.7,53.4 165,114.5 l194,777.7 c4.6,18.3 6.1,22.9 6.1,29 0,16.8 -9.2,21.4 -33.6,24.5 -18.3,1.5 -45.8,3 -65.7,3 -30.6,0 -44.3,0 -44.3,18.3 0,29.1 16.8,29.1 45.8,29.1 l209.3,0 c39.8,0 42.8,0 47.4,-35.2 L734.9,143.6 l557.6,870.8 c18.3,29.1 19.9,29.1 59.6,29.1 l201.7,0 c25.9,0 41.2,0 41.2,-16.8 0,-30.6 -13.7,-30.6 -48.9,-30.6 -114.6,0 -117.6,-15.3 -131.4,-70.3 L1211.5,120.7 c-7.6,-27.5 -7.6,-30.6 -7.6,-36.7 0,-27.5 42.8,-27.5 99.3,-27.5 29,0 42.8,0 42.8,-16.8 C1346,9.2 1326.1,9.2 1316.9,9.2 L1126,9.2 C1083.2,9.2 979.3,4.6 936.5,4.6 c-4.6,0 -22.9,0 -22.9,18.3 0,29 16.8,29 42.8,29 120.7,0 123.7,12.3 139,71.9 l218.5,875.4 -1.5,0 L695.1,32.1 C687.5,21.4 678.3,4.6 661.5,4.6 c-18.3,0 -19.8,16.8 -22.9,35.1 L507.2,986.9 l-1.5,0 L297.9,154.3 c-4.6,-16.8 -6.1,-24.4 -6.1,-35.1 C291.8,84 308.6,53.5 395.7,51.9 c10.7,0 27.5,0 27.5,-16.8 C423.2,4.6 403.3,4.6 395.7,4.6 l-157.4,0 C187.9,4.6 134.4,0 85.6,0 z")],
["N", new SymbolInfo(13.1, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M79.4,-4.5 c-12.2,0 -19.8,6 -19.8,16.7 0,29.1 16.8,30.6 26,30.6 123.7,4.6 149.7,53.5 165,114.6 L455.3,977.8 c0,13.7 -96.3,13.7 -103.9,13.7 -29,0 -42.8,0 -42.8,16.8 0,30.6 13.8,30.6 44.3,30.6 l204.7,0 c35.2,0 36.7,-1.5 48.9,-29 L944.2,212.4 l171.1,679.8 c1.5,4.6 4.6,27.5 4.6,32.1 0,33.6 -16.8,65.7 -103.9,67.2 -12.2,0 -27.5,0 -27.5,16.8 0,30.6 18.3,30.6 27.5,30.6 l155.8,0 c50.4,0 103.9,4.6 154.3,4.6 19.9,0 19.9,-15.3 19.9,-16.8 0,-29.1 -18.4,-30.6 -26,-30.6 -122.2,-4.6 -149.7,-51.9 -165,-113 L941.1,32.1 C933.5,4.6 933.5,0 916.7,0 902.9,0 898.3,3.1 887.6,29 L507.2,928.9 c-7.6,15.3 -7.6,18.3 -13.7,27.5 L291.8,149.7 c-4.6,-16.8 -6.1,-24.4 -6.1,-35.1 C285.7,84 297.9,50.4 386.5,47.4 c16.8,0 30.6,-1.6 30.6,-16.8 C417.1,0 397.2,0 389.6,0 L232.2,0 C181.8,0 128.3,-4.5 79.4,-4.5 z")],
["O", new SymbolInfo(11.0, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M475.1,6.1 c128.4,0 253.7,90.2 327,183.3 151.2,188 192.5,426.3 192.5,536.3 0,227.6 -137.5,313.2 -262.8,313.2 C611.1,1038.9 461.4,959.4 356,800.6 238.3,621.8 216.9,398.8 216.9,331.5 216.9,129.9 323.9,6.1 475.1,6.1 z M466,-33.5 C246,-33.5 74.9,120.7 74.9,374.3 c0,356 336.1,702.8 666.1,702.8 227.6,0 389.6,-165 389.6,-411 C1130.6,301 789.9,-33.5 466,-33.5 z")],
["P", new SymbolInfo(11.0, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M684.4,522.5 c67.3,0 158.9,12.2 235.3,81 59.6,55 90.2,186.4 90.2,245.9 0,105.5 -81,146.7 -207.8,146.7 l-146.7,0 c-65.7,0 -68.7,-4.6 -82.5,-58 L469,522.5 z M84,0 C79.4,0 61.1,0 61.1,18.3 c0,29.1 16.8,29.1 42.8,29.1 120.7,0 123.7,12.2 139,71.8 L447.6,939.6 c4.6,18.3 6.2,22.9 6.2,29 0,16.8 -9.2,21.4 -33.7,24.5 -18.3,1.5 -45.8,3 -65.7,3 -30.5,0 -44.3,0 -44.3,18.3 0,29.1 16.8,29.1 45.9,29.1 l495,0 c200.1,0 300.9,-113.1 300.9,-230.7 0,-171.1 -212.3,-330 -429.3,-330 l-259.7,0 -94.7,-382 C366.7,91.7 363.6,84 363.6,74.9 c0,-27.5 42.8,-27.5 99.3,-27.5 29,0 42.8,0 42.8,-16.8 C505.7,0 485.8,0 475.1,0 c-32,0 -65.7,3.1 -99.3,3.1 -32,0 -65.7,1.5 -97.7,1.5 C235.3,4.6 126.8,0 84,0 z")],
["Q", new SymbolInfo(11.0, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M475.1,4.6 c42.8,0 88.7,10.7 128.4,27.5 15.3,6.1 16.8,7.6 16.8,30.5 0,93.2 -29,129.9 -93.2,129.9 C462.9,192.5 404.9,131.4 404.9,70.3 404.9,4.6 453.8,4.6 475.1,4.6 z M380.4,21.4 c0,1.5 -9.1,18.3 -9.1,48.9 0,79.4 74.8,155.8 155.8,155.8 111.5,0 126.8,-111.5 134.4,-165 C918.2,204.7 996.1,562.2 996.1,715 c0,204.7 -111.5,323.9 -264.3,323.9 -111.5,0 -255.1,-70.3 -366.7,-226.1 C249,647.8 209.3,430.8 209.3,325.4 c0,-137.5 52,-256.6 171.1,-304 z m356,-317.7 c-126.8,0 -126.8,119.2 -126.8,168.1 0,19.8 0,22.9 6.1,117.6 C556.1,-27.4 504.2,-33.5 466,-33.5 246,-33.5 74.9,120.7 74.9,374.3 c0,356 336.1,702.8 666.1,702.8 227.6,0 389.6,-165 389.6,-411 C1130.6,371.3 906,99.3 669.2,9.2 c15.2,-116 38.2,-157.3 108.4,-157.3 53.5,0 142.1,38.2 178.8,146.7 3,9 6.1,16.7 18.3,16.7 6.1,0 16.8,-4.6 16.8,-15.3 0,-16.7 -73.3,-296.3 -255.1,-296.3 z")],
["R", new SymbolInfo(11.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M644.7,539.3 c137.5,0 218.5,48.9 258.2,88.6 59.6,59.6 84,165 84,217 0,151.2 -169.5,151.2 -278,151.2 -30.6,0 -79.5,0 -93.2,-1.5 -29,-4.6 -33.6,-19.9 -42.8,-56.5 L473.6,539.3 z M970.1,-28.9 c-19.8,0 -203.2,0 -203.2,164.9 0,30.5 13.8,87.1 24.5,129.8 9.2,35.2 21.4,82.5 21.4,105.5 0,53.4 -27.5,139 -166.5,139 l-181.9,0 L363.6,105.4 C362.1,96.3 359,88.6 359,79.4 c0,-27.5 42.8,-27.5 99.3,-27.5 29.1,0 42.8,0 42.8,-16.8 C501.1,4.6 482.8,4.6 470.6,4.6 l-194.1,0 C233.8,4.6 126.8,0 84,0 81,0 62.6,0 62.6,16.8 c0,30.6 13.8,30.6 41.3,30.6 120.7,0 123.7,12.2 139,71.8 L447.6,939.6 c4.6,18.3 6.2,22.9 6.2,29 0,19.9 -13.8,21.4 -41.3,24.5 -26,3 -55,3 -58.1,3 -29,0 -42.7,0 -42.7,16.8 0,30.6 13.7,30.6 44.3,30.6 l435.4,0 c200.1,0 337.6,-97.8 337.6,-229.2 C1129,662.5 953.1,556.5 800.4,521.1 c-2.6,1.1 -5.2,2.1 -7.5,2.9 l0,-4.6 c2.5,0.6 5,1.2 7.5,1.7 45,-17.9 136.1,-66.3 136.1,-177.3 0,-21.4 -3,-50.5 -6.1,-71.9 C924.3,223.1 915.1,145.1 915.1,97.8 c0,-59.6 10.7,-93.2 61.2,-93.2 35.1,0 100.8,26 139,139 3,10.7 6.1,21.4 19.8,21.4 1.6,0 18.4,0 18.4,-18.3 0,-21.4 -53.5,-175.6 -183.4,-175.6 z")],
["S", new SymbolInfo(10.4, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M96.3,-33.5 c-9.2,0 -16.9,6.1 -16.9,15.3 0,4.5 85.6,352.8 91.7,358.9 4.6,4.6 7.7,6.1 15.3,6.1 7.6,0 18.3,-1.5 18.3,-16.8 0,-3.1 -1.5,-4.6 -3,-10.7 -1.6,-9.2 -9.2,-45.8 -9.2,-82.5 0,-189.4 169.6,-223 267.4,-223 149.7,0 275,143.6 275,281.1 0,125.2 -84.1,148.2 -140.6,161.9 L430.8,499.6 C352.9,522.5 271.9,592.8 271.9,716.5 c0,184.9 183.4,360.6 377.4,360.6 99.3,0 178.8,-38.2 218.5,-110 l73.3,87.1 c18.3,21.4 19.9,22.9 27.5,22.9 13.8,0 16.8,-10.7 16.8,-15.3 L902.9,727.2 C896.8,701.3 895.3,696.7 880,696.7 c-18.3,0 -18.3,13.7 -18.3,15.2 0,9.2 6.1,36.7 6.1,85.6 0,171.1 -93.2,236.8 -220,236.8 C502.6,1034.3 380.4,904.4 380.4,780.7 c0,-81 52,-125.3 93.2,-139 13.8,-3.1 68.8,-18.4 102.4,-27.5 C711.9,579 734.9,572.9 770,537.8 792.9,516.4 844.9,464.4 844.9,359 844.9,169.6 664.6,-33.5 456.8,-33.5 c-88.6,0 -192.5,21.4 -258.2,109.9 l-74.8,-87 C105.4,-32 103.9,-33.5 96.3,-33.5 z")],
["T", new SymbolInfo(10.8, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M100.8,0 C91.7,0 74.9,0 74.9,18.3 c0,29.1 9.1,29.1 64.1,29.1 163.5,0 168.1,16.8 181.8,73.3 L525.6,936.5 c1.5,4.6 6.1,22.9 6.1,32.1 0,12.2 0,18.3 -42.8,18.3 l-59.6,0 C203.2,986.9 163.5,959.4 81,722.6 c-9.2,-24.4 -10.7,-32 -26,-32 -10.7,0 -18.3,7.6 -18.3,16.8 0,3 7.6,24.4 9.1,27.5 l91.7,268.9 c10.7,29 12.2,30.5 48.9,30.5 l847.9,0 c26,0 41.3,0 41.3,-16.8 0,-4.6 -1.6,-19.9 -3.1,-26 L1031.3,725.7 c-3.1,-22.9 -6.2,-35.1 -23,-35.1 -13.7,0 -18.3,10.7 -18.3,19.8 0,4.6 3.1,22.9 4.6,29 6.1,39.8 12.2,99.4 12.2,122.3 0,119.1 -68.7,125.2 -223,125.2 -32.1,0 -82.5,0 -96.3,-3 -18.3,-4.6 -24.4,-13.8 -35.1,-56.5 L449.2,117.6 c-6.1,-22.9 -6.1,-30.5 -6.1,-32 0,-24.5 12.2,-29.1 56.5,-33.7 39.7,-3 59.6,-3 97.8,-3 39.7,0 51.9,0 51.9,-16.8 C649.3,1.5 631,1.5 615.7,1.5 c-42.8,0 -88.6,3.1 -132.9,3.1 L356,4.6 C313.2,4.6 268.9,3.1 226.1,3.1 184.9,3.1 142.1,0 100.8,0 z")],
["U", new SymbolInfo(11.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M401.8,-42.7 C241.4,-42.7 102.4,64.2 102.4,250.6 c0,22.9 0,45.8 10.7,88.6 6.1,29 79.4,317.7 93.2,377.3 L239.9,851 c9.1,35.1 25.9,99.3 25.9,108.4 0,19.9 -13.7,21.4 -41.2,24.5 -26,3 -55,3 -58.1,3 -29,0 -42.7,0 -42.7,16.9 0,30.5 16.8,30.5 29,30.5 l197.1,0 c42.7,0 152.7,4.6 195.5,4.6 4.6,0 21.4,0 21.4,-16.8 0,-30.6 -12.2,-30.6 -51.9,-30.6 -111.6,0 -114.6,-15.2 -128.4,-70.2 L238.3,326.9 C221.5,259.7 221.5,210.8 221.5,207.8 221.5,76.4 304,9.2 407.9,9.2 c152.8,0 328.5,132.9 380.4,337.6 L925.8,892.2 c1.6,4.6 4.6,27.5 4.6,32.1 0,33.6 -16.8,65.7 -103.9,67.2 -12.2,0 -27.5,0 -27.5,16.8 0,30.6 18.4,30.6 27.5,30.6 l158.9,0 c52,0 105.4,4.6 155.9,4.6 19.8,0 19.8,-15.3 19.8,-16.8 0,-29.1 -18.3,-30.6 -26,-30.6 -122.2,-4.6 -149.7,-50.4 -165,-113 L834.2,331.5 C783.8,129.9 594.3,-42.7 401.8,-42.7 z")],
["V", new SymbolInfo(10.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M366.7,-38.1 c-19.9,0 -26,4.6 -30.6,35.1 L215.4,939.6 c-4.6,38.2 -6.1,51.9 -91.6,51.9 -24.5,0 -38.2,0 -38.2,18.4 0,29 18.3,29 29,29 26,0 55,-3.1 82.5,-3.1 27.5,0 56.5,-1.5 84,-1.5 62.7,0 128.3,4.6 189.5,4.6 9.1,0 21.3,-3.1 21.3,-16.8 0,-30.6 -16.8,-30.6 -38.1,-30.6 -70.3,0 -105.5,-19.8 -105.5,-45.8 L452.2,137.5 921.3,883.1 c0,1.5 22.9,35.1 22.9,58 0,32.1 -29.1,47.4 -70.3,50.4 -10.7,0 -24.5,1.6 -24.5,18.4 0,29 19.9,29 29.1,29 l151.2,0 c41.3,0 85.6,4.6 125.3,4.6 12.2,0 19.9,-6.1 19.9,-18.4 0,-1.5 -1.6,-27.5 -19.9,-29 -56.5,-3 -120.7,-7.6 -195.6,-126.8 L409.4,-10.6 C397.2,-30.5 391.1,-38.1 366.7,-38.1 z")],
["W", new SymbolInfo(15.4, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M296.4,-47.3 c-21.4,0 -22.9,12.3 -24.5,39.8 L203.2,925.8 c-3.1,42.8 -4.6,56.6 -81,56.6 -24.4,0 -38.2,0 -38.2,18.3 0,29 19.9,29 27.5,29 l160.4,0 c62.7,0 126.9,4.6 188,4.6 3,0 21.4,0 21.4,-16.8 0,-30.6 -16.9,-30.6 -32.1,-30.6 C333.1,985.4 333.1,950.3 333.1,931.9 l58,-774.5 L777.6,831.1 l-9.1,117.7 c-3.1,29 -13.8,38.1 -81,38.1 -21.4,0 -36.7,0 -36.7,16.9 0,30.5 19.9,30.5 29.1,30.5 l160.4,0 c61.1,0 125.3,4.6 186.4,4.6 6.1,0 22.9,-1.5 22.9,-16.8 0,-30.6 -15.3,-30.6 -41.3,-30.6 C896.8,990 899.9,950.3 901.4,919.7 L957.9,161.9 l412.5,719.6 c12.2,21.4 19.9,33.6 19.9,50.4 0,45.9 -53.5,58.1 -90.2,59.6 -9.1,0 -22.9,1.6 -22.9,18.4 0,29 19.9,29 29.1,29 l158.8,0 c38.2,0 81,4.6 117.7,4.6 12.2,0 18.3,-10.7 18.3,-16.8 0,-29.1 -15.3,-29.1 -29,-30.6 C1475.8,988.5 1439.2,933.5 1401,866.3 L899.9,-18.2 C892.2,-32 883.1,-47.3 863.2,-47.3 c-18.3,0 -21.4,7.7 -24.4,39.8 L782.2,763.9 333.1,-15.2 C319.3,-38.1 314.7,-47.3 296.4,-47.3 z")],
["X", new SymbolInfo(13.0, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M61.1,-4.5 C41.3,-4.5 41.3,10.7 41.3,12.2 c0,29.1 13.7,29.1 33.6,30.6 77.9,4.6 149.7,29 224.5,110 l19.9,16.8 L641.7,516.4 461.4,942.6 c-13.8,33.7 -22.9,48.9 -114.6,48.9 -19.9,0 -35.1,0 -35.1,16.8 0,30.6 18.3,30.6 27.5,30.6 l171.1,0 c64.1,0 129.8,4.6 192.5,4.6 4.6,0 22.9,0 22.9,-18.4 0,-25.9 -15.3,-27.5 -30.6,-29 C631,990 605,961 605,951.8 c0,-1.5 3.1,-7.6 7.6,-19.9 L741,627.9 988.5,893.8 c12.2,13.7 29,33.6 29,55 0,42.7 -47.4,45.8 -61.1,47.3 -10.7,1.5 -18.3,6.1 -18.3,16.8 0,30.6 19.8,30.6 29,30.6 l169.6,0 c47.3,0 97.7,4.6 143.6,4.6 19.8,0 19.8,-15.3 19.8,-16.8 0,-29.1 -13.7,-29.1 -33.6,-30.6 -91.6,-4.6 -149.7,-41.3 -194,-77.9 C1023.6,880 863.2,698.2 759.3,591.3 c35.1,-91.7 137.5,-330 197.1,-472.1 26,-61.1 29,-65.7 131.4,-67.3 12.2,0 27.5,0 27.5,-18.3 0,-29 -18.4,-29 -29,-29 l-169.6,0 C873.9,4.6 766.9,0 724.2,0 c-6.1,0 -22.9,0 -22.9,18.3 0,26 13.7,27.5 30.5,29.1 59.6,6.1 88.6,32 88.6,44.3 0,3 -1.5,4.6 -7.6,21.4 L658.5,478.2 521,328.5 365.1,163.5 C346.8,143.6 323.9,119.2 323.9,94.7 c0,-42.8 47.4,-45.8 61.1,-47.3 3.1,0 18.3,-1.6 18.3,-16.8 C403.3,0 385,0 375.8,0 L204.7,0 C157.4,0 106.9,-4.5 61.1,-4.5 z")],
["Y", new SymbolInfo(10.8, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M161.9,-9.1 c-3,0 -21.3,0 -21.3,16.7 0,30.6 12.2,30.6 41.2,30.6 122.2,1.5 123.8,6.1 143.6,90.1 7.7,27.5 68.8,273.5 68.8,278.1 0,4.6 -4.6,21.4 -6.1,26 L200.1,935 c-13.7,38.2 -19.8,51.9 -111.5,51.9 -19.8,0 -35.1,0 -35.1,16.9 0,30.5 19.8,30.5 29,30.5 l171.1,0 c42.8,0 149.7,4.6 192.5,4.6 4.6,0 22.9,0 22.9,-16.8 0,-30.6 -15.2,-30.6 -36.6,-30.6 -15.3,0 -90.2,0 -90.2,-36.6 0,-1.6 0,-4.6 9.2,-26 l168,-453.8 354.5,408 c6.1,7.6 41.2,47.3 41.2,73.3 0,32.1 -44.3,35.1 -55,35.1 -7.6,0 -22.9,1.6 -22.9,18.4 0,29 19.9,29 29.1,29 l152.7,0 c41.3,0 85.6,4.6 125.3,4.6 12.2,0 19.9,-6.1 19.9,-18.4 0,-27.5 -13.8,-27.5 -30.6,-29 C1029.7,988.5 979.3,936.5 933.5,890.7 L912.1,869.3 533.2,429.3 C521,415.6 519.4,411 511.8,381.9 L458.3,166.5 C450.7,134.4 436.9,81 436.9,70.3 c0,-18.4 9.2,-21.4 41.3,-24.5 26,-3 55,-3 58.1,-3 29,0 42.7,0 42.7,-16.8 C579,-4.5 560.7,-4.5 550,-4.5 l-195.6,0 c-42.7,0 -149.7,-4.6 -192.5,-4.6 z")],
["Z", new SymbolInfo(9.8, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M126.8,0 C99.3,0 88.6,0 88.6,13.8 c0,4.5 6.1,25.9 6.1,27.5 L948.8,996.1 l-249.1,0 C461.4,996.1 381.9,895.3 323.9,715 c-3.1,-4.6 -6.1,-15.3 -19.9,-15.3 -18.3,0 -18.3,15.3 -18.3,16.8 0,3.1 1.5,13.8 4.6,21.4 l84,275 c9.2,29 10.7,30.6 47.4,30.6 l644.7,0 c30.5,0 38.2,0 38.2,-13.8 0,-9.1 -3.1,-16.8 -4.6,-22.9 L246,51.9 l261.2,0 c259.7,0 333.1,110 400.3,317.8 10.7,32.1 12.2,38.2 26,38.2 13.7,0 19.8,-9.1 19.8,-16.8 0,-6.1 -4.5,-16.8 -6.1,-22.9 L838.8,30.6 C829.6,1.5 828.1,0 791.4,0 z")],
["Ä", new SymbolInfo(10.4, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M724.2,432.4 L661.5,840.3 l-3,0 L436.9,452.2 c-3,-3 -3,-6.1 -3,-9.1 0,-7.7 10.7,-10.7 35.1,-10.7 z M6.1,-3 L4.6,0 9.2,29 c1.5,7.7 6.1,12.3 13.7,12.3 64.2,4.5 107,19.8 163.5,114.5 L667.6,950.3 c24.5,41.2 38.2,55 59.6,55 21.4,0 26,-16.8 30.6,-45.9 l140.5,-828 C907.5,71.8 931.9,48.9 990,42.8 l15.3,-1.5 c7.6,0 12.2,-4.6 12.2,-12.3 L1014.4,0 l-3,-3 C957.9,-1.4 898.3,0 838.8,0 782.2,0 699.7,-1.4 644.7,-3 l-1.5,3 3.1,29 c1.5,7.7 6.1,12.3 12.2,12.3 l42.8,3 c50.4,4.6 74.8,18.3 74.8,52 0,4.5 0,9.1 -1.5,13.7 L736.4,368.2 l-305.6,0 c-35.1,0 -45.8,-6.1 -56.5,-26 L246,120.7 C238.3,108.5 235.3,96.3 235.3,85.6 c0,-23 16.8,-38.2 55,-41.3 l41.2,-3 c6.1,0 10.7,-4.6 9.2,-12.3 L337.6,0 l-4.5,-3 c-53.5,1.6 -131.4,3 -191,3 C85.6,0 61.1,-1.4 6.1,-3 z M551.5,1005.3 c-39.7,0 -73.3,33.6 -73.3,73.3 0,39.7 33.6,73.3 73.3,73.3 39.8,0 73.4,-33.6 73.4,-73.3 0,-39.7 -33.6,-73.3 -73.4,-73.3 z m362.1,0 c-39.7,0 -73.3,33.6 -73.3,73.3 0,39.7 33.6,73.3 73.3,73.3 39.7,0 73.3,-33.6 73.3,-73.3 0,-39.7 -33.6,-73.3 -73.3,-73.3 z")],
["Ö", new SymbolInfo(10.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M545.4,36.7 c168.1,0 328.5,163.4 382,436.9 10.7,55 15.2,107 15.2,152.8 0,216.9 -111.5,326.9 -276.5,326.9 C533.2,953.3 346.8,820.4 285.7,499.6 276.5,453.8 271.9,411 271.9,372.8 271.9,157.4 397.2,36.7 545.4,36.7 z M505.7,-15.2 c-218.5,0 -372.8,140.5 -372.8,372.7 0,36.7 4.6,74.9 12.2,116.1 58.1,299.5 288.8,531.7 550,531.7 223.1,0 383.5,-151.3 383.5,-389.6 0,-36.7 -3,-73.3 -10.7,-113.1 C1008.3,197.1 786.8,-15.2 505.7,-15.2 z M392.6,1005.3 c-39.7,0 -73.3,33.6 -73.3,73.3 0,39.7 33.6,73.3 73.3,73.3 39.8,0 73.4,-33.6 73.4,-73.3 0,-39.7 -33.6,-73.3 -73.4,-73.3 z m624.9,0 c-39.7,0 -73.3,33.6 -73.3,73.3 0,39.7 33.6,73.3 73.3,73.3 39.7,0 73.3,-33.6 73.3,-73.3 0,-39.7 -33.6,-73.3 -73.3,-73.3 z")],
["Ü", new SymbolInfo(10.5, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M466,-15.2 c-129.9,0 -327,64.1 -265.9,375.8 l97.8,499.5 c10.7,59.6 -38.2,79.5 -87.1,84.1 -7.6,0 -12.2,6.1 -10.7,13.7 l6.2,27.5 3,3.1 c53.5,-1.6 114.6,-3.1 171.1,-3.1 59.6,0 85.6,1.5 122.2,3.1 12.3,0 13.8,-13.8 12.3,-22.9 -3.1,-15.3 -10.7,-18.4 -23,-21.4 -55,-13.8 -71.8,-53.5 -79.4,-96.3 L326.9,411 C308.6,311.7 288.8,204.7 351.4,123.8 385,79.4 440,47.4 510.3,47.4 c246,0 310.1,204.7 343.7,375.8 L931.9,825 c9.2,47.4 10.7,108.5 -38.1,119.2 -15.3,3 -21.4,9.1 -18.4,19.8 1.5,10.7 9.2,24.5 27.5,24.5 36.7,-1.6 59.6,-3.1 93.2,-3.1 33.6,0 93.2,1.5 148.2,3.1 l1.5,-3.1 -4.5,-27.5 c-3.1,-10.7 -15.3,-12.2 -39.8,-13.7 -62.6,-4.6 -90.1,-56.6 -99.3,-99.3 L925.8,450.7 C873.9,178.8 768.5,-15.2 466,-15.2 z M600.4,1008.3 c-39.7,0 -71.8,32.1 -71.8,71.8 0,39.8 32.1,71.8 71.8,71.8 39.7,0 71.8,-32 71.8,-71.8 0,-39.7 -32.1,-71.8 -71.8,-71.8 z m220,0 c-39.7,0 -71.8,32.1 -71.8,71.8 0,39.8 32.1,71.8 71.8,71.8 39.7,0 71.8,-32 71.8,-71.8 0,-39.7 -32.1,-71.8 -71.8,-71.8 z")],
["ẞ", new SymbolInfo(11.0, 16, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M676.8,-18.2 c-48.9,0 -99.3,25.8 -149.7,25.8 -12.2,0 -26,-9 -42.8,-10.6 7.6,35.1 13.8,113 16.8,233.7 l45.8,4.6 C554.6,113.1 598.9,42.8 701.3,42.8 c76.3,0 177.2,48.9 209.3,226.1 9.1,55 1.5,227.6 -241.4,227.6 -9.2,0 -16.8,0 -27.5,-1.5 l-3.1,36.7 c93.2,103.9 275,339.1 281.1,374.3 3.1,21.4 -67.2,42.8 -132.9,42.8 -181.8,0 -359,-140.6 -414,-459.9 L305.6,108.5 C296.4,62.6 316.3,42.8 377.4,42.8 l18.3,0 c7.6,0 12.2,-4.6 10.7,-12.2 L401.8,1.5 l-3,-2.9 c0,0 -111.6,2.9 -172.7,2.9 C172.6,1.5 51.9,-1.4 51.9,-1.4 l-3,2.9 L55,30.6 c1.5,7.6 6.1,12.2 13.8,12.2 l18.3,0 c62.6,0 87.1,24.4 94.7,65.7 l61.1,342.2 c53.5,307.1 181.8,554.6 583.6,554.6 93.2,0 189.5,-15.3 272,-44.3 l-6.1,-36.7 L803.6,563.8 c-9.2,-12.3 -6.1,-18.4 3.1,-19.9 C959.4,534.7 1074,421.7 1048.1,276.5 1022.1,126.8 878.5,-18.2 676.8,-18.2 z")],
]);
// Should only contain keys which __characterPathData and __specialCommandNames do not contain, and which do not start with "\\" (which is internally used for special command detection).
const __specialSymbolPathData = new Map([
["alpha", new SymbolInfo(9.5, 19, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M313,17c61,0,179,17,313,134c-3,26,-3,115,-3,171c0,120,0,320,-151,320C419,642,336,613,264,501C215,423,176,258,176,183C176,86,222,17,313,17Zm-3,-33C154,-16,63,99,63,241c0,216,201,434,411,434c113,0,255,-75,255,-314V266c72,90,122,206,149,302c8,28,8,32,23,32c17,0,19,-12,19,-15C920,584,888,406,744,226C729,208,729,205,729,173c0,-37,0,-156,47,-156c3,0,58,0,86,75c4,10,9,15,20,15c9,0,18,-5,18,-15C900,67,853,-16,772,-16C703,-16,652,31,633,112C516,18,406,-16,310,-16Z")],
["beta", new SymbolInfo(9.0, 19, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M510,605c7,0,14,0,20,0c37,0,54,3,73,11c-19,7,-33,7,-65,7c-5,0,-13,1,-22,1c-22,0,-51,-2,-53,-13c11,-5,30,-6,47,-6ZM393,18c87,0,189,55,249,138c42,59,79,174,76,263c-1,70,-9,117,-67,172C605,573,582,571,526,571c-5,0,-12,0,-19,0c-34,0,-88,3,-87,39c0,47,76,48,112,48c2,0,4,0,6,0c46,0,76,-3,117,-18c80,48,138,158,138,264c0,92,-54,139,-142,139C468,1043,358,801,324,669L226,283c-8,-29,-8,-52,-8,-68C218,107,277,18,393,18ZM64,-295c-12,0,-20,9,-18,15L289,689c29,116,113,264,197,325c53,40,96,65,185,65c123,0,207,-95,207,-210C878,759,791,665,703,614C758,576,814,497,814,387C814,273,765,176,692,105C623,38,509,-14,397,-14C286,-14,218,41,189,133L83,-288c-2,-4,-7,-7,-19,-7Z")],
["gamma", new SymbolInfo(8.2, 19, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M475,-327c-12,0,-20,10,-20,27c0,40,46,217,80,328c10,30,18,56,18,149c0,121,-17,388,-247,388C289,565,122,564,63,388l-6,-8c-16,0,-29,0,-29,16c0,47,106,279,297,279c106,0,167,-75,204,-168C588,359,590,243,591,196c61,154,122,307,202,452c5,10,14,10,18,10c3,0,19,0,19,-15c0,-6,-19,-40,-29,-58C739,464,642,237,593,86C587,66,584,46,581,26c-7,-46,-22,-133,-57,-262c-17,-58,-29,-91,-49,-91Z")],
["delta", new SymbolInfo(7.1, 19, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M306,15c142,0,200,255,200,356c0,110,-46,193,-84,263C215,579,159,292,159,196C159,79,222,15,306,15Zm0,-32C162,-17,64,92,64,238c0,185,148,384,339,430c-47,93,-91,178,-91,261c0,92,55,157,174,157c24,0,46,0,125,-17c55,-12,80,-16,80,-50c0,-24,-23,-61,-62,-61c-22,0,-53,20,-84,38c-32,22,-62,41,-108,41c-54,0,-84,-36,-84,-70c0,-67,90,-182,145,-250C550,648,611,571,611,432C611,222,484,-17,306,-17Z")],
["epsilon", new SymbolInfo(6.7, 19, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M347,359c58,0,61,2,84,12c-28,8,-34,9,-72,9c-26,0,-58,-1,-93,-13c29,-8,47,-8,81,-8ZM289,-33C127,-33,40,60,40,159c0,70,49,156,139,206c-6,5,-61,43,-61,109c0,116,165,218,340,218c104,0,197,-58,197,-87c0,-21,-21,-41,-41,-41c-11,0,-14,3,-30,15c-61,43,-116,43,-141,43C306,622,156,567,156,474c0,-42,26,-71,61,-89c56,26,110,29,142,29c58,0,112,-5,112,-41c0,-48,-84,-48,-124,-48c-37,0,-81,0,-132,22C122,301,79,220,79,168C79,60,209,37,303,37c183,0,220,56,241,91c3,5,8,11,15,11c9,0,17,-6,17,-15C576,101,490,-33,289,-33Z")],
["xi", new SymbolInfo(7.0, 19, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M440,475c70,0,86,6,70,20c-6,2,-59,2,-78,2c-33,0,19,-10,-68,-10c27,-12,41,-12,76,-12ZM547,891c67,0,82,7,95,12c-28,8,-34,9,-86,9c-17,0,-49,0,-73,-8c17,-13,35,-13,64,-13ZM420,-312c-85,0,-166,55,-166,73c0,6,3,17,15,17c6,0,8,-2,17,-8c17,-12,67,-49,134,-49c48,0,75,46,75,81c0,45,-31,55,-53,66L257,-60C142,-17,128,-11,79,38C76,43,35,86,35,159c0,55,34,199,200,309l20,15c-72,41,-99,105,-99,162c0,117,104,240,267,285c-1,7,-10,29,-10,60c0,5,0,75,27,75c11,0,18,-8,18,-23c-7,-32,-7,-54,-7,-79c0,-2,1,-3,1,-3c1,0,3,5,4,5c1,0,2,-5,2,-27c40,8,77,8,97,8c59,0,126,-2,126,-42c0,-47,-97,-47,-136,-47c-35,0,-70,0,-97,34C333,834,278,717,278,631c0,-29,6,-79,46,-119c56,18,101,18,128,18c60,0,126,-3,126,-41c0,-47,-97,-47,-143,-47c-32,0,-77,0,-134,19C173,397,113,264,113,202C113,138,159,93,228,66L319,29C351,18,382,6,413,-5c19,-8,71,-28,93,-35c17,-8,73,-35,73,-109c0,-75,-64,-163,-159,-163Z")],
["phi", new SymbolInfo(9.6, 19, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M471,72c235,0,432,186,432,359c0,73,-41,156,-147,156C620,587,501,440,454,244C449,222,423,83,423,79c0,-4,2,-6,20,-6c12,-1,15,-1,28,-1ZM296,-332c-15,0,-44,9,-44,43c0,7,2,10,8,30L341,-2C177,35,76,147,76,290c0,147,118,368,161,368c15,0,18,-9,18,-15c0,-3,0,-6,-12,-20C151,518,116,350,116,307C116,197,202,112,367,81c91,298,183,594,405,594c114,0,174,-91,174,-211C946,223,710,-16,457,-16c-26,0,-37,2,-51,3C365,-230,358,-280,353,-292c-15,-35,-49,-40,-57,-40Z")],
["chi", new SymbolInfo(9.2, 19, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M733,-312c-136,0,-169,76,-189,122c-37,86,-55,145,-104,303L90,-279c-6,-6,-14,-16,-24,-16c-9,0,-19,9,-19,18c0,5,0,8,17,24L416,139c12,12,12,15,12,17c0,4,-49,182,-98,302C304,526,258,642,212,642c-9,0,-58,-6,-81,-66c-3,-8,-6,-17,-19,-17c-19,0,-19,14,-19,15c0,22,40,101,129,101c134,0,168,-76,184,-111C442,483,454,445,515,251L865,640c9,11,15,18,24,18c12,0,19,-9,19,-18c0,-4,0,-7,-17,-24L527,208C561,90,665,-279,743,-279c29,0,67,25,80,62c5,15,7,21,22,21c15,0,18,-9,18,-17c0,-20,-41,-99,-130,-99Z")],
["psi", new SymbolInfo(9.9, 19, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M387,-312c-19,0,-19,14,-19,15c0,5,31,128,35,145c22,81,22,84,34,139C290,-4,171,58,171,203c0,26,0,66,73,258c20,54,36,92,36,132c0,49,-26,49,-39,49C189,642,128,597,87,452C79,428,78,425,63,425c-3,0,-19,0,-19,15c0,14,57,235,202,235c76,0,125,-56,125,-125c0,-31,-10,-57,-17,-75C272,261,272,222,272,191C272,90,330,34,446,20L700,1030c6,27,7,30,23,30c7,0,18,-1,18,-17c0,-7,-3,-16,-5,-22L484,17c55,0,153,0,288,136c53,55,132,180,132,278c0,73,-38,113,-55,130c-13,12,-22,21,-22,41c0,34,38,73,76,73c26,0,67,-21,67,-107C970,501,937,368,923,330C906,284,874,217,811,147C668,-16,533,-16,477,-16L419,-243c-5,-22,-14,-60,-19,-63c-3,-6,-10,-6,-13,-6Z")],
["theta", new SymbolInfo(7.1, 19, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M248,17c65,0,123,75,177,179c58,110,90,239,107,310H214C174,356,165,267,165,203C165,61,197,17,248,17ZM545,555c37,151,49,229,49,304c0,87,-9,184,-84,184C442,1043,385,958,344,883C283,775,252,652,226,555ZM248,-16C108,-16,64,153,64,296c0,350,235,781,448,781c156,0,183,-212,183,-313C695,422,463,-16,248,-16Z")],
["tau", new SymbolInfo(8.0, 19, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M284,-17c-33,0,-44,23,-44,40c0,6,9,38,15,56L405,570H278C246,570,159,570,84,452C75,440,72,434,60,434c-19,0,-19,14,-19,15c0,9,43,83,93,138c68,71,127,71,158,71H720c29,0,61,0,61,-36c0,-52,-55,-52,-75,-52H449L347,47C342,24,335,-17,284,-17Z")],
["eta", new SymbolInfo(7.7, 19, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M509,-329c-26,0,-43,18,-43,41c0,3,0,6,5,25L645,438c15,62,15,89,15,97c0,55,-17,107,-82,107C512,642,464,613,431,588C379,547,332,461,327,448c-2,-10,-14,-60,-17,-69C303,344,293,310,284,277L251,139C241,101,223,29,222,26C211,-4,183,-16,165,-16c-23,0,-44,14,-44,40c0,8,9,43,13,66l89,353c20,80,25,96,25,128c0,58,-22,71,-48,71C145,642,115,568,89,460C79,426,78,425,63,425c-3,0,-19,0,-19,15c0,5,20,96,48,148c13,28,42,87,113,87c68,0,133,-46,140,-133c37,54,116,133,237,133c115,0,176,-64,176,-163c0,-41,-5,-61,-12,-89L571,-268c-4,-17,-15,-61,-62,-61Z")],
["zeta", new SymbolInfo(7.4, 19, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M590,891c67,0,82,7,94,12c-27,8,-33,9,-84,9c-19,0,-47,0,-70,-11c17,-10,28,-10,60,-10ZM422,-312c-81,0,-147,58,-147,73c0,11,8,17,15,17c6,0,8,-2,19,-11c32,-27,73,-46,113,-46c56,0,85,60,85,101c0,72,-62,93,-94,104c-45,15,-48,15,-94,32C209,-5,70,40,70,255c0,297,242,578,402,659c-12,23,-17,50,-17,76c0,5,0,75,28,75c10,0,18,-8,18,-20c0,-3,-8,-35,-8,-57c0,-32,4,-39,11,-58c40,16,81,16,98,16c61,0,122,-3,122,-42c0,-47,-98,-47,-136,-47c-30,0,-65,0,-93,28C341,802,154,535,154,298c0,-29,0,-116,64,-174C255,92,280,84,402,43C492,12,521,3,547,-25c12,-12,41,-44,41,-102c0,-87,-72,-185,-166,-185Z")],
["sigma", new SymbolInfo(8.2, 19, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M289,17c59,0,142,40,201,130c52,78,83,203,83,275c0,47,-12,148,-141,148C380,570,289,548,225,443C171,353,153,228,153,182C153,72,214,17,289,17Zm-2,-33C148,-16,58,90,58,225c0,181,170,433,400,433H807c27,0,59,0,59,-36c0,-52,-55,-52,-75,-52H623c48,-67,48,-141,48,-167C671,168,468,-16,287,-16Z")],
["rho", new SymbolInfo(7.5, 19, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M390,17c58,0,131,49,181,145c42,75,86,246,86,330c0,105,-49,150,-105,150C504,642,428,608,362,497C328,435,313,380,270,209c-4,-20,-12,-50,-12,-56C258,139,283,17,390,17ZM89,-329c-26,0,-43,18,-43,41c0,3,0,6,4,25L200,336c46,187,206,339,355,339c111,0,212,-87,212,-249C767,199,570,-16,391,-16C319,-16,270,24,240,86C199,-78,150,-283,142,-297c-3,-5,-21,-32,-53,-32Z")],
["mu", new SymbolInfo(8.7, 19, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M89,-329c-26,0,-43,18,-43,41c0,3,0,6,4,25L270,620c14,54,57,55,62,55c26,0,44,-15,44,-41c0,-8,-15,-66,-23,-98L289,280C278,237,267,194,267,150C267,67,304,17,380,17c124,0,198,139,199,146c5,16,21,80,40,156l72,286c12,52,52,53,59,53c23,0,44,-13,44,-41c0,-9,-15,-67,-22,-102C765,492,750,434,746,411L703,246C691,193,672,121,672,87c0,-30,5,-70,46,-70c63,0,90,90,116,189c5,22,6,28,22,28c4,0,18,0,18,-16c0,-3,-20,-96,-46,-151C804,18,768,-16,715,-16C648,-16,591,26,578,95C541,52,481,-16,374,-16c-30,0,-99,6,-148,47C168,-204,148,-283,142,-297c-3,-5,-21,-32,-53,-32Z")],
["lambda", new SymbolInfo(8.4, 19, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M127,-19C102,-19,81,-1,81,24c0,20,9,29,27,48L530,490L382,906c-38,104,-49,113,-99,122c-2,0,-14,3,-14,15c0,17,20,17,27,17c72,0,155,-20,187,-108L794,83C805,52,814,29,830,12c4,-6,7,-9,7,-13c0,-4,-1,-13,-17,-15H787c-41,0,-57,0,-81,33C681,52,608,286,545,446L177,12C165,-2,151,-19,127,-19Z")],
["kappa", new SymbolInfo(8.8, 19, "scale(0.001,-0.001)", "matrix(10,0,0,10,0,13)", "M128,-16C105,-16,84,-2,84,24c0,11,0,14,6,36L231,620c13,55,56,55,61,55c26,0,44,-15,44,-41c0,-8,-18,-79,-27,-119C301,489,283,413,278,396c55,18,92,41,196,130c67,56,157,132,250,132c55,0,61,-39,61,-53c0,-38,-33,-82,-82,-82c-48,0,-58,35,-58,53c0,8,4,26,7,34C591,584,547,547,477,487C435,452,387,411,336,383c86,-3,297,-13,297,-157c0,-17,-5,-37,-8,-50C619,150,613,113,613,90c0,-53,16,-73,49,-73c68,0,103,84,132,189c5,22,7,28,22,28c4,0,18,0,18,-16c0,-3,-18,-91,-56,-155C747,11,707,-16,658,-16C579,-16,518,44,518,134c0,13,1,29,8,54c3,15,3,23,3,34c0,99,-133,125,-262,129C202,95,211,124,196,69C183,20,174,-16,128,-16Z")],
]);
function trim(num) {
let s = FctHelper.round(num, 6);
while (s.endsWith('0')) {
s = s.slice(0, -1);
if (s.endsWith('.')) {
s = s.slice(0, -1);
break;
}
}
return s;
}
class SvgTreeEngine {
// Operators for propositional modal logic (alethic + deontic)
static operatorSvgData = new Map([
["and", `\t\t\t\t<svg style="display:block" width="14" height="18" viewBox="0 0 14 18">\n\t\t\t\t\t<path d="M3.668 12.571c-.199 0-.351-.184-.351-.352 0-.061.015-.107.046-.168l3.315-6.63a.335.335 0 0 1 .305-.199.34.34 0 0 1 .321.199l3.315 6.63a.343.343 0 0 1 .046.168c0 .168-.152.352-.351.352a.357.357 0 0 1-.321-.199l-3.01-6.004-2.994 6.004a.357.357 0 0 1-.321.199z"/>\n\t\t\t\t</svg>\n`],
["app", `\t\t\t\t<svg style="display:block" width="20" height="18" viewBox="0 0 20 18">\n\t\t\t\t\t<path d="M10.428,3.947 a6.34,6.34 0 0,0 -4.488,1.857 c-0.104,0.096 -0.104,0.256 0,0.352 l4.305,4.305 c0.048,0.056 0.112,0.078 0.176,0.078 s0.128,-0.022 0.176,-0.078 l4.32,-4.305 a0.25,0.25 0 0,0 0,-0.352 c-1.192,-1.184 -2.816,-1.857 -4.488,-1.857 z m0,0.488 a5.83,5.83 0 0,1 3.969,1.553 l-3.969,3.967 -3.977,-3.967 c1.08,-1.008 2.497,-1.553 3.977,-1.553 z"/>\n\t\t\t\t\t<path d="M4.016,9.277 c-0.736,0 -1.736,0.661 -1.736,2.041 s1,2.041 1.736,2.041 h7.207 5.783 c-0.49,0.7 -1.232,1.46 -1.232,1.83 0,0.21 0.12,0.35 0.246,0.35 0.077,0 0.139,-0.049 0.195,-0.139 0.567,-0.96 1.273,-1.831 2.148,-2.061 0.119,-0.03 0.203,-0.17 0.203,-0.34 0,-0.18 -0.084,-0.32 -0.203,-0.35 -0.875,-0.23 -1.581,-1.101 -2.148,-2.061 -0.056,-0.09 -0.118,-0.141 -0.195,-0.141 -0.126,0 -0.246,0.142 -0.246,0.352 0,0.36 0.721,1.1 1.232,1.85 h-5.783 H4.08 c-1.04,-0.069 -1.312,-0.81 -1.312,-1.334 0,-0.65 0.393,-1.287 1.297,-1.344 0.256,-0.011 0.256,-0.331 0.256,-0.342 0,-0.353 -0.241,-0.354 -0.305,-0.354 z"/>\n\t\t\t\t</svg>\n`],
["bot", `\t\t\t\t<svg style="display:block" width="11" height="18" viewBox="0 0 11 18">\n\t\t\t\t\t<path d="M2.868 13.35a.354.354 0 0 1-.351-.35c0-.199.168-.351.351-.351h2.628V5.193c0-.199.153-.351.351-.351.184 0 .352.152.352.351v7.456h2.612c.199 0 .352.152.352.351 0 .198-.153.35-.352.35z"/>\n\t\t\t\t</svg>\n`],
["com", `\t\t\t\t<svg style="display:block" width="20" height="18" viewBox="0 0 20 18">\n\t\t\t\t\t<path d="M10.428,3.484 c-2.19,0 -3.875,1.787 -3.875,3.875 0,2.184 1.793,3.865 3.875,3.865 2.19,0 3.877,-1.783 3.877,-3.865 0,-2.19 -1.789,-3.875 -3.877,-3.875 z m0,0.42 c1.962,0 3.457,1.595 3.457,3.455 0,1.956 -1.597,3.445 -3.457,3.445 -1.962,0 -3.455,-1.591 -3.455,-3.445 0,-1.962 1.601,-3.455 3.455,-3.455 z"/>\n\t\t\t\t\t<path d="M4.016,9.277 c-0.736,0 -1.736,0.661 -1.736,2.041 s1,2.041 1.736,2.041 h7.207 5.783 c-0.49,0.7 -1.232,1.46 -1.232,1.83 0,0.21 0.12,0.35 0.246,0.35 0.077,0 0.139,-0.049 0.195,-0.139 0.567,-0.96 1.273,-1.831 2.148,-2.061 0.119,-0.03 0.203,-0.17 0.203,-0.34 0,-0.18 -0.084,-0.32 -0.203,-0.35 -0.875,-0.23 -1.581,-1.101 -2.148,-2.061 -0.056,-0.09 -0.118,-0.141 -0.195,-0.141 -0.126,0 -0.246,0.142 -0.246,0.352 0,0.36 0.721,1.1 1.232,1.85 h-5.783 H4.08 c-1.04,-0.069 -1.312,-0.81 -1.312,-1.334 0,-0.65 0.393,-1.287 1.297,-1.344 0.256,-0.011 0.256,-0.331 0.256,-0.342 0,-0.353 -0.241,-0.354 -0.305,-0.354 z"/>\n\t\t\t\t</svg>\n`],
["equiv", `\t\t\t\t<svg style="display:block" width="19" height="18" viewBox="0 0 19 18">\n\t\t\t\t\t<path d="M6.953 11.54a.348.348 0 0 1-.275-.137c-.81-.963-1.818-1.834-3.071-2.063a.343.343 0 0 1-.29-.336c0-.183.122-.321.29-.351 1.253-.229 2.261-1.1 3.071-2.063a.348.348 0 0 1 .275-.137c.183 0 .351.137.351.351 0 .367-1.054 1.131-1.757 1.849h8.464c-.718-.749-1.757-1.497-1.757-1.849 0-.214.168-.351.352-.351.107 0 .213.046.275.137.825.963 1.818 1.834 3.07 2.063.168.03.291.168.291.351a.344.344 0 0 1-.291.336c-1.252.229-2.245 1.1-3.07 2.063a.329.329 0 0 1-.275.137.345.345 0 0 1-.352-.351c0-.367 1.07-1.131 1.757-1.833H5.547c.734.733 1.757 1.481 1.757 1.833a.345.345 0 0 1-.351.351z"/>\n\t\t\t\t</svg>\n`],
["implied", `\t\t\t\t<svg style="display:block" width="17" height="18" viewBox="0 0 17 18">\n\t\t\t\t\t<path d="M6.953 11.54a.348.348 0 0 1-.275-.137c-.81-.963-1.818-1.834-3.071-2.063a.343.343 0 0 1-.29-.336c0-.183.122-.321.29-.351 1.253-.229 2.261-1.1 3.071-2.063a.348.348 0 0 1 .275-.137c.183 0 .351.137.351.351 0 .367-1.054 1.131-1.757 1.849h8.311c.199 0 .352.153.352.351a.356.356 0 0 1-.352.352H5.547c.734.733 1.757 1.481 1.757 1.833a.345.345 0 0 1-.351.351z"/>\n\t\t\t\t</svg>\n`],
["imply", `\t\t\t\t<svg style="display:block" width="17" height="18" viewBox="0 0 17 18">\n\t\t\t\t\t<path d="M10.574 11.54a.345.345 0 0 1-.352-.351c0-.367 1.054-1.131 1.757-1.833H3.668a.367.367 0 0 1-.351-.352c0-.198.168-.351.351-.351h8.311c-.733-.749-1.757-1.497-1.757-1.849 0-.214.168-.351.352-.351a.35.35 0 0 1 .275.137c.809.963 1.818 1.834 3.07 2.063.169.03.291.168.291.351a.343.343 0 0 1-.291.336c-1.252.229-2.261 1.1-3.07 2.063a.35.35 0 0 1-.275.137z"/>\n\t\t\t\t</svg>\n`],
["nand", `\t\t\t\t<svg style="display:block" width="11" height="18" viewBox="0 0 11 18">\n\t\t\t\t\t<path d="M5.853 15.306a.366.366 0 0 1-.352-.351V5.117c-.733.733-1.482 1.757-1.833 1.757a.345.345 0 0 1-.351-.352c0-.107.046-.198.122-.275.978-.81 1.849-1.818 2.078-3.071a.343.343 0 0 1 .336-.29c.183 0 .321.122.351.29.229 1.253 1.085 2.261 2.063 3.071a.35.35 0 0 1 .137.275.359.359 0 0 1-.366.352c-.352 0-1.116-1.055-1.834-1.757v9.838a.355.355 0 0 1-.351.351z"/>\n\t\t\t\t</svg>\n`],
["nece", `\t\t\t\t<svg style="display:block" width="16" height="18" viewBox="0 0 16 18">\n\t\t\t\t\t<path d="M13.303 14.13V4.062H3.235V14.13zm-10.42.702a.345.345 0 0 1-.351-.351V3.711c0-.199.153-.351.351-.351h10.771c.214 0 .352.152.352.351v10.77a.337.337 0 0 1-.352.351z"/>\n\t\t\t\t</svg>\n`],
["nimplied", `\t\t\t\t<svg style="display:block" width="17" height="18" viewBox="0 0 17 18">\n\t\t\t\t\t<path d="M8.664 12.503c-.168 0-.26-.168-.214-.306l1.039-2.841H5.547c.734.733 1.757 1.481 1.757 1.833a.345.345 0 0 1-.351.351.348.348 0 0 1-.275-.137c-.81-.963-1.818-1.834-3.071-2.063a.343.343 0 0 1-.29-.336c0-.183.122-.321.29-.351 1.253-.229 2.261-1.1 3.071-2.063a.348.348 0 0 1 .275-.137c.183 0 .351.137.351.351 0 .367-1.054 1.131-1.757 1.849h4.202l1.084-3.01a.23.23 0 0 1 .214-.153c.168 0 .275.168.214.306l-1.039 2.857h3.636c.199 0 .352.153.352.351a.356.356 0 0 1-.352.352h-3.88l-1.1 2.994a.23.23 0 0 1-.214.153z"/>\n\t\t\t\t</svg>\n`],
["nimply", `\t\t\t\t<svg style="display:block" width="17" height="18" viewBox="0 0 17 18">\n\t\t\t\t\t<path d="M6.479 12.503c-.168 0-.275-.168-.214-.306l1.039-2.841H3.668a.367.367 0 0 1-.351-.352c0-.198.168-.351.351-.351h3.881l1.1-3.01a.229.229 0 0 1 .214-.153c.168 0 .275.168.213.306L8.038 8.653h3.941c-.733-.749-1.757-1.497-1.757-1.849 0-.214.168-.351.352-.351a.35.35 0 0 1 .275.137c.809.963 1.818 1.834 3.07 2.063.169.03.291.168.291.351a.343.343 0 0 1-.291.336c-1.252.229-2.261 1.1-3.07 2.063a.35.35 0 0 1-.275.137.345.345 0 0 1-.352-.351c0-.367 1.054-1.131 1.757-1.833H7.793l-1.1 2.994a.229.229 0 0 1-.214.153z"/>\n\t\t\t\t</svg>\n`],
["nor", `\t\t\t\t<svg style="display:block" width="11" height="18" viewBox="0 0 11 18">\n\t\t\t\t\t<path d="M5.853 15.306a.343.343 0 0 1-.336-.29c-.229-1.253-1.1-2.26-2.078-3.07a.385.385 0 0 1-.122-.275c0-.184.137-.352.351-.352.367 0 1.131 1.055 1.833 1.756V3.237c0-.183.168-.351.352-.351.198 0 .351.168.351.351v9.838c.749-.732 1.482-1.756 1.834-1.756.213 0 .366.168.366.352a.35.35 0 0 1-.137.275c-.978.81-1.834 1.817-2.063 3.07a.347.347 0 0 1-.351.29z"/>\n\t\t\t\t</svg>\n`],
["not", `\t\t\t\t<svg style="display:block" width="12" height="18" viewBox="0 0 12 18">\n\t\t\t\t\t<path d="M9.514 11.975a.345.345 0 0 1-.351-.351V9.256H2.868a.367.367 0 0 1-.351-.352c0-.198.168-.351.351-.351h6.646c.199 0 .351.137.351.351v2.72a.355.355 0 0 1-.351.351z"/>\n\t\t\t\t</svg>\n`],
["obli", `\t\t\t\t<svg style="display:block" width="17" height="18" viewBox="0 0 17 18">\n\t\t\t\t\t<path d="M8.979 14.848c3.102 0 5.76-2.49 5.76-5.744 0-3.101-2.49-5.76-5.76-5.76-3.086 0-5.76 2.491-5.76 5.76 0 3.086 2.491 5.744 5.76 5.744zm0 .702c-3.468 0-6.462-2.81-6.462-6.446 0-3.483 2.811-6.462 6.462-6.462 3.484 0 6.463 2.811 6.463 6.462 0 3.468-2.811 6.446-6.463 6.446z"/>\n\t\t\t\t</svg>\n`],
["or", `\t\t\t\t<svg style="display:block" width="14" height="18" viewBox="0 0 14 18">\n\t\t\t\t\t<path d="M6.983 12.571a.335.335 0 0 1-.305-.199l-3.315-6.63a.343.343 0 0 1-.046-.168c0-.168.152-.352.351-.352.138 0 .26.077.321.199l2.994 6.004 3.01-6.004a.357.357 0 0 1 .321-.199c.199 0 .351.184.351.352a.343.343 0 0 1-.046.168l-3.315 6.63a.34.34 0 0 1-.321.199z"/>\n\t\t\t\t</svg>\n`],
["perm", `\t\t\t\t<svg style="display:block" width="14" height="18" viewBox="0 0 14 18">\n\t\t\t\t\t<path d="m7.008 12.472 4.966-4.965a7.324 7.324 0 0 0-4.966-1.94c-1.848 0-3.62.687-4.965 1.94l4.965 4.965zm-.007.733a.313.313 0 0 1-.222-.092L1.387 7.721a.314.314 0 0 1 0-.443 7.964 7.964 0 0 1 5.621-2.322 7.96 7.96 0 0 1 5.607 2.322.312.312 0 0 1 0 .443l-5.393 5.392a.312.312 0 0 1-.221.092z"/>\n\t\t\t\t</svg>\n`],
["poss", `\t\t\t\t<svg style="display:block" width="15" height="18" viewBox="0 0 15 18">\n\t\t\t\t\t<path d="m7.971 13.671 4.568-4.567-4.568-4.583-4.583 4.583 4.583 4.567zm0 .856a.36.36 0 0 1-.26-.107L2.639 9.349a.353.353 0 0 1 0-.505l5.072-5.072a.35.35 0 0 1 .504 0l5.073 5.072a.351.351 0 0 1 0 .505L8.215 14.42a.35.35 0 0 1-.244.107z"/>\n\t\t\t\t</svg>\n`],
["top", `\t\t\t\t<svg style="display:block" width="11" height="18" viewBox="0 0 11 18">\n\t\t\t\t\t<path d="M5.847 13.35a.345.345 0 0 1-.351-.35V5.544H2.868a.355.355 0 0 1-.351-.351c0-.199.168-.351.351-.351h5.943c.199 0 .352.152.352.351a.345.345 0 0 1-.352.351H6.199V13c0 .198-.168.35-.352.35z"/>\n\t\t\t\t</svg>\n`],
["xor", `\t\t\t\t<svg style="display:block" width="19" height="18" viewBox="0 0 19 18">\n\t\t\t\t\t<path d="M8.588 12.503c-.169 0-.26-.168-.214-.306l1.039-2.841H5.547c.734.733 1.757 1.481 1.757 1.833a.345.345 0 0 1-.351.351.348.348 0 0 1-.275-.137c-.81-.963-1.818-1.834-3.071-2.063a.343.343 0 0 1-.29-.336c0-.183.122-.321.29-.351 1.253-.229 2.261-1.1 3.071-2.063a.348.348 0 0 1 .275-.137c.183 0 .351.137.351.351 0 .367-1.054 1.131-1.757 1.849h4.125l1.085-3.01a.23.23 0 0 1 .214-.153c.183 0 .275.168.214.306l-1.024 2.857h3.85c-.718-.749-1.757-1.497-1.757-1.849 0-.214.168-.351.352-.351.107 0 .213.046.275.137.825.963 1.818 1.834 3.07 2.063.168.03.291.168.291.351a.344.344 0 0 1-.291.336c-1.252.229-2.245 1.1-3.07 2.063a.329.329 0 0 1-.275.137.345.345 0 0 1-.352-.351c0-.367 1.07-1.131 1.757-1.833h-4.11l-1.1 2.994a.228.228 0 0 1-.213.153z"/>\n\t\t\t\t</svg>\n`]
]);
// Construction
constructor(tree = null, svgData = null, cmdPrefix = "", execute = true) {
this._svgFile = { value: null }; // last result
this._tree = tree;
this._layoutTreeEngine = new LayoutTreeEngine();
// settings
this._avoidOverlaps = false;
this._viewBoxOffsetX = 2.5;
this._viewBoxOffsetY = 2.5;
this._symbolXShift = -0.5;
this._symbolYShift = 0.0;
this._symbolScale = 0.21;
this._webColor_background = "#f0f0f0";
this._webColor_edgeStroke = "#000";
this._svgNumber_edgeStrokeWidth = "0.15";
this._webColor_opVertexFill = "#ccf";
this._webColor_opVertexStroke = "#4040ff";
this._webColor_opVertexFont = "#000";
this._svgNumber_opVertexStrokeWidth = "0.2";
this._webColor_varVertexFill = "#ccc";
this._webColor_varVertexStroke = "#404040";
this._webColor_varVertexFont = "#000";
this._svgNumber_varVertexStrokeWidth = "0.2";
this._svgNumber_vertexRadius = "2.5";
this._layoutTree_minHorizontalSpace = 10.0;
this._layoutTree_minVerticalSpace = 10.0;
// Apply layout tree settings
this._layoutTreeEngine.setMinHorizontalSpace(this._layoutTree_minHorizontalSpace);
this._layoutTreeEngine.setMinVerticalSpace(this._layoutTree_minVerticalSpace);
if (execute && tree && svgData) {
this.execute(tree, svgData, cmdPrefix);
}
}
// Getters & setters
getSvgFile() {
return this._svgFile.value;
}
getTree() {
return this._tree;
}
setTree(value) {
this._tree = value;
}
getLayoutTreeEngine() {
return this._layoutTreeEngine;
}
setLayoutTreeEngine(value) {
this._layoutTreeEngine = value;
}
getAvoidOverlaps() {
return this._avoidOverlaps;
}
setAvoidOverlaps(value) {
this._avoidOverlaps = value;
}
getViewBoxOffsetX() {
return this._viewBoxOffsetX;
}
setViewBoxOffsetX(value) {
this._viewBoxOffsetX = value;
}
getViewBoxOffsetY() {
return this._viewBoxOffsetY;
}
setViewBoxOffsetY(value) {
this._viewBoxOffsetY = value;
}
getSymbolXShift() {
return this._symbolXShift;
}
setSymbolXShift(value) {
this._symbolXShift = value;
}
getSymbolYShift() {
return this._symbolYShift;
}
setSymbolYShift(value) {
this._symbolYShift = value;
}
getSymbolScale() {
return this._symbolScale;
}
setSymbolScale(value) {
this._symbolScale = value;
}
getWebColor_background() {
return this._webColor_background;
}
setWebColor_background(value) {
this._webColor_background = value;
}
getWebColor_edgeStroke() {
return this._webColor_edgeStroke;
}
setWebColor_edgeStroke(value) {
this._webColor_edgeStroke = value;
}
getSvgNumber_edgeStrokeWidth() {
return this._svgNumber_edgeStrokeWidth;
}
setSvgNumber_edgeStrokeWidth(value) {
this._svgNumber_edgeStrokeWidth = value;
}
getWebColor_opVertexFill() {
return this._webColor_opVertexFill;
}
setWebColor_opVertexFill(value) {
this._webColor_opVertexFill = value;
}
getWebColor_opVertexStroke() {
return this._webColor_opVertexStroke;
}
setWebColor_opVertexStroke(value) {
this._webColor_opVertexStroke = value;
}
getWebColor_opVertexFont() {
return this._webColor_opVertexFont;
}
setWebColor_opVertexFont(value) {
this._webColor_opVertexFont = value;
}
getSvgNumber_opVertexStrokeWidth() {
return this._svgNumber_opVertexStrokeWidth;
}
setSvgNumber_opVertexStrokeWidth(value) {
this._svgNumber_opVertexStrokeWidth = value;
}
getWebColor_varVertexFill() {
return this._webColor_varVertexFill;
}
setWebColor_varVertexFill(value) {
this._webColor_varVertexFill = value;
}
getWebColor_varVertexStroke() {
return this._webColor_varVertexStroke;
}
setWebColor_varVertexStroke(value) {
this._webColor_varVertexStroke = value;
}
getWebColor_varVertexFont() {
return this._webColor_varVertexFont;
}
setWebColor_varVertexFont(value) {
this._webColor_varVertexFont = value;
}
getSvgNumber_varVertexStrokeWidth() {
return this._svgNumber_varVertexStrokeWidth;
}
setSvgNumber_varVertexStrokeWidth(value) {
this._svgNumber_varVertexStrokeWidth = value;
}
getSvgNumber_vertexRadius() {
return this._svgNumber_vertexRadius;
}
setSvgNumber_vertexRadius(value) {
this._svgNumber_vertexRadius = value;
}
getLayoutTree_minHorizontalSpace() {
return this._layoutTree_minHorizontalSpace;
}
setLayoutTree_minHorizontalSpace(value) {
this._layoutTree_minHorizontalSpace = value;
}
getLayoutTree_minVerticalSpace() {
return this._layoutTree_minVerticalSpace;
}
setLayoutTree_minVerticalSpace(value) {
this._layoutTree_minVerticalSpace = value;
}
// Svg creation functions
constructLayoutAndSvgTree(out_svgFile, layoutTreeEngine, tree, svgData, cmdPrefix, viewBoxOffsetX, viewBoxOffsetY, webColor_background, webColor_edgeStroke, svgNumber_edgeStrokeWidth, webColor_opVertexFill, webColor_opVertexStroke, webColor_opVertexFont, svgNumber_opVertexStrokeWidth, webColor_varVertexFill, webColor_varVertexStroke, webColor_varVertexFont, svgNumber_varVertexStrokeWidth, svgNumber_vertexRadius, symbolXShift, symbolYShift, symbolScale, avoidOverlaps) {
// Create layout tree
layoutTreeEngine.reset();
const nodeVec = [];
TreeNodeAdapter.createLayoutTreeVec_outVec(nodeVec, tree, TreeNodeAdapter.convertFuncDefault);
layoutTreeEngine.setRoot(nodeVec[0]);
layoutTreeEngine.addNodes(nodeVec);
layoutTreeEngine.execute();
// Create svg tree
this.constructSvgTree(out_svgFile, layoutTreeEngine, svgData, cmdPrefix, viewBoxOffsetX, viewBoxOffsetY, webColor_background, webColor_edgeStroke, svgNumber_edgeStrokeWidth, webColor_opVertexFill, webColor_opVertexStroke, webColor_opVertexFont, svgNumber_opVertexStrokeWidth, webColor_varVertexFill, webColor_varVertexStroke, webColor_varVertexFont, svgNumber_varVertexStrokeWidth, svgNumber_vertexRadius, symbolXShift, symbolYShift, symbolScale, avoidOverlaps);
}
constructSvgTree(out_svgFile, layoutTreeEngine, svgData, cmdPrefix, viewBoxOffsetX, viewBoxOffsetY, webColor_background, webColor_edgeStroke, svgNumber_edgeStrokeWidth, webColor_opVertexFill, webColor_opVertexStroke, webColor_opVertexFont, svgNumber_opVertexStrokeWidth, webColor_varVertexFill, webColor_varVertexStroke, webColor_varVertexFont, svgNumber_varVertexStrokeWidth, svgNumber_vertexRadius, symbolXShift, symbolYShift, symbolScale, avoidOverlaps) {
// Start creating new svg with specified viewBox.
const bounds = layoutTreeEngine.bounds();
const viewBox_x = trim(bounds.x - 2 * parseFloat(svgNumber_vertexRadius));
const viewBox_y = trim(bounds.y - 2 * parseFloat(svgNumber_vertexRadius));
const viewBox_w = trim(bounds.width + 2 * viewBoxOffsetX);
const viewBox_h = trim(bounds.height + 2 * viewBoxOffsetY);
out_svgFile.value = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="${5 * viewBox_w}px" height="${5 * viewBox_h}px" viewBox="${viewBox_x} ${viewBox_y} ${viewBox_w} ${viewBox_h}">\n\t<rect x="${viewBox_x}" y="${viewBox_y}" width="100%" height="100%" fill="${webColor_background}"/>\n`;
let useElements = "";
// Create all edges
const nodeMap = layoutTreeEngine.getNodes();
for (const node of nodeMap) {
for (const childNode of node.getChildren()) {
let vertexRadius;
if (avoidOverlaps)
vertexRadius = parseFloat(svgNumber_vertexRadius);
const edge = `\t<line style="fill:none; stroke:${webColor_edgeStroke}; stroke-width:${svgNumber_edgeStrokeWidth}" x1="${trim(node.getX() + viewBoxOffsetX)}" y1="${trim(avoidOverlaps ? node.getY() + viewBoxOffsetY + vertexRadius : node.getY() + viewBoxOffsetY)}" x2="${trim(childNode.getX() + viewBoxOffsetX)}" y2="${trim(avoidOverlaps ? childNode.getY() + viewBoxOffsetY - vertexRadius : childNode.getY() + viewBoxOffsetY)}"/>\n`;
out_svgFile.value += edge; // add edge to svg file
}
}
// Create a circle to be used for operator vertices.
const vertexCircle = `\t\t<circle id="vertexCircle" style="fill:${webColor_opVertexFill}; stroke:${webColor_opVertexStroke}; stroke-width:${svgNumber_opVertexStrokeWidth}" cx="0" cy="0" r="${svgNumber_vertexRadius}"/>\n`;
// Create a square to be used for variable vertices.
const vertexSquare = `\t\t<rect id="vertexSquare" style="fill:${webColor_varVertexFill}; stroke:${webColor_varVertexStroke}; stroke-width:${svgNumber_varVertexStrokeWidth}" x="-${svgNumber_vertexRadius}" y="-${svgNumber_vertexRadius}" width="${trim(2 * parseFloat(svgNumber_vertexRadius))}" height="${trim(2 * parseFloat(svgNumber_vertexRadius))}"/>\n`;
// Start creating vertex library.
let vertexLibrary = `\t<defs id="vertexLibrary">\n` + vertexCircle + vertexSquare;
// Add all required symbol vertices to vertex library, and create links to vertices
const usedKeys = [];
const usedNameSymbols = [];
for (const nodePtr of nodeMap) {
const nodeLabel = nodePtr.getValue().getValue();
const cmdPrefixPos = nodeLabel.indexOf(cmdPrefix) === 0 ? 0 : -1;
let key;
if (cmdPrefixPos === 0)
key = nodeLabel.substring(cmdPrefix.length);
if (cmdPrefixPos === 0 && svgData.has(key)) { // The node label starts with the command prefix, and the command addresses an existing symbol.
// 1. Add link
useElements += this._operatorLink(key, nodePtr.getX() + viewBoxOffsetX, nodePtr.getY() + viewBoxOffsetY);
// 2. Add symbol to vertex library (if not present yet)
if (!usedKeys.includes(key)) { // the symbol was not already mentioned
usedKeys.push(key);
vertexLibrary += this._operatorForVertexLibrary(key, "vertexCircle", svgData, symbolXShift, symbolYShift, symbolScale, webColor_opVertexFont);
}
} else {
// 1. Get variable name as array
const variableName = [];
for (let i = 0, length = nodeLabel.length; i < length; i++)
if (nodeLabel.substring(i, i + cmdPrefix.length).indexOf(cmdPrefix) === 0) { // the current symbol in nodeLabel is cmdPrefix
i += cmdPrefix.length;
// Is the cmdPrefix followed by a special symbol?
let noSpecialSymbol = true;
const restStr = nodeLabel.substring(i);
for (const specialCmdName of __specialCommandNames)
if (restStr.indexOf(specialCmdName) === 0) { // Are we at a cmdPrefix + __specialCommandNames[...] ? (Which is used for base notation)
i += specialCmdName.length;
variableName.push("\\" + specialCmdName);
noSpecialSymbol = false;
break;
}
if (noSpecialSymbol) // Found no special command, look for special symbols.
for (const [keySym] of __specialSymbolPathData.entries())
if (restStr.indexOf(keySym) === 0) { // Rest string begins with a special symbol name?
i += keySym.length;
variableName.push(keySym);
noSpecialSymbol = false;
break;
}
if (noSpecialSymbol)
variableName.push("\\"); // any unused cmdPrefix is printed as backslash
i--; // This will be done by the loop.
} else {
const symbol = nodeLabel.substring(i, i + 1);
if (__characterPathData.has(symbol)) // Only add symbol if we can display it.
variableName.push(symbol);
else
console.error(`Could not display symbol "${symbol}".`);
}
// 2. Add link
useElements += this._textLinks(variableName, "vertexSquare", nodePtr.getX() + viewBoxOffsetX, nodePtr.getY() + viewBoxOffsetY, symbolScale, svgNumber_vertexRadius, svgNumber_varVertexStrokeWidth);
// 3. Add symbols to vertex library (if not present yet)
for (const symbol of variableName)
if (!usedNameSymbols.includes(symbol) && symbol !== "\\_") { // The symbol was not already mentioned, and its not a special command.
usedNameSymbols.push(symbol);
vertexLibrary += this._symbolForVertexLibrary(symbol, svgData, symbolXShift, symbolYShift, symbolScale, webColor_varVertexFont);
}
}
}
out_svgFile.value += vertexLibrary + "\t</defs>\n" + useElements + `</svg>\n`;
}
// Svg creation helper functions
_operatorForVertexLibrary(id, destinationVertexId, svgData, symbolXShift, symbolYShift, symbolScale, webColor_opVertexFont) {
let vertex = `\t\t<g id="${id}">\n\t\t\t<use xlink:href="#${destinationVertexId}"/>\n\t\t\t<g fill="${webColor_opVertexFont}" transform="`;
const getWH = (width) => {
let pos = svgChild.indexOf(width ? `width="` : `height="`);
if (pos === -1)
throw `missing ${width ? "width" : "height"} from SVG`;
pos += (width ? 7 : 8);
const end = svgChild.indexOf(`"`, pos);
if (end === -1)
throw `missing '"' after ${width ? "width" : "height"} from SVG`;
return parseInt(svgChild.substring(pos, end));
};
// Load the actual svg, describing the symbol
let svgChild = svgData.get(id);
let shiftX = (-getWH(true) / 2) + symbolXShift;
let shiftY = (-getWH(false) / 2) + symbolYShift;
vertex += `scale(${symbolScale}) translate(${trim(shiftX)},${trim(shiftY)})">\n${svgChild}\t\t\t</g>\n\t\t</g>\n`;
return vertex;
}
_operatorLink(destinationId, relPosX, relPosY) {
return `\t<use transform="translate(${trim(relPosX)},${trim(relPosY)})" xlink:href="#${destinationId}"/>\n`;
}
_symbolForVertexLibrary(id, svgData, symbolXShift, symbolYShift, symbolScale, webColor_varVertexFont) {
const regularSymbolInfo = __characterPathData.get(id);
let symbolInfo = regularSymbolInfo !== undefined ? regularSymbolInfo : __specialSymbolPathData.get(id);
let shiftY = (-symbolInfo.height / 2) + symbolYShift;
return `\t\t<g id="var_${id}" fill="${webColor_varVertexFont}">\n\t\t\t<g transform="scale(${symbolScale}) translate(0,${trim(shiftY)}) ${symbolInfo.postTransform}">\n\t\t\t\t<path transform="${symbolInfo.preTransform}" d="${symbolInfo.path}"/>\n\t\t\t</g>\n\t\t</g>\n`;
}
_textLinks(variableName, destinationVertexId, relPosX, relPosY, symbolScale, svgNumber_vertexRadius, svgNumber_varVertexStrokeWidth) {
// 1. Create vertex
let svg = `\t<use transform="translate(${trim(relPosX)},${trim(relPosY)})" xlink:href="#${destinationVertexId}"/>\n`;
// 2. Create font inside of vertex
const width = (parseFloat(svgNumber_vertexRadius) - parseFloat(svgNumber_varVertexStrokeWidth)) * 2;
let trueWidth = 0.0;
let nextBaseNotation = false;
for (const symbol of variableName) {
if (symbol.length === 1 || !symbol.startsWith("\\")) {
const regularSymbolInfo = __characterPathData.get(symbol);
trueWidth += (regularSymbolInfo !== undefined ? regularSymbolInfo.width : __specialSymbolPathData.get(symbol).width) * symbolScale * (nextBaseNotation ? 0.7 : 1.0);
nextBaseNotation = false;
} else {
if (symbol === "\\_")
nextBaseNotation = true;
// NOTE: More special commands can be added here
}
}
let shrinkFactor = 1.0;
if (trueWidth > width)
shrinkFactor = width / trueWidth;
let offsetX = 0.0;
const leftShift = Math.min(trueWidth / 2, width / 2);
nextBaseNotation = false;
for (const symbol of variableName)
if (symbol.length === 1 || !symbol.startsWith("\\")) { // If we're not at a special command, i.e. symbol.length() == 1 or symbol does not start with "\\".
const regularSymbolInfo = __characterPathData.get(symbol);
const useSpecialSymbols = regularSymbolInfo === undefined;
let transformStr = `translate(${trim(relPosX + offsetX - leftShift)},${trim(relPosY)})`;
if (trueWidth > width)
transformStr += ` scale(${trim(shrinkFactor)})`;
if (nextBaseNotation)
transformStr += ` scale(0.7) translate(0,${trim((useSpecialSymbols ? __specialSymbolPathData.get(symbol).height : regularSymbolInfo.height) * symbolScale * 0.42)})`;
svg += `\t<use transform="${transformStr}" xlink:href="#var_${symbol}"/>\n`;
offsetX += (useSpecialSymbols ? __specialSymbolPathData.get(symbol).width : regularSymbolInfo.width) * symbolScale * (nextBaseNotation ? 0.7 : 1.0) * shrinkFactor;
nextBaseNotation = false;
} else {
if (symbol === "\\_")
nextBaseNotation = true;
// NOTE: More special commands can be added here
}
return svg;
}
// Engine methods
// tree : Tree to be illustrated as svg
// svgData : Svg symbols with which accordingly labeled vertices are to be printed
// cmdPrefix : Prefix of every special vertex (only print special symbol for layout nodes whose string starts with it, such that the rest is a key in svgData)
execute(tree, svgData, cmdPrefix) {
this._tree = tree;
this.constructLayoutAndSvgTree(this._svgFile, this._layoutTreeEngine, this._tree, svgData, cmdPrefix, this._viewBoxOffsetX, this._viewBoxOffsetY, this._webColor_background, this._webColor_edgeStroke, this._svgNumber_edgeStrokeWidth, this._webColor_opVertexFill, this._webColor_opVertexStroke, this._webColor_opVertexFont, this._svgNumber_opVertexStrokeWidth, this._webColor_varVertexFill, this._webColor_varVertexStroke, this._webColor_varVertexFont, this._svgNumber_varVertexStrokeWidth, this._svgNumber_vertexRadius, this._symbolXShift, this._symbolYShift, this._symbolScale, this._avoidOverlaps);
}
// Should only use this after once execute() was called to construct layout.
executeWithoutLayoutConstruction(svgData, cmdPrefix) {
constructSvgTree(this._svgFile, this._layoutTreeEngine, svgData, cmdPrefix, this._viewBoxOffsetX, this._viewBoxOffsetY, this._webColor_background, this._webColor_edgeStroke, this._svgNumber_edgeStrokeWidth, this._webColor_opVertexFill, this._webColor_opVertexStroke, this._webColor_opVertexFont, this._svgNumber_opVertexStrokeWidth, this._webColor_varVertexFill, this._webColor_varVertexStroke, this._webColor_varVertexFont, this._svgNumber_varVertexStrokeWidth, this._svgNumber_vertexRadius, this._symbolXShift, this._symbolYShift, this._symbolScale, this._avoidOverlaps);
}
}