home *** CD-ROM | disk | FTP | other *** search
/ Chip 2011 November / CHIP_2011_11.iso / Programy / Narzedzia / Inkscape / Inkscape-0.48.2-1-win32.exe / share / extensions / render_alphabetsoup_config.py < prev    next >
Text File  |  2011-07-08  |  38KB  |  584 lines

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