1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
|
from glife import *
from string import lower
# each symbol is a pattern with an additional field .width
# Eric Angelini integer font
__eafont = dict ()
__eafont['0'] = pattern ("3o$obo$obo$obo$3o!", 0, -5)
__eafont['0'].width = 4
__eafont['1'] = pattern ("o$o$o$o$o!", 0, -5)
__eafont['1'].width = 2
__eafont['2'] = pattern ("3o$2bo$3o$o$3o!", 0, -5)
__eafont['2'].width = 4
__eafont['3'] = pattern ("3o$2bo$3o$2bo$3o!", 0, -5)
__eafont['3'].width = 4
__eafont['4'] = pattern ("obo$obo$3o$2bo$2bo!", 0, -5)
__eafont['4'].width = 4
__eafont['5'] = pattern ("3o$o$3o$2bo$3o!", 0, -5)
__eafont['5'].width = 4
__eafont['6'] = pattern ("3o$o$3o$obo$3o!", 0, -5)
__eafont['6'].width = 4
__eafont['7'] = pattern ("3o$2bo$2bo$2bo$2bo!", 0, -5)
__eafont['7'].width = 4
__eafont['8'] = pattern ("3o$obo$3o$obo$3o!", 0, -5)
__eafont['8'].width = 4
__eafont['9'] = pattern ("3o$obo$3o$2bo$3o!", 0, -5)
__eafont['9'].width = 4
__eafont[' '] = pattern ("", 0, 0)
__eafont[' '].width=2 # allow spaces to mark unknown characters
__eafont['-'] = pattern ("", 0, 0)
__eafont['-'].width=0 #
# Mono-spaced ASCII font
__mfont = dict()
__mfont[' '] = pattern("")
__mfont['!'] = pattern("2bo$2bo$2bo$2bo$2bo2$2bo!")
__mfont['"'] = pattern("bobo$bobo$bobo!")
__mfont['#'] = pattern("bobo$bobo$5o$bobo$5o$bobo$bobo!")
__mfont['$'] = pattern("b3o$obobo$obo$b3o$2bobo$obobo$b3o!")
__mfont['%'] = pattern("2o2bo$2o2bo$3bo$2bo$bo$o2b2o$o2b2o!")
__mfont['&'] = pattern("b2o$o2bo$o2bo$b2o$o2bo$o2bo$b2obo!")
__mfont['\''] = pattern("2bo$2bo$2bo!")
__mfont['('] = pattern("3bo$2bo$2bo$2bo$2bo$2bo$3bo!")
__mfont[')'] = pattern("bo$2bo$2bo$2bo$2bo$2bo$bo!")
__mfont['*'] = pattern("$obobo$b3o$5o$b3o$obobo!")
__mfont['+'] = pattern("$2bo$2bo$5o$2bo$2bo!")
__mfont[','] = pattern("6$2bo$2bo$bo!")
__mfont['-'] = pattern("3$5o!")
__mfont['.'] = pattern("6$2bo!")
__mfont['/'] = pattern("3bo$3bo$2bo$2bo$2bo$bo$bo!")
__mfont['0'] = pattern("b3o$o3bo$o2b2o$obobo$2o2bo$o3bo$b3o!")
__mfont['1'] = pattern("2bo$b2o$2bo$2bo$2bo$2bo$b3o!")
__mfont['2'] = pattern("b3o$o3bo$4bo$3bo$2bo$bo$5o!")
__mfont['3'] = pattern("b3o$o3bo$4bo$2b2o$4bo$o3bo$b3o!")
__mfont['4'] = pattern("3bo$2b2o$bobo$o2bo$5o$3bo$3bo!")
__mfont['5'] = pattern("5o$o$o$b3o$4bo$o3bo$b3o!")
__mfont['6'] = pattern("b3o$o$o$4o$o3bo$o3bo$b3o!")
__mfont['7'] = pattern("5o$4bo$3bo$2bo$bo$o$o!")
__mfont['8'] = pattern("b3o$o3bo$o3bo$b3o$o3bo$o3bo$b3o!")
__mfont['9'] = pattern("b3o$o3bo$o3bo$b4o$4bo$4bo$b3o!")
__mfont[':'] = pattern("2$2bo4$2bo!")
__mfont[';'] = pattern("2$2bo4$2bo$2bo$bo!")
__mfont['<'] = pattern("$3bo$2bo$bo$2bo$3bo!")
__mfont['='] = pattern("2$5o2$5o!")
__mfont['>'] = pattern("$bo$2bo$3bo$2bo$bo!")
__mfont['?'] = pattern("b3o$o3bo$4bo$2b2o$2bo2$2bo!")
__mfont['@'] = pattern("b3o$o3bo$ob3o$obobo$ob2o$o$b3o!")
__mfont['A'] = pattern("b3o$o3bo$o3bo$5o$o3bo$o3bo$o3bo!")
__mfont['B'] = pattern("4o$o3bo$o3bo$4o$o3bo$o3bo$4o!")
__mfont['C'] = pattern("b3o$o3bo$o$o$o$o3bo$b3o!")
__mfont['D'] = pattern("4o$o3bo$o3bo$o3bo$o3bo$o3bo$4o!")
__mfont['E'] = pattern("5o$o$o$3o$o$o$5o!")
__mfont['F'] = pattern("5o$o$o$3o$o$o$o!")
__mfont['G'] = pattern("b3o$o3bo$o$o2b2o$o3bo$o3bo$b3o!")
__mfont['H'] = pattern("o3bo$o3bo$o3bo$5o$o3bo$o3bo$o3bo!")
__mfont['I'] = pattern("b3o$2bo$2bo$2bo$2bo$2bo$b3o!")
__mfont['J'] = pattern("2b3o$3bo$3bo$3bo$3bo$o2bo$b2o!")
__mfont['K'] = pattern("o3bo$o2bo$obo$2o$obo$o2bo$o3bo!")
__mfont['L'] = pattern("o$o$o$o$o$o$5o!")
__mfont['M'] = pattern("o3bo$2ob2o$obobo$obobo$o3bo$o3bo$o3bo!")
__mfont['N'] = pattern("o3bo$2o2bo$obobo$o2b2o$o3bo$o3bo$o3bo!")
__mfont['O'] = pattern("b3o$o3bo$o3bo$o3bo$o3bo$o3bo$b3o!")
__mfont['P'] = pattern("4o$o3bo$o3bo$4o$o$o$o!")
__mfont['Q'] = pattern("b3o$o3bo$o3bo$o3bo$obobo$o2bo$b2obo!")
__mfont['R'] = pattern("4o$o3bo$o3bo$4o$o2bo$o3bo$o3bo!")
__mfont['S'] = pattern("b3o$o3bo$o$b3o$4bo$o3bo$b3o!")
__mfont['T'] = pattern("5o$2bo$2bo$2bo$2bo$2bo$2bo!")
__mfont['U'] = pattern("o3bo$o3bo$o3bo$o3bo$o3bo$o3bo$b3o!")
__mfont['V'] = pattern("o3bo$o3bo$o3bo$o3bo$o3bo$bobo$2bo!")
__mfont['W'] = pattern("o3bo$o3bo$o3bo$obobo$obobo$2ob2o$o3bo!")
__mfont['X'] = pattern("o3bo$o3bo$bobo$2bo$bobo$o3bo$o3bo!")
__mfont['Y'] = pattern("o3bo$o3bo$bobo$2bo$2bo$2bo$2bo!")
__mfont['Z'] = pattern("5o$4bo$3bo$2bo$bo$o$5o!")
__mfont['['] = pattern("2b2o$2bo$2bo$2bo$2bo$2bo$2b2o!")
__mfont['\\'] = pattern("bo$bo$2bo$2bo$2bo$3bo$3bo!")
__mfont[']'] = pattern("b2o$2bo$2bo$2bo$2bo$2bo$b2o!")
__mfont['^'] = pattern("2bo$bobo$o3bo!")
__mfont['_'] = pattern("6$5o!")
__mfont['`'] = pattern("o$bo!")
__mfont['a'] = pattern("2$b4o$o3bo$o3bo$o3bo$b4o!")
__mfont['b'] = pattern("o$o$4o$o3bo$o3bo$o3bo$4o!")
__mfont['c'] = pattern("2$b4o$o$o$o$b4o!")
__mfont['d'] = pattern("4bo$4bo$b4o$o3bo$o3bo$o3bo$b4o!")
__mfont['e'] = pattern("2$b3o$o3bo$5o$o$b4o!")
__mfont['f'] = pattern("2b2o$bo2bo$bo$3o$bo$bo$bo!")
__mfont['g'] = pattern("2$b3o$o3bo$o3bo$o3bo$b4o$4bo$b3o!")
__mfont['h'] = pattern("o$o$ob2o$2o2bo$o3bo$o3bo$o3bo!")
__mfont['i'] = pattern("$2bo2$2bo$2bo$2bo$2b2o!")
__mfont['j'] = pattern("$3bo2$3bo$3bo$3bo$3bo$o2bo$b2o!")
__mfont['k'] = pattern("o$o$o2bo$obo$3o$o2bo$o3bo!")
__mfont['l'] = pattern("b2o$2bo$2bo$2bo$2bo$2bo$2b2o!")
__mfont['m'] = pattern("2$bobo$obobo$obobo$o3bo$o3bo!")
__mfont['n'] = pattern("2$4o$o3bo$o3bo$o3bo$o3bo!")
__mfont['o'] = pattern("2$b3o$o3bo$o3bo$o3bo$b3o!")
__mfont['p'] = pattern("2$4o$o3bo$o3bo$o3bo$4o$o$o!")
__mfont['q'] = pattern("2$b4o$o3bo$o3bo$o3bo$b4o$4bo$4bo!")
__mfont['r'] = pattern("2$ob2o$2o2bo$o$o$o!")
__mfont['s'] = pattern("2$b4o$o$b3o$4bo$4o!")
__mfont['t'] = pattern("$2bo$5o$2bo$2bo$2bo$3b2o!")
__mfont['u'] = pattern("2$o3bo$o3bo$o3bo$o3bo$b4o!")
__mfont['v'] = pattern("2$o3bo$o3bo$o3bo$bobo$2bo!")
__mfont['w'] = pattern("2$o3bo$o3bo$obobo$2ob2o$o3bo!")
__mfont['x'] = pattern("2$o3bo$bobo$2bo$bobo$o3bo!")
__mfont['y'] = pattern("2$o3bo$o3bo$o3bo$o3bo$b4o$4bo$b3o!")
__mfont['z'] = pattern("2$5o$3bo$2bo$bo$5o!")
__mfont['{'] = pattern("3bo$2bo$2bo$bo$2bo$2bo$3bo!")
__mfont['|'] = pattern("2bo$2bo$2bo$2bo$2bo$2bo$2bo!")
__mfont['}'] = pattern("bo$2bo$2bo$3bo$2bo$2bo$bo!")
__mfont['~'] = pattern("2$bo$obobo$3bo!")
for key in __mfont:
__mfont[key].width = 6
# Snakial font (all chars are stable Life patterns)
__sfont = dict ()
__sfont['0'] = pattern ("2b2obo$2bob2o$2o4b2o$o5bo$bo5bo$2o4b2o$o5bo$bo5bo$2o4b2o$o5bo$bo5bo$2o4b2o$2b2obo$2bob2o!", 0, -14)
__sfont['0'].width = 10
__sfont['1'] = pattern ("2o$bo$o$2o2$2o$bo$o$2o2$2o$bo$o$2o!", 1, -14)
__sfont['1'].width = 6
__sfont['2'] = pattern ("2b2obo$2bob2o$6b2o$6bo$7bo$6b2o$2b2obo$2bob2o$2o$o$bo$2o$2b2obo$2bob2o!", 0, -14)
__sfont['2'].width = 10
__sfont['3'] = pattern ("2obo$ob2o$4b2o$4bo$5bo$4b2o$2obo$ob2o$4b2o$4bo$5bo$4b2o$2obo$ob2o!", 0, -14)
__sfont['3'].width = 8
__sfont['4'] = pattern ("2o3b2o$2o3b2o2$2o3b2o$obobobo$2bobo$b2obo$5b2o$6bo$5bo$5b2o$6bo$5bo$5b2o!", 0, -14)
__sfont['4'].width = 9
__sfont['5'] = pattern ("2b2obo$2bob2o$2o$o$bo$2o$2b2obo$2bob2o$6b2o$6bo$7bo$6b2o$2b2obo$2bob2o!", 0, -14)
__sfont['5'].width = 10
__sfont['6'] = pattern ("2b2obo$2bob2o$2o$o$bo$2o$2b2obo$2bob2o$2o4b2o$o5bo$bo5bo$2o4b2o$2b2obo$2bob2o!", 0, -14)
__sfont['6'].width = 10
__sfont['7'] = pattern ("ob2o$2obo$4b2o$5bo$4bo$4b2o$2b2o$3bo$2bo$2b2o$2o$bo$o$2o!", 0, -14)
__sfont['7'].width = 8
__sfont['8'] = pattern ("2b2obo$2bob2o$2o4b2o$o5bo$bo5bo$2o4b2o$2b2obo$2bob2o$2o4b2o$o5bo$bo5bo$2o4b2o$2b2obo$2bob2o!", 0, -14)
__sfont['8'].width = 10
__sfont['9'] = pattern ("2b2obo$2bob2o$2o4b2o$o5bo$bo5bo$2o4b2o$2b2obo$2bob2o$6b2o$6bo$7bo$6b2o$2b2obo$2bob2o!", 0, -14)
__sfont['9'].width = 10
__sfont['-'] = pattern ("2obo$ob2o!", 0, -8)
__sfont['-'].width = 6
def make_text (string, font='Snakial'):
p = pattern ()
x = 0
if lower(font[:2]) == "ea":
f = __eafont
unknown = '-'
elif lower(font) == "mono":
f = __mfont
unknown = '?'
else:
f = __sfont
unknown = '-'
for c in string:
if not f.has_key (c): c = unknown
symbol = f[c]
p += symbol (x, 0)
x += symbol.width
return p
|