wasp-os/wasp/fonts/sans24.py
Daniel Thompson 3ded49c5ef fonts: sans24: Minor refactor to reduce memory allocation
This is a useful but modest optimization (maybe 3% in string
rendering.
2020-03-09 21:33:29 +00:00

370 lines
22 KiB
Python

# Code generated by font_to_py.py.
# Font: DejaVuSans.ttf
# Cmd: tools/micropython-font-to-py/font_to_py.py /usr/share/fonts/dejavu/DejaVuSans.ttf --xmap 24 wasp/fonts/sans24.py
version = '0.33'
def height():
return 24
def baseline():
return 18
def max_width():
return 23
def hmap():
return True
def reverse():
return False
def monospaced():
return False
def min_ch():
return 32
def max_ch():
return 126
_font =\
b'\x0c\x00\x00\x00\x0f\x80\x1f\xc0\x30\xe0\x20\x60\x00\x60\x00\x60'\
b'\x00\xc0\x03\x80\x03\x00\x06\x00\x06\x00\x06\x00\x00\x00\x00\x00'\
b'\x06\x00\x06\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00'\
b'\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00'\
b'\x18\x00\x18\x00\x18\x00\x00\x00\x00\x00\x00\x00\x18\x00\x18\x00'\
b'\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00'\
b'\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x13\x00\x00\x00\x00\x00\xc2\x00\x00\xc6\x00\x00\xc6\x00\x00\xc6'\
b'\x00\x00\x86\x00\x1f\xff\xc0\x1f\xff\xc0\x01\x8c\x00\x03\x0c\x00'\
b'\x03\x18\x00\x3f\xff\x80\x3f\xff\x80\x06\x10\x00\x06\x30\x00\x06'\
b'\x30\x00\x06\x30\x00\x04\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x01\x00\x01\x00'\
b'\x01\x00\x07\xe0\x1f\xf0\x39\x10\x31\x00\x31\x00\x39\x00\x1f\x00'\
b'\x0f\xe0\x01\xf0\x01\x38\x01\x18\x01\x18\x21\x38\x3f\xf0\x0f\xc0'\
b'\x01\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00'\
b'\x00\x1e\x03\x00\x33\x07\x00\x61\x86\x00\x61\x8c\x00\x61\x8c\x00'\
b'\x61\x98\x00\x61\xb8\x00\x33\x30\x00\x1e\x73\xc0\x00\x66\x60\x00'\
b'\xec\x30\x00\xcc\x30\x01\x8c\x30\x01\x8c\x30\x03\x0c\x30\x07\x06'\
b'\x60\x06\x03\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x07\xc0\x00\x0f\xe0'\
b'\x00\x1c\x20\x00\x18\x00\x00\x18\x00\x00\x18\x00\x00\x0c\x00\x00'\
b'\x1e\x00\x00\x3b\x03\x00\x31\x83\x00\x60\xe6\x00\x60\x76\x00\x60'\
b'\x3c\x00\x70\x1c\x00\x38\x7e\x00\x1f\xe7\x00\x0f\xc3\x80\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x06\x00\x00\x30\x30\x30\x30\x30\x30\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x06\x00'\
b'\x0c\x00\x0c\x00\x18\x00\x18\x00\x18\x00\x30\x00\x30\x00\x30\x00'\
b'\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x18\x00\x18\x00'\
b'\x18\x00\x0c\x00\x0c\x00\x06\x00\x00\x00\x00\x00\x09\x00\x00\x00'\
b'\x30\x00\x18\x00\x18\x00\x0c\x00\x0c\x00\x0c\x00\x06\x00\x06\x00'\
b'\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x0c\x00'\
b'\x0c\x00\x0c\x00\x18\x00\x18\x00\x30\x00\x00\x00\x00\x00\x0c\x00'\
b'\x00\x00\x04\x00\x04\x00\x44\x40\x35\x80\x0e\x00\x0e\x00\x35\x80'\
b'\x44\x40\x04\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0'\
b'\x00\x00\xc0\x00\x00\xc0\x00\x00\xc0\x00\x00\xc0\x00\x00\xc0\x00'\
b'\x3f\xff\x00\x3f\xff\x00\x00\xc0\x00\x00\xc0\x00\x00\xc0\x00\x00'\
b'\xc0\x00\x00\xc0\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x18\x18\x10\x30'\
b'\x20\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x7e\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18'\
b'\x18\x18\x00\x00\x00\x00\x00\x00\x08\x00\x00\x03\x07\x06\x06\x06'\
b'\x0c\x0c\x0c\x18\x18\x18\x30\x30\x30\x60\x60\x60\xe0\xc0\x00\x00'\
b'\x00\x00\x0f\x00\x00\x00\x03\xc0\x0f\xf0\x1c\x38\x18\x18\x38\x1c'\
b'\x30\x0c\x30\x0c\x30\x0c\x30\x0c\x30\x0c\x30\x0c\x30\x0c\x38\x1c'\
b'\x18\x18\x1c\x38\x0f\xf0\x03\xc0\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x0f\x00\x00\x00\x07\x80\x1f\x80\x19\x80\x01\x80'\
b'\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80'\
b'\x01\x80\x01\x80\x01\x80\x1f\xf8\x1f\xf8\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x0f\xc0\x3f\xf0\x30\x70'\
b'\x00\x18\x00\x18\x00\x18\x00\x18\x00\x30\x00\x60\x00\xe0\x01\xc0'\
b'\x03\x80\x07\x00\x0e\x00\x18\x00\x3f\xf8\x3f\xf8\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x0f\xc0\x1f\xe0'\
b'\x10\x70\x00\x30\x00\x30\x00\x30\x00\x60\x07\xc0\x07\xe0\x00\x70'\
b'\x00\x18\x00\x18\x00\x18\x00\x18\x20\x70\x3f\xf0\x1f\xc0\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\xe0'\
b'\x01\xe0\x03\x60\x03\x60\x06\x60\x0c\x60\x0c\x60\x18\x60\x10\x60'\
b'\x30\x60\x60\x60\x7f\xf8\x7f\xf8\x00\x60\x00\x60\x00\x60\x00\x60'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00'\
b'\x1f\xf0\x1f\xf0\x18\x00\x18\x00\x18\x00\x18\x00\x1f\xc0\x1f\xe0'\
b'\x10\x70\x00\x38\x00\x18\x00\x18\x00\x18\x00\x38\x20\x70\x3f\xe0'\
b'\x1f\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00'\
b'\x00\x00\x03\xf0\x07\xf8\x0e\x08\x1c\x00\x18\x00\x30\x00\x33\xe0'\
b'\x37\xf0\x3e\x38\x3c\x1c\x38\x0c\x38\x0c\x38\x0c\x18\x1c\x1e\x38'\
b'\x0f\xf0\x03\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x0f\x00\x00\x00\x3f\xf8\x3f\xf8\x00\x30\x00\x30\x00\x60\x00\x60'\
b'\x00\xe0\x00\xc0\x00\xc0\x01\x80\x01\x80\x03\x80\x03\x00\x07\x00'\
b'\x06\x00\x06\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x0f\x00\x00\x00\x07\xe0\x1f\xf8\x38\x1c\x30\x0c\x30\x0c'\
b'\x30\x0c\x18\x18\x0f\xf0\x0f\xf0\x1c\x38\x30\x0c\x30\x0c\x30\x0c'\
b'\x30\x0c\x1c\x38\x1f\xf8\x07\xe0\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x0f\x00\x00\x00\x07\xc0\x0f\xf0\x1c\x78\x38\x38'\
b'\x30\x1c\x30\x1c\x30\x1c\x30\x3c\x1c\x7c\x0f\xec\x07\xcc\x00\x0c'\
b'\x00\x18\x00\x38\x10\x70\x1f\xe0\x0f\xc0\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x18\x18'\
b'\x18\x00\x00\x00\x00\x00\x00\x18\x18\x18\x00\x00\x00\x00\x00\x00'\
b'\x08\x00\x00\x00\x00\x00\x00\x00\x18\x18\x18\x00\x00\x00\x00\x00'\
b'\x00\x18\x18\x18\x10\x30\x20\x00\x00\x00\x13\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x0f'\
b'\x00\x00\x7e\x00\x03\xf0\x00\x0f\xc0\x00\x3e\x00\x00\x3e\x00\x00'\
b'\x0f\xc0\x00\x03\xf0\x00\x00\x7e\x00\x00\x0f\x00\x00\x01\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xff\x00\x3f\xff'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xff\x00\x3f\xff\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20'\
b'\x00\x00\x3c\x00\x00\x1f\x80\x00\x03\xf0\x00\x00\x7c\x00\x00\x1f'\
b'\x00\x00\x1f\x00\x00\x7c\x00\x03\xf0\x00\x1f\x80\x00\x3c\x00\x00'\
b'\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x0f\x80\x1f\xc0'\
b'\x30\xe0\x20\x60\x00\x60\x00\x60\x00\xc0\x03\x80\x03\x00\x06\x00'\
b'\x06\x00\x06\x00\x00\x00\x00\x00\x06\x00\x06\x00\x06\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x7f\x00\x01\xff\xc0\x07\x81\xe0\x0e\x00\x70\x0c\x00'\
b'\x38\x18\x79\x98\x18\xff\x8c\x30\xc3\x8c\x31\x81\x8c\x31\x81\x8c'\
b'\x31\x81\x8c\x31\x81\x98\x31\xc3\xb8\x18\xff\xf0\x18\x79\xc0\x0c'\
b'\x00\x00\x0e\x00\x40\x07\x81\xc0\x01\xff\x80\x00\x7e\x00\x00\x00'\
b'\x00\x00\x00\x00\x10\x00\x00\x00\x03\x80\x03\x80\x06\xc0\x06\xc0'\
b'\x06\xc0\x0c\x60\x0c\x60\x1c\x70\x18\x30\x18\x30\x38\x38\x3f\xf8'\
b'\x3f\xf8\x60\x0c\x60\x0c\x60\x0c\xc0\x06\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x3f\xe0\x3f\xf0\x30\x38'\
b'\x30\x18\x30\x18\x30\x18\x30\x30\x3f\xe0\x3f\xf0\x30\x18\x30\x0c'\
b'\x30\x0c\x30\x0c\x30\x0c\x30\x18\x3f\xf8\x3f\xe0\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x03\xf0\x0f\xfc'\
b'\x1c\x0e\x38\x02\x30\x00\x60\x00\x60\x00\x60\x00\x60\x00\x60\x00'\
b'\x60\x00\x60\x00\x30\x00\x38\x02\x1c\x0e\x0f\xfc\x03\xf0\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x3f'\
b'\xe0\x00\x3f\xf8\x00\x30\x3c\x00\x30\x0e\x00\x30\x06\x00\x30\x03'\
b'\x00\x30\x03\x00\x30\x03\x00\x30\x03\x00\x30\x03\x00\x30\x03\x00'\
b'\x30\x03\x00\x30\x06\x00\x30\x0e\x00\x30\x3c\x00\x3f\xf8\x00\x3f'\
b'\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x0f\x00\x00\x00\x3f\xf8\x3f\xf8\x30\x00\x30\x00'\
b'\x30\x00\x30\x00\x30\x00\x3f\xf0\x3f\xf0\x30\x00\x30\x00\x30\x00'\
b'\x30\x00\x30\x00\x30\x00\x3f\xf8\x3f\xf8\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x3f\xf0\x3f\xf0\x30\x00'\
b'\x30\x00\x30\x00\x30\x00\x30\x00\x3f\xe0\x3f\xe0\x30\x00\x30\x00'\
b'\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x03\xf0\x00'\
b'\x0f\xfc\x00\x1c\x0e\x00\x38\x02\x00\x30\x00\x00\x60\x00\x00\x60'\
b'\x00\x00\x60\x00\x00\x60\x3f\x00\x60\x3f\x00\x60\x03\x00\x60\x03'\
b'\x00\x30\x03\x00\x38\x03\x00\x1e\x07\x00\x0f\xfe\x00\x03\xf8\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x11\x00\x00\x00\x00\x30\x06\x00\x30\x06\x00\x30\x06\x00'\
b'\x30\x06\x00\x30\x06\x00\x30\x06\x00\x30\x06\x00\x3f\xfe\x00\x3f'\
b'\xfe\x00\x30\x06\x00\x30\x06\x00\x30\x06\x00\x30\x06\x00\x30\x06'\
b'\x00\x30\x06\x00\x30\x06\x00\x30\x06\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x30'\
b'\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30'\
b'\x00\x00\x00\x00\x00\x00\x08\x00\x00\x18\x18\x18\x18\x18\x18\x18'\
b'\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x38\xf0\xe0\x00'\
b'\x0f\x00\x00\x00\x30\x1c\x30\x38\x30\x70\x30\xe0\x31\xc0\x33\x80'\
b'\x37\x00\x3e\x00\x3e\x00\x37\x00\x33\x80\x31\xc0\x30\xe0\x30\x70'\
b'\x30\x38\x30\x1c\x30\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x0d\x00\x00\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00'\
b'\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00'\
b'\x30\x00\x30\x00\x3f\xf0\x3f\xf0\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x14\x00\x00\x00\x00\x3c\x07\x80\x3c\x07\x80\x3c'\
b'\x07\x80\x36\x0d\x80\x36\x0d\x80\x36\x0d\x80\x33\x19\x80\x33\x19'\
b'\x80\x33\x19\x80\x31\xb1\x80\x31\xb1\x80\x31\xf1\x80\x30\xe1\x80'\
b'\x30\xe1\x80\x30\x01\x80\x30\x01\x80\x30\x01\x80\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00'\
b'\x00\x00\x00\x38\x06\x00\x3c\x06\x00\x3c\x06\x00\x36\x06\x00\x36'\
b'\x06\x00\x33\x06\x00\x33\x86\x00\x31\x86\x00\x31\xc6\x00\x30\xc6'\
b'\x00\x30\xe6\x00\x30\x66\x00\x30\x36\x00\x30\x36\x00\x30\x1e\x00'\
b'\x30\x1e\x00\x30\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x03\xf0\x00'\
b'\x0f\xfc\x00\x1c\x0e\x00\x38\x07\x00\x30\x03\x00\x70\x03\x80\x60'\
b'\x01\x80\x60\x01\x80\x60\x01\x80\x60\x01\x80\x60\x01\x80\x70\x03'\
b'\x80\x30\x03\x00\x38\x07\x00\x1c\x0e\x00\x0f\xfc\x00\x03\xf0\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x0e\x00\x00\x00\x3f\xc0\x3f\xf0\x30\x30\x30\x18\x30\x18'\
b'\x30\x18\x30\x18\x30\x30\x3f\xf0\x3f\xc0\x30\x00\x30\x00\x30\x00'\
b'\x30\x00\x30\x00\x30\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x12\x00\x00\x00\x00\x03\xf0\x00\x0f\xfc\x00\x1c'\
b'\x0e\x00\x38\x07\x00\x30\x03\x00\x70\x03\x80\x60\x01\x80\x60\x01'\
b'\x80\x60\x01\x80\x60\x01\x80\x60\x01\x80\x70\x03\x80\x30\x03\x00'\
b'\x38\x07\x00\x1c\x0e\x00\x0f\xfc\x00\x03\xf8\x00\x00\x1c\x00\x00'\
b'\x0c\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00'\
b'\x00\x00\x3f\xc0\x3f\xf0\x30\x38\x30\x18\x30\x18\x30\x18\x30\x18'\
b'\x30\x30\x3f\xf0\x3f\xe0\x30\x70\x30\x30\x30\x18\x30\x18\x30\x0c'\
b'\x30\x0c\x30\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x0f\x00\x00\x00\x07\xe0\x1f\xf8\x18\x18\x30\x00\x30\x00\x30\x00'\
b'\x38\x00\x1f\x00\x0f\xf0\x00\xf8\x00\x1c\x00\x0c\x00\x0c\x00\x0c'\
b'\x30\x18\x3f\xf8\x0f\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x0e\x00\x00\x00\xff\xfc\xff\xfc\x03\x00\x03\x00\x03\x00'\
b'\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00'\
b'\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x11\x00\x00\x00\x00\x30\x06\x00\x30\x06\x00\x30'\
b'\x06\x00\x30\x06\x00\x30\x06\x00\x30\x06\x00\x30\x06\x00\x30\x06'\
b'\x00\x30\x06\x00\x30\x06\x00\x30\x06\x00\x30\x06\x00\x30\x06\x00'\
b'\x18\x0c\x00\x1c\x1c\x00\x0f\xf8\x00\x07\xf0\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00'\
b'\x00\x00\xc0\x06\x60\x0c\x60\x0c\x60\x0c\x30\x18\x30\x18\x38\x38'\
b'\x18\x30\x18\x30\x1c\x70\x0c\x60\x0c\x60\x06\xc0\x06\xc0\x06\xc0'\
b'\x03\x80\x03\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x17\x00\x00\x00\x00\x60\x38\x0c\x60\x38\x0c\x30\x6c\x18\x30\x6c'\
b'\x18\x30\x6c\x18\x30\x6c\x18\x18\xc6\x30\x18\xc6\x30\x18\xc6\x30'\
b'\x18\xc6\x30\x0d\xc7\x60\x0d\x83\x60\x0d\x83\x60\x0d\x83\x60\x07'\
b'\x83\xc0\x07\x01\xc0\x07\x01\xc0\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x38\x0e'\
b'\x18\x0c\x0c\x18\x0e\x38\x06\x30\x07\x60\x03\xe0\x01\xc0\x01\xc0'\
b'\x03\xc0\x07\x60\x06\x70\x0c\x30\x1c\x38\x18\x18\x30\x0c\x70\x0e'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00'\
b'\xe0\x1c\x60\x18\x30\x30\x38\x70\x18\x60\x0c\xc0\x0f\xc0\x07\x80'\
b'\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00'\
b'\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00'\
b'\x00\x00\x7f\xfe\x7f\xfe\x00\x0c\x00\x1c\x00\x38\x00\x70\x00\xe0'\
b'\x00\xc0\x01\x80\x03\x00\x07\x00\x0e\x00\x1c\x00\x38\x00\x30\x00'\
b'\x7f\xfe\x7f\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x09\x00\x00\x00\x3e\x00\x3e\x00\x30\x00\x30\x00\x30\x00\x30\x00'\
b'\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00'\
b'\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x3e\x00\x3e\x00\x00\x00'\
b'\x00\x00\x08\x00\x00\xc0\xe0\x60\x60\x60\x30\x30\x30\x18\x18\x18'\
b'\x0c\x0c\x0c\x06\x06\x06\x07\x03\x00\x00\x00\x00\x09\x00\x00\x00'\
b'\x3e\x00\x3e\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00'\
b'\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00'\
b'\x06\x00\x06\x00\x06\x00\x3e\x00\x3e\x00\x00\x00\x00\x00\x13\x00'\
b'\x00\x00\x00\x01\xe0\x00\x03\xf0\x00\x07\x38\x00\x0e\x1c\x00\x1c'\
b'\x0e\x00\x38\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xf0'\
b'\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x30\x00\x18\x00'\
b'\x0c\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x80\x3f\xe0\x20\x60\x00\x30'\
b'\x00\x30\x0f\xf0\x3f\xf0\x70\x30\x60\x30\x60\x70\x70\xf0\x3f\xf0'\
b'\x1f\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00'\
b'\x00\x00\x30\x00\x30\x00\x30\x00\x30\x00\x33\xc0\x3f\xe0\x3c\x70'\
b'\x38\x38\x30\x18\x30\x18\x30\x18\x30\x18\x30\x18\x38\x38\x3c\x70'\
b'\x3f\xe0\x33\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\xc0\x1f\xe0'\
b'\x38\x20\x30\x00\x60\x00\x60\x00\x60\x00\x60\x00\x60\x00\x30\x00'\
b'\x38\x20\x1f\xe0\x07\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x0f\x00\x00\x00\x00\x30\x00\x30\x00\x30\x00\x30\x0f\x30'\
b'\x1f\xf0\x38\xf0\x70\x70\x60\x30\x60\x30\x60\x30\x60\x30\x60\x30'\
b'\x70\x70\x38\xf0\x1f\xf0\x0f\x30\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x07\xc0\x1f\xe0\x38\x30\x30\x18\x60\x18\x7f\xf8\x7f\xf8\x60\x00'\
b'\x60\x00\x30\x00\x38\x08\x1f\xf8\x07\xf0\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0f\x80\x1f\x80\x18\x00'\
b'\x18\x00\x7f\x00\x7f\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00'\
b'\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x0f\x30\x1f\xf0\x38\xf0\x70\x70\x60\x30\x60\x30'\
b'\x60\x30\x60\x30\x60\x30\x70\x70\x38\xf0\x1f\xf0\x0f\x30\x00\x30'\
b'\x00\x70\x10\xe0\x1f\xe0\x0f\x80\x00\x00\x0f\x00\x00\x00\x30\x00'\
b'\x30\x00\x30\x00\x30\x00\x33\xe0\x3f\xf0\x3c\x38\x38\x18\x30\x18'\
b'\x30\x18\x30\x18\x30\x18\x30\x18\x30\x18\x30\x18\x30\x18\x30\x18'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x30'\
b'\x30\x30\x00\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30'\
b'\x00\x00\x00\x00\x00\x00\x07\x00\x00\x18\x18\x18\x00\x18\x18\x18'\
b'\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\xf0\xe0\x00'\
b'\x0d\x00\x00\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x70\x30\xe0'\
b'\x31\xc0\x33\x80\x37\x00\x3e\x00\x3e\x00\x37\x00\x33\x80\x31\xc0'\
b'\x30\xe0\x30\x70\x30\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x06\x00\x00\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30'\
b'\x30\x30\x30\x30\x30\x30\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\xc3\xc0'\
b'\x3f\xef\xe0\x3c\x7c\x70\x38\x38\x30\x30\x30\x30\x30\x30\x30\x30'\
b'\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30'\
b'\x30\x30\x30\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x33\xe0\x3f\xf0\x3c\x38\x38\x18\x30\x18\x30\x18\x30\x18'\
b'\x30\x18\x30\x18\x30\x18\x30\x18\x30\x18\x30\x18\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x0f\xc0\x1f\xe0\x38\x70\x30\x30\x60\x18\x60\x18'\
b'\x60\x18\x60\x18\x60\x18\x30\x30\x38\x70\x1f\xe0\x0f\xc0\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x33\xc0\x3f\xe0\x3c\x70\x38\x38\x30\x18'\
b'\x30\x18\x30\x18\x30\x18\x30\x18\x38\x38\x3c\x70\x3f\xe0\x33\xc0'\
b'\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x00\x00\x0e\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x30\x1f\xf0\x38\xf0\x70\x70'\
b'\x60\x30\x60\x30\x60\x30\x60\x30\x60\x30\x70\x70\x38\xf0\x1f\xf0'\
b'\x0f\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x00\x09\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x80\x3f\x80\x3c\x00'\
b'\x38\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00'\
b'\x30\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x80\x3f\xc0'\
b'\x70\x40\x60\x00\x60\x00\x7e\x00\x1f\xc0\x03\xe0\x00\x60\x00\x60'\
b'\x40\xe0\x7f\xc0\x3f\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x09\x00\x00\x00\x30\x00\x30\x00\x30\x00\x30\x00\xff\x00'\
b'\xff\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00'\
b'\x30\x00\x30\x00\x3f\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x30\x18\x30\x18\x30\x18\x30\x18\x30\x18\x30\x18\x30\x18\x30\x18'\
b'\x30\x18\x30\x38\x38\x78\x1f\xf8\x0f\x98\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x60\x18\x30\x30\x30\x30\x30\x30\x18\x60\x18\x60\x18\x60'\
b'\x0c\xc0\x0c\xc0\x0f\xc0\x07\x80\x07\x80\x07\x80\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xe0\xc0\x60\xe0\xc0\x31'\
b'\xb1\x80\x31\xb1\x80\x31\xb1\x80\x31\xb1\x80\x1b\x1b\x00\x1b\x1b'\
b'\x00\x1b\x1b\x00\x1b\x1b\x00\x0e\x0e\x00\x0e\x0e\x00\x0e\x0e\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x38'\
b'\x38\x70\x18\x60\x0c\xc0\x0f\xc0\x07\x80\x07\x00\x07\x80\x0d\xc0'\
b'\x1c\xe0\x18\x60\x30\x70\x70\x38\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x60\x18\x30\x30\x30\x30\x30\x70\x18\x60\x18\x60\x0c\xc0\x0c\xc0'\
b'\x0c\xc0\x07\x80\x07\x80\x07\x80\x03\x00\x03\x00\x06\x00\x06\x00'\
b'\x3c\x00\x3c\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x7f\xe0\x7f\xe0\x00\xe0\x01\xc0\x03\x80\x03\x00\x06\x00'\
b'\x0e\x00\x1c\x00\x38\x00\x70\x00\x7f\xe0\x7f\xe0\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x01\xe0\x03\xe0'\
b'\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x07\x00\x3e\x00'\
b'\x3e\x00\x07\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00'\
b'\x03\x00\x03\xe0\x01\xe0\x00\x00\x00\x00\x08\x00\x00\x18\x18\x18'\
b'\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18'\
b'\x18\x18\x18\x18\x0f\x00\x00\x00\x1e\x00\x1f\x00\x03\x00\x03\x00'\
b'\x03\x00\x03\x00\x03\x00\x03\x00\x03\x80\x01\xf0\x01\xf0\x03\x80'\
b'\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x1f\x00'\
b'\x1e\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x0f\x01\x00\x1f\xc3\x00\x30\xfe\x00\x00\x3c\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
_index =\
b'\x00\x00\x32\x00\x4c\x00\x7e\x00\xb0\x00\xfa\x00\x2c\x01\x76\x01'\
b'\xc0\x01\xda\x01\x0c\x02\x3e\x02\x70\x02\xba\x02\xd4\x02\xee\x02'\
b'\x08\x03\x22\x03\x54\x03\x86\x03\xb8\x03\xea\x03\x1c\x04\x4e\x04'\
b'\x80\x04\xb2\x04\xe4\x04\x16\x05\x30\x05\x4a\x05\x94\x05\xde\x05'\
b'\x28\x06\x5a\x06\xa4\x06\xd6\x06\x08\x07\x3a\x07\x84\x07\xb6\x07'\
b'\xe8\x07\x32\x08\x7c\x08\x96\x08\xb0\x08\xe2\x08\x14\x09\x5e\x09'\
b'\xa8\x09\xf2\x09\x24\x0a\x6e\x0a\xa0\x0a\xd2\x0a\x04\x0b\x4e\x0b'\
b'\x80\x0b\xca\x0b\xfc\x0b\x2e\x0c\x60\x0c\x92\x0c\xac\x0c\xde\x0c'\
b'\x28\x0d\x5a\x0d\x8c\x0d\xbe\x0d\xf0\x0d\x22\x0e\x54\x0e\x86\x0e'\
b'\xb8\x0e\xea\x0e\x1c\x0f\x36\x0f\x50\x0f\x82\x0f\x9c\x0f\xe6\x0f'\
b'\x18\x10\x4a\x10\x7c\x10\xae\x10\xe0\x10\x12\x11\x44\x11\x76\x11'\
b'\xa8\x11\xf2\x11\x24\x12\x56\x12\x88\x12\xba\x12\xd4\x12\x06\x13'\
b'\x50\x13'
_mvfont = memoryview(_font)
_mvi = memoryview(_index)
def get_ch(ch):
mvi = _mvi
mvfont = _mvfont
oc = ord(ch)
ioff = 2 * (oc - 32 + 1) if oc >= 32 and oc <= 126 else 0
doff = mvi[ioff] | (mvi[ioff+1] << 8)
width = mvfont[doff] | (mvfont[doff+1] << 8)
next_offs = doff + 2 + ((width - 1)//8 + 1) * 24
return _mvfont[doff + 2:next_offs], 24, width