From ed3f1c1e7140ccb927556912c813f3a8a7d2c108 Mon Sep 17 00:00:00 2001 From: thefenriswolf Date: Wed, 17 Mar 2021 18:05:57 +0100 Subject: [PATCH] fonts: add 18pt font Signed-off-by: thefenriswolf [daniel@redfelineninja.org.uk: fixed up the manifest] Signed-off-by: Daniel Thompson --- wasp/boards/manifest_240x240.py | 1 + wasp/fonts/__init__.py | 1 + wasp/fonts/sans18.py | 264 ++++++++++++++++++++++++++++++++ 3 files changed, 266 insertions(+) create mode 100644 wasp/fonts/sans18.py diff --git a/wasp/boards/manifest_240x240.py b/wasp/boards/manifest_240x240.py index 048837c..ccd4f64 100644 --- a/wasp/boards/manifest_240x240.py +++ b/wasp/boards/manifest_240x240.py @@ -28,6 +28,7 @@ manifest = ( 'fonts/__init__.py', 'fonts/clock.py', 'fonts/clock_dual.py', + 'fonts/sans18.py', 'fonts/sans24.py', 'fonts/sans28.py', 'fonts/sans36.py', diff --git a/wasp/fonts/__init__.py b/wasp/fonts/__init__.py index a65ada3..915c686 100644 --- a/wasp/fonts/__init__.py +++ b/wasp/fonts/__init__.py @@ -1,6 +1,7 @@ # SPDX-License-Identifier: LGPL-3.0-or-later # Copyright (C) 2020 Daniel Thompson +import fonts.sans18 as sans18 import fonts.sans24 as sans24 import fonts.sans28 as sans28 import fonts.sans36 as sans36 diff --git a/wasp/fonts/sans18.py b/wasp/fonts/sans18.py new file mode 100644 index 0000000..c598fe9 --- /dev/null +++ b/wasp/fonts/sans18.py @@ -0,0 +1,264 @@ +# Code generated by font_to_py.py. +# Font: DejaVuSans.ttf +# Cmd: tools/micropython-font-to-py/font_to_py.py /usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf --xmap 18 wasp/fonts/sans18.py +version = '0.33' + +def height(): + return 18 + +def baseline(): + return 14 + +def max_width(): + return 19 + +def hmap(): + return True + +def reverse(): + return False + +def monospaced(): + return False + +def min_ch(): + return 32 + +def max_ch(): + return 126 + +_font =\ +b'\x0a\x00\x00\x00\x3c\x00\x7f\x00\x43\x00\x03\x00\x03\x00\x06\x00'\ +b'\x0c\x00\x18\x00\x18\x00\x18\x00\x00\x00\x18\x00\x18\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x18\x18\x18'\ +b'\x18\x18\x18\x18\x18\x18\x00\x00\x18\x18\x00\x00\x00\x00\x08\x00'\ +b'\x00\x66\x66\x66\x66\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x0f\x00\x02\x20\x02\x20\x06\x60\x06\x40\x3f\xf8\x3f\xf8'\ +b'\x04\xc0\x0c\x80\x7f\xf0\x7f\xf0\x09\x80\x19\x80\x19\x00\x11\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x04\x00\x04\x00\x1f\x00'\ +b'\x3f\x80\x74\x80\x64\x00\x7c\x00\x3f\x00\x0f\x80\x04\xc0\x04\xc0'\ +b'\x45\xc0\x7f\x80\x3f\x00\x04\x00\x04\x00\x04\x00\x00\x00\x11\x00'\ +b'\x00\x00\x00\x3c\x08\x00\x66\x10\x00\x66\x30\x00\x66\x20\x00\x66'\ +b'\x40\x00\x66\x40\x00\x3c\x9e\x00\x01\x33\x00\x01\x33\x00\x02\x33'\ +b'\x00\x06\x33\x00\x04\x33\x00\x08\x1e\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x07\x80\x0f\xc0\x18\x40'\ +b'\x18\x00\x1c\x00\x1e\x00\x37\x30\x63\xb0\x61\xe0\x60\xc0\x70\xe0'\ +b'\x3f\xf0\x1f\x38\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x60'\ +b'\x60\x60\x60\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x07\x00\x0c\x08\x18\x18\x10\x30\x30\x30\x30\x30\x30\x10\x18\x18'\ +b'\x08\x0c\x00\x00\x07\x00\x60\x20\x30\x30\x10\x18\x18\x18\x18\x18'\ +b'\x18\x10\x30\x30\x20\x60\x00\x00\x09\x00\x00\x00\x08\x00\x49\x00'\ +b'\x2a\x00\x1c\x00\x1c\x00\x2a\x00\x49\x00\x08\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00'\ +b'\x00\x00\x00\x00\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x3f\xfc'\ +b'\x3f\xfc\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x30\x30\x20\x40\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x7c\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x30\x00\x00\x00\x00'\ +b'\x06\x00\x00\x0c\x0c\x18\x18\x18\x38\x30\x30\x30\x70\x60\x60\x60'\ +b'\xc0\xc0\x00\x00\x0b\x00\x00\x00\x1f\x00\x3f\x80\x31\x80\x60\xc0'\ +b'\x60\xc0\x60\xc0\x60\xc0\x60\xc0\x60\xc0\x60\xc0\x31\x80\x3f\x80'\ +b'\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x0e\x00'\ +b'\x3e\x00\x36\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00'\ +b'\x06\x00\x06\x00\x3f\xc0\x3f\xc0\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x0b\x00\x00\x00\x3e\x00\x7f\x00\x43\x80\x01\x80\x01\x80\x03\x80'\ +b'\x03\x00\x06\x00\x0c\x00\x18\x00\x30\x00\x7f\x80\x7f\x80\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x3f\x00\x7f\x80\x41\xc0'\ +b'\x00\xc0\x01\xc0\x1f\x80\x1f\x80\x01\xc0\x00\xc0\x00\xc0\x41\xc0'\ +b'\x7f\x80\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00'\ +b'\x03\x80\x03\x80\x05\x80\x0d\x80\x09\x80\x11\x80\x31\x80\x21\x80'\ +b'\x7f\xe0\x7f\xe0\x01\x80\x01\x80\x01\x80\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x0b\x00\x00\x00\x3f\x00\x3f\x00\x30\x00\x30\x00\x3e\x00'\ +b'\x3f\x00\x23\x80\x01\x80\x01\x80\x01\x80\x43\x80\x7f\x00\x3e\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x0f\x00\x1f\x80'\ +b'\x38\x80\x70\x00\x60\x00\x6f\x00\x7f\x80\x71\xc0\x60\xc0\x60\xc0'\ +b'\x31\xc0\x3f\x80\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00'\ +b'\x00\x00\x7f\x80\x7f\x80\x03\x00\x03\x00\x03\x00\x07\x00\x06\x00'\ +b'\x06\x00\x0e\x00\x0c\x00\x0c\x00\x1c\x00\x18\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x0b\x00\x00\x00\x1f\x00\x3f\x80\x71\xc0\x60\xc0'\ +b'\x71\xc0\x3f\x80\x3f\x80\x71\xc0\x60\xc0\x60\xc0\x71\xc0\x3f\x80'\ +b'\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x1f\x00'\ +b'\x3f\x80\x71\x80\x60\xc0\x60\xc0\x71\xc0\x3f\xc0\x1e\xc0\x00\xc0'\ +b'\x01\xc0\x23\x80\x3f\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x06\x00\x00\x00\x00\x00\x00\x30\x30\x00\x00\x00\x00\x00\x30\x30'\ +b'\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x30\x30\x00\x00\x00'\ +b'\x00\x00\x30\x30\x20\x40\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x08\x00\x78\x01\xf0\x0f\x80\x3e\x00\x3e\x00\x0f\x80'\ +b'\x01\xf0\x00\x78\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xf8\x3f\xf8\x00\x00'\ +b'\x00\x00\x3f\xf8\x3f\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00'\ +b'\x3c\x00\x1f\x00\x03\xe0\x00\xf8\x00\xf8\x03\xe0\x1f\x00\x3c\x00'\ +b'\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x3c\x00'\ +b'\x7f\x00\x43\x00\x03\x00\x03\x00\x06\x00\x0c\x00\x18\x00\x18\x00'\ +b'\x18\x00\x00\x00\x18\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x12\x00\x00\x00\x00\x03\xf0\x00\x0f\xfc\x00\x1e\x0e\x00\x38\x03'\ +b'\x00\x30\x01\x80\x71\xb1\x80\x63\xf1\x80\x63\x31\x80\x63\x33\x00'\ +b'\x63\xfe\x00\x71\xb8\x00\x30\x00\x00\x38\x00\x00\x1c\x08\x00\x0f'\ +b'\xf8\x00\x03\xe0\x00\x00\x00\x00\x0c\x00\x00\x00\x06\x00\x06\x00'\ +b'\x0f\x00\x0f\x00\x19\x80\x19\x80\x19\x80\x30\xc0\x3f\xc0\x7f\xe0'\ +b'\x60\x60\x60\x60\xc0\x30\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00'\ +b'\x00\x00\x3f\x80\x3f\xc0\x30\xc0\x30\xc0\x30\xc0\x3f\x80\x3f\x80'\ +b'\x30\xc0\x30\x60\x30\x60\x30\xe0\x3f\xc0\x3f\x80\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x0d\x00\x00\x00\x07\xe0\x1f\xf0\x38\x10\x30\x00'\ +b'\x60\x00\x60\x00\x60\x00\x60\x00\x60\x00\x30\x00\x38\x10\x1f\xf0'\ +b'\x07\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x3f\x80'\ +b'\x3f\xe0\x30\x70\x30\x38\x30\x18\x30\x18\x30\x18\x30\x18\x30\x18'\ +b'\x30\x38\x30\x70\x3f\xe0\x3f\x80\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x0b\x00\x00\x00\x3f\xc0\x3f\xc0\x30\x00\x30\x00\x30\x00\x3f\xc0'\ +b'\x3f\xc0\x30\x00\x30\x00\x30\x00\x30\x00\x3f\xc0\x3f\xc0\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x3f\xc0\x3f\xc0\x30\x00'\ +b'\x30\x00\x30\x00\x3f\x80\x3f\x80\x30\x00\x30\x00\x30\x00\x30\x00'\ +b'\x30\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00'\ +b'\x07\xe0\x1f\xf0\x38\x10\x30\x00\x60\x00\x61\xf0\x61\xf0\x60\x30'\ +b'\x60\x30\x30\x30\x38\x30\x1f\xe0\x0f\xc0\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x0e\x00\x00\x00\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30'\ +b'\x3f\xf0\x3f\xf0\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x30\x30\x30\x30\x30'\ +b'\x30\x30\x30\x30\x30\x30\x30\x30\x00\x00\x00\x00\x07\x00\x00\x18'\ +b'\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x38\xf0\xe0'\ +b'\x0d\x00\x00\x00\x30\x60\x30\xc0\x31\x80\x33\x00\x36\x00\x3c\x00'\ +b'\x3c\x00\x36\x00\x33\x00\x31\x80\x30\xc0\x30\x60\x30\x30\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x0a\x00\x00\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'\x3f\xc0\x3f\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00'\ +b'\x38\x1c\x3c\x3c\x3c\x3c\x36\x2c\x36\x6c\x36\x6c\x33\xcc\x33\xcc'\ +b'\x31\x8c\x31\x8c\x30\x0c\x30\x0c\x30\x0c\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x0e\x00\x00\x00\x38\x30\x38\x30\x3c\x30\x3c\x30\x36\x30'\ +b'\x36\x30\x33\x30\x31\xb0\x31\xb0\x30\xf0\x30\xf0\x30\x70\x30\x70'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x0f\xc0\x1f\xe0'\ +b'\x38\x70\x30\x30\x60\x18\x60\x18\x60\x18\x60\x18\x60\x18\x30\x30'\ +b'\x38\x70\x1f\xe0\x0f\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00'\ +b'\x00\x00\x3f\x00\x3f\x80\x31\xc0\x30\xc0\x30\xc0\x31\xc0\x3f\x80'\ +b'\x3f\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x0e\x00\x00\x00\x0f\xc0\x1f\xe0\x38\x70\x30\x30'\ +b'\x60\x18\x60\x18\x60\x18\x60\x18\x60\x18\x30\x30\x38\x70\x1f\xe0'\ +b'\x0f\xc0\x00\xc0\x00\x60\x00\x00\x00\x00\x0d\x00\x00\x00\x3f\x00'\ +b'\x3f\x80\x31\xc0\x30\xc0\x30\xc0\x31\xc0\x3f\x80\x3f\x00\x31\x80'\ +b'\x30\xc0\x30\xc0\x30\x60\x30\x70\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x0b\x00\x00\x00\x1f\x00\x3f\x80\x70\x80\x60\x00\x60\x00\x3e\x00'\ +b'\x1f\x80\x01\xc0\x00\xc0\x00\xc0\x41\xc0\x7f\x80\x3f\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\xff\xf0\xff\xf0\x06\x00'\ +b'\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00'\ +b'\x06\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00'\ +b'\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30'\ +b'\x30\x30\x30\x30\x18\x60\x1f\xe0\x0f\xc0\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x0c\x00\x00\x00\xc0\x30\x60\x60\x60\x60\x60\x60\x30\xc0'\ +b'\x30\xc0\x19\x80\x19\x80\x19\x80\x0f\x00\x0f\x00\x06\x00\x06\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x60\xe0\xc0'\ +b'\x60\xe0\xc0\x31\xb1\x80\x31\xb1\x80\x31\xb1\x80\x31\xb1\x80\x1b'\ +b'\x1b\x00\x1b\x1b\x00\x1b\x1b\x00\x1b\x1b\x00\x0e\x0e\x00\x0e\x0e'\ +b'\x00\x0e\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x0d\x00\x00\x00\x38\x70\x18\x60\x1c\xc0\x0d\xc0\x07\x80\x07\x00'\ +b'\x07\x00\x07\x80\x0d\x80\x1c\xc0\x18\xe0\x30\x60\x70\x70\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\xe0\x70\x60\x60\x30\xc0'\ +b'\x19\x80\x19\x80\x0f\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00'\ +b'\x06\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00'\ +b'\x7f\xf0\x7f\xf0\x00\xe0\x01\xc0\x01\x80\x03\x80\x07\x00\x0e\x00'\ +b'\x0c\x00\x18\x00\x38\x00\x7f\xf0\x7f\xf0\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x07\x00\x78\x78\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60'\ +b'\x60\x60\x78\x78\x00\x00\x06\x00\x00\xc0\xc0\x60\x60\x60\x70\x30'\ +b'\x30\x30\x38\x18\x18\x18\x0c\x0c\x00\x00\x07\x00\x3c\x3c\x0c\x0c'\ +b'\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x3c\x3c\x00\x00\x0f\x00'\ +b'\x00\x00\x03\x80\x06\xc0\x0c\x60\x18\x30\x30\x18\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\x09\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\xff\x80\xff\x80\x00\x00\x00\x00\x09\x00\x30\x00\x18\x00'\ +b'\x0c\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'\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x3f\x00\x23\x80'\ +b'\x01\x80\x1f\x80\x7f\x80\x61\x80\x63\x80\x7f\x80\x3d\x80\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x0b\x00\x30\x00\x30\x00\x30\x00\x30\x00'\ +b'\x37\x80\x3f\xc0\x38\xe0\x30\x60\x30\x60\x30\x60\x30\x60\x38\xe0'\ +b'\x3f\xc0\x37\x80\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x0f\x00\x3f\x80\x30\x80\x60\x00\x60\x00'\ +b'\x60\x00\x60\x00\x30\x80\x3f\x80\x0f\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x0b\x00\x00\xc0\x00\xc0\x00\xc0\x00\xc0\x1e\xc0\x3f\xc0'\ +b'\x71\xc0\x60\xc0\x60\xc0\x60\xc0\x60\xc0\x71\xc0\x3f\xc0\x1e\xc0'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x0f\x80\x3f\xc0\x30\xe0\x60\x60\x7f\xe0\x7f\xe0\x60\x00'\ +b'\x30\x20\x3f\xe0\x0f\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00'\ +b'\x1e\x3e\x30\x30\xfe\xfe\x30\x30\x30\x30\x30\x30\x30\x30\x00\x00'\ +b'\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\xc0\x3f\xc0'\ +b'\x71\xc0\x60\xc0\x60\xc0\x60\xc0\x60\xc0\x71\xc0\x3f\xc0\x1e\xc0'\ +b'\x00\xc0\x21\x80\x3f\x80\x1f\x00\x0b\x00\x30\x00\x30\x00\x30\x00'\ +b'\x30\x00\x37\x80\x3f\x80\x39\xc0\x30\xc0\x30\xc0\x30\xc0\x30\xc0'\ +b'\x30\xc0\x30\xc0\x30\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00'\ +b'\x30\x30\x00\x00\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x00\x00'\ +b'\x00\x00\x05\x00\x30\x30\x00\x00\x30\x30\x30\x30\x30\x30\x30\x30'\ +b'\x30\x30\x30\x30\xf0\xe0\x0b\x00\x30\x00\x30\x00\x30\x00\x30\x00'\ +b'\x30\xc0\x31\x80\x33\x00\x36\x00\x3c\x00\x3c\x00\x36\x00\x33\x00'\ +b'\x31\x80\x30\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x30\x30'\ +b'\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x00\x00\x00\x00'\ +b'\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x9e'\ +b'\x00\x3f\xbe\x00\x38\xe3\x00\x30\xc3\x00\x30\xc3\x00\x30\xc3\x00'\ +b'\x30\xc3\x00\x30\xc3\x00\x30\xc3\x00\x30\xc3\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x37\x80\x3f\x80\x39\xc0\x30\xc0\x30\xc0\x30\xc0\x30\xc0'\ +b'\x30\xc0\x30\xc0\x30\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x3f\xc0\x30\xc0\x60\x60'\ +b'\x60\x60\x60\x60\x60\x60\x30\xc0\x3f\xc0\x0f\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x80'\ +b'\x3f\xc0\x38\xe0\x30\x60\x30\x60\x30\x60\x30\x60\x38\xe0\x3f\xc0'\ +b'\x37\x80\x30\x00\x30\x00\x30\x00\x30\x00\x0b\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x1e\xc0\x3f\xc0\x71\xc0\x60\xc0\x60\xc0\x60\xc0'\ +b'\x60\xc0\x71\xc0\x3f\xc0\x1e\xc0\x00\xc0\x00\xc0\x00\xc0\x00\xc0'\ +b'\x08\x00\x00\x00\x00\x00\x37\x3f\x38\x30\x30\x30\x30\x30\x30\x30'\ +b'\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x3e\x7f\x61\x70\x3e\x0f'\ +b'\x03\x43\x7f\x3e\x00\x00\x00\x00\x07\x00\x00\x30\x30\x30\x7e\x7e'\ +b'\x30\x30\x30\x30\x30\x30\x3e\x1e\x00\x00\x00\x00\x0b\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x30\xc0\x30\xc0\x30\xc0\x30\xc0\x30\xc0'\ +b'\x30\xc0\x30\xc0\x39\xc0\x1f\xc0\x1e\xc0\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x60\x60\x60'\ +b'\x30\xc0\x30\xc0\x19\x80\x19\x80\x19\x80\x0f\x00\x0f\x00\x06\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x31\xc6\x31\xc6\x31\x46\x1b\x6c\x1b\x6c\x1b\x6c\x1a\x2c'\ +b'\x0e\x38\x0e\x38\x0e\x38\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x70\xe0\x30\xc0\x19\x80\x19\x80'\ +b'\x0f\x00\x0f\x00\x19\x80\x19\x80\x30\xc0\x70\xe0\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x60'\ +b'\x60\x60\x30\xc0\x30\xc0\x19\x80\x19\x80\x0f\x00\x0f\x00\x06\x00'\ +b'\x06\x00\x06\x00\x0c\x00\x3c\x00\x38\x00\x09\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x7f\x80\x7f\x80\x03\x00\x06\x00\x0e\x00\x1c\x00'\ +b'\x18\x00\x38\x00\x7f\x80\x7f\x80\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x0b\x00\x03\xc0\x07\xc0\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00'\ +b'\x3c\x00\x3c\x00\x0e\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00'\ +b'\x07\xc0\x03\xc0\x00\x00\x06\x00\x30\x30\x30\x30\x30\x30\x30\x30'\ +b'\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x0b\x00\x3c\x00\x3e\x00'\ +b'\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x03\xc0\x03\xc0\x07\x00'\ +b'\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x3e\x00\x3c\x00\x00\x00'\ +b'\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x08'\ +b'\x3f\xf8\x21\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00' + +_index =\ +b'\x00\x00\x26\x00\x3a\x00\x4e\x00\x62\x00\x88\x00\xae\x00\xe6\x00'\ +b'\x0c\x01\x20\x01\x34\x01\x48\x01\x6e\x01\x94\x01\xa8\x01\xbc\x01'\ +b'\xd0\x01\xe4\x01\x0a\x02\x30\x02\x56\x02\x7c\x02\xa2\x02\xc8\x02'\ +b'\xee\x02\x14\x03\x3a\x03\x60\x03\x74\x03\x88\x03\xae\x03\xd4\x03'\ +b'\xfa\x03\x20\x04\x58\x04\x7e\x04\xa4\x04\xca\x04\xf0\x04\x16\x05'\ +b'\x3c\x05\x62\x05\x88\x05\x9c\x05\xb0\x05\xd6\x05\xfc\x05\x22\x06'\ +b'\x48\x06\x6e\x06\x94\x06\xba\x06\xe0\x06\x06\x07\x2c\x07\x52\x07'\ +b'\x78\x07\xb0\x07\xd6\x07\xfc\x07\x22\x08\x36\x08\x4a\x08\x5e\x08'\ +b'\x84\x08\xaa\x08\xd0\x08\xf6\x08\x1c\x09\x42\x09\x68\x09\x8e\x09'\ +b'\xa2\x09\xc8\x09\xee\x09\x02\x0a\x16\x0a\x3c\x0a\x50\x0a\x88\x0a'\ +b'\xae\x0a\xd4\x0a\xfa\x0a\x20\x0b\x34\x0b\x48\x0b\x5c\x0b\x82\x0b'\ +b'\xa8\x0b\xce\x0b\xf4\x0b\x1a\x0c\x40\x0c\x66\x0c\x7a\x0c\xa0\x0c'\ +b'\xc6\x0c' + +_mvfont = memoryview(_font) +_mvi = memoryview(_index) +ifb = lambda l : l[0] | (l[1] << 8) + +def get_ch(ch): + oc = ord(ch) + ioff = 2 * (oc - 32 + 1) if oc >= 32 and oc <= 126 else 0 + doff = ifb(_mvi[ioff : ]) + width = ifb(_mvfont[doff : ]) + + next_offs = doff + 2 + ((width - 1)//8 + 1) * 18 + return _mvfont[doff + 2:next_offs], 18, width +