summaryrefslogtreecommitdiffstats
path: root/share/extensions/render_alphabetsoup_config.py
diff options
context:
space:
mode:
Diffstat (limited to 'share/extensions/render_alphabetsoup_config.py')
-rwxr-xr-xshare/extensions/render_alphabetsoup_config.py902
1 files changed, 902 insertions, 0 deletions
diff --git a/share/extensions/render_alphabetsoup_config.py b/share/extensions/render_alphabetsoup_config.py
new file mode 100755
index 0000000..91b486a
--- /dev/null
+++ b/share/extensions/render_alphabetsoup_config.py
@@ -0,0 +1,902 @@
+# coding=utf-8
+# pylint: disable=invalid-name,line-too-long
+# Syntax format: (raise your hand if you know lisp :-)
+#
+# 'state0': ("file.svg", ( ( ('state1', dx, dy, T-B, L|R),),
+# ( ('state2', ...), ('state3', ...),),
+# ( ('state4', ...),),
+# ) ),
+# )
+#
+# Translation of the above in CNF:
+# state0 -> state1
+# state0 -> state2 state3
+# state0 -> state4
+#
+# Semantics at state0:
+# Paste subtree image from state1 onto "file.svg".
+# Subtree image is translated by (dx, dy) (measured in units, not pixels!).
+# Subtree image is flipped top to bottom if v==1.
+# Subtree image is flipped left to right if h==1.
+#
+# Notes:
+# Origin (0,0) is at *upper* left corner.
+# For optional reflections, add both reflecting and non-reflecting rules
+# For 180 degree rotations, set v = 1, h = 1.
+# It helps to have an empty "epsilon" image.
+#
+"""Data for render alphabet soup"""
+
+syntax = {
+ "start": (
+ "epsilon.svg",
+ ((("lc", 0, 0, 0, 0),), (("UC", 0, 0, 0, 0),)), # start state
+ ),
+ # lowercase
+ "lc": (
+ "epsilon.svg",
+ (
+ (("barsym", 0, 0, 0, 0),), # (2096714) (26)
+ (("lc2", 0, 0, 0, 0),), # (830) (19)
+ ),
+ ),
+ # uppercase
+ "UC": (
+ "epsilon.svg",
+ ((("UCb", 0, 0, 0, 0),), (("UCu", 0, -5, 0, 0),)), # (2160) (30)
+ ),
+ "UCb": (
+ "epsilon.svg",
+ (
+ (("Bar", 0, 0, 0, 0),), # (21) Psi T I KK Phi
+ (("Bar", 0, 0, 0, 1),), #
+ (("D", 0, 0, 0, 0),), # (39) D O Q C G
+ (("D", 0, 0, 0, 1),), #
+ (("E", 0, 0, 0, 0),), # (373) E B PL 3 3r 8 S Theta Eth/Dyet
+ (("E", 0, 0, 0, 1),), #
+ (("F", 0, 0, 0, 0),), # (84) F P R
+ (("F", 0, 0, 0, 1),), #
+ (("H", 0, 0, 0, 0),), # (8) H Hblock
+ (("H", 0, 0, 0, 1),), #
+ (("L", 0, 0, 0, 0),), # (12) L J U
+ (("L", 0, 0, 0, 1),), #
+ (("V", 0, 0, 0, 1),), # (6) A V M Delta Forall W
+ (("X", 0, 0, 0, 0),), # (172) X N M W Sigma NN
+ (("X", 0, 0, 0, 0),), # (172) X N M W Sigma NN
+ ),
+ ),
+ "UCu": ("epsilon.svg", ((("UCb", 0, 0, 1, 1),),)),
+ # for statistical balancing
+ "lc2": (
+ "epsilon.svg",
+ (
+ (("osym", 0, 0, 0, 0),), # (40) o, c, e, ou
+ (("vsym", 0, 0, 0, 0),), # (40) v, w, ^, y
+ (("dsym", 0, 0, 0, 1),), # (96) x, z, 7, 2, yogh
+ (("lc3", 0, 0, 0, 0),), # (928) (5)
+ ),
+ ),
+ "lc3": (
+ "epsilon.svg",
+ (
+ (("3sym", 0, 0, 0, 0),), # (40) epsilon
+ (("ssym", 0, 0, 0, 0),), # (8) s
+ (("asym", 0, 0, 0, 0),), # (880) a 6 9
+ ),
+ ),
+ # symmetry rules
+ "barsym": (
+ "epsilon.svg",
+ (
+ (("bar", 0, 0, 0, 0),),
+ (("bar", 0, 0, 0, 1),),
+ (("bar", 0, 0, 1, 0),),
+ (("bar", 0, 0, 1, 1),),
+ ),
+ ),
+ "6sym": (
+ "epsilon.svg",
+ (
+ (("6", 0, 0, 0, 0),),
+ (("6", 0, 0, 0, 1),),
+ (("6", 0, 0, 1, 0),),
+ (("6", 0, 0, 1, 1),),
+ ),
+ ),
+ "3sym": (
+ "epsilon.svg",
+ (
+ (("3", 0, 0, 0, 0),),
+ (("3", 0, 0, 0, 1),),
+ (("3", 0, 0, 1, 0),),
+ (("3", 0, 0, 1, 1),),
+ ),
+ ),
+ "vsym": ("epsilon.svg", ((("v", 0, 0, 0, 0),), (("v", 0, 0, 1, 1),))),
+ "osym": ("epsilon.svg", ((("o", 0, 0, 0, 0),), (("o", 0, 0, 0, 1),))),
+ "ssym": ("epsilon.svg", ((("s", 0, 0, 0, 0),), (("s", 0, 0, 0, 1),))),
+ "dsym": (
+ "epsilon.svg",
+ (
+ (("diag", 0, 0, 0, 0), ("diag", 0, 0, 1, 1)),
+ (("diag", 0, 0, 0, 1), ("diag", 0, 0, 1, 0)),
+ (("dstk", 0, 0, 0, 0),),
+ ),
+ ),
+ "dstk": (
+ "epsilon.svg",
+ (
+ (("stik", 0, 4, 0, 0), ("z", 0, 0, 1, 1)),
+ (("stik", 0, 4, 0, 0), ("x", 0, 0, 1, 1)),
+ (("stik", 0, 4, 0, 1), ("z", 0, 0, 1, 0)),
+ (("stik", 0, 4, 0, 1), ("x", 0, 0, 1, 0)),
+ ),
+ ),
+ "asym": (
+ "epsilon.svg",
+ (
+ (("abase", 0, 0, 0, 0),),
+ (("abase", 0, 0, 0, 1),),
+ (("abase", 0, 0, 1, 0),),
+ (("abase", 0, 0, 1, 1),),
+ ),
+ ),
+ # epsilon rules
+ "diag": (
+ "epsilon.svg",
+ (
+ (("x", 0, 0, 0, 0),),
+ (("yogh", 0, 0, 1, 1),),
+ (("z", 0, 0, 0, 0),),
+ (("7", 0, 0, 0, 0),),
+ (("2", 0, 0, 0, 0),),
+ ),
+ ),
+ "bar": (
+ "bar.svg",
+ (
+ (("vert", 0, 0, 0, 0), ("vert", 0, 0, 1, 0)), # f l i t j glot.
+ (("k", 0, 0, 0, 0), ("vert", 0, 0, 0, 0), ("vert", 0, 0, 1, 0)), # k
+ (("b", 0, 0, 0, 0), ("vert", 0, 0, 1, 0)), # h heng
+ (("n", 0, 0, 0, 0), ("vert", 0, 0, 1, 0)), # n m r eng u uu mu
+ (("b1", 0, 0, 0, 0), ("b0", 0, 0, 1, 0)), # thorn eject.
+ (("b1", 0, 0, 0, 0), ("n0", 0, 0, 1, 0)), # b p q d
+ (("n1", 0, 0, 0, 0), ("n0", 0, 0, 1, 0)), # open-a
+ ),
+ ),
+ "vert": (
+ "epsilon.svg",
+ (
+ (("xtnd", 0, 0, 0, 0),),
+ (("srf", 0, 0, 1, 0),),
+ # (('xtnd', 0,0,0,1),),
+ # (('srf', 0,0,1,1),),
+ ),
+ ),
+ "srf": (
+ "epsilon.svg",
+ (
+ (("lserif", 0, 0, 0, 0),),
+ (("lserif", 0, 0, 0, 1),),
+ (("serif", 0, 0, 0, 0),),
+ (("tserif", 0, 0, 0, 0),),
+ (("tserif", 0, 0, 0, 1),),
+ ),
+ ),
+ "xtnd": (
+ "epsilon.svg",
+ (
+ (("cross", 0, 0, 0, 0),), # this needs to be L-R flippable
+ (("cross", 0, 0, 0, 1),),
+ (("l", 0, 0, 0, 0),),
+ (("?", 0, 0, 0, 0),),
+ (("?", 0, 0, 0, 1),),
+ (("idot", 0, 0, 0, 0),),
+ ),
+ ),
+ "loop": (
+ "epsilon.svg",
+ ((("o0", 5, 0, 0, 1),), (("30", 5, 0, 0, 1),)), # loop-around elts
+ ),
+ "elike": (
+ "epsilon.svg",
+ (
+ (("e", 0, 0, 0, 0), ("crv", 0, 0, 1, 0)),
+ (("a", 0, 0, 0, 0), ("crv", 0, 0, 1, 0)),
+ (("crv", 0, 0, 0, 0), ("crv", 0, 0, 1, 0)),
+ ),
+ ),
+ "loop2": ("epsilon.svg", ((("elike", 0, 0, 0, 0),), (("loop", 0, 0, 0, 0),))),
+ "hlike": (
+ "epsilon.svg",
+ (
+ (("h", 0, 0, 0, 0),), # h-like extensions
+ (("m", 0, 0, 0, 0),),
+ (("crv", 0, 0, 0, 0),),
+ ),
+ ),
+ "crv": (
+ "epsilon.svg",
+ ((("r", 0, 0, 0, 0),), (("cserif", 0, 0, 1, 0),)), # curvy things
+ ),
+ # image rules
+ "abase": (
+ "abase.svg",
+ (
+ (("n0", 0, 0, 1, 0), ("loop2", 0, 0, 0, 0)),
+ (("n0", 0, 0, 1, 0), ("loop2", 0, 0, 1, 0)),
+ (("b0", 0, 0, 1, 0), ("loop2", 0, 0, 0, 0)),
+ (("b0", 0, 0, 1, 0), ("loop2", 0, 0, 1, 0)),
+ ),
+ ),
+ "v": (
+ "v.svg",
+ (
+ (("vserl", 0, 0, 0, 0), ("vserr", 0, 0, 0, 0)),
+ (("vserl", 0, 0, 0, 0), ("vserr", 0, 0, 0, 0), ("y0", 0, 0, 0, 0)),
+ (("vserl", 0, 0, 0, 0), ("w", 6, 0, 0, 0)),
+ (("vserl", 0, 0, 0, 0), ("w", 6, 0, 0, 0), ("y0", 0, 0, 0, 0)),
+ ),
+ ),
+ "w": (
+ "v.svg",
+ ((("vserr", 0, 0, 0, 0),), (("vserr", 0, 0, 0, 0), ("y0", 0, 0, 0, 0))),
+ ),
+ "y0": (
+ "epsilon.svg",
+ ((("y", 0, 0, 0, 1),), (("y", 0, 0, 0, 0),), (("gamma", 0, 0, 0, 0),)),
+ ),
+ "l": (
+ "l.svg",
+ ((("j", 0, 0, 0, 0),), (("j", 0, 0, 0, 1),), (("srf", 0, -4, 1, 0),)),
+ ),
+ "o": ("o.svg", ((("loop2", 0, 0, 0, 0),), (("loop2", 0, 0, 1, 0),))),
+ "cross": ("cross.svg", ((("t", 0, 0, 0, 0),), (("f0", 0, 0, 0, 0),))),
+ "f": (
+ "f.svg",
+ ((("j", 0, 0, 0, 0),), (("j", 0, 0, 0, 1),), (("srf", 0, -4, 1, 0),)),
+ ),
+ "f0": ("f.svg", ((("j", 0, 0, 0, 0),), (("srf", 0, -4, 1, 0),))),
+ "idot": (
+ "idot.svg",
+ (
+ (("serif", 0, 0, 1, 0),),
+ (("lserif", 0, 0, 1, 0),),
+ (("lserif", 0, 0, 1, 1),),
+ ),
+ ),
+ "stik": (
+ "f.svg",
+ (
+ (("srf", 0, -4, 1, 0),),
+ # (('srf', 0,-4,1,1),),
+ ),
+ ),
+ "3": ("3.svg", ((("loop2", 0, 0, 0, 0),),)),
+ # uppercase
+ # Bar rules
+ "X": (
+ "epsilon.svg",
+ (
+ (("Xtb", 0, 0, 0, 0), ("Xtb", 0, -5, 1, 1)),
+ (("Xlr", 0, 0, 0, 0), ("Xlr", 0, -5, 1, 1)),
+ (("Xtb", 0, 0, 0, 0), ("Xtb2", 0, -5, 1, 1)),
+ (("Xlr", 0, 0, 0, 0), ("Xlr2", 0, -5, 1, 1)),
+ (("Xtb2", 0, 0, 0, 0), ("Xtb", 0, -5, 1, 1)),
+ (("Xlr2", 0, 0, 0, 0), ("Xlr", 0, -5, 1, 1)),
+ ),
+ ),
+ "Xtb": (
+ "epsilon.svg",
+ (
+ (("Xnw", 0, 0, 0, 0), ("Xne", 0, 0, 0, 0)),
+ (("Xne", 0, 0, 0, 0), ("Xh", 0, 0, 0, 0), ("Lterm2", 0, 0, 0, 0)),
+ (("Xnw", 0, 0, 0, 0), ("Xh", 0, 0, 0, 1), ("Lterm2", 0, 0, 0, 1)),
+ (
+ ("Xne", 0, 0, 0, 0),
+ ("Xh", 0, 0, 0, 0),
+ ("Xnw", 0, 0, 0, 0),
+ ("Xh", 0, 0, 0, 1),
+ ),
+ ),
+ ),
+ "Xlr": (
+ "epsilon.svg",
+ (
+ (("Xne", 0, -5, 1, 1), ("Xnw", 0, 0, 0, 0)),
+ (
+ ("Xne", 0, -5, 1, 1),
+ ("Xvt", 0, 0, 0, 0),
+ ("Xvb", 0, 0, 0, 0),
+ ("ITSerif", 0.5, 0, 0, 0),
+ ),
+ (
+ ("Xnw", 0, 0, 0, 0),
+ ("Xvt", 0, 0, 0, 0),
+ ("Xvt", 0, -5, 1, 0),
+ ("IBSerif", 0, 0, 0, 0),
+ ),
+ (
+ ("Xne", 0, -5, 1, 1),
+ ("Xnw", 0, 0, 0, 0),
+ ("Xvt", 0, 0, 0, 0),
+ ("Xvb", 0, 0, 0, 0),
+ ),
+ ),
+ ),
+ "Xtb2": ("epsilon.svg", ((("Xne", 0, 0, 0, 0),), (("Xnw", 0, 0, 0, 0),))),
+ "Xlr2": ("epsilon.svg", ((("Xnw", 0, 0, 0, 0),), (("Xne", 0, -5, 1, 1),))),
+ "Xne": ("Xne.svg",),
+ "Xnw": ("Xnw.svg",),
+ "Xh": ("Xh.svg",),
+ "Xvt": ("Xvt.svg",),
+ "Xvb": ("Xvb.svg",),
+ "Bar": (
+ "barcap.svg",
+ (
+ (("Bartop", 0, 0, 0, 0), ("Barbot", 0, 0, 0, 0), ("Barmid", 0, 0, 0, 0)),
+ (("Bartop2", 0, 0, 0, 0), ("Barbot2", 0, 0, 0, 0)),
+ ),
+ ),
+ "Bartop": ("epsilon.svg", ((("ITSerif", 0.5, 0, 0, 0),), (("Tt", 0, 0, 0, 0),))),
+ "Barbot": ("epsilon.svg", ((("IBSerif", 0, 0, 0, 0),), (("Tb", 0, 0, 0, 0),))),
+ "Barbot2": ("epsilon.svg", ((("Barbot", 0, 0, 0, 0),), (("Psi", 0, 0, 0, 0),))),
+ "Bartop2": ("epsilon.svg", ((("Bartop", 0, 0, 0, 0),), (("Psi", 0, -5, 1, 0),))),
+ "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),
+ ),
+ (("P", -2.5, 3, 0, 0), ("P", -5, 3, 0, 1)),
+ (("P", -5, 3, 0, 1),), # points left
+ ),
+ ),
+ "Psi": (
+ "epsilon.svg",
+ ((("IBSerif", 0, 0, 0, 0), ("R", -2.5, 0, 0, 0), ("R", -5, 0, 0, 1)),),
+ ),
+ # D / E / F / H / L rules
+ "D": (
+ "epsilon.svg",
+ (
+ (("Dterm", 0, 0, 0, 0), ("Dterm", 0, 0, 0, 1)),
+ (("Dterm", 0, 0, 0, 0), ("Dterm2", 0, 0, 0, 1)),
+ ),
+ ),
+ "E": (
+ "epsilon.svg",
+ (
+ (("Eterm", 0, 0, 0, 0), ("Eterm", 0, 0, 0, 1)),
+ (("Eterm", 0, 0, 0, 0), ("Eterm2", 0, 0, 0, 1)),
+ (("Eterm2", 0, 0, 0, 1), ("Eterm2", 0, -5, 1, 0)), # for S
+ ),
+ ),
+ "F": (
+ "epsilon.svg",
+ (
+ (("Fterm", 0, 0, 0, 0), ("Fterm", 0, 0, 0, 1)),
+ (("Fterm", 0, 0, 0, 0), ("Fterm2", 0, 0, 0, 1)),
+ ),
+ ),
+ "H": (
+ "epsilon.svg",
+ (
+ (("Hterm", 0, 0, 0, 0), ("Hterm", 0, 0, 0, 1)),
+ (("Hterm", 0, 0, 0, 0), ("Hterm2", 0, 0, 0, 1)),
+ ),
+ ),
+ "L": (
+ "epsilon.svg",
+ (
+ (("Lterm", 0, 0, 0, 0), ("Lterm", 0, 0, 0, 1)),
+ (("Lterm", 0, 0, 0, 0), ("Lterm2", 0, 0, 0, 1)),
+ ),
+ ),
+ "Dterm": (
+ "epsilon.svg",
+ (
+ (("Barterm", 0, 0, 0, 0), ("Et", 0, 0, 0, 0), ("Eb", 0, 0, 0, 0)),
+ (("O", 0, 0, 0, 0),),
+ ),
+ ),
+ "Dterm2": (
+ "epsilon.svg",
+ ((("C", 0, 0, 0, 1),), (("Ltserif", 0, 0, 0, 1), ("Lbserif", 0, 0, 0, 1))),
+ ),
+ "Eterm": (
+ "epsilon.svg",
+ (
+ (
+ ("Barterm", 0, 0, 0, 0),
+ ("Et", 0, 0, 0, 0),
+ ("Hm", 0, 0, 0, 0),
+ ("Eb", 0, 0, 0, 0),
+ ),
+ (("B", 0, 0, 0, 1),),
+ (("O", 0, 0, 0, 0), ("Ocross", 0, 0, 0, 0)),
+ (("Dterm", 0, 0, 0, 0), ("Eserif", 0, 0, 0, 1)),
+ (("Dterm2", 0, 0, 0, 0), ("Eserif", 0, 0, 0, 1)),
+ ),
+ ),
+ "Eterm2": ("epsilon.svg", ((("P", 0, 0, 0, 1), ("Lterm2", 0, -5, 1, 0)),)),
+ "Fterm": (
+ "epsilon.svg",
+ (
+ (
+ ("Barterm", 0, 0, 0, 0),
+ ("Et", 0, 0, 0, 0),
+ ("Hm", 0, 0, 0, 0),
+ ("IBSerif", 0, 0, 0, 0),
+ ),
+ (("Lterm", 0, 0, 0, 0), ("Eserif", 0, 0, 0, 1)),
+ (("P", 0, 0, 0, 1), ("R", 0, 0, 0, 1)),
+ (("Ltserif", 0, 0, 0, 1), ("R", 0, 0, 0, 1)),
+ (("Ltserif", 0, 0, 0, 1), ("Rblock", 0, 0, 0, 1)),
+ (("Uterm", 0, 0, 0, 0), ("Ocross", 0, 0, 0, 0)),
+ ),
+ ),
+ "Fterm2": (
+ "epsilon.svg",
+ ((("P", 0, 0, 0, 1),), (("Lterm2", 0, 0, 0, 0), ("Eserif", 0, 0, 0, 1))),
+ ),
+ "Hterm": (
+ "epsilon.svg",
+ (
+ (
+ ("Barterm", 0, 0, 0, 0),
+ ("Hm", 0, 0, 0, 0),
+ ("ITSerif", 0.5, 0, 0, 0),
+ ("IBSerif", 0, 0, 0, 0),
+ ),
+ (("R", 0, 0, 0, 1), ("R", 0, -5, 1, 1)),
+ ),
+ ),
+ "Hterm2": ("epsilon.svg", ((("R", 0, 0, 0, 1),), (("Rblock", 0, 0, 0, 1),))),
+ "Lterm": (
+ "epsilon.svg",
+ (
+ (("Barterm", 0, 0, 0, 0), ("Et", 0, 0, 0, 0), ("IBSerif", 0, 0, 0, 0)),
+ (("Uterm", 0, 0, 0, 0),),
+ ),
+ ),
+ "Lterm2": ("epsilon.svg", ((("Ltserif", 0, 0, 0, 1),), (("Cserif", 0, -5, 1, 1),))),
+ "B": ("epsilon.svg", ((("P", 0, 0, 0, 0), ("P", 0, 6, 0, 0)),)),
+ "C": ("epsilon.svg", ((("Cserif", 0, 0, 0, 0), ("Cserif", 0, -5, 1, 0)),)),
+ "Cserif": (
+ "epsilon.svg",
+ ( # (('Ctail', 0,0,0,0),), # I just hate the way these look...
+ (("Cblob", 0, 0, 0, 0),),
+ (("Chook", 0, -5, 1, 0),),
+ (("G", 0, 0, 0, 0),),
+ ),
+ ),
+ "O": (
+ "epsilon.svg",
+ ((("Oterm", 0, 0, 0, 0),), (("Q", 0, 0, 0, 1),), (("Qu", 0, 0, 0, 1),)),
+ ),
+ "Qu": ("epsilon.svg", ((("Q", 0, -5, 1, 0),),)),
+ "Barterm": ("barcap.svg",),
+ "Ctail": ("Ctail.svg",),
+ "Chook": ("Chook.svg",),
+ "Cblob": ("Cblob.svg",),
+ "G": ("G.svg",),
+ "Ltserif": ("Lt.svg",),
+ "Lbserif": ("Lb.svg",),
+ "Et": ("Et.svg",),
+ "Eb": ("Eb.svg",),
+ "Hm": ("hcap.svg",),
+ "P": ("P.svg",),
+ "Tb": ("Tb.svg",),
+ "Tt": ("Tt.svg",),
+ "Ocross": ("Ocross.svg",),
+ "Oterm": ("ocap.svg",),
+ "Q": ("Q.svg",),
+ "R": ("rcap.svg", ((("IBSerif", -0.5, 0, 0, 1),),)),
+ "Rblock": ("Rblock.svg", ((("IBSerif", -0.5, 0, 0, 1),),)),
+ "Uterm": ("U.svg", ((("IBSerif", -0.5, 0, 0, 0),),)),
+ "IBSerif": ("IBSerif.svg",),
+ "ITSerif": ("ITSerif.svg",),
+ "Eserif": ("Eserif.svg",),
+ # V rules
+ "V": (
+ "vcap.svg",
+ ((("V2", 0, 0, 0, 0),), (("V2", 0, 0, 0, 0), ("Across", 0, 0, 0, 0))),
+ ),
+ "V2": (
+ "epsilon.svg",
+ ((("M", 0, 0, 0, 0),), (("Delta", 0, 0, 0, 0),), (("Vser", 0, 0, 0, 0),)),
+ ),
+ "M": ("mcap.svg", ((("IBSerif", -1.5, 0, 0, 0), ("IBSerif", 1.5, 0, 0, 1)),)),
+ "Delta": ("Delta.svg",),
+ "Vser": ("Vser.svg",),
+ "Across": ("acap.svg",),
+ # single daughter rules
+ "b": (
+ "b.svg",
+ (
+ (("hlike", 0, 0, 0, 0), ("f", 0, 0, 0, 0)),
+ # (('hlike', 0,0,0,0), ('f', 0,0,0,1),),
+ ),
+ ),
+ "b1": (
+ "b.svg",
+ (
+ (("loop", 0, 0, 0, 0), ("f", 0, 0, 0, 0)),
+ # (('loop', 0,0,0,0), ('f', 0,0,0,1),),
+ ),
+ ),
+ "b0": (
+ "b.svg",
+ (
+ (("f", 0, 0, 0, 0),),
+ # (('f', 0,0,0,1),),
+ ),
+ ),
+ "h": ("h.svg", ((("vert", 5, 0, 1, 0),),)),
+ "m": (
+ "m.svg",
+ ((("h", 5, 0, 0, 0), ("vert", 5, 0, 1, 0)),),
+ ), # change later to allow 3 humped m
+ "n": ("n.svg", ((("hlike", 0, 0, 0, 0),),)),
+ "n1": ("n.svg", ((("loop", 0, 0, 0, 0),),)),
+ "s": ("s.svg", ((("crv", 0, 0, 0, 0), ("crv", 5, 0, 1, 1)),)),
+ "j": ("j.svg", ((("crv", 0, -5, 0, 0),),)),
+ "?": ("question.svg", ((("crv", -2.5, -5, 0, 0),),)),
+ "yogh": ("yogh.svg", ((("crv", -2.5, 4, 1, 0),),)),
+ # terminal rules
+ "2": ("2.svg",),
+ "30": ("3.svg",),
+ "7": ("7.svg",),
+ "a": ("a.svg",),
+ "cserif": ("cserif.svg",),
+ "e": ("e.svg",),
+ "k": ("k.svg",),
+ "n0": ("n.svg",),
+ "o0": ("o.svg",),
+ "r": ("r.svg",),
+ "serif": ("serif.svg",),
+ "tserif": ("tserif.svg",),
+ "lserif": ("lserif.svg",),
+ "t": ("t.svg",),
+ "x": ("x.svg",),
+ "z": ("z.svg",),
+ "vserl": ("vserl.svg",),
+ "vserr": ("vserr.svg",),
+ "y": ("y.svg",),
+ "gamma": ("gamma.svg",),
+}
+
+alphabet = {
+ # Uppercase fix Y make 2)
+ "1": (
+ "start.[.UC.[.UCb.[.Bar.[.Bartop2.[.Bartop.[.ITSerif.].].Barbot2.[.Barbot.[.IBSerif.].].].].].]",
+ ),
+ "33": (
+ "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.[.C.|.].Eserif.|.].Eterm.[.O.Ocross.].|.].].].]",
+ ),
+ "3": (
+ "start.[.UC.[.UCb.[.E.[.Eterm.[.B.[.P.P.].|.].Eterm.[.Dterm2.[.C.|.].Eserif.|.].|.].|.].].]",
+ "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.[.C.|.].Eserif.|.].Eterm.[.O.Ocross.].|.].].].]",
+ ),
+ "4": (
+ "start.[.UC.[.UCu.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm2.[.Rblock.[.IBSerif.|.].|.].|.].].-.|.].].]",
+ ),
+ "5": (
+ "start.[.UC.[.UCu.[.UCb.[.E.[.Eterm.[.Dterm2.[.Ltserif.|.Lbserif.|.].Eserif.|.].Eterm2.[.P.|.Lterm2.[.Ltserif.|.].-.].|.].|.].-.|.].].]",
+ ),
+ "6": (
+ "start.[.UC.[.UCu.[.UCb.[.E.[.Eterm.[.Dterm.[.O.].Eserif.|.].Eterm2.[.P.|.Lterm2.-.].|.].|.].-.|.].].]",
+ "start.[.UC.[.UCu.[.UCb.[.E.[.Eterm.[.O.Ocross.].Eterm2.[.P.|.Lterm2.-.].|.].|.].-.|.].].]",
+ ),
+ "7": (
+ "start.[.UC.[.UCb.[.X.[.Xtb.[.Xne.Xh.Lterm2.[.Ltserif.|.].].Xtb2.[.Xne.].-.|.].].].]",
+ ),
+ "8": (
+ "start.[.UC.[.UCb.[.E.[.Eterm.[.B.[.P.P.].|.].Eterm.[.B.[.P.P.].|.].|.].].].]",
+ ),
+ "9": (
+ "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm.[.O.].Eserif.|.].Eterm2.[.P.|.Lterm2.-.].|.].|.].].]",
+ "start.[.UC.[.UCb.[.E.[.Eterm.[.O.Ocross.].Eterm2.[.P.|.Lterm2.-.].|.].|.].].]",
+ ),
+ "0": ("start.[.UC.[.UCb.[.D.[.Dterm.[.O.].Dterm.[.O.].|.].].].]",),
+ "A": (
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Barterm.Et.Hm.IBSerif.].|.].].].]", # no flip needed
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].|.].].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].|.].|.].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Uterm.[.IBSerif.].Ocross.].|.].].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Uterm.[.IBSerif.].Ocross.].|.].|.].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].Fterm.[.Uterm.[.IBSerif.].Ocross.].|.].|.].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Uterm.[.IBSerif.].Ocross.].Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].|.].|.].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Uterm.[.IBSerif.].Ocross.].Fterm.[.Uterm.[.IBSerif.].Ocross.].|.].].].]",
+ "start.[.UC.[.UCu.[.UCb.[.V.[.V2.[.Vser.].Across.].|.].-.|.].].]",
+ ),
+ "B": (
+ "start.[.UC.[.UCb.[.E.[.Eterm.[.B.[.P.P.].|.].Eterm.|.].|.].].]",
+ "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm.Eserif.|.].Eterm.[.B.[.P.P.].|.].|.].].].]",
+ ),
+ "Be": (
+ "start.[.UC.[.UCu.[.UCb.[.E.[.Eterm.[.Barterm.Et.Hm.Eb.].Eterm2.[.P.|.Lterm2.-.].|.].|.].-.|.].].]", # cyrillic
+ "start.[.UC.[.UCu.[.UCb.[.E.[.Eterm.[.Dterm.[.Barterm.Et.Eb.].Eserif.|.].Eterm2.[.P.|.Lterm2.-.].|.].|.].-.|.].].]",
+ ),
+ "C": ("start.[.UC.[.UCb.[.D.[.Dterm.[.O.[.Oterm.].].Dterm2.[.C.|.].|.].].].]",),
+ "D": (
+ "start.[.UC.[.UCb.[.D.[.Dterm.Dterm.[.O.[.Oterm.].].|.].].].]",
+ "start.[.UC.[.UCb.[.D.[.Dterm.[.O.[.Oterm.].].Dterm2.[.Ltserif.|.Lbserif.|.].|.].|.].].].",
+ "start.[.UC.[.UCb.[.D.[.Dterm.[.Barterm.Et.Eb.].Dterm.[.Barterm.Et.Eb.].|.].].].]",
+ ),
+ "Delta": ("start.[.UC.[.UCu.[.UCb.[.V.[.V2.[.Delta.].].|.].-.|.].].]",), # Delta
+ "De": (
+ "start.[.UC.[.UCu.[.UCb.[.D.[.Dterm.[.Barterm.Et.Eb.].Dterm.[.Barterm.Et.Eb.].|.].].-.|.].].]",
+ ), # Cyrillic
+ "E": (
+ "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.Eserif.|.].Eterm.[.Dterm.[.Barterm.Et.Eb.].Eserif.|.].|.].|.].].]",
+ "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.Eserif.|.].Eterm.[.Dterm.[.O.].Eserif.|.].|.].|.].].]",
+ "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.Eserif.|.].Eterm.[.B.[.P.P.].|.].|.].|.].].]",
+ "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.Eserif.|.].Eterm.[.Barterm.Et.Hm.Eb.].|.].|.].].]",
+ "start.[.UC.[.UCb.[.E.[.Eterm.[.O.Ocross.].Eterm.[.Dterm2.Eserif.|.].|.].].].]",
+ ),
+ "Eth": (
+ "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm.[.O.].Eserif.|.].Eterm.[.Barterm.Et.Hm.Eb.].|.].|.].].]",
+ ),
+ "F": ("start.[.UC.[.UCb.[.F.[.Fterm.Fterm2.[.Lterm2.Eserif.|.].|.].].].]",),
+ "G": (
+ "start.[.UC.[.UCb.[.D.[.Dterm.[.O.].Dterm2.[.C.[.Cserif.[.G.].Cserif.-.].|.].|.].].].]",
+ ),
+ "Gamma": (
+ "start.[.UC.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm2.|.].].].]",
+ ), # Gamma
+ "H": (
+ "start.[.UC.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm.[.Barterm.Hm.ITSerif.IBSerif.].|.].].].]",
+ "start.[.UC.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm2.[.R.[.IBSerif.|.].|.].|.].].].]",
+ "start.[.UC.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm2.[.Rblock.[.IBSerif.|.].|.].|.].].].]",
+ ),
+ "Che": (
+ "start.[.UC.[.UCu.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm2.[.Rblock.[.IBSerif.|.].|.].|.].].-.|.].].]", # Cyrillic
+ "start.[.UC.[.UCu.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm2.[.R.[.IBSerif.|.].|.].|.].].-.|.].].]",
+ ),
+ "Heng": (
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Ltserif.|.R.[.IBSerif.|.].|.].|.].].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm.[.Ltserif.|.Rblock.[.IBSerif.|.].|.].|.].].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Barterm.Et.IBSerif.].Eserif.|.].Fterm.[.Ltserif.|.R.[.IBSerif.|.].|.].|.].].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Barterm.Et.IBSerif.].Eserif.|.].Fterm.[.Ltserif.|.Rblock.[.IBSerif.|.].|.].|.].].].]",
+ ),
+ "I": (
+ "start.[.UC.[.UCb.[.Bar.[.Bartop2.[.Bartop.[.ITSerif.].].Barbot2.[.Barbot.[.IBSerif.].].].].].]",
+ "start.[.UC.[.UCb.[.Bar.[.Bartop2.[.Bartop.[.Tt.].].Barbot2.[.Barbot.[.Tb.].].].].].]",
+ ),
+ "J": (
+ "start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Uterm.[.IBSerif.].].Lterm2.|.].].-.|.].].]",
+ ),
+ "K": (
+ "start.[.UC.[.UCu.[.UCb.[.X.[.Xlr.[.Xne.-.|.Xnw.].Xlr.[.Xne.-.|.Xvt.Xvb.ITSerif.].-.|.].].-.|.].].]",
+ "start.[.UC.[.UCb.[.H.[.Hterm.[.Barterm.Hm.ITSerif.IBSerif.].Hterm.[.R.[.IBSerif.|.].|.R.[.IBSerif.|.].-.|.].|.].].].]",
+ ),
+ "Zhe": (
+ "start.[.UC.[.UCb.[.Bar.[.Bartop2.[.Psi.[.IBSerif.R.[.IBSerif.|.].R.[.IBSerif.|.].|.].-.].Barbot2.[.Psi.[.IBSerif.R.[.IBSerif.|.].R.[.IBSerif.|.].|.].].].].].]",
+ ), # Cyrillic
+ "L": (
+ "start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm2.|.].|.].-.|.].].]",
+ ),
+ "Lambda": ("start.[.UC.[.UCu.[.UCb.[.V.[.V2.[.Vser.].].|.].-.|.].].]",), # Lambda
+ "M": (
+ "start.[.UC.[.UCu.[.UCb.[.X.[.Xlr.[.Xne.-.|.Xvt.Xvb.ITSerif.].Xlr.[.Xnw.Xvt.Xvt.-.IBSerif.].-.|.].].-.|.].].]",
+ "start.[.UC.[.UCb.[.V.[.V2.[.M.[.IBSerif.IBSerif.|.].].].|.].].]",
+ ),
+ "N": (
+ "start.[.UC.[.UCu.[.UCb.[.X.[.Xlr.[.Xnw.Xvt.Xvt.-.IBSerif.].Xlr.[.Xnw.Xvt.Xvt.-.IBSerif.].-.|.].].-.|.].].]",
+ "start.[.UC.[.UCb.[.L.[.Lterm.[.Uterm.[.IBSerif.].].Lterm.[.Barterm.Et.IBSerif.].|.].|.].].]",
+ ),
+ "NN": (
+ "start.[.UC.[.UCu.[.UCb.[.X.[.Xlr.[.Xne.-.|.Xvt.Xvb.ITSerif.].Xlr.[.Xne.-.|.Xvt.Xvb.ITSerif.].-.|.].].-.|.].].]",
+ ), # Cyrillic I
+ "O": ("start.[.UC.[.UCb.[.D.[.Dterm.[.O.].Dterm.[.O.].|.].].].]",),
+ "P": (
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm2.[.P.|.].|.].].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Ltserif.|.R.[.IBSerif.|.].|.].Fterm2.[.P.|.].|.].].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Ltserif.|.Rblock.[.IBSerif.|.].|.].Fterm2.[.P.|.].|.].].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Barterm.Et.IBSerif.].Eserif.|.].Fterm2.[.P.|.].|.].].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].Fterm2.[.P.|.].|.].].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Uterm.[.IBSerif.].Ocross.].Fterm2.[.P.|.].|.].].].]",
+ ),
+ "PL": (
+ "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm.[.Barterm.Et.Eb.].Eserif.|.].Eterm2.[.P.|.Lterm2.-.].|.].].].]",
+ "start.[.UC.[.UCb.[.E.[.Eterm.[.Barterm.Et.Hm.Eb.].Eterm2.[.P.|.Lterm2.[.Cserif.-.|.].-.].|.].].].]",
+ ),
+ "Phi": (
+ "start.[.UC.[.UCb.[.Bar.[.Bartop.[.ITSerif.].Barbot.[.IBSerif.].Barmid.[.P.P.|.].].].].]",
+ ),
+ "Pi": (
+ "start.[.UC.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm.[.Barterm.Et.IBSerif.].|.].].].]",
+ ),
+ "Psi": (
+ "start.[.UC.[.UCb.[.Bar.[.Bartop2.[.Psi.[.IBSerif.R.[.IBSerif.|.].R.[.IBSerif.|.].|.].-.].Barbot2.[.Barbot.[.IBSerif.].].].].].]",
+ ),
+ "Soft": (
+ "start.[.UC.[.UCu.[.UCb.[.F.[.Fterm.[.Barterm.Et.Hm.IBSerif.].Fterm2.[.P.|.].|.].|.].-.|.].].]", # Cyrillic Yeru/Soft/Hard
+ "start.[.UC.[.UCu.[.UCb.[.F.[.Fterm.[.Lterm.[.Barterm.Et.IBSerif.].Eserif.|.].Fterm2.[.P.|.].|.].|.].-.|.].].]",
+ "start.[.UC.[.UCu.[.UCb.[.F.[.Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].Fterm2.[.P.|.].|.].|.].-.|.].].]",
+ "start.[.UC.[.UCu.[.UCb.[.F.[.Fterm.[.Ltserif.|.Rblock.[.IBSerif.|.].|.].Fterm2.[.P.|.].|.].|.].-.|.].].]",
+ "start.[.UC.[.UCu.[.UCb.[.F.[.Fterm.[.Uterm.[.IBSerif.].Ocross.].Fterm2.[.P.|.].|.].|.].-.|.].].]",
+ ),
+ "Q": (
+ "start.[.UC.[.UCb.[.D.[.Dterm.[.O.[.Oterm.].].Dterm.[.O.[.Q.|.].].|.].].].]",
+ ),
+ "R": (
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Barterm.Et.IBSerif.].Eserif.|.].Fterm.[.P.|.R.[.IBSerif.|.].|.].|.].].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].Fterm.[.P.|.R.[.IBSerif.|.].|.].|.].].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.P.|.R.[.IBSerif.|.].|.].Fterm.[.Barterm.Et.Hm.IBSerif.].|.].|.].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Uterm.[.IBSerif.].Ocross.].Fterm.[.P.|.R.[.IBSerif.|.].|.].|.].].].]",
+ ),
+ "Ya": (
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Barterm.Et.IBSerif.].Eserif.|.].Fterm.[.P.|.R.[.IBSerif.|.].|.].|.].|.].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Lterm.[.Uterm.[.IBSerif.].].Eserif.|.].Fterm.[.P.|.R.[.IBSerif.|.].|.].|.].|.].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.P.|.R.[.IBSerif.|.].|.].Fterm.[.Barterm.Et.Hm.IBSerif.].|.].].].]",
+ "start.[.UC.[.UCb.[.F.[.Fterm.[.Uterm.[.IBSerif.].Ocross.].Fterm.[.P.|.R.[.IBSerif.|.].|.].|.].|.].].]",
+ ),
+ "S": (
+ "start.[.UC.[.UCb.[.E.[.Eterm2.[.P.|.Lterm2.-.].|.Eterm2.[.P.|.Lterm2.-.].-.].|.].].]",
+ ),
+ "Sigma": (
+ "start.[.UC.[.UCb.[.X.[.Xtb.[.Xnw.Xh.|.Lterm2.|.].Xtb.[.Xne.Xh.Lterm2.].-.|.].].].]",
+ ),
+ "T": (
+ "start.[.UC.[.UCb.[.Bar.[.Bartop2.[.Bartop.[.Tt.].].Barbot2.[.Barbot.[.IBSerif.].].].].].]",
+ "start.[.UC.[.UCb.[.Bar.[.Bartop.[.ITSerif.].Barbot.[.IBSerif.].Barmid.[.Hm.Eserif.Hm.|.Eserif.|.].].].].]",
+ ),
+ "Theta": (
+ "start.[.UC.[.UCb.[.E.[.Eterm.[.O.Ocross.].Eterm.[.O.Ocross.].|.].].].]",
+ ),
+ "Thorn": (
+ "start.[.UC.[.UCu.[.UCb.[.Bar.[.Bartop.[.ITSerif.].Barbot.[.IBSerif.].Barmid.[.P.|.].].].-.|.].].]",
+ ),
+ "U": (
+ "start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm.[.Barterm.Et.IBSerif.].|.].|.].-.|.].].]",
+ "start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm.[.Uterm.[.IBSerif.].].|.].].-.|.].].]",
+ "start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Uterm.[.IBSerif.].].Lterm.[.Uterm.[.IBSerif.].].|.].].-.|.].].]",
+ "start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm.[.Barterm.Et.IBSerif.].|.].].-.|.].].]",
+ ),
+ "Tse": (
+ "start.[.UC.[.UCu.[.UCb.[.L.[.Lterm.[.Barterm.Et.IBSerif.].Lterm.[.Barterm.Et.IBSerif.].|.].].-.|.].].]",
+ ), # Cyrillic
+ "V": ("start.[.UC.[.UCb.[.V.[.V2.[.Vser.].].|.].].]",),
+ "W": (
+ "start.[.UC.[.UCb.[.X.[.Xlr.[.Xne.-.|.Xvt.Xvb.ITSerif.].Xlr.[.Xnw.Xvt.Xvt.-.IBSerif.].-.|.].].].]",
+ "start.[.UC.[.UCu.[.UCb.[.V.[.V2.[.M.[.IBSerif.IBSerif.|.].].].|.].-.|.].].]",
+ ),
+ "X": (
+ "start.[.UC.[.UCu.[.UCb.[.X.[.Xlr.[.Xne.-.|.Xnw.].Xlr.[.Xne.-.|.Xnw.].-.|.].].-.|.].].]",
+ "start.[.UC.[.UCb.[.H.[.Hterm.[.R.|.R.-.|.].Hterm.[.R.|.R.-.|.].|.].].].]",
+ ),
+ "Xi": (
+ "start.[.UC.[.UCb.[.E.[.Eterm.[.Dterm2.[.Ltserif.|.Lbserif.|.].Eserif.|.].Eterm.[.Dterm2.[.Ltserif.|.Lbserif.|.].Eserif.|.].|.].|.].].]",
+ ),
+ "Y": ("start.[.UC.[.UCb.[.X.[.Xlr.[.Xne.-.|.Xnw.].Xlr2.[.Xne.-.|.].-.|.].].].]",),
+ "Z": (
+ "start.[.UC.[.UCb.[.X.[.Xtb.[.Xne.Xh.Lterm2.].Xtb.[.Xne.Xh.Lterm2.].-.|.].].].]",
+ ),
+ # Lowercase
+ "a": (
+ "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.n0.-.loop2.[.elike.[.a.crv.-.].].-.].|.].].].].]",
+ "start.[.lc.[.barsym.[.bar.[.n1.[.loop.].n0.-.].-.|.].].]",
+ "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.n0.-.loop2.[.loop.].].|.].].].].]",
+ ),
+ "carat": ("start.[.lc.[.lc2.[.vsym.[.v.[.vserl.vserr.].-.|.].].].]",),
+ "b": (
+ "start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.].n0.-.].].].]",
+ "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.].-.loop2.[.loop.].].-.].].].].]",
+ "start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.|.].n0.-.].].].]",
+ "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.|.].-.loop2.[.loop.].].-.].].].].]",
+ ),
+ "c": (
+ "start.[.lc.[.lc2.[.osym.[.o.[.loop2.[.elike.[.crv.-.|.crv.|.].|.].].].].].]",
+ ),
+ "d": (
+ "start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.].n0.-.].].|.].]",
+ "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.].-.loop2.[.loop.].].-.].|.].].].]",
+ "start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.|.].n0.-.].].|.].]",
+ "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.|.].-.loop2.[.loop.].].-.].|.].].].]",
+ ),
+ "e": (
+ "start.[.lc.[.lc2.[.osym.[.o.[.loop2.[.elike.[.e.crv.-.].].].].].].]",
+ "start.[.lc.[.lc2.[.lc3.[.3sym.[.3.[.loop2.[.elike.[.crv.crv.-.].].].].].].].]",
+ ),
+ "epsi": (
+ "start.[.lc.[.lc2.[.lc3.[.3sym.[.3.[.loop2.[.elike.[.crv.crv.-.].].].].].].].]",
+ ),
+ "f": (
+ "start.[.lc.[.barsym.[.bar.[.vert.[.xtnd.[.cross.[.f0.[.j.].].].].vert.-.].].].]",
+ ),
+ "g": (
+ "start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.[.j.[.crv.].].].n0.-.].-.|.].].]",
+ "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.[.j.].].-.loop2.[.loop.].].-.].-.|.].].].]",
+ ),
+ "gamma": ("start.[.lc.[.lc2.[.vsym.[.v.[.vserl.vserr.y0.[.gamma.].].].].].]",),
+ "h": (
+ "start.[.lc.[.barsym.[.bar.[.b.[.hlike.[.h.].f.].vert.-.].].].]",
+ "start.[.lc.[.barsym.[.bar.[.b.[.hlike.[.h.].f.|.].vert.-.].].].]",
+ ),
+ "heng": (
+ "start.[.lc.[.barsym.[.bar.[.b.[.hlike.[.h.[.vert.[.xtnd.[.l.[.j.[.crv.].].].|.].-.].].f.[.j.[.crv.].].].vert.[.srf.-.|.].-.].].].]",
+ ),
+ "i": (
+ "start.[.lc.[.barsym.[.bar.[.vert.vert.[.xtnd.[.idot.].-.].].-.|.].].]",
+ "start.[.lc.[.barsym.[.bar.[.vert.vert.[.xtnd.[.idot.].-.].|.].-.|.].].]",
+ ),
+ "j": (
+ "start.[.lc.[.barsym.[.bar.[.vert.[.xtnd.[.idot.].-.].vert.[.xtnd.[.l.[.j.].].].|.].-.].].]",
+ ),
+ "k": ("start.[.lc.[.barsym.[.bar.[.k.vert.vert.-.].].].]",),
+ "l": (
+ "start.[.lc.[.barsym.[.bar.[.vert.vert.[.xtnd.[.l.].-.].|.].-.|.].].]",
+ "start.[.lc.[.barsym.[.bar.[.vert.vert.[.xtnd.[.l.|.].-.].|.].-.|.].].]",
+ ),
+ "lambda": ("start.[.lc.[.lc2.[.vsym.[.v.[.vserl.vserr.y0.].-.|.].].].]",),
+ "m": (
+ "start.[.lc.[.barsym.[.bar.[.n.[.hlike.[.m.[.h.[.vert.-.].vert.-.].].].vert.-.].].].]",
+ ),
+ "mu": (
+ "start.[.lc.[.barsym.[.bar.[.b.[.hlike.[.h.[.vert.-.].].f.].vert.-.].-.|.].].]",
+ ),
+ "muu": (
+ "start.[.lc.[.barsym.[.bar.[.b.[.hlike.[.m.[.h.[.vert.-.].vert.-.].].f.].vert.-.|.].-.|.].].]",
+ ),
+ "n": ("start.[.lc.[.barsym.[.bar.[.n.[.hlike.[.h.[.vert.-.].].].vert.-.].].].]",),
+ "ng": (
+ "start.[.lc.[.barsym.[.bar.[.n.[.hlike.[.h.[.vert.[.xtnd.[.l.[.j.].].|.].-.].].].vert.-.].].].]",
+ ),
+ "o": ("start.[.lc.[.lc2.[.osym.[.o.[.loop2.[.loop.[.o0.|.].].].].].].]",),
+ "p": (
+ "start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.].n0.-.].].-.].]",
+ "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.].-.loop2.[.loop.].].-.].-.].].].]",
+ "start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.|.].n0.-.].].-.].]",
+ "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.|.].-.loop2.[.loop.].].-.].-.].].].]",
+ ),
+ "q": (
+ "start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.].n0.-.].].-.|.].]",
+ "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.].-.loop2.[.loop.].].-.].-.|.].].].]",
+ "start.[.lc.[.barsym.[.bar.[.b1.[.loop.f.|.].n0.-.].].-.|.].]",
+ "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.|.].-.loop2.[.loop.].].-.].-.|.].].].]",
+ ),
+ "r": ("start.[.lc.[.barsym.[.bar.[.n.[.hlike.[.crv.].].vert.-.].].].]",),
+ "s": ("start.[.lc.[.lc2.[.lc3.[.ssym.[.s.[.crv.crv.-.|.].].].].].]",),
+ "t": ("start.[.lc.[.barsym.[.bar.[.vert.[.xtnd.[.cross.[.f0.].].].vert.-.].].].]",),
+ "u": (
+ "start.[.lc.[.barsym.[.bar.[.n.[.hlike.[.h.[.vert.-.].].].vert.-.].-.|.].].]",
+ ),
+ "uu": (
+ "start.[.lc.[.barsym.[.bar.[.n.[.hlike.[.m.[.h.[.vert.-.].vert.-.].].].vert.-.].-.|.].].]",
+ ),
+ "v": ("start.[.lc.[.lc2.[.vsym.[.v.[.vserl.vserr.].].].].]",),
+ "w": ("start.[.lc.[.lc2.[.vsym.[.v.[.vserl.w.[.vserr.].].].].].]",),
+ "x": ("start.[.lc.[.lc2.[.dsym.[.diag.[.x.].-.diag.[.x.].|.].-.].].]",),
+ "y": ("start.[.lc.[.lc2.[.vsym.[.v.[.vserl.vserr.y0.].].].].]",),
+ "yogh": (
+ "start.[.lc.[.lc2.[.dsym.[.diag.[.z.].|.diag.[.yogh.[.crv.-.].-.|.].-.].].].]",
+ ),
+ "z": ("start.[.lc.[.lc2.[.dsym.[.diag.[.z.].diag.[.z.].-.|.].|.].].]",),
+ "glot": ("start.[.lc.[.barsym.[.bar.[.vert.[.xtnd.[.?.|.].].vert.-.].].].]",),
+ "1l": (
+ "start.[.lc.[.barsym.[.bar.[.vert.[.srf.[.lserif.].].vert.[.srf.[.serif.].-.].|.].].-.].]",
+ ),
+ "2l": ("start.[.lc.[.lc2.[.dsym.[.diag.[.2.].diag.[.z.].-.|.].|.].].]",),
+ "3l": (
+ "start.[.lc.[.lc2.[.dsym.[.diag.[.z.].|.diag.[.yogh.[.crv.-.].-.|.].-.].].].]",
+ ),
+ "6l": (
+ "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.[.j.].].-.loop2.[.loop.].-.].-.].].].].]",
+ ),
+ "7l": ("start.[.lc.[.lc2.[.dsym.[.diag.[.z.].diag.[.7.].-.|.].|.].].]",),
+ "8l": ("start.[.lc.[.lc2.[.lc3.[.3sym.[.3.[.loop2.[.loop.[.30.|.].].].].].].].]",),
+ "9l": (
+ "start.[.lc.[.lc2.[.lc3.[.asym.[.abase.[.b0.[.f.[.j.].].-.loop2.[.loop.].-.].|.].].].].]",
+ ),
+ "0l": ("start.[.lc.[.lc2.[.osym.[.o.[.loop2.[.loop.[.o0.|.].].].].].].]",),
+}
+
+space = 4 # number of unit boxes to make a " " space in string
+units = 36 # pixels per unit box in font
+font = "alphabet_soup/" # location of font images