rvc3python 0.2.3__py3-none-any.whl → 0.9.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. RVC3/__init__.py +5 -0
  2. RVC3/bin/bdsim_path.py +10 -0
  3. RVC3/bin/rvctool.py +354 -0
  4. RVC3/examples/hershey/genhershey.py +136 -0
  5. RVC3/examples/hershey/hershey.json +1 -0
  6. RVC3/examples/hershey/hershey.txt +2324 -0
  7. RVC3/examples/hershey/roman-plain.txt +8 -0
  8. RVC3/examples/hershey/roman-simplex.txt +8 -0
  9. RVC3/examples/hershey/roman-triplex.txt +8 -0
  10. RVC3/models/IBVS-arm-main.py +14 -16
  11. RVC3/models/IBVS-arm.bd +1486 -0
  12. RVC3/models/IBVS-holonomic-main.py +21 -13
  13. RVC3/models/IBVS-holonomic.bd +1382 -0
  14. RVC3/models/IBVS-main.py +1 -8
  15. RVC3/models/IBVS-nonholonomic-main.py +42 -32
  16. RVC3/models/IBVS-nonholonomic.bd +2388 -0
  17. RVC3/models/IBVS-partitioned-main.py +16 -18
  18. RVC3/models/IBVS-partitioned.bd +1630 -0
  19. RVC3/models/IBVS-quadrotor-main.py +97 -37
  20. RVC3/models/IBVS-quadrotor.bd +2343 -0
  21. RVC3/models/IBVS.bd +1036 -0
  22. RVC3/models/RRMC.bd +383 -0
  23. RVC3/models/RRMC.py +16 -19
  24. RVC3/models/RRMC2.bd +640 -0
  25. RVC3/models/RRMC2.py +15 -10
  26. RVC3/models/SEA-main.py +30 -0
  27. RVC3/models/SEA.bd +1470 -0
  28. RVC3/models/SEA.py +25 -15
  29. RVC3/models/braitenberg.bd +906 -0
  30. RVC3/models/braitenberg.py +34 -23
  31. RVC3/models/cartspace.bd +258 -0
  32. RVC3/models/computed-torque-main.py +26 -0
  33. RVC3/models/computed-torque.bd +925 -0
  34. RVC3/models/driveconfig.bd +1550 -0
  35. RVC3/models/driveconfig.py +69 -45
  36. RVC3/models/driveline.bd +917 -0
  37. RVC3/models/driveline.py +34 -20
  38. RVC3/models/drivepoint.bd +963 -0
  39. RVC3/models/drivepoint.py +33 -21
  40. RVC3/models/drivepursuit.bd +807 -0
  41. RVC3/models/drivepursuit.py +38 -33
  42. RVC3/models/feedforward-main.py +32 -0
  43. RVC3/models/feedforward.bd +1174 -0
  44. RVC3/models/jointspace.bd +323 -0
  45. RVC3/models/jointspace.py +10 -5
  46. RVC3/models/lanechange.bd +202 -0
  47. RVC3/models/lanechange.py +12 -5
  48. RVC3/models/opspace-main.py +84 -0
  49. RVC3/models/opspace.bd +2084 -0
  50. RVC3/models/opspace.py +50 -34
  51. RVC3/models/ploop.bd +826 -0
  52. RVC3/models/ploop.py +18 -11
  53. RVC3/models/ploop_test.bd +417 -0
  54. RVC3/models/ploop_test.py +18 -15
  55. RVC3/models/quad_model.py +132 -0
  56. RVC3/models/quadrotor-main.py +23 -14
  57. RVC3/models/quadrotor.bd +1914 -0
  58. RVC3/models/quadrotor.py +51 -30
  59. RVC3/models/vloop.bd +1217 -0
  60. RVC3/models/vloop.py +19 -14
  61. RVC3/models/vloop_test.bd +625 -0
  62. RVC3/models/vloop_test.py +19 -21
  63. RVC3/models/zerotorque.bd +138 -0
  64. RVC3/models/zerotorque.py +10 -4
  65. {rvc3python-0.2.3.dist-info → rvc3python-0.9.1.dist-info}/METADATA +142 -51
  66. rvc3python-0.9.1.dist-info/RECORD +81 -0
  67. {rvc3python-0.2.3.dist-info → rvc3python-0.9.1.dist-info}/WHEEL +1 -1
  68. rvc3python-0.9.1.dist-info/entry_points.txt +3 -0
  69. rvc3python-0.9.1.dist-info/top_level.txt +1 -0
  70. RVC3/models/puma_collapse.py +0 -33
  71. rvc3python-0.2.3.data/scripts/bdsim_path +0 -6
  72. rvc3python-0.2.3.data/scripts/rvctool +0 -296
  73. rvc3python-0.2.3.dist-info/RECORD +0 -67
  74. rvc3python-0.2.3.dist-info/top_level.txt +0 -2
  75. tools/bookcheck.py +0 -107
  76. tools/bookurls.py +0 -63
  77. tools/crop.py +0 -55
  78. tools/export.py +0 -19
  79. tools/fixidx.py +0 -23
  80. tools/grepall.py +0 -56
  81. tools/https.py +0 -69
  82. tools/ipy.py +0 -54
  83. tools/m2p.py +0 -109
  84. tools/mgrepall.py +0 -56
  85. tools/pvplus.py +0 -444
  86. tools/pycon.py +0 -30
  87. tools/pyrun (original).py +0 -650
  88. tools/pyrun-old.py +0 -168
  89. tools/pyrun-old2.py +0 -648
  90. tools/pyrun-working.py +0 -147
  91. tools/pyrun.py +0 -679
  92. tools/rmfigs.py +0 -50
  93. tools/rmoldfigs.py +0 -36
  94. tools/runall.py +0 -59
  95. tools/rvcprint.py +0 -164
  96. tools/test1.py +0 -47
  97. tools/tex2py.py +0 -51
  98. {tools → RVC3/bin}/__init__.py +0 -0
  99. {rvc3python-0.2.3.dist-info → rvc3python-0.9.1.dist-info}/LICENSE +0 -0
RVC3/__init__.py CHANGED
@@ -0,0 +1,5 @@
1
+ try:
2
+ import importlib.metadata
3
+ __version__ = importlib.metadata.version("rvc3python")
4
+ except:
5
+ pass
RVC3/bin/bdsim_path.py ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env python3
2
+
3
+ import RVC3.models as models
4
+ from pathlib import Path
5
+
6
+ def main():
7
+ print(Path(models.__file__).parent)
8
+
9
+ if __name__ == "__main__":
10
+ main()
RVC3/bin/rvctool.py ADDED
@@ -0,0 +1,354 @@
1
+ #!/usr/bin/env python3
2
+
3
+ # a simple Robotics & Vision Toolbox "shell", runs Python3 and loads
4
+ # NumPy, SciPy, RTB-P, SMTB-P, MVTB-P.
5
+ #
6
+ # Run it from the shell
7
+ # $ rvctool
8
+ #
9
+ # Default switches can be set using the environent variables RVCTOOL, eg.
10
+ #
11
+ # setenv RVCTOOL "-n"
12
+ # export RVCTOOL="-n"
13
+
14
+ # import stuff
15
+ import os
16
+ from pathlib import Path
17
+ import sys
18
+ from importlib.metadata import version
19
+ import argparse
20
+
21
+ from pygments.token import Token
22
+ from IPython.terminal.prompts import Prompts
23
+ from IPython.terminal.prompts import ClassicPrompts
24
+ from traitlets.config import Config
25
+ import IPython
26
+ import matplotlib as mpl
27
+
28
+ try:
29
+ from colored import fg, bg, attr
30
+
31
+ _colored = True
32
+ # print('using colored output')
33
+ except ImportError:
34
+ # print('colored not found')
35
+ _colored = False
36
+
37
+ # imports for use by IPython and user
38
+ from math import pi # lgtm [py/unused-import]
39
+ import numpy as np
40
+ from scipy import linalg, optimize
41
+ import matplotlib.pyplot as plt # lgtm [py/unused-import]
42
+ from spatialmath import * # lgtm [py/polluting-import]
43
+ from spatialmath.base import *
44
+ from spatialmath.base import sym
45
+ from spatialgeometry import * # lgtm [py/polluting-import]
46
+
47
+
48
+ def parse_arguments():
49
+ parser = argparse.ArgumentParser(
50
+ prog="rvctool",
51
+ epilog=(
52
+ "To set defaults put the relevant command line switches as a string in the"
53
+ " environment varible RVCTOOL."
54
+ ),
55
+ description=(
56
+ "Interactive python enviroment for exploring the Robotics & Machine Vision"
57
+ " toolboxes for Python"
58
+ ),
59
+ )
60
+ parser.add_argument("script", default=None, nargs="?", help="specify script to run")
61
+
62
+ parser.add_argument(
63
+ "-B", "--backend", default=None, help="specify graphics backend"
64
+ )
65
+ parser.add_argument(
66
+ "-C",
67
+ "--color",
68
+ default="neutral",
69
+ help=(
70
+ "specify terminal color scheme (neutral, lightbg, nocolor, linux), linux is"
71
+ " for dark mode"
72
+ ),
73
+ )
74
+ parser.add_argument("--confirmexit", "-x", default=False, help="confirm exit")
75
+ parser.add_argument("--prompt", "-p", default=None, help="input prompt")
76
+ parser.add_argument(
77
+ "-r",
78
+ "--resultprefix",
79
+ default=None,
80
+ help="execution result prefix, include {} for execution count number",
81
+ )
82
+ parser.add_argument(
83
+ "-b",
84
+ "--no-banner",
85
+ dest="banner",
86
+ default=True,
87
+ action="store_false",
88
+ help="suppress startup banner",
89
+ )
90
+ parser.add_argument(
91
+ "-c",
92
+ "--nocwd",
93
+ dest="cwd",
94
+ default=True,
95
+ action="store_false",
96
+ help="suppress cwd to RVC3 folder",
97
+ )
98
+ parser.add_argument(
99
+ "-a",
100
+ "--showassign",
101
+ default=False,
102
+ action="store_true",
103
+ help="do not display the result of assignments",
104
+ )
105
+ parser.add_argument(
106
+ "-n",
107
+ "--normal",
108
+ dest="book",
109
+ default=True,
110
+ action="store_false",
111
+ help="use normal ipython settings for prompts and display on assignment",
112
+ )
113
+ parser.add_argument(
114
+ "-R",
115
+ "--no-robot",
116
+ dest="robot",
117
+ default=True,
118
+ action="store_false",
119
+ help="do not import robotics toolbox (RTB-P)",
120
+ )
121
+ parser.add_argument(
122
+ "-V",
123
+ "--no-vision",
124
+ dest="vision",
125
+ default=True,
126
+ action="store_false",
127
+ help="do not import vision toolbox (MVTB-P)",
128
+ )
129
+ parser.add_argument(
130
+ "--ansi",
131
+ default=False,
132
+ action="store_true",
133
+ help="use ANSImatrix to display matrices",
134
+ )
135
+ parser.add_argument(
136
+ "-e",
137
+ "--examples",
138
+ default=False,
139
+ action="store_true",
140
+ help="change working directory to shipped examples",
141
+ )
142
+ parser.add_argument(
143
+ "-s",
144
+ "--swift",
145
+ default=False,
146
+ action="store_true",
147
+ help="use Swift as default backend",
148
+ )
149
+
150
+ # add options for light/dark mode
151
+
152
+ env = os.getenv("RVCTOOL")
153
+ if env is not None:
154
+ # if envariable is set, parse it just like command line options
155
+ args = parser.parse_args(env.split())
156
+ # then use it to set the defaults for the actual command line parsing
157
+ parser.set_defaults(**args.__dict__)
158
+
159
+ args, rest = parser.parse_known_args()
160
+
161
+ # remove the arguments we've just parsed from sys.argv so that IPython can have a
162
+ # go at them later
163
+ sys.argv = [sys.argv[0]] + rest
164
+
165
+ if args.script is not None:
166
+ args.banner = False
167
+
168
+ return args
169
+
170
+
171
+ def make_banner(args):
172
+ # http://patorjk.com/software/taag/#p=display&f=Standard&t=RVC%203
173
+ # print the banner: standard
174
+ # https://patorjk.com/software/taag/#p=display&f=Standard&t=Robotics%2C%20Vision%20%26%20Control%203
175
+
176
+ banner = fg("yellow")
177
+ banner += r""" ____ _ _ _ __ ___ _ ___ ____ _ _ _____
178
+ | _ \ ___ | |__ ___ | |_(_) ___ ___ \ \ / (_)___(_) ___ _ __ ( _ ) / ___|___ _ __ | |_ _ __ ___ | | |___ /
179
+ | |_) / _ \| '_ \ / _ \| __| |/ __/ __| \ \ / /| / __| |/ _ \| '_ \ / _ \/\ | | / _ \| '_ \| __| '__/ _ \| | |_ \
180
+ | _ < (_) | |_) | (_) | |_| | (__\__ \_ \ V / | \__ \ | (_) | | | | | (_> < | |__| (_) | | | | |_| | | (_) | | ___) |
181
+ |_| \_\___/|_.__/ \___/ \__|_|\___|___( ) \_/ |_|___/_|\___/|_| |_| \___/\/ \____\___/|_| |_|\__|_| \___/|_| |____/
182
+ |/
183
+ for Python"""
184
+
185
+ versions = []
186
+ if args.robot:
187
+ versions.append(f"RTB=={version('roboticstoolbox-python')}")
188
+ if args.vision:
189
+ versions.append(f"MVTB=={version('machinevision-toolbox-python')}")
190
+ try:
191
+ versions.append(f"SG=={version('spatialmath-python')}")
192
+ except:
193
+ pass
194
+ versions.append(f"SMTB=={version('spatialmath-python')}")
195
+ versions.append(f"NumPy=={version('numpy')}")
196
+ versions.append(f"SciPy=={version('scipy')}")
197
+ versions.append(f"Matplotlib=={version('matplotlib')}")
198
+
199
+ # create banner
200
+ banner += " (" + ", ".join(versions) + ")"
201
+ banner += r"""
202
+
203
+ import math
204
+ import numpy as np
205
+ from scipy import linalg, optimize
206
+ import matplotlib.pyplot as plt
207
+ from spatialmath import *
208
+ from spatialmath.base import *
209
+ from spatialmath.base import sym
210
+ from spatialgeometry import *
211
+ """
212
+ if args.robot:
213
+ banner += "from roboticstoolbox import *\n"
214
+ if args.vision:
215
+ banner += """ from machinevisiontoolbox import *
216
+ import machinevisiontoolbox.base as mvb
217
+ """
218
+
219
+ banner += r"""
220
+ # useful variables
221
+ from math import pi
222
+ puma = models.DH.Puma560()
223
+ panda = models.DH.Panda()
224
+
225
+ func/object? - show brief help
226
+ help(func/object) - show detailed help
227
+ func/object?? - show source code
228
+ """
229
+ banner += attr(0)
230
+
231
+ return banner
232
+
233
+
234
+ def startup():
235
+ plt.ion()
236
+
237
+
238
+ def main():
239
+ args = parse_arguments()
240
+ # print(args)
241
+
242
+ if args.book:
243
+ # set book options
244
+ args.resultprefix = ""
245
+ args.prompt = ">>> "
246
+ args.showassign = True
247
+ args.ansi = False
248
+ args.examples = True
249
+
250
+ # setup defaults
251
+ np.set_printoptions(
252
+ linewidth=120,
253
+ formatter={"float": lambda x: f"{x:8.4g}" if abs(x) > 1e-10 else f"{0:8.4g}"},
254
+ )
255
+
256
+ globs = globals()
257
+ if args.robot:
258
+ exec("from roboticstoolbox import *", globs)
259
+ from roboticstoolbox import __path__
260
+
261
+ sys.path.append(str(Path(__path__[0]) / "examples"))
262
+
263
+ # load some robot models
264
+ globs["puma"] = models.DH.Puma560()
265
+ globs["panda"] = models.DH.Panda()
266
+
267
+ # set default backend for Robot.plot
268
+ if args.swift:
269
+ Robot.default_backend = "swift"
270
+
271
+ if args.vision:
272
+ exec("from machinevisiontoolbox import *", globs)
273
+ exec("import machinevisiontoolbox.base as mvbase", globs)
274
+
275
+ # set matrix printing mode for spatialmath
276
+ SE3._ansimatrix = args.ansi
277
+
278
+ # set default matplotlib backend
279
+ if args.backend is not None:
280
+ print(f"Using matplotlib backend {args.backend}")
281
+ mpl.use(args.backend)
282
+
283
+ if args.banner:
284
+ banner = make_banner(args)
285
+ print(banner)
286
+
287
+ if args.showassign and args.banner:
288
+ print(
289
+ fg("red")
290
+ + "Results of assignments will be displayed, use trailing ; to suppress"
291
+ + attr(0)
292
+ + "\n"
293
+ )
294
+
295
+ # append to the module path
296
+ # - RVC3 models and examples
297
+ # - RTB examples
298
+ root = Path(__file__).absolute().parent.parent
299
+ sys.path.append(str(root / "models"))
300
+ sys.path.append(str(root / "examples"))
301
+
302
+ if args.cwd:
303
+ os.chdir(root)
304
+
305
+ class MyPrompt(Prompts):
306
+ def in_prompt_tokens(self, cli=None):
307
+ if args.prompt is None:
308
+ return super().in_prompt_tokens()
309
+ else:
310
+ return [(Token.Prompt, args.prompt)]
311
+
312
+ def out_prompt_tokens(self, cli=None):
313
+ if args.resultprefix is None:
314
+ # traditional behaviour
315
+ return super().out_prompt_tokens()
316
+ else:
317
+ return [
318
+ (Token.Prompt, args.resultprefix.format(self.shell.execution_count))
319
+ ]
320
+
321
+ # set configuration options, there are lots, see
322
+ # https://ipython.readthedocs.io/en/stable/config/options/terminal.html
323
+ c = Config()
324
+ c.InteractiveShellEmbed.colors = args.color
325
+ c.InteractiveShell.confirm_exit = args.confirmexit
326
+ # c.InteractiveShell.prompts_class = ClassicPrompts
327
+ c.InteractiveShell.prompts_class = MyPrompt
328
+ if args.showassign:
329
+ c.InteractiveShell.ast_node_interactivity = "last_expr_or_assign"
330
+ c.TerminalIPythonApp.display_banner = args.banner
331
+
332
+ # set precision, same as %precision
333
+ c.PlainTextFormatter.float_precision = "%.3f"
334
+
335
+ # set up a script to be executed by IPython when we get there
336
+ code = None
337
+ if args.script is not None:
338
+ path = Path(args.script)
339
+ if not path.exists():
340
+ raise ValueError(f"script does not exist: {args.script}")
341
+ code = path.open("r").readlines()
342
+
343
+ if code is None:
344
+ code = [
345
+ "startup()",
346
+ "%precision %.3g;",
347
+ ]
348
+
349
+ c.InteractiveShellApp.exec_lines = code
350
+ IPython.start_ipython(config=c, user_ns=globals())
351
+
352
+
353
+ if __name__ == "__main__":
354
+ main()
@@ -0,0 +1,136 @@
1
+ # http://paulbourke.net/dataformats/hershey/
2
+ import math
3
+ from collections import namedtuple
4
+ import matplotlib.pyplot as plt
5
+ import numpy as np
6
+ import json
7
+
8
+ """
9
+ Read Hershey JH-format font data and create a cell array that maps ASCII code
10
+ to stroke data.
11
+
12
+ Each character is drawn within a 1x1 grid, with origin at the bottom left.
13
+
14
+ hershey{'B'} is a struct with elements:
15
+ - width, width of the character
16
+ - height, height of the character
17
+ - top, largest y-coordinate
18
+ - bottom, smallest y-coordinate
19
+ - stroke, 2xN array of waypoints. A column of NaNs indicates the end of
20
+ one stroke and the beginning of the next.
21
+
22
+ Hershey's original fonts were encoded in a compact ASCII format by
23
+ James Hurt (JH).
24
+
25
+ References:
26
+ - `Wikipedia <https://en.wikipedia.org/wiki/Hershey_fonts>`_
27
+ - `Hershey vector fonts library, tools, and glyphs <https://github.com/kamalmostafa/hershey-fonts>`_
28
+ - `Hershey Vector Font by Paul Bourke <http://paulbourke.net/dataformats/hershey>`_
29
+ """
30
+
31
+ ## READ the glyph indices
32
+ #
33
+ # this file lists the glyph indices in ASCII order, starting at 32 (space)
34
+ # comprises numbers N and ranges N-M
35
+ with open('roman-simplex.txt', 'r') as f:
36
+
37
+ fontmap = []
38
+
39
+ for number in f.read().split():
40
+ if '-' in number:
41
+ s = list(map(int, number.split('-')))
42
+ fontmap.extend(range(s[0], s[1]+1))
43
+ else:
44
+ fontmap.append(int(number))
45
+
46
+ # we now have a list of glyph indices in ASCII code order, starting at 32
47
+
48
+ ## READ the glyph data
49
+ #
50
+ # read lines, each line has a maximum width of 72 chars
51
+ # lines of 72 chars have implicit continuation lines
52
+ # line[:5] is the glyph number
53
+
54
+ glyphdata = {}
55
+
56
+ with open('hershey.txt', 'r') as f:
57
+ longline = None
58
+ for line in f:
59
+ line = line.rstrip()
60
+ if len(line) == 0:
61
+ continue
62
+ if longline is None:
63
+ longline = line
64
+ else:
65
+ longline += line
66
+ if len(line) == 72:
67
+ continue
68
+ fn = int(longline[:5])
69
+ glyphdata[fn] = longline
70
+ longline = None
71
+
72
+ # glyphdict[glyphindex] -> glyph data
73
+
74
+ hdict = {}
75
+ hershey = namedtuple('hershey', 'strokes width top bottom')
76
+
77
+ for i, glyphindex in enumerate(fontmap):
78
+
79
+ data = glyphdata[glyphindex]
80
+ npairs = int(data[5:8]) - 1
81
+ left = ord(data[8]) - ord('R')
82
+ right = ord(data[9]) - ord('R')
83
+ stroke = []
84
+ data = data[10:]
85
+
86
+ strokes = []
87
+ ydata = []
88
+
89
+ # build a list of continuous strokes, each is a list of (x,y) data
90
+ for _ in range(npairs):
91
+ pair = data[:2]
92
+ data = data[2:]
93
+
94
+ if pair == ' R':
95
+ # end of a stroke
96
+ strokes.append(stroke)
97
+ stroke = []
98
+ else:
99
+ # part of a stroke
100
+ x = ord(pair[0]) - ord('R') - left
101
+ y = ord(pair[1]) - ord('R') + 9
102
+ stroke.append((x / 25, -y / 25))
103
+ ydata.append(y)
104
+
105
+ if len(stroke) > 0:
106
+ strokes.append(stroke)
107
+ width = right - left
108
+ if len(ydata) > 0:
109
+ top = max(ydata)
110
+ bottom = min(ydata)
111
+ else:
112
+ top = 0
113
+ bottom = 0
114
+
115
+ width = (right - left) / 25
116
+
117
+ hdict[chr(i+32)] = {
118
+ 'strokes': strokes,
119
+ 'width': width,
120
+ 'top': top / 25,
121
+ 'bottom': bottom / 25
122
+ }
123
+
124
+ # plt.figure()
125
+ # if len(strokes) > 0:
126
+ # for stroke in strokes:
127
+ # xy = np.r_[stroke]
128
+ # plt.plot(xy[:,0], xy[:,1], linewidth=4)
129
+ # plt.xlim(0,1.5)
130
+ # plt.ylim(-1,0.5)
131
+ # plt.title(chr(i+32))
132
+
133
+ # plt.pause(0.2)
134
+
135
+ #pickle.dump(hdict, open("hershey.pickle", 'wb'))
136
+ json.dump(hdict, open("hershey.json", 'w'))
@@ -0,0 +1 @@
1
+ {" ": {"strokes": [], "width": 0.64, "top": 0.0, "bottom": 0.0}, "!": {"strokes": [[[0.2, 0.12], [0.2, -0.44]], [[0.2, -0.64], [0.16, -0.68], [0.2, -0.72], [0.24, -0.68], [0.2, -0.64]]], "width": 0.4, "top": 0.72, "bottom": -0.12}, "\"": {"strokes": [[[0.16, 0.12], [0.16, -0.16]], [[0.48, 0.12], [0.48, -0.16]]], "width": 0.64, "top": 0.16, "bottom": -0.12}, "#": {"strokes": [[[0.44, 0.28], [0.16, -1.0]], [[0.68, 0.28], [0.4, -1.0]], [[0.16, -0.24], [0.72, -0.24]], [[0.12, -0.48], [0.68, -0.48]]], "width": 0.84, "top": 1.0, "bottom": -0.28}, "$": {"strokes": [[[0.32, 0.28], [0.32, -0.88]], [[0.48, 0.28], [0.48, -0.88]], [[0.68, 0.0], [0.6, 0.08], [0.48, 0.12], [0.32, 0.12], [0.2, 0.08], [0.12, 0.0], [0.12, -0.08], [0.16, -0.16], [0.2, -0.2], [0.28, -0.24], [0.52, -0.32], [0.6, -0.36], [0.64, -0.4], [0.68, -0.48], [0.68, -0.6], [0.6, -0.68], [0.48, -0.72], [0.32, -0.72], [0.2, -0.68], [0.12, -0.6]]], "width": 0.8, "top": 0.88, "bottom": -0.28}, "%": {"strokes": [[[0.84, 0.12], [0.12, -0.72]], [[0.32, 0.12], [0.4, 0.04], [0.4, -0.04], [0.36, -0.12], [0.28, -0.16], [0.2, -0.16], [0.12, -0.08], [0.12, 0.0], [0.16, 0.08], [0.24, 0.12], [0.32, 0.12], [0.4, 0.08], [0.52, 0.04], [0.64, 0.04], [0.76, 0.08], [0.84, 0.12]], [[0.68, -0.44], [0.6, -0.48], [0.56, -0.56], [0.56, -0.64], [0.64, -0.72], [0.72, -0.72], [0.8, -0.68], [0.84, -0.6], [0.84, -0.52], [0.76, -0.44], [0.68, -0.44]]], "width": 0.96, "top": 0.72, "bottom": -0.12}, "&": {"strokes": [[[0.92, -0.24], [0.92, -0.2], [0.88, -0.16], [0.84, -0.16], [0.8, -0.2], [0.76, -0.28], [0.68, -0.48], [0.6, -0.6], [0.52, -0.68], [0.44, -0.72], [0.28, -0.72], [0.2, -0.68], [0.16, -0.64], [0.12, -0.56], [0.12, -0.48], [0.16, -0.4], [0.2, -0.36], [0.48, -0.2], [0.52, -0.16], [0.56, -0.08], [0.56, 0.0], [0.52, 0.08], [0.44, 0.12], [0.36, 0.08], [0.32, 0.0], [0.32, -0.08], [0.36, -0.2], [0.44, -0.32], [0.64, -0.6], [0.72, -0.68], [0.8, -0.72], [0.88, -0.72], [0.92, -0.68], [0.92, -0.64]]], "width": 1.04, "top": 0.72, "bottom": -0.12}, "'": {"strokes": [[[0.2, 0.04], [0.16, 0.08], [0.2, 0.12], [0.24, 0.08], [0.24, 0.0], [0.2, -0.08], [0.16, -0.12]]], "width": 0.4, "top": 0.12, "bottom": -0.12}, "(": {"strokes": [[[0.44, 0.28], [0.36, 0.2], [0.28, 0.08], [0.2, -0.08], [0.16, -0.28], [0.16, -0.44], [0.2, -0.64], [0.28, -0.8], [0.36, -0.92], [0.44, -1.0]]], "width": 0.56, "top": 1.0, "bottom": -0.28}, ")": {"strokes": [[[0.12, 0.28], [0.2, 0.2], [0.28, 0.08], [0.36, -0.08], [0.4, -0.28], [0.4, -0.44], [0.36, -0.64], [0.28, -0.8], [0.2, -0.92], [0.12, -1.0]]], "width": 0.56, "top": 1.0, "bottom": -0.28}, "*": {"strokes": [[[0.32, 0.12], [0.32, -0.36]], [[0.12, 0.0], [0.52, -0.24]], [[0.52, 0.0], [0.12, -0.24]]], "width": 0.64, "top": 0.36, "bottom": -0.12}, "+": {"strokes": [[[0.52, 0.0], [0.52, -0.72]], [[0.16, -0.36], [0.88, -0.36]]], "width": 1.04, "top": 0.72, "bottom": 0.0}, ",": {"strokes": [[[0.24, -0.68], [0.2, -0.72], [0.16, -0.68], [0.2, -0.64], [0.24, -0.68], [0.24, -0.76], [0.2, -0.84], [0.16, -0.88]]], "width": 0.4, "top": 0.88, "bottom": 0.64}, "-": {"strokes": [[[0.16, -0.36], [0.88, -0.36]]], "width": 1.04, "top": 0.36, "bottom": 0.36}, ".": {"strokes": [[[0.2, -0.64], [0.16, -0.68], [0.2, -0.72], [0.24, -0.68], [0.2, -0.64]]], "width": 0.4, "top": 0.72, "bottom": 0.64}, "/": {"strokes": [[[0.8, 0.28], [0.08, -1.0]]], "width": 0.88, "top": 1.0, "bottom": -0.28}, "0": {"strokes": [[[0.36, 0.12], [0.24, 0.08], [0.16, -0.04], [0.12, -0.24], [0.12, -0.36], [0.16, -0.56], [0.24, -0.68], [0.36, -0.72], [0.44, -0.72], [0.56, -0.68], [0.64, -0.56], [0.68, -0.36], [0.68, -0.24], [0.64, -0.04], [0.56, 0.08], [0.44, 0.12], [0.36, 0.12]]], "width": 0.8, "top": 0.72, "bottom": -0.12}, "1": {"strokes": [[[0.24, -0.04], [0.32, 0.0], [0.44, 0.12], [0.44, -0.72]]], "width": 0.8, "top": 0.72, "bottom": -0.12}, "2": {"strokes": [[[0.16, -0.08], [0.16, -0.04], [0.2, 0.04], [0.24, 0.08], [0.32, 0.12], [0.48, 0.12], [0.56, 0.08], [0.6, 0.04], [0.64, -0.04], [0.64, -0.12], [0.6, -0.2], [0.52, -0.32], [0.12, -0.72], [0.68, -0.72]]], "width": 0.8, "top": 0.72, "bottom": -0.12}, "3": {"strokes": [[[0.2, 0.12], [0.64, 0.12], [0.4, -0.2], [0.52, -0.2], [0.6, -0.24], [0.64, -0.28], [0.68, -0.4], [0.68, -0.48], [0.64, -0.6], [0.56, -0.68], [0.44, -0.72], [0.32, -0.72], [0.2, -0.68], [0.16, -0.64], [0.12, -0.56]]], "width": 0.8, "top": 0.72, "bottom": -0.12}, "4": {"strokes": [[[0.52, 0.12], [0.12, -0.44], [0.72, -0.44]], [[0.52, 0.12], [0.52, -0.72]]], "width": 0.8, "top": 0.72, "bottom": -0.12}, "5": {"strokes": [[[0.6, 0.12], [0.2, 0.12], [0.16, -0.24], [0.2, -0.2], [0.32, -0.16], [0.44, -0.16], [0.56, -0.2], [0.64, -0.28], [0.68, -0.4], [0.68, -0.48], [0.64, -0.6], [0.56, -0.68], [0.44, -0.72], [0.32, -0.72], [0.2, -0.68], [0.16, -0.64], [0.12, -0.56]]], "width": 0.8, "top": 0.72, "bottom": -0.12}, "6": {"strokes": [[[0.64, 0.0], [0.6, 0.08], [0.48, 0.12], [0.4, 0.12], [0.28, 0.08], [0.2, -0.04], [0.16, -0.24], [0.16, -0.44], [0.2, -0.6], [0.28, -0.68], [0.4, -0.72], [0.44, -0.72], [0.56, -0.68], [0.64, -0.6], [0.68, -0.48], [0.68, -0.44], [0.64, -0.32], [0.56, -0.24], [0.44, -0.2], [0.4, -0.2], [0.28, -0.24], [0.2, -0.32], [0.16, -0.44]]], "width": 0.8, "top": 0.72, "bottom": -0.12}, "7": {"strokes": [[[0.68, 0.12], [0.28, -0.72]], [[0.12, 0.12], [0.68, 0.12]]], "width": 0.8, "top": 0.72, "bottom": -0.12}, "8": {"strokes": [[[0.32, 0.12], [0.2, 0.08], [0.16, 0.0], [0.16, -0.08], [0.2, -0.16], [0.28, -0.2], [0.44, -0.24], [0.56, -0.28], [0.64, -0.36], [0.68, -0.44], [0.68, -0.56], [0.64, -0.64], [0.6, -0.68], [0.48, -0.72], [0.32, -0.72], [0.2, -0.68], [0.16, -0.64], [0.12, -0.56], [0.12, -0.44], [0.16, -0.36], [0.24, -0.28], [0.36, -0.24], [0.52, -0.2], [0.6, -0.16], [0.64, -0.08], [0.64, 0.0], [0.6, 0.08], [0.48, 0.12], [0.32, 0.12]]], "width": 0.8, "top": 0.72, "bottom": -0.12}, "9": {"strokes": [[[0.64, -0.16], [0.6, -0.28], [0.52, -0.36], [0.4, -0.4], [0.36, -0.4], [0.24, -0.36], [0.16, -0.28], [0.12, -0.16], [0.12, -0.12], [0.16, 0.0], [0.24, 0.08], [0.36, 0.12], [0.4, 0.12], [0.52, 0.08], [0.6, 0.0], [0.64, -0.16], [0.64, -0.36], [0.6, -0.56], [0.52, -0.68], [0.4, -0.72], [0.32, -0.72], [0.2, -0.68], [0.16, -0.6]]], "width": 0.8, "top": 0.72, "bottom": -0.12}, ":": {"strokes": [[[0.2, -0.16], [0.16, -0.2], [0.2, -0.24], [0.24, -0.2], [0.2, -0.16]], [[0.2, -0.64], [0.16, -0.68], [0.2, -0.72], [0.24, -0.68], [0.2, -0.64]]], "width": 0.4, "top": 0.72, "bottom": 0.16}, ";": {"strokes": [[[0.2, -0.16], [0.16, -0.2], [0.2, -0.24], [0.24, -0.2], [0.2, -0.16]], [[0.24, -0.68], [0.2, -0.72], [0.16, -0.68], [0.2, -0.64], [0.24, -0.68], [0.24, -0.76], [0.2, -0.84], [0.16, -0.88]]], "width": 0.4, "top": 0.88, "bottom": 0.16}, "<": {"strokes": [[[0.8, 0.0], [0.16, -0.36], [0.8, -0.72]]], "width": 0.96, "top": 0.72, "bottom": 0.0}, "=": {"strokes": [[[0.16, -0.24], [0.88, -0.24]], [[0.16, -0.48], [0.88, -0.48]]], "width": 1.04, "top": 0.48, "bottom": 0.24}, ">": {"strokes": [[[0.16, 0.0], [0.8, -0.36], [0.16, -0.72]]], "width": 0.96, "top": 0.72, "bottom": 0.0}, "?": {"strokes": [[[0.12, -0.08], [0.12, -0.04], [0.16, 0.04], [0.2, 0.08], [0.28, 0.12], [0.44, 0.12], [0.52, 0.08], [0.56, 0.04], [0.6, -0.04], [0.6, -0.12], [0.56, -0.2], [0.52, -0.24], [0.36, -0.32], [0.36, -0.44]], [[0.36, -0.64], [0.32, -0.68], [0.36, -0.72], [0.4, -0.68], [0.36, -0.64]]], "width": 0.72, "top": 0.72, "bottom": -0.12}, "@": {"strokes": [[[0.72, -0.2], [0.68, -0.12], [0.6, -0.08], [0.48, -0.08], [0.4, -0.12], [0.36, -0.16], [0.32, -0.28], [0.32, -0.4], [0.36, -0.48], [0.44, -0.52], [0.56, -0.52], [0.64, -0.48], [0.68, -0.4]], [[0.48, -0.08], [0.4, -0.16], [0.36, -0.28], [0.36, -0.4], [0.4, -0.48], [0.44, -0.52]], [[0.72, -0.08], [0.68, -0.4], [0.68, -0.48], [0.76, -0.52], [0.84, -0.52], [0.92, -0.44], [0.96, -0.32], [0.96, -0.24], [0.92, -0.12], [0.88, -0.04], [0.8, 0.04], [0.72, 0.08], [0.6, 0.12], [0.48, 0.12], [0.36, 0.08], [0.28, 0.04], [0.2, -0.04], [0.16, -0.12], [0.12, -0.24], [0.12, -0.36], [0.16, -0.48], [0.2, -0.56], [0.28, -0.64], [0.36, -0.68], [0.48, -0.72], [0.6, -0.72], [0.72, -0.68], [0.8, -0.64], [0.84, -0.6]], [[0.76, -0.08], [0.72, -0.4], [0.72, -0.48], [0.76, -0.52]]], "width": 1.08, "top": 0.72, "bottom": -0.12}, "A": {"strokes": [[[0.36, 0.12], [0.04, -0.72]], [[0.36, 0.12], [0.68, -0.72]], [[0.16, -0.44], [0.56, -0.44]]], "width": 0.72, "top": 0.72, "bottom": -0.12}, "B": {"strokes": [[[0.16, 0.12], [0.16, -0.72]], [[0.16, 0.12], [0.52, 0.12], [0.64, 0.08], [0.68, 0.04], [0.72, -0.04], [0.72, -0.12], [0.68, -0.2], [0.64, -0.24], [0.52, -0.28]], [[0.16, -0.28], [0.52, -0.28], [0.64, -0.32], [0.68, -0.36], [0.72, -0.44], [0.72, -0.56], [0.68, -0.64], [0.64, -0.68], [0.52, -0.72], [0.16, -0.72]]], "width": 0.84, "top": 0.72, "bottom": -0.12}, "C": {"strokes": [[[0.72, -0.08], [0.68, 0.0], [0.6, 0.08], [0.52, 0.12], [0.36, 0.12], [0.28, 0.08], [0.2, 0.0], [0.16, -0.08], [0.12, -0.2], [0.12, -0.4], [0.16, -0.52], [0.2, -0.6], [0.28, -0.68], [0.36, -0.72], [0.52, -0.72], [0.6, -0.68], [0.68, -0.6], [0.72, -0.52]]], "width": 0.84, "top": 0.72, "bottom": -0.12}, "D": {"strokes": [[[0.16, 0.12], [0.16, -0.72]], [[0.16, 0.12], [0.44, 0.12], [0.56, 0.08], [0.64, 0.0], [0.68, -0.08], [0.72, -0.2], [0.72, -0.4], [0.68, -0.52], [0.64, -0.6], [0.56, -0.68], [0.44, -0.72], [0.16, -0.72]]], "width": 0.84, "top": 0.72, "bottom": -0.12}, "E": {"strokes": [[[0.16, 0.12], [0.16, -0.72]], [[0.16, 0.12], [0.68, 0.12]], [[0.16, -0.28], [0.48, -0.28]], [[0.16, -0.72], [0.68, -0.72]]], "width": 0.76, "top": 0.72, "bottom": -0.12}, "F": {"strokes": [[[0.16, 0.12], [0.16, -0.72]], [[0.16, 0.12], [0.68, 0.12]], [[0.16, -0.28], [0.48, -0.28]]], "width": 0.72, "top": 0.72, "bottom": -0.12}, "G": {"strokes": [[[0.72, -0.08], [0.68, 0.0], [0.6, 0.08], [0.52, 0.12], [0.36, 0.12], [0.28, 0.08], [0.2, 0.0], [0.16, -0.08], [0.12, -0.2], [0.12, -0.4], [0.16, -0.52], [0.2, -0.6], [0.28, -0.68], [0.36, -0.72], [0.52, -0.72], [0.6, -0.68], [0.68, -0.6], [0.72, -0.52], [0.72, -0.4]], [[0.52, -0.4], [0.72, -0.4]]], "width": 0.84, "top": 0.72, "bottom": -0.12}, "H": {"strokes": [[[0.16, 0.12], [0.16, -0.72]], [[0.72, 0.12], [0.72, -0.72]], [[0.16, -0.28], [0.72, -0.28]]], "width": 0.88, "top": 0.72, "bottom": -0.12}, "I": {"strokes": [[[0.16, 0.12], [0.16, -0.72]]], "width": 0.32, "top": 0.72, "bottom": -0.12}, "J": {"strokes": [[[0.48, 0.12], [0.48, -0.52], [0.44, -0.64], [0.4, -0.68], [0.32, -0.72], [0.24, -0.72], [0.16, -0.68], [0.12, -0.64], [0.08, -0.52], [0.08, -0.44]]], "width": 0.64, "top": 0.72, "bottom": -0.12}, "K": {"strokes": [[[0.16, 0.12], [0.16, -0.72]], [[0.72, 0.12], [0.16, -0.44]], [[0.36, -0.24], [0.72, -0.72]]], "width": 0.84, "top": 0.72, "bottom": -0.12}, "L": {"strokes": [[[0.16, 0.12], [0.16, -0.72]], [[0.16, -0.72], [0.64, -0.72]]], "width": 0.68, "top": 0.72, "bottom": -0.12}, "M": {"strokes": [[[0.16, 0.12], [0.16, -0.72]], [[0.16, 0.12], [0.48, -0.72]], [[0.8, 0.12], [0.48, -0.72]], [[0.8, 0.12], [0.8, -0.72]]], "width": 0.96, "top": 0.72, "bottom": -0.12}, "N": {"strokes": [[[0.16, 0.12], [0.16, -0.72]], [[0.16, 0.12], [0.72, -0.72]], [[0.72, 0.12], [0.72, -0.72]]], "width": 0.88, "top": 0.72, "bottom": -0.12}, "O": {"strokes": [[[0.36, 0.12], [0.28, 0.08], [0.2, 0.0], [0.16, -0.08], [0.12, -0.2], [0.12, -0.4], [0.16, -0.52], [0.2, -0.6], [0.28, -0.68], [0.36, -0.72], [0.52, -0.72], [0.6, -0.68], [0.68, -0.6], [0.72, -0.52], [0.76, -0.4], [0.76, -0.2], [0.72, -0.08], [0.68, 0.0], [0.6, 0.08], [0.52, 0.12], [0.36, 0.12]]], "width": 0.88, "top": 0.72, "bottom": -0.12}, "P": {"strokes": [[[0.16, 0.12], [0.16, -0.72]], [[0.16, 0.12], [0.52, 0.12], [0.64, 0.08], [0.68, 0.04], [0.72, -0.04], [0.72, -0.16], [0.68, -0.24], [0.64, -0.28], [0.52, -0.32], [0.16, -0.32]]], "width": 0.84, "top": 0.72, "bottom": -0.12}, "Q": {"strokes": [[[0.36, 0.12], [0.28, 0.08], [0.2, 0.0], [0.16, -0.08], [0.12, -0.2], [0.12, -0.4], [0.16, -0.52], [0.2, -0.6], [0.28, -0.68], [0.36, -0.72], [0.52, -0.72], [0.6, -0.68], [0.68, -0.6], [0.72, -0.52], [0.76, -0.4], [0.76, -0.2], [0.72, -0.08], [0.68, 0.0], [0.6, 0.08], [0.52, 0.12], [0.36, 0.12]], [[0.48, -0.56], [0.72, -0.8]]], "width": 0.88, "top": 0.8, "bottom": -0.12}, "R": {"strokes": [[[0.16, 0.12], [0.16, -0.72]], [[0.16, 0.12], [0.52, 0.12], [0.64, 0.08], [0.68, 0.04], [0.72, -0.04], [0.72, -0.12], [0.68, -0.2], [0.64, -0.24], [0.52, -0.28], [0.16, -0.28]], [[0.44, -0.28], [0.72, -0.72]]], "width": 0.84, "top": 0.72, "bottom": -0.12}, "S": {"strokes": [[[0.68, 0.0], [0.6, 0.08], [0.48, 0.12], [0.32, 0.12], [0.2, 0.08], [0.12, 0.0], [0.12, -0.08], [0.16, -0.16], [0.2, -0.2], [0.28, -0.24], [0.52, -0.32], [0.6, -0.36], [0.64, -0.4], [0.68, -0.48], [0.68, -0.6], [0.6, -0.68], [0.48, -0.72], [0.32, -0.72], [0.2, -0.68], [0.12, -0.6]]], "width": 0.8, "top": 0.72, "bottom": -0.12}, "T": {"strokes": [[[0.32, 0.12], [0.32, -0.72]], [[0.04, 0.12], [0.6, 0.12]]], "width": 0.64, "top": 0.72, "bottom": -0.12}, "U": {"strokes": [[[0.16, 0.12], [0.16, -0.48], [0.2, -0.6], [0.28, -0.68], [0.4, -0.72], [0.48, -0.72], [0.6, -0.68], [0.68, -0.6], [0.72, -0.48], [0.72, 0.12]]], "width": 0.88, "top": 0.72, "bottom": -0.12}, "V": {"strokes": [[[0.04, 0.12], [0.36, -0.72]], [[0.68, 0.12], [0.36, -0.72]]], "width": 0.72, "top": 0.72, "bottom": -0.12}, "W": {"strokes": [[[0.08, 0.12], [0.28, -0.72]], [[0.48, 0.12], [0.28, -0.72]], [[0.48, 0.12], [0.68, -0.72]], [[0.88, 0.12], [0.68, -0.72]]], "width": 0.96, "top": 0.72, "bottom": -0.12}, "X": {"strokes": [[[0.12, 0.12], [0.68, -0.72]], [[0.68, 0.12], [0.12, -0.72]]], "width": 0.8, "top": 0.72, "bottom": -0.12}, "Y": {"strokes": [[[0.04, 0.12], [0.36, -0.28], [0.36, -0.72]], [[0.68, 0.12], [0.36, -0.28]]], "width": 0.72, "top": 0.72, "bottom": -0.12}, "Z": {"strokes": [[[0.68, 0.12], [0.12, -0.72]], [[0.12, 0.12], [0.68, 0.12]], [[0.12, -0.72], [0.68, -0.72]]], "width": 0.8, "top": 0.72, "bottom": -0.12}, "[": {"strokes": [[[0.16, 0.28], [0.16, -1.0]], [[0.2, 0.28], [0.2, -1.0]], [[0.16, 0.28], [0.44, 0.28]], [[0.16, -1.0], [0.44, -1.0]]], "width": 0.56, "top": 1.0, "bottom": -0.28}, "\\": {"strokes": [[[0.0, 0.12], [0.56, -0.84]]], "width": 0.56, "top": 0.84, "bottom": -0.12}, "]": {"strokes": [[[0.36, 0.28], [0.36, -1.0]], [[0.4, 0.28], [0.4, -1.0]], [[0.12, 0.28], [0.4, 0.28]], [[0.12, -1.0], [0.4, -1.0]]], "width": 0.56, "top": 1.0, "bottom": -0.28}, "^": {"strokes": [[[0.24, -0.12], [0.32, 0.0], [0.4, -0.12]], [[0.12, -0.24], [0.32, -0.04], [0.52, -0.24]], [[0.32, -0.04], [0.32, -0.72]]], "width": 0.64, "top": 0.72, "bottom": 0.0}, "_": {"strokes": [[[0.0, -0.8], [0.64, -0.8]]], "width": 0.64, "top": 0.8, "bottom": 0.8}, "`": {"strokes": [[[0.24, 0.12], [0.2, 0.08], [0.16, 0.0], [0.16, -0.08], [0.2, -0.12], [0.24, -0.08], [0.2, -0.04]]], "width": 0.4, "top": 0.12, "bottom": -0.12}, "a": {"strokes": [[[0.6, -0.16], [0.6, -0.72]], [[0.6, -0.28], [0.52, -0.2], [0.44, -0.16], [0.32, -0.16], [0.24, -0.2], [0.16, -0.28], [0.12, -0.4], [0.12, -0.48], [0.16, -0.6], [0.24, -0.68], [0.32, -0.72], [0.44, -0.72], [0.52, -0.68], [0.6, -0.6]]], "width": 0.76, "top": 0.72, "bottom": 0.16}, "b": {"strokes": [[[0.16, 0.12], [0.16, -0.72]], [[0.16, -0.28], [0.24, -0.2], [0.32, -0.16], [0.44, -0.16], [0.52, -0.2], [0.6, -0.28], [0.64, -0.4], [0.64, -0.48], [0.6, -0.6], [0.52, -0.68], [0.44, -0.72], [0.32, -0.72], [0.24, -0.68], [0.16, -0.6]]], "width": 0.76, "top": 0.72, "bottom": -0.12}, "c": {"strokes": [[[0.6, -0.28], [0.52, -0.2], [0.44, -0.16], [0.32, -0.16], [0.24, -0.2], [0.16, -0.28], [0.12, -0.4], [0.12, -0.48], [0.16, -0.6], [0.24, -0.68], [0.32, -0.72], [0.44, -0.72], [0.52, -0.68], [0.6, -0.6]]], "width": 0.72, "top": 0.72, "bottom": 0.16}, "d": {"strokes": [[[0.6, 0.12], [0.6, -0.72]], [[0.6, -0.28], [0.52, -0.2], [0.44, -0.16], [0.32, -0.16], [0.24, -0.2], [0.16, -0.28], [0.12, -0.4], [0.12, -0.48], [0.16, -0.6], [0.24, -0.68], [0.32, -0.72], [0.44, -0.72], [0.52, -0.68], [0.6, -0.6]]], "width": 0.76, "top": 0.72, "bottom": -0.12}, "e": {"strokes": [[[0.12, -0.4], [0.6, -0.4], [0.6, -0.32], [0.56, -0.24], [0.52, -0.2], [0.44, -0.16], [0.32, -0.16], [0.24, -0.2], [0.16, -0.28], [0.12, -0.4], [0.12, -0.48], [0.16, -0.6], [0.24, -0.68], [0.32, -0.72], [0.44, -0.72], [0.52, -0.68], [0.6, -0.6]]], "width": 0.72, "top": 0.72, "bottom": 0.16}, "f": {"strokes": [[[0.4, 0.12], [0.32, 0.12], [0.24, 0.08], [0.2, -0.04], [0.2, -0.72]], [[0.08, -0.16], [0.36, -0.16]]], "width": 0.48, "top": 0.72, "bottom": -0.12}, "g": {"strokes": [[[0.6, -0.16], [0.6, -0.8], [0.56, -0.92], [0.52, -0.96], [0.44, -1.0], [0.32, -1.0], [0.24, -0.96]], [[0.6, -0.28], [0.52, -0.2], [0.44, -0.16], [0.32, -0.16], [0.24, -0.2], [0.16, -0.28], [0.12, -0.4], [0.12, -0.48], [0.16, -0.6], [0.24, -0.68], [0.32, -0.72], [0.44, -0.72], [0.52, -0.68], [0.6, -0.6]]], "width": 0.76, "top": 1.0, "bottom": 0.16}, "h": {"strokes": [[[0.16, 0.12], [0.16, -0.72]], [[0.16, -0.32], [0.28, -0.2], [0.36, -0.16], [0.48, -0.16], [0.56, -0.2], [0.6, -0.32], [0.6, -0.72]]], "width": 0.76, "top": 0.72, "bottom": -0.12}, "i": {"strokes": [[[0.12, 0.12], [0.16, 0.08], [0.2, 0.12], [0.16, 0.16], [0.12, 0.12]], [[0.16, -0.16], [0.16, -0.72]]], "width": 0.32, "top": 0.72, "bottom": -0.16}, "j": {"strokes": [[[0.2, 0.12], [0.24, 0.08], [0.28, 0.12], [0.24, 0.16], [0.2, 0.12]], [[0.24, -0.16], [0.24, -0.84], [0.2, -0.96], [0.12, -1.0], [0.04, -1.0]]], "width": 0.4, "top": 1.0, "bottom": -0.16}, "k": {"strokes": [[[0.16, 0.12], [0.16, -0.72]], [[0.56, -0.16], [0.16, -0.56]], [[0.32, -0.4], [0.6, -0.72]]], "width": 0.68, "top": 0.72, "bottom": -0.12}, "l": {"strokes": [[[0.16, 0.12], [0.16, -0.72]]], "width": 0.32, "top": 0.72, "bottom": -0.12}, "m": {"strokes": [[[0.16, -0.16], [0.16, -0.72]], [[0.16, -0.32], [0.28, -0.2], [0.36, -0.16], [0.48, -0.16], [0.56, -0.2], [0.6, -0.32], [0.6, -0.72]], [[0.6, -0.32], [0.72, -0.2], [0.8, -0.16], [0.92, -0.16], [1.0, -0.2], [1.04, -0.32], [1.04, -0.72]]], "width": 1.2, "top": 0.72, "bottom": 0.16}, "n": {"strokes": [[[0.16, -0.16], [0.16, -0.72]], [[0.16, -0.32], [0.28, -0.2], [0.36, -0.16], [0.48, -0.16], [0.56, -0.2], [0.6, -0.32], [0.6, -0.72]]], "width": 0.76, "top": 0.72, "bottom": 0.16}, "o": {"strokes": [[[0.32, -0.16], [0.24, -0.2], [0.16, -0.28], [0.12, -0.4], [0.12, -0.48], [0.16, -0.6], [0.24, -0.68], [0.32, -0.72], [0.44, -0.72], [0.52, -0.68], [0.6, -0.6], [0.64, -0.48], [0.64, -0.4], [0.6, -0.28], [0.52, -0.2], [0.44, -0.16], [0.32, -0.16]]], "width": 0.76, "top": 0.72, "bottom": 0.16}, "p": {"strokes": [[[0.16, -0.16], [0.16, -1.0]], [[0.16, -0.28], [0.24, -0.2], [0.32, -0.16], [0.44, -0.16], [0.52, -0.2], [0.6, -0.28], [0.64, -0.4], [0.64, -0.48], [0.6, -0.6], [0.52, -0.68], [0.44, -0.72], [0.32, -0.72], [0.24, -0.68], [0.16, -0.6]]], "width": 0.76, "top": 1.0, "bottom": 0.16}, "q": {"strokes": [[[0.6, -0.16], [0.6, -1.0]], [[0.6, -0.28], [0.52, -0.2], [0.44, -0.16], [0.32, -0.16], [0.24, -0.2], [0.16, -0.28], [0.12, -0.4], [0.12, -0.48], [0.16, -0.6], [0.24, -0.68], [0.32, -0.72], [0.44, -0.72], [0.52, -0.68], [0.6, -0.6]]], "width": 0.76, "top": 1.0, "bottom": 0.16}, "r": {"strokes": [[[0.16, -0.16], [0.16, -0.72]], [[0.16, -0.4], [0.2, -0.28], [0.28, -0.2], [0.36, -0.16], [0.48, -0.16]]], "width": 0.52, "top": 0.72, "bottom": 0.16}, "s": {"strokes": [[[0.56, -0.28], [0.52, -0.2], [0.4, -0.16], [0.28, -0.16], [0.16, -0.2], [0.12, -0.28], [0.16, -0.36], [0.24, -0.4], [0.44, -0.44], [0.52, -0.48], [0.56, -0.56], [0.56, -0.6], [0.52, -0.68], [0.4, -0.72], [0.28, -0.72], [0.16, -0.68], [0.12, -0.6]]], "width": 0.68, "top": 0.72, "bottom": 0.16}, "t": {"strokes": [[[0.2, 0.12], [0.2, -0.56], [0.24, -0.68], [0.32, -0.72], [0.4, -0.72]], [[0.08, -0.16], [0.36, -0.16]]], "width": 0.48, "top": 0.72, "bottom": -0.12}, "u": {"strokes": [[[0.16, -0.16], [0.16, -0.56], [0.2, -0.68], [0.28, -0.72], [0.4, -0.72], [0.48, -0.68], [0.6, -0.56]], [[0.6, -0.16], [0.6, -0.72]]], "width": 0.76, "top": 0.72, "bottom": 0.16}, "v": {"strokes": [[[0.08, -0.16], [0.32, -0.72]], [[0.56, -0.16], [0.32, -0.72]]], "width": 0.64, "top": 0.72, "bottom": 0.16}, "w": {"strokes": [[[0.12, -0.16], [0.28, -0.72]], [[0.44, -0.16], [0.28, -0.72]], [[0.44, -0.16], [0.6, -0.72]], [[0.76, -0.16], [0.6, -0.72]]], "width": 0.88, "top": 0.72, "bottom": 0.16}, "x": {"strokes": [[[0.12, -0.16], [0.56, -0.72]], [[0.56, -0.16], [0.12, -0.72]]], "width": 0.68, "top": 0.72, "bottom": 0.16}, "y": {"strokes": [[[0.08, -0.16], [0.32, -0.72]], [[0.56, -0.16], [0.32, -0.72], [0.24, -0.88], [0.16, -0.96], [0.08, -1.0], [0.04, -1.0]]], "width": 0.64, "top": 1.0, "bottom": 0.16}, "z": {"strokes": [[[0.56, -0.16], [0.12, -0.72]], [[0.12, -0.16], [0.56, -0.16]], [[0.12, -0.72], [0.56, -0.72]]], "width": 0.68, "top": 0.72, "bottom": 0.16}, "{": {"strokes": [[[0.36, 0.28], [0.28, 0.24], [0.24, 0.2], [0.2, 0.12], [0.2, 0.04], [0.24, -0.04], [0.28, -0.08], [0.32, -0.16], [0.32, -0.24], [0.24, -0.32]], [[0.28, 0.24], [0.24, 0.16], [0.24, 0.08], [0.28, 0.0], [0.32, -0.04], [0.36, -0.12], [0.36, -0.2], [0.32, -0.28], [0.16, -0.36], [0.32, -0.44], [0.36, -0.52], [0.36, -0.6], [0.32, -0.68], [0.28, -0.72], [0.24, -0.8], [0.24, -0.88], [0.28, -0.96]], [[0.24, -0.4], [0.32, -0.48], [0.32, -0.56], [0.28, -0.64], [0.24, -0.68], [0.2, -0.76], [0.2, -0.84], [0.24, -0.92], [0.28, -0.96], [0.36, -1.0]]], "width": 0.56, "top": 1.0, "bottom": -0.28}, "|": {"strokes": [[[0.16, 0.28], [0.16, -1.0]]], "width": 0.32, "top": 1.0, "bottom": -0.28}, "}": {"strokes": [[[0.2, 0.28], [0.28, 0.24], [0.32, 0.2], [0.36, 0.12], [0.36, 0.04], [0.32, -0.04], [0.28, -0.08], [0.24, -0.16], [0.24, -0.24], [0.32, -0.32]], [[0.28, 0.24], [0.32, 0.16], [0.32, 0.08], [0.28, 0.0], [0.24, -0.04], [0.2, -0.12], [0.2, -0.2], [0.24, -0.28], [0.4, -0.36], [0.24, -0.44], [0.2, -0.52], [0.2, -0.6], [0.24, -0.68], [0.28, -0.72], [0.32, -0.8], [0.32, -0.88], [0.28, -0.96]], [[0.32, -0.4], [0.24, -0.48], [0.24, -0.56], [0.28, -0.64], [0.32, -0.68], [0.36, -0.76], [0.36, -0.84], [0.32, -0.92], [0.28, -0.96], [0.2, -1.0]]], "width": 0.56, "top": 1.0, "bottom": -0.28}, "~": {"strokes": [[[0.12, -0.48], [0.12, -0.4], [0.16, -0.28], [0.24, -0.24], [0.32, -0.24], [0.4, -0.28], [0.56, -0.4], [0.64, -0.44], [0.72, -0.44], [0.8, -0.4], [0.84, -0.32]], [[0.12, -0.4], [0.16, -0.32], [0.24, -0.28], [0.32, -0.28], [0.4, -0.32], [0.56, -0.44], [0.64, -0.48], [0.72, -0.48], [0.8, -0.44], [0.84, -0.32], [0.84, -0.24]]], "width": 0.96, "top": 0.48, "bottom": 0.24}, "\u007f": {"strokes": [[[0.24, 0.12], [0.16, 0.08], [0.12, 0.0], [0.12, -0.08], [0.16, -0.16], [0.24, -0.2], [0.32, -0.2], [0.4, -0.16], [0.44, -0.08], [0.44, 0.0], [0.4, 0.08], [0.32, 0.12], [0.24, 0.12]]], "width": 0.56, "top": 0.2, "bottom": -0.12}}