From dafe2efecf9eb94be9495eeb0088bb7f3703e675 Mon Sep 17 00:00:00 2001 From: rljonesau Date: Sun, 2 Dec 2018 17:31:26 +1100 Subject: [PATCH] Added missing arial and tahoma fonts --- Arduino/BTCDieselHeater/Arial.c | 1446 +++++++++++++++++++++++++++++ Arduino/BTCDieselHeater/Arial.h | 12 + Arduino/BTCDieselHeater/Tahoma8.c | 784 ++++++++++++++++ Arduino/BTCDieselHeater/Tahoma8.h | 7 + 4 files changed, 2249 insertions(+) create mode 100644 Arduino/BTCDieselHeater/Arial.c create mode 100644 Arduino/BTCDieselHeater/Arial.h create mode 100644 Arduino/BTCDieselHeater/Tahoma8.c create mode 100644 Arduino/BTCDieselHeater/Tahoma8.h diff --git a/Arduino/BTCDieselHeater/Arial.c b/Arduino/BTCDieselHeater/Arial.c new file mode 100644 index 0000000..514b200 --- /dev/null +++ b/Arduino/BTCDieselHeater/Arial.c @@ -0,0 +1,1446 @@ +// +// Font data for Arial +// +// +// Generated by The Dot Factory: +// http://www.eran.io/the-dot-factory-an-lcd-font-and-image-generator/ +// +///////////////////////////////////////////////////////////////////////////////////////////////////// +// +// Dot Factory Settings +// +// Flip/Rotate Padding Removal Line Wrap Descriptors +// [X] Flip X Height(Y): None (O) At column [X] Generate descriptor array +// [ ] Flip Y Width(X): Tightest ( ) At bitmap Char Width: In Bits +// 90deg Char Height: In Bits +// Font Height: In Bits +// Comments Byte [ ] Multiple descriptor arrays +// [X] Variable Name Bit layout: RowMajor +// [X] BMP visualise [#] Order: MSBfirst Create new when exceeds [80] +// [X] Char descriptor Format: Hex +// Style: Cpp Leading: 0x Image width: In Bits +// Image height: In Bits +// Variable name format +// Bitmaps: const uint8_t PROGMEM {0}Bitmaps Space char generation +// Char Info: const FONT_CHAR_INFO PROGMEM {0}Descriptors [ ] Generate space bitmap +// Font Info: const FONT_INFO {0}FontInfo [2] pixels for space char +// Width: const uint8_t {0}Width +// Height: const uint8_t {0}Height +// +///////////////////////////////////////////////////////////////////////////////////////////////////// + +#include "Arial.h" + +// Character bitmaps for Arial 8pt +const uint8_t PROGMEM arial_8ptBitmaps [] = +{ + // @0 '!' (1 pixels wide) + 0xFD, 0x00, // ###### # + + // @2 '"' (3 pixels wide) + 0xE0, 0x00, // ### + 0x00, 0x00, // + 0xE0, 0x00, // ### + + // @8 '#' (5 pixels wide) + 0x27, 0x00, // # ### + 0x3C, 0x00, // #### + 0xE7, 0x00, // ### ### + 0x3C, 0x00, // #### + 0xE4, 0x00, // ### # + + // @18 '$' (5 pixels wide) + 0x62, 0x00, // ## # + 0x91, 0x00, // # # # + 0xFF, 0x80, // ######### + 0x91, 0x00, // # # # + 0x4E, 0x00, // # ### + + // @28 '%' (9 pixels wide) + 0x60, 0x00, // ## + 0x90, 0x00, // # # + 0x91, 0x00, // # # # + 0x66, 0x00, // ## ## + 0x18, 0x00, // ## + 0x66, 0x00, // ## ## + 0x89, 0x00, // # # # + 0x09, 0x00, // # # + 0x06, 0x00, // ## + + // @46 '&' (6 pixels wide) + 0x06, 0x00, // ## + 0x69, 0x00, // ## # # + 0x91, 0x00, // # # # + 0x99, 0x00, // # ## # + 0x66, 0x00, // ## ## + 0x05, 0x00, // # # + + // @58 ''' (1 pixels wide) + 0xE0, 0x00, // ### + + // @60 '(' (3 pixels wide) + 0x3F, 0x00, // ###### + 0x40, 0x80, // # # + 0x80, 0x40, // # # + + // @66 ')' (3 pixels wide) + 0x80, 0x40, // # # + 0x40, 0x80, // # # + 0x3F, 0x00, // ###### + + // @72 '*' (3 pixels wide) + 0x50, 0x00, // # # + 0xE0, 0x00, // ### + 0x50, 0x00, // # # + + // @78 '+' (5 pixels wide) + 0x08, 0x00, // # + 0x08, 0x00, // # + 0x3E, 0x00, // ##### + 0x08, 0x00, // # + 0x08, 0x00, // # + + // @88 ',' (1 pixels wide) + 0x01, 0xC0, // ### + + // @90 '-' (3 pixels wide) + 0x04, 0x00, // # + 0x04, 0x00, // # + 0x04, 0x00, // # + + // @96 '.' (1 pixels wide) + 0x01, 0x00, // # + + // @98 '/' (3 pixels wide) + 0x03, 0x00, // ## + 0x3C, 0x00, // #### + 0xC0, 0x00, // ## + + // @104 '0' (5 pixels wide) + 0x7E, 0x00, // ###### + 0x81, 0x00, // # # + 0x81, 0x00, // # # + 0x81, 0x00, // # # + 0x7E, 0x00, // ###### + + // @114 '1' (3 pixels wide) + 0x20, 0x00, // # + 0x40, 0x00, // # + 0xFF, 0x00, // ######## + + // @120 '2' (5 pixels wide) + 0x41, 0x00, // # # + 0x83, 0x00, // # ## + 0x85, 0x00, // # # # + 0x89, 0x00, // # # # + 0x71, 0x00, // ### # + + // @130 '3' (5 pixels wide) + 0x42, 0x00, // # # + 0x81, 0x00, // # # + 0x91, 0x00, // # # # + 0x91, 0x00, // # # # + 0x6E, 0x00, // ## ### + + // @140 '4' (5 pixels wide) + 0x0C, 0x00, // ## + 0x34, 0x00, // ## # + 0x44, 0x00, // # # + 0xFF, 0x00, // ######## + 0x04, 0x00, // # + + // @150 '5' (5 pixels wide) + 0x32, 0x00, // ## # + 0xD1, 0x00, // ## # # + 0x91, 0x00, // # # # + 0x91, 0x00, // # # # + 0x8E, 0x00, // # ### + + // @160 '6' (5 pixels wide) + 0x7E, 0x00, // ###### + 0x91, 0x00, // # # # + 0x91, 0x00, // # # # + 0x91, 0x00, // # # # + 0x4E, 0x00, // # ### + + // @170 '7' (5 pixels wide) + 0x80, 0x00, // # + 0x87, 0x00, // # ### + 0x98, 0x00, // # ## + 0xE0, 0x00, // ### + 0x80, 0x00, // # + + // @180 '8' (5 pixels wide) + 0x6E, 0x00, // ## ### + 0x91, 0x00, // # # # + 0x91, 0x00, // # # # + 0x91, 0x00, // # # # + 0x6E, 0x00, // ## ### + + // @190 '9' (5 pixels wide) + 0x72, 0x00, // ### # + 0x89, 0x00, // # # # + 0x89, 0x00, // # # # + 0x89, 0x00, // # # # + 0x7E, 0x00, // ###### + + // @200 ':' (1 pixels wide) + 0x21, 0x00, // # # + + // @202 ';' (1 pixels wide) + 0x21, 0xC0, // # ### + + // @204 '<' (5 pixels wide) + 0x08, 0x00, // # + 0x14, 0x00, // # # + 0x14, 0x00, // # # + 0x14, 0x00, // # # + 0x22, 0x00, // # # + + // @214 '=' (5 pixels wide) + 0x14, 0x00, // # # + 0x14, 0x00, // # # + 0x14, 0x00, // # # + 0x14, 0x00, // # # + 0x14, 0x00, // # # + + // @224 '>' (5 pixels wide) + 0x22, 0x00, // # # + 0x14, 0x00, // # # + 0x14, 0x00, // # # + 0x14, 0x00, // # # + 0x08, 0x00, // # + + // @234 '?' (5 pixels wide) + 0x40, 0x00, // # + 0x80, 0x00, // # + 0x8D, 0x00, // # ## # + 0x90, 0x00, // # # + 0x60, 0x00, // ## + + // @244 '@' (10 pixels wide) + 0x1F, 0x00, // ##### + 0x60, 0x80, // ## # + 0x4E, 0x40, // # ### # + 0x91, 0x40, // # # # # + 0xA1, 0x40, // # # # # + 0xA2, 0x40, // # # # # + 0x9F, 0x40, // # ##### # + 0xB1, 0x40, // # ## # # + 0x42, 0x40, // # # # + 0x3C, 0x80, // #### # + + // @264 'A' (7 pixels wide) + 0x03, 0x00, // ## + 0x0C, 0x00, // ## + 0x74, 0x00, // ### # + 0x84, 0x00, // # # + 0x74, 0x00, // ### # + 0x0C, 0x00, // ## + 0x03, 0x00, // ## + + // @278 'B' (6 pixels wide) + 0xFF, 0x00, // ######## + 0x91, 0x00, // # # # + 0x91, 0x00, // # # # + 0x91, 0x00, // # # # + 0x91, 0x00, // # # # + 0x7E, 0x00, // ###### + + // @290 'C' (6 pixels wide) + 0x3C, 0x00, // #### + 0x42, 0x00, // # # + 0x81, 0x00, // # # + 0x81, 0x00, // # # + 0x81, 0x00, // # # + 0x42, 0x00, // # # + + // @302 'D' (6 pixels wide) + 0xFF, 0x00, // ######## + 0x81, 0x00, // # # + 0x81, 0x00, // # # + 0x81, 0x00, // # # + 0x42, 0x00, // # # + 0x3C, 0x00, // #### + + // @314 'E' (5 pixels wide) + 0xFF, 0x00, // ######## + 0x91, 0x00, // # # # + 0x91, 0x00, // # # # + 0x91, 0x00, // # # # + 0x91, 0x00, // # # # + + // @324 'F' (5 pixels wide) + 0xFF, 0x00, // ######## + 0x90, 0x00, // # # + 0x90, 0x00, // # # + 0x90, 0x00, // # # + 0x80, 0x00, // # + + // @334 'G' (7 pixels wide) + 0x3C, 0x00, // #### + 0x42, 0x00, // # # + 0x81, 0x00, // # # + 0x81, 0x00, // # # + 0x89, 0x00, // # # # + 0x4A, 0x00, // # # # + 0x2C, 0x00, // # ## + + // @348 'H' (6 pixels wide) + 0xFF, 0x00, // ######## + 0x10, 0x00, // # + 0x10, 0x00, // # + 0x10, 0x00, // # + 0x10, 0x00, // # + 0xFF, 0x00, // ######## + + // @360 'I' (1 pixels wide) + 0xFF, 0x00, // ######## + + // @362 'J' (4 pixels wide) + 0x06, 0x00, // ## + 0x01, 0x00, // # + 0x01, 0x00, // # + 0xFE, 0x00, // ####### + + // @370 'K' (6 pixels wide) + 0xFF, 0x00, // ######## + 0x08, 0x00, // # + 0x10, 0x00, // # + 0x38, 0x00, // ### + 0x46, 0x00, // # ## + 0x81, 0x00, // # # + + // @382 'L' (5 pixels wide) + 0xFF, 0x00, // ######## + 0x01, 0x00, // # + 0x01, 0x00, // # + 0x01, 0x00, // # + 0x01, 0x00, // # + + // @392 'M' (7 pixels wide) + 0xFF, 0x00, // ######## + 0x60, 0x00, // ## + 0x1C, 0x00, // ### + 0x03, 0x00, // ## + 0x1C, 0x00, // ### + 0x60, 0x00, // ## + 0xFF, 0x00, // ######## + + // @406 'N' (6 pixels wide) + 0xFF, 0x00, // ######## + 0x40, 0x00, // # + 0x30, 0x00, // ## + 0x0C, 0x00, // ## + 0x02, 0x00, // # + 0xFF, 0x00, // ######## + + // @418 'O' (7 pixels wide) + 0x3C, 0x00, // #### + 0x42, 0x00, // # # + 0x81, 0x00, // # # + 0x81, 0x00, // # # + 0x81, 0x00, // # # + 0x42, 0x00, // # # + 0x3C, 0x00, // #### + + // @432 'P' (5 pixels wide) + 0xFF, 0x00, // ######## + 0x88, 0x00, // # # + 0x88, 0x00, // # # + 0x88, 0x00, // # # + 0x70, 0x00, // ### + + // @442 'Q' (7 pixels wide) + 0x3C, 0x00, // #### + 0x42, 0x00, // # # + 0x81, 0x00, // # # + 0x85, 0x00, // # # # + 0x85, 0x00, // # # # + 0x42, 0x00, // # # + 0x3D, 0x00, // #### # + + // @456 'R' (6 pixels wide) + 0xFF, 0x00, // ######## + 0x90, 0x00, // # # + 0x90, 0x00, // # # + 0x98, 0x00, // # ## + 0x96, 0x00, // # # ## + 0x61, 0x00, // ## # + + // @468 'S' (6 pixels wide) + 0x62, 0x00, // ## # + 0x91, 0x00, // # # # + 0x91, 0x00, // # # # + 0x89, 0x00, // # # # + 0x89, 0x00, // # # # + 0x46, 0x00, // # ## + + // @480 'T' (5 pixels wide) + 0x80, 0x00, // # + 0x80, 0x00, // # + 0xFF, 0x00, // ######## + 0x80, 0x00, // # + 0x80, 0x00, // # + + // @490 'U' (6 pixels wide) + 0xFE, 0x00, // ####### + 0x01, 0x00, // # + 0x01, 0x00, // # + 0x01, 0x00, // # + 0x01, 0x00, // # + 0xFE, 0x00, // ####### + + // @502 'V' (7 pixels wide) + 0xC0, 0x00, // ## + 0x30, 0x00, // ## + 0x0C, 0x00, // ## + 0x03, 0x00, // ## + 0x0C, 0x00, // ## + 0x30, 0x00, // ## + 0xC0, 0x00, // ## + + // @516 'W' (11 pixels wide) + 0xC0, 0x00, // ## + 0x3C, 0x00, // #### + 0x03, 0x00, // ## + 0x0C, 0x00, // ## + 0x70, 0x00, // ### + 0x80, 0x00, // # + 0x70, 0x00, // ### + 0x0C, 0x00, // ## + 0x03, 0x00, // ## + 0x3C, 0x00, // #### + 0xC0, 0x00, // ## + + // @538 'X' (6 pixels wide) + 0x81, 0x00, // # # + 0x66, 0x00, // ## ## + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x66, 0x00, // ## ## + 0x81, 0x00, // # # + + // @550 'Y' (7 pixels wide) + 0x80, 0x00, // # + 0x60, 0x00, // ## + 0x10, 0x00, // # + 0x0F, 0x00, // #### + 0x10, 0x00, // # + 0x60, 0x00, // ## + 0x80, 0x00, // # + + // @564 'Z' (6 pixels wide) + 0x01, 0x00, // # + 0x83, 0x00, // # ## + 0x8D, 0x00, // # ## # + 0xB1, 0x00, // # ## # + 0xC1, 0x00, // ## # + 0x81, 0x00, // # # + + // @576 '[' (2 pixels wide) + 0xFF, 0xC0, // ########## + 0x80, 0x40, // # # + + // @580 '\' (3 pixels wide) + 0xC0, 0x00, // ## + 0x3C, 0x00, // #### + 0x03, 0x00, // ## + + // @586 ']' (2 pixels wide) + 0x80, 0x40, // # # + 0xFF, 0xC0, // ########## + + // @590 '^' (5 pixels wide) + 0x10, 0x00, // # + 0x60, 0x00, // ## + 0x80, 0x00, // # + 0x60, 0x00, // ## + 0x10, 0x00, // # + + // @600 '_' (6 pixels wide) + 0x00, 0x40, // # + 0x00, 0x40, // # + 0x00, 0x40, // # + 0x00, 0x40, // # + 0x00, 0x40, // # + 0x00, 0x40, // # + + // @612 '`' (2 pixels wide) + 0x80, 0x00, // # + 0x40, 0x00, // # + + // @616 'a' (5 pixels wide) + 0x16, 0x00, // # ## + 0x29, 0x00, // # # # + 0x29, 0x00, // # # # + 0x2A, 0x00, // # # # + 0x1F, 0x00, // ##### + + // @626 'b' (5 pixels wide) + 0xFF, 0x00, // ######## + 0x12, 0x00, // # # + 0x21, 0x00, // # # + 0x21, 0x00, // # # + 0x1E, 0x00, // #### + + // @636 'c' (5 pixels wide) + 0x1E, 0x00, // #### + 0x21, 0x00, // # # + 0x21, 0x00, // # # + 0x21, 0x00, // # # + 0x12, 0x00, // # # + + // @646 'd' (5 pixels wide) + 0x1E, 0x00, // #### + 0x21, 0x00, // # # + 0x21, 0x00, // # # + 0x12, 0x00, // # # + 0xFF, 0x00, // ######## + + // @656 'e' (5 pixels wide) + 0x1E, 0x00, // #### + 0x29, 0x00, // # # # + 0x29, 0x00, // # # # + 0x29, 0x00, // # # # + 0x1A, 0x00, // ## # + + // @666 'f' (3 pixels wide) + 0x20, 0x00, // # + 0x7F, 0x00, // ####### + 0xA0, 0x00, // # # + + // @672 'g' (5 pixels wide) + 0x1E, 0x40, // #### # + 0x21, 0x40, // # # # + 0x21, 0x40, // # # # + 0x12, 0x40, // # # # + 0x3F, 0x80, // ####### + + // @682 'h' (5 pixels wide) + 0xFF, 0x00, // ######## + 0x10, 0x00, // # + 0x20, 0x00, // # + 0x20, 0x00, // # + 0x1F, 0x00, // ##### + + // @692 'i' (1 pixels wide) + 0xBF, 0x00, // # ###### + + // @694 'j' (2 pixels wide) + 0x00, 0x40, // # + 0xBF, 0x80, // # ####### + + // @698 'k' (4 pixels wide) + 0xFF, 0x00, // ######## + 0x08, 0x00, // # + 0x16, 0x00, // # ## + 0x21, 0x00, // # # + + // @706 'l' (1 pixels wide) + 0xFF, 0x00, // ######## + + // @708 'm' (7 pixels wide) + 0x3F, 0x00, // ###### + 0x10, 0x00, // # + 0x20, 0x00, // # + 0x3F, 0x00, // ###### + 0x20, 0x00, // # + 0x20, 0x00, // # + 0x1F, 0x00, // ##### + + // @722 'n' (5 pixels wide) + 0x3F, 0x00, // ###### + 0x20, 0x00, // # + 0x20, 0x00, // # + 0x20, 0x00, // # + 0x1F, 0x00, // ##### + + // @732 'o' (5 pixels wide) + 0x1E, 0x00, // #### + 0x21, 0x00, // # # + 0x21, 0x00, // # # + 0x21, 0x00, // # # + 0x1E, 0x00, // #### + + // @742 'p' (5 pixels wide) + 0x3F, 0xC0, // ######## + 0x12, 0x00, // # # + 0x21, 0x00, // # # + 0x21, 0x00, // # # + 0x1E, 0x00, // #### + + // @752 'q' (5 pixels wide) + 0x1E, 0x00, // #### + 0x21, 0x00, // # # + 0x21, 0x00, // # # + 0x12, 0x00, // # # + 0x3F, 0xC0, // ######## + + // @762 'r' (3 pixels wide) + 0x3F, 0x00, // ###### + 0x10, 0x00, // # + 0x20, 0x00, // # + + // @768 's' (5 pixels wide) + 0x12, 0x00, // # # + 0x29, 0x00, // # # # + 0x29, 0x00, // # # # + 0x25, 0x00, // # # # + 0x12, 0x00, // # # + + // @778 't' (3 pixels wide) + 0x20, 0x00, // # + 0xFF, 0x00, // ######## + 0x21, 0x00, // # # + + // @784 'u' (5 pixels wide) + 0x3E, 0x00, // ##### + 0x01, 0x00, // # + 0x01, 0x00, // # + 0x02, 0x00, // # + 0x3F, 0x00, // ###### + + // @794 'v' (5 pixels wide) + 0x30, 0x00, // ## + 0x0C, 0x00, // ## + 0x03, 0x00, // ## + 0x0C, 0x00, // ## + 0x30, 0x00, // ## + + // @804 'w' (9 pixels wide) + 0x30, 0x00, // ## + 0x0C, 0x00, // ## + 0x03, 0x00, // ## + 0x1C, 0x00, // ### + 0x20, 0x00, // # + 0x1C, 0x00, // ### + 0x03, 0x00, // ## + 0x0C, 0x00, // ## + 0x30, 0x00, // ## + + // @822 'x' (5 pixels wide) + 0x21, 0x00, // # # + 0x12, 0x00, // # # + 0x0C, 0x00, // ## + 0x12, 0x00, // # # + 0x21, 0x00, // # # + + // @832 'y' (5 pixels wide) + 0x30, 0x00, // ## + 0x0C, 0x40, // ## # + 0x03, 0x80, // ### + 0x0C, 0x00, // ## + 0x30, 0x00, // ## + + // @842 'z' (5 pixels wide) + 0x21, 0x00, // # # + 0x23, 0x00, // # ## + 0x2D, 0x00, // # ## # + 0x31, 0x00, // ## # + 0x21, 0x00, // # # + + // @852 '{' (3 pixels wide) + 0x08, 0x00, // # + 0x77, 0x80, // ### #### + 0x80, 0x40, // # # + + // @858 '|' (1 pixels wide) + 0xFF, 0xC0, // ########## + + // @860 '}' (3 pixels wide) + 0x80, 0x40, // # # + 0x77, 0x80, // ### #### + 0x08, 0x00, // # + + // @866 '~' (5 pixels wide) + 0x18, 0x00, // ## + 0x10, 0x00, // # + 0x18, 0x00, // ## + 0x08, 0x00, // # + 0x10, 0x00, // # +}; + +// Character descriptors for Arial 8pt +// { [Char width in bits], [Char height in bits], [Offset into arial_8ptCharBitmaps in bytes] } +const FONT_CHAR_INFO PROGMEM arial_8ptDescriptors[] = +{ + {1, 10, 0}, // '!' + {3, 10, 2}, // '"' + {5, 10, 8}, // '#' + {5, 10, 18}, // '$' + {9, 10, 28}, // '%' + {6, 10, 46}, // '&' + {1, 10, 58}, // ''' + {3, 10, 60}, // '(' + {3, 10, 66}, // ')' + {3, 10, 72}, // '*' + {5, 10, 78}, // '+' + {1, 10, 88}, // ',' + {3, 10, 90}, // '-' + {1, 10, 96}, // '.' + {3, 10, 98}, // '/' + {5, 10, 104}, // '0' + {3, 10, 114}, // '1' + {5, 10, 120}, // '2' + {5, 10, 130}, // '3' + {5, 10, 140}, // '4' + {5, 10, 150}, // '5' + {5, 10, 160}, // '6' + {5, 10, 170}, // '7' + {5, 10, 180}, // '8' + {5, 10, 190}, // '9' + {1, 10, 200}, // ':' + {1, 10, 202}, // ';' + {5, 10, 204}, // '<' + {5, 10, 214}, // '=' + {5, 10, 224}, // '>' + {5, 10, 234}, // '?' + {10, 10, 244}, // '@' + {7, 10, 264}, // 'A' + {6, 10, 278}, // 'B' + {6, 10, 290}, // 'C' + {6, 10, 302}, // 'D' + {5, 10, 314}, // 'E' + {5, 10, 324}, // 'F' + {7, 10, 334}, // 'G' + {6, 10, 348}, // 'H' + {1, 10, 360}, // 'I' + {4, 10, 362}, // 'J' + {6, 10, 370}, // 'K' + {5, 10, 382}, // 'L' + {7, 10, 392}, // 'M' + {6, 10, 406}, // 'N' + {7, 10, 418}, // 'O' + {5, 10, 432}, // 'P' + {7, 10, 442}, // 'Q' + {6, 10, 456}, // 'R' + {6, 10, 468}, // 'S' + {5, 10, 480}, // 'T' + {6, 10, 490}, // 'U' + {7, 10, 502}, // 'V' + {11, 10, 516}, // 'W' + {6, 10, 538}, // 'X' + {7, 10, 550}, // 'Y' + {6, 10, 564}, // 'Z' + {2, 10, 576}, // '[' + {3, 10, 580}, // '\' + {2, 10, 586}, // ']' + {5, 10, 590}, // '^' + {6, 10, 600}, // '_' + {2, 10, 612}, // '`' + {5, 10, 616}, // 'a' + {5, 10, 626}, // 'b' + {5, 10, 636}, // 'c' + {5, 10, 646}, // 'd' + {5, 10, 656}, // 'e' + {3, 10, 666}, // 'f' + {5, 10, 672}, // 'g' + {5, 10, 682}, // 'h' + {1, 10, 692}, // 'i' + {2, 10, 694}, // 'j' + {4, 10, 698}, // 'k' + {1, 10, 706}, // 'l' + {7, 10, 708}, // 'm' + {5, 10, 722}, // 'n' + {5, 10, 732}, // 'o' + {5, 10, 742}, // 'p' + {5, 10, 752}, // 'q' + {3, 10, 762}, // 'r' + {5, 10, 768}, // 's' + {3, 10, 778}, // 't' + {5, 10, 784}, // 'u' + {5, 10, 794}, // 'v' + {9, 10, 804}, // 'w' + {5, 10, 822}, // 'x' + {5, 10, 832}, // 'y' + {5, 10, 842}, // 'z' + {3, 10, 852}, // '{' + {1, 10, 858}, // '|' + {3, 10, 860}, // '}' + {5, 10, 866}, // '~' +}; + +// Font information for Arial 8pt +const FONT_INFO arial_8ptFontInfo = +{ + 10, // Character height + '!', // Start character + '~', // End character + 2, // Width, in pixels, of space character + arial_8ptDescriptors, // Character descriptor array + arial_8ptBitmaps, // Character bitmap array +}; + + +// Character bitmaps for Arial 7pt +const uint8_t PROGMEM arial_7ptBitmaps [] = +{ + // @0 '!' (1 pixels wide) + 0xFA, 0x00, // ##### # + + // @2 '"' (3 pixels wide) + 0xC0, 0x00, // ## + 0x00, 0x00, // + 0xC0, 0x00, // ## + + // @8 '#' (4 pixels wide) + 0x2E, 0x00, // # ### + 0xF8, 0x00, // ##### + 0x2E, 0x00, // # ### + 0xF8, 0x00, // ##### + + // @16 '$' (5 pixels wide) + 0x64, 0x00, // ## # + 0x92, 0x00, // # # # + 0xFF, 0x00, // ######## + 0x92, 0x00, // # # # + 0x4C, 0x00, // # ## + + // @26 '%' (6 pixels wide) + 0x40, 0x00, // # + 0xA0, 0x00, // # # + 0x4E, 0x00, // # ### + 0x74, 0x00, // ### # + 0x8A, 0x00, // # # # + 0x04, 0x00, // # + + // @38 '&' (6 pixels wide) + 0x0C, 0x00, // ## + 0x72, 0x00, // ### # + 0x92, 0x00, // # # # + 0x9A, 0x00, // # ## # + 0xE4, 0x00, // ### # + 0x0A, 0x00, // # # + + // @50 ''' (1 pixels wide) + 0xC0, 0x00, // ## + + // @52 '(' (3 pixels wide) + 0x3E, 0x00, // ##### + 0x41, 0x00, // # # + 0x80, 0x80, // # # + + // @58 ')' (3 pixels wide) + 0x80, 0x80, // # # + 0x41, 0x00, // # # + 0x3E, 0x00, // ##### + + // @64 '*' (3 pixels wide) + 0xA0, 0x00, // # # + 0xC0, 0x00, // ## + 0xA0, 0x00, // # # + + // @70 '+' (5 pixels wide) + 0x08, 0x00, // # + 0x08, 0x00, // # + 0x3E, 0x00, // ##### + 0x08, 0x00, // # + 0x08, 0x00, // # + + // @80 ',' (1 pixels wide) + 0x03, 0x00, // ## + + // @82 '-' (2 pixels wide) + 0x08, 0x00, // # + 0x08, 0x00, // # + + // @86 '.' (1 pixels wide) + 0x02, 0x00, // # + + // @88 '/' (3 pixels wide) + 0x06, 0x00, // ## + 0x38, 0x00, // ### + 0xC0, 0x00, // ## + + // @94 '0' (4 pixels wide) + 0x7E, 0x00, // ###### + 0x82, 0x00, // # # + 0x82, 0x00, // # # + 0x7C, 0x00, // ##### + + // @102 '1' (2 pixels wide) + 0x40, 0x00, // # + 0xFE, 0x00, // ####### + + // @106 '2' (4 pixels wide) + 0x42, 0x00, // # # + 0x86, 0x00, // # ## + 0x9A, 0x00, // # ## # + 0x62, 0x00, // ## # + + // @114 '3' (4 pixels wide) + 0x44, 0x00, // # # + 0x82, 0x00, // # # + 0x92, 0x00, // # # # + 0x6C, 0x00, // ## ## + + // @122 '4' (5 pixels wide) + 0x18, 0x00, // ## + 0x28, 0x00, // # # + 0x48, 0x00, // # # + 0xFE, 0x00, // ####### + 0x08, 0x00, // # + + // @132 '5' (4 pixels wide) + 0x34, 0x00, // ## # + 0xE2, 0x00, // ### # + 0xA2, 0x00, // # # # + 0x9C, 0x00, // # ### + + // @140 '6' (4 pixels wide) + 0x7C, 0x00, // ##### + 0xA2, 0x00, // # # # + 0xA2, 0x00, // # # # + 0x5C, 0x00, // # ### + + // @148 '7' (4 pixels wide) + 0x80, 0x00, // # + 0x8E, 0x00, // # ### + 0xB0, 0x00, // # ## + 0xC0, 0x00, // ## + + // @156 '8' (4 pixels wide) + 0x6C, 0x00, // ## ## + 0x92, 0x00, // # # # + 0x92, 0x00, // # # # + 0x6C, 0x00, // ## ## + + // @164 '9' (4 pixels wide) + 0x74, 0x00, // ### # + 0x8A, 0x00, // # # # + 0x8A, 0x00, // # # # + 0x7C, 0x00, // ##### + + // @172 ':' (1 pixels wide) + 0x22, 0x00, // # # + + // @174 ';' (1 pixels wide) + 0x23, 0x00, // # ## + + // @176 '<' (3 pixels wide) + 0x10, 0x00, // # + 0x28, 0x00, // # # + 0x44, 0x00, // # # + + // @182 '=' (4 pixels wide) + 0x28, 0x00, // # # + 0x28, 0x00, // # # + 0x28, 0x00, // # # + 0x28, 0x00, // # # + + // @190 '>' (3 pixels wide) + 0x44, 0x00, // # # + 0x28, 0x00, // # # + 0x10, 0x00, // # + + // @196 '?' (5 pixels wide) + 0x40, 0x00, // # + 0x80, 0x00, // # + 0x9A, 0x00, // # ## # + 0x90, 0x00, // # # + 0x60, 0x00, // ## + + // @206 '@' (8 pixels wide) + 0x3E, 0x00, // ##### + 0x41, 0x00, // # # + 0x9E, 0x80, // # #### # + 0xA2, 0x80, // # # # # + 0x9E, 0x80, // # #### # + 0xB2, 0x80, // # ## # # + 0x45, 0x00, // # # # + 0x39, 0x00, // ### # + + // @222 'A' (7 pixels wide) + 0x02, 0x00, // # + 0x1C, 0x00, // ### + 0x68, 0x00, // ## # + 0x88, 0x00, // # # + 0x68, 0x00, // ## # + 0x1C, 0x00, // ### + 0x02, 0x00, // # + + // @236 'B' (4 pixels wide) + 0xFE, 0x00, // ####### + 0x92, 0x00, // # # # + 0x92, 0x00, // # # # + 0x7C, 0x00, // ##### + + // @244 'C' (5 pixels wide) + 0x7C, 0x00, // ##### + 0x82, 0x00, // # # + 0x82, 0x00, // # # + 0x82, 0x00, // # # + 0x44, 0x00, // # # + + // @254 'D' (5 pixels wide) + 0xFE, 0x00, // ####### + 0x82, 0x00, // # # + 0x82, 0x00, // # # + 0x82, 0x00, // # # + 0x7C, 0x00, // ##### + + // @264 'E' (5 pixels wide) + 0xFE, 0x00, // ####### + 0x92, 0x00, // # # # + 0x92, 0x00, // # # # + 0x92, 0x00, // # # # + 0x92, 0x00, // # # # + + // @274 'F' (4 pixels wide) + 0xFE, 0x00, // ####### + 0x90, 0x00, // # # + 0x90, 0x00, // # # + 0x80, 0x00, // # + + // @282 'G' (5 pixels wide) + 0x7C, 0x00, // ##### + 0x82, 0x00, // # # + 0x82, 0x00, // # # + 0x92, 0x00, // # # # + 0x5C, 0x00, // # ### + + // @292 'H' (5 pixels wide) + 0xFE, 0x00, // ####### + 0x10, 0x00, // # + 0x10, 0x00, // # + 0x10, 0x00, // # + 0xFE, 0x00, // ####### + + // @302 'I' (1 pixels wide) + 0xFE, 0x00, // ####### + + // @304 'J' (4 pixels wide) + 0x06, 0x00, // ## + 0x02, 0x00, // # + 0x02, 0x00, // # + 0xFC, 0x00, // ###### + + // @312 'K' (5 pixels wide) + 0xFE, 0x00, // ####### + 0x10, 0x00, // # + 0x28, 0x00, // # # + 0x44, 0x00, // # # + 0x82, 0x00, // # # + + // @322 'L' (4 pixels wide) + 0xFE, 0x00, // ####### + 0x02, 0x00, // # + 0x02, 0x00, // # + 0x02, 0x00, // # + + // @330 'M' (7 pixels wide) + 0xFE, 0x00, // ####### + 0x60, 0x00, // ## + 0x1C, 0x00, // ### + 0x02, 0x00, // # + 0x1C, 0x00, // ### + 0x60, 0x00, // ## + 0xFE, 0x00, // ####### + + // @344 'N' (5 pixels wide) + 0xFE, 0x00, // ####### + 0x60, 0x00, // ## + 0x10, 0x00, // # + 0x0C, 0x00, // ## + 0xFE, 0x00, // ####### + + // @354 'O' (5 pixels wide) + 0x7C, 0x00, // ##### + 0x82, 0x00, // # # + 0x82, 0x00, // # # + 0x82, 0x00, // # # + 0x7C, 0x00, // ##### + + // @364 'P' (4 pixels wide) + 0xFE, 0x00, // ####### + 0x90, 0x00, // # # + 0x90, 0x00, // # # + 0xF0, 0x00, // #### + + // @372 'Q' (5 pixels wide) + 0x7C, 0x00, // ##### + 0x82, 0x00, // # # + 0x82, 0x00, // # # + 0x86, 0x00, // # ## + 0x7A, 0x00, // #### # + + // @382 'R' (5 pixels wide) + 0xFE, 0x00, // ####### + 0x90, 0x00, // # # + 0x90, 0x00, // # # + 0x98, 0x00, // # ## + 0x66, 0x00, // ## ## + + // @392 'S' (4 pixels wide) + 0x64, 0x00, // ## # + 0x92, 0x00, // # # # + 0x92, 0x00, // # # # + 0x4C, 0x00, // # ## + + // @400 'T' (5 pixels wide) + 0x80, 0x00, // # + 0x80, 0x00, // # + 0xFE, 0x00, // ####### + 0x80, 0x00, // # + 0x80, 0x00, // # + + // @410 'U' (5 pixels wide) + 0xFC, 0x00, // ###### + 0x02, 0x00, // # + 0x02, 0x00, // # + 0x02, 0x00, // # + 0xFC, 0x00, // ###### + + // @420 'V' (7 pixels wide) + 0xC0, 0x00, // ## + 0x30, 0x00, // ## + 0x0C, 0x00, // ## + 0x02, 0x00, // # + 0x0C, 0x00, // ## + 0x30, 0x00, // ## + 0xC0, 0x00, // ## + + // @434 'W' (9 pixels wide) + 0xC0, 0x00, // ## + 0x3C, 0x00, // #### + 0x02, 0x00, // # + 0x7C, 0x00, // ##### + 0x80, 0x00, // # + 0x7C, 0x00, // ##### + 0x02, 0x00, // # + 0x3C, 0x00, // #### + 0xC0, 0x00, // ## + + // @452 'X' (5 pixels wide) + 0x82, 0x00, // # # + 0x6C, 0x00, // ## ## + 0x10, 0x00, // # + 0x6C, 0x00, // ## ## + 0x82, 0x00, // # # + + // @462 'Y' (5 pixels wide) + 0x80, 0x00, // # + 0x60, 0x00, // ## + 0x1E, 0x00, // #### + 0x60, 0x00, // ## + 0x80, 0x00, // # + + // @472 'Z' (6 pixels wide) + 0x86, 0x00, // # ## + 0x8A, 0x00, // # # # + 0x92, 0x00, // # # # + 0xA2, 0x00, // # # # + 0xC2, 0x00, // ## # + 0x82, 0x00, // # # + + // @484 '[' (2 pixels wide) + 0xFF, 0x80, // ######### + 0x80, 0x80, // # # + + // @488 '\' (3 pixels wide) + 0xC0, 0x00, // ## + 0x38, 0x00, // ### + 0x06, 0x00, // ## + + // @494 ']' (2 pixels wide) + 0x80, 0x80, // # # + 0xFF, 0x80, // ######### + + // @498 '^' (3 pixels wide) + 0x60, 0x00, // ## + 0x80, 0x00, // # + 0x60, 0x00, // ## + + // @504 '_' (5 pixels wide) + 0x00, 0x80, // # + 0x00, 0x80, // # + 0x00, 0x80, // # + 0x00, 0x80, // # + 0x00, 0x80, // # + + // @514 '`' (2 pixels wide) + 0x80, 0x00, // # + 0x40, 0x00, // # + + // @518 'a' (4 pixels wide) + 0x26, 0x00, // # ## + 0x2A, 0x00, // # # # + 0x2A, 0x00, // # # # + 0x3E, 0x00, // ##### + + // @526 'b' (4 pixels wide) + 0xFE, 0x00, // ####### + 0x22, 0x00, // # # + 0x22, 0x00, // # # + 0x1C, 0x00, // ### + + // @534 'c' (4 pixels wide) + 0x1C, 0x00, // ### + 0x22, 0x00, // # # + 0x22, 0x00, // # # + 0x14, 0x00, // # # + + // @542 'd' (4 pixels wide) + 0x1C, 0x00, // ### + 0x22, 0x00, // # # + 0x22, 0x00, // # # + 0xFE, 0x00, // ####### + + // @550 'e' (4 pixels wide) + 0x1C, 0x00, // ### + 0x2A, 0x00, // # # # + 0x2A, 0x00, // # # # + 0x1A, 0x00, // ## # + + // @558 'f' (3 pixels wide) + 0x20, 0x00, // # + 0x7E, 0x00, // ###### + 0xA0, 0x00, // # # + + // @564 'g' (4 pixels wide) + 0x1D, 0x00, // ### # + 0x22, 0x80, // # # # + 0x22, 0x80, // # # # + 0x3F, 0x00, // ###### + + // @572 'h' (4 pixels wide) + 0xFE, 0x00, // ####### + 0x20, 0x00, // # + 0x20, 0x00, // # + 0x1E, 0x00, // #### + + // @580 'i' (1 pixels wide) + 0xBE, 0x00, // # ##### + + // @582 'j' (2 pixels wide) + 0x00, 0x80, // # + 0xBF, 0x00, // # ###### + + // @586 'k' (4 pixels wide) + 0xFE, 0x00, // ####### + 0x08, 0x00, // # + 0x1C, 0x00, // ### + 0x22, 0x00, // # # + + // @594 'l' (1 pixels wide) + 0xFE, 0x00, // ####### + + // @596 'm' (7 pixels wide) + 0x3E, 0x00, // ##### + 0x20, 0x00, // # + 0x20, 0x00, // # + 0x3E, 0x00, // ##### + 0x20, 0x00, // # + 0x20, 0x00, // # + 0x1E, 0x00, // #### + + // @610 'n' (4 pixels wide) + 0x3E, 0x00, // ##### + 0x20, 0x00, // # + 0x20, 0x00, // # + 0x1E, 0x00, // #### + + // @618 'o' (4 pixels wide) + 0x1C, 0x00, // ### + 0x22, 0x00, // # # + 0x22, 0x00, // # # + 0x1C, 0x00, // ### + + // @626 'p' (4 pixels wide) + 0x3F, 0x80, // ####### + 0x22, 0x00, // # # + 0x22, 0x00, // # # + 0x1C, 0x00, // ### + + // @634 'q' (4 pixels wide) + 0x1C, 0x00, // ### + 0x22, 0x00, // # # + 0x22, 0x00, // # # + 0x3F, 0x80, // ####### + + // @642 'r' (3 pixels wide) + 0x3E, 0x00, // ##### + 0x20, 0x00, // # + 0x20, 0x00, // # + + // @648 's' (4 pixels wide) + 0x12, 0x00, // # # + 0x2A, 0x00, // # # # + 0x2A, 0x00, // # # # + 0x24, 0x00, // # # + + // @656 't' (3 pixels wide) + 0x20, 0x00, // # + 0x7E, 0x00, // ###### + 0x22, 0x00, // # # + + // @662 'u' (4 pixels wide) + 0x3C, 0x00, // #### + 0x02, 0x00, // # + 0x02, 0x00, // # + 0x3E, 0x00, // ##### + + // @670 'v' (5 pixels wide) + 0x20, 0x00, // # + 0x1C, 0x00, // ### + 0x02, 0x00, // # + 0x1C, 0x00, // ### + 0x20, 0x00, // # + + // @680 'w' (5 pixels wide) + 0x3C, 0x00, // #### + 0x02, 0x00, // # + 0x3C, 0x00, // #### + 0x02, 0x00, // # + 0x3C, 0x00, // #### + + // @690 'x' (4 pixels wide) + 0x22, 0x00, // # # + 0x1C, 0x00, // ### + 0x1C, 0x00, // ### + 0x22, 0x00, // # # + + // @698 'y' (5 pixels wide) + 0x20, 0x00, // # + 0x1C, 0x80, // ### # + 0x03, 0x00, // ## + 0x1C, 0x00, // ### + 0x20, 0x00, // # + + // @708 'z' (3 pixels wide) + 0x26, 0x00, // # ## + 0x2A, 0x00, // # # # + 0x32, 0x00, // ## # + + // @714 '{' (3 pixels wide) + 0x08, 0x00, // # + 0xF7, 0x80, // #### #### + 0x80, 0x80, // # # + + // @720 '|' (1 pixels wide) + 0xFF, 0x00, // ######## + + // @722 '}' (3 pixels wide) + 0x80, 0x80, // # # + 0xF7, 0x80, // #### #### + 0x08, 0x00, // # + + // @728 '~' (4 pixels wide) + 0x18, 0x00, // ## + 0x10, 0x00, // # + 0x08, 0x00, // # + 0x18, 0x00, // ## +}; + +// Character descriptors for Arial 7pt +// { [Char width in bits], [Char height in bits], [Offset into arial_7ptCharBitmaps in bytes] } +const FONT_CHAR_INFO PROGMEM arial_7ptDescriptors[] = +{ + {1, 9, 0}, // '!' + {3, 9, 2}, // '"' + {4, 9, 8}, // '#' + {5, 9, 16}, // '$' + {6, 9, 26}, // '%' + {6, 9, 38}, // '&' + {1, 9, 50}, // ''' + {3, 9, 52}, // '(' + {3, 9, 58}, // ')' + {3, 9, 64}, // '*' + {5, 9, 70}, // '+' + {1, 9, 80}, // ',' + {2, 9, 82}, // '-' + {1, 9, 86}, // '.' + {3, 9, 88}, // '/' + {4, 9, 94}, // '0' + {2, 9, 102}, // '1' + {4, 9, 106}, // '2' + {4, 9, 114}, // '3' + {5, 9, 122}, // '4' + {4, 9, 132}, // '5' + {4, 9, 140}, // '6' + {4, 9, 148}, // '7' + {4, 9, 156}, // '8' + {4, 9, 164}, // '9' + {1, 9, 172}, // ':' + {1, 9, 174}, // ';' + {3, 9, 176}, // '<' + {4, 9, 182}, // '=' + {3, 9, 190}, // '>' + {5, 9, 196}, // '?' + {8, 9, 206}, // '@' + {7, 9, 222}, // 'A' + {4, 9, 236}, // 'B' + {5, 9, 244}, // 'C' + {5, 9, 254}, // 'D' + {5, 9, 264}, // 'E' + {4, 9, 274}, // 'F' + {5, 9, 282}, // 'G' + {5, 9, 292}, // 'H' + {1, 9, 302}, // 'I' + {4, 9, 304}, // 'J' + {5, 9, 312}, // 'K' + {4, 9, 322}, // 'L' + {7, 9, 330}, // 'M' + {5, 9, 344}, // 'N' + {5, 9, 354}, // 'O' + {4, 9, 364}, // 'P' + {5, 9, 372}, // 'Q' + {5, 9, 382}, // 'R' + {4, 9, 392}, // 'S' + {5, 9, 400}, // 'T' + {5, 9, 410}, // 'U' + {7, 9, 420}, // 'V' + {9, 9, 434}, // 'W' + {5, 9, 452}, // 'X' + {5, 9, 462}, // 'Y' + {6, 9, 472}, // 'Z' + {2, 9, 484}, // '[' + {3, 9, 488}, // '\' + {2, 9, 494}, // ']' + {3, 9, 498}, // '^' + {5, 9, 504}, // '_' + {2, 9, 514}, // '`' + {4, 9, 518}, // 'a' + {4, 9, 526}, // 'b' + {4, 9, 534}, // 'c' + {4, 9, 542}, // 'd' + {4, 9, 550}, // 'e' + {3, 9, 558}, // 'f' + {4, 9, 564}, // 'g' + {4, 9, 572}, // 'h' + {1, 9, 580}, // 'i' + {2, 9, 582}, // 'j' + {4, 9, 586}, // 'k' + {1, 9, 594}, // 'l' + {7, 9, 596}, // 'm' + {4, 9, 610}, // 'n' + {4, 9, 618}, // 'o' + {4, 9, 626}, // 'p' + {4, 9, 634}, // 'q' + {3, 9, 642}, // 'r' + {4, 9, 648}, // 's' + {3, 9, 656}, // 't' + {4, 9, 662}, // 'u' + {5, 9, 670}, // 'v' + {5, 9, 680}, // 'w' + {4, 9, 690}, // 'x' + {5, 9, 698}, // 'y' + {3, 9, 708}, // 'z' + {3, 9, 714}, // '{' + {1, 9, 720}, // '|' + {3, 9, 722}, // '}' + {4, 9, 728}, // '~' +}; + +// Font information for Arial 7pt +const FONT_INFO arial_7ptFontInfo = +{ + 9, // Character height + '!', // Start character + '~', // End character + 1, // Width, in pixels, of space character + arial_7ptDescriptors, // Character descriptor array + arial_7ptBitmaps, // Character bitmap array +}; + diff --git a/Arduino/BTCDieselHeater/Arial.h b/Arduino/BTCDieselHeater/Arial.h new file mode 100644 index 0000000..2c48dbb --- /dev/null +++ b/Arduino/BTCDieselHeater/Arial.h @@ -0,0 +1,12 @@ +#include "FontTypes.h" + +// Font data for Arial 8pt +extern const uint8_t PROGMEM arial_8ptBitmaps []; +extern const FONT_INFO arial_8ptFontInfo; +extern const FONT_CHAR_INFO PROGMEM arial_8ptDescriptors[]; + +// Font data for Arial 7pt +extern const uint8_t PROGMEM arial_7ptBitmaps []; +extern const FONT_INFO arial_7ptFontInfo; +extern const FONT_CHAR_INFO PROGMEM arial_7ptDescriptors[]; + diff --git a/Arduino/BTCDieselHeater/Tahoma8.c b/Arduino/BTCDieselHeater/Tahoma8.c new file mode 100644 index 0000000..4c40020 --- /dev/null +++ b/Arduino/BTCDieselHeater/Tahoma8.c @@ -0,0 +1,784 @@ +// +// Font data for Tahoma 8pt +// +// +// Generated by The Dot Factory: +// http://www.eran.io/the-dot-factory-an-lcd-font-and-image-generator/ +// +///////////////////////////////////////////////////////////////////////////////////////////////////// +// +// Dot Factory Settings +// +// Flip/Rotate Padding Removal Line Wrap Descriptors +// [X] Flip X Height(Y): None (O) At column [X] Generate descriptor array +// [ ] Flip Y Width(X): Tightest ( ) At bitmap Char Width: In Bits +// 90deg Char Height: In Bits +// Font Height: In Bits +// Comments Byte [ ] Multiple descriptor arrays +// [X] Variable Name Bit layout: RowMajor +// [X] BMP visualise [#] Order: MSBfirst Create new when exceeds [80] +// [X] Char descriptor Format: Hex +// Style: Cpp Leading: 0x Image width: In Bits +// Image height: In Bits +// Variable name format +// Bitmaps: const uint8_t PROGMEM {0}Bitmaps Space char generation +// Char Info: const FONT_CHAR_INFO PROGMEM {0}Descriptors [ ] Generate space bitmap +// Font Info: const FONT_INFO {0}FontInfo [2] pixels for space char +// Width: const uint8_t {0}Width +// Height: const uint8_t {0}Height +// +///////////////////////////////////////////////////////////////////////////////////////////////////// + + +#include "Tahoma8.h" + +// Character bitmaps for Tahoma 8pt +const uint8_t PROGMEM tahoma_8ptBitmaps [] = +{ + // @0 ' ' (2 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + + // @4 '!' (1 pixels wide) + 0x1F, 0xA0, // ###### # + + // @6 '"' (3 pixels wide) + 0x38, 0x00, // ### + 0x00, 0x00, // + 0x38, 0x00, // ### + + // @12 '#' (7 pixels wide) + 0x00, 0x80, // # + 0x04, 0xE0, // # ### + 0x07, 0x80, // #### + 0x1C, 0xE0, // ### ### + 0x07, 0x80, // #### + 0x1C, 0x80, // ### # + 0x04, 0x00, // # + + // @26 '$' (5 pixels wide) + 0x06, 0x20, // ## # + 0x09, 0x20, // # # # + 0x3F, 0xF8, // ########### + 0x09, 0x20, // # # # + 0x08, 0xC0, // # ## + + // @36 '%' (10 pixels wide) + 0x0C, 0x00, // ## + 0x12, 0x00, // # # + 0x12, 0x00, // # # + 0x0C, 0x60, // ## ## + 0x01, 0x80, // ## + 0x06, 0x00, // ## + 0x18, 0xC0, // ## ## + 0x01, 0x20, // # # + 0x01, 0x20, // # # + 0x00, 0xC0, // ## + + // @56 '&' (7 pixels wide) + 0x0D, 0xC0, // ## ### + 0x12, 0x20, // # # # + 0x12, 0x20, // # # # + 0x0D, 0x20, // ## # # + 0x00, 0xC0, // ## + 0x03, 0x40, // ## # + 0x00, 0x20, // # + + // @70 ''' (1 pixels wide) + 0x38, 0x00, // ### + + // @72 '(' (3 pixels wide) + 0x07, 0xC0, // ##### + 0x18, 0x30, // ## ## + 0x20, 0x08, // # # + + // @78 ')' (3 pixels wide) + 0x20, 0x08, // # # + 0x18, 0x30, // ## ## + 0x07, 0xC0, // ##### + + // @84 '*' (5 pixels wide) + 0x14, 0x00, // # # + 0x08, 0x00, // # + 0x3E, 0x00, // ##### + 0x08, 0x00, // # + 0x14, 0x00, // # # + + // @94 '+' (7 pixels wide) + 0x01, 0x00, // # + 0x01, 0x00, // # + 0x01, 0x00, // # + 0x0F, 0xE0, // ####### + 0x01, 0x00, // # + 0x01, 0x00, // # + 0x01, 0x00, // # + + // @108 ',' (2 pixels wide) + 0x00, 0x08, // # + 0x00, 0x70, // ### + + // @112 '-' (3 pixels wide) + 0x01, 0x00, // # + 0x01, 0x00, // # + 0x01, 0x00, // # + + // @118 '.' (1 pixels wide) + 0x00, 0x60, // ## + + // @120 '/' (3 pixels wide) + 0x00, 0x38, // ### + 0x07, 0xC0, // ##### + 0x38, 0x00, // ### + + // @126 '0' (5 pixels wide) + 0x0F, 0xC0, // ###### + 0x10, 0x20, // # # + 0x10, 0x20, // # # + 0x10, 0x20, // # # + 0x0F, 0xC0, // ###### + + // @136 '1' (3 pixels wide) + 0x08, 0x20, // # # + 0x1F, 0xE0, // ######## + 0x00, 0x20, // # + + // @142 '2' (5 pixels wide) + 0x08, 0x60, // # ## + 0x10, 0xA0, // # # # + 0x11, 0x20, // # # # + 0x12, 0x20, // # # # + 0x0C, 0x20, // ## # + + // @152 '3' (5 pixels wide) + 0x08, 0x40, // # # + 0x10, 0x20, // # # + 0x12, 0x20, // # # # + 0x12, 0x20, // # # # + 0x0D, 0xC0, // ## ### + + // @162 '4' (5 pixels wide) + 0x03, 0x00, // ## + 0x05, 0x00, // # # + 0x09, 0x00, // # # + 0x1F, 0xE0, // ######## + 0x01, 0x00, // # + + // @172 '5' (5 pixels wide) + 0x1E, 0x40, // #### # + 0x12, 0x20, // # # # + 0x12, 0x20, // # # # + 0x12, 0x20, // # # # + 0x11, 0xC0, // # ### + + // @182 '6' (5 pixels wide) + 0x07, 0xC0, // ##### + 0x0A, 0x20, // # # # + 0x12, 0x20, // # # # + 0x12, 0x20, // # # # + 0x01, 0xC0, // ### + + // @192 '7' (5 pixels wide) + 0x10, 0x00, // # + 0x10, 0x60, // # ## + 0x11, 0x80, // # ## + 0x16, 0x00, // # ## + 0x18, 0x00, // ## + + // @202 '8' (5 pixels wide) + 0x0D, 0xC0, // ## ### + 0x12, 0x20, // # # # + 0x12, 0x20, // # # # + 0x12, 0x20, // # # # + 0x0D, 0xC0, // ## ### + + // @212 '9' (5 pixels wide) + 0x0E, 0x00, // ### + 0x11, 0x20, // # # # + 0x11, 0x20, // # # # + 0x11, 0x40, // # # # + 0x0F, 0x80, // ##### + + // @222 ':' (1 pixels wide) + 0x06, 0x60, // ## ## + + // @224 ';' (2 pixels wide) + 0x00, 0x08, // # + 0x06, 0x70, // ## ### + + // @228 '<' (6 pixels wide) + 0x01, 0x00, // # + 0x02, 0x80, // # # + 0x02, 0x80, // # # + 0x04, 0x40, // # # + 0x04, 0x40, // # # + 0x08, 0x20, // # # + + // @240 '=' (7 pixels wide) + 0x02, 0x80, // # # + 0x02, 0x80, // # # + 0x02, 0x80, // # # + 0x02, 0x80, // # # + 0x02, 0x80, // # # + 0x02, 0x80, // # # + 0x02, 0x80, // # # + + // @254 '>' (6 pixels wide) + 0x08, 0x20, // # # + 0x04, 0x40, // # # + 0x04, 0x40, // # # + 0x02, 0x80, // # # + 0x02, 0x80, // # # + 0x01, 0x00, // # + + // @266 '?' (4 pixels wide) + 0x10, 0x00, // # + 0x11, 0xA0, // # ## # + 0x12, 0x00, // # # + 0x0C, 0x00, // ## + + // @274 '@' (9 pixels wide) + 0x07, 0xC0, // ##### + 0x08, 0x20, // # # + 0x13, 0x90, // # ### # + 0x14, 0x50, // # # # # + 0x14, 0x50, // # # # # + 0x17, 0xD0, // # ##### # + 0x10, 0x40, // # # + 0x08, 0x40, // # # + 0x07, 0x80, // #### + + // @292 'A' (6 pixels wide) + 0x00, 0xE0, // ### + 0x07, 0x80, // #### + 0x18, 0x80, // ## # + 0x18, 0x80, // ## # + 0x07, 0x80, // #### + 0x00, 0xE0, // ### + + // @304 'B' (5 pixels wide) + 0x1F, 0xE0, // ######## + 0x12, 0x20, // # # # + 0x12, 0x20, // # # # + 0x12, 0x20, // # # # + 0x0D, 0xC0, // ## ### + + // @314 'C' (6 pixels wide) + 0x07, 0x80, // #### + 0x08, 0x40, // # # + 0x10, 0x20, // # # + 0x10, 0x20, // # # + 0x10, 0x20, // # # + 0x10, 0x20, // # # + + // @326 'D' (6 pixels wide) + 0x1F, 0xE0, // ######## + 0x10, 0x20, // # # + 0x10, 0x20, // # # + 0x10, 0x20, // # # + 0x08, 0x40, // # # + 0x07, 0x80, // #### + + // @338 'E' (5 pixels wide) + 0x1F, 0xE0, // ######## + 0x12, 0x20, // # # # + 0x12, 0x20, // # # # + 0x12, 0x20, // # # # + 0x10, 0x20, // # # + + // @348 'F' (5 pixels wide) + 0x1F, 0xE0, // ######## + 0x12, 0x00, // # # + 0x12, 0x00, // # # + 0x12, 0x00, // # # + 0x12, 0x00, // # # + + // @358 'G' (6 pixels wide) + 0x07, 0x80, // #### + 0x08, 0x40, // # # + 0x10, 0x20, // # # + 0x11, 0x20, // # # # + 0x11, 0x20, // # # # + 0x11, 0xE0, // # #### + + // @370 'H' (6 pixels wide) + 0x1F, 0xE0, // ######## + 0x02, 0x00, // # + 0x02, 0x00, // # + 0x02, 0x00, // # + 0x02, 0x00, // # + 0x1F, 0xE0, // ######## + + // @382 'I' (3 pixels wide) + 0x10, 0x20, // # # + 0x1F, 0xE0, // ######## + 0x10, 0x20, // # # + + // @388 'J' (4 pixels wide) + 0x00, 0x20, // # + 0x10, 0x20, // # # + 0x10, 0x20, // # # + 0x1F, 0xC0, // ####### + + // @396 'K' (5 pixels wide) + 0x1F, 0xE0, // ######## + 0x03, 0x00, // ## + 0x04, 0x80, // # # + 0x08, 0x40, // # # + 0x10, 0x20, // # # + + // @406 'L' (4 pixels wide) + 0x1F, 0xE0, // ######## + 0x00, 0x20, // # + 0x00, 0x20, // # + 0x00, 0x20, // # + + // @414 'M' (7 pixels wide) + 0x1F, 0xE0, // ######## + 0x18, 0x00, // ## + 0x06, 0x00, // ## + 0x01, 0x80, // ## + 0x06, 0x00, // ## + 0x18, 0x00, // ## + 0x1F, 0xE0, // ######## + + // @428 'N' (6 pixels wide) + 0x1F, 0xE0, // ######## + 0x18, 0x00, // ## + 0x06, 0x00, // ## + 0x01, 0x80, // ## + 0x00, 0x60, // ## + 0x1F, 0xE0, // ######## + + // @440 'O' (7 pixels wide) + 0x07, 0x80, // #### + 0x08, 0x40, // # # + 0x10, 0x20, // # # + 0x10, 0x20, // # # + 0x10, 0x20, // # # + 0x08, 0x40, // # # + 0x07, 0x80, // #### + + // @454 'P' (5 pixels wide) + 0x1F, 0xE0, // ######## + 0x11, 0x00, // # # + 0x11, 0x00, // # # + 0x11, 0x00, // # # + 0x0E, 0x00, // ### + + // @464 'Q' (7 pixels wide) + 0x07, 0x80, // #### + 0x08, 0x40, // # # + 0x10, 0x20, // # # + 0x10, 0x20, // # # + 0x10, 0x30, // # ## + 0x08, 0x48, // # # # + 0x07, 0x88, // #### # + + // @478 'R' (6 pixels wide) + 0x1F, 0xE0, // ######## + 0x11, 0x00, // # # + 0x11, 0x00, // # # + 0x11, 0x80, // # ## + 0x0E, 0x40, // ### # + 0x00, 0x20, // # + + // @490 'S' (5 pixels wide) + 0x0C, 0x20, // ## # + 0x12, 0x20, // # # # + 0x12, 0x20, // # # # + 0x12, 0x20, // # # # + 0x11, 0xC0, // # ### + + // @500 'T' (5 pixels wide) + 0x10, 0x00, // # + 0x10, 0x00, // # + 0x1F, 0xE0, // ######## + 0x10, 0x00, // # + 0x10, 0x00, // # + + // @510 'U' (6 pixels wide) + 0x1F, 0xC0, // ####### + 0x00, 0x20, // # + 0x00, 0x20, // # + 0x00, 0x20, // # + 0x00, 0x20, // # + 0x1F, 0xC0, // ####### + + // @522 'V' (5 pixels wide) + 0x1C, 0x00, // ### + 0x03, 0x80, // ### + 0x00, 0x60, // ## + 0x03, 0x80, // ### + 0x1C, 0x00, // ### + + // @532 'W' (9 pixels wide) + 0x1C, 0x00, // ### + 0x03, 0x80, // ### + 0x00, 0x60, // ## + 0x03, 0x80, // ### + 0x1C, 0x00, // ### + 0x03, 0x80, // ### + 0x00, 0x60, // ## + 0x03, 0x80, // ### + 0x1C, 0x00, // ### + + // @550 'X' (5 pixels wide) + 0x18, 0x60, // ## ## + 0x04, 0x80, // # # + 0x03, 0x00, // ## + 0x04, 0x80, // # # + 0x18, 0x60, // ## ## + + // @560 'Y' (5 pixels wide) + 0x18, 0x00, // ## + 0x06, 0x00, // ## + 0x01, 0xE0, // #### + 0x06, 0x00, // ## + 0x18, 0x00, // ## + + // @570 'Z' (5 pixels wide) + 0x10, 0x60, // # ## + 0x10, 0xA0, // # # # + 0x13, 0x20, // # ## # + 0x14, 0x20, // # # # + 0x18, 0x20, // ## # + + // @580 '[' (3 pixels wide) + 0x3F, 0xF8, // ########### + 0x20, 0x08, // # # + 0x20, 0x08, // # # + + // @586 '\' (3 pixels wide) + 0x38, 0x00, // ### + 0x07, 0xC0, // ##### + 0x00, 0x38, // ### + + // @592 ']' (3 pixels wide) + 0x20, 0x08, // # # + 0x20, 0x08, // # # + 0x3F, 0xF8, // ########### + + // @598 '^' (7 pixels wide) + 0x02, 0x00, // # + 0x04, 0x00, // # + 0x08, 0x00, // # + 0x10, 0x00, // # + 0x08, 0x00, // # + 0x04, 0x00, // # + 0x02, 0x00, // # + + // @612 '_' (6 pixels wide) + 0x00, 0x08, // # + 0x00, 0x08, // # + 0x00, 0x08, // # + 0x00, 0x08, // # + 0x00, 0x08, // # + 0x00, 0x08, // # + + // @624 '`' (2 pixels wide) + 0x20, 0x00, // # + 0x10, 0x00, // # + + // @628 'a' (5 pixels wide) + 0x00, 0xC0, // ## + 0x05, 0x20, // # # # + 0x05, 0x20, // # # # + 0x05, 0x20, // # # # + 0x03, 0xE0, // ##### + + // @638 'b' (5 pixels wide) + 0x3F, 0xE0, // ######### + 0x04, 0x20, // # # + 0x04, 0x20, // # # + 0x04, 0x20, // # # + 0x03, 0xC0, // #### + + // @648 'c' (4 pixels wide) + 0x03, 0xC0, // #### + 0x04, 0x20, // # # + 0x04, 0x20, // # # + 0x04, 0x20, // # # + + // @656 'd' (5 pixels wide) + 0x03, 0xC0, // #### + 0x04, 0x20, // # # + 0x04, 0x20, // # # + 0x04, 0x20, // # # + 0x3F, 0xE0, // ######### + + // @666 'e' (5 pixels wide) + 0x03, 0xC0, // #### + 0x05, 0x20, // # # # + 0x05, 0x20, // # # # + 0x05, 0x20, // # # # + 0x03, 0x40, // ## # + + // @676 'f' (3 pixels wide) + 0x1F, 0xE0, // ######## + 0x24, 0x00, // # # + 0x24, 0x00, // # # + + // @682 'g' (5 pixels wide) + 0x03, 0xC0, // #### + 0x04, 0x28, // # # # + 0x04, 0x28, // # # # + 0x04, 0x28, // # # # + 0x07, 0xF0, // ####### + + // @692 'h' (5 pixels wide) + 0x3F, 0xE0, // ######### + 0x04, 0x00, // # + 0x04, 0x00, // # + 0x04, 0x00, // # + 0x03, 0xE0, // ##### + + // @702 'i' (1 pixels wide) + 0x17, 0xE0, // # ###### + + // @704 'j' (2 pixels wide) + 0x04, 0x08, // # # + 0x17, 0xF0, // # ####### + + // @708 'k' (5 pixels wide) + 0x3F, 0xE0, // ######### + 0x01, 0x00, // # + 0x02, 0x80, // # # + 0x04, 0x40, // # # + 0x00, 0x20, // # + + // @718 'l' (1 pixels wide) + 0x3F, 0xE0, // ######### + + // @720 'm' (7 pixels wide) + 0x07, 0xE0, // ###### + 0x04, 0x00, // # + 0x04, 0x00, // # + 0x03, 0xE0, // ##### + 0x04, 0x00, // # + 0x04, 0x00, // # + 0x03, 0xE0, // ##### + + // @734 'n' (5 pixels wide) + 0x07, 0xE0, // ###### + 0x04, 0x00, // # + 0x04, 0x00, // # + 0x04, 0x00, // # + 0x03, 0xE0, // ##### + + // @744 'o' (5 pixels wide) + 0x03, 0xC0, // #### + 0x04, 0x20, // # # + 0x04, 0x20, // # # + 0x04, 0x20, // # # + 0x03, 0xC0, // #### + + // @754 'p' (5 pixels wide) + 0x07, 0xF8, // ######## + 0x04, 0x20, // # # + 0x04, 0x20, // # # + 0x04, 0x20, // # # + 0x03, 0xC0, // #### + + // @764 'q' (5 pixels wide) + 0x03, 0xC0, // #### + 0x04, 0x20, // # # + 0x04, 0x20, // # # + 0x04, 0x20, // # # + 0x07, 0xF8, // ######## + + // @774 'r' (3 pixels wide) + 0x07, 0xE0, // ###### + 0x02, 0x00, // # + 0x04, 0x00, // # + + // @780 's' (4 pixels wide) + 0x03, 0x20, // ## # + 0x05, 0x20, // # # # + 0x04, 0xA0, // # # # + 0x04, 0xC0, // # ## + + // @788 't' (3 pixels wide) + 0x1F, 0xC0, // ####### + 0x04, 0x20, // # # + 0x04, 0x20, // # # + + // @794 'u' (5 pixels wide) + 0x07, 0xC0, // ##### + 0x00, 0x20, // # + 0x00, 0x20, // # + 0x00, 0x20, // # + 0x07, 0xE0, // ###### + + // @804 'v' (5 pixels wide) + 0x06, 0x00, // ## + 0x01, 0x80, // ## + 0x00, 0x60, // ## + 0x01, 0x80, // ## + 0x06, 0x00, // ## + + // @814 'w' (7 pixels wide) + 0x07, 0x80, // #### + 0x00, 0x60, // ## + 0x01, 0x80, // ## + 0x06, 0x00, // ## + 0x01, 0x80, // ## + 0x00, 0x60, // ## + 0x07, 0x80, // #### + + // @828 'x' (5 pixels wide) + 0x04, 0x20, // # # + 0x02, 0x40, // # # + 0x01, 0x80, // ## + 0x02, 0x40, // # # + 0x04, 0x20, // # # + + // @838 'y' (5 pixels wide) + 0x06, 0x00, // ## + 0x01, 0x98, // ## ## + 0x00, 0x60, // ## + 0x01, 0x80, // ## + 0x06, 0x00, // ## + + // @848 'z' (4 pixels wide) + 0x04, 0x60, // # ## + 0x04, 0xA0, // # # # + 0x05, 0x20, // # # # + 0x06, 0x20, // ## # + + // @856 '{' (4 pixels wide) + 0x01, 0x00, // # + 0x01, 0x00, // # + 0x1E, 0xF0, // #### #### + 0x20, 0x08, // # # + + // @864 '|' (1 pixels wide) + 0x3F, 0xF8, // ########### + + // @866 '}' (4 pixels wide) + 0x20, 0x08, // # # + 0x1E, 0xF0, // #### #### + 0x01, 0x00, // # + 0x01, 0x00, // # + + // @874 '~' (7 pixels wide) + 0x01, 0x80, // ## + 0x02, 0x00, // # + 0x02, 0x00, // # + 0x01, 0x00, // # + 0x00, 0x80, // # + 0x00, 0x80, // # + 0x03, 0x00, // ## +}; + +// Character descriptors for Tahoma 8pt +// { [Char width in bits], [Char height in bits], [Offset into tahoma_8ptCharBitmaps in bytes] } +const FONT_CHAR_INFO PROGMEM tahoma_8ptDescriptors[] = +{ + {2, 13, 0}, // + {1, 13, 4}, // ! + {3, 13, 6}, // " + {7, 13, 12}, // # + {5, 13, 26}, // $ + {10, 13, 36}, // % + {7, 13, 56}, // & + {1, 13, 70}, // ' + {3, 13, 72}, // ( + {3, 13, 78}, // ) + {5, 13, 84}, // * + {7, 13, 94}, // + + {2, 13, 108}, // , + {3, 13, 112}, // - + {1, 13, 118}, // . + {3, 13, 120}, // / + {5, 13, 126}, // 0 + {3, 13, 136}, // 1 + {5, 13, 142}, // 2 + {5, 13, 152}, // 3 + {5, 13, 162}, // 4 + {5, 13, 172}, // 5 + {5, 13, 182}, // 6 + {5, 13, 192}, // 7 + {5, 13, 202}, // 8 + {5, 13, 212}, // 9 + {1, 13, 222}, // : + {2, 13, 224}, // ; + {6, 13, 228}, // < + {7, 13, 240}, // = + {6, 13, 254}, // > + {4, 13, 266}, // ? + {9, 13, 274}, // @ + {6, 13, 292}, // A + {5, 13, 304}, // B + {6, 13, 314}, // C + {6, 13, 326}, // D + {5, 13, 338}, // E + {5, 13, 348}, // F + {6, 13, 358}, // G + {6, 13, 370}, // H + {3, 13, 382}, // I + {4, 13, 388}, // J + {5, 13, 396}, // K + {4, 13, 406}, // L + {7, 13, 414}, // M + {6, 13, 428}, // N + {7, 13, 440}, // O + {5, 13, 454}, // P + {7, 13, 464}, // Q + {6, 13, 478}, // R + {5, 13, 490}, // S + {5, 13, 500}, // T + {6, 13, 510}, // U + {5, 13, 522}, // V + {9, 13, 532}, // W + {5, 13, 550}, // X + {5, 13, 560}, // Y + {5, 13, 570}, // Z + {3, 13, 580}, // [ + {3, 13, 586}, // \ . + {3, 13, 592}, // ] + {7, 13, 598}, // ^ + {6, 13, 612}, // _ + {2, 13, 624}, // ` + {5, 13, 628}, // a + {5, 13, 638}, // b + {4, 13, 648}, // c + {5, 13, 656}, // d + {5, 13, 666}, // e + {3, 13, 676}, // f + {5, 13, 682}, // g + {5, 13, 692}, // h + {1, 13, 702}, // i + {2, 13, 704}, // j + {5, 13, 708}, // k + {1, 13, 718}, // l + {7, 13, 720}, // m + {5, 13, 734}, // n + {5, 13, 744}, // o + {5, 13, 754}, // p + {5, 13, 764}, // q + {3, 13, 774}, // r + {4, 13, 780}, // s + {3, 13, 788}, // t + {5, 13, 794}, // u + {5, 13, 804}, // v + {7, 13, 814}, // w + {5, 13, 828}, // x + {5, 13, 838}, // y + {4, 13, 848}, // z + {4, 13, 856}, // { + {1, 13, 864}, // | + {4, 13, 866}, // } + {7, 13, 874}, // ~ +}; + +// Font information for Tahoma 8pt +const FONT_INFO tahoma_8ptFontInfo = +{ + 13, // Character height + ' ', // Start character + '~', // End character + 2, // Width, in pixels, of space character + tahoma_8ptDescriptors, // Character descriptor array + tahoma_8ptBitmaps, // Character bitmap array +}; + diff --git a/Arduino/BTCDieselHeater/Tahoma8.h b/Arduino/BTCDieselHeater/Tahoma8.h new file mode 100644 index 0000000..2dbf400 --- /dev/null +++ b/Arduino/BTCDieselHeater/Tahoma8.h @@ -0,0 +1,7 @@ +#include "FontTypes.h" + +// Font data for Tahoma 8pt +extern const uint8_t tahoma_8ptBitmaps[] PROGMEM; +extern const FONT_CHAR_INFO tahoma_8ptDescriptors[] PROGMEM; +extern const FONT_INFO tahoma_8ptFontInfo; +