/* * Blockbuster 7000 font * --------------------- * * This is a simple 6x6 font, covering A-Z, a-z, 0-9, plus some punctuation. The * font is loosely inspired by the ZX Spectrum ROM typeface. All characters * incorporate an empty column on the right, and most (except lowercase g, j, p, * and q) have an empty row on the bottom. In eseence, the prevailing effective * size is 5x5, and it is safe to render text on a 6x6 grid. * * (Compare to the ZX Spectrum size of 8x8 nominal, 6x6 effective.) * * The PROGMEM macro is defined in for AVR platforms which use * the Harvard memory architecture. It can be skipped elsewhere. * * Right now, this only implements select codepoints and not a complete ASCII * table to save memory; the current size is 414 bytes, or about 0.3% of * the available flash memory on an ATmega1284 MCU. A complete set of * printable ASCII characters would cost you twice as much. * * For better viewing: * sed 's/0b//;s/,//;s/0/ /g;s/1/█/g' font-inline.h | more * * Copyright 2022 by Michal Zalewski * */ const uint8_t fnt_upper[26][6] PROGMEM = { /* A */ { 0b011100, 0b100010, 0b100010, 0b111110, 0b100010, 0b000000 }, /* B */ { 0b111100, 0b100010, 0b111100, 0b100010, 0b111100, 0b000000 }, /* C */ { 0b011100, 0b100010, 0b100000, 0b100010, 0b011100, 0b000000 }, /* D */ { 0b111000, 0b100100, 0b100010, 0b100010, 0b111100, 0b000000 }, /* E */ { 0b111110, 0b100000, 0b111100, 0b100000, 0b111110, 0b000000 }, /* F */ { 0b111110, 0b100000, 0b111100, 0b100000, 0b100000, 0b000000 }, /* G */ { 0b011100, 0b100000, 0b100110, 0b100010, 0b011100, 0b000000 }, /* H */ { 0b100010, 0b100010, 0b111110, 0b100010, 0b100010, 0b000000 }, /* I */ { 0b011100, 0b001000, 0b001000, 0b001000, 0b011100, 0b000000 }, /* J */ { 0b000010, 0b000010, 0b000010, 0b100010, 0b011100, 0b000000 }, /* K */ { 0b100010, 0b100100, 0b111000, 0b100100, 0b100010, 0b000000 }, /* L */ { 0b100000, 0b100000, 0b100000, 0b100000, 0b111110, 0b000000 }, /* M */ { 0b100010, 0b110110, 0b101010, 0b100010, 0b100010, 0b000000 }, /* N */ { 0b100010, 0b110010, 0b101010, 0b100110, 0b100010, 0b000000 }, /* O */ { 0b011100, 0b100010, 0b100010, 0b100010, 0b011100, 0b000000 }, /* P */ { 0b111100, 0b100010, 0b111100, 0b100000, 0b100000, 0b000000 }, /* Q */ { 0b011100, 0b100010, 0b100010, 0b100110, 0b011110, 0b000000 }, /* R */ { 0b111100, 0b100010, 0b111100, 0b100100, 0b100010, 0b000000 }, /* S */ { 0b011110, 0b100000, 0b011100, 0b000010, 0b111100, 0b000000 }, /* T */ { 0b111110, 0b001000, 0b001000, 0b001000, 0b001000, 0b000000 }, /* U */ { 0b100010, 0b100010, 0b100010, 0b100010, 0b011100, 0b000000 }, /* V */ { 0b100010, 0b100010, 0b100010, 0b010100, 0b001000, 0b000000 }, /* W */ { 0b100010, 0b100010, 0b101010, 0b101010, 0b010100, 0b000000 }, /* X */ { 0b100010, 0b010100, 0b001000, 0b010100, 0b100010, 0b000000 }, /* Y */ { 0b100010, 0b010100, 0b001000, 0b001000, 0b001000, 0b000000 }, /* Z */ { 0b111110, 0b000100, 0b001000, 0b010000, 0b111110, 0b000000 } }; const uint8_t fnt_lower[26][6] PROGMEM = { /* a */ { 0b000000, 0b011110, 0b100010, 0b100010, 0b011110, 0b000000 }, /* b */ { 0b100000, 0b111100, 0b100010, 0b100010, 0b111100, 0b000000 }, /* c */ { 0b000000, 0b011110, 0b100000, 0b100000, 0b011110, 0b000000 }, /* d */ { 0b000010, 0b011110, 0b100010, 0b100010, 0b011110, 0b000000 }, /* e */ { 0b000000, 0b011100, 0b111110, 0b100000, 0b011100, 0b000000 }, /* f */ { 0b000110, 0b001000, 0b011110, 0b001000, 0b001000, 0b000000 }, /* g */ { 0b000000, 0b011110, 0b100010, 0b011110, 0b000010, 0b011100 }, /* h */ { 0b100000, 0b100000, 0b111100, 0b100010, 0b100010, 0b000000 }, /* i */ { 0b001000, 0b000000, 0b011000, 0b001000, 0b001000, 0b000000 }, /* j */ { 0b001000, 0b000000, 0b001000, 0b001000, 0b001000, 0b010000 }, /* k */ { 0b010000, 0b010000, 0b010010, 0b011100, 0b010010, 0b000000 }, /* l */ { 0b010000, 0b010000, 0b010000, 0b010000, 0b001100, 0b000000 }, /* m */ { 0b000000, 0b110100, 0b101010, 0b101010, 0b100010, 0b000000 }, /* n */ { 0b000000, 0b111100, 0b100010, 0b100010, 0b100010, 0b000000 }, /* o */ { 0b000000, 0b011100, 0b100010, 0b100010, 0b011100, 0b000000 }, /* p */ { 0b000000, 0b111100, 0b100010, 0b100010, 0b111100, 0b100000 }, /* q */ { 0b000000, 0b011110, 0b100010, 0b100010, 0b011110, 0b000010 }, /* r */ { 0b000000, 0b111100, 0b100010, 0b100000, 0b100000, 0b000000 }, /* s */ { 0b000000, 0b001110, 0b011000, 0b000110, 0b111100, 0b000000 }, /* t */ { 0b010000, 0b111100, 0b010000, 0b010000, 0b001100, 0b0000000 }, /* u */ { 0b000000, 0b100010, 0b100010, 0b100010, 0b011100, 0b000000 }, /* v */ { 0b000000, 0b100010, 0b100010, 0b010100, 0b001000, 0b000000 }, /* w */ { 0b000000, 0b100010, 0b101010, 0b101010, 0b010100, 0b000000 }, /* x */ { 0b000000, 0b010010, 0b001100, 0b001100, 0b010010, 0b000000 }, /* y */ { 0b000000, 0b100010, 0b100010, 0b011110, 0b000010, 0b001100 }, /* z */ { 0b000000, 0b011110, 0b000100, 0b001000, 0b011110, 0b000000 } }; const uint8_t fnt_digits[10][6] PROGMEM = { /* 0 */ { 0b011100, 0b100010, 0b101010, 0b100010, 0b011100, 0b000000 }, /* 1 */ { 0b001000, 0b011000, 0b001000, 0b001000, 0b011100, 0b000000 }, /* 2 */ { 0b001100, 0b010010, 0b000100, 0b001000, 0b011110, 0b000000 }, /* 3 */ { 0b011110, 0b000010, 0b000100, 0b010010, 0b001100, 0b000000 }, /* 4 */ { 0b010100, 0b010100, 0b011110, 0b000100, 0b000100, 0b000000 }, /* 5 */ { 0b011110, 0b010000, 0b011100, 0b000010, 0b011100, 0b000000 }, /* 6 */ { 0b001100, 0b010000, 0b011100, 0b010010, 0b001100, 0b000000 }, /* 7 */ { 0b011110, 0b000010, 0b000100, 0b001000, 0b001000, 0b000000 }, /* 8 */ { 0b001100, 0b010010, 0b001100, 0b010010, 0b001100, 0b000000 }, /* 9 */ { 0b001100, 0b010010, 0b001110, 0b000010, 0b001100, 0b000000 } }; #define FNT_PERIOD 0 #define FNT_COMMA 1 #define FNT_EXMARK 2 #define FNT_QMARK 3 #define FNT_COLON 4 #define FNT_PLUS 5 #define FNT_MINUS 6 const uint8_t fnt_specials[7][6] PROGMEM = { /* . */ { 0b000000, 0b000000, 0b000000, 0b000000, 0b001000, 0b000000 }, /* , */ { 0b000000, 0b000000, 0b000000, 0b001000, 0b010000, 0b000000 }, /* ! */ { 0b001000, 0b001000, 0b001000, 0b000000, 0b001000, 0b000000 }, /* ? */ { 0b111000, 0b000100, 0b001000, 0b000000, 0b001000, 0b000000 }, /* : */ { 0b000000, 0b000000, 0b001000, 0b000000, 0b001000, 0b000000 }, /* + */ { 0b000000, 0b000000, 0b001000, 0b011100, 0b001000, 0b000000 }, /* - */ { 0b000000, 0b000000, 0b000000, 0b011100, 0b000000, 0b000000 } };