font_to_bin.py
1 # Quick script to convert Adafruit GFX font into binary file. 2 # Author: Tony DiCola 3 # License: MIT (https://opensource.org/licenses/MIT) 4 # Taken from glcdfont.c from Adafruit GFX Arduino library. 5 # fmt: off 6 FONT = bytes(( 7 0x00, 0x00, 0x00, 0x00, 0x00, 8 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 9 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 10 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 11 0x18, 0x3C, 0x7E, 0x3C, 0x18, 12 0x1C, 0x57, 0x7D, 0x57, 0x1C, 13 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 14 0x00, 0x18, 0x3C, 0x18, 0x00, 15 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 16 0x00, 0x18, 0x24, 0x18, 0x00, 17 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 18 0x30, 0x48, 0x3A, 0x06, 0x0E, 19 0x26, 0x29, 0x79, 0x29, 0x26, 20 0x40, 0x7F, 0x05, 0x05, 0x07, 21 0x40, 0x7F, 0x05, 0x25, 0x3F, 22 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 23 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 24 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 25 0x14, 0x22, 0x7F, 0x22, 0x14, 26 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 27 0x06, 0x09, 0x7F, 0x01, 0x7F, 28 0x00, 0x66, 0x89, 0x95, 0x6A, 29 0x60, 0x60, 0x60, 0x60, 0x60, 30 0x94, 0xA2, 0xFF, 0xA2, 0x94, 31 0x08, 0x04, 0x7E, 0x04, 0x08, 32 0x10, 0x20, 0x7E, 0x20, 0x10, 33 0x08, 0x08, 0x2A, 0x1C, 0x08, 34 0x08, 0x1C, 0x2A, 0x08, 0x08, 35 0x1E, 0x10, 0x10, 0x10, 0x10, 36 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 37 0x30, 0x38, 0x3E, 0x38, 0x30, 38 0x06, 0x0E, 0x3E, 0x0E, 0x06, 39 0x00, 0x00, 0x00, 0x00, 0x00, 40 0x00, 0x00, 0x5F, 0x00, 0x00, 41 0x00, 0x07, 0x00, 0x07, 0x00, 42 0x14, 0x7F, 0x14, 0x7F, 0x14, 43 0x24, 0x2A, 0x7F, 0x2A, 0x12, 44 0x23, 0x13, 0x08, 0x64, 0x62, 45 0x36, 0x49, 0x56, 0x20, 0x50, 46 0x00, 0x08, 0x07, 0x03, 0x00, 47 0x00, 0x1C, 0x22, 0x41, 0x00, 48 0x00, 0x41, 0x22, 0x1C, 0x00, 49 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 50 0x08, 0x08, 0x3E, 0x08, 0x08, 51 0x00, 0x80, 0x70, 0x30, 0x00, 52 0x08, 0x08, 0x08, 0x08, 0x08, 53 0x00, 0x00, 0x60, 0x60, 0x00, 54 0x20, 0x10, 0x08, 0x04, 0x02, 55 0x3E, 0x51, 0x49, 0x45, 0x3E, 56 0x00, 0x42, 0x7F, 0x40, 0x00, 57 0x72, 0x49, 0x49, 0x49, 0x46, 58 0x21, 0x41, 0x49, 0x4D, 0x33, 59 0x18, 0x14, 0x12, 0x7F, 0x10, 60 0x27, 0x45, 0x45, 0x45, 0x39, 61 0x3C, 0x4A, 0x49, 0x49, 0x31, 62 0x41, 0x21, 0x11, 0x09, 0x07, 63 0x36, 0x49, 0x49, 0x49, 0x36, 64 0x46, 0x49, 0x49, 0x29, 0x1E, 65 0x00, 0x00, 0x14, 0x00, 0x00, 66 0x00, 0x40, 0x34, 0x00, 0x00, 67 0x00, 0x08, 0x14, 0x22, 0x41, 68 0x14, 0x14, 0x14, 0x14, 0x14, 69 0x00, 0x41, 0x22, 0x14, 0x08, 70 0x02, 0x01, 0x59, 0x09, 0x06, 71 0x3E, 0x41, 0x5D, 0x59, 0x4E, 72 0x7C, 0x12, 0x11, 0x12, 0x7C, 73 0x7F, 0x49, 0x49, 0x49, 0x36, 74 0x3E, 0x41, 0x41, 0x41, 0x22, 75 0x7F, 0x41, 0x41, 0x41, 0x3E, 76 0x7F, 0x49, 0x49, 0x49, 0x41, 77 0x7F, 0x09, 0x09, 0x09, 0x01, 78 0x3E, 0x41, 0x41, 0x51, 0x73, 79 0x7F, 0x08, 0x08, 0x08, 0x7F, 80 0x00, 0x41, 0x7F, 0x41, 0x00, 81 0x20, 0x40, 0x41, 0x3F, 0x01, 82 0x7F, 0x08, 0x14, 0x22, 0x41, 83 0x7F, 0x40, 0x40, 0x40, 0x40, 84 0x7F, 0x02, 0x1C, 0x02, 0x7F, 85 0x7F, 0x04, 0x08, 0x10, 0x7F, 86 0x3E, 0x41, 0x41, 0x41, 0x3E, 87 0x7F, 0x09, 0x09, 0x09, 0x06, 88 0x3E, 0x41, 0x51, 0x21, 0x5E, 89 0x7F, 0x09, 0x19, 0x29, 0x46, 90 0x26, 0x49, 0x49, 0x49, 0x32, 91 0x03, 0x01, 0x7F, 0x01, 0x03, 92 0x3F, 0x40, 0x40, 0x40, 0x3F, 93 0x1F, 0x20, 0x40, 0x20, 0x1F, 94 0x3F, 0x40, 0x38, 0x40, 0x3F, 95 0x63, 0x14, 0x08, 0x14, 0x63, 96 0x03, 0x04, 0x78, 0x04, 0x03, 97 0x61, 0x59, 0x49, 0x4D, 0x43, 98 0x00, 0x7F, 0x41, 0x41, 0x41, 99 0x02, 0x04, 0x08, 0x10, 0x20, 100 0x00, 0x41, 0x41, 0x41, 0x7F, 101 0x04, 0x02, 0x01, 0x02, 0x04, 102 0x40, 0x40, 0x40, 0x40, 0x40, 103 0x00, 0x03, 0x07, 0x08, 0x00, 104 0x20, 0x54, 0x54, 0x78, 0x40, 105 0x7F, 0x28, 0x44, 0x44, 0x38, 106 0x38, 0x44, 0x44, 0x44, 0x28, 107 0x38, 0x44, 0x44, 0x28, 0x7F, 108 0x38, 0x54, 0x54, 0x54, 0x18, 109 0x00, 0x08, 0x7E, 0x09, 0x02, 110 0x18, 0xA4, 0xA4, 0x9C, 0x78, 111 0x7F, 0x08, 0x04, 0x04, 0x78, 112 0x00, 0x44, 0x7D, 0x40, 0x00, 113 0x20, 0x40, 0x40, 0x3D, 0x00, 114 0x7F, 0x10, 0x28, 0x44, 0x00, 115 0x00, 0x41, 0x7F, 0x40, 0x00, 116 0x7C, 0x04, 0x78, 0x04, 0x78, 117 0x7C, 0x08, 0x04, 0x04, 0x78, 118 0x38, 0x44, 0x44, 0x44, 0x38, 119 0xFC, 0x18, 0x24, 0x24, 0x18, 120 0x18, 0x24, 0x24, 0x18, 0xFC, 121 0x7C, 0x08, 0x04, 0x04, 0x08, 122 0x48, 0x54, 0x54, 0x54, 0x24, 123 0x04, 0x04, 0x3F, 0x44, 0x24, 124 0x3C, 0x40, 0x40, 0x20, 0x7C, 125 0x1C, 0x20, 0x40, 0x20, 0x1C, 126 0x3C, 0x40, 0x30, 0x40, 0x3C, 127 0x44, 0x28, 0x10, 0x28, 0x44, 128 0x4C, 0x90, 0x90, 0x90, 0x7C, 129 0x44, 0x64, 0x54, 0x4C, 0x44, 130 0x00, 0x08, 0x36, 0x41, 0x00, 131 0x00, 0x00, 0x77, 0x00, 0x00, 132 0x00, 0x41, 0x36, 0x08, 0x00, 133 0x02, 0x01, 0x02, 0x04, 0x02, 134 0x3C, 0x26, 0x23, 0x26, 0x3C, 135 0x1E, 0xA1, 0xA1, 0x61, 0x12, 136 0x3A, 0x40, 0x40, 0x20, 0x7A, 137 0x38, 0x54, 0x54, 0x55, 0x59, 138 0x21, 0x55, 0x55, 0x79, 0x41, 139 0x22, 0x54, 0x54, 0x78, 0x42, # a-umlaut 140 0x21, 0x55, 0x54, 0x78, 0x40, 141 0x20, 0x54, 0x55, 0x79, 0x40, 142 0x0C, 0x1E, 0x52, 0x72, 0x12, 143 0x39, 0x55, 0x55, 0x55, 0x59, 144 0x39, 0x54, 0x54, 0x54, 0x59, 145 0x39, 0x55, 0x54, 0x54, 0x58, 146 0x00, 0x00, 0x45, 0x7C, 0x41, 147 0x00, 0x02, 0x45, 0x7D, 0x42, 148 0x00, 0x01, 0x45, 0x7C, 0x40, 149 0x7D, 0x12, 0x11, 0x12, 0x7D, # A-umlaut 150 0xF0, 0x28, 0x25, 0x28, 0xF0, 151 0x7C, 0x54, 0x55, 0x45, 0x00, 152 0x20, 0x54, 0x54, 0x7C, 0x54, 153 0x7C, 0x0A, 0x09, 0x7F, 0x49, 154 0x32, 0x49, 0x49, 0x49, 0x32, 155 0x3A, 0x44, 0x44, 0x44, 0x3A, # o-umlaut 156 0x32, 0x4A, 0x48, 0x48, 0x30, 157 0x3A, 0x41, 0x41, 0x21, 0x7A, 158 0x3A, 0x42, 0x40, 0x20, 0x78, 159 0x00, 0x9D, 0xA0, 0xA0, 0x7D, 160 0x3D, 0x42, 0x42, 0x42, 0x3D, # O-umlaut 161 0x3D, 0x40, 0x40, 0x40, 0x3D, 162 0x3C, 0x24, 0xFF, 0x24, 0x24, 163 0x48, 0x7E, 0x49, 0x43, 0x66, 164 0x2B, 0x2F, 0xFC, 0x2F, 0x2B, 165 0xFF, 0x09, 0x29, 0xF6, 0x20, 166 0xC0, 0x88, 0x7E, 0x09, 0x03, 167 0x20, 0x54, 0x54, 0x79, 0x41, 168 0x00, 0x00, 0x44, 0x7D, 0x41, 169 0x30, 0x48, 0x48, 0x4A, 0x32, 170 0x38, 0x40, 0x40, 0x22, 0x7A, 171 0x00, 0x7A, 0x0A, 0x0A, 0x72, 172 0x7D, 0x0D, 0x19, 0x31, 0x7D, 173 0x26, 0x29, 0x29, 0x2F, 0x28, 174 0x26, 0x29, 0x29, 0x29, 0x26, 175 0x30, 0x48, 0x4D, 0x40, 0x20, 176 0x38, 0x08, 0x08, 0x08, 0x08, 177 0x08, 0x08, 0x08, 0x08, 0x38, 178 0x2F, 0x10, 0xC8, 0xAC, 0xBA, 179 0x2F, 0x10, 0x28, 0x34, 0xFA, 180 0x00, 0x00, 0x7B, 0x00, 0x00, 181 0x08, 0x14, 0x2A, 0x14, 0x22, 182 0x22, 0x14, 0x2A, 0x14, 0x08, 183 0x55, 0x00, 0x55, 0x00, 0x55, # #176 (25% block) missing in old code 184 0xAA, 0x55, 0xAA, 0x55, 0xAA, # 50% block 185 0xFF, 0x55, 0xFF, 0x55, 0xFF, # 75% block 186 0x00, 0x00, 0x00, 0xFF, 0x00, 187 0x10, 0x10, 0x10, 0xFF, 0x00, 188 0x14, 0x14, 0x14, 0xFF, 0x00, 189 0x10, 0x10, 0xFF, 0x00, 0xFF, 190 0x10, 0x10, 0xF0, 0x10, 0xF0, 191 0x14, 0x14, 0x14, 0xFC, 0x00, 192 0x14, 0x14, 0xF7, 0x00, 0xFF, 193 0x00, 0x00, 0xFF, 0x00, 0xFF, 194 0x14, 0x14, 0xF4, 0x04, 0xFC, 195 0x14, 0x14, 0x17, 0x10, 0x1F, 196 0x10, 0x10, 0x1F, 0x10, 0x1F, 197 0x14, 0x14, 0x14, 0x1F, 0x00, 198 0x10, 0x10, 0x10, 0xF0, 0x00, 199 0x00, 0x00, 0x00, 0x1F, 0x10, 200 0x10, 0x10, 0x10, 0x1F, 0x10, 201 0x10, 0x10, 0x10, 0xF0, 0x10, 202 0x00, 0x00, 0x00, 0xFF, 0x10, 203 0x10, 0x10, 0x10, 0x10, 0x10, 204 0x10, 0x10, 0x10, 0xFF, 0x10, 205 0x00, 0x00, 0x00, 0xFF, 0x14, 206 0x00, 0x00, 0xFF, 0x00, 0xFF, 207 0x00, 0x00, 0x1F, 0x10, 0x17, 208 0x00, 0x00, 0xFC, 0x04, 0xF4, 209 0x14, 0x14, 0x17, 0x10, 0x17, 210 0x14, 0x14, 0xF4, 0x04, 0xF4, 211 0x00, 0x00, 0xFF, 0x00, 0xF7, 212 0x14, 0x14, 0x14, 0x14, 0x14, 213 0x14, 0x14, 0xF7, 0x00, 0xF7, 214 0x14, 0x14, 0x14, 0x17, 0x14, 215 0x10, 0x10, 0x1F, 0x10, 0x1F, 216 0x14, 0x14, 0x14, 0xF4, 0x14, 217 0x10, 0x10, 0xF0, 0x10, 0xF0, 218 0x00, 0x00, 0x1F, 0x10, 0x1F, 219 0x00, 0x00, 0x00, 0x1F, 0x14, 220 0x00, 0x00, 0x00, 0xFC, 0x14, 221 0x00, 0x00, 0xF0, 0x10, 0xF0, 222 0x10, 0x10, 0xFF, 0x10, 0xFF, 223 0x14, 0x14, 0x14, 0xFF, 0x14, 224 0x10, 0x10, 0x10, 0x1F, 0x00, 225 0x00, 0x00, 0x00, 0xF0, 0x10, 226 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 227 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 228 0xFF, 0xFF, 0xFF, 0x00, 0x00, 229 0x00, 0x00, 0x00, 0xFF, 0xFF, 230 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 231 0x38, 0x44, 0x44, 0x38, 0x44, 232 0xFC, 0x4A, 0x4A, 0x4A, 0x34, # sharp-s or beta 233 0x7E, 0x02, 0x02, 0x06, 0x06, 234 0x02, 0x7E, 0x02, 0x7E, 0x02, 235 0x63, 0x55, 0x49, 0x41, 0x63, 236 0x38, 0x44, 0x44, 0x3C, 0x04, 237 0x40, 0x7E, 0x20, 0x1E, 0x20, 238 0x06, 0x02, 0x7E, 0x02, 0x02, 239 0x99, 0xA5, 0xE7, 0xA5, 0x99, 240 0x1C, 0x2A, 0x49, 0x2A, 0x1C, 241 0x4C, 0x72, 0x01, 0x72, 0x4C, 242 0x30, 0x4A, 0x4D, 0x4D, 0x30, 243 0x30, 0x48, 0x78, 0x48, 0x30, 244 0xBC, 0x62, 0x5A, 0x46, 0x3D, 245 0x3E, 0x49, 0x49, 0x49, 0x00, 246 0x7E, 0x01, 0x01, 0x01, 0x7E, 247 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 248 0x44, 0x44, 0x5F, 0x44, 0x44, 249 0x40, 0x51, 0x4A, 0x44, 0x40, 250 0x40, 0x44, 0x4A, 0x51, 0x40, 251 0x00, 0x00, 0xFF, 0x01, 0x03, 252 0xE0, 0x80, 0xFF, 0x00, 0x00, 253 0x08, 0x08, 0x6B, 0x6B, 0x08, 254 0x36, 0x12, 0x36, 0x24, 0x36, 255 0x06, 0x0F, 0x09, 0x0F, 0x06, 256 0x00, 0x00, 0x18, 0x18, 0x00, 257 0x00, 0x00, 0x10, 0x10, 0x00, 258 0x30, 0x40, 0xFF, 0x01, 0x01, 259 0x00, 0x1F, 0x01, 0x01, 0x1E, 260 0x00, 0x19, 0x1D, 0x17, 0x12, 261 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 262 0x00, 0x00, 0x00, 0x00, 0x00 # #255 NBSP 263 )) 264 # fmt: on 265 266 267 if __name__ == "__main__": 268 with open("font5x8.bin", "wb") as outfile: 269 # Write a byte each for the character width, character height. 270 outfile.write(bytes((5, 8))) 271 # Now write all of the font character bytes. 272 for font_byte in FONT: 273 outfile.write(font_byte.to_bytes(1, "big"))