Files
uv-k1-k5v3-firmware-custom/App/font.c
T

893 lines
59 KiB
C

/* Copyright 2023 Dual Tachyon
* https://github.com/DualTachyon
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <assert.h>
#include "font.h"
// removed last and middle column which was all 0x00
// also the space char is not needed
// Uncompressed reference kept for byte-for-byte verification of the packed font.
#if 0
const uint8_t gFontBig[95 - 1][16 - 2] =
{
#if 0
// {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // , 0x00}, // ' '
{0x00, 0x00, 0x70, 0xF8, 0xF8, 0x70, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x1B, 0x1B, 0x00, 0x00}, // , 0x00}, // '!'
{0x00, 0x1E, 0x3E, 0x00, 0x00, 0x3E, 0x1E, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // , 0x00}, // '"'
{0x40, 0xF0, 0xF0, 0x40, 0xF0, 0xF0, 0x40, /*0x00,*/ 0x04, 0x1F, 0x1F, 0x04, 0x1F, 0x1F, 0x04}, // , 0x00}, // '#'
{0x70, 0xF8, 0x88, 0x8F, 0x8F, 0x98, 0x30, /*0x00,*/ 0x06, 0x0C, 0x08, 0x38, 0x38, 0x0F, 0x07}, // , 0x00}, // '$'
{0x60, 0x60, 0x00, 0x00, 0x80, 0xC0, 0x60, /*0x00,*/ 0x18, 0x0C, 0x06, 0x03, 0x01, 0x18, 0x18}, // , 0x00}, // '%'
{0x00, 0xB0, 0xF8, 0xC8, 0x78, 0xB0, 0x80, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x11, 0x0F, 0x1F, 0x10}, // , 0x00}, // '&'
{0x00, 0x20, 0x3E, 0x1E, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // , 0x00}, // '''
{0x00, 0x00, 0xE0, 0xF0, 0x18, 0x08, 0x00, /*0x00,*/ 0x00, 0x00, 0x07, 0x0F, 0x18, 0x10, 0x00}, // , 0x00}, // '('
{0x00, 0x00, 0x08, 0x18, 0xF0, 0xE0, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x18, 0x0F, 0x07, 0x00}, // , 0x00}, // ')'
{0x00, 0x40, 0xC0, 0x80, 0x80, 0xC0, 0x40, /*0x00,*/ 0x01, 0x05, 0x07, 0x03, 0x03, 0x07, 0x05}, // , 0x01}, // '*'
{0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, /*0x00,*/ 0x00, 0x01, 0x01, 0x07, 0x07, 0x01, 0x01}, // , 0x00}, // '+'
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x20, 0x3C, 0x1C, 0x00, 0x00}, // , 0x00}, // ','
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, // , 0x00}, // '-'
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00}, // , 0x00}, // '.'
{0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, /*0x00,*/ 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00}, // , 0x00}, // '/'
{0xF0, 0xF8, 0x08, 0x88, 0x48, 0xF8, 0xF0, /*0x00,*/ 0x0F, 0x1F, 0x12, 0x11, 0x10, 0x1F, 0x0F}, // , 0x00}, // '0'
{0x00, 0x20, 0x30, 0xF8, 0xF8, 0x00, 0x00, /*0x00,*/ 0x00, 0x10, 0x10, 0x1F, 0x1F, 0x10, 0x10}, // , 0x00}, // '1'
{0x10, 0x18, 0x08, 0x88, 0xC8, 0x78, 0x30, /*0x00,*/ 0x1C, 0x1E, 0x13, 0x11, 0x10, 0x18, 0x18}, // , 0x00}, // '2'
{0x10, 0x18, 0x88, 0x88, 0x88, 0xF8, 0x70, /*0x00,*/ 0x08, 0x18, 0x10, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // '3'
{0x80, 0xC0, 0x60, 0x30, 0xF8, 0xF8, 0x00, /*0x00,*/ 0x01, 0x01, 0x01, 0x11, 0x1F, 0x1F, 0x11}, // , 0x00}, // '4'
{0xF8, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x08, /*0x00,*/ 0x08, 0x18, 0x10, 0x10, 0x11, 0x1F, 0x0F}, // , 0x00}, // '5'
{0xE0, 0xF0, 0x98, 0x88, 0x88, 0x80, 0x00, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // '6'
{0x18, 0x18, 0x08, 0x08, 0x88, 0xF8, 0x78, /*0x00,*/ 0x00, 0x00, 0x1E, 0x1F, 0x01, 0x00, 0x00}, // , 0x00}, // '7'
{0x70, 0xF8, 0x88, 0x88, 0x88, 0xF8, 0x70, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // '8'
{0x70, 0xF8, 0x88, 0x88, 0x88, 0xF8, 0xF0, /*0x00,*/ 0x00, 0x10, 0x10, 0x10, 0x18, 0x0F, 0x07}, // , 0x00}, // '9'
{0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x00}, // , 0x00}, // ':'
{0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x1C, 0x0C, 0x00, 0x00}, // , 0x00}, // ';'
{0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x10, /*0x00,*/ 0x00, 0x01, 0x03, 0x06, 0x0C, 0x18, 0x10}, // , 0x00}, // '<'
{0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, /*0x00,*/ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}, // , 0x00}, // '='
{0x00, 0x10, 0x30, 0x60, 0xC0, 0x80, 0x00, /*0x00,*/ 0x00, 0x10, 0x18, 0x0C, 0x06, 0x03, 0x01}, // , 0x00}, // '>'
{0x30, 0x38, 0x08, 0x88, 0xC8, 0x78, 0x30, /*0x00,*/ 0x00, 0x00, 0x00, 0x1B, 0x1B, 0x00, 0x00}, // , 0x00}, // '?'
{0xE0, 0xF0, 0x10, 0x90, 0x90, 0xF0, 0xE0, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x17, 0x17, 0x17, 0x03}, // , 0x00}, // '@'
{0xC0, 0xE0, 0x30, 0x18, 0x30, 0xE0, 0xC0, /*0x00,*/ 0x1F, 0x1F, 0x01, 0x01, 0x01, 0x1F, 0x1F}, // , 0x00}, // 'A'
{0x08, 0xF8, 0xF8, 0x88, 0x88, 0xF8, 0x70, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // 'B'
{0xE0, 0xF0, 0x18, 0x08, 0x08, 0x18, 0x30, /*0x00,*/ 0x07, 0x0F, 0x18, 0x10, 0x10, 0x18, 0x0C}, // , 0x00}, // 'C'
{0x08, 0xF8, 0xF8, 0x08, 0x18, 0xF0, 0xE0, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x18, 0x0F, 0x07}, // , 0x00}, // 'D'
{0x08, 0xF8, 0xF8, 0x88, 0xC8, 0x18, 0x38, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x11, 0x18, 0x1C}, // , 0x00}, // 'E'
{0x08, 0xF8, 0xF8, 0x88, 0xC8, 0x18, 0x38, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x01, 0x00, 0x00}, // , 0x00}, // 'F'
{0xE0, 0xF0, 0x18, 0x08, 0x08, 0x18, 0x30, /*0x00,*/ 0x07, 0x0F, 0x18, 0x11, 0x11, 0x0F, 0x1F}, // , 0x00}, // 'G'
{0xF8, 0xF8, 0x80, 0x80, 0x80, 0xF8, 0xF8, /*0x00,*/ 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x1F, 0x1F}, // , 0x00}, // 'H'
{0x00, 0x00, 0x08, 0xF8, 0xF8, 0x08, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x1F, 0x1F, 0x10, 0x00}, // , 0x00}, // 'I'
{0x00, 0x00, 0x00, 0x08, 0xF8, 0xF8, 0x08, /*0x00,*/ 0x0E, 0x1E, 0x10, 0x10, 0x1F, 0x0F, 0x00}, // , 0x00}, // 'J'
{0x08, 0xF8, 0xF8, 0x80, 0xE0, 0x78, 0x18, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x01, 0x03, 0x1E, 0x1C}, // , 0x00}, // 'K'
{0x08, 0xF8, 0xF8, 0x08, 0x00, 0x00, 0x00, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x10, 0x18, 0x1C}, // , 0x00}, // 'L'
{0xF8, 0xF8, 0x70, 0xE0, 0x70, 0xF8, 0xF8, /*0x00,*/ 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x1F, 0x1F}, // , 0x00}, // 'M'
{0xF8, 0xF8, 0x70, 0xE0, 0xC0, 0xF8, 0xF8, /*0x00,*/ 0x1F, 0x1F, 0x00, 0x00, 0x01, 0x1F, 0x1F}, // , 0x00}, // 'N'
{0xE0, 0xF0, 0x18, 0x08, 0x18, 0xF0, 0xE0, /*0x00,*/ 0x07, 0x0F, 0x18, 0x10, 0x18, 0x0F, 0x07}, // , 0x00}, // 'O'
{0x08, 0xF8, 0xF8, 0x88, 0x88, 0xF8, 0x70, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x00, 0x00, 0x00}, // , 0x00}, // 'P'
{0xF0, 0xF8, 0x08, 0x08, 0x08, 0xF8, 0xF0, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x1C, 0x78, 0x7F, 0x4F}, // , 0x00}, // 'Q'
{0x08, 0xF8, 0xF8, 0x88, 0x88, 0xF8, 0x70, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x00, 0x01, 0x1F, 0x1E}, // , 0x00}, // 'R'
{0x30, 0x78, 0xC8, 0x88, 0x88, 0x38, 0x30, /*0x00,*/ 0x0C, 0x1C, 0x10, 0x10, 0x11, 0x1F, 0x0E}, // , 0x00}, // 'S'
{0x00, 0x38, 0x18, 0xF8, 0xF8, 0x18, 0x38, /*0x00,*/ 0x00, 0x00, 0x10, 0x1F, 0x1F, 0x10, 0x00}, // , 0x00}, // 'T'
{0xF8, 0xF8, 0x00, 0x00, 0x00, 0xF8, 0xF8, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // 'U'
{0xF8, 0xF8, 0x00, 0x00, 0x00, 0xF8, 0xF8, /*0x00,*/ 0x03, 0x07, 0x0C, 0x18, 0x0C, 0x07, 0x03}, // , 0x00}, // 'V'
{0xF8, 0xF8, 0x00, 0x00, 0x00, 0xF8, 0xF8, /*0x00,*/ 0x07, 0x1F, 0x1C, 0x07, 0x1C, 0x1F, 0x07}, // , 0x00}, // 'W'
{0x18, 0x78, 0xE0, 0x80, 0xE0, 0x78, 0x18, /*0x00,*/ 0x18, 0x1E, 0x07, 0x01, 0x07, 0x1E, 0x18}, // , 0x00}, // 'X'
{0x00, 0x78, 0xF8, 0x80, 0x80, 0xF8, 0x78, /*0x00,*/ 0x00, 0x00, 0x10, 0x1F, 0x1F, 0x10, 0x00}, // , 0x00}, // 'Y'
{0x38, 0x18, 0x08, 0x88, 0xC8, 0x78, 0x38, /*0x00,*/ 0x1C, 0x1E, 0x13, 0x11, 0x10, 0x18, 0x1C}, // , 0x00}, // 'Z'
{0x00, 0x00, 0xF8, 0xF8, 0x08, 0x08, 0x00, /*0x00,*/ 0x00, 0x00, 0x1F, 0x1F, 0x10, 0x10, 0x00}, // , 0x00}, // '['
{0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C}, // , 0x00}, // '"\'
{0x00, 0x00, 0x08, 0x08, 0xF8, 0xF8, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x10, 0x1F, 0x1F, 0x00}, // , 0x00}, // ']'
{0x10, 0x18, 0x0E, 0x07, 0x0E, 0x18, 0x10, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // , 0x00}, // '^'
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40}, // , 0x40}, // '_'
{0x00, 0x00, 0x07, 0x0F, 0x08, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // , 0x00}, // '`'
{0x00, 0x40, 0x40, 0x40, 0xC0, 0x80, 0x00, /*0x00,*/ 0x0E, 0x1F, 0x11, 0x11, 0x0F, 0x1F, 0x10}, // , 0x00}, // 'a'
{0x08, 0xF8, 0xF8, 0x40, 0xC0, 0x80, 0x00, /*0x00,*/ 0x10, 0x1F, 0x0F, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // 'b'
{0x80, 0xC0, 0x40, 0x40, 0x40, 0xC0, 0x80, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x10, 0x18, 0x08}, // , 0x00}, // 'c'
{0x00, 0x80, 0xC0, 0x48, 0xF8, 0xF8, 0x00, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x0F, 0x1F, 0x10}, // , 0x00}, // 'd'
{0x80, 0xC0, 0x40, 0x40, 0x40, 0xC0, 0x80, /*0x00,*/ 0x0F, 0x1F, 0x11, 0x11, 0x11, 0x19, 0x09}, // , 0x00}, // 'e'
{0x80, 0xF0, 0xF8, 0x88, 0x18, 0x30, 0x00, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x00, 0x00, 0x00}, // , 0x00}, // 'f'
{0x80, 0xC0, 0x40, 0x40, 0x80, 0xC0, 0x40, /*0x00,*/ 0x4F, 0xDF, 0x90, 0x90, 0xFF, 0x7F, 0x00}, // , 0x00}, // 'g'
{0x08, 0xF8, 0xF8, 0x80, 0x40, 0xC0, 0x80, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x00, 0x00, 0x1F, 0x1F}, // , 0x00}, // 'h'
{0x00, 0x00, 0x40, 0xD8, 0xD8, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x1F, 0x1F, 0x10, 0x00}, // , 0x00}, // 'i'
{0x00, 0x00, 0x00, 0x00, 0x40, 0xD8, 0xD8, /*0x00,*/ 0x00, 0x60, 0xE0, 0x80, 0x80, 0xFF, 0x7F}, // , 0x00}, // 'j'
{0x08, 0xF8, 0xF8, 0x00, 0x80, 0xC0, 0x40, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x03, 0x07, 0x1C, 0x18}, // , 0x00}, // 'k'
{0x00, 0x00, 0x08, 0xF8, 0xF8, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x1F, 0x1F, 0x10, 0x00}, // , 0x00}, // 'l'
{0xC0, 0xC0, 0xC0, 0x80, 0xC0, 0xC0, 0x80, /*0x00,*/ 0x1F, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x1F}, // , 0x00}, // 'm'
{0x40, 0xC0, 0x80, 0x40, 0x40, 0xC0, 0x80, /*0x00,*/ 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x1F, 0x1F}, // , 0x00}, // 'n'
{0x80, 0xC0, 0x40, 0x40, 0x40, 0xC0, 0x80, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // 'o'
{0x40, 0xC0, 0x80, 0x40, 0x40, 0xC0, 0x80, /*0x00,*/ 0x80, 0xFF, 0xFF, 0x90, 0x10, 0x1F, 0x0F}, // , 0x00}, // 'p'
{0x80, 0xC0, 0x40, 0x40, 0x80, 0xC0, 0x40, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x90, 0xFF, 0xFF, 0x80}, // , 0x00}, // 'q'
{0x40, 0xC0, 0x80, 0xC0, 0x40, 0xC0, 0x80, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x00, 0x00, 0x01}, // , 0x00}, // 'r'
{0x80, 0xC0, 0x40, 0x40, 0x40, 0xC0, 0x80, /*0x00,*/ 0x08, 0x19, 0x13, 0x12, 0x16, 0x1C, 0x08}, // , 0x00}, // 's'
{0x40, 0x40, 0xF0, 0xF8, 0x40, 0x40, 0x00, /*0x00,*/ 0x00, 0x00, 0x0F, 0x1F, 0x10, 0x18, 0x08}, // , 0x00}, // 't'
{0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x0F, 0x1F, 0x10}, // , 0x00}, // 'u'
{0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, /*0x00,*/ 0x00, 0x07, 0x0F, 0x18, 0x18, 0x0F, 0x07}, // , 0x00}, // 'v'
{0xC0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xC0, /*0x00,*/ 0x0F, 0x1F, 0x18, 0x0E, 0x18, 0x1F, 0x0F}, // , 0x00}, // 'w'
{0x40, 0xC0, 0x80, 0x00, 0x80, 0xC0, 0x40, /*0x00,*/ 0x10, 0x18, 0x0F, 0x07, 0x0F, 0x18, 0x10}, // , 0x00}, // 'x'
{0xC0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xC0, /*0x00,*/ 0x8F, 0x9F, 0x90, 0x90, 0xD0, 0x7F, 0x3F}, // , 0x00}, // 'y'
{0xC0, 0xC0, 0x40, 0x40, 0xC0, 0xC0, 0x40, /*0x00,*/ 0x18, 0x1C, 0x16, 0x13, 0x11, 0x18, 0x18}, // , 0x00}, // 'z'
{0x00, 0x80, 0x80, 0xF0, 0x78, 0x08, 0x08, /*0x00,*/ 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x10, 0x10}, // , 0x00}, // '{'
{0x00, 0x00, 0x00, 0x78, 0x78, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00}, // , 0x00}, // '|'
{0x00, 0x08, 0x08, 0x78, 0xF0, 0x80, 0x80, /*0x00,*/ 0x00, 0x10, 0x10, 0x1F, 0x0F, 0x00, 0x00}, // , 0x00}, // '}'
{0x10, 0x18, 0x08, 0x18, 0x10, 0x18, 0x08, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // , 0x00} // '->'
#else
// {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // ' '
{0x00, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00}, // '!'
{0x00, 0x0F, 0x1F, 0x00, 0x00, 0x1F, 0x0F, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '"'
{0x20, 0xF8, 0xF8, 0x20, 0xF8, 0xF8, 0x20, /*0x00,*/ 0x02, 0x0F, 0x0F, 0x02, 0x0F, 0x0F, 0x02}, // '#'
{0x70, 0xF8, 0x88, 0x8E, 0x8E, 0x98, 0x10, /*0x00,*/ 0x04, 0x0C, 0x08, 0x38, 0x38, 0x0F, 0x07}, // '$'
{0x30, 0x30, 0x00, 0x80, 0xC0, 0x60, 0x30, /*0x00,*/ 0x0C, 0x06, 0x03, 0x01, 0x00, 0x0C, 0x0C}, // '%'
{0x80, 0xD8, 0x7C, 0xE4, 0xBC, 0xD8, 0x40, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x07, 0x0F, 0x08}, // '&'
{0x00, 0x10, 0x1F, 0x0F, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '''
{0x00, 0x00, 0xF0, 0xF8, 0x0C, 0x04, 0x00, /*0x00,*/ 0x00, 0x00, 0x03, 0x07, 0x0C, 0x08, 0x00}, // '('
{0x00, 0x00, 0x04, 0x0C, 0xF8, 0xF0, 0x00, /*0x00,*/ 0x00, 0x00, 0x08, 0x0C, 0x07, 0x03, 0x00}, // ')'
{0x00, 0x80, 0xA0, 0xE0, 0xC0, 0xE0, 0xA0, /*0x80,*/ 0x00, 0x00, 0x02, 0x03, 0x01, 0x03, 0x02}, // '*'
{0x00, 0x80, 0x80, 0xE0, 0xE0, 0x80, 0x80, /*0x00,*/ 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00}, // '+'
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x1E, 0x0E, 0x00, 0x00}, // ','
{0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '-'
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x00}, // '.'
{0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, /*0x00,*/ 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00}, // '/'
{0xF8, 0xFC, 0x04, 0x04, 0x04, 0xFC, 0xF8, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // '0'
{0x00, 0x10, 0x18, 0xFC, 0xFC, 0x00, 0x00, /*0x00,*/ 0x00, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08}, // '1'
{0x18, 0x1C, 0x04, 0x84, 0xC4, 0x7C, 0x38, /*0x00,*/ 0x0C, 0x0E, 0x0B, 0x09, 0x08, 0x08, 0x08}, // '2'
{0x18, 0x1C, 0x44, 0x44, 0x44, 0xFC, 0xB8, /*0x00,*/ 0x06, 0x0E, 0x08, 0x08, 0x08, 0x0F, 0x07}, // '3'
{0x80, 0xC0, 0x60, 0x30, 0x18, 0xFC, 0xFC, /*0x00,*/ 0x01, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x0F}, // '4'
{0x7C, 0x7C, 0x44, 0x44, 0x44, 0xC4, 0x84, /*0x00,*/ 0x04, 0x0C, 0x08, 0x08, 0x08, 0x0F, 0x07}, // '5'
{0xF0, 0xF8, 0x4C, 0x44, 0x44, 0xC4, 0x80, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // '6'
{0x04, 0x04, 0x04, 0x84, 0xE4, 0x7C, 0x1C, /*0x00,*/ 0x00, 0x00, 0x0E, 0x0F, 0x01, 0x00, 0x00}, // '7'
{0xB8, 0xFC, 0x44, 0x44, 0x44, 0xFC, 0xB8, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // '8'
{0x78, 0xFC, 0x84, 0x84, 0x84, 0xFC, 0xF8, /*0x00,*/ 0x00, 0x08, 0x08, 0x08, 0x0C, 0x07, 0x03}, // '9'
{0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00}, // ':'
{0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x08, 0x0E, 0x06, 0x00, 0x00}, // ';'
{0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x08, /*0x00,*/ 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x08}, // '<'
{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, /*0x00,*/ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, // '='
{0x00, 0x08, 0x18, 0x30, 0x60, 0xC0, 0x80, /*0x00,*/ 0x00, 0x08, 0x0C, 0x06, 0x03, 0x01, 0x00}, // '>'
{0x38, 0x3C, 0x04, 0x84, 0xC4, 0x7C, 0x38, /*0x00,*/ 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00}, // '?'
{0xF0, 0xF8, 0x08, 0xC8, 0xC8, 0xF8, 0xF0, /*0x00,*/ 0x07, 0x0F, 0x08, 0x0B, 0x0B, 0x0B, 0x01}, // '@'
{0xF8, 0xFC, 0x84, 0x84, 0x84, 0xFC, 0xF8, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F}, // 'A'
{0xFC, 0xFC, 0x44, 0x44, 0x44, 0xFC, 0xB8, /*0x00,*/ 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'B'
{0xF8, 0xFC, 0x04, 0x04, 0x04, 0x1C, 0x18, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0E, 0x06}, // 'C'
{0xFC, 0xFC, 0x04, 0x04, 0x0C, 0xF8, 0xF0, /*0x00,*/ 0x0F, 0x0F, 0x08, 0x08, 0x0C, 0x07, 0x03}, // 'D'
{0xFC, 0xFC, 0x44, 0x44, 0x44, 0x04, 0x04, /*0x00,*/ 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08}, // 'E'
{0xFC, 0xFC, 0x44, 0x44, 0x44, 0x04, 0x04, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00}, // 'F'
{0xF8, 0xFC, 0x04, 0x84, 0x84, 0x9C, 0x98, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'G'
{0xFC, 0xFC, 0x40, 0x40, 0x40, 0xFC, 0xFC, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F}, // 'H'
{0x00, 0x00, 0x04, 0xFC, 0xFC, 0x04, 0x00, /*0x00,*/ 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x00}, // 'I'
{0x00, 0x00, 0x00, 0x04, 0xFC, 0xFC, 0x04, /*0x00,*/ 0x06, 0x0E, 0x08, 0x08, 0x0F, 0x07, 0x00}, // 'J'
{0xFC, 0xFC, 0xE0, 0x30, 0x18, 0x0C, 0x04, /*0x00,*/ 0x0F, 0x0F, 0x01, 0x03, 0x06, 0x0C, 0x08}, // 'K'
{0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08}, // 'L'
{0xFC, 0xFC, 0x18, 0x70, 0x18, 0xFC, 0xFC, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F}, // 'M'
{0xFC, 0xFC, 0x60, 0xC0, 0x80, 0xFC, 0xFC, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x01, 0x0F, 0x0F}, // 'N'
{0xF8, 0xFC, 0x04, 0x04, 0x04, 0xFC, 0xF8, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'O'
{0xFC, 0xFC, 0x84, 0x84, 0x84, 0xFC, 0x78, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00}, // 'P'
{0xF8, 0xFC, 0x04, 0x04, 0x04, 0xFC, 0xF8, /*0x00,*/ 0x07, 0x0F, 0x08, 0x0C, 0x0C, 0x1F, 0x17}, // 'Q'
{0xFC, 0xFC, 0x84, 0x84, 0x84, 0xFC, 0x78, /*0x00,*/ 0x0F, 0x0F, 0x01, 0x03, 0x06, 0x0C, 0x08}, // 'R'
{0x38, 0x7C, 0x44, 0x44, 0x44, 0xCC, 0x88, /*0x00,*/ 0x06, 0x0E, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'S'
{0x00, 0x04, 0x04, 0xFC, 0xFC, 0x04, 0x04, /*0x00,*/ 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00}, // 'T'
{0xFC, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'U'
{0x7C, 0xFC, 0x80, 0x00, 0x80, 0xFC, 0x7C, /*0x00,*/ 0x00, 0x03, 0x0F, 0x0C, 0x0F, 0x03, 0x00}, // 'V'
{0xFC, 0xFC, 0x00, 0x80, 0x00, 0xFC, 0xFC, /*0x00,*/ 0x0F, 0x0F, 0x06, 0x03, 0x06, 0x0F, 0x0F}, // 'W'
{0x0C, 0x3C, 0xF0, 0xC0, 0xF0, 0x3C, 0x0C, /*0x00,*/ 0x0C, 0x0F, 0x03, 0x00, 0x03, 0x0F, 0x0C}, // 'X'
{0x00, 0x3C, 0x7C, 0xC0, 0xC0, 0x7C, 0x3C, /*0x00,*/ 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00}, // 'Y'
{0x04, 0x04, 0x84, 0xC4, 0x64, 0x3C, 0x1C, /*0x00,*/ 0x0E, 0x0F, 0x09, 0x08, 0x08, 0x08, 0x08}, // 'Z'
{0x00, 0x00, 0xFC, 0xFC, 0x04, 0x04, 0x00, /*0x00,*/ 0x00, 0x00, 0x0F, 0x0F, 0x08, 0x08, 0x00}, // '['
{0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E}, // '"\'
{0x00, 0x00, 0x04, 0x04, 0xFC, 0xFC, 0x00, /*0x00,*/ 0x00, 0x00, 0x08, 0x08, 0x0F, 0x0F, 0x00}, // ']'
{0x08, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x08, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '^'
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20}, // '_'
{0x00, 0x00, 0x03, 0x07, 0x04, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '`'
{0x00, 0xA0, 0xA0, 0xA0, 0xA0, 0xE0, 0xC0, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x0F}, // 'a'
{0xFC, 0xFC, 0x20, 0x20, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'b'
{0xC0, 0xE0, 0x20, 0x20, 0x20, 0x60, 0x40, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0C, 0x04}, // 'c'
{0xC0, 0xE0, 0x20, 0x20, 0x20, 0xFC, 0xFC, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x0F}, // 'd'
{0xC0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x07, 0x0F, 0x09, 0x09, 0x09, 0x09, 0x01}, // 'e'
{0x20, 0x20, 0xF8, 0xFC, 0x24, 0x24, 0x04, /*0x00,*/ 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00}, // 'f'
{0xC0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xE0, /*0x00,*/ 0x07, 0x4F, 0x48, 0x48, 0x48, 0x7F, 0x3F}, // 'g'
{0xFC, 0xFC, 0x20, 0x20, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F}, // 'h'
{0x00, 0x00, 0x20, 0xEC, 0xEC, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x00}, // 'i'
{0x00, 0x00, 0x00, 0x00, 0x20, 0xEC, 0xEC, /*0x00,*/ 0x00, 0x30, 0x70, 0x40, 0x40, 0x7F, 0x3F}, // 'j'
{0xFC, 0xFC, 0x00, 0x80, 0xC0, 0x60, 0x20, /*0x00,*/ 0x0F, 0x0F, 0x01, 0x03, 0x06, 0x0C, 0x08}, // 'k'
{0x00, 0x00, 0x04, 0xFC, 0xFC, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x00}, // 'l'
{0xE0, 0xE0, 0x20, 0xE0, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x0F}, // 'm'
{0xE0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F}, // 'n'
{0xC0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'o'
{0xE0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x7F, 0x7F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'p'
{0xC0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xE0, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x7F, 0x7F}, // 'q'
{0xE0, 0xE0, 0x60, 0x20, 0x20, 0x20, 0x20, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00}, // 'r'
{0xC0, 0xE0, 0x20, 0x20, 0x20, 0x20, 0x20, /*0x00,*/ 0x08, 0x09, 0x09, 0x09, 0x09, 0x0F, 0x06}, // 's'
{0x20, 0x20, 0xFC, 0xFC, 0x20, 0x20, 0x00, /*0x00,*/ 0x00, 0x00, 0x07, 0x0F, 0x08, 0x08, 0x08}, // 't'
{0xE0, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0xE0, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x0F}, // 'u'
{0xE0, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0xE0, /*0x00,*/ 0x00, 0x03, 0x0F, 0x0C, 0x0F, 0x03, 0x00}, // 'v'
{0xE0, 0xE0, 0x00, 0x80, 0x00, 0xE0, 0xE0, /*0x00,*/ 0x07, 0x0F, 0x08, 0x0F, 0x08, 0x0F, 0x07}, // 'w'
{0x60, 0xE0, 0x80, 0x00, 0x80, 0xE0, 0x60, /*0x00,*/ 0x0C, 0x0E, 0x03, 0x01, 0x03, 0x0E, 0x0C}, // 'x'
{0xE0, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0xE0, /*0x00,*/ 0x07, 0x4F, 0x48, 0x48, 0x48, 0x7F, 0x3F}, // 'y'
{0x20, 0x20, 0x20, 0xA0, 0xE0, 0x60, 0x20, /*0x00,*/ 0x0C, 0x0E, 0x0B, 0x09, 0x08, 0x08, 0x08}, // 'z'
{0x00, 0x00, 0x40, 0xF8, 0xBC, 0x04, 0x04, /*0x00,*/ 0x00, 0x00, 0x00, 0x07, 0x0F, 0x08, 0x08}, // '{'
{0x00, 0x00, 0x00, 0xBC, 0xBC, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00}, // '|'
{0x00, 0x04, 0x04, 0xBC, 0xF8, 0x40, 0x00, /*0x00,*/ 0x00, 0x08, 0x08, 0x0F, 0x07, 0x00, 0x00}, // '}'
{0x08, 0x0C, 0x04, 0x0C, 0x08, 0x0C, 0x04, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // '->'
#endif
};
#endif
// Each glyph contains fourteen bytes: seven columns for each display page.
// Common bytes use a four-bit page-specific dictionary index; 0xF escapes
// into the literal stream. The eighth byte of each row is its literal offset.
static const uint8_t gFontBigDictionary[2][15] =
{
{0x00, 0xFC, 0x20, 0xE0, 0x04, 0x80, 0xC0, 0xF8, 0x44, 0x84, 0x40, 0x60, 0x30, 0x7C, 0x0C},
{0x00, 0x0F, 0x08, 0x07, 0x0C, 0x03, 0x01, 0x06, 0x0E, 0x02, 0x09, 0x7F, 0x20, 0x48, 0x0B}
};
static const uint8_t gFontBigPacked[94][8] =
{
{0x00, 0x10, 0x01, 0x00, 0x00, 0xFF, 0x00, 0x00},
{0xF0, 0x0F, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x02},
{0x72, 0x27, 0x77, 0x92, 0x11, 0x19, 0x91, 0x06},
{0x7F, 0xFF, 0xFF, 0xFF, 0x24, 0xFF, 0x31, 0x06},
{0xCC, 0x50, 0xB6, 0x4C, 0x57, 0x06, 0x44, 0x0F},
{0xF5, 0xFD, 0xFF, 0x3A, 0x21, 0x32, 0x21, 0x0F},
{0xF0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13},
{0x00, 0x7F, 0x4E, 0x00, 0x50, 0x43, 0x02, 0x16},
{0x00, 0xE4, 0xF7, 0x00, 0x20, 0x34, 0x05, 0x17},
{0x50, 0x3F, 0x36, 0x0F, 0x90, 0x65, 0x95, 0x18},
{0x50, 0x35, 0x53, 0x05, 0x00, 0x55, 0x00, 0x1A},
{0x00, 0x00, 0x00, 0x00, 0xF0, 0x8F, 0x00, 0x1A},
{0x55, 0x55, 0x55, 0x05, 0x00, 0x00, 0x00, 0x1C},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x1C},
{0x00, 0x50, 0xB6, 0x4C, 0x57, 0x06, 0x00, 0x1C},
{0x17, 0x44, 0x14, 0x37, 0x21, 0x22, 0x31, 0x1C},
{0xF0, 0x1F, 0x01, 0x00, 0x22, 0x11, 0x22, 0x1C},
{0xFF, 0x94, 0xDF, 0x4F, 0xE8, 0x2A, 0x22, 0x1E},
{0xFF, 0x88, 0x18, 0x7F, 0x28, 0x22, 0x31, 0x22},
{0x65, 0xCB, 0x1F, 0x61, 0x66, 0x66, 0x11, 0x25},
{0xDD, 0x88, 0xF8, 0xF9, 0x24, 0x22, 0x31, 0x26},
{0x7F, 0x8F, 0xF8, 0x35, 0x21, 0x22, 0x31, 0x28},
{0x44, 0x94, 0xDF, 0x0F, 0x80, 0x61, 0x00, 0x2B},
{0x1F, 0x88, 0x18, 0x3F, 0x21, 0x22, 0x31, 0x2D},
{0x1F, 0x99, 0x19, 0x07, 0x22, 0x42, 0x53, 0x2F},
{0x00, 0xC0, 0x0C, 0x00, 0x00, 0x77, 0x00, 0x30},
{0x00, 0xC0, 0x0C, 0x00, 0x20, 0x78, 0x00, 0x30},
{0x50, 0xB6, 0xFC, 0x0F, 0x60, 0x75, 0x24, 0x30},
{0xAA, 0xAA, 0xAA, 0x9A, 0x99, 0x99, 0x99, 0x32},
{0xF0, 0xCF, 0x6B, 0x05, 0x42, 0x57, 0x06, 0x32},
{0xFF, 0x94, 0xDF, 0x0F, 0x00, 0xFF, 0x00, 0x34},
{0x7F, 0xFF, 0x7F, 0x3F, 0x21, 0xEE, 0x6E, 0x3A},
{0x17, 0x99, 0x19, 0x17, 0x01, 0x00, 0x11, 0x3F},
{0x11, 0x88, 0x18, 0x1F, 0x21, 0x22, 0x31, 0x3F},
{0x17, 0x44, 0xF4, 0x3F, 0x21, 0x22, 0x78, 0x40},
{0x11, 0x44, 0x7E, 0x1F, 0x21, 0x42, 0x53, 0x42},
{0x11, 0x88, 0x48, 0x14, 0x21, 0x22, 0x22, 0x43},
{0x11, 0x88, 0x48, 0x14, 0x01, 0x00, 0x00, 0x43},
{0x17, 0x94, 0xF9, 0x3F, 0x21, 0x22, 0x31, 0x43},
{0x11, 0xAA, 0x1A, 0x11, 0x01, 0x00, 0x11, 0x45},
{0x00, 0x14, 0x41, 0x00, 0x20, 0x11, 0x02, 0x45},
{0x00, 0x40, 0x11, 0x74, 0x28, 0x12, 0x03, 0x45},
{0x11, 0xC3, 0xEF, 0x14, 0x61, 0x75, 0x24, 0x45},
{0x11, 0x00, 0x00, 0x10, 0x21, 0x22, 0x22, 0x46},
{0x11, 0xFF, 0x1F, 0x11, 0x01, 0x00, 0x11, 0x46},
{0x11, 0x6B, 0x15, 0x11, 0x01, 0x60, 0x11, 0x49},
{0x17, 0x44, 0x14, 0x37, 0x21, 0x22, 0x31, 0x49},
{0x11, 0x99, 0x19, 0x1F, 0x01, 0x00, 0x00, 0x49},
{0x17, 0x44, 0x14, 0x37, 0x21, 0x44, 0xFF, 0x4A},
{0x11, 0x99, 0x19, 0x1F, 0x61, 0x75, 0x24, 0x4C},
{0xDF, 0x88, 0xF8, 0x7F, 0x28, 0x22, 0x31, 0x4D},
{0x40, 0x14, 0x41, 0x04, 0x00, 0x11, 0x00, 0x50},
{0x11, 0x00, 0x10, 0x31, 0x21, 0x22, 0x31, 0x50},
{0x1D, 0x05, 0x15, 0x0D, 0x15, 0x14, 0x05, 0x50},
{0x11, 0x50, 0x10, 0x11, 0x71, 0x75, 0x11, 0x50},
{0xFE, 0x6F, 0xFF, 0x4E, 0x51, 0x50, 0x41, 0x50},
{0xF0, 0x6D, 0xD6, 0x0F, 0x00, 0x11, 0x00, 0x54},
{0x44, 0xF9, 0xFF, 0x8F, 0xA1, 0x22, 0x22, 0x56},
{0x00, 0x11, 0x44, 0x00, 0x10, 0x21, 0x02, 0x5A},
{0xFF, 0x63, 0x05, 0x00, 0x00, 0x56, 0x83, 0x5A},
{0x00, 0x44, 0x11, 0x00, 0x20, 0x12, 0x01, 0x5C},
{0xEF, 0xFF, 0xEF, 0x0F, 0x00, 0x00, 0x00, 0x5C},
{0x00, 0x00, 0x00, 0xC0, 0xCC, 0xCC, 0xCC, 0x61},
{0x00, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x61},
{0xF0, 0xFF, 0x3F, 0x36, 0x21, 0x22, 0x11, 0x63},
{0x11, 0x22, 0x32, 0x16, 0x21, 0x22, 0x31, 0x67},
{0x36, 0x22, 0xB2, 0x3A, 0x21, 0x22, 0xF4, 0x67},
{0x36, 0x22, 0x12, 0x31, 0x21, 0x22, 0x11, 0x68},
{0x36, 0x22, 0x32, 0x36, 0xA1, 0xAA, 0x6A, 0x68},
{0x22, 0x17, 0xFF, 0x04, 0x10, 0x01, 0x00, 0x68},
{0x36, 0x22, 0x32, 0x33, 0xDF, 0xDD, 0xFB, 0x6A},
{0x11, 0x22, 0x32, 0x16, 0x01, 0x00, 0x11, 0x6C},
{0x00, 0xF2, 0x0F, 0x00, 0x20, 0x11, 0x02, 0x6C},
{0x00, 0x00, 0xF2, 0x0F, 0xFF, 0xFF, 0xFB, 0x6E},
{0x11, 0x50, 0xB6, 0x12, 0x61, 0x75, 0x24, 0x75},
{0x00, 0x14, 0x01, 0x00, 0x20, 0x11, 0x02, 0x75},
{0x33, 0x32, 0x32, 0x16, 0x01, 0x01, 0x11, 0x75},
{0x33, 0x22, 0x32, 0x16, 0x01, 0x00, 0x11, 0x75},
{0x36, 0x22, 0x32, 0x36, 0x21, 0x22, 0x31, 0x75},
{0x33, 0x22, 0x32, 0xB6, 0x2B, 0x22, 0x31, 0x75},
{0x36, 0x22, 0x32, 0x33, 0x21, 0x22, 0xBB, 0x75},
{0x33, 0x2B, 0x22, 0x12, 0x01, 0x00, 0x00, 0x75},
{0x36, 0x22, 0x22, 0x22, 0xAA, 0xAA, 0x71, 0x75},
{0x22, 0x11, 0x22, 0x00, 0x30, 0x21, 0x22, 0x75},
{0x33, 0x00, 0x30, 0x33, 0x21, 0x22, 0x11, 0x75},
{0x33, 0x00, 0x30, 0x03, 0x15, 0x14, 0x05, 0x75},
{0x33, 0x50, 0x30, 0x33, 0x21, 0x21, 0x31, 0x75},
{0x3B, 0x05, 0x35, 0x4B, 0x58, 0x56, 0x48, 0x75},
{0x33, 0x00, 0x30, 0x33, 0xDF, 0xDD, 0xFB, 0x75},
{0x22, 0xF2, 0xB3, 0x42, 0xE8, 0x2A, 0x22, 0x77},
{0x00, 0x7A, 0x4F, 0x04, 0x00, 0x13, 0x22, 0x78},
{0x00, 0xF0, 0x0F, 0x00, 0x00, 0x11, 0x00, 0x79},
{0x40, 0xF4, 0xA7, 0x00, 0x22, 0x31, 0x00, 0x7B},
{0xEF, 0xE4, 0xEF, 0x04, 0x00, 0x00, 0x00, 0x7C}
};
static const uint8_t gFontBigLiterals[126] =
{
0x0D, 0x0D, 0x0F, 0x1F, 0x1F, 0x0F, 0x70, 0x88, 0x8E, 0x8E, 0x98, 0x10, 0x04, 0x38,
0x38, 0xD8, 0xE4, 0xBC, 0xD8, 0x10, 0x1F, 0x0F, 0xF0, 0xF0, 0xA0, 0xA0, 0x10, 0x1E,
0x10, 0x18, 0x18, 0x1C, 0xC4, 0x38, 0x18, 0x1C, 0xB8, 0x18, 0xC4, 0x04, 0xF0, 0x4C,
0xC4, 0xE4, 0x1C, 0xB8, 0xB8, 0x78, 0x18, 0x08, 0x08, 0x18, 0x38, 0x3C, 0xC4, 0x38,
0x0D, 0x0D, 0xF0, 0x08, 0xC8, 0xC8, 0xF0, 0xB8, 0x1C, 0x18, 0xF0, 0x9C, 0x98, 0x18,
0x18, 0x70, 0x18, 0x78, 0x1F, 0x17, 0x78, 0x38, 0xCC, 0x88, 0x3C, 0xF0, 0xF0, 0x3C,
0x3C, 0x3C, 0xC4, 0x64, 0x3C, 0x1C, 0x38, 0x70, 0x08, 0x06, 0x03, 0x06, 0x08, 0x03,
0x07, 0xA0, 0xA0, 0xA0, 0xA0, 0x04, 0x24, 0x24, 0x4F, 0x3F, 0xEC, 0xEC, 0xEC, 0xEC,
0x30, 0x70, 0x40, 0x40, 0x3F, 0x4F, 0x3F, 0xA0, 0xBC, 0xBC, 0xBC, 0xBC, 0x08, 0x08
};
static_assert(sizeof(gFontBigPacked) / sizeof(gFontBigPacked[0]) == 94u);
static_assert(sizeof(gFontBigPacked[0]) == 8u);
static_assert(sizeof(gFontBigLiterals) == 126u);
void FONT_DrawBigGlyph(uint8_t glyph, uint8_t *top, uint8_t *bottom)
{
// The caller maps validated ASCII '!'..'~' to glyph 0..93. Packed byte 7
// is the literal offset; regenerated data must keep every 0xF escape within
// gFontBigLiterals. The table dimensions are checked above at compile time.
const uint8_t *encoded = gFontBigPacked[glyph];
uint8_t literal = encoded[7];
for (uint8_t i = 0; i < 14; i++)
{
const uint8_t packed = encoded[i >> 1];
const uint8_t code = (packed >> ((i & 1u) * 4u)) & 0x0Fu;
const uint8_t value = code == 0x0Fu
? gFontBigLiterals[literal++]
: gFontBigDictionary[i >= 7u][code];
if (i < 7u)
top[i] = value;
else
bottom[i - 7u] = value;
}
}
#if 0
// original font
const uint8_t gFontBigDigits[11][26] =
{
{0x00, 0xC0, 0xF0, 0xF8, 0x3C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0xF8, 0xF0, 0xE0, 0x00, 0x07, 0x1F, 0x3F, 0x78, 0x60, 0x60, 0x60, 0x60, 0x70, 0x3F, 0x1F, 0x0F},
{0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x10, 0x38, 0x38, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFC, 0xF8, 0xF0, 0x00, 0x00, 0x70, 0x78, 0x7C, 0x7C, 0x6E, 0x66, 0x67, 0x67, 0x63, 0x61, 0x60, 0x00},
{0x00, 0x10, 0x18, 0x18, 0x9C, 0x8C, 0x8C, 0x8C, 0x8C, 0xCC, 0xF8, 0xF8, 0x70, 0x00, 0x30, 0x30, 0x30, 0x71, 0x61, 0x61, 0x61, 0x61, 0x71, 0x3F, 0x3F, 0x1E},
{0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x1C, 0x1E, 0x1F, 0x1F, 0x19, 0x18, 0x18, 0x18, 0x7F, 0x7F, 0x7F, 0x18},
{0x00, 0x00, 0xFC, 0xFC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8C, 0x0C, 0x00, 0x00, 0x18, 0x30, 0x70, 0x60, 0x60, 0x60, 0x60, 0x71, 0x7B, 0x3F, 0x1F},
{0x00, 0xC0, 0xF0, 0xF8, 0x38, 0x9C, 0x8C, 0x8C, 0x8C, 0x8C, 0x9C, 0x38, 0x30, 0x00, 0x0F, 0x1F, 0x3F, 0x73, 0x61, 0x61, 0x61, 0x61, 0x73, 0x33, 0x3F, 0x1E},
{0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x8C, 0xEC, 0xFC, 0x3C, 0x1C, 0x00, 0x00, 0x00, 0x40, 0x60, 0x78, 0x7C, 0x1F, 0x07, 0x03, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x78, 0xF8, 0xDC, 0x8C, 0x8C, 0x8C, 0x8C, 0xDC, 0xF8, 0x78, 0x00, 0x00, 0x1E, 0x3F, 0x3F, 0x73, 0x61, 0x61, 0x61, 0x61, 0x73, 0x3F, 0x3F, 0x1E},
{0x00, 0xF0, 0xF8, 0xB8, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0xB8, 0xF0, 0xE0, 0x00, 0x11, 0x33, 0x77, 0x67, 0x66, 0x66, 0x66, 0x76, 0x33, 0x3F, 0x1F, 0x07},
{0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00}
};
// 6 Empty columns removed
#elif 0
// VCR font
const uint8_t gFontBigDigits[11][26 - 6] =
{
{/*0x00, 0x00,*/ 0xF8, 0xFC, 0x06, 0x86, 0xC6, 0xE6, 0xF6, 0x76, 0xFC, 0xF8, /*0x00,*/ /*0x00, 0x00,*/ 0x1F, 0x3F, 0x77, 0x67, 0x63, 0x61, 0x60, 0x70, 0x3F, 0x1F, /*0x00*/},
{/*0x00, 0x00,*/ 0x00, 0x00, 0x18, 0x1C, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ /*0x00, 0x00,*/ 0x00, 0x00, 0x60, 0x60, 0x7F, 0x7F, 0x60, 0x60, 0x00, 0x00, /*0x00*/},
{/*0x00, 0x00,*/ 0x18, 0x1C, 0x86, 0x86, 0x86, 0x86, 0x86, 0xC6, 0xFC, 0x78, /*0x00,*/ /*0x00, 0x00,*/ 0x7E, 0x7F, 0x63, 0x61, 0x61, 0x61, 0x61, 0x61, 0x60, 0x60, /*0x00*/},
{/*0x00, 0x00,*/ 0x18, 0x1C, 0x06, 0x06, 0x86, 0x86, 0x86, 0xC6, 0xFC, 0x78, /*0x00,*/ /*0x00, 0x00,*/ 0x18, 0x38, 0x70, 0x60, 0x61, 0x61, 0x61, 0x73, 0x3F, 0x1E, /*0x00*/},
{/*0x00, 0x00,*/ 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0xFE, 0xFE, 0x00, 0x00, /*0x00,*/ /*0x00, 0x00,*/ 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x7F, 0x7F, 0x06, 0x06, /*0x00*/},
{/*0x00, 0x00,*/ 0x7E, 0x7E, 0x66, 0x66, 0x66, 0x66, 0x66, 0xE6, 0xC6, 0x86, /*0x00,*/ /*0x00, 0x00,*/ 0x18, 0x38, 0x70, 0x60, 0x60, 0x60, 0x60, 0x70, 0x3F, 0x1F, /*0x00*/},
{/*0x00, 0x00,*/ 0xF8, 0xFC, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x1C, 0x18, /*0x00,*/ /*0x00, 0x00,*/ 0x1F, 0x3F, 0x71, 0x61, 0x61, 0x61, 0x61, 0x73, 0x3F, 0x1E, /*0x00*/},
{/*0x00, 0x00,*/ 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0xC6, 0xE6, 0x7E, 0x3E, /*0x00,*/ /*0x00, 0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x01, 0x00, 0x00, 0x00, /*0x00*/},
{/*0x00, 0x00,*/ 0x78, 0xFC, 0xC6, 0x86, 0x86, 0x86, 0x86, 0xC6, 0xFC, 0x78, /*0x00,*/ /*0x00, 0x00,*/ 0x1E, 0x3F, 0x73, 0x61, 0x61, 0x61, 0x61, 0x73, 0x3F, 0x1E, /*0x00*/},
{/*0x00, 0x00,*/ 0x78, 0xFC, 0xC6, 0x86, 0x86, 0x86, 0x86, 0x86, 0xFC, 0xF8, /*0x00,*/ /*0x00, 0x00,*/ 0x18, 0x38, 0x71, 0x61, 0x61, 0x61, 0x61, 0x71, 0x3F, 0x1F, /*0x00*/},
{/*0x00, 0x00,*/ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, /*0x00,*/ /*0x00, 0x00,*/ 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, /*0x00*/}
};
#else
// Terminus font
const uint8_t gFontBigDigits[11][26 - 6] =
{
{/*0x00, 0x00,*/ 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFC, /*0x00,*/ /*0x00, 0x00,*/ 0x3F, 0x7F, 0x7F, 0x60, 0x60, 0x60, 0x60, 0x7F, 0x7F, 0x3F, /*0x00*/},
{/*0x00, 0x00,*/ 0x00, 0x00, 0x18, 0x1C, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, /*0x00,*/ /*0x00, 0x00,*/ 0x00, 0x00, 0x60, 0x60, 0x7F, 0x7F, 0x7F, 0x60, 0x60, 0x00, /*0x00*/},
{/*0x00, 0x00,*/ 0x1C, 0x1E, 0x1E, 0x06, 0x06, 0x06, 0x86, 0xFE, 0xFE, 0x7C, /*0x00,*/ /*0x00, 0x00,*/ 0x60, 0x70, 0x78, 0x7C, 0x6E, 0x67, 0x63, 0x61, 0x60, 0x60, /*0x00*/},
{/*0x00, 0x00,*/ 0x0C, 0x0E, 0x0E, 0x86, 0x86, 0x86, 0x86, 0xFE, 0xFE, 0x7C, /*0x00,*/ /*0x00, 0x00,*/ 0x30, 0x70, 0x70, 0x61, 0x61, 0x61, 0x61, 0x7F, 0x7F, 0x3E, /*0x00*/},
{/*0x00, 0x00,*/ 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0xFE, 0xFE, 0xFE, /*0x00,*/ /*0x00, 0x00,*/ 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x7F, 0x7F, 0x7F, /*0x00*/},
{/*0x00, 0x00,*/ 0xFE, 0xFE, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x86, /*0x00,*/ /*0x00, 0x00,*/ 0x30, 0x70, 0x70, 0x60, 0x60, 0x60, 0x60, 0x7F, 0x7F, 0x3F, /*0x00*/},
{/*0x00, 0x00,*/ 0xF8, 0xFC, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x80, /*0x00,*/ /*0x00, 0x00,*/ 0x3F, 0x7F, 0x7F, 0x60, 0x60, 0x60, 0x60, 0x7F, 0x7F, 0x3F, /*0x00*/},
{/*0x00, 0x00,*/ 0x0E, 0x0E, 0x0E, 0x06, 0x06, 0x86, 0xE6, 0xFE, 0x7E, 0x1E, /*0x00,*/ /*0x00, 0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7F, 0x7F, 0x03, 0x00, 0x00, /*0x00*/},
{/*0x00, 0x00,*/ 0x7C, 0xFE, 0xFE, 0x86, 0x86, 0x86, 0x86, 0xFE, 0xFE, 0x7C, /*0x00,*/ /*0x00, 0x00,*/ 0x3F, 0x7F, 0x7F, 0x61, 0x61, 0x61, 0x61, 0x7F, 0x7F, 0x3F, /*0x00*/},
{/*0x00, 0x00,*/ 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFC, /*0x00,*/ /*0x00, 0x00,*/ 0x01, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x7F, 0x3F, 0x1F, /*0x00*/},
{/*0x00, 0x00,*/ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, /*0x00,*/ /*0x00, 0x00,*/ 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, /*0x00*/}
};
#endif
/*
const uint8_t gFontSmallDigits[11][7] =
{
{0x00, 0x3E, 0x41, 0x41, 0x41, 0x41, 0x3E}, // '0'
{0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00}, // '1'
{0x00, 0x62, 0x51, 0x51, 0x49, 0x49, 0x46}, // '2'
{0x00, 0x22, 0x41, 0x49, 0x49, 0x4D, 0x32}, // '3'
{0x00, 0x18, 0x14, 0x12, 0x11, 0x7F, 0x10}, // '4'
{0x00, 0x27, 0x45, 0x45, 0x45, 0x45, 0x39}, // '5'
{0x00, 0x3E, 0x49, 0x49, 0x49, 0x49, 0x30}, // '6'
{0x00, 0x01, 0x71, 0x09, 0x05, 0x03, 0x00}, // '7'
{0x00, 0x36, 0x49, 0x49, 0x49, 0x49, 0x36}, // '8'
{0x00, 0x46, 0x49, 0x49, 0x49, 0x29, 0x1E}, // '9'
{0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00} // '-'
};
*/
#if 0
// Uncompressed small-font references kept for byte-for-byte verification.
const uint8_t gFontSmall[95-1][6] =
{
// {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // ' '
{0x00, 0x00, 0x5E, 0x00, 0x00, 0x00}, // '!'
{0x00, 0x06, 0x00, 0x06, 0x00, 0x00}, // '"'
{0x14, 0x3E, 0x14, 0x3E, 0x14, 0x00}, // '#'
{0x26, 0x49, 0x7F, 0x49, 0x32, 0x00}, // '$'
{0x63, 0x13, 0x08, 0x04, 0x62, 0x61}, // '%'
{0x30, 0x4B, 0x4D, 0x55, 0x22, 0x50}, // '&'
{0x00, 0x00, 0x07, 0x07, 0x00, 0x00}, // '''
{0x00, 0x1C, 0x22, 0x41, 0x00, 0x00}, // '('
{0x00, 0x41, 0x22, 0x1C, 0x00, 0x00}, // ')'
{0x00, 0x2A, 0x1C, 0x1C, 0x2A, 0x00}, // '*'
{0x08, 0x08, 0x3E, 0x08, 0x08, 0x00}, // '+'
{0x00, 0x40, 0x60, 0x20, 0x00, 0x00}, // ','
{0x00, 0x08, 0x08, 0x08, 0x08, 0x00}, // '-'
{0x00, 0x00, 0x60, 0x60, 0x00, 0x00}, // '.'
{0x40, 0x20, 0x10, 0x08, 0x04, 0x02}, // '/'
{0x3E, 0x41, 0x41, 0x41, 0x41, 0x3E}, // '0'
{0x00, 0x40, 0x42, 0x7F, 0x40, 0x40}, // '1'
{0x62, 0x51, 0x51, 0x49, 0x49, 0x46}, // '2'
{0x22, 0x41, 0x49, 0x49, 0x49, 0x36}, // '3'
{0x18, 0x14, 0x12, 0x11, 0x7F, 0x10}, // '4'
{0x27, 0x45, 0x45, 0x45, 0x45, 0x39}, // '5'
{0x3E, 0x49, 0x49, 0x49, 0x49, 0x32}, // '6'
{0x01, 0x01, 0x71, 0x09, 0x05, 0x03}, // '7'
{0x36, 0x49, 0x49, 0x49, 0x49, 0x36}, // '8'
{0x46, 0x49, 0x49, 0x49, 0x29, 0x1E}, // '9'
{0x00, 0x00, 0x6C, 0x6C, 0x00, 0x00}, // ':'
{0x00, 0x40, 0x6C, 0x2C, 0x00, 0x00}, // ';'
{0x08, 0x14, 0x22, 0x41, 0x00, 0x00}, // '<'
{0x14, 0x14, 0x14, 0x14, 0x14, 0x00}, // '='
{0x00, 0x41, 0x22, 0x14, 0x08, 0x00}, // '>'
{0x02, 0x01, 0x51, 0x09, 0x06, 0x00}, // '?'
{0x30, 0x4A, 0x4A, 0x52, 0x3C, 0x00}, // '@'
{0x7E, 0x09, 0x09, 0x09, 0x09, 0x7E}, // 'A'
{0x7F, 0x49, 0x49, 0x49, 0x49, 0x36}, // 'B'
{0x3E, 0x41, 0x41, 0x41, 0x41, 0x22}, // 'C'
{0x7F, 0x41, 0x41, 0x41, 0x41, 0x3E}, // 'D'
{0x7F, 0x49, 0x49, 0x49, 0x49, 0x41}, // 'E'
{0x7F, 0x09, 0x09, 0x09, 0x09, 0x01}, // 'F'
{0x3E, 0x41, 0x49, 0x49, 0x49, 0x3A}, // 'G'
{0x7F, 0x08, 0x08, 0x08, 0x08, 0x7F}, // 'H'
{0x41, 0x41, 0x7F, 0x41, 0x41, 0x00}, // 'I'
{0x20, 0x41, 0x41, 0x3F, 0x01, 0x01}, // 'J'
{0x7F, 0x08, 0x0C, 0x12, 0x21, 0x40}, // 'K'
{0x7F, 0x40, 0x40, 0x40, 0x40, 0x40}, // 'L'
{0x7F, 0x02, 0x04, 0x04, 0x02, 0x7F}, // 'M'
{0x7F, 0x02, 0x04, 0x08, 0x10, 0x7F}, // 'N'
{0x3E, 0x41, 0x41, 0x41, 0x41, 0x3E}, // 'O'
{0x7F, 0x09, 0x09, 0x09, 0x09, 0x06}, // 'P'
{0x3E, 0x41, 0x51, 0x61, 0x41, 0x3E}, // 'Q'
{0x7F, 0x09, 0x09, 0x19, 0x29, 0x46}, // 'R'
{0x26, 0x49, 0x49, 0x49, 0x49, 0x32}, // 'S'
{0x01, 0x01, 0x7F, 0x01, 0x01, 0x00}, // 'T'
{0x3F, 0x40, 0x40, 0x40, 0x40, 0x3F}, // 'U'
{0x07, 0x38, 0x40, 0x40, 0x38, 0x07}, // 'V'
{0x3F, 0x40, 0x30, 0x30, 0x40, 0x3F}, // 'W'
{0x63, 0x14, 0x08, 0x08, 0x14, 0x63}, // 'X'
{0x07, 0x08, 0x70, 0x08, 0x07, 0x00}, // 'Y'
{0x61, 0x51, 0x49, 0x45, 0x43, 0x41}, // 'Z'
{0x00, 0x7F, 0x41, 0x41, 0x00, 0x00}, // '['
{0x01, 0x02, 0x04, 0x08, 0x10, 0x60}, // '"\'
{0x00, 0x00, 0x41, 0x41, 0x7F, 0x00}, // ']'
{0x04, 0x02, 0x01, 0x02, 0x04, 0x00}, // '^'
{0x40, 0x40, 0x40, 0x40, 0x40, 0x40}, // '_'
{0x00, 0x03, 0x07, 0x06, 0x00, 0x00}, // '`'
{0x20, 0x54, 0x54, 0x54, 0x78, 0x00}, // 'a'
{0x7F, 0x44, 0x44, 0x44, 0x38, 0x00}, // 'b'
{0x38, 0x44, 0x44, 0x44, 0x28, 0x00}, // 'c'
{0x38, 0x44, 0x44, 0x44, 0x7F, 0x00}, // 'd'
{0x38, 0x54, 0x54, 0x54, 0x48, 0x00}, // 'e'
{0x7C, 0x0A, 0x0A, 0x0A, 0x02, 0x00}, // 'f'
{0x58, 0x54, 0x54, 0x54, 0x3C, 0x00}, // 'g'
{0x7F, 0x04, 0x04, 0x04, 0x78, 0x00}, // 'h'
{0x00, 0x00, 0x7A, 0x00, 0x00, 0x00}, // 'i'
{0x20, 0x40, 0x40, 0x3D, 0x00, 0x00}, // 'j'
{0x00, 0x7F, 0x10, 0x28, 0x44, 0x00}, // 'k'
{0x00, 0x00, 0x3F, 0x40, 0x00, 0x00}, // 'l'
{0x7C, 0x04, 0x7C, 0x04, 0x78, 0x00}, // 'm'
{0x7C, 0x04, 0x04, 0x04, 0x78, 0x00}, // 'n'
{0x38, 0x44, 0x44, 0x44, 0x38, 0x00}, // 'o'
{0x7C, 0x14, 0x14, 0x14, 0x08, 0x00}, // 'p'
{0x08, 0x14, 0x14, 0x14, 0x7C, 0x40}, // 'q'
{0x7C, 0x04, 0x04, 0x04, 0x08, 0x00}, // 'r'
{0x08, 0x54, 0x54, 0x54, 0x20, 0x00}, // 's'
{0x3F, 0x44, 0x44, 0x44, 0x40, 0x00}, // 't'
{0x3C, 0x40, 0x40, 0x40, 0x3C, 0x00}, // 'u'
{0x0C, 0x30, 0x40, 0x30, 0x0C, 0x00}, // 'v'
{0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00}, // 'w'
{0x44, 0x28, 0x10, 0x28, 0x44, 0x00}, // 'x'
{0x0C, 0x50, 0x50, 0x50, 0x3C, 0x00}, // 'y'
{0x44, 0x64, 0x54, 0x4C, 0x44, 0x00}, // 'z'
{0x08, 0x36, 0x41, 0x00, 0x00, 0x00}, // '{'
{0x00, 0x00, 0x7F, 0x00, 0x00, 0x00}, // '|'
{0x00, 0x00, 0x41, 0x36, 0x08, 0x00}, // '}'
{0x04, 0x02, 0x04, 0x08, 0x04, 0x00} // '->'
};
#ifdef ENABLE_SMALL_BOLD
const uint8_t gFontSmallBold[95 - 1][6] =
{
// {0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x5E, 0x5E, 0x00, 0x00},
{0x06, 0x06, 0x00, 0x06, 0x06, 0x00},
{0x14, 0x3E, 0x14, 0x3E, 0x14, 0x00},
{0x2E, 0x6B, 0x7F, 0x6B, 0x3A, 0x00},
{0x63, 0x33, 0x18, 0x0C, 0x66, 0x63},
{0x30, 0x4B, 0x4D, 0x55, 0x22, 0x50},
{0x00, 0x00, 0x07, 0x07, 0x00, 0x00},
{0x00, 0x1C, 0x3E, 0x63, 0x41, 0x00},
{0x00, 0x41, 0x63, 0x3E, 0x1C, 0x00},
{0x00, 0x2A, 0x1C, 0x1C, 0x2A, 0x00},
{0x18, 0x18, 0x7E, 0x7E, 0x18, 0x18},
{0x00, 0x40, 0x60, 0x20, 0x00, 0x00},
{0x00, 0x18, 0x18, 0x18, 0x18, 0x00},
{0x00, 0x00, 0x60, 0x60, 0x00, 0x00},
{0x60, 0x30, 0x18, 0x0C, 0x06, 0x03},
{0x3E, 0x7F, 0x63, 0x63, 0x7F, 0x3E},
{0x64, 0x66, 0x7F, 0x7F, 0x60, 0x60},
{0x62, 0x73, 0x7B, 0x7B, 0x6F, 0x66},
{0x63, 0x63, 0x6B, 0x6B, 0x7F, 0x36},
{0x38, 0x3C, 0x36, 0x7F, 0x7F, 0x30},
{0x6F, 0x6F, 0x6B, 0x6B, 0x7B, 0x33},
{0x3E, 0x7F, 0x6B, 0x6B, 0x7B, 0x32},
{0x03, 0x03, 0x73, 0x7B, 0x0F, 0x07},
{0x36, 0x7F, 0x6B, 0x6B, 0x7F, 0x36},
{0x06, 0x6F, 0x6B, 0x6B, 0x7F, 0x3E},
{0x00, 0x00, 0x6C, 0x6C, 0x00, 0x00},
{0x00, 0x40, 0x6C, 0x2C, 0x00, 0x00},
{0x08, 0x14, 0x22, 0x41, 0x00, 0x00},
{0x36, 0x36, 0x36, 0x36, 0x36, 0x00},
{0x00, 0x41, 0x22, 0x14, 0x08, 0x00},
{0x06, 0x07, 0x53, 0x5B, 0x1F, 0x0E},
{0x30, 0x7B, 0x6B, 0x7B, 0x7F, 0x3E},
{0x7E, 0x7F, 0x1B, 0x1B, 0x7F, 0x7E},
{0x7F, 0x7F, 0x6B, 0x6B, 0x7F, 0x36},
{0x3E, 0x7F, 0x63, 0x63, 0x63, 0x36},
{0x7F, 0x7F, 0x63, 0x63, 0x7F, 0x3E},
{0x7F, 0x7F, 0x6B, 0x6B, 0x6B, 0x63},
{0x7F, 0x7F, 0x1B, 0x1B, 0x1B, 0x03},
{0x3E, 0x7F, 0x63, 0x6B, 0x7B, 0x3A},
{0x7F, 0x7F, 0x0C, 0x0C, 0x7F, 0x7F},
{0x63, 0x63, 0x7F, 0x7F, 0x63, 0x63},
{0x30, 0x73, 0x63, 0x7F, 0x3F, 0x03},
{0x7F, 0x7F, 0x1C, 0x36, 0x63, 0x41},
{0x7F, 0x7F, 0x60, 0x60, 0x60, 0x60},
{0x7F, 0x7F, 0x06, 0x06, 0x7F, 0x7F},
{0x7F, 0x7F, 0x0C, 0x18, 0x7F, 0x7F},
{0x3E, 0x7F, 0x63, 0x63, 0x7F, 0x3E},
{0x7F, 0x7F, 0x1B, 0x1B, 0x1F, 0x0E},
{0x3E, 0x7F, 0x63, 0x73, 0x7F, 0x7E},
{0x7F, 0x7F, 0x1B, 0x3B, 0x7F, 0x66},
{0x66, 0x6F, 0x6B, 0x6B, 0x7B, 0x33},
{0x03, 0x03, 0x7F, 0x7F, 0x03, 0x03},
{0x3F, 0x7F, 0x60, 0x60, 0x7F, 0x3F},
{0x1F, 0x3F, 0x60, 0x60, 0x3F, 0x1F},
{0x3F, 0x7F, 0x30, 0x30, 0x7F, 0x3F},
{0x63, 0x77, 0x1C, 0x1C, 0x77, 0x63},
{0x07, 0x0F, 0x78, 0x78, 0x0F, 0x07},
{0x63, 0x73, 0x7B, 0x6F, 0x67, 0x63},
{0x00, 0x7F, 0x7F, 0x63, 0x63, 0x00},
{0x01, 0x02, 0x04, 0x08, 0x10, 0x60},
{0x00, 0x63, 0x63, 0x7F, 0x7F, 0x00},
{0x0C, 0x0E, 0x03, 0x03, 0x0E, 0x0C},
{0x60, 0x60, 0x60, 0x60, 0x60, 0x60},
{0x00, 0x03, 0x07, 0x06, 0x00, 0x00},
{0x20, 0x76, 0x56, 0x56, 0x7E, 0x3C},
{0x7F, 0x7F, 0x6C, 0x6C, 0x7C, 0x38},
{0x38, 0x7C, 0x6C, 0x6C, 0x6C, 0x00},
{0x38, 0x7C, 0x6C, 0x6C, 0x7F, 0x7F},
{0x3C, 0x7E, 0x56, 0x56, 0x5E, 0x0C},
{0x7E, 0x7F, 0x1B, 0x1B, 0x02, 0x00},
{0x0C, 0x5E, 0x56, 0x56, 0x7E, 0x3C},
{0x7F, 0x7F, 0x0C, 0x0C, 0x7C, 0x78},
{0x00, 0x00, 0x7A, 0x7A, 0x00, 0x00},
{0x30, 0x60, 0x60, 0x7D, 0x3D, 0x00},
{0x7F, 0x7F, 0x18, 0x3C, 0x7E, 0x66},
{0x00, 0x3F, 0x7F, 0x40, 0x00, 0x00},
{0x7C, 0x7C, 0x18, 0x18, 0x7C, 0x7C},
{0x7C, 0x7C, 0x0C, 0x0C, 0x7C, 0x78},
{0x3C, 0x7E, 0x66, 0x66, 0x7E, 0x3C},
{0x7E, 0x7E, 0x36, 0x36, 0x3E, 0x1C},
{0x1C, 0x3E, 0x36, 0x7E, 0x7E, 0x60},
{0x7C, 0x7C, 0x0C, 0x0C, 0x18, 0x00},
{0x4C, 0x5E, 0x56, 0x56, 0x76, 0x20},
{0x3F, 0x7F, 0x6C, 0x6C, 0x60, 0x00},
{0x3C, 0x7C, 0x60, 0x60, 0x7C, 0x3C},
{0x0C, 0x3C, 0x70, 0x70, 0x3C, 0x0C},
{0x3C, 0x7C, 0x30, 0x30, 0x7C, 0x3C},
{0x44, 0x6C, 0x38, 0x38, 0x6C, 0x44},
{0x06, 0x6E, 0x68, 0x68, 0x7E, 0x3E},
{0x66, 0x76, 0x7E, 0x6E, 0x66, 0x00},
{0x08, 0x3E, 0x77, 0x41, 0x00, 0x00},
{0x00, 0x00, 0x7F, 0x00, 0x00, 0x00},
{0x00, 0x41, 0x77, 0x3E, 0x08, 0x00},
{0x0C, 0x06, 0x0C, 0x18, 0x0C, 0x00}
};
#endif
#endif
// Each glyph contains six columns of seven visible pixels: 42 packed bits.
const uint8_t gFontSmallPacked[FONT_SMALL_PACKED_SIZE] =
{
0x00, 0x80, 0x17, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x40, 0xF1, 0x51, 0x7C,
0x14, 0x80, 0x29, 0xF9, 0x4F, 0xCA, 0x00, 0xE3, 0x09, 0x82, 0x20, 0x0E, 0xC3, 0x96,
0xCD, 0xAA, 0x08, 0x0A, 0x00, 0x1C, 0x0E, 0x00, 0x00, 0x80, 0x23, 0x0A, 0x02, 0x00,
0x80, 0xA0, 0x88, 0x03, 0x00, 0x00, 0x54, 0x1C, 0x8E, 0x0A, 0x80, 0x40, 0xF8, 0x10,
0x08, 0x00, 0x00, 0x08, 0x06, 0x01, 0x00, 0x00, 0x04, 0x02, 0x81, 0x00, 0x00, 0x00,
0x60, 0x30, 0x00, 0x00, 0x04, 0x41, 0x10, 0x04, 0x81, 0x2F, 0x18, 0x0C, 0x06, 0x7D,
0x00, 0xA0, 0xF0, 0x0F, 0x04, 0x8A, 0xA3, 0xD1, 0x64, 0xD2, 0x28, 0x0A, 0x26, 0x93,
0x49, 0x1B, 0x86, 0x22, 0x89, 0xFC, 0x21, 0xA7, 0x62, 0xB1, 0x58, 0xCC, 0xF9, 0x92,
0xC9, 0x64, 0x52, 0x16, 0x08, 0xC4, 0x13, 0x85, 0x81, 0x2D, 0x99, 0x4C, 0x26, 0x6D,
0xC6, 0x64, 0x32, 0x99, 0xF2, 0x00, 0x00, 0x6C, 0x36, 0x00, 0x00, 0x00, 0xB2, 0x59,
0x00, 0x00, 0x82, 0x22, 0x0A, 0x02, 0x00, 0x14, 0x0A, 0x85, 0x42, 0x01, 0x00, 0x82,
0x22, 0x0A, 0x02, 0x20, 0x08, 0x44, 0x13, 0x06, 0x00, 0x4C, 0xA9, 0x94, 0xF2, 0x00,
0xFE, 0x44, 0x22, 0x91, 0xF0, 0xFF, 0x93, 0xC9, 0x64, 0xD2, 0xE6, 0x0B, 0x06, 0x83,
0x41, 0xD1, 0x3F, 0x18, 0x0C, 0x06, 0x7D, 0xFF, 0x64, 0x32, 0x99, 0x0C, 0xFE, 0x13,
0x89, 0x44, 0x22, 0xE0, 0x0B, 0x26, 0x93, 0x49, 0xDD, 0x1F, 0x81, 0x40, 0x20, 0xFE,
0xC1, 0xE0, 0x3F, 0x18, 0x04, 0x80, 0x82, 0xC1, 0x5F, 0x20, 0xF0, 0x47, 0x30, 0x24,
0x21, 0xE0, 0x1F, 0x08, 0x04, 0x02, 0x81, 0x7F, 0x01, 0x81, 0x20, 0xF8, 0xFF, 0x05,
0x04, 0x04, 0xE4, 0xEF, 0x0B, 0x06, 0x83, 0x41, 0xDF, 0x3F, 0x91, 0x48, 0x24, 0x0C,
0xBE, 0x60, 0x34, 0x1C, 0xF4, 0xFD, 0x13, 0x89, 0x4C, 0xCA, 0x68, 0x4A, 0x26, 0x93,
0x49, 0x59, 0x20, 0xF0, 0x0F, 0x04, 0x00, 0x3F, 0x20, 0x10, 0x08, 0xFC, 0x1D, 0x70,
0x40, 0x20, 0xEE, 0xF0, 0x03, 0xC2, 0x60, 0xC0, 0xDF, 0x98, 0x82, 0x40, 0x50, 0xC6,
0x07, 0x04, 0x1C, 0x71, 0x00, 0x84, 0xA3, 0xC9, 0xE2, 0x30, 0x08, 0xF8, 0x07, 0x83,
0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC0, 0x00, 0x40, 0x30, 0xF8, 0x07, 0x10, 0x04,
0x01, 0x01, 0x01, 0x00, 0x04, 0x02, 0x81, 0x40, 0x20, 0x60, 0x70, 0x30, 0x00, 0x00,
0x20, 0x2A, 0x95, 0x8A, 0x07, 0xFC, 0x89, 0x44, 0x22, 0x0E, 0x80, 0x23, 0x12, 0x89,
0x28, 0x00, 0x8E, 0x48, 0x24, 0xFE, 0x01, 0x38, 0x2A, 0x95, 0x8A, 0x04, 0xF0, 0x15,
0x0A, 0x85, 0x00, 0x80, 0xA5, 0x52, 0xA9, 0x3C, 0xC0, 0x9F, 0x40, 0x20, 0xE0, 0x01,
0x00, 0x80, 0x1E, 0x00, 0x00, 0x80, 0x80, 0xC0, 0x1E, 0x00, 0x00, 0xF8, 0x43, 0x50,
0x44, 0x00, 0x00, 0xF0, 0x03, 0x02, 0x00, 0x7C, 0x02, 0x9F, 0x80, 0x07, 0xF0, 0x09,
0x04, 0x02, 0x1E, 0x80, 0x23, 0x12, 0x89, 0x38, 0x00, 0x9F, 0x42, 0xA1, 0x20, 0x00,
0x08, 0x0A, 0x85, 0xC2, 0x07, 0xF2, 0x09, 0x04, 0x02, 0x02, 0x80, 0xA0, 0x52, 0xA9,
0x20, 0xC0, 0x8F, 0x48, 0x24, 0x02, 0x01, 0x3C, 0x20, 0x10, 0xC8, 0x03, 0x30, 0x60,
0x40, 0x18, 0x03, 0xC0, 0x03, 0xC2, 0x80, 0x3C, 0x00, 0x11, 0x05, 0x41, 0x11, 0x01,
0x0C, 0x28, 0x14, 0xCA, 0x03, 0x10, 0xC9, 0x54, 0x26, 0x11, 0x80, 0xB0, 0x05, 0x01,
0x00, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0x00, 0x40, 0xD0, 0x86, 0x00, 0x10, 0x04,
0x04, 0x04, 0x01, 0x00,
};
#ifdef ENABLE_SMALL_BOLD
const uint8_t gFontSmallBoldPacked[FONT_SMALL_PACKED_SIZE] =
{
0x00, 0x80, 0xD7, 0x0B, 0x00, 0x18, 0x0C, 0x00, 0x83, 0x01, 0x40, 0xF1, 0x51, 0x7C,
0x14, 0x80, 0x6B, 0xFD, 0x5F, 0xEB, 0x00, 0xE3, 0x19, 0x86, 0x61, 0x1E, 0xC3, 0x96,
0xCD, 0xAA, 0x08, 0x0A, 0x00, 0x1C, 0x0E, 0x00, 0x00, 0x80, 0xE3, 0x1B, 0x07, 0x01,
0x80, 0xE0, 0xD8, 0xC7, 0x01, 0x00, 0x54, 0x1C, 0x8E, 0x0A, 0x80, 0xC1, 0xF8, 0xFD,
0x18, 0x0C, 0x00, 0x08, 0x06, 0x01, 0x00, 0x00, 0x0C, 0x06, 0x83, 0x01, 0x00, 0x00,
0x60, 0x30, 0x00, 0x00, 0x86, 0x61, 0x18, 0x86, 0x81, 0xEF, 0x3F, 0x1E, 0xFF, 0x7D,
0x64, 0xF3, 0xFF, 0x0F, 0x06, 0x8B, 0xE7, 0xFB, 0xFD, 0xDB, 0x3C, 0x1E, 0xAF, 0xD7,
0x7F, 0x1B, 0x8E, 0x67, 0xFB, 0xFF, 0x61, 0xEF, 0xF7, 0x7A, 0xBD, 0x9F, 0xF9, 0xFE,
0xEB, 0xF5, 0x5E, 0x36, 0x18, 0xCC, 0xF7, 0x8F, 0x83, 0xED, 0xBF, 0x5E, 0xFF, 0x6D,
0x86, 0xF7, 0x7A, 0xFD, 0xF7, 0x01, 0x00, 0x6C, 0x36, 0x00, 0x00, 0x00, 0xB2, 0x59,
0x00, 0x00, 0x82, 0x22, 0x0A, 0x02, 0x00, 0x36, 0x9B, 0xCD, 0x66, 0x03, 0x00, 0x82,
0x22, 0x0A, 0x02, 0x60, 0x38, 0x4C, 0xB7, 0x1F, 0x07, 0x6C, 0xBF, 0xDE, 0xFF, 0x7D,
0xFE, 0xFF, 0x66, 0xF3, 0xF7, 0xFF, 0xFF, 0xEB, 0xF5, 0xDF, 0xE6, 0xFB, 0x8F, 0xC7,
0x63, 0xDB, 0xFF, 0x3F, 0x1E, 0xFF, 0x7D, 0xFF, 0xFF, 0x7A, 0xBD, 0x1E, 0xFF, 0xFF,
0x9B, 0xCD, 0x66, 0xE0, 0xFB, 0x8F, 0xD7, 0x7B, 0xDD, 0xFF, 0xCF, 0x60, 0xFC, 0xFF,
0xE3, 0xF1, 0xFF, 0x3F, 0x1E, 0xC3, 0xE6, 0xE3, 0xFF, 0x6F, 0xF0, 0xFF, 0x73, 0x6C,
0xE3, 0xE0, 0xFF, 0x0F, 0x06, 0x83, 0xC1, 0xFF, 0xBF, 0xC1, 0xF0, 0xFF, 0xFF, 0xFF,
0x0C, 0xCC, 0xFF, 0xEF, 0xFB, 0x8F, 0xC7, 0x7F, 0xDF, 0xFF, 0xBF, 0xD9, 0x7C, 0x1C,
0xBE, 0xFF, 0x78, 0xFE, 0xF7, 0xFF, 0xFF, 0x9B, 0xDD, 0xDF, 0x6C, 0x7E, 0xAF, 0xD7,
0xFB, 0xD9, 0x60, 0xF0, 0xFF, 0x0F, 0x06, 0xBF, 0x3F, 0x18, 0xFC, 0xFF, 0x7D, 0x7E,
0x60, 0xF0, 0xEF, 0xF3, 0xFB, 0xC3, 0x60, 0xFF, 0xDF, 0xF8, 0xCE, 0xE1, 0xDC, 0xC7,
0x87, 0x07, 0x1E, 0xFF, 0x38, 0x8C, 0xE7, 0xFB, 0xF7, 0x79, 0x0C, 0xF8, 0xFF, 0xC7,
0x63, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC0, 0x80, 0xF1, 0xF8, 0xFF, 0x07, 0x30, 0x1C,
0x83, 0x81, 0x83, 0x01, 0x06, 0x83, 0xC1, 0x60, 0x30, 0x60, 0x70, 0x30, 0x00, 0x00,
0x20, 0xBB, 0xD5, 0xEA, 0xE7, 0xFD, 0xFF, 0x6C, 0x36, 0x1F, 0x87, 0xE3, 0xB3, 0xD9,
0x6C, 0x00, 0x8E, 0xCF, 0x66, 0xFF, 0xFF, 0x3C, 0xBF, 0xD5, 0xEA, 0x65, 0xF8, 0xFF,
0x9B, 0x8D, 0x00, 0xC0, 0xF0, 0x5A, 0xAD, 0x7E, 0xDE, 0xFF, 0xCF, 0x60, 0xF0, 0xF1,
0x00, 0x80, 0x5E, 0x0F, 0x00, 0xC0, 0xC0, 0xE0, 0x7E, 0x0F, 0xF0, 0xFF, 0x63, 0x78,
0x7E, 0x33, 0xE0, 0xF7, 0x07, 0x02, 0x00, 0x7C, 0x3E, 0x06, 0xC3, 0xE7, 0xF3, 0xF9,
0x0C, 0x06, 0x1F, 0xCF, 0xF3, 0x9B, 0xCD, 0x7E, 0x9E, 0xDF, 0x6F, 0xB3, 0xF9, 0x38,
0x1C, 0x9F, 0xCD, 0xEF, 0x07, 0xF3, 0xF9, 0x0C, 0x06, 0x06, 0xC0, 0xF4, 0x5A, 0xAD,
0x76, 0xD0, 0xEF, 0xCF, 0x66, 0x83, 0x01, 0x3C, 0x3E, 0x18, 0xCC, 0xE7, 0x31, 0x78,
0x70, 0x38, 0x8F, 0xC1, 0xE3, 0xC3, 0x60, 0x7C, 0x1E, 0x91, 0x8D, 0xC3, 0xB1, 0x89,
0x06, 0x37, 0x1A, 0xED, 0xF7, 0x99, 0xED, 0x7E, 0xB7, 0x19, 0x80, 0xF0, 0xDD, 0x83,
0x00, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0x80, 0xE0, 0xDD, 0x87, 0x00, 0x30, 0x0C,
0x0C, 0x0C, 0x03, 0x00,
};
#endif
//#ifdef ENABLE_SPECTRUM
const uint8_t gFont3x5[][3] =
{
{0x00, 0x00, 0x00}, // 32 - space
{0x00, 0x17, 0x00}, // 33 - exclam
{0x03, 0x00, 0x03}, // 34 - quotedbl
{0x1f, 0x0a, 0x1f}, // 35 - numbersign
{0x0a, 0x1f, 0x05}, // 36 - dollar
{0x19, 0x04, 0x13}, // 37 - percent
{0x0f, 0x17, 0x1c}, // 38 - ampersand
{0x00, 0x03, 0x00}, // 39 - quotesingle
{0x00, 0x0e, 0x11}, // 40 - parenleft
{0x11, 0x0e, 0x00}, // 41 - parenright
{0x05, 0x02, 0x05}, // 42 - asterisk
{0x04, 0x0e, 0x04}, // 43 - plus
{0x10, 0x08, 0x00}, // 44 - comma
{0x04, 0x04, 0x04}, // 45 - hyphen
{0x00, 0x10, 0x00}, // 46 - period
{0x18, 0x04, 0x03}, // 47 - slash
{0x1e, 0x11, 0x0f}, // 48 - zero
{0x02, 0x1f, 0x00}, // 49 - one
{0x19, 0x15, 0x12}, // 50 - two
{0x11, 0x15, 0x0a}, // 51 - three
{0x07, 0x04, 0x1f}, // 52 - four
{0x17, 0x15, 0x09}, // 53 - five
{0x1e, 0x15, 0x1d}, // 54 - six
{0x19, 0x05, 0x03}, // 55 - seven
{0x1f, 0x15, 0x1f}, // 56 - eight
{0x17, 0x15, 0x0f}, // 57 - nine
{0x00, 0x0a, 0x00}, // 58 - colon
{0x10, 0x0a, 0x00}, // 59 - semicolon
{0x04, 0x0a, 0x11}, // 60 - less
{0x0a, 0x0a, 0x0a}, // 61 - equal
{0x11, 0x0a, 0x04}, // 62 - greater
{0x01, 0x15, 0x03}, // 63 - question
{0x0e, 0x15, 0x16}, // 64 - at
{0x1e, 0x05, 0x1e}, // 65 - A
{0x1f, 0x15, 0x0a}, // 66 - B
{0x0e, 0x11, 0x11}, // 67 - C
{0x1f, 0x11, 0x0e}, // 68 - D
{0x1f, 0x15, 0x15}, // 69 - E
{0x1f, 0x05, 0x05}, // 70 - F
{0x0e, 0x15, 0x1d}, // 71 - G
{0x1f, 0x04, 0x1f}, // 72 - H
{0x11, 0x1f, 0x11}, // 73 - I
{0x08, 0x10, 0x0f}, // 74 - J
{0x1f, 0x04, 0x1b}, // 75 - K
{0x1f, 0x10, 0x10}, // 76 - L
{0x1f, 0x06, 0x1f}, // 77 - M
{0x1f, 0x0e, 0x1f}, // 78 - N
{0x0e, 0x11, 0x0e}, // 79 - O
{0x1f, 0x05, 0x02}, // 80 - P
{0x0e, 0x19, 0x1e}, // 81 - Q
{0x1f, 0x0d, 0x16}, // 82 - R
{0x12, 0x15, 0x09}, // 83 - S
{0x01, 0x1f, 0x01}, // 84 - T
{0x0f, 0x10, 0x1f}, // 85 - U
{0x07, 0x18, 0x07}, // 86 - V
{0x1f, 0x0c, 0x1f}, // 87 - W
{0x1b, 0x04, 0x1b}, // 88 - X
{0x03, 0x1c, 0x03}, // 89 - Y
{0x19, 0x15, 0x13}, // 90 - Z
{0x1f, 0x11, 0x11}, // 91 - bracketleft
{0x02, 0x04, 0x08}, // 92 - backslash
{0x11, 0x11, 0x1f}, // 93 - bracketright
{0x02, 0x01, 0x02}, // 94 - asciicircum
{0x10, 0x10, 0x10}, // 95 - underscore
{0x01, 0x02, 0x00}, // 96 - grave
{0x1a, 0x16, 0x1c}, // 97 - a
{0x1f, 0x12, 0x0c}, // 98 - b
{0x0c, 0x12, 0x12}, // 99 - c
{0x0c, 0x12, 0x1f}, // 100 - d
{0x0c, 0x1a, 0x16}, // 101 - e
{0x04, 0x1e, 0x05}, // 102 - f
{0x0c, 0x2a, 0x1e}, // 103 - g
{0x1f, 0x02, 0x1c}, // 104 - h
{0x00, 0x1d, 0x00}, // 105 - i
{0x10, 0x20, 0x1d}, // 106 - j
{0x1f, 0x0c, 0x12}, // 107 - k
{0x11, 0x1f, 0x10}, // 108 - l
{0x1e, 0x0e, 0x1e}, // 109 - m
{0x1e, 0x02, 0x1c}, // 110 - n
{0x0c, 0x12, 0x0c}, // 111 - o
{0x3e, 0x12, 0x0c}, // 112 - p
{0x0c, 0x12, 0x3e}, // 113 - q
{0x1c, 0x02, 0x02}, // 114 - r
{0x14, 0x1e, 0x0a}, // 115 - s
{0x02, 0x1f, 0x12}, // 116 - t
{0x0e, 0x10, 0x1e}, // 117 - u
{0x0e, 0x18, 0x0e}, // 118 - v
{0x1e, 0x1c, 0x1e}, // 119 - w
{0x12, 0x0c, 0x12}, // 120 - x
{0x06, 0x28, 0x1e}, // 121 - y
{0x1a, 0x1e, 0x16}, // 122 - z
{0x04, 0x1b, 0x11}, // 123 - braceleft
{0x00, 0x1b, 0x00}, // 124 - bar
{0x11, 0x1b, 0x04}, // 125 - braceright
{0x02, 0x03, 0x01}, // 126 - asciitilde
{0x12, 0x17, 0x12}, // 127 - plusminus
// {0x00, 0x00, 0x00}, // 127 - empty
// {0x00, 0x00, 0x00}, // 128 - empty
// {0x00, 0x00, 0x00}, // 129 - empty
// {0x00, 0x00, 0x00}, // 130 - empty
// {0x00, 0x00, 0x00}, // 131 - empty
// {0x00, 0x00, 0x00}, // 132 - empty
// {0x00, 0x00, 0x00}, // 133 - empty
// {0x00, 0x00, 0x00}, // 134 - empty
// {0x00, 0x00, 0x00}, // 135 - empty
// {0x00, 0x00, 0x00}, // 136 - empty
// {0x00, 0x00, 0x00}, // 137 - empty
// {0x00, 0x00, 0x00}, // 138 - empty
// {0x00, 0x00, 0x00}, // 139 - empty
// {0x00, 0x00, 0x00}, // 140 - empty
// {0x00, 0x00, 0x00}, // 141 - empty
// {0x00, 0x00, 0x00}, // 142 - empty
// {0x00, 0x00, 0x00}, // 143 - empty
// {0x00, 0x00, 0x00}, // 144 - empty
// {0x00, 0x00, 0x00}, // 145 - empty
// {0x00, 0x00, 0x00}, // 146 - empty
// {0x00, 0x00, 0x00}, // 147 - empty
// {0x00, 0x00, 0x00}, // 148 - empty
// {0x00, 0x00, 0x00}, // 149 - empty
// {0x00, 0x00, 0x00}, // 150 - empty
// {0x00, 0x00, 0x00}, // 151 - empty
// {0x00, 0x00, 0x00}, // 152 - empty
// {0x00, 0x00, 0x00}, // 153 - empty
// {0x00, 0x00, 0x00}, // 154 - empty
// {0x00, 0x00, 0x00}, // 155 - empty
// {0x00, 0x00, 0x00}, // 156 - empty
// {0x00, 0x00, 0x00}, // 157 - empty
// {0x00, 0x00, 0x00}, // 158 - empty
// {0x00, 0x00, 0x00}, // 159 - empty
// {0x00, 0x00, 0x00}, // 160 - empty
// {0x00, 0x1d, 0x00}, // 161 - exclamdown
// {0x0e, 0x1b, 0x0a}, // 162 - cent
// {0x14, 0x1f, 0x15}, // 163 - sterling
// {0x15, 0x0e, 0x15}, // 164 - currency
// {0x0b, 0x1c, 0x0b}, // 165 - yen
// {0x00, 0x1b, 0x00}, // 166 - brokenbar
// {0x14, 0x1b, 0x05}, // 167 - section
// {0x01, 0x00, 0x01}, // 168 - dieresis
// {0x02, 0x05, 0x05}, // 169 - copyright
// {0x16, 0x15, 0x17}, // 170 - ordfeminine
// {0x02, 0x05, 0x00}, // 171 - guillemotleft
// {0x02, 0x02, 0x06}, // 172 - logicalnot
// {0x04, 0x04, 0x00}, // 173 - softhyphen
// {0x07, 0x03, 0x04}, // 174 - registered
// {0x01, 0x01, 0x01}, // 175 - macron
// {0x02, 0x05, 0x02}, // 176 - degree
// {0x12, 0x17, 0x12}, // 177 - plusminus
// {0x01, 0x07, 0x04}, // 178 - twosuperior
// {0x05, 0x07, 0x07}, // 179 - threesuperior
// {0x00, 0x02, 0x01}, // 180 - acute
// {0x1f, 0x08, 0x07}, // 181 - mu
// {0x02, 0x1d, 0x1f}, // 182 - paragraph
// {0x0e, 0x0e, 0x0e}, // 183 - periodcentered
// {0x10, 0x14, 0x08}, // 184 - cedilla
// {0x00, 0x07, 0x00}, // 185 - onesuperior
// {0x12, 0x15, 0x12}, // 186 - ordmasculine
// {0x00, 0x05, 0x02}, // 187 - guillemotright
// {0x03, 0x08, 0x18}, // 188 - onequarter
// {0x0b, 0x18, 0x10}, // 189 - onehalf
// {0x03, 0x0b, 0x18}, // 190 - threequarters
// {0x18, 0x15, 0x10}, // 191 - questiondown
};
//#endif