#include "fonts.h" /* ** Font data for Arial 8pt */ /* Character bitmaps for Arial 8pt */ const uint8_t arial_8ptBitmaps[] = { /* @0 ' ' (3 pixels wide) */ // // // // // // // // // // 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @6 '!' (1 pixels wide) */ // # // # // # // # // # // # // // # // // 0xBF, 0x00, /* @8 '"' (3 pixels wide) */ // # # // # # // # # // // // // // // // 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, /* @14 '#' (5 pixels wide) */ // # # // # # // ##### // # # // # # // ##### // # # // # # // // 0xE4, 0x3C, 0xE7, 0x3C, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, /* @24 '$' (5 pixels wide) */ // ### // # # # // # # // ### // # # // # # // # # # // ### // # // 0x46, 0x89, 0xFF, 0x89, 0x72, 0x00, 0x00, 0x01, 0x00, 0x00, /* @34 '%' (9 pixels wide) */ // ## # // # # # // # # # // ## # // # ## // # # # // # # # // # ## // // 0x06, 0x09, 0x89, 0x66, 0x18, 0x66, 0x91, 0x90, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @52 '&' (6 pixels wide) */ // ## // # # // # # // ## // # # // # ## // # # // ### # // // 0x60, 0x96, 0x89, 0x99, 0x66, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @64 ''' (1 pixels wide) */ // # // # // # // // // // // // // 0x07, 0x00, /* @66 '(' (3 pixels wide) */ // # // # // # // # // # // # // # // # // # // # 0xFC, 0x02, 0x01, 0x00, 0x01, 0x02, /* @72 ')' (3 pixels wide) */ // # // # // # // # // # // # // # // # // # // # 0x01, 0x02, 0xFC, 0x02, 0x01, 0x00, /* @78 '*' (3 pixels wide) */ // # // ### // # // # # // // // // // // 0x0A, 0x07, 0x0A, 0x00, 0x00, 0x00, /* @84 '+' (5 pixels wide) */ // // // # // # // ##### // # // # // // // 0x10, 0x10, 0x7C, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, /* @94 ',' (1 pixels wide) */ // // // // // // // // # // # // # 0x80, 0x03, /* @96 '-' (3 pixels wide) */ // // // // // // ### // // // // 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, /* @102 '.' (1 pixels wide) */ // // // // // // // // # // // 0x80, 0x00, /* @104 '/' (3 pixels wide) */ // # // # // # // # // # // # // # // # // // 0xC0, 0x3C, 0x03, 0x00, 0x00, 0x00, /* @110 '0' (5 pixels wide) */ // ### // # # // # # // # # // # # // # # // # # // ### // // 0x7E, 0x81, 0x81, 0x81, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, /* @120 '1' (3 pixels wide) */ // # // ## // # # // # // # // # // # // # // // 0x04, 0x02, 0xFF, 0x00, 0x00, 0x00, /* @126 '2' (5 pixels wide) */ // ### // # # // # // # // # // # // # // ##### // // 0x82, 0xC1, 0xA1, 0x91, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, /* @136 '3' (5 pixels wide) */ // ### // # # // # // ## // # // # // # # // ### // // 0x42, 0x81, 0x89, 0x89, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, /* @146 '4' (5 pixels wide) */ // # // ## // # # // # # // # # // ##### // # // # // // 0x30, 0x2C, 0x22, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, /* @156 '5' (5 pixels wide) */ // #### // # // # // #### // # // # // # # // ### // // 0x4C, 0x8B, 0x89, 0x89, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, /* @166 '6' (5 pixels wide) */ // ### // # # // # // #### // # # // # # // # # // ### // // 0x7E, 0x89, 0x89, 0x89, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, /* @176 '7' (5 pixels wide) */ // ##### // # // # // # // # // # // # // # // // 0x01, 0xE1, 0x19, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, /* @186 '8' (5 pixels wide) */ // ### // # # // # # // ### // # # // # # // # # // ### // // 0x76, 0x89, 0x89, 0x89, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, /* @196 '9' (5 pixels wide) */ // ### // # # // # # // # # // #### // # // # # // ### // // 0x4E, 0x91, 0x91, 0x91, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, /* @206 ':' (1 pixels wide) */ // // // # // // // // // # // // 0x84, 0x00, /* @208 ';' (1 pixels wide) */ // // // # // // // // // # // # // # 0x84, 0x03, /* @210 '<' (5 pixels wide) */ // // // # // ### // # // ### // # // // // 0x10, 0x28, 0x28, 0x28, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, /* @220 '=' (5 pixels wide) */ // // // // ##### // // ##### // // // // 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, /* @230 '>' (5 pixels wide) */ // // // # // ### // # // ### // # // // // 0x44, 0x28, 0x28, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, /* @240 '?' (5 pixels wide) */ // ### // # # // # // # // # // # // // # // // 0x02, 0x01, 0xB1, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, /* @250 '@' (10 pixels wide) */ // ##### // ## # // # ## # # // # # ## # // # # # # // # # # # // # # ## # // # ## ## // # # // ####### 0xF8, 0x06, 0x72, 0x89, 0x85, 0x45, 0xF9, 0x8D, 0x42, 0x3C, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, /* @270 'A' (7 pixels wide) */ // # // # # // # # // # # // # # // ##### // # # // # # // // 0xC0, 0x30, 0x2E, 0x21, 0x2E, 0x30, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @284 'B' (6 pixels wide) */ // ##### // # # // # # // ###### // # # // # # // # # // ##### // // 0xFF, 0x89, 0x89, 0x89, 0x89, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @296 'C' (6 pixels wide) */ // ### // # # // # // # // # // # // # # // ### // // 0x3C, 0x42, 0x81, 0x81, 0x81, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @308 'D' (6 pixels wide) */ // #### // # # // # # // # # // # # // # # // # # // #### // // 0xFF, 0x81, 0x81, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @320 'E' (5 pixels wide) */ // ##### // # // # // ##### // # // # // # // ##### // // 0xFF, 0x89, 0x89, 0x89, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, /* @330 'F' (5 pixels wide) */ // ##### // # // # // #### // # // # // # // # // // 0xFF, 0x09, 0x09, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, /* @340 'G' (7 pixels wide) */ // ### // # # // # # // # // # ### // # # // # # // ### // // 0x3C, 0x42, 0x81, 0x81, 0x91, 0x52, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @354 'H' (6 pixels wide) */ // # # // # # // # # // ###### // # # // # # // # # // # # // // 0xFF, 0x08, 0x08, 0x08, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @366 'I' (1 pixels wide) */ // # // # // # // # // # // # // # // # // // 0xFF, 0x00, /* @368 'J' (4 pixels wide) */ // # // # // # // # // # // # # // # # // ## // // 0x60, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, /* @376 'K' (6 pixels wide) */ // # # // # # // # # // # ## // ## # // # # // # # // # # // // 0xFF, 0x10, 0x08, 0x1C, 0x62, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @388 'L' (5 pixels wide) */ // # // # // # // # // # // # // # // ##### // // 0xFF, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, /* @398 'M' (7 pixels wide) */ // # # // ## ## // ## ## // # # # # // # # # # // # # # # // # # # // # # # // // 0xFF, 0x06, 0x38, 0xC0, 0x38, 0x06, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @412 'N' (6 pixels wide) */ // # # // ## # // # # # // # # # // # # # // # # # // # ## // # # // // 0xFF, 0x02, 0x0C, 0x30, 0x40, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @424 'O' (7 pixels wide) */ // ### // # # // # # // # # // # # // # # // # # // ### // // 0x3C, 0x42, 0x81, 0x81, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @438 'P' (5 pixels wide) */ // #### // # # // # # // # # // #### // # // # // # // // 0xFF, 0x11, 0x11, 0x11, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, /* @448 'Q' (7 pixels wide) */ // ### // # # // # # // # # // # # // # ## # // # # // ### # // // 0x3C, 0x42, 0x81, 0xA1, 0xA1, 0x42, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @462 'R' (6 pixels wide) */ // ##### // # # // # # // ##### // # # // # # // # # // # # // // 0xFF, 0x09, 0x09, 0x19, 0x69, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @474 'S' (6 pixels wide) */ // #### // # # // # // ## // ## // # // # # // #### // // 0x46, 0x89, 0x89, 0x91, 0x91, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @486 'T' (5 pixels wide) */ // ##### // # // # // # // # // # // # // # // // 0x01, 0x01, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, /* @496 'U' (6 pixels wide) */ // # # // # # // # # // # # // # # // # # // # # // #### // // 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @508 'V' (7 pixels wide) */ // # # // # # // # # // # # // # # // # # // # // # // // 0x03, 0x0C, 0x30, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @522 'W' (11 pixels wide) */ // # # # // # # # # // # # # # // # # # # // # # # # // # # # # // # # // # # // // 0x03, 0x3C, 0xC0, 0x30, 0x0E, 0x01, 0x0E, 0x30, 0xC0, 0x3C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @544 'X' (6 pixels wide) */ // # # // # # // # # // ## // ## // # # // # # // # # // // 0x81, 0x66, 0x18, 0x18, 0x66, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @556 'Y' (7 pixels wide) */ // # # // # # // # # // # # // # // # // # // # // // 0x01, 0x06, 0x08, 0xF0, 0x08, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @570 'Z' (6 pixels wide) */ // ##### // # // # // # // # // # // # // ###### // // 0x80, 0xC1, 0xB1, 0x8D, 0x83, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @582 '[' (2 pixels wide) */ // ## // # // # // # // # // # // # // # // # // ## 0xFF, 0x01, 0x03, 0x02, /* @586 '\' (3 pixels wide) */ // # // # // # // # // # // # // # // # // // 0x03, 0x3C, 0xC0, 0x00, 0x00, 0x00, /* @592 ']' (2 pixels wide) */ // ## // # // # // # // # // # // # // # // # // ## 0x01, 0xFF, 0x02, 0x03, /* @596 '^' (5 pixels wide) */ // # // # # // # # // # # // // // // // // 0x08, 0x06, 0x01, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, /* @606 '_' (6 pixels wide) */ // // // // // // // // // // ###### 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, /* @618 '`' (2 pixels wide) */ // # // # // // // // // // // // 0x01, 0x02, 0x00, 0x00, /* @622 'a' (5 pixels wide) */ // // // ### // # # // #### // # # // # ## // ## # // // 0x68, 0x94, 0x94, 0x54, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, /* @632 'b' (5 pixels wide) */ // # // # // # ## // ## # // # # // # # // ## # // # ## // // 0xFF, 0x48, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, /* @642 'c' (5 pixels wide) */ // // // ### // # # // # // # // # # // ### // // 0x78, 0x84, 0x84, 0x84, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, /* @652 'd' (5 pixels wide) */ // # // # // ## # // # ## // # # // # # // # ## // ## # // // 0x78, 0x84, 0x84, 0x48, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, /* @662 'e' (5 pixels wide) */ // // // ### // # # // ##### // # // # # // ### // // 0x78, 0x94, 0x94, 0x94, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, /* @672 'f' (3 pixels wide) */ // # // # // ### // # // # // # // # // # // // 0x04, 0xFE, 0x05, 0x00, 0x00, 0x00, /* @678 'g' (5 pixels wide) */ // // // ## # // # ## // # # // # # // # ## // ## # // # // #### 0x78, 0x84, 0x84, 0x48, 0xFC, 0x02, 0x02, 0x02, 0x02, 0x01, /* @688 'h' (5 pixels wide) */ // # // # // # ## // ## # // # # // # # // # # // # # // // 0xFF, 0x08, 0x04, 0x04, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, /* @698 'i' (1 pixels wide) */ // # // // # // # // # // # // # // # // // 0xFD, 0x00, /* @700 'j' (2 pixels wide) */ // # // // # // # // # // # // # // # // # // # 0x00, 0xFD, 0x02, 0x01, /* @704 'k' (4 pixels wide) */ // # // # // # # // # # // ## // # # // # # // # # // // 0xFF, 0x10, 0x68, 0x84, 0x00, 0x00, 0x00, 0x00, /* @712 'l' (1 pixels wide) */ // # // # // # // # // # // # // # // # // // 0xFF, 0x00, /* @714 'm' (7 pixels wide) */ // // // # #### // ## # # // # # # // # # # // # # # // # # # // // 0xFC, 0x08, 0x04, 0xFC, 0x04, 0x04, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @728 'n' (5 pixels wide) */ // // // #### // # # // # # // # # // # # // # # // // 0xFC, 0x04, 0x04, 0x04, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, /* @738 'o' (5 pixels wide) */ // // // ### // # # // # # // # # // # # // ### // // 0x78, 0x84, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, /* @748 'p' (5 pixels wide) */ // // // # ## // ## # // # # // # # // ## # // # ## // # // # 0xFC, 0x48, 0x84, 0x84, 0x78, 0x03, 0x00, 0x00, 0x00, 0x00, /* @758 'q' (5 pixels wide) */ // // // ## # // # ## // # # // # # // # ## // ## # // # // # 0x78, 0x84, 0x84, 0x48, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, /* @768 'r' (3 pixels wide) */ // // // # # // ## // # // # // # // # // // 0xFC, 0x08, 0x04, 0x00, 0x00, 0x00, /* @774 's' (5 pixels wide) */ // // // ### // # # // ## // # // # # // ### // // 0x48, 0x94, 0x94, 0xA4, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, /* @784 't' (3 pixels wide) */ // # // # // ### // # // # // # // # // ## // // 0x04, 0xFF, 0x84, 0x00, 0x00, 0x00, /* @790 'u' (5 pixels wide) */ // // // # # // # # // # # // # # // # ## // ## # // // 0x7C, 0x80, 0x80, 0x40, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, /* @800 'v' (5 pixels wide) */ // // // # # // # # // # # // # # // # // # // // 0x0C, 0x30, 0xC0, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, /* @810 'w' (9 pixels wide) */ // // // # # # // # # # # // # # # # // # # # # // # # // # # // // 0x0C, 0x30, 0xC0, 0x38, 0x04, 0x38, 0xC0, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* @828 'x' (5 pixels wide) */ // // // # # // # # // # // # // # # // # # // // 0x84, 0x48, 0x30, 0x48, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, /* @838 'y' (5 pixels wide) */ // // // # # // # # // # # // # # // # // # // # // # 0x0C, 0x30, 0xC0, 0x30, 0x0C, 0x00, 0x02, 0x01, 0x00, 0x00, /* @848 'z' (5 pixels wide) */ // // // ##### // # // # // # // # // ##### // // 0x84, 0xC4, 0xB4, 0x8C, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, /* @858 '{' (3 pixels wide) */ // # // # // # // # // # // # // # // # // # // # 0x10, 0xEE, 0x01, 0x00, 0x01, 0x02, /* @864 '|' (1 pixels wide) */ // # // # // # // # // # // # // # // # // # // # 0xFF, 0x03, /* @866 '}' (3 pixels wide) */ // # // # // # // # // # // # // # // # // # // # 0x01, 0xEE, 0x10, 0x02, 0x01, 0x00, /* @872 '~' (5 pixels wide) */ // // // // ### # // # ## // // // // // 0x18, 0x08, 0x18, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* Character descriptors for Arial 8pt */ /* { [Char width in bits], [Offset into arial_8ptCharBitmaps in bytes] } */ const FONT_CHAR_INFO arial_8ptDescriptors[] = { {3, 0}, /* */ {1, 6}, /* ! */ {3, 8}, /* " */ {5, 14}, /* # */ {5, 24}, /* $ */ {9, 34}, /* % */ {6, 52}, /* & */ {1, 64}, /* ' */ {3, 66}, /* ( */ {3, 72}, /* ) */ {3, 78}, /* * */ {5, 84}, /* + */ {1, 94}, /* , */ {3, 96}, /* - */ {1, 102}, /* . */ {3, 104}, /* / */ {5, 110}, /* 0 */ {3, 120}, /* 1 */ {5, 126}, /* 2 */ {5, 136}, /* 3 */ {5, 146}, /* 4 */ {5, 156}, /* 5 */ {5, 166}, /* 6 */ {5, 176}, /* 7 */ {5, 186}, /* 8 */ {5, 196}, /* 9 */ {1, 206}, /* : */ {1, 208}, /* ; */ {5, 210}, /* < */ {5, 220}, /* = */ {5, 230}, /* > */ {5, 240}, /* ? */ {10, 250}, /* @ */ {7, 270}, /* A */ {6, 284}, /* B */ {6, 296}, /* C */ {6, 308}, /* D */ {5, 320}, /* E */ {5, 330}, /* F */ {7, 340}, /* G */ {6, 354}, /* H */ {1, 366}, /* I */ {4, 368}, /* J */ {6, 376}, /* K */ {5, 388}, /* L */ {7, 398}, /* M */ {6, 412}, /* N */ {7, 424}, /* O */ {5, 438}, /* P */ {7, 448}, /* Q */ {6, 462}, /* R */ {6, 474}, /* S */ {5, 486}, /* T */ {6, 496}, /* U */ {7, 508}, /* V */ {11, 522}, /* W */ {6, 544}, /* X */ {7, 556}, /* Y */ {6, 570}, /* Z */ {2, 582}, /* [ */ {3, 586}, /* \ */ {2, 592}, /* ] */ {5, 596}, /* ^ */ {6, 606}, /* _ */ {2, 618}, /* ` */ {5, 622}, /* a */ {5, 632}, /* b */ {5, 642}, /* c */ {5, 652}, /* d */ {5, 662}, /* e */ {3, 672}, /* f */ {5, 678}, /* g */ {5, 688}, /* h */ {1, 698}, /* i */ {2, 700}, /* j */ {4, 704}, /* k */ {1, 712}, /* l */ {7, 714}, /* m */ {5, 728}, /* n */ {5, 738}, /* o */ {5, 748}, /* p */ {5, 758}, /* q */ {3, 768}, /* r */ {5, 774}, /* s */ {3, 784}, /* t */ {5, 790}, /* u */ {5, 800}, /* v */ {9, 810}, /* w */ {5, 828}, /* x */ {5, 838}, /* y */ {5, 848}, /* z */ {3, 858}, /* { */ {1, 864}, /* | */ {3, 866}, /* } */ {5, 872}, /* ~ */ }; /* Font information for Arial 8pt */ const FONT_INFO arial_8ptFontInfo = { 10, /* Character height */ ' ', /* Start character */ '~', /* End character */ 1, /* Space between chars */ arial_8ptDescriptors, /* Character descriptor array */ arial_8ptBitmaps, /* Character bitmap array */ };