firmware/shared/zevvpeep.py
2025-02-05 11:28:09 -05:00

382 lines
23 KiB
Python

# autogen'ed. don't edit
#
# cmdline: ./build.py build
#
# 'assets/zevv-peep-iso8859-15-07x14.bdf' => FontSmall
# 'assets/zevv-peep-iso8859-15-10x20.bdf' => FontLarge
# 'assets/4x6.bdf' => FontTiny
#
__all__ = ["FontSmall", "FontLarge", "FontTiny"]
from ucollections import namedtuple
GlyphInfo = namedtuple('GlyphInfo', 'x y w h bits')
class FontBase:
@classmethod
def lookup(cls, cp):
# lookup glyph data for a single codepoint, or return None
for r,d in cls._code_points:
if cp not in r: continue
ptr = d[cp-r.start]
if not ptr: return None
x,y, w,h, dlen = cls._bboxes[cls._bitmaps[ptr]]
bits = cls._bitmaps[ptr+1:ptr+1+dlen]
return GlyphInfo(x,y, w,h, bits)
return None
class FontSmall(FontBase):
height = 14
code_range = range(32, 8943)
_bboxes = [None, (0, -3, 7, 14, 0), (0, -3, 7, 14, 4), (0, -3, 7,
14, 5), (0, -3, 7, 14, 7), (0, -3, 7, 14, 9), (0, -3, 7, 14, 10),
(0, -3, 7, 14, 11), (0, -3, 7, 14, 12), (0, -3, 7, 14, 13), (0, -3,
7, 14, 14), (0, 0, 5, 2, 2), (0, 0, 8, 8, 8), (0, 0, 11, 8, 16), (0,
0, 11, 9, 18), (0, 0, 14, 10, 20)]
_code_points = [
(range(32, 127), [1, 2, 14, 20, 31, 43, 55, 67, 73, 87, 101, 111, 122,
136, 145, 158, 171, 183, 195, 207, 219, 231, 243, 255, 267, 279,
291, 304, 318, 330, 340, 352, 364, 376, 388, 400, 412, 424, 436,
448, 460, 472, 484, 496, 508, 520, 532, 544, 556, 568, 581, 593,
605, 617, 629, 641, 653, 665, 677, 689, 703, 716, 730, 735, 749,
755, 767, 779, 791, 803, 815, 827, 842, 854, 866, 880, 892, 904,
916, 928, 940, 954, 968, 980, 992, 1004, 1016, 1028, 1040, 1052,
1067, 1079, 1093, 1106, 1120]),
(range(8201, 8202), [1126]), #
(range(8226, 8227), [1129]), # •
(range(8592, 8595), [1148, 0, 1169]), # ← →
(range(8627, 8628), [1190]), # ↳
(range(8943, 8944), [1211]), # ⋯
]
_bitmaps = b"""\
\xaa\x01\x07\x00\x10\x10\x10\x10\x10\x10\x10\x00\x10\x10\x03\x00\x28\x28\
\x28\x28\x06\x00\x00\x24\x24\x7e\x24\x24\x7e\x24\x24\x07\x00\x00\x10\x3c\
\x50\x50\x38\x14\x14\x78\x10\x07\x00\x22\x52\x54\x28\x08\x10\x14\x2a\x4a\
\x44\x07\x00\x00\x30\x48\x48\x30\x30\x4a\x44\x44\x3a\x03\x00\x10\x10\x10\
\x10\x09\x04\x08\x10\x10\x20\x20\x20\x20\x20\x10\x10\x08\x04\x09\x20\x10\
\x08\x08\x04\x04\x04\x04\x04\x08\x08\x10\x20\x05\x00\x00\x00\x00\x24\x18\
\x7e\x18\x24\x06\x00\x00\x00\x08\x08\x08\x3e\x08\x08\x08\x09\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x18\x30\x20\x40\x0c\x00\x00\x00\x00\x00\x00\x3e\
\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x38\x10\x08\x02\x02\x04\
\x04\x08\x08\x10\x10\x20\x20\x40\x40\x07\x00\x18\x24\x42\x42\x4a\x52\x42\
\x42\x24\x18\x07\x00\x08\x18\x28\x48\x08\x08\x08\x08\x08\x08\x07\x00\x3c\
\x42\x42\x02\x04\x08\x10\x20\x40\x7e\x07\x00\x3c\x42\x02\x02\x1c\x02\x02\
\x42\x42\x3c\x07\x00\x0c\x14\x14\x24\x24\x44\x7e\x04\x04\x04\x07\x00\x7e\
\x40\x40\x7c\x42\x02\x02\x02\x42\x3c\x07\x00\x3c\x42\x40\x40\x5c\x62\x42\
\x42\x42\x3c\x07\x00\x7e\x02\x04\x04\x08\x08\x10\x10\x20\x20\x07\x00\x3c\
\x42\x42\x42\x3c\x42\x42\x42\x42\x3c\x07\x00\x3c\x42\x42\x42\x46\x3a\x02\
\x02\x42\x3c\x08\x00\x00\x00\x10\x38\x10\x00\x00\x00\x10\x38\x10\x09\x00\
\x00\x00\x10\x38\x10\x00\x00\x00\x18\x30\x20\x40\x07\x00\x00\x04\x08\x10\
\x20\x40\x20\x10\x08\x04\x05\x00\x00\x00\x00\x00\x7e\x00\x00\x7e\x07\x00\
\x00\x20\x10\x08\x04\x02\x04\x08\x10\x20\x07\x00\x78\x04\x04\x08\x10\x20\
\x20\x00\x20\x20\x07\x00\x1c\x22\x42\x4e\x52\x52\x52\x4e\x20\x1c\x07\x00\
\x3c\x42\x42\x42\x42\x7e\x42\x42\x42\x42\x07\x00\x78\x44\x44\x44\x7c\x42\
\x42\x42\x42\x7c\x07\x00\x3c\x42\x42\x40\x40\x40\x40\x42\x42\x3c\x07\x00\
\x78\x44\x42\x42\x42\x42\x42\x42\x44\x78\x07\x00\x7e\x40\x40\x40\x7c\x40\
\x40\x40\x40\x7e\x07\x00\x7e\x40\x40\x40\x7c\x40\x40\x40\x40\x40\x07\x00\
\x3c\x42\x42\x40\x40\x4e\x42\x42\x42\x3c\x07\x00\x42\x42\x42\x42\x7e\x42\
\x42\x42\x42\x42\x07\x00\x7c\x10\x10\x10\x10\x10\x10\x10\x10\x7c\x07\x00\
\x1e\x02\x02\x02\x02\x02\x02\x42\x42\x3c\x07\x00\x42\x44\x48\x50\x68\x48\
\x44\x44\x42\x42\x07\x00\x40\x40\x40\x40\x40\x40\x40\x40\x40\x7e\x07\x00\
\x42\x66\x66\x5a\x5a\x5a\x42\x42\x42\x42\x07\x00\x42\x62\x62\x52\x52\x4a\
\x4a\x46\x46\x42\x07\x00\x3c\x42\x42\x42\x42\x42\x42\x42\x42\x3c\x07\x00\
\x7c\x42\x42\x42\x42\x7c\x40\x40\x40\x40\x08\x00\x3c\x42\x42\x42\x42\x42\
\x42\x4a\x4a\x3c\x06\x07\x00\x7c\x42\x42\x42\x42\x7c\x50\x48\x44\x42\x07\
\x00\x3c\x42\x40\x40\x30\x0c\x02\x02\x42\x3c\x07\x00\x7e\x08\x08\x08\x08\
\x08\x08\x08\x08\x08\x07\x00\x42\x42\x42\x42\x42\x42\x42\x42\x42\x3c\x07\
\x00\x42\x42\x42\x42\x42\x42\x24\x24\x18\x18\x07\x00\x42\x42\x42\x42\x42\
\x5a\x5a\x5a\x24\x24\x07\x00\x42\x42\x24\x24\x18\x18\x24\x24\x42\x42\x07\
\x00\x42\x42\x42\x42\x24\x18\x08\x08\x08\x08\x07\x00\x7e\x02\x04\x04\x08\
\x10\x10\x20\x40\x7e\x09\x1e\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\
\x1e\x08\x40\x40\x20\x20\x10\x10\x08\x08\x04\x04\x02\x02\x09\x78\x08\x08\
\x08\x08\x08\x08\x08\x08\x08\x08\x08\x78\x02\x00\x18\x24\x42\x09\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x03\x00\x30\x18\x08\x04\x07\
\x00\x00\x00\x00\x3c\x02\x3e\x42\x42\x46\x3a\x07\x00\x40\x40\x40\x5c\x62\
\x42\x42\x42\x62\x5c\x07\x00\x00\x00\x00\x3c\x42\x40\x40\x40\x42\x3c\x07\
\x00\x02\x02\x02\x3a\x46\x42\x42\x42\x46\x3a\x07\x00\x00\x00\x00\x3c\x42\
\x42\x7e\x40\x40\x3e\x07\x00\x1c\x22\x20\x20\x20\x7c\x20\x20\x20\x20\x0a\
\x00\x00\x00\x00\x3a\x46\x42\x42\x46\x3a\x02\x02\x42\x3c\x07\x00\x40\x40\
\x40\x5c\x62\x42\x42\x42\x42\x42\x07\x00\x08\x08\x00\x38\x08\x08\x08\x08\
\x08\x08\x09\x00\x04\x04\x00\x1c\x04\x04\x04\x04\x04\x04\x44\x38\x07\x00\
\x40\x40\x40\x44\x48\x50\x70\x48\x44\x42\x07\x00\x20\x20\x20\x20\x20\x20\
\x20\x20\x20\x1c\x07\x00\x00\x00\x00\x74\x4a\x4a\x4a\x4a\x42\x42\x07\x00\
\x00\x00\x00\x5c\x62\x42\x42\x42\x42\x42\x07\x00\x00\x00\x00\x3c\x42\x42\
\x42\x42\x42\x3c\x09\x00\x00\x00\x00\x5c\x62\x42\x42\x62\x5c\x40\x40\x40\
\x09\x00\x00\x00\x00\x3a\x46\x42\x42\x46\x3a\x02\x02\x02\x07\x00\x00\x00\
\x00\x5c\x62\x40\x40\x40\x40\x40\x07\x00\x00\x00\x00\x3c\x42\x40\x3c\x02\
\x42\x3c\x07\x00\x00\x20\x20\x7c\x20\x20\x20\x20\x22\x1c\x07\x00\x00\x00\
\x00\x42\x42\x42\x42\x42\x46\x3a\x07\x00\x00\x00\x00\x42\x42\x42\x24\x24\
\x18\x18\x07\x00\x00\x00\x00\x42\x42\x4a\x4a\x4a\x5a\x24\x07\x00\x00\x00\
\x00\x42\x24\x18\x00\x18\x24\x42\x0a\x00\x00\x00\x00\x42\x42\x42\x42\x46\
\x3a\x02\x02\x42\x3c\x07\x00\x00\x00\x00\x7e\x02\x04\x08\x10\x20\x7e\x09\
\x06\x08\x08\x08\x08\x08\x30\x08\x08\x08\x08\x08\x06\x08\x10\x10\x10\x10\
\x10\x10\x10\x10\x10\x10\x10\x10\x09\x60\x10\x10\x10\x10\x10\x0c\x10\x10\
\x10\x10\x10\x60\x03\x00\x00\x32\x4a\x44\x0b\x00\x00\x0e\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x03\x80\x03\x80\x03\x80\x00\x00\x0f\x00\x00\x00\
\x00\x00\x00\x00\x00\x08\x00\x18\x00\x3f\xf8\x18\x00\x08\x00\x00\x00\x0f\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x30\x3f\xf8\x00\x30\x00\x20\
\x00\x00\x0f\x00\x00\x10\x00\x10\x00\x10\x00\x10\x20\x10\x30\x1f\xf8\x00\
\x30\x00\x20\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x2a\xa0\x00\x00\
"""
class FontLarge(FontBase):
height = 21
code_range = range(32, 126)
_bboxes = [None, (0, -5, 10, 21, 0), (0, -5, 10, 21, 14), (0, -5,
10, 21, 16), (0, -5, 10, 21, 22), (0, -5, 10, 21, 26), (0, -5, 10,
21, 30), (0, -5, 10, 21, 32), (0, -5, 10, 21, 34), (0, -5, 10, 21,
36), (0, -5, 10, 21, 38), (0, -5, 10, 21, 40)]
_code_points = [
(range(32, 127), [1, 2, 35, 50, 81, 118, 151, 184, 199, 238, 277, 304,
335, 372, 395, 428, 463, 496, 529, 562, 595, 628, 661, 694, 727,
760, 793, 826, 863, 896, 923, 956, 989, 1022, 1055, 1088, 1121,
1154, 1187, 1220, 1253, 1286, 1319, 1352, 1385, 1418, 1451, 1484,
1517, 1550, 1585, 1618, 1651, 1684, 1717, 1750, 1783, 1816, 1849,
1882, 1919, 1954, 1991, 2006, 2043, 2058, 2091, 2124, 2157, 2190,
2223, 2256, 2297, 2330, 2363, 2402, 2435, 2468, 2501, 2534, 2567,
2608, 2649, 2682, 2715, 2748, 2781, 2814, 2847, 2880, 2921, 2954,
2991, 3026, 3063]),
]
_bitmaps = b"""\
\xaa\x01\x07\x00\x00\x00\x00\x00\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\
\x00\x08\x00\x08\x00\x08\x00\x08\x00\x00\x00\x00\x00\x08\x00\x08\x00\x02\
\x00\x00\x00\x00\x00\x00\x11\x00\x11\x00\x11\x00\x11\x00\x06\x00\x00\x00\
\x00\x00\x00\x00\x00\x08\x80\x08\x80\x08\x80\x3f\xc0\x11\x00\x11\x00\x11\
\x00\x7f\x80\x22\x00\x22\x00\x22\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x04\x00\x04\x00\x1f\x00\x24\x80\x24\x00\x24\x00\x1f\x00\x04\x80\
\x04\x80\x24\x80\x1f\x00\x04\x00\x04\x00\x07\x00\x00\x00\x00\x00\x00\x10\
\x80\x29\x00\x29\x00\x2a\x00\x12\x00\x04\x00\x04\x00\x08\x00\x09\x00\x12\
\x80\x12\x80\x22\x80\x21\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x1c\x00\x22\x00\x22\x00\x22\x00\x1c\x00\x18\x00\x24\x80\x23\x00\x21\x00\
\x23\x00\x1c\x80\x02\x00\x00\x00\x00\x00\x00\x04\x00\x04\x00\x04\x00\x04\
\x00\x0a\x00\x00\x00\x00\x00\x80\x01\x00\x02\x00\x04\x00\x04\x00\x08\x00\
\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x04\x00\x04\x00\x02\x00\
\x01\x00\x00\x80\x0a\x00\x00\x00\x00\x20\x00\x10\x00\x08\x00\x04\x00\x04\
\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x04\x00\x04\
\x00\x08\x00\x10\x00\x20\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x08\x00\x08\x00\x6b\x00\x1c\x00\x0c\x00\x12\x00\x21\x00\x06\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x04\x00\x04\x00\x04\
\x00\x7f\xc0\x04\x00\x04\x00\x04\x00\x04\x00\x09\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x0c\x00\x0c\x00\x18\x00\x30\x00\x04\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x80\x07\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0c\x00\x08\x00\x00\x00\
\x00\x00\x00\x00\x80\x00\x80\x01\x00\x01\x00\x02\x00\x02\x00\x04\x00\x04\
\x00\x08\x00\x08\x00\x10\x00\x10\x00\x20\x00\x20\x00\x07\x00\x00\x00\x00\
\x00\x00\x0e\x00\x11\x00\x20\x80\x20\x80\x22\x80\x22\x80\x24\x80\x28\x80\
\x28\x80\x20\x80\x20\x80\x11\x00\x0e\x00\x07\x00\x00\x00\x00\x00\x00\x04\
\x00\x0c\x00\x14\x00\x24\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\
\x00\x04\x00\x04\x00\x04\x00\x07\x00\x00\x00\x00\x00\x00\x0e\x00\x11\x00\
\x20\x80\x20\x80\x00\x80\x01\x00\x02\x00\x04\x00\x08\x00\x10\x00\x20\x00\
\x20\x00\x3f\x80\x07\x00\x00\x00\x00\x00\x00\x0e\x00\x11\x00\x20\x80\x00\
\x80\x00\x80\x01\x00\x0e\x00\x01\x00\x00\x80\x20\x80\x20\x80\x11\x00\x0e\
\x00\x07\x00\x00\x00\x00\x00\x00\x03\x00\x05\x00\x05\x00\x09\x00\x09\x00\
\x11\x00\x11\x00\x21\x00\x3f\x80\x01\x00\x01\x00\x01\x00\x01\x00\x07\x00\
\x00\x00\x00\x00\x00\x3f\x80\x20\x00\x20\x00\x20\x00\x2e\x00\x31\x00\x00\
\x80\x00\x80\x00\x80\x20\x80\x20\x80\x11\x00\x0e\x00\x07\x00\x00\x00\x00\
\x00\x00\x0e\x00\x11\x00\x20\x80\x20\x00\x20\x00\x2e\x00\x31\x00\x20\x80\
\x20\x80\x20\x80\x20\x80\x11\x00\x0e\x00\x07\x00\x00\x00\x00\x00\x00\x3f\
\x80\x00\x80\x01\x00\x01\x00\x02\x00\x02\x00\x04\x00\x04\x00\x08\x00\x08\
\x00\x08\x00\x10\x00\x10\x00\x07\x00\x00\x00\x00\x00\x00\x0e\x00\x11\x00\
\x20\x80\x20\x80\x20\x80\x11\x00\x0e\x00\x11\x00\x20\x80\x20\x80\x20\x80\
\x11\x00\x0e\x00\x07\x00\x00\x00\x00\x00\x00\x0e\x00\x11\x00\x20\x80\x20\
\x80\x20\x80\x20\x80\x11\x80\x0e\x80\x00\x80\x00\x80\x00\x80\x21\x00\x1e\
\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\
\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0c\x00\x09\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0c\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0c\x00\x18\x00\x30\x00\x07\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x04\x00\x08\x00\
\x10\x00\x20\x00\x10\x00\x08\x00\x04\x00\x02\x00\x01\x00\x05\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x80\x00\x00\x00\
\x00\x00\x00\x3f\x80\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\
\x08\x00\x04\x00\x02\x00\x01\x00\x00\x80\x01\x00\x02\x00\x04\x00\x08\x00\
\x10\x00\x07\x00\x00\x00\x00\x00\x00\x1e\x00\x21\x00\x00\x80\x00\x80\x01\
\x00\x02\x00\x04\x00\x08\x00\x08\x00\x00\x00\x00\x00\x08\x00\x08\x00\x07\
\x00\x00\x00\x00\x00\x00\x0e\x00\x11\x00\x20\x80\x27\x80\x28\x80\x28\x80\
\x28\x80\x28\x80\x29\x80\x26\x80\x20\x00\x10\x00\x0f\x00\x07\x00\x00\x00\
\x00\x00\x00\x0e\x00\x11\x00\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x3f\
\x80\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x07\x00\x00\x00\x00\x00\x00\
\x3c\x00\x22\x00\x21\x00\x21\x00\x21\x00\x21\x00\x3e\x00\x21\x00\x20\x80\
\x20\x80\x20\x80\x21\x00\x3e\x00\x07\x00\x00\x00\x00\x00\x00\x0e\x00\x11\
\x00\x20\x80\x20\x80\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x80\x20\
\x80\x11\x00\x0e\x00\x07\x00\x00\x00\x00\x00\x00\x3c\x00\x22\x00\x21\x00\
\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x21\x00\x22\x00\
\x3c\x00\x07\x00\x00\x00\x00\x00\x00\x3f\x80\x20\x00\x20\x00\x20\x00\x20\
\x00\x20\x00\x3f\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x3f\x80\x07\
\x00\x00\x00\x00\x00\x00\x7f\x80\x40\x00\x40\x00\x40\x00\x40\x00\x7e\x00\
\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x07\x00\x00\x00\
\x00\x00\x00\x0e\x00\x11\x00\x20\x80\x20\x80\x20\x00\x20\x00\x20\x00\x27\
\x80\x20\x80\x20\x80\x20\x80\x10\x80\x0f\x00\x07\x00\x00\x00\x00\x00\x00\
\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x3f\x80\x20\x80\x20\x80\
\x20\x80\x20\x80\x20\x80\x20\x80\x07\x00\x00\x00\x00\x00\x00\x1f\x00\x04\
\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\
\x00\x04\x00\x1f\x00\x07\x00\x00\x00\x00\x00\x00\x07\x80\x00\x80\x00\x80\
\x00\x80\x00\x80\x00\x80\x00\x80\x00\x80\x00\x80\x20\x80\x20\x80\x11\x00\
\x0e\x00\x07\x00\x00\x00\x00\x00\x00\x20\x80\x21\x00\x22\x00\x24\x00\x28\
\x00\x38\x00\x24\x00\x24\x00\x22\x00\x22\x00\x21\x00\x21\x00\x20\x80\x07\
\x00\x00\x00\x00\x00\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\
\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x3f\x80\x07\x00\x00\x00\
\x00\x00\x00\x40\x40\x60\xc0\x60\xc0\x51\x40\x51\x40\x4a\x40\x4a\x40\x44\
\x40\x44\x40\x40\x40\x40\x40\x40\x40\x40\x40\x07\x00\x00\x00\x00\x00\x00\
\x20\x80\x30\x80\x30\x80\x28\x80\x28\x80\x24\x80\x24\x80\x24\x80\x22\x80\
\x22\x80\x21\x80\x21\x80\x20\x80\x07\x00\x00\x00\x00\x00\x00\x0e\x00\x11\
\x00\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x20\
\x80\x11\x00\x0e\x00\x07\x00\x00\x00\x00\x00\x00\x3e\x00\x21\x00\x20\x80\
\x20\x80\x20\x80\x20\x80\x21\x00\x3e\x00\x20\x00\x20\x00\x20\x00\x20\x00\
\x20\x00\x08\x00\x00\x00\x00\x00\x00\x0e\x00\x11\x00\x20\x80\x20\x80\x20\
\x80\x20\x80\x20\x80\x20\x80\x20\x80\x24\x80\x24\x80\x15\x00\x0e\x00\x03\
\x80\x07\x00\x00\x00\x00\x00\x00\x3e\x00\x21\x00\x20\x80\x20\x80\x20\x80\
\x20\x80\x21\x00\x3e\x00\x28\x00\x24\x00\x22\x00\x21\x00\x20\x80\x07\x00\
\x00\x00\x00\x00\x00\x0e\x00\x11\x00\x20\x80\x20\x00\x20\x00\x10\x00\x0e\
\x00\x01\x00\x00\x80\x00\x80\x20\x80\x11\x00\x0e\x00\x07\x00\x00\x00\x00\
\x00\x00\x3f\x80\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\
\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x07\x00\x00\x00\x00\x00\x00\x20\
\x80\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x20\
\x80\x20\x80\x11\x00\x0e\x00\x07\x00\x00\x00\x00\x00\x00\x20\x80\x20\x80\
\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x11\x00\x11\x00\x0a\x00\
\x0a\x00\x04\x00\x07\x00\x00\x00\x00\x00\x00\x40\x40\x40\x40\x40\x40\x40\
\x40\x40\x40\x44\x40\x44\x40\x44\x40\x4a\x40\x2a\x80\x2a\x80\x11\x00\x11\
\x00\x07\x00\x00\x00\x00\x00\x00\x20\x80\x20\x80\x20\x80\x11\x00\x11\x00\
\x0e\x00\x04\x00\x0e\x00\x11\x00\x11\x00\x20\x80\x20\x80\x20\x80\x07\x00\
\x00\x00\x00\x00\x00\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x11\x00\x0a\
\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x07\x00\x00\x00\x00\
\x00\x00\x3f\x80\x00\x80\x01\x00\x01\x00\x02\x00\x02\x00\x04\x00\x08\x00\
\x08\x00\x10\x00\x10\x00\x20\x00\x3f\x80\x09\x00\x00\x00\x00\x0f\x80\x08\
\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\
\x00\x08\x00\x08\x00\x08\x00\x08\x00\x0f\x80\x08\x00\x00\x00\x00\x00\x00\
\x20\x00\x20\x00\x10\x00\x10\x00\x08\x00\x08\x00\x04\x00\x04\x00\x02\x00\
\x02\x00\x01\x00\x01\x00\x00\x80\x00\x80\x09\x00\x00\x00\x00\x3e\x00\x02\
\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\
\x00\x02\x00\x02\x00\x02\x00\x02\x00\x3e\x00\x02\x00\x00\x00\x00\x00\x00\
\x04\x00\x0a\x00\x11\x00\x20\x80\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x7f\x80\x02\x00\x00\x00\x00\x00\x00\x0c\x00\
\x0c\x00\x06\x00\x03\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x1f\x00\x00\x80\x00\x80\x1f\x80\x20\x80\x20\x80\x20\x80\x21\
\x80\x1e\x80\x07\x00\x00\x00\x00\x00\x00\x20\x00\x20\x00\x20\x00\x20\x00\
\x2e\x00\x31\x00\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x31\x00\x2e\x00\
\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x11\
\x00\x20\x80\x20\x00\x20\x00\x20\x00\x20\x80\x11\x00\x0e\x00\x07\x00\x00\
\x00\x00\x00\x00\x00\x80\x00\x80\x00\x80\x00\x80\x0e\x80\x11\x80\x20\x80\
\x20\x80\x20\x80\x20\x80\x20\x80\x11\x80\x0e\x80\x07\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x11\x00\x20\x80\x20\x80\x3f\
\x80\x20\x00\x20\x00\x10\x80\x0f\x00\x07\x00\x00\x00\x00\x00\x00\x07\x00\
\x08\x80\x08\x00\x08\x00\x08\x00\x08\x00\x3f\x00\x08\x00\x08\x00\x08\x00\
\x08\x00\x08\x00\x08\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x0e\x80\x11\x80\x20\x80\x20\x80\x20\x80\x20\x80\x11\x80\x0e\
\x80\x00\x80\x00\x80\x20\x80\x11\x00\x0e\x00\x07\x00\x00\x00\x00\x00\x00\
\x20\x00\x20\x00\x20\x00\x20\x00\x2f\x00\x30\x80\x20\x80\x20\x80\x20\x80\
\x20\x80\x20\x80\x20\x80\x20\x80\x07\x00\x00\x00\x00\x00\x00\x00\x00\x04\
\x00\x04\x00\x00\x00\x1c\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\
\x00\x04\x00\x04\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x01\x00\
\x00\x00\x07\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\
\x01\x00\x21\x00\x21\x00\x1e\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x20\
\x00\x20\x00\x20\x00\x21\x00\x22\x00\x24\x00\x28\x00\x38\x00\x24\x00\x22\
\x00\x21\x00\x20\x80\x07\x00\x00\x00\x00\x00\x00\x10\x00\x10\x00\x10\x00\
\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\
\x0e\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\
\x80\x44\x40\x44\x40\x44\x40\x44\x40\x44\x40\x44\x40\x40\x40\x40\x40\x07\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x31\x00\
\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x20\x80\x07\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x11\x00\x20\x80\x20\
\x80\x20\x80\x20\x80\x20\x80\x11\x00\x0e\x00\x0b\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x31\x00\x20\x80\x20\x80\x20\x80\
\x20\x80\x31\x00\x2e\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x0b\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x80\x11\x80\x20\
\x80\x20\x80\x20\x80\x20\x80\x11\x80\x0e\x80\x00\x80\x00\x80\x00\x80\x00\
\x80\x00\x80\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x2e\x00\x31\x00\x20\x80\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\
\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x20\
\x80\x20\x00\x20\x00\x1f\x00\x00\x80\x00\x80\x20\x80\x1f\x00\x07\x00\x00\
\x00\x00\x00\x00\x00\x00\x08\x00\x08\x00\x08\x00\x3f\x00\x08\x00\x08\x00\
\x08\x00\x08\x00\x08\x00\x08\x00\x08\x80\x07\x00\x07\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x20\x80\x20\x80\x20\x80\x20\
\x80\x20\x80\x20\x80\x11\x80\x0e\x80\x07\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x20\x80\x20\x80\x20\x80\x20\x80\x11\x00\x11\x00\
\x0a\x00\x04\x00\x04\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x40\x40\x44\x40\x44\x40\x44\x40\x44\x40\x2a\x80\x2a\x80\x2a\
\x80\x11\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x20\x80\x20\x80\x11\x00\x0a\x00\x04\x00\x0a\x00\x11\x00\x20\x80\x20\x80\
\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x20\
\x80\x20\x80\x20\x80\x20\x80\x20\x80\x11\x80\x0e\x80\x00\x80\x00\x80\x00\
\x80\x21\x00\x1e\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x3f\x80\x00\x80\x01\x00\x02\x00\x04\x00\x08\x00\x10\x00\x20\x00\
\x3f\x80\x09\x00\x00\x00\x00\x03\x80\x04\x00\x04\x00\x04\x00\x04\x00\x04\
\x00\x04\x00\x04\x00\x38\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\
\x00\x03\x80\x08\x00\x00\x00\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\
\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\
\x08\x00\x09\x00\x00\x00\x00\x38\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\
\x00\x04\x00\x04\x00\x03\x80\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\
\x00\x38\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x40\x24\x40\
\x23\x80\
"""
class FontTiny(FontBase):
height = 6
code_range = range(32, 126)
_bboxes = [None, (0, -1, 4, 6, 0), (0, -1, 4, 6, 2), (0, -1, 4, 6,
3), (0, -1, 4, 6, 4), (0, -1, 4, 6, 5), (0, -1, 4, 6, 6)]
_code_points = [
(range(32, 127), [1, 2, 8, 11, 17, 24, 30, 36, 39, 46, 53, 59, 65, 72,
76, 82, 88, 94, 100, 106, 112, 118, 124, 130, 136, 142, 148, 154,
161, 167, 172, 178, 184, 190, 196, 202, 208, 214, 220, 226, 232,
238, 244, 250, 256, 262, 268, 274, 280, 286, 293, 299, 305, 311,
317, 323, 329, 335, 341, 347, 353, 359, 365, 368, 375, 378, 384,
390, 396, 402, 408, 414, 421, 427, 433, 440, 446, 452, 458, 464,
470, 477, 484, 490, 496, 502, 508, 514, 520, 526, 533, 539, 546,
552, 559]),
]
_bitmaps = b"""\
\xaa\x01\x05\x40\x40\x40\x00\x40\x02\xa0\xa0\x05\xa0\xf0\xa0\xf0\xa0\x06\
\x40\xe0\xc0\x20\xe0\x40\x05\x80\x20\x40\x80\x20\x05\x40\xa0\x40\xa0\x50\
\x02\x40\x40\x06\x20\x40\x40\x40\x40\x20\x06\x80\x40\x40\x40\x40\x80\x05\
\xa0\x40\xe0\x40\xa0\x05\x40\x40\xe0\x40\x40\x06\x00\x00\x00\x00\x40\x80\
\x03\x00\x00\xe0\x05\x00\x00\x00\x00\x40\x05\x20\x20\x40\x80\x80\x05\x40\
\xa0\xe0\xa0\x40\x05\x40\xc0\x40\x40\xe0\x05\x40\xa0\x20\x40\xe0\x05\xe0\
\x20\x40\x20\xc0\x05\xa0\xa0\xe0\x20\x20\x05\xe0\x80\xc0\x20\xc0\x05\x60\
\x80\xc0\xa0\x40\x05\xe0\x20\x40\x80\x80\x05\x60\xa0\x40\xa0\xc0\x05\x40\
\xa0\x60\x20\xc0\x05\x00\x40\x00\x00\x40\x06\x00\x40\x00\x00\x40\x80\x05\
\x20\x40\x80\x40\x20\x04\x00\xe0\x00\xe0\x05\x80\x40\x20\x40\x80\x05\xc0\
\x20\x40\x00\x40\x05\x60\xa0\xa0\x80\x60\x05\x40\xa0\xe0\xa0\xa0\x05\xc0\
\xa0\xc0\xa0\xc0\x05\x40\xa0\x80\xa0\x40\x05\xc0\xa0\xa0\xa0\xc0\x05\xe0\
\x80\xc0\x80\xe0\x05\xe0\x80\xc0\x80\x80\x05\x60\x80\xa0\xa0\x60\x05\xa0\
\xa0\xe0\xa0\xa0\x05\xe0\x40\x40\x40\xe0\x05\x20\x20\x20\xa0\x40\x05\xa0\
\xa0\xc0\xa0\xa0\x05\x80\x80\x80\x80\xe0\x05\xa0\xe0\xe0\xa0\xa0\x05\x20\
\xa0\xe0\xa0\x80\x05\x40\xa0\xa0\xa0\x40\x05\xc0\xa0\xc0\x80\x80\x06\x40\
\xa0\xa0\xa0\x40\x20\x05\xc0\xa0\xc0\xa0\xa0\x05\x60\x80\x40\x20\xc0\x05\
\xe0\x40\x40\x40\x40\x05\xa0\xa0\xa0\xa0\xe0\x05\xa0\xa0\xa0\xe0\x40\x05\
\xa0\xa0\xe0\xe0\xa0\x05\xa0\xa0\x40\xa0\xa0\x05\xa0\xa0\x40\x40\x40\x05\
\xe0\x20\x40\x80\xe0\x05\x60\x40\x40\x40\x60\x05\x80\x80\x40\x20\x20\x05\
\xc0\x40\x40\x40\xc0\x02\x40\xa0\x06\x00\x00\x00\x00\x00\xe0\x02\x40\x20\
\x05\x00\x60\xa0\xa0\x60\x05\x80\xc0\xa0\xa0\xc0\x05\x00\x60\x80\x80\x60\
\x05\x20\x60\xa0\xa0\x60\x05\x00\x40\xa0\xc0\x60\x05\x20\x40\xe0\x40\x40\
\x06\x00\x60\xa0\x60\x20\xc0\x05\x80\xc0\xa0\xa0\xa0\x05\x40\x00\xc0\x40\
\xe0\x06\x20\x00\x20\x20\x20\xc0\x05\x80\xa0\xc0\xa0\xa0\x05\xc0\x40\x40\
\x40\xe0\x05\x00\xa0\xe0\xa0\xa0\x05\x00\xc0\xa0\xa0\xa0\x05\x00\x40\xa0\
\xa0\x40\x06\x00\xc0\xa0\xc0\x80\x80\x06\x00\x60\xa0\xa0\x60\x20\x05\x00\
\xa0\xc0\x80\x80\x05\x00\x60\xc0\x20\xc0\x05\x40\xe0\x40\x40\x20\x05\x00\
\xa0\xa0\xa0\x60\x05\x00\xa0\xa0\xa0\x40\x05\x00\xa0\xa0\xe0\xa0\x05\x00\
\xa0\x40\x40\xa0\x06\x00\xa0\xa0\x60\x20\xc0\x05\x00\xe0\x20\x40\xe0\x06\
\x20\x40\xc0\x40\x40\x20\x05\x40\x40\x40\x40\x40\x06\x80\x40\x60\x40\x40\
\x80\x02\x50\xa0\
"""