Adafruit_CircuitPython_fram.../utils/font_to_bin.py

1556 lines
30 KiB
Python

# SPDX-FileCopyrightText: 2018 Tony DiCola for Adafruit Industries
#
# SPDX-License-Identifier: MIT
""" Quick script to convert Adafruit GFX font into binary file.
Taken from glcdfont.c from Adafruit GFX Arduino library. """
# fmt: off
WIDTH = 5
HEIGHT = 8
FONT = ( # Code Page 437 https://www.ascii-codes.com/
"........", # 0 0x00 NUL (Null)
"........",
"........",
"........",
"........",
"..#####.", # 1 0x01 SOH (Start of Header)
".#.##.##",
".#..####",
".#.##.##",
"..#####.",
"..#####.", # 2 0x02 STX (Start of Text)
".##.#.##",
".#..####",
".##.#.##",
"..#####.",
"...###..", # 3 0x03 ETX (End of Text)
"..#####.",
".#####..",
"..#####.",
"...###..",
"...##...", # 4 0x04 EOT (End of Transmission)
"..####..",
".######.",
"..####..",
"...##...",
"...###..", # 5 0x05 ENQ (Enquiry)
".#.#.###",
".#####.#",
".#.#.###",
"...###..",
"...###..", # 6 0x06 ACK (Acknowledge)
".#.####.",
".#######",
".#.####.",
"...###..",
"........", # 7 0x07 BEL (Bell)
"...##...",
"..####..",
"...##...",
"........",
"########", # 8 0x08 BS (BackSpace)
"###..###",
"##....##",
"###..###",
"########",
"........", # 9 0x09 HT (Horizontal Tabulation)
"...##...",
"..#..#..",
"...##...",
"........",
"########", # 10 0x0A LF (Line Feed)
"###..###",
"##.##.##",
"###..###",
"########",
"..##....", # 11 0x0B VT (Vertical Tabulation)
".#..#...",
"..###.#.",
".....##.",
"....###.",
"..#..##.", # 12 0x0C FF (Form Feed)
"..#.#..#",
".####..#",
"..#.#..#",
"..#..##.",
".#......", # 13 0x0D CR (Carriage Return)
".#######",
".....#.#",
".....#.#",
".....###",
".#......", # 14 0x0E SO (Shift Out)
".#######",
".....#.#",
"..#..#.#",
"..######",
".#.##.#.", # 15 0x0F SI (Shift In)
"..####..",
"###..###",
"..####..",
".#.##.#.",
".#######", # 16 0x10 DLE (Data Link Escape)
"..#####.",
"...###..",
"...###..",
"....#...",
"....#...", # 17 0x11 DC1 (Device Control 1)
"...###..",
"...###..",
"..#####.",
".#######",
"...#.#..", # 18 0x12 DC2 (Device Control 2)
"..#...#.",
".#######",
"..#...#.",
"...#.#..",
".#.#####", # 19 0x13 DC3 (Device Control 3)
".#.#####",
"........",
".#.#####",
".#.#####",
".....##.", # 20 0x14 DC4 (Device Control 4)
"....#..#",
".#######",
".......#",
".#######",
"........", # 21 0x15 NAK (Negative Acknowledge)
".##..##.",
"#...#..#",
"#..#.#.#",
".##.#.#.",
".##.....", # 22 0x16 SYN (Synchronous Idle)
".##.....",
".##.....",
".##.....",
".##.....",
"#..#.#..", # 23 0x17 ETB (End of Transmission Block)
"#.#...#.",
"########",
"#.#...#.",
"#..#.#..",
"....#...", # 24 0x18 CAN (Cancel)
".....#..",
".######.",
".....#..",
"....#...",
"...#....", # 25 0x19 EM (End of Medium)
"..#.....",
".######.",
"..#.....",
"...#....",
"....#...", # 26 0x1A SUB (Substitute)
"....#...",
"..#.#.#.",
"...###..",
"....#...",
"....#...", # 27 0x1B ESC (Escape)
"...###..",
"..#.#.#.",
"....#...",
"....#...",
"...####.", # 28 0x1C FS (File Separator)
"...#....",
"...#....",
"...#....",
"...#....",
"....##..", # 29 0x1D GS (Group Separator)
"...####.",
"....##..",
"...####.",
"....##..",
"..##....", # 30 0x1E RS (Record Separator)
"..###...",
"..#####.",
"..###...",
"..##....",
".....##.", # 31 0x1F US (Unit Separator)
"....###.",
"..#####.",
"....###.",
".....##.",
"........", # 32 0x20 Space
"........",
"........",
"........",
"........",
"........", # 33 0x21 ! Exclamation mark
"........",
".#.#####",
"........",
"........",
"........", # 34 0x22 " Quotation Mark
".....###",
"........",
".....###",
"........",
"...#.#..", # 35 0x23
".#######",
"...#.#..",
".#######",
"...#.#..",
"..#..#..", # 36 0x24 $ Dollar
"..#.#.#.",
".#######",
"..#.#.#.",
"...#..#.",
"..#...##", # 37 0x25 % Percent
"...#..##",
"....#...",
".##..#..",
".##...#.",
"..##.##.", # 38 0x26 & Ampersand
".#..#..#",
".#.#.##.",
"..#.....",
".#.#....",
"........", # 39 0x27 ' Apostrophe
"....#...",
".....###",
"......##",
"........",
"........", # 40 0x28 ( Open bracket
"...###..",
"..#...#.",
".#.....#",
"........",
"........", # 41 0x29 ) Close bracket
".#.....#",
"..#...#.",
"...###..",
"........",
"..#.#.#.", # 42 0x2A * Asterisk
"...###..",
".#######",
"...###..",
"..#.#.#.",
"....#...", # 43 0x2B + Plus
"....#...",
"..#####.",
"....#...",
"....#...",
"........", # 44 0x2C , Comma
"#.......",
".###....",
"..##....",
"........",
"....#...", # 45 0x2D - Dash
"....#...",
"....#...",
"....#...",
"....#...",
"........", # 46 0x2E . Full stop
"........",
".##.....",
".##.....",
"........",
"..#.....", # 47 0x2F / Slash
"...#....",
"....#...",
".....#..",
"......#.",
"..#####.", # 48 0x30 0 Zero
".#.#...#",
".#..#..#",
".#...#.#",
"..#####.",
"........", # 49 0x31 1 One
".#....#.",
".#######",
".#......",
"........",
".###..#.", # 50 0x32 2 Two
".#..#..#",
".#..#..#",
".#..#..#",
".#...##.",
"..#....#", # 51 0x33 3 Three
".#.....#",
".#..#..#",
".#..##.#",
"..##..##",
"...##...", # 52 0x34 4 Four
"...#.#..",
"...#..#.",
".#######",
"...#....",
"..#..###", # 53 0x35 5 Five
".#...#.#",
".#...#.#",
".#...#.#",
"..###..#",
"..####..", # 54 0x36 6 Six
".#..#.#.",
".#..#..#",
".#..#..#",
"..##...#",
".#.....#", # 55 0x37 7 Seven
"..#....#",
"...#...#",
"....#..#",
".....###",
"..##.##.", # 56 0x38 8 Eight
".#..#..#",
".#..#..#",
".#..#..#",
"..##.##.",
".#...##.", # 57 0x39 9 Nine
".#..#..#",
".#..#..#",
"..#.#..#",
"...####.",
"........", # 58 0x3A : Colon
"........",
"...#.#..",
"........",
"........",
"........", # 59 0x3B ; Semicolon
".#......",
"..##.#..",
"........",
"........",
"........", # 60 0x3C < Less than
"....#...",
"...#.#..",
"..#...#.",
".#.....#",
"...#.#..", # 61 0x3D = Equals sign
"...#.#..",
"...#.#..",
"...#.#..",
"...#.#..",
"........", # 62 0x3E > Greater than
".#.....#",
"..#...#.",
"...#.#..",
"....#...",
"......#.", # 63 0x3F ? Question mark
".......#",
".#.##..#",
"....#..#",
".....##.",
"..#####.", # 64 0x40 @ At
".#.....#",
".#.###.#",
".#.##..#",
".#..###.",
".#####..", # 65 0x41 A Upper case A
"...#..#.",
"...#...#",
"...#..#.",
".#####..",
".#######", # 66 0x42 B Upper case B
".#..#..#",
".#..#..#",
".#..#..#",
"..##.##.",
"..#####.", # 67 0x43 C Upper case C
".#.....#",
".#.....#",
".#.....#",
"..#...#.",
".#######", # 68 0x44 D Upper case D
".#.....#",
".#.....#",
".#.....#",
"..#####.",
".#######", # 69 0x45 E Upper case E
".#..#..#",
".#..#..#",
".#..#..#",
".#.....#",
".#######", # 70 0x46 F Upper case F
"....#..#",
"....#..#",
"....#..#",
".......#",
"..#####.", # 71 0x47 G Upper case G
".#.....#",
".#.....#",
".#.#...#",
".###..##",
".#######", # 72 0x48 H Upper case H
"....#...",
"....#...",
"....#...",
".#######",
"........", # 73 0x49 I Upper case I
".#.....#",
".#######",
".#.....#",
"........",
"..#.....", # 74 0x4A J Upper case J
".#......",
".#.....#",
"..######",
".......#",
".#######", # 75 0x4B K Upper case K
"....#...",
"...#.#..",
"..#...#.",
".#.....#",
".#######", # 76 0x4C L Upper case L
".#......",
".#......",
".#......",
".#......",
".#######", # 77 0x4D M Upper case M
"......#.",
"...###..",
"......#.",
".#######",
".#######", # 78 0x4E N Upper case N
".....#..",
"....#...",
"...#....",
".#######",
"..#####.", # 79 0x4F O Upper case O
".#.....#",
".#.....#",
".#.....#",
"..#####.",
".#######", # 80 0x50 P Upper case P
"....#..#",
"....#..#",
"....#..#",
".....##.",
"..#####.", # 81 0x51 Q Upper case Q
".#.....#",
".#.#...#",
"..#....#",
".#.####.",
".#######", # 82 0x52 R Upper case R
"....#..#",
"...##..#",
"..#.#..#",
".#...##.",
"..#..##.", # 83 0x53 S Upper case S
".#..#..#",
".#..#..#",
".#..#..#",
"..##..#.",
"......##", # 84 0x54 T Upper case T
".......#",
".#######",
".......#",
"......##",
"..######", # 85 0x55 U Upper case U
".#......",
".#......",
".#......",
"..######",
"...#####", # 86 0x56 V Upper case V
"..#.....",
".#......",
"..#.....",
"...#####",
"..######", # 87 0x57 W Upper case W
".#......",
"..###...",
".#......",
"..######",
".##...##", # 88 0x58 X Upper case X
"...#.#..",
"....#...",
"...#.#..",
".##...##",
"......##", # 89 0x59 Y Upper case Y
".....#..",
".####...",
".....#..",
"......##",
".##....#", # 90 0x5A Z Upper case Z
".#.##..#",
".#..#..#",
".#..##.#",
".#....##",
"........", # 91 0x5B [ Open square bracket
".#######",
".#.....#",
".#.....#",
".#.....#",
"......#.", # 92 0x5C \ Backslash
".....#..",
"....#...",
"...#....",
"..#.....",
"........", # 93 0x5D ] Close square bracket
".#.....#",
".#.....#",
".#.....#",
".#######",
".....#..", # 94 0x5E ^ Caret
"......#.",
".......#",
"......#.",
".....#..",
".#......", # 95 0x5F _ Underscore
".#......",
".#......",
".#......",
".#......",
"........", # 96 0x60 @ Grave accent
"......##",
".....###",
"....#...",
"........",
"..#.....", # 97 0x61 a Lower case a
".#.#.#..",
".#.#.#..",
".####...",
".#......",
".#######", # 98 0x62 b Lower case b
"..#.#...",
".#...#..",
".#...#..",
"..###...",
"..###...", # 99 0x63 c Lower case c
".#...#..",
".#...#..",
".#...#..",
"..#.#...",
"..###...", # 100 0x64 d Lower case d
".#...#..",
".#...#..",
"..#.#...",
".#######",
"..###...", # 101 0x65 e Lower case e
".#.#.#..",
".#.#.#..",
".#.#.#..",
"...##...",
"........", # 102 0x66 f Lower case f
"....#...",
".######.",
"....#..#",
"......#.",
"...##...", # 103 0x67 g Lower case g
"#.#..#..",
"#.#..#..",
"#..###..",
".####...",
".#######", # 104 0x68 h Lower case h
"....#...",
".....#..",
".....#..",
".####...",
"........", # 105 0x69 i Lower case i
".#...#..",
".#####.#",
".#......",
"........",
"..#.....", # 106 0x6A j Lower case j
".#......",
".#......",
"..####.#",
"........",
".#######", # 107 0x6B k Lower case k
"...#....",
"..#.#...",
".#...#..",
"........",
"........", # 108 0x6C l Lower case l
".#.....#",
".#######",
".#......",
"........",
".#####..", # 109 0x6D m Lower case m
".....#..",
".####...",
".....#..",
".####...",
".#####..", # 110 0x6E n Lower case n
"....#...",
".....#..",
".....#..",
".####...",
"..###...", # 111 0x6F o Lower case o
".#...#..",
".#...#..",
".#...#..",
"..###...",
"######..", # 112 0x70 p Lower case p
"...##...",
"..#..#..",
"..#..#..",
"...##...",
"...##...", # 113 0x71 q Lower case q
"..#..#..",
"..#..#..",
"...##...",
"######..",
".#####..", # 114 0x72 r Lower case r
"....#...",
".....#..",
".....#..",
"....#...",
".#..#...", # 115 0x73 s Lower case s
".#.#.#..",
".#.#.#..",
".#.#.#..",
"..#..#..",
".....#..", # 116 0x74 t Lower case t
".....#..",
"..######",
".#...#..",
"..#..#..",
"..####..", # 117 0x75 u Lower case u
".#......",
".#......",
"..#.....",
".#####..",
"...###..", # 118 0x76 v Lower case v
"..#.....",
".#......",
"..#.....",
"...###..",
"..####..", # 119 0x77 w Lower case w
".#......",
"..##....",
".#......",
"..####..",
".#...#..", # 120 0x78 x Lower case x
"..#.#...",
"...#....",
"..#.#...",
".#...#..",
".#..##..", # 121 0x79 y Lower case y
"#..#....",
"#..#....",
"#..#....",
".#####..",
".#...#..", # 122 0x7A z Lower case z
".##..#..",
".#.#.#..",
".#..##..",
".#...#..",
"........", # 123 0x7B { Open brace
"....#...",
"..##.##.",
".#.....#",
"........",
"........", # 124 0x7C | Pipe
"........",
".###.###",
"........",
"........",
"........", # 125 0x7D } Close brace
".#.....#",
"..##.##.",
"....#...",
"........",
"......#.", # 126 0x7E ~ Tilde
".......#",
"......#.",
".....#..",
"......#.",
"..####..", # 127 0x7F Delete
"..#..##.",
"..#...##",
"..#..##.",
"..####..",
"...####.", # 128 0x80 Upper case C with cedilla
"#.#....#",
"#.#....#",
".##....#",
"...#..#.",
"..###.#.", # 129 0x81 Lower case u with diaeresis
".#......",
".#......",
"..#.....",
".####.#.",
"..###...", # 130 0x82 Lower case e with acute
".#.#.#..",
".#.#.#..",
".#.#.#.#",
".#.##..#",
"..#....#", # 131 0x83 Lower case a with circumflex
".#.#.#.#",
".#.#.#.#",
".####..#",
".#.....#",
"..#...#.", # 132 0x84 Lower case a with diaeresis
".#.#.#..",
".#.#.#..",
".####...",
".#....#.",
"..#....#", # 133 0x85 Lower case a with grave
".#.#.#.#",
".#.#.#..",
".####...",
".#......",
"..#.....", # 134 0x86 Lower case a with ring above
".#.#.#..",
".#.#.#.#",
".####..#",
".#......",
"....##..", # 135 0x87 Lower case c with cedilla
"...####.",
".#.#..#.",
".###..#.",
"...#..#.",
"..###..#", # 136 0x88 Lower case e with circumflex
".#.#.#.#",
".#.#.#.#",
".#.#.#.#",
".#.##..#",
"..###..#", # 137 0x89 Lower case e with diaeresis
".#.#.#..",
".#.#.#..",
".#.#.#..",
".#.##..#",
"..###..#", # 138 0x8A Lower case e with grave
".#.#.#.#",
".#.#.#..",
".#.#.#..",
".#.##...",
"........", # 139 0x8B Lower case i with diaeresis
"........",
".#...#.#",
".#####..",
".#.....#",
"........", # 140 0x8C Lower case i with circumflex
"......#.",
".#...#.#",
".#####.#",
".#....#.",
"........", # 141 0x8D Lower case i with grave
".......#",
".#...#.#",
".#####..",
".#......",
".#####.#", # 142 0x8E Upper case A with diaeresis
"...#..#.",
"...#...#",
"...#..#.",
".#####.#",
"####....", # 143 0x8F Upper case A with ring above
"..#.#...",
"..#..#.#",
"..#.#...",
"####....",
".#####..", # 144 0x90 Upper case E with acute
".#.#.#..",
".#.#.#.#",
".#...#.#",
"........",
"..#.....", # 145 0x91 Lower case ae
".#.#.#..",
".#.#.#..",
".#####..",
".#.#.#..",
".#####..", # 146 0x92 Upper case AE
"....#.#.",
"....#..#",
".#######",
".#..#..#",
"..##..#.", # 147 0x93 Lower case o with circumflex
".#..#..#",
".#..#..#",
".#..#..#",
"..##..#.",
"..###.#.", # 148 0x94 Lower case o with diaeresis
".#...#..",
".#...#..",
".#...#..",
"..###.#.",
"..##..#.", # 149 0x95 Lower case o with grave
".#..#.#.",
".#..#...",
".#..#...",
"..##....",
"..###.#.", # 150 0x96 Lower case u with circumflex
".#.....#",
".#.....#",
"..#....#",
".####.#.",
"..###.#.", # 151 0x97 Lower case u with grave
".#....#.",
".#......",
"..#.....",
".####...",
"........", # 152 0x98 Lower case y with diaeresis
"#..###.#",
"#.#.....",
"#.#.....",
".#####.#",
"..####.#", # 153 0x99 Upper case O with diaeresis
".#....#.",
".#....#.",
".#....#.",
"..####.#",
"..####.#", # 154 0x9A Upper case U with diaeresis
".#......",
".#......",
".#......",
"..####.#",
"..####..", # 155 0x9B Cent sign
"..#..#..",
"########",
"..#..#..",
"..#..#..",
".#..#...", # 156 0x9C Pound sign
".######.",
".#..#..#",
".#....##",
".##..##.",
"..#.#.##", # 157 0x9D Yen sign
"..#.####",
"######..",
"..#.####",
"..#.#.##",
"########", # 158 0x9E Peseta sign
"....#..#",
"..#.#..#",
"####.##.",
"..#.....",
"##......", # 159 0x9F Lower case f with hook
"#...#...",
".######.",
"....#..#",
"......##",
"..#.....", # 160 0xA0 Lower case a with acute
".#.#.#..",
".#.#.#..",
".####..#",
".#.....#",
"........", # 161 0xA1 Lower case i with acute
"........",
".#...#..",
".#####.#",
".#.....#",
"..##....", # 162 0xA2 Lower case o with acute
".#..#...",
".#..#...",
".#..#.#.",
"..##..#.",
"..###...", # 163 0xA3 Lower case u with acute
".#......",
".#......",
"..#...#.",
".####.#.",
"........", # 164 0xA4 Lower case n with tilde
".####.#.",
"....#.#.",
"....#.#.",
".###..#.",
".#####.#", # 165 0xA5 Upper case N with tilde
"....##.#",
"...##..#",
"..##...#",
".#####.#",
"..#..##.", # 166 0xA6 Feminine ordinal indicator
"..#.#..#",
"..#.#..#",
"..#.####",
"..#.#...",
"..#..##.", # 167 0xA7 Masculine ordinal indicator
"..#.#..#",
"..#.#..#",
"..#.#..#",
"..#..##.",
"..##....", # 168 0xA8 Inverted question mark
".#..#...",
".#..##.#",
".#......",
"..#.....",
"..###...", # 169 0xA9 Reversed not sign
"....#...",
"....#...",
"....#...",
"....#...",
"....#...", # 170 0xAA Not sign
"....#...",
"....#...",
"....#...",
"..###...",
"..#.####", # 171 0xAB Vulgar fraction one half
"...#....",
"##..#...",
"#.#.##..",
"#.###.#.",
"..#.####", # 172 0xAC Vulgar fraction one quarter
"...#....",
"..#.#...",
"..##.#..",
"#####.#.",
"........", # 173 0xAD Inverted exclamation mark
"........",
".####.##",
"........",
"........",
"....#...", # 174 0xAE Left-pointing double angle quotation mark
"...#.#..",
"..#.#.#.",
"...#.#..",
"..#...#.",
"..#...#.", # 175 0xAF Right-pointing double angle quotation mark
"...#.#..",
"..#.#.#.",
"...#.#..",
"....#...",
".#.#.#.#", # 176 0xB0 Light shade
"........",
".#.#.#.#",
"........",
".#.#.#.#",
"#.#.#.#.", # 177 0xB1 Medium shade
".#.#.#.#",
"#.#.#.#.",
".#.#.#.#",
"#.#.#.#.",
"########", # 178 0xB2 Dark shade
".#.#.#.#",
"########",
".#.#.#.#",
"########",
"........", # 179 0xB3 Box drawings light vertical
"........",
"........",
"########",
"........",
"...#....", # 180 0xB4 Box drawings light vertical and left
"...#....",
"...#....",
"########",
"........",
"...#.#..", # 181 0xB5 Box drawings vertical single and left double
"...#.#..",
"...#.#..",
"########",
"........",
"...#....", # 182 0xB6 Box drawings vertical double and left single
"...#....",
"########",
"........",
"########",
"...#....", # 183 0xB7 Box drawings down double and left single
"...#....",
"####....",
"...#....",
"####....",
"...#.#..", # 184 0xB8 Box drawings down single and left double
"...#.#..",
"...#.#..",
"######..",
"........",
"...#.#..", # 185 0xB9 Box drawings double vertical and left
"...#.#..",
"####.###",
"........",
"########",
"........", # 186 0xBA Box drawings double vertical
"........",
"########",
"........",
"########",
"...#.#..", # 187 0xBB Box drawings double down and left
"...#.#..",
"####.#..",
".....#..",
"######..",
"...#.#..", # 188 0xBC Box drawings double up and left
"...#.#..",
"...#.###",
"...#....",
"...#####",
"...#....", # 189 0xBD Box drawings up double and left single
"...#....",
"...#####",
"...#....",
"...#####",
"...#.#..", # 190 0xBE Box drawings up single and left double
"...#.#..",
"...#.#..",
"...#####",
"........",
"...#....", # 191 0xBF Box drawings light down and left
"...#....",
"...#....",
"####....",
"........",
"........", # 192 0xC0 Box drawings light up and right
"........",
"........",
"...#####",
"...#....",
"...#....", # 193 0xC1 Box drawings light up and horizontal
"...#....",
"...#....",
"...#####",
"...#....",
"...#....", # 194 0xC2 Box drawings light down and horizontal
"...#....",
"...#....",
"####....",
"...#....",
"........", # 195 0xC3 Box drawings light vertical and right
"........",
"........",
"########",
"...#....",
"...#....", # 196 0xC4 Box drawings light horizontal
"...#....",
"...#....",
"...#....",
"...#....",
"...#....", # 197 0xC5 Box drawings light vertical and horizontal
"...#....",
"...#....",
"########",
"...#....",
"........", # 198 0xC6 Box drawings vertical single and right double
"........",
"........",
"########",
"...#.#..",
"........", # 199 0xC7 Box drawings vertical double and right single
"........",
"########",
"........",
"########",
"........", # 200 0xC8 Box drawings double up and right
"........",
"...#####",
"...#....",
"...#.###",
"........", # 201 0xC9 Box drawings double down and right
"........",
"######..",
".....#..",
"####.#..",
"...#.#..", # 202 0xCA Box drawings double up and horizontal
"...#.#..",
"...#.###",
"...#....",
"...#.###",
"...#.#..", # 203 0xCB Box drawings double down and horizontal
"...#.#..",
"####.#..",
".....#..",
"####.#..",
"........", # 204 0xCC Box drawings double vertical and right
"........",
"########",
"........",
"####.###",
"...#.#..", # 205 0xCD Box drawings double horizontal
"...#.#..",
"...#.#..",
"...#.#..",
"...#.#..",
"...#.#..", # 206 0xCE Box drawings double vertical and horizontal
"...#.#..",
"####.###",
"........",
"####.###",
"...#.#..", # 207 0xCF Box drawings up single and horizontal double
"...#.#..",
"...#.#..",
"...#.###",
"...#.#..",
"...#....", # 208 0xD0 Box drawings up double and horizontal single
"...#....",
"...#####",
"...#....",
"...#####",
"...#.#..", # 209 0xD1 Box drawings down single and horizontal double
"...#.#..",
"...#.#..",
"####.#..",
"...#.#..",
"...#....", # 210 0xD2 Box drawings down double and horizontal single
"...#....",
"####....",
"...#....",
"####....",
"........", # 211 0xD3 Box drawings up double and right single
"........",
"...#####",
"...#....",
"...#####",
"........", # 212 0xD4 Box drawings up single and right double
"........",
"........",
"...#####",
"...#.#..",
"........", # 213 0xD5 Box drawings down single and right double
"........",
"........",
"######..",
"...#.#..",
"........", # 214 0xD6 Box drawings down double and right single
"........",
"####....",
"...#....",
"####....",
"...#....", # 215 0xD7 Box drawings vertical double and horizontal single
"...#....",
"########",
"...#....",
"########",
"...#.#..", # 216 0xD8 Box drawings vertical single and horizontal double
"...#.#..",
"...#.#..",
"########",
"...#.#..",
"...#....", # 217 0xD9 Box drawings light up and left
"...#....",
"...#....",
"...#####",
"........",
"........", # 218 0xDA Box drawings light down and right
"........",
"........",
"####....",
"...#....",
"########", # 219 0xDB Full block
"########",
"########",
"########",
"########",
"####....", # 220 0xDC Lower half block
"####....",
"####....",
"####....",
"####....",
"########", # 221 0xDD Left half block
"########",
"########",
"........",
"........",
"........", # 222 0xDE Right half block
"........",
"........",
"########",
"########",
"....####", # 223 0xDF Upper half block
"....####",
"....####",
"....####",
"....####",
"..###...", # 224 0xE0 Greek lower case alpha
".#...#..",
".#...#..",
"..###...",
".#...#..",
"######..", # 225 0xE1 Lower case sharp s
".#..#.#.",
".#..#.#.",
".#..#.#.",
"..##.#..",
".######.", # 226 0xE2 Greek upper case letter gamma
"......#.",
"......#.",
".....##.",
".....##.",
"......#.", # 227 0xE3 Greek lower case pi
".######.",
"......#.",
".######.",
"......#.",
".##...##", # 228 0xE4 Greek upper case letter sigma
".#.#.#.#",
".#..#..#",
".#.....#",
".##...##",
"..###...", # 229 0xE5 Greek lower case sigma
".#...#..",
".#...#..",
"..####..",
".....#..",
".#......", # 230 0xE6 Micro sign
".######.",
"..#.....",
"...####.",
"..#.....",
".....##.", # 231 0xE7 Greek lower case tau
"......#.",
".######.",
"......#.",
"......#.",
"#..##..#", # 232 0xE8 Greek upper case letter phi
"#.#..#.#",
"###..###",
"#.#..#.#",
"#..##..#",
"...###..", # 233 0xE9 Greek upper case letter theta
"..#.#.#.",
".#..#..#",
"..#.#.#.",
"...###..",
".#..##..", # 234 0xEA Greek upper case letter omega
".###..#.",
".......#",
".###..#.",
".#..##..",
"..##....", # 235 0xEB Greek lower case delta
".#..#.#.",
".#..##.#",
".#..##.#",
"..##....",
"..##....", # 236 0xEC Infinity
".#..#...",
".####...",
".#..#...",
"..##....",
"#.####..", # 237 0xED Greek lower case phi
".##...#.",
".#.##.#.",
".#...##.",
"..####.#",
"..#####.", # 238 0xEE Greek lower case epsilon
".#..#..#",
".#..#..#",
".#..#..#",
"........",
".######.", # 239 0xEF Intersection
".......#",
".......#",
".......#",
".######.",
"..#.#.#.", # 240 0xF0 Identical to
"..#.#.#.",
"..#.#.#.",
"..#.#.#.",
"..#.#.#.",
".#...#..", # 241 0xF1 Plus-minus sign
".#...#..",
".#.#####",
".#...#..",
".#...#..",
".#......", # 242 0xF2 Greater-than or equal to
".#.#...#",
".#..#.#.",
".#...#..",
".#......",
".#......", # 243 0xF3 Less-than or equal to
".#...#..",
".#..#.#.",
".#.#...#",
".#......",
"........", # 244 0xF4 Top half integral
"........",
"########",
".......#",
"......##",
"###.....", # 245 0xF5 Bottom half integral
"#.......",
"########",
"........",
"........",
"....#...", # 246 0xF6 Division sign
"....#...",
".##.#.##",
".##.#.##",
"....#...",
"..##.##.", # 247 0xF7 Almost equal to
"...#..#.",
"..##.##.",
"..#..#..",
"..##.##.",
".....##.", # 248 0xF8 Degree sign
"....####",
"....#..#",
"....####",
".....##.",
"........", # 249 0xF9 Bullet operator
"........",
"...##...",
"...##...",
"........",
"........", # 250 0xFA Middle dot
"........",
"...#....",
"...#....",
"........",
"..##....", # 251 0xFB Square root
".#......",
"########",
".......#",
".......#",
"........", # 252 0xFC Superscript lower case n
"...#####",
".......#",
".......#",
"...####.",
"........", # 253 0xFD Superscript two
"...##..#",
"...###.#",
"...#.###",
"...#..#.",
"........", # 254 0xFE Black square
"..####..",
"..####..",
"..####..",
"..####..",
"........", # 255 0xFF No-break space
"........",
"........",
"........",
"........",
)
# fmt: on
if __name__ == "__main__":
with open(f"font{WIDTH}x{HEIGHT}.bin", "wb") as outfile:
# Write a byte each for the character width, character height.
outfile.write(bytes((WIDTH, HEIGHT)))
# Now write all of the font character bytes.
for str in FONT:
data = int(str.replace(".", "0").replace("#", "1"), 2)
outfile.write(data.to_bytes(1, "big"))