1 #!/usr/bin/env python
2 # Syntax format: (raise your hand if you know lisp :-)
3 #
4 # 'state0': ("file.svg", ( ( ('state1', dx, dy, T-B, L|R),),
5 # ( ('state2', ...), ('state3', ...),),
6 # ( ('state4', ...),),
7 # ) ),
8 # )
9 #
10 # Translation of the above in CNF:
11 # state0 -> state1
12 # state0 -> state2 state3
13 # state0 -> state4
14 #
15 # Semantics at state0:
16 # Paste subtree image from state1 onto "file.svg".
17 # Subtree image is translated by (dx, dy) (measured in units, not pixels!).
18 # Subtree image is flipped top to bottom if v==1.
19 # Subtree image is flipped left to right if h==1.
20 #
21 # Notes:
22 # Origin (0,0) is at *upper* left corner.
23 # For optional reflections, add both reflecting and non-reflecting rules
24 # For 180 degree rotations, set v = 1, h = 1.
25 # It helps to have an empty "epsilon" image.
26 #
27 # Jan. 16 2002
28 # Removed zeros from the end of rules, changed the code to reflect this.
29 # Remember to add trailing ',' at ends of lists, especially singletons.
30 #
31 # Jan. 20-26 2002
32 # Added uppercase.
34 syntax = {
35 'start': ("epsilon.svg", ((('lc', 0,0,0,0),),# start state
36 (('UC', 0,0,0,0),),
37 )),
38 # lowercase
39 'lc': ("epsilon.svg", ((('barsym', 0,0,0,0),), #(2096714) (26)
40 (('lc2', 0,0,0,0),), #(830) (19)
41 )),
42 # uppercase
43 'UC': ("epsilon.svg", ((('UCb', 0,0,0,0),), #(2160) (30)
44 (('UCu', 0,-5,0,0),),
45 )),
46 'UCb': ("epsilon.svg", ((('Bar', 0,0,0,0),), #(21) Psi T I KK Phi
47 (('Bar', 0,0,0,1),), #
48 (('D', 0,0,0,0),), #(39) D O Q C G
49 (('D', 0,0,0,1),), #
50 (('E', 0,0,0,0),), #(373) E B PL 3 3r 8 S Theta Eth/Dyet
51 (('E', 0,0,0,1),), #
52 (('F', 0,0,0,0),), #(84) F P R
53 (('F', 0,0,0,1),), #
54 (('H', 0,0,0,0),), #(8) H Hblock
55 (('H', 0,0,0,1),), #
56 (('L', 0,0,0,0),), #(12) L J U
57 (('L', 0,0,0,1),), #
58 (('V', 0,0,0,1),), #(6) A V M Delta Forall W
59 (('X', 0,0,0,0),), #(172) X N M W Sigma NN
60 (('X', 0,0,0,0),), #(172) X N M W Sigma NN
61 )),
62 'UCu': ("epsilon.svg", ((('UCb', 0,0,1,1),),)),
63 # for statistical balancing
64 'lc2': ("epsilon.svg", ((('osym', 0,0,0,0),), #(40) o, c, e, ou
65 (('vsym', 0,0,0,0),), #(40) v, w, ^, y
66 (('dsym', 0,0,0,1),), #(96) x, z, 7, 2, yogh
67 (('lc3', 0,0,0,0),), #(928) (5)
68 )),
69 'lc3': ("epsilon.svg", ((('3sym', 0,0,0,0),), #(40) epsilon
70 (('ssym', 0,0,0,0),), #(8) s
71 (('asym', 0,0,0,0),), #(880) a 6 9
72 )),
73 # symmetry rules
74 'barsym':("epsilon.svg", ((('bar', 0,0,0,0),),
75 (('bar', 0,0,0,1),),
76 (('bar', 0,0,1,0),),
77 (('bar', 0,0,1,1),),
78 )),
79 '6sym': ("epsilon.svg", ((('6', 0,0,0,0),),
80 (('6', 0,0,0,1),),
81 (('6', 0,0,1,0),),
82 (('6', 0,0,1,1),),
83 )),
84 '3sym': ("epsilon.svg", ((('3', 0,0,0,0),),
85 (('3', 0,0,0,1),),
86 (('3', 0,0,1,0),),
87 (('3', 0,0,1,1),),
88 )),
89 'vsym': ("epsilon.svg", ((('v', 0,0,0,0),),
90 (('v', 0,0,1,1),),
91 )),
92 'osym': ("epsilon.svg", ((('o', 0,0,0,0),),
93 (('o', 0,0,0,1),),
94 )),
95 'ssym': ("epsilon.svg", ((('s', 0,0,0,0),),
96 (('s', 0,0,0,1),),
97 )),
98 'dsym': ("epsilon.svg", ((('diag', 0,0,0,0), ('diag', 0,0,1,1),),
99 (('diag', 0,0,0,1), ('diag', 0,0,1,0),),
100 (('dstk', 0,0,0,0),),
101 )),
102 'dstk': ("epsilon.svg", ((('stik', 0,4,0,0), ('z', 0,0,1,1),),
103 (('stik', 0,4,0,0), ('x', 0,0,1,1),),
104 (('stik', 0,4,0,1), ('z', 0,0,1,0),),
105 (('stik', 0,4,0,1), ('x', 0,0,1,0),),
106 )),
107 'asym': ("epsilon.svg", ((('abase', 0,0,0,0),),
108 (('abase', 0,0,0,1),),
109 (('abase', 0,0,1,0),),
110 (('abase', 0,0,1,1),),
111 )),
112 # epsilon rules
113 'diag': ("epsilon.svg", ((('x', 0,0,0,0),),
114 (('yogh', 0,0,1,1),),
115 (('z', 0,0,0,0),),
116 (('7', 0,0,0,0),),
117 (('2', 0,0,0,0),),
118 )),
119 'bar': ("bar.svg", ((('vert', 0,0,0,0), ('vert', 0,0,1,0),), # f l i t j glot.
120 (('k', 0,0,0,0), ('vert', 0,0,0,0), ('vert', 0,0,1,0),), # k
121 (('b', 0,0,0,0), ('vert', 0,0,1,0),), # h heng
122 (('n', 0,0,0,0), ('vert', 0,0,1,0),), # n m r eng u uu mu
123 (('b1', 0,0,0,0), ('b0', 0,0,1,0),), # thorn eject.
124 (('b1', 0,0,0,0), ('n0', 0,0,1,0),), # b p q d
125 (('n1', 0,0,0,0), ('n0', 0,0,1,0),), # open-a
126 )),
127 'vert': ("epsilon.svg", ((('xtnd', 0,0,0,0),),
128 (('srf', 0,0,1,0),),
129 #(('xtnd', 0,0,0,1),),
130 #(('srf', 0,0,1,1),),
131 )),
132 'srf': ("epsilon.svg", ((('lserif', 0,0,0,0),),
133 (('lserif', 0,0,0,1),),
134 (('serif', 0,0,0,0),),
135 (('tserif', 0,0,0,0),),
136 (('tserif', 0,0,0,1),),
137 )),
138 'xtnd': ("epsilon.svg", ((('cross', 0,0,0,0),), # this needs to be L-R flippable
139 (('cross', 0,0,0,1),),
140 (('l', 0,0,0,0),),
141 (('?', 0,0,0,0),),
142 (('?', 0,0,0,1),),
143 (('idot', 0,0,0,0),),
144 )),
145 'loop': ("epsilon.svg", ((('o0', 5,0,0,1),), # loop-around elts
146 (('30', 5,0,0,1),),
147 )),
148 'elike': ("epsilon.svg", ((('e', 0,0,0,0), ('crv', 0,0,1,0),),
149 (('a', 0,0,0,0), ('crv', 0,0,1,0),),
150 (('crv', 0,0,0,0), ('crv', 0,0,1,0),),
151 )),
152 'loop2': ("epsilon.svg", ((('elike', 0,0,0,0),),
153 (('loop', 0,0,0,0),),
154 )),
155 'hlike': ("epsilon.svg", ((('h', 0,0,0,0),), # h-like extensions
156 (('m', 0,0,0,0),),
157 (('crv', 0,0,0,0),),
158 )),
159 'crv': ("epsilon.svg", ((('r', 0,0,0,0),), # curvy things
160 (('cserif', 0,0,1,0),),
161 )),
162 # image rules
163 'abase': ("abase.svg", ((('n0', 0,0,1,0), ('loop2', 0,0,0,0),),
164 (('n0', 0,0,1,0), ('loop2', 0,0,1,0),),
165 (('b0', 0,0,1,0), ('loop2', 0,0,0,0),),
166 (('b0', 0,0,1,0), ('loop2', 0,0,1,0),),
167 )),
168 'v': ("v.svg", ((('vserl', 0,0,0,0), ('vserr', 0,0,0,0),),
169 (('vserl', 0,0,0,0), ('vserr', 0,0,0,0), ('y0', 0,0,0,0),),
170 (('vserl', 0,0,0,0), ('w', 6,0,0,0),),
171 (('vserl', 0,0,0,0), ('w', 6,0,0,0), ('y0', 0,0,0,0),),
172 )),
173 'w': ("v.svg", ((('vserr', 0,0,0,0),),
174 (('vserr', 0,0,0,0), ('y0', 0,0,0,0),),
175 )),
176 'y0': ("epsilon.svg", ((('y', 0,0,0,1),),
177 (('y', 0,0,0,0),),
178 (('gamma', 0,0,0,0),),
179 )),
180 'l': ("l.svg", ((('j', 0,0,0,0),),
181 (('j', 0,0,0,1),),
182 (('srf', 0,-4,1,0),),
183 )),
184 'o': ("o.svg", ((('loop2', 0,0,0,0),),
185 (('loop2', 0,0,1,0),),
186 )),
187 'cross': ("cross.svg", ((('t', 0,0,0,0),),
188 (('f0', 0,0,0,0),),
189 )),
190 'f': ("f.svg", ((('j', 0, 0,0,0),),
191 (('j', 0, 0,0,1),),
192 (('srf', 0,-4,1,0),),
193 )),
194 'f0': ("f.svg", ((('j', 0, 0,0,0),),
195 (('srf', 0,-4,1,0),),
196 )),
197 'idot': ("idot.svg", ((('serif', 0,0,1,0),),
198 (('lserif', 0,0,1,0),),
199 (('lserif', 0,0,1,1),),
200 )),
201 'stik': ("f.svg", ((('srf', 0,-4,1,0),),
202 #(('srf', 0,-4,1,1),),
203 )),
204 '3': ("3.svg", ((('loop2', 0,0,0,0),),
205 )),
206 # uppercase
207 # Bar rules
208 'X': ("epsilon.svg", ((('Xtb', 0,0,0,0), ('Xtb', 0,-5,1,1),),
209 (('Xlr', 0,0,0,0), ('Xlr', 0,-5,1,1),),
210 (('Xtb', 0,0,0,0), ('Xtb2', 0,-5,1,1),),
211 (('Xlr', 0,0,0,0), ('Xlr2', 0,-5,1,1),),
212 (('Xtb2', 0,0,0,0), ('Xtb', 0,-5,1,1),),
213 (('Xlr2', 0,0,0,0), ('Xlr', 0,-5,1,1),),
214 )),
216 'Xtb': ("epsilon.svg", ((('Xnw', 0,0,0,0), ('Xne', 0,0,0,0),),
217 (('Xne', 0,0,0,0), ('Xh', 0,0,0,0), ('Lterm2', 0,0,0,0),),
218 (('Xnw', 0,0,0,0), ('Xh', 0,0,0,1), ('Lterm2', 0,0,0,1),),
219 (('Xne', 0,0,0,0), ('Xh', 0,0,0,0), ('Xnw', 0,0,0,0), ('Xh', 0,0,0,1),),
220 )),
221 'Xlr': ("epsilon.svg", ((('Xne', 0,-5,1,1), ('Xnw', 0,0,0,0),),
222 (('Xne', 0,-5,1,1), ('Xvt', 0,0,0,0), ('Xvb', 0,0,0,0), ('ITSerif', 0.5,0,0,0),),
223 (('Xnw', 0, 0,0,0), ('Xvt', 0,0,0,0), ('Xvt', 0,-5,1,0), ('IBSerif', 0,0,0,0),),
224 (('Xne', 0,-5,1,1), ('Xnw', 0,0,0,0), ('Xvt', 0,0,0,0), ('Xvb', 0,0,0,0),),
225 )),
227 'Xtb2': ("epsilon.svg", ((('Xne', 0,0,0,0),),
228 (('Xnw', 0,0,0,0),),
229 )),
230 'Xlr2': ("epsilon.svg", ((('Xnw', 0,0,0,0),),
231 (('Xne', 0,-5,1,1),),
232 )),
234 'Xne': ("Xne.svg",),
235 'Xnw': ("Xnw.svg",),
236 'Xh': ("Xh.svg",),
237 'Xvt': ("Xvt.svg",),
238 'Xvb': ("Xvb.svg",),
241 'Bar': ("barcap.svg", ((('Bartop', 0,0,0,0), ('Barbot', 0,0,0,0), ('Barmid', 0,0,0,0),),
242 (('Bartop2', 0,0,0,0), ('Barbot2', 0,0,0,0),),
243 )),
244 'Bartop': ("epsilon.svg", ((('ITSerif', 0.5,0,0,0),),
245 (('Tt', 0, 0,0,0),),
246 )),
247 'Barbot': ("epsilon.svg", ((('IBSerif', 0,0,0,0),),
248 (('Tb', 0,0,0,0),),
249 )),
250 'Barbot2': ("epsilon.svg", ((('Barbot', 0,0,0,0),),
251 (('Psi', 0,0,0,0),),
252 )),
253 'Bartop2': ("epsilon.svg", ((('Bartop', 0, 0,0,0),),
254 (('Psi', 0,-5,1,0),),
255 )),
256 'Barmid': ("epsilon.svg", ((('Hm', 0,0,0,0), ('Eserif', 0,0,0,0), ('Hm', -7.5,0,0,1), ('Eserif', -7.5,0,0,1),),
257 (('P', -2.5,3,0,0), ('P', -5, 3,0,1),),
258 (('P', -5,3,0,1),), #points left
259 )),
260 'Psi': ("epsilon.svg", ((('IBSerif', 0,0,0,0), ('R', -2.5,0,0,0,), ('R', -5,0,0,1,),),
261 )),
262 # D / E / F / H / L rules
263 'D': ("epsilon.svg", ((('Dterm', 0,0,0,0), ('Dterm', 0,0,0,1),),
264 (('Dterm', 0,0,0,0), ('Dterm2', 0,0,0,1),),
265 )),
266 'E': ("epsilon.svg", ((('Eterm', 0,0,0,0), ('Eterm', 0,0,0,1),),
267 (('Eterm', 0,0,0,0), ('Eterm2', 0,0,0,1),),
268 (('Eterm2', 0,0,0,1), ('Eterm2', 0,-5,1,0),), # for S
269 )),
270 'F': ("epsilon.svg", ((('Fterm', 0,0,0,0), ('Fterm', 0,0,0,1),),
271 (('Fterm', 0,0,0,0), ('Fterm2', 0,0,0,1),),
272 )),
273 'H': ("epsilon.svg", ((('Hterm', 0,0,0,0), ('Hterm', 0,0,0,1),),
274 (('Hterm', 0,0,0,0), ('Hterm2', 0,0,0,1),),
275 )),
276 'L': ("epsilon.svg", ((('Lterm', 0,0,0,0), ('Lterm', 0,0,0,1),),
277 (('Lterm', 0,0,0,0), ('Lterm2', 0,0,0,1),),
278 )),
279 'Dterm': ("epsilon.svg", ((('Barterm', 0,0,0,0), ('Et', 0,0,0,0), ('Eb', 0,0,0,0),),
280 (('O', 0,0,0,0),),
281 )),
282 'Dterm2':("epsilon.svg", ((('C', 0,0,0,1),),
283 (('Ltserif', 0,0,0,1), ('Lbserif', 0,0,0,1),),
284 )),
285 'Eterm': ("epsilon.svg", ((('Barterm', 0,0,0,0), ('Et', 0,0,0,0), ('Hm', 0,0,0,0), ('Eb', 0,0,0,0),),
286 (('B', 0,0,0,1),),
287 (('O', 0,0,0,0), ('Ocross', 0,0,0,0),),
288 (('Dterm', 0,0,0,0), ('Eserif', 0,0,0,1),),
289 (('Dterm2', 0,0,0,0), ('Eserif', 0,0,0,1),),
290 )),
291 'Eterm2':("epsilon.svg", ((('P', 0,0,0,1), ('Lterm2', 0,-5,1,0),),
292 )),
293 'Fterm': ("epsilon.svg", ((('Barterm', 0,0,0,0), ('Et', 0,0,0,0), ('Hm', 0,0,0,0), ('IBSerif', 0,0,0,0),),
294 (('Lterm', 0,0,0,0), ('Eserif', 0,0,0,1),),
295 (('P', 0,0,0,1), ('R', 0,0,0,1),),
296 (('Ltserif', 0,0,0,1), ('R', 0,0,0,1),),
297 (('Ltserif', 0,0,0,1), ('Rblock', 0,0,0,1),),
298 (('Uterm', 0,0,0,0), ('Ocross', 0,0,0,0),),
299 )),
300 'Fterm2':("epsilon.svg", ((('P', 0,0,0,1),),
301 (('Lterm2', 0,0,0,0), ('Eserif', 0,0,0,1),),
302 )),
303 'Hterm': ("epsilon.svg", ((('Barterm', 0,0,0,0), ('Hm', 0,0,0,0), ('ITSerif', 0.5,0,0,0), ('IBSerif', 0,0,0,0),),
304 (('R', 0,0,0,1), ('R', 0,-5,1,1),),
305 )),
306 'Hterm2':("epsilon.svg", ((('R', 0,0,0,1),),
307 (('Rblock',0,0,0,1),),
308 )),
309 'Lterm': ("epsilon.svg", ((('Barterm', 0,0,0,0), ('Et', 0,0,0,0), ('IBSerif', 0,0,0,0),),
310 (('Uterm', 0,0,0,0),),
311 )),
312 'Lterm2':("epsilon.svg", ((('Ltserif', 0,0,0,1),),
313 (('Cserif', 0,-5,1,1),),
314 )),
315 'B': ("epsilon.svg", ((('P', 0,0,0,0), ('P', 0,6,0,0),),)),
316 'C': ("epsilon.svg", ((('Cserif', 0,0,0,0), ('Cserif', 0,-5,1,0),),)),
317 'Cserif':("epsilon.svg", (#(('Ctail', 0,0,0,0),), # I just hate the way these look...
318 (('Cblob', 0,0,0,0),),
319 (('Chook', 0,-5,1,0),),
320 (('G', 0,0,0,0),),
321 ),),
322 'O': ("epsilon.svg", ((('Oterm', 0,0,0,0),),
323 (('Q', 0,0,0,1),),
324 (('Qu', 0,0,0,1),),
325 )),
326 'Qu': ("epsilon.svg", ((('Q', 0,-5,1,0),),)),
327 'Barterm':("barcap.svg",),
328 'Ctail': ("Ctail.svg",),
329 'Chook': ("Chook.svg",),
330 'Cblob': ("Cblob.svg",),
331 'G': ("G.svg",),
332 'Ltserif':("Lt.svg",),
333 'Lbserif':("Lb.svg",),
334 'Et': ("Et.svg",),
335 'Eb': ("Eb.svg",),
336 'Hm': ("hcap.svg",),
337 'P': ("P.svg",),
338 'Tb': ("Tb.svg",),
339 'Tt': ("Tt.svg",),
340 'Ocross':("Ocross.svg",),
341 'Oterm': ("ocap.svg",),
342 'Q': ("Q.svg",),
343 'R': ("rcap.svg", ((('IBSerif', -0.5,0,0,1),),)),
344 'Rblock':("Rblock.svg", ((('IBSerif', -0.5,0,0,1),),)),
345 'Uterm': ("U.svg", ((('IBSerif', -0.5,0,0,0),),)),
346 'IBSerif':("IBSerif.svg",),
347 'ITSerif':("ITSerif.svg",),
348 'Eserif':("Eserif.svg",),
349 # V rules
350 'V': ("vcap.svg", ((('V2', 0,0,0,0),),
351 (('V2', 0,0,0,0), ('Across', 0,0,0,0)),
352 )),
353 'V2': ("epsilon.svg", ((('M', 0,0,0,0),),
354 (('Delta', 0,0,0,0),),
355 (('Vser', 0,0,0,0),),
356 )),
357 'M': ("mcap.svg", ((('IBSerif', -1.5,0,0,0), ('IBSerif', 1.5,0,0,1),),)),
358 'Delta': ("Delta.svg",),
359 'Vser': ("Vser.svg",),
360 'Across':("acap.svg",),
361 # single daughter rules
362 'b': ("b.svg", ((('hlike', 0,0,0,0), ('f', 0,0,0,0),),
363 #(('hlike', 0,0,0,0), ('f', 0,0,0,1),),
364 )),
365 'b1': ("b.svg", ((('loop', 0,0,0,0), ('f', 0,0,0,0),),
366 #(('loop', 0,0,0,0), ('f', 0,0,0,1),),
367 )),
368 'b0': ("b.svg", ((('f', 0,0,0,0),),
369 #(('f', 0,0,0,1),),
370 )),
371 'h': ("h.svg", ((('vert', 5,0,1,0),),)),
372 'm': ("m.svg", ((('h', 5,0,0,0), ('vert', 5,0,1,0),),)),# change later to allow 3 humped m
373 'n': ("n.svg", ((('hlike', 0,0,0,0),),)),
374 'n1': ("n.svg", ((('loop', 0,0,0,0),),)),
375 's': ("s.svg", ((('crv', 0,0,0,0), ('crv', 5,0,1,1),),)),
376 'j': ("j.svg", ((('crv', 0,-5,0,0),),)),
377 '?': ("question.svg", ((('crv', -2.5,-5,0,0),),)),
378 'yogh': ("yogh.svg",((('crv', -2.5,4,1,0),),)),
379 #terminal rules
380 '2': ("2.svg",),
381 '30': ("3.svg",),
382 '7': ("7.svg",),
383 'a': ("a.svg",),
384 'cserif':("cserif.svg",),
385 'e': ("e.svg",),
386 'k': ("k.svg",),
387 'n0': ("n.svg",),
388 'o0': ("o.svg",),
389 'r': ("r.svg",),
390 'serif': ("serif.svg",),
391 'tserif':("tserif.svg",),
392 'lserif':("lserif.svg",),
393 't': ("t.svg",),
394 'x': ("x.svg",),
395 'z': ("z.svg",),
396 'vserl': ("vserl.svg",),
397 'vserr': ("vserr.svg",),
398 'y': ("y.svg",),
399 'gamma': ("gamma.svg",)
400 }
402 alphabet = {
403 # Uppercase fix Y make 2)
404 '1': ("start.[.UC.[.UCb.[.Bar.[.Bartop2.[.Bartop.[.ITSerif.].].Barbot2.[.Barbot.[.IBSerif.].].].].].]",),
405 '33': ("start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.[.C.|.].Eserif.|.].Eterm.[.O.Ocross.].|.].].].]",),
406 '3': ("start.[.UC.[.UCb.[.E.[.Eterm.[.B.[.P.P.].|.].Eterm.[.Dterm2.[.C.|.].Eserif.|.].|.].|.].].]",
407 "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.[.C.|.].Eserif.|.].Eterm.[.O.Ocross.].|.].].].]",),
408 '4': ("start.[.UC.[.UCu.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm2.[.Rblock.[.IBSerif.|.].|.].|.].].-.|.].].]",),
409 '5': ("start.[.UC.[.UCu.[.UCb.[.E.[.Eterm.[.Dterm2.[.Ltserif.|.Lbserif.|.].Eserif.|.].Eterm2.[.P.|.Lterm2.[.Ltserif.|.].-.].|.].|.].-.|.].].]",),
410 '6': ("start.[.UC.[.UCu.[.UCb.[.E.[.Eterm.[.Dterm.[.O.].Eserif.|.].Eterm2.[.P.|.Lterm2.-.].|.].|.].-.|.].].]",
411 "start.[.UC.[.UCu.[.UCb.[.E.[.Eterm.[.O.Ocross.].Eterm2.[.P.|.Lterm2.-.].|.].|.].-.|.].].]",),
412 '7': ("start.[.UC.[.UCb.[.X.[.Xtb.[.Xne.Xh.Lterm2.[.Ltserif.|.].].Xtb2.[.Xne.].-.|.].].].]",),
413 '8': ("start.[.UC.[.UCb.[.E.[.Eterm.[.B.[.P.P.].|.].Eterm.[.B.[.P.P.].|.].|.].].].]",),
414 '9': ("start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm.[.O.].Eserif.|.].Eterm2.[.P.|.Lterm2.-.].|.].|.].].]",
415 "start.[.UC.[.UCb.[.E.[.Eterm.[.O.Ocross.].Eterm2.[.P.|.Lterm2.-.].|.].|.].].]",),
416 '0': ("start.[.UC.[.UCb.[.D.[.Dterm.[.O.].Dterm.[.O.].|.].].].]",),
417 'A': ("start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Barterm.Et.Hm.IBSerif.].|.].].].]", # no flip needed
418 "start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].|.].].].]",
419 "start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].|.].|.].].]",
420 "start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Uterm.[.IBSerif.].Ocross.].|.].].].]",
421 "start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Uterm.[.IBSerif.].Ocross.].|.].|.].].]",
422 "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].Fterm.[.Uterm.[.IBSerif.].Ocross.].|.].|.].].]",
423 "start.[.UC.[.UCb.[.F.[.Fterm.[.Uterm.[.IBSerif.].Ocross.].Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].|.].|.].].]",
424 "start.[.UC.[.UCb.[.F.[.Fterm.[.Uterm.[.IBSerif.].Ocross.].Fterm.[.Uterm.[.IBSerif.].Ocross.].|.].].].]",
425 "start.[.UC.[.UCu.[.UCb.[.V.[.V2.[.Vser.].Across.].|.].-.|.].].]",),
426 'B': ("start.[.UC.[.UCb.[.E.[.Eterm.[.B.[.P.P.].|.].Eterm.|.].|.].].]",
427 "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm.Eserif.|.].Eterm.[.B.[.P.P.].|.].|.].].].]",),
428 'Be': ("start.[.UC.[.UCu.[.UCb.[.E.[.Eterm.[.Barterm.Et.Hm.Eb.].Eterm2.[.P.|.Lterm2.-.].|.].|.].-.|.].].]", #cyrillic
429 "start.[.UC.[.UCu.[.UCb.[.E.[.Eterm.[.Dterm.[.Barterm.Et.Eb.].Eserif.|.].Eterm2.[.P.|.Lterm2.-.].|.].|.].-.|.].].]",),
430 'C': ("start.[.UC.[.UCb.[.D.[.Dterm.[.O.[.Oterm.].].Dterm2.[.C.|.].|.].].].]",),
431 'D': ("start.[.UC.[.UCb.[.D.[.Dterm.Dterm.[.O.[.Oterm.].].|.].].].]",
432 "start.[.UC.[.UCb.[.D.[.Dterm.[.O.[.Oterm.].].Dterm2.[.Ltserif.|.Lbserif.|.].|.].|.].].].",
433 "start.[.UC.[.UCb.[.D.[.Dterm.[.Barterm.Et.Eb.].Dterm.[.Barterm.Et.Eb.].|.].].].]",),
434 'Delta': ("start.[.UC.[.UCu.[.UCb.[.V.[.V2.[.Delta.].].|.].-.|.].].]",), #Delta
435 'De': ("start.[.UC.[.UCu.[.UCb.[.D.[.Dterm.[.Barterm.Et.Eb.].Dterm.[.Barterm.Et.Eb.].|.].].-.|.].].]",), #Cyrillic
436 'E': ("start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.Eserif.|.].Eterm.[.Dterm.[.Barterm.Et.Eb.].Eserif.|.].|.].|.].].]",
437 "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.Eserif.|.].Eterm.[.Dterm.[.O.].Eserif.|.].|.].|.].].]",
438 "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.Eserif.|.].Eterm.[.B.[.P.P.].|.].|.].|.].].]",
439 "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.Eserif.|.].Eterm.[.Barterm.Et.Hm.Eb.].|.].|.].].]",
440 "start.[.UC.[.UCb.[.E.[.Eterm.[.O.Ocross.].Eterm.[.Dterm2.Eserif.|.].|.].].].]",),
441 'Eth': ("start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm.[.O.].Eserif.|.].Eterm.[.Barterm.Et.Hm.Eb.].|.].|.].].]",),
442 'F': ("start.[.UC.[.UCb.[.F.[.Fterm.Fterm2.[.Lterm2.Eserif.|.].|.].].].]",),
443 'G': ("start.[.UC.[.UCb.[.D.[.Dterm.[.O.].Dterm2.[.C.[.Cserif.[.G.].Cserif.-.].|.].|.].].].]",),
444 'Gamma': ("start.[.UC.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm2.|.].].].]",), #Gamma
445 'H': ("start.[.UC.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm.[.Barterm.Hm.ITSerif.IBSerif.].|.].].].]",
446 "start.[.UC.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm2.[.R.[.IBSerif.|.].|.].|.].].].]",
447 "start.[.UC.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm2.[.Rblock.[.IBSerif.|.].|.].|.].].].]",),
448 'Che': ("start.[.UC.[.UCu.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm2.[.Rblock.[.IBSerif.|.].|.].|.].].-.|.].].]", #Cyrillic
449 "start.[.UC.[.UCu.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm2.[.R.[.IBSerif.|.].|.].|.].].-.|.].].]",),
450 'Heng': ("start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Ltserif.|.R.[.IBSerif.|.].|.].|.].].].]",
451 "start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Ltserif.|.Rblock.[.IBSerif.|.].|.].|.].].].]",
452 "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Barterm.Et.IBSerif.].Eserif.|.].Fterm.[.Ltserif.|.R.[.IBSerif.|.].|.].|.].].].]",
453 "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Barterm.Et.IBSerif.].Eserif.|.].Fterm.[.Ltserif.|.Rblock.[.IBSerif.|.].|.].|.].].].]",),
454 'I': ("start.[.UC.[.UCb.[.Bar.[.Bartop2.[.Bartop.[.ITSerif.].].Barbot2.[.Barbot.[.IBSerif.].].].].].]",
455 "start.[.UC.[.UCb.[.Bar.[.Bartop2.[.Bartop.[.Tt.].].Barbot2.[.Barbot.[.Tb.].].].].].]",),
456 'J': ("start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Uterm.[.IBSerif.].].Lterm2.|.].].-.|.].].]",),
457 'K': ("start.[.UC.[.UCu.[.UCb.[.X.[.Xlr.[.Xne.-.|.Xnw.].Xlr.[.Xne.-.|.Xvt.Xvb.ITSerif.].-.|.].].-.|.].].]",
458 "start.[.UC.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm.[.R.[.IBSerif.|.].|.R.[.IBSerif.|.].-.|.].|.].].].]",),
459 'Zhe': ("start.[.UC.[.UCb.[.Bar.[.Bartop2.[.Psi.[.IBSerif.R.[.IBSerif.|.].R.[.IBSerif.|.].|.].-.].Barbot2.[.Psi.[.IBSerif.R.[.IBSerif.|.].R.[.IBSerif.|.].|.].].].].].]",), # Cyrillic
460 'L': ("start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm2.|.].|.].-.|.].].]",),
461 'Lambda':("start.[.UC.[.UCu.[.UCb.[.V.[.V2.[.Vser.].].|.].-.|.].].]",),# Lambda
462 'M': ("start.[.UC.[.UCu.[.UCb.[.X.[.Xlr.[.Xne.-.|.Xvt.Xvb.ITSerif.].Xlr.[.Xnw.Xvt.Xvt.-.IBSerif.].-.|.].].-.|.].].]",
463 "start.[.UC.[.UCb.[.V.[.V2.[.M.[.IBSerif.IBSerif.|.].].].|.].].]",),
464 'N': ("start.[.UC.[.UCu.[.UCb.[.X.[.Xlr.[.Xnw.Xvt.Xvt.-.IBSerif.].Xlr.[.Xnw.Xvt.Xvt.-.IBSerif.].-.|.].].-.|.].].]",
465 "start.[.UC.[.UCb.[.L.[.Lterm.[.Uterm.[.IBSerif.].].Lterm.[.Barterm.Et.IBSerif.].|.].|.].].]",),
466 'NN': ("start.[.UC.[.UCu.[.UCb.[.X.[.Xlr.[.Xne.-.|.Xvt.Xvb.ITSerif.].Xlr.[.Xne.-.|.Xvt.Xvb.ITSerif.].-.|.].].-.|.].].]",), # Cyrillic I
467 'O': ("start.[.UC.[.UCb.[.D.[.Dterm.[.O.].Dterm.[.O.].|.].].].]",),
468 'P': ("start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm2.[.P.|.].|.].].].]",
469 "start.[.UC.[.UCb.[.F.[.Fterm.[.Ltserif.|.R.[.IBSerif.|.].|.].Fterm2.[.P.|.].|.].].].]",
470 "start.[.UC.[.UCb.[.F.[.Fterm.[.Ltserif.|.Rblock.[.IBSerif.|.].|.].Fterm2.[.P.|.].|.].].].]",
471 "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Barterm.Et.IBSerif.].Eserif.|.].Fterm2.[.P.|.].|.].].].]",
472 "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].Fterm2.[.P.|.].|.].].].]",
473 "start.[.UC.[.UCb.[.F.[.Fterm.[.Uterm.[.IBSerif.].Ocross.].Fterm2.[.P.|.].|.].].].]",),
474 'PL': ("start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm.[.Barterm.Et.Eb.].Eserif.|.].Eterm2.[.P.|.Lterm2.-.].|.].].].]",
475 "start.[.UC.[.UCb.[.E.[.Eterm.[.Barterm.Et.Hm.Eb.].Eterm2.[.P.|.Lterm2.[.Cserif.-.|.].-.].|.].].].]",),
476 'Phi': ("start.[.UC.[.UCb.[.Bar.[.Bartop.[.ITSerif.].Barbot.[.IBSerif.].Barmid.[.P.P.|.].].].].]",),
477 'Pi': ("start.[.UC.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm.[.Barterm.Et.IBSerif.].|.].].].]",),
478 'Psi': ("start.[.UC.[.UCb.[.Bar.[.Bartop2.[.Psi.[.IBSerif.R.[.IBSerif.|.].R.[.IBSerif.|.].|.].-.].Barbot2.[.Barbot.[.IBSerif.].].].].].]",),
479 'Soft': ("start.[.UC.[.UCu.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm2.[.P.|.].|.].|.].-.|.].].]",# Cyrillic Yeru/Soft/Hard
480 "start.[.UC.[.UCu.[.UCb.[.F.[.Fterm.[.Lterm.[.Barterm.Et.IBSerif.].Eserif.|.].Fterm2.[.P.|.].|.].|.].-.|.].].]",
481 "start.[.UC.[.UCu.[.UCb.[.F.[.Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].Fterm2.[.P.|.].|.].|.].-.|.].].]",
482 "start.[.UC.[.UCu.[.UCb.[.F.[.Fterm.[.Ltserif.|.Rblock.[.IBSerif.|.].|.].Fterm2.[.P.|.].|.].|.].-.|.].].]",
483 "start.[.UC.[.UCu.[.UCb.[.F.[.Fterm.[.Uterm.[.IBSerif.].Ocross.].Fterm2.[.P.|.].|.].|.].-.|.].].]",),
484 'Q': ("start.[.UC.[.UCb.[.D.[.Dterm.[.O.[.Oterm.].].Dterm.[.O.[.Q.|.].].|.].].].]",),
485 'R': ("start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Barterm.Et.IBSerif.].Eserif.|.].Fterm.[.P.|.R.[.IBSerif.|.].|.].|.].].].]",
486 "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].Fterm.[.P.|.R.[.IBSerif.|.].|.].|.].].].]",
487 "start.[.UC.[.UCb.[.F.[.Fterm.[.P.|.R.[.IBSerif.|.].|.].Fterm.[.Barterm.Et.Hm.IBSerif.].|.].|.].].]",
488 "start.[.UC.[.UCb.[.F.[.Fterm.[.Uterm.[.IBSerif.].Ocross.].Fterm.[.P.|.R.[.IBSerif.|.].|.].|.].].].]",),
489 'Ya': ("start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Barterm.Et.IBSerif.].Eserif.|.].Fterm.[.P.|.R.[.IBSerif.|.].|.].|.].|.].].]",
490 "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].Fterm.[.P.|.R.[.IBSerif.|.].|.].|.].|.].].]",
491 "start.[.UC.[.UCb.[.F.[.Fterm.[.P.|.R.[.IBSerif.|.].|.].Fterm.[.Barterm.Et.Hm.IBSerif.].|.].].].]",
492 "start.[.UC.[.UCb.[.F.[.Fterm.[.Uterm.[.IBSerif.].Ocross.].Fterm.[.P.|.R.[.IBSerif.|.].|.].|.].|.].].]",),
493 'S': ("start.[.UC.[.UCb.[.E.[.Eterm2.[.P.|.Lterm2.-.].|.Eterm2.[.P.|.Lterm2.-.].-.].|.].].]",),
494 'Sigma': ("start.[.UC.[.UCb.[.X.[.Xtb.[.Xnw.Xh.|.Lterm2.|.].Xtb.[.Xne.Xh.Lterm2.].-.|.].].].]",),
495 'T': ("start.[.UC.[.UCb.[.Bar.[.Bartop2.[.Bartop.[.Tt.].].Barbot2.[.Barbot.[.IBSerif.].].].].].]",
496 "start.[.UC.[.UCb.[.Bar.[.Bartop.[.ITSerif.].Barbot.[.IBSerif.].Barmid.[.Hm.Eserif.Hm.|.Eserif.|.].].].].]",),
497 'Theta': ("start.[.UC.[.UCb.[.E.[.Eterm.[.O.Ocross.].Eterm.[.O.Ocross.].|.].].].]",),
498 'Thorn': ("start.[.UC.[.UCu.[.UCb.[.Bar.[.Bartop.[.ITSerif.].Barbot.[.IBSerif.].Barmid.[.P.|.].].].-.|.].].]",),
499 'U': ("start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm.[.Barterm.Et.IBSerif.].|.].|.].-.|.].].]",
500 "start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm.[.Uterm.[.IBSerif.].].|.].].-.|.].].]",
501 "start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Uterm.[.IBSerif.].].Lterm.[.Uterm.[.IBSerif.].].|.].].-.|.].].]",
502 "start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm.[.Barterm.Et.IBSerif.].|.].].-.|.].].]",),
503 'Tse': ("start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm.[.Barterm.Et.IBSerif.].|.].].-.|.].].]",),# Cyrillic
504 'V': ("start.[.UC.[.UCb.[.V.[.V2.[.Vser.].].|.].].]",),
505 'W': ("start.[.UC.[.UCb.[.X.[.Xlr.[.Xne.-.|.Xvt.Xvb.ITSerif.].Xlr.[.Xnw.Xvt.Xvt.-.IBSerif.].-.|.].].].]",
506 "start.[.UC.[.UCu.[.UCb.[.V.[.V2.[.M.[.IBSerif.IBSerif.|.].].].|.].-.|.].].]",),
507 'X': ("start.[.UC.[.UCu.[.UCb.[.X.[.Xlr.[.Xne.-.|.Xnw.].Xlr.[.Xne.-.|.Xnw.].-.|.].].-.|.].].]",
508 "start.[.UC.[.UCb.[.H.[.Hterm.[.R.|.R.-.|.].Hterm.[.R.|.R.-.|.].|.].].].]",),
509 'Xi': ("start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.[.Ltserif.|.Lbserif.|.].Eserif.|.].Eterm.[.Dterm2.[.Ltserif.|.Lbserif.|.].Eserif.|.].|.].|.].].]",),
510 'Y': ("start.[.UC.[.UCb.[.X.[.Xlr.[.Xne.-.|.Xnw.].Xlr2.[.Xne.-.|.].-.|.].].].]",),
511 'Z': ("start.[.UC.[.UCb.[.X.[.Xtb.[.Xne.Xh.Lterm2.].Xtb.[.Xne.Xh.Lterm2.].-.|.].].].]",),
512 # Lowercase
513 'a': ("start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.n0.-.loop2.[.elike.[.a.crv.-.].].-.].|.].].].].]",
514 "start.[.lc.[.barsym.[.bar.[.n1.[.loop.].n0.-.].-.|.].].]",
515 "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.n0.-.loop2.[.loop.].].|.].].].].]",),
516 'carat':("start.[.lc.[.lc2.[.vsym.[.v.[.vserl.vserr.].-.|.].].].]",),
517 'b': ("start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.].n0.-.].].].]",
518 "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.].-.loop2.[.loop.].].-.].].].].]",
519 "start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.|.].n0.-.].].].]",
520 "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.|.].-.loop2.[.loop.].].-.].].].].]",),
521 'c': ("start.[.lc.[.lc2.[.osym.[.o.[.loop2.[.elike.[.crv.-.|.crv.|.].|.].].].].].]",),
522 'd': ("start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.].n0.-.].].|.].]",
523 "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.].-.loop2.[.loop.].].-.].|.].].].]",
524 "start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.|.].n0.-.].].|.].]",
525 "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.|.].-.loop2.[.loop.].].-.].|.].].].]",),
526 'e': ("start.[.lc.[.lc2.[.osym.[.o.[.loop2.[.elike.[.e.crv.-.].].].].].].]",
527 "start.[.lc.[.lc2.[.lc3.[.3sym.[.3.[.loop2.[.elike.[.crv.crv.-.].].].].].].].]",),
528 'epsi': ("start.[.lc.[.lc2.[.lc3.[.3sym.[.3.[.loop2.[.elike.[.crv.crv.-.].].].].].].].]",),
529 'f': ("start.[.lc.[.barsym.[.bar.[.vert.[.xtnd.[.cross.[.f0.[.j.].].].].vert.-.].].].]",),
530 'g': ("start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.[.j.[.crv.].].].n0.-.].-.|.].].]",
531 "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.[.j.].].-.loop2.[.loop.].].-.].-.|.].].].]",),
532 'gamma':("start.[.lc.[.lc2.[.vsym.[.v.[.vserl.vserr.y0.[.gamma.].].].].].]",),
533 'h': ("start.[.lc.[.barsym.[.bar.[.b.[.hlike.[.h.].f.].vert.-.].].].]",
534 "start.[.lc.[.barsym.[.bar.[.b.[.hlike.[.h.].f.|.].vert.-.].].].]",),
535 'heng': ("start.[.lc.[.barsym.[.bar.[.b.[.hlike.[.h.[.vert.[.xtnd.[.l.[.j.[.crv.].].].|.].-.].].f.[.j.[.crv.].].].vert.[.srf.-.|.].-.].].].]",),
536 'i': ("start.[.lc.[.barsym.[.bar.[.vert.vert.[.xtnd.[.idot.].-.].].-.|.].].]",
537 "start.[.lc.[.barsym.[.bar.[.vert.vert.[.xtnd.[.idot.].-.].|.].-.|.].].]",),
538 'j': ("start.[.lc.[.barsym.[.bar.[.vert.[.xtnd.[.idot.].-.].vert.[.xtnd.[.l.[.j.].].].|.].-.].].]",),
539 'k': ("start.[.lc.[.barsym.[.bar.[.k.vert.vert.-.].].].]",),
540 'l': ("start.[.lc.[.barsym.[.bar.[.vert.vert.[.xtnd.[.l.].-.].|.].-.|.].].]",
541 "start.[.lc.[.barsym.[.bar.[.vert.vert.[.xtnd.[.l.|.].-.].|.].-.|.].].]",),
542 'lambda':("start.[.lc.[.lc2.[.vsym.[.v.[.vserl.vserr.y0.].-.|.].].].]",),
543 'm': ("start.[.lc.[.barsym.[.bar.[.n.[.hlike.[.m.[.h.[.vert.-.].vert.-.].].].vert.-.].].].]",),
544 'mu': ("start.[.lc.[.barsym.[.bar.[.b.[.hlike.[.h.[.vert.-.].].f.].vert.-.].-.|.].].]",),
545 'muu': ("start.[.lc.[.barsym.[.bar.[.b.[.hlike.[.m.[.h.[.vert.-.].vert.-.].].f.].vert.-.|.].-.|.].].]",),
546 'n': ("start.[.lc.[.barsym.[.bar.[.n.[.hlike.[.h.[.vert.-.].].].vert.-.].].].]",),
547 'ng': ("start.[.lc.[.barsym.[.bar.[.n.[.hlike.[.h.[.vert.[.xtnd.[.l.[.j.].].|.].-.].].].vert.-.].].].]",),
548 'o': ("start.[.lc.[.lc2.[.osym.[.o.[.loop2.[.loop.[.o0.|.].].].].].].]",),
549 'p': ("start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.].n0.-.].].-.].]",
550 "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.].-.loop2.[.loop.].].-.].-.].].].]",
551 "start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.|.].n0.-.].].-.].]",
552 "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.|.].-.loop2.[.loop.].].-.].-.].].].]",),
553 'q': ("start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.].n0.-.].].-.|.].]",
554 "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.].-.loop2.[.loop.].].-.].-.|.].].].]",
555 "start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.|.].n0.-.].].-.|.].]",
556 "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.|.].-.loop2.[.loop.].].-.].-.|.].].].]",),
557 'r': ("start.[.lc.[.barsym.[.bar.[.n.[.hlike.[.crv.].].vert.-.].].].]",),
558 's': ("start.[.lc.[.lc2.[.lc3.[.ssym.[.s.[.crv.crv.-.|.].].].].].]",),
559 't': ("start.[.lc.[.barsym.[.bar.[.vert.[.xtnd.[.cross.[.f0.].].].vert.-.].].].]",),
560 'u': ("start.[.lc.[.barsym.[.bar.[.n.[.hlike.[.h.[.vert.-.].].].vert.-.].-.|.].].]",),
561 'uu': ("start.[.lc.[.barsym.[.bar.[.n.[.hlike.[.m.[.h.[.vert.-.].vert.-.].].].vert.-.].-.|.].].]",),
562 'v': ("start.[.lc.[.lc2.[.vsym.[.v.[.vserl.vserr.].].].].]",),
563 'w': ("start.[.lc.[.lc2.[.vsym.[.v.[.vserl.w.[.vserr.].].].].].]",),
564 'x': ("start.[.lc.[.lc2.[.dsym.[.diag.[.x.].-.diag.[.x.].|.].-.].].]",),
565 'y': ("start.[.lc.[.lc2.[.vsym.[.v.[.vserl.vserr.y0.].].].].]",),
566 'yogh': ("start.[.lc.[.lc2.[.dsym.[.diag.[.z.].|.diag.[.yogh.[.crv.-.].-.|.].-.].].].]",),
567 'z': ("start.[.lc.[.lc2.[.dsym.[.diag.[.z.].diag.[.z.].-.|.].|.].].]",),
568 'glot': ("start.[.lc.[.barsym.[.bar.[.vert.[.xtnd.[.?.|.].].vert.-.].].].]",),
569 '1l': ("start.[.lc.[.barsym.[.bar.[.vert.[.srf.[.lserif.].].vert.[.srf.[.serif.].-.].|.].].-.].]",),
570 '2l': ("start.[.lc.[.lc2.[.dsym.[.diag.[.2.].diag.[.z.].-.|.].|.].].]",),
571 '3l': ("start.[.lc.[.lc2.[.dsym.[.diag.[.z.].|.diag.[.yogh.[.crv.-.].-.|.].-.].].].]",),
572 '6l': ("start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.[.j.].].-.loop2.[.loop.].-.].-.].].].].]",),
573 '7l': ("start.[.lc.[.lc2.[.dsym.[.diag.[.z.].diag.[.7.].-.|.].|.].].]",),
574 '8l': ("start.[.lc.[.lc2.[.lc3.[.3sym.[.3.[.loop2.[.loop.[.30.|.].].].].].].].]",),
575 '9l': ("start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.[.j.].].-.loop2.[.loop.].-.].|.].].].].]",),
576 '0l': ("start.[.lc.[.lc2.[.osym.[.o.[.loop2.[.loop.[.o0.|.].].].].].].]",)
577 }
579 space = 4 # number of unit boxes to make a " " space in string
580 units = 36 # pixels per unit box in font
581 font = "alphabet_soup/" # location of font images
584 # vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 fileencoding=utf-8 textwidth=99