# SPDX-FileCopyrightText: 2018 Tony DiCola for Adafruit Industries # # SPDX-License-Identifier: MIT # Added the following Swedish characters //Jens Ståhl 2025-02-08 #176 ° #196 Ä #197 Å #214 Ö #228 ä #229 å #246 ö """ Quick script to convert Adafruit GFX font into binary file. Taken from glcdfont.c from Adafruit GFX Arduino library. """ # pylint: disable=too-many-lines # 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 A Upper case with trema "#...#", "..#..", ".#.#.", "#...#", "#####", "#...#", "#...#", ".....", # 197 0xC5 A Upper case with ring "..#..", ".....", "..#..", ".#.#.", "#...#", "#####", "#...#", ".....", # 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 O Upper case with trema "#...#", ".###.", "#...#", "#...#", "#...#", "#...#", ".###.", ".....", # 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 a Lower case with trema ".#.#.", ".....", ".##..", "...#.", ".###.", "#..#.", ".####", ".....", # 229 0xE5 a Lower case with ring "..#..", ".....", ".##..", "...#.", ".###.", "#..#.", ".####", ".....", # 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 o Lower Case with trema ".#.#.", ".....", ".###.", "#...#", "#...#", "#...#", ".###.", ".....", # 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__": # Rotate all character to be able to generate the correct data rotated_font = [] char = [] for i, col in enumerate(FONT): char.append(col) # Has all character data been appended if (i + 1) % HEIGHT == 0: rot = list(zip(*char[::-1])) for r in rot: rotated_font.append("".join(r)) char = [] with open(f"font{WIDTH}x{HEIGHT}_swedish.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 string in rotated_font: DATA = int(string.replace(".", "0").replace("#", "1"), 2) outfile.write(DATA.to_bytes(1, "big"))