902 lines
35 KiB
Python
Executable file
902 lines
35 KiB
Python
Executable file
# 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
|