From 39d5912adc7536c680c586fded4307e4fedc8b66 Mon Sep 17 00:00:00 2001 From: Federico Amedeo Izzo Date: Tue, 17 Nov 2020 22:50:27 +0100 Subject: [PATCH] UI: Add 3 font sizes, fix UI padding for new fonts. --- .../include/fonts/adafruit/FreeSans16pt7b.h | 389 ++++++++++++++++++ .../include/fonts/adafruit/FreeSans6pt7b.h | 148 +++++++ .../include/fonts/adafruit/FreeSans8pt7b.h | 176 ++++++++ openrtx/include/interfaces/graphics.h | 15 +- openrtx/src/threads.c | 6 +- openrtx/src/ui.c | 17 +- 6 files changed, 738 insertions(+), 13 deletions(-) create mode 100644 openrtx/include/fonts/adafruit/FreeSans16pt7b.h create mode 100644 openrtx/include/fonts/adafruit/FreeSans6pt7b.h create mode 100644 openrtx/include/fonts/adafruit/FreeSans8pt7b.h diff --git a/openrtx/include/fonts/adafruit/FreeSans16pt7b.h b/openrtx/include/fonts/adafruit/FreeSans16pt7b.h new file mode 100644 index 00000000..83853883 --- /dev/null +++ b/openrtx/include/fonts/adafruit/FreeSans16pt7b.h @@ -0,0 +1,389 @@ +static const uint8_t FreeSans16pt7bBitmaps[] PROGMEM = { + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xB6, 0xC8, 0x0F, 0xF8, 0xE7, 0xE7, + 0xE7, 0xE7, 0xC6, 0xC6, 0xC6, 0x03, 0x86, 0x01, 0xC3, 0x00, 0xC3, 0x80, + 0x61, 0xC0, 0x30, 0xC0, 0x18, 0x60, 0xFF, 0xFE, 0x7F, 0xFF, 0x06, 0x1C, + 0x03, 0x0C, 0x01, 0x86, 0x01, 0xC3, 0x00, 0xE1, 0x80, 0x61, 0xC3, 0xFF, + 0xFD, 0xFF, 0xFE, 0x1C, 0x30, 0x0E, 0x18, 0x07, 0x1C, 0x03, 0x0E, 0x01, + 0x86, 0x00, 0xC3, 0x00, 0xE1, 0x80, 0x01, 0x00, 0x02, 0x00, 0x7F, 0xC1, + 0xFF, 0xC7, 0x91, 0xCC, 0x23, 0x98, 0x43, 0x70, 0x87, 0xE1, 0x00, 0xE2, + 0x01, 0xE4, 0x01, 0xF8, 0x01, 0xFE, 0x00, 0xFF, 0x00, 0x5F, 0x00, 0x8F, + 0x01, 0x0F, 0xC2, 0x0F, 0x84, 0x1F, 0x08, 0x7E, 0x10, 0xEE, 0x23, 0x9F, + 0x5F, 0x0F, 0xFC, 0x07, 0xC0, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x30, 0x0F, 0xC0, 0x18, 0x07, 0xF8, 0x06, 0x03, 0x87, 0x03, 0x00, + 0xC0, 0xC0, 0xC0, 0x30, 0x38, 0x60, 0x0C, 0x0E, 0x38, 0x03, 0x03, 0x0C, + 0x00, 0x61, 0xC6, 0x00, 0x1F, 0xE1, 0x80, 0x03, 0xF0, 0xC0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x18, 0x3E, 0x00, 0x06, 0x1F, 0xC0, 0x03, 0x0E, 0x38, + 0x00, 0xC7, 0x07, 0x00, 0x61, 0x80, 0xC0, 0x38, 0x60, 0x30, 0x0C, 0x1C, + 0x1C, 0x06, 0x03, 0x06, 0x01, 0x80, 0xFF, 0x80, 0xC0, 0x1F, 0xC0, 0x30, + 0x00, 0x80, 0x07, 0xC0, 0x07, 0xFC, 0x01, 0xC7, 0x00, 0xE0, 0xC0, 0x38, + 0x38, 0x0E, 0x0E, 0x01, 0x87, 0x00, 0x73, 0xC0, 0x0F, 0xE0, 0x03, 0xE0, + 0x00, 0xF8, 0x00, 0xFE, 0x00, 0x79, 0xC7, 0x38, 0x39, 0xCE, 0x07, 0x63, + 0x01, 0xF8, 0xC0, 0x3E, 0x30, 0x07, 0x0E, 0x03, 0xE3, 0xC1, 0xFC, 0x7F, + 0xF7, 0x8F, 0xF0, 0xF0, 0xF0, 0x00, 0xFF, 0xB6, 0xD8, 0x06, 0x18, 0x30, + 0xC1, 0x87, 0x0C, 0x18, 0x70, 0xC1, 0x83, 0x0E, 0x1C, 0x38, 0x70, 0xE1, + 0xC1, 0x83, 0x06, 0x0E, 0x0C, 0x18, 0x38, 0x30, 0x60, 0x60, 0x40, 0xC0, + 0xC0, 0xC1, 0x81, 0x83, 0x83, 0x06, 0x0E, 0x0C, 0x18, 0x38, 0x70, 0xE1, + 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xC1, 0x87, 0x0C, 0x18, 0x60, 0xC3, + 0x06, 0x18, 0x00, 0x0C, 0x03, 0x00, 0xC1, 0xFE, 0x7F, 0x87, 0x81, 0xE0, + 0xCC, 0x33, 0x00, 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, + 0x00, 0x60, 0x00, 0xC0, 0x7F, 0xFF, 0xFF, 0xFE, 0x06, 0x00, 0x0C, 0x00, + 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x00, 0xFF, 0x92, 0xF0, 0xFF, + 0xFF, 0xFF, 0x80, 0x01, 0x80, 0x80, 0xC0, 0x60, 0x30, 0x30, 0x18, 0x0C, + 0x04, 0x06, 0x03, 0x01, 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x10, 0x18, + 0x0C, 0x04, 0x06, 0x03, 0x01, 0x80, 0x07, 0xE0, 0x3F, 0xE0, 0xF1, 0xE1, + 0xC1, 0xC7, 0x01, 0xCE, 0x03, 0x9C, 0x03, 0x30, 0x07, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xD8, 0x03, 0xB0, 0x07, + 0x70, 0x0C, 0xE0, 0x39, 0xC0, 0x71, 0xC1, 0xC1, 0xFF, 0x81, 0xFC, 0x00, + 0xE0, 0x00, 0x03, 0x07, 0x07, 0x1F, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x0F, 0xE0, 0x3F, 0xF0, 0xF1, 0xF3, 0xC0, 0xE7, 0x00, 0xEE, 0x01, 0xD8, + 0x03, 0xB0, 0x07, 0x00, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x07, 0xC0, 0x3E, + 0x00, 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x00, 0xE0, 0x01, 0x80, 0x07, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0F, 0xE0, 0x7F, 0xF0, 0xF1, 0xE3, + 0x80, 0xE7, 0x01, 0xCC, 0x03, 0xB8, 0x07, 0x00, 0x0E, 0x00, 0x3C, 0x07, + 0xF0, 0x0F, 0x80, 0x1F, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x07, + 0xE0, 0x0F, 0xC0, 0x1D, 0xC0, 0x73, 0xC1, 0xE3, 0xFF, 0x83, 0xFE, 0x00, + 0xE0, 0x00, 0x00, 0x70, 0x00, 0xE0, 0x03, 0xC0, 0x0F, 0x80, 0x1F, 0x00, + 0x7E, 0x01, 0xDC, 0x07, 0x38, 0x0C, 0x70, 0x38, 0xE0, 0xE1, 0xC3, 0x83, + 0x87, 0x07, 0x1C, 0x0E, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0xE0, + 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x3F, 0xFC, 0x7F, 0xF8, + 0xFF, 0xF1, 0xC0, 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x38, 0xC0, 0x7F, + 0xF0, 0xFF, 0xF1, 0xE0, 0xF3, 0x80, 0xE0, 0x00, 0xE0, 0x01, 0xC0, 0x03, + 0x80, 0x07, 0x00, 0x0F, 0xC0, 0x1D, 0xC0, 0x73, 0xC1, 0xE3, 0xFF, 0x83, + 0xFE, 0x01, 0xE0, 0x00, 0x07, 0xE0, 0x1F, 0xF0, 0x79, 0xE1, 0xC0, 0xE3, + 0x00, 0xCE, 0x01, 0xDC, 0x00, 0x30, 0x00, 0x63, 0xC1, 0xDF, 0xE3, 0xFF, + 0xE7, 0xC0, 0xEF, 0x00, 0xFE, 0x01, 0xF8, 0x03, 0xB0, 0x07, 0x60, 0x0E, + 0xE0, 0x1D, 0xC0, 0x71, 0xC1, 0xE1, 0xFF, 0x81, 0xFE, 0x00, 0xE0, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x60, 0x01, 0xC0, 0x07, 0x00, + 0x0C, 0x00, 0x38, 0x00, 0x60, 0x01, 0xC0, 0x07, 0x00, 0x0E, 0x00, 0x38, + 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0C, 0x00, 0x38, 0x00, + 0x70, 0x00, 0xE0, 0x03, 0x80, 0x00, 0x0F, 0xE0, 0x3F, 0xE0, 0xF1, 0xE3, + 0xC0, 0xE7, 0x01, 0xCE, 0x03, 0x9C, 0x07, 0x38, 0x0E, 0x38, 0x38, 0x3F, + 0xE0, 0x3F, 0xC1, 0xFF, 0xC7, 0x81, 0xCE, 0x01, 0xF8, 0x03, 0xF0, 0x07, + 0xE0, 0x0F, 0xC0, 0x1D, 0xC0, 0x7B, 0xC1, 0xE3, 0xFF, 0x83, 0xFE, 0x00, + 0xE0, 0x00, 0x0F, 0xE0, 0x3F, 0xE0, 0xF1, 0xE3, 0x80, 0xE7, 0x01, 0xDC, + 0x01, 0xB8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x3D, 0xC0, 0x7B, 0xE3, + 0xF3, 0xFE, 0xE1, 0xF9, 0xC0, 0x03, 0x80, 0x06, 0x00, 0x1C, 0xE0, 0x39, + 0xC0, 0x63, 0xC1, 0xC3, 0xFF, 0x03, 0xFC, 0x01, 0xE0, 0x00, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0x0F, 0xFF, 0x33, 0x2E, 0x80, 0x00, 0x01, 0x00, 0x07, 0x00, 0x3F, 0x00, + 0xFC, 0x07, 0xE0, 0x1F, 0x80, 0x7C, 0x00, 0xF0, 0x00, 0xF8, 0x00, 0x3F, + 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x0F, 0x00, 0x03, 0xFF, + 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x01, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xFC, 0x00, + 0x7E, 0x00, 0x1F, 0x80, 0x0F, 0x00, 0x3E, 0x01, 0xF0, 0x1F, 0x80, 0xFC, + 0x0F, 0xC0, 0x1E, 0x00, 0x20, 0x00, 0x00, 0x0F, 0xE0, 0xFF, 0xC7, 0xC7, + 0x9C, 0x0F, 0x60, 0x1F, 0x80, 0x7E, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x0E, 0x00, 0x30, 0x00, 0xC0, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, + 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7C, 0x0F, 0xC0, 0x0F, + 0x80, 0x1F, 0x00, 0xF0, 0x00, 0x3C, 0x0F, 0x00, 0x00, 0xF0, 0x70, 0x00, + 0x03, 0xC7, 0x01, 0xF9, 0x8E, 0x30, 0x1F, 0xFC, 0x73, 0x81, 0xC3, 0xE1, + 0xD8, 0x1C, 0x0E, 0x0F, 0xC1, 0xC0, 0x70, 0x7E, 0x0E, 0x03, 0x83, 0xF0, + 0xE0, 0x18, 0x1F, 0x87, 0x01, 0xC0, 0xDC, 0x38, 0x0E, 0x0E, 0xE1, 0xC0, + 0x60, 0x67, 0x07, 0x07, 0x07, 0x1C, 0x3C, 0x7C, 0x70, 0xE0, 0xFE, 0xFF, + 0x07, 0x83, 0xE3, 0xE0, 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x07, 0xE0, 0x18, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x1F, + 0xFC, 0x00, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x01, 0xDC, 0x00, + 0x3B, 0x80, 0x07, 0x70, 0x01, 0xC7, 0x00, 0x38, 0xE0, 0x07, 0x1C, 0x01, + 0xC1, 0xC0, 0x38, 0x38, 0x07, 0x07, 0x01, 0xC0, 0x70, 0x38, 0x0E, 0x07, + 0xFF, 0xC1, 0xFF, 0xFC, 0x38, 0x03, 0x8F, 0x00, 0x79, 0xC0, 0x07, 0x38, + 0x00, 0xEF, 0x00, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x38, 0xFF, 0xF0, 0x3F, + 0xFF, 0x0F, 0xFF, 0xE3, 0x80, 0x3C, 0xE0, 0x07, 0x38, 0x00, 0xCE, 0x00, + 0x3B, 0x80, 0x1C, 0xE0, 0x07, 0x38, 0x03, 0x8F, 0xFF, 0xC3, 0xFF, 0xF8, + 0xFF, 0xFF, 0x38, 0x01, 0xEE, 0x00, 0x3B, 0x80, 0x06, 0xE0, 0x01, 0xF8, + 0x00, 0xEE, 0x00, 0x3B, 0x80, 0x1E, 0xFF, 0xFF, 0x3F, 0xFF, 0x8F, 0xFF, + 0xC0, 0x01, 0xFE, 0x00, 0x7F, 0xF8, 0x0F, 0x8F, 0xC1, 0xE0, 0x1C, 0x3C, + 0x00, 0xE3, 0x80, 0x0E, 0x70, 0x00, 0x77, 0x00, 0x00, 0x70, 0x00, 0x07, + 0x00, 0x00, 0x60, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x06, 0x00, 0x00, + 0x70, 0x00, 0x07, 0x00, 0x07, 0x70, 0x00, 0x77, 0x80, 0x0F, 0x38, 0x00, + 0xE1, 0xC0, 0x1E, 0x1F, 0x03, 0xC0, 0xFF, 0xF8, 0x03, 0xFF, 0x00, 0x0F, + 0x80, 0xFF, 0xE0, 0x3F, 0xFF, 0x0F, 0xFF, 0xE3, 0x80, 0x7C, 0xE0, 0x07, + 0x38, 0x00, 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xE0, 0x01, 0xF8, 0x00, 0x7E, + 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, + 0x06, 0xE0, 0x03, 0xB8, 0x00, 0xEE, 0x00, 0x73, 0x80, 0x3C, 0xFF, 0xFE, + 0x3F, 0xFF, 0x0F, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, + 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xE0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0E, 0x00, + 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0xFF, 0xF7, + 0xFF, 0xEF, 0xFF, 0xDC, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, + 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x00, 0x01, + 0xFF, 0x00, 0x3F, 0xFE, 0x03, 0xF1, 0xF8, 0x3C, 0x03, 0xC3, 0xC0, 0x07, + 0x1C, 0x00, 0x39, 0xC0, 0x00, 0xEE, 0x00, 0x00, 0x70, 0x00, 0x03, 0x00, + 0x00, 0x38, 0x00, 0x01, 0xC0, 0x1F, 0xFE, 0x00, 0xFF, 0xF0, 0x07, 0xFD, + 0xC0, 0x00, 0x6E, 0x00, 0x07, 0x70, 0x00, 0x3B, 0xC0, 0x01, 0xCE, 0x00, + 0x1E, 0x38, 0x01, 0xF1, 0xF0, 0x1D, 0x87, 0xFF, 0xCC, 0x0F, 0xFC, 0x60, + 0x0F, 0x00, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, + 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, + 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x00, + 0x1F, 0x80, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, + 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, + 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, + 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xF0, 0xF7, 0xFE, 0x3F, 0xC0, 0xF0, + 0xE0, 0x03, 0xDC, 0x00, 0xF3, 0x80, 0x3C, 0x70, 0x0F, 0x0E, 0x03, 0xC1, + 0xC0, 0xF0, 0x38, 0x1C, 0x07, 0x07, 0x00, 0xE1, 0xC0, 0x1C, 0x70, 0x03, + 0x9F, 0x00, 0x77, 0xF0, 0x0F, 0xCE, 0x01, 0xF0, 0xE0, 0x3C, 0x1E, 0x07, + 0x01, 0xC0, 0xE0, 0x1C, 0x1C, 0x03, 0xC3, 0x80, 0x38, 0x70, 0x03, 0x8E, + 0x00, 0x79, 0xC0, 0x07, 0xB8, 0x00, 0x70, 0xE0, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, + 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, + 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0xF8, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFF, + 0x00, 0x1F, 0xFC, 0x00, 0xFF, 0xB0, 0x03, 0xFE, 0xE0, 0x0D, 0xFB, 0x80, + 0x77, 0xE6, 0x01, 0xDF, 0x9C, 0x06, 0x7E, 0x70, 0x39, 0xF8, 0xC0, 0xE7, + 0xE3, 0x83, 0x1F, 0x8E, 0x1C, 0x7E, 0x18, 0x71, 0xF8, 0x71, 0x87, 0xE1, + 0xCE, 0x1F, 0x83, 0x38, 0x7E, 0x0E, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0x7C, + 0x1F, 0x81, 0xE0, 0x7E, 0x07, 0x81, 0xC0, 0xF0, 0x01, 0xFC, 0x00, 0x7F, + 0x80, 0x1F, 0xF0, 0x07, 0xFC, 0x01, 0xFB, 0x80, 0x7E, 0xF0, 0x1F, 0x9C, + 0x07, 0xE3, 0x81, 0xF8, 0xF0, 0x7E, 0x1C, 0x1F, 0x83, 0x87, 0xE0, 0xE1, + 0xF8, 0x1C, 0x7E, 0x03, 0x9F, 0x80, 0xE7, 0xE0, 0x1D, 0xF8, 0x07, 0xFE, + 0x00, 0xFF, 0x80, 0x1F, 0xE0, 0x07, 0xF8, 0x00, 0xFE, 0x00, 0x1C, 0x01, + 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0xFC, 0xFE, 0x07, 0x80, 0x7C, 0x3C, 0x00, + 0x70, 0xE0, 0x00, 0xE7, 0x00, 0x03, 0x9C, 0x00, 0x07, 0xF0, 0x00, 0x1F, + 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, + 0x00, 0x7E, 0x00, 0x01, 0xDC, 0x00, 0x07, 0x70, 0x00, 0x3D, 0xE0, 0x00, + 0xE3, 0x80, 0x07, 0x8F, 0x00, 0x3C, 0x1F, 0x03, 0xE0, 0x3F, 0xFF, 0x00, + 0x3F, 0xF8, 0x00, 0x1F, 0x00, 0xFF, 0xF0, 0xFF, 0xFC, 0xFF, 0xFE, 0xE0, + 0x0F, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x0F, 0xE0, 0x1E, 0xFF, 0xFE, 0xFF, 0xF8, 0xE0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0xFC, 0xFE, 0x07, + 0x80, 0x7C, 0x3C, 0x00, 0x70, 0xE0, 0x00, 0xE7, 0x00, 0x03, 0x9C, 0x00, + 0x07, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF8, 0x00, 0x07, + 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xDC, 0x00, 0x07, 0x70, + 0x00, 0x39, 0xE0, 0x18, 0xE3, 0x80, 0x77, 0x8F, 0x00, 0xFC, 0x1F, 0x03, + 0xE0, 0x3F, 0xFF, 0xC0, 0x3F, 0xF3, 0x80, 0x1E, 0x07, 0x00, 0x00, 0x08, + 0xFF, 0xF8, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, 0x80, 0x1E, 0xE0, 0x03, 0xB8, + 0x00, 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xE0, 0x03, 0xB8, 0x01, 0xEE, 0x01, + 0xF3, 0xFF, 0xF0, 0xFF, 0xFE, 0x38, 0x03, 0xCE, 0x00, 0x7B, 0x80, 0x0E, + 0xE0, 0x03, 0xB8, 0x00, 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xE0, 0x03, 0xB8, + 0x00, 0xEE, 0x00, 0x1C, 0x07, 0xFC, 0x07, 0xFF, 0x83, 0xF0, 0xF0, 0xE0, + 0x1E, 0x78, 0x03, 0x9C, 0x00, 0x77, 0x00, 0x1D, 0xC0, 0x00, 0x78, 0x00, + 0x0F, 0xC0, 0x01, 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFF, 0x80, 0x03, 0xE0, + 0x00, 0x3C, 0x00, 0x07, 0x60, 0x01, 0xD8, 0x00, 0x77, 0x00, 0x1D, 0xE0, + 0x07, 0x3C, 0x07, 0x87, 0xFF, 0xC0, 0xFF, 0xE0, 0x07, 0x80, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, + 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x07, + 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, + 0x00, 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, + 0x1C, 0x00, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, + 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, + 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, + 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFE, 0x00, 0xF7, 0x80, 0xF1, 0xFF, + 0xF0, 0x7F, 0xF0, 0x07, 0x80, 0xE0, 0x00, 0xFE, 0x00, 0x1D, 0xC0, 0x07, + 0x38, 0x00, 0xE3, 0x80, 0x1C, 0x70, 0x07, 0x0E, 0x00, 0xE0, 0xE0, 0x1C, + 0x1C, 0x07, 0x03, 0x80, 0xE0, 0x38, 0x1C, 0x07, 0x07, 0x00, 0xE0, 0xE0, + 0x0E, 0x1C, 0x01, 0xC7, 0x00, 0x38, 0xE0, 0x03, 0x9C, 0x00, 0x77, 0x00, + 0x06, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x00, 0x01, 0xE0, 0x00, 0x38, 0x00, + 0xE0, 0x0F, 0x00, 0x7E, 0x00, 0xF0, 0x07, 0xE0, 0x0F, 0x00, 0xF7, 0x01, + 0xF0, 0x0E, 0x70, 0x1F, 0x80, 0xE7, 0x01, 0xF8, 0x0E, 0x70, 0x1B, 0x81, + 0xE3, 0x83, 0x9C, 0x1C, 0x38, 0x39, 0xC1, 0xC3, 0x83, 0x1C, 0x1C, 0x38, + 0x70, 0xC3, 0x81, 0xC7, 0x0E, 0x38, 0x1C, 0x70, 0xE3, 0x81, 0xC6, 0x0E, + 0x38, 0x1C, 0xE0, 0x63, 0x00, 0xCE, 0x07, 0x70, 0x0E, 0xE0, 0x77, 0x00, + 0xEC, 0x03, 0x70, 0x0F, 0xC0, 0x3E, 0x00, 0x7C, 0x03, 0xE0, 0x07, 0x80, + 0x3E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0xF0, 0x01, 0xEF, + 0x00, 0x38, 0xE0, 0x0E, 0x1E, 0x03, 0xC1, 0xE0, 0x70, 0x1C, 0x1C, 0x01, + 0xC7, 0x80, 0x3C, 0xE0, 0x03, 0xB8, 0x00, 0x3F, 0x00, 0x07, 0xC0, 0x00, + 0x70, 0x00, 0x1F, 0x00, 0x07, 0x70, 0x00, 0xEE, 0x00, 0x38, 0xE0, 0x0F, + 0x1E, 0x03, 0xC1, 0xE0, 0x70, 0x1C, 0x1E, 0x03, 0xC7, 0x80, 0x3C, 0xE0, + 0x03, 0xBC, 0x00, 0x78, 0x70, 0x00, 0x73, 0xC0, 0x07, 0x8E, 0x00, 0x38, + 0x38, 0x03, 0xC1, 0xE0, 0x1C, 0x07, 0x01, 0xC0, 0x3C, 0x1E, 0x00, 0xE0, + 0xE0, 0x03, 0x8F, 0x00, 0x1E, 0x70, 0x00, 0x77, 0x00, 0x01, 0xF8, 0x00, + 0x0F, 0x80, 0x00, 0x38, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x70, + 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x38, 0x00, 0x01, 0xC0, 0x00, 0x7F, 0xFF, 0xBF, 0xFF, 0xDF, 0xFF, 0xE0, + 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x78, 0x00, 0x78, + 0x00, 0x78, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, + 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0x38, 0xE3, 0x8E, 0x38, + 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, + 0xE3, 0x8E, 0x3F, 0xFF, 0xF0, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, 0x00, + 0x80, 0x60, 0x30, 0x08, 0x06, 0x03, 0x00, 0x80, 0x60, 0x30, 0x08, 0x06, + 0x03, 0x00, 0x80, 0x60, 0x30, 0x18, 0x06, 0x03, 0xFF, 0xF1, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0x71, 0xFF, 0xFF, 0xF0, 0x07, 0x00, 0xF0, 0x0F, 0x80, + 0xD8, 0x19, 0x81, 0x8C, 0x38, 0xC3, 0x0E, 0x30, 0x66, 0x06, 0x60, 0x3E, + 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF1, 0xC3, 0x87, 0x07, 0xE0, 0x1F, + 0xF8, 0x3F, 0xF8, 0x70, 0x1C, 0x70, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, + 0xFC, 0x1F, 0xFC, 0x3F, 0x9C, 0x78, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, + 0x1C, 0x70, 0x7C, 0x7F, 0xFF, 0x3F, 0xCF, 0x0E, 0x06, 0xC0, 0x03, 0x00, + 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x7C, 0x37, 0xFC, 0xDF, + 0xFB, 0xC0, 0xEE, 0x03, 0xF8, 0x07, 0xE0, 0x1F, 0x00, 0x3C, 0x00, 0xF0, + 0x03, 0xC0, 0x0F, 0x80, 0x7E, 0x01, 0xFC, 0x0F, 0xF8, 0x7B, 0xFF, 0xCD, + 0xFE, 0x01, 0xE0, 0x07, 0xC0, 0x7F, 0xC3, 0xFF, 0x9E, 0x0E, 0x70, 0x1B, + 0x80, 0x7E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x07, + 0xE0, 0x1D, 0xC0, 0x77, 0x83, 0x8F, 0xFC, 0x1F, 0xE0, 0x1E, 0x00, 0x00, + 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC1, 0xE3, + 0x8F, 0xF7, 0x3F, 0xFE, 0xF0, 0x7D, 0xC0, 0x7F, 0x00, 0xFE, 0x00, 0xFC, + 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x7B, 0x80, + 0xF7, 0x83, 0xE7, 0xFF, 0xC7, 0xFB, 0x83, 0xC0, 0x07, 0xC0, 0x3F, 0xE0, + 0xFF, 0xE1, 0xC0, 0xE7, 0x01, 0xCE, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xFF, + 0xFF, 0xFF, 0xFF, 0x80, 0x07, 0x00, 0x06, 0x00, 0xEE, 0x03, 0x8E, 0x0F, + 0x1F, 0xFC, 0x1F, 0xF0, 0x07, 0x80, 0x0E, 0x7C, 0xF1, 0x83, 0x06, 0x0C, + 0x7F, 0xFE, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, + 0x06, 0x0C, 0x00, 0x07, 0x80, 0x7F, 0xB3, 0xFF, 0xDE, 0x0F, 0x70, 0x1F, + 0x80, 0x7E, 0x01, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x07, + 0xE0, 0x1D, 0xC0, 0x77, 0x83, 0xCF, 0xFB, 0x1F, 0xCC, 0x1C, 0x30, 0x01, + 0xD8, 0x07, 0x70, 0x39, 0xF3, 0xE3, 0xFF, 0x03, 0xF0, 0xE0, 0x07, 0x00, + 0x38, 0x01, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x8F, 0x1D, 0xFE, 0xFC, 0xFF, + 0x81, 0xFC, 0x0F, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, + 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x60, 0xFF, + 0x80, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x1C, 0x71, 0xC0, 0x00, + 0x00, 0x07, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0x71, 0xDF, 0xFB, 0xC0, 0xC0, 0x03, 0x00, 0x0C, 0x00, + 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x3C, 0xC1, 0xE3, 0x0F, + 0x0C, 0x78, 0x33, 0xC0, 0xDE, 0x03, 0xFC, 0x0F, 0xF0, 0x3C, 0xE0, 0xE3, + 0xC3, 0x07, 0x0C, 0x0E, 0x30, 0x3C, 0xC0, 0x73, 0x00, 0xEC, 0x03, 0x80, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x07, 0xC1, 0xE3, + 0xBF, 0x9F, 0xEF, 0xDF, 0xF7, 0xBC, 0x1F, 0x07, 0xE0, 0x38, 0x1F, 0x80, + 0xC0, 0x7E, 0x03, 0x01, 0xF8, 0x0C, 0x07, 0xE0, 0x30, 0x1F, 0x80, 0xC0, + 0x7E, 0x03, 0x01, 0xF8, 0x0C, 0x07, 0xE0, 0x30, 0x1F, 0x80, 0xC0, 0x7E, + 0x03, 0x01, 0xF8, 0x0C, 0x07, 0xE0, 0x30, 0x1C, 0x03, 0xC7, 0x7F, 0xBF, + 0x3F, 0xE0, 0x7F, 0x03, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, + 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x18, + 0x07, 0xC0, 0x3F, 0xE0, 0xFF, 0xE3, 0xC1, 0xE7, 0x01, 0xCC, 0x01, 0xF8, + 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x76, 0x00, + 0xEE, 0x03, 0x9E, 0x0F, 0x1F, 0xFC, 0x1F, 0xF0, 0x0F, 0x00, 0x07, 0xC3, + 0x7F, 0xCF, 0xFF, 0x3C, 0x0E, 0xE0, 0x3F, 0x80, 0x7E, 0x01, 0xF0, 0x03, + 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF8, 0x07, 0xE0, 0x1F, 0xC0, 0xFF, 0x87, + 0xB7, 0xFC, 0xCF, 0xE3, 0x0E, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, + 0x0C, 0x00, 0x30, 0x00, 0x07, 0x80, 0x3F, 0xDC, 0xFF, 0xFB, 0xC1, 0xF7, + 0x01, 0xFC, 0x03, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, + 0x3F, 0x00, 0x7E, 0x01, 0xEE, 0x03, 0xDE, 0x0F, 0x9F, 0xFF, 0x1F, 0xEE, + 0x0F, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x07, 0xEF, 0xFF, 0xF8, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x0F, 0xC1, 0xFF, 0x1F, 0xFC, 0xE0, + 0xEE, 0x03, 0xF0, 0x01, 0xC0, 0x0F, 0xC0, 0x3F, 0xC0, 0x7F, 0x80, 0x3E, + 0x00, 0x7E, 0x01, 0xF0, 0x1F, 0xC0, 0xEF, 0xFE, 0x3F, 0xE0, 0x3C, 0x00, + 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x0F, 0xE0, 0x3F, + 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, + 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x3D, 0xFF, 0x6F, 0xF3, + 0x1E, 0x00, 0x70, 0x0E, 0xE0, 0x19, 0xC0, 0x71, 0xC0, 0xE3, 0x81, 0x87, + 0x07, 0x07, 0x0E, 0x0E, 0x18, 0x1C, 0x70, 0x1C, 0xC0, 0x3B, 0x80, 0x37, + 0x00, 0x7C, 0x00, 0xF8, 0x00, 0xF0, 0x01, 0xC0, 0xE0, 0x78, 0x1D, 0xC1, + 0xE0, 0x77, 0x07, 0x83, 0x9C, 0x1F, 0x0E, 0x30, 0xFC, 0x38, 0xE3, 0x30, + 0xC3, 0x8C, 0xE7, 0x0E, 0x33, 0x9C, 0x19, 0xCE, 0x70, 0x77, 0x19, 0x81, + 0xD8, 0x7E, 0x03, 0x61, 0xF8, 0x0F, 0x87, 0xC0, 0x3E, 0x0F, 0x00, 0x70, + 0x3C, 0x01, 0xC0, 0xF0, 0xE0, 0x39, 0xC1, 0xC3, 0x87, 0x06, 0x38, 0x1D, + 0xC0, 0x3F, 0x00, 0x78, 0x01, 0xC0, 0x07, 0x80, 0x3E, 0x01, 0xDC, 0x06, + 0x38, 0x38, 0xE1, 0xC1, 0xC7, 0x03, 0xB8, 0x0E, 0xE0, 0x1F, 0x80, 0xE6, + 0x03, 0x9C, 0x0E, 0x70, 0x70, 0xC1, 0xC3, 0x86, 0x0E, 0x38, 0x18, 0xE0, + 0x73, 0x01, 0xDC, 0x03, 0x70, 0x0F, 0x80, 0x3E, 0x00, 0x78, 0x01, 0xC0, + 0x07, 0x00, 0x18, 0x00, 0xE0, 0x03, 0x80, 0x7C, 0x01, 0xE0, 0x07, 0x00, + 0x00, 0x7F, 0xFB, 0xFF, 0xC0, 0x1C, 0x01, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, + 0x00, 0xE0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x03, + 0xFF, 0xFF, 0xFF, 0x07, 0x1F, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x38, 0x70, 0xE0, 0xF0, 0x30, 0x38, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x0F, 0x07, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xE1, 0xE0, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, + 0x38, 0x70, 0xE0, 0xC1, 0x83, 0x83, 0x87, 0x1C, 0x30, 0xE1, 0xC3, 0x87, + 0x0E, 0x1C, 0x38, 0x70, 0xE3, 0xCF, 0x18, 0x00, 0x18, 0x01, 0xF8, 0x36, + 0xF0, 0xF0, 0xFF, 0xC0, 0xF8, 0x00, 0x80 }; + +static const GFXglyph FreeSans16pt7bGlyphs[] PROGMEM = { + { 0, 1, 1, 9, 0, 0 }, // 0x20 ' ' + { 1, 3, 23, 9, 4, -22 }, // 0x21 '!' + { 10, 8, 7, 11, 2, -21 }, // 0x22 '"' + { 17, 17, 23, 17, 0, -21 }, // 0x23 '#' + { 66, 15, 28, 17, 1, -23 }, // 0x24 '$' + { 119, 26, 23, 28, 1, -21 }, // 0x25 '%' + { 194, 18, 23, 21, 2, -21 }, // 0x26 '&' + { 246, 3, 7, 6, 1, -21 }, // 0x27 ''' + { 249, 7, 30, 10, 2, -22 }, // 0x28 '(' + { 276, 7, 30, 10, 1, -22 }, // 0x29 ')' + { 303, 10, 9, 12, 1, -22 }, // 0x2A '*' + { 315, 15, 15, 18, 2, -14 }, // 0x2B '+' + { 344, 3, 8, 9, 3, -2 }, // 0x2C ',' + { 347, 8, 2, 10, 1, -9 }, // 0x2D '-' + { 349, 3, 3, 9, 3, -2 }, // 0x2E '.' + { 351, 9, 24, 9, 0, -22 }, // 0x2F '/' + { 378, 15, 23, 17, 1, -21 }, // 0x30 '0' + { 422, 8, 22, 17, 3, -21 }, // 0x31 '1' + { 444, 15, 22, 17, 1, -21 }, // 0x32 '2' + { 486, 15, 23, 17, 1, -21 }, // 0x33 '3' + { 530, 15, 22, 17, 1, -21 }, // 0x34 '4' + { 572, 15, 23, 17, 1, -21 }, // 0x35 '5' + { 616, 15, 23, 17, 1, -21 }, // 0x36 '6' + { 660, 15, 22, 17, 1, -21 }, // 0x37 '7' + { 702, 15, 23, 17, 1, -21 }, // 0x38 '8' + { 746, 15, 23, 17, 1, -21 }, // 0x39 '9' + { 790, 4, 16, 9, 3, -15 }, // 0x3A ':' + { 798, 4, 21, 9, 3, -15 }, // 0x3B ';' + { 809, 16, 15, 18, 1, -14 }, // 0x3C '<' + { 839, 15, 8, 18, 2, -10 }, // 0x3D '=' + { 854, 15, 15, 18, 2, -14 }, // 0x3E '>' + { 883, 14, 23, 17, 2, -22 }, // 0x3F '?' + { 924, 29, 27, 32, 1, -22 }, // 0x40 '@' + { 1022, 19, 23, 21, 1, -22 }, // 0x41 'A' + { 1077, 18, 23, 21, 2, -22 }, // 0x42 'B' + { 1129, 20, 24, 23, 1, -22 }, // 0x43 'C' + { 1189, 18, 23, 23, 3, -22 }, // 0x44 'D' + { 1241, 16, 23, 21, 3, -22 }, // 0x45 'E' + { 1287, 15, 23, 19, 3, -22 }, // 0x46 'F' + { 1331, 21, 24, 24, 1, -22 }, // 0x47 'G' + { 1394, 17, 23, 23, 3, -22 }, // 0x48 'H' + { 1443, 3, 23, 9, 3, -22 }, // 0x49 'I' + { 1452, 12, 24, 16, 1, -22 }, // 0x4A 'J' + { 1488, 19, 23, 21, 2, -22 }, // 0x4B 'K' + { 1543, 15, 23, 17, 2, -22 }, // 0x4C 'L' + { 1587, 22, 23, 26, 2, -22 }, // 0x4D 'M' + { 1651, 18, 23, 23, 2, -22 }, // 0x4E 'N' + { 1703, 22, 24, 24, 1, -22 }, // 0x4F 'O' + { 1769, 16, 23, 21, 3, -22 }, // 0x50 'P' + { 1815, 22, 25, 24, 1, -22 }, // 0x51 'Q' + { 1884, 18, 23, 23, 3, -22 }, // 0x52 'R' + { 1936, 18, 24, 21, 1, -22 }, // 0x53 'S' + { 1990, 18, 23, 19, 1, -22 }, // 0x54 'T' + { 2042, 17, 24, 23, 3, -22 }, // 0x55 'U' + { 2093, 19, 23, 21, 1, -22 }, // 0x56 'V' + { 2148, 28, 23, 30, 1, -22 }, // 0x57 'W' + { 2229, 19, 23, 21, 1, -22 }, // 0x58 'X' + { 2284, 21, 23, 21, 0, -22 }, // 0x59 'Y' + { 2345, 17, 23, 19, 1, -22 }, // 0x5A 'Z' + { 2394, 6, 30, 9, 2, -22 }, // 0x5B '[' + { 2417, 9, 24, 9, 0, -22 }, // 0x5C '\' + { 2444, 6, 30, 9, 1, -22 }, // 0x5D ']' + { 2467, 12, 12, 15, 1, -21 }, // 0x5E '^' + { 2485, 19, 2, 17, -1, 5 }, // 0x5F '_' + { 2490, 6, 4, 10, 1, -22 }, // 0x60 '`' + { 2493, 16, 18, 17, 1, -16 }, // 0x61 'a' + { 2529, 14, 24, 17, 2, -22 }, // 0x62 'b' + { 2571, 14, 18, 16, 1, -16 }, // 0x63 'c' + { 2603, 15, 24, 17, 1, -22 }, // 0x64 'd' + { 2648, 15, 18, 17, 1, -16 }, // 0x65 'e' + { 2682, 7, 23, 9, 1, -22 }, // 0x66 'f' + { 2703, 14, 24, 17, 1, -16 }, // 0x67 'g' + { 2745, 13, 23, 17, 2, -22 }, // 0x68 'h' + { 2783, 3, 23, 7, 2, -22 }, // 0x69 'i' + { 2792, 6, 30, 7, -1, -22 }, // 0x6A 'j' + { 2815, 14, 23, 16, 2, -22 }, // 0x6B 'k' + { 2856, 3, 23, 7, 2, -22 }, // 0x6C 'l' + { 2865, 22, 17, 26, 2, -16 }, // 0x6D 'm' + { 2912, 13, 17, 17, 2, -16 }, // 0x6E 'n' + { 2940, 15, 18, 17, 1, -16 }, // 0x6F 'o' + { 2974, 14, 24, 17, 2, -16 }, // 0x70 'p' + { 3016, 15, 24, 17, 1, -16 }, // 0x71 'q' + { 3061, 8, 17, 10, 2, -16 }, // 0x72 'r' + { 3078, 13, 18, 16, 1, -16 }, // 0x73 's' + { 3108, 8, 22, 9, 0, -20 }, // 0x74 't' + { 3130, 13, 17, 17, 2, -15 }, // 0x75 'u' + { 3158, 15, 16, 16, 0, -15 }, // 0x76 'v' + { 3188, 22, 16, 23, 0, -15 }, // 0x77 'w' + { 3232, 14, 16, 16, 1, -15 }, // 0x78 'x' + { 3260, 14, 23, 16, 1, -15 }, // 0x79 'y' + { 3301, 13, 16, 16, 1, -15 }, // 0x7A 'z' + { 3327, 8, 30, 10, 1, -22 }, // 0x7B '{' + { 3357, 2, 30, 8, 3, -22 }, // 0x7C '|' + { 3365, 7, 30, 10, 1, -22 }, // 0x7D '}' + { 3392, 14, 6, 18, 2, -13 } }; // 0x7E '~' + +static const GFXfont FreeSans16pt7b PROGMEM = { + (uint8_t *)FreeSans16pt7bBitmaps, + (GFXglyph *)FreeSans16pt7bGlyphs, + 0x20, 0x7E, 53 }; + +// Approx. 4075 bytes diff --git a/openrtx/include/fonts/adafruit/FreeSans6pt7b.h b/openrtx/include/fonts/adafruit/FreeSans6pt7b.h new file mode 100644 index 00000000..7b3a700b --- /dev/null +++ b/openrtx/include/fonts/adafruit/FreeSans6pt7b.h @@ -0,0 +1,148 @@ +static const uint8_t FreeSans6pt7bBitmaps[] PROGMEM = { + 0x00, 0xF8, 0x80, 0xF0, 0x00, 0x24, 0xA7, 0xCA, 0x0B, 0xF4, 0x14, 0x11, + 0x65, 0x54, 0x70, 0x71, 0x65, 0x78, 0x40, 0x70, 0x24, 0x89, 0x01, 0xD0, + 0x01, 0x82, 0x91, 0x24, 0x47, 0x51, 0x05, 0x18, 0xB6, 0x68, 0xBD, 0xC0, + 0x12, 0xAA, 0x84, 0x89, 0x12, 0x49, 0x29, 0x00, 0x23, 0x24, 0x21, 0x09, + 0xF2, 0x10, 0xA0, 0xC0, 0x80, 0x04, 0x84, 0x84, 0x80, 0x79, 0x14, 0x51, + 0x45, 0x14, 0x5E, 0x3C, 0x92, 0x49, 0x79, 0x14, 0x43, 0x11, 0x84, 0x3F, + 0x79, 0x10, 0x46, 0x0C, 0x14, 0x5E, 0x08, 0x62, 0x92, 0x4B, 0xF0, 0x82, + 0x7D, 0x04, 0x1A, 0x04, 0x14, 0x5E, 0x39, 0x14, 0x1E, 0x45, 0x14, 0x5E, + 0xF8, 0x84, 0x42, 0x21, 0x08, 0x79, 0x14, 0x4E, 0x4F, 0x14, 0x5E, 0x79, + 0x1C, 0x51, 0x7C, 0x14, 0xDE, 0xC0, 0x30, 0xC0, 0x36, 0x00, 0xF1, 0x07, + 0x04, 0xF8, 0x3E, 0x06, 0x0C, 0x16, 0x40, 0x74, 0xE2, 0x11, 0x10, 0x80, + 0x20, 0x07, 0x02, 0x18, 0x81, 0xA7, 0x54, 0x93, 0x22, 0x64, 0x4A, 0x7E, + 0x60, 0x06, 0x00, 0x38, 0x00, 0x18, 0x18, 0x18, 0x24, 0x24, 0x64, 0x42, + 0x42, 0xC2, 0xF2, 0x38, 0x61, 0xFA, 0x18, 0x61, 0xF8, 0x38, 0x8A, 0x1C, + 0x08, 0x10, 0x20, 0xE3, 0x7C, 0xF1, 0x1A, 0x14, 0x18, 0x30, 0x61, 0xC2, + 0xF8, 0xFE, 0x08, 0x20, 0xFE, 0x08, 0x20, 0xFC, 0xFE, 0x08, 0x20, 0xFA, + 0x08, 0x20, 0x80, 0x38, 0x8E, 0x0C, 0x08, 0xF0, 0x60, 0xE1, 0x7C, 0x87, + 0x0E, 0x1C, 0x3F, 0xF0, 0xE1, 0xC3, 0x86, 0xFF, 0x80, 0x08, 0x42, 0x10, + 0x86, 0x31, 0x70, 0x87, 0x1A, 0x65, 0x8F, 0x1A, 0x22, 0x46, 0x84, 0x84, + 0x21, 0x08, 0x42, 0x10, 0xF8, 0x83, 0xC3, 0xC3, 0xC5, 0xA5, 0xA5, 0xA9, + 0x99, 0x99, 0x83, 0x87, 0x0D, 0x1B, 0x32, 0x62, 0xC7, 0x86, 0x1C, 0x11, + 0x90, 0x48, 0x3C, 0x0E, 0x05, 0x04, 0xC2, 0x3E, 0x00, 0xF2, 0x38, 0x61, + 0xFE, 0x08, 0x20, 0x80, 0x1C, 0x11, 0x90, 0x48, 0x3C, 0x0E, 0x05, 0x04, + 0xCE, 0x3F, 0x00, 0x00, 0xF9, 0x0A, 0x1C, 0x3F, 0xD0, 0xA1, 0x42, 0x86, + 0x73, 0x38, 0x60, 0x70, 0x38, 0x61, 0xF8, 0xFE, 0x20, 0x40, 0x81, 0x02, + 0x04, 0x08, 0x10, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC2, 0x7C, 0xC3, + 0x42, 0x42, 0x66, 0x24, 0x24, 0x18, 0x18, 0x18, 0x84, 0x28, 0x8D, 0x29, + 0x25, 0x24, 0xA4, 0x52, 0x8C, 0x61, 0x8C, 0x31, 0x80, 0xC2, 0x46, 0x24, + 0x18, 0x18, 0x18, 0x24, 0x66, 0x42, 0xC3, 0x42, 0x64, 0x24, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x7E, 0x0C, 0x10, 0x41, 0x06, 0x08, 0x20, 0xFE, 0xEA, + 0xAA, 0xA8, 0x90, 0x24, 0x01, 0x20, 0xD5, 0x55, 0x54, 0x62, 0x89, 0xFE, + 0xC8, 0x79, 0x11, 0xD1, 0x4D, 0xD0, 0x84, 0x21, 0xE8, 0xC6, 0x31, 0xF0, + 0x79, 0x28, 0x20, 0x4D, 0xE0, 0x04, 0x10, 0x5F, 0x46, 0x18, 0x51, 0x7C, + 0x79, 0x1F, 0xF0, 0x45, 0xE0, 0x29, 0x74, 0x92, 0x40, 0x7D, 0x38, 0x61, + 0x4D, 0xD0, 0x52, 0x30, 0x84, 0x21, 0xE8, 0xC6, 0x31, 0x88, 0xDF, 0x80, + 0x51, 0x55, 0x56, 0x84, 0x21, 0x2A, 0x72, 0x92, 0x98, 0xFF, 0x80, 0xFF, + 0x91, 0x91, 0x91, 0x91, 0x91, 0xFC, 0x63, 0x18, 0xC4, 0x79, 0x18, 0x61, + 0x45, 0xE0, 0xF4, 0x63, 0x18, 0xFA, 0x10, 0x80, 0x7D, 0x18, 0x61, 0x45, + 0xF0, 0x41, 0x04, 0xF2, 0x49, 0x00, 0x7A, 0x58, 0x38, 0xBC, 0x4B, 0xA4, + 0x93, 0x8C, 0x63, 0x19, 0xF4, 0x89, 0x24, 0x94, 0x30, 0xC0, 0x99, 0x59, + 0x59, 0x56, 0x66, 0x26, 0x49, 0xC3, 0x0C, 0x59, 0x20, 0x89, 0x24, 0x94, + 0x30, 0xC2, 0x08, 0x40, 0x78, 0xC4, 0x44, 0x7C, 0x29, 0x24, 0x92, 0x49, + 0x00, 0xFF, 0xE0, 0x89, 0x24, 0x4A, 0x49, 0x00, 0xEC, 0xC0 }; + +static const GFXglyph FreeSans6pt7bGlyphs[] PROGMEM = { + { 0, 1, 1, 3, 0, 0 }, // 0x20 ' ' + { 1, 1, 9, 3, 1, -8 }, // 0x21 '!' + { 3, 3, 3, 4, 1, -7 }, // 0x22 '"' + { 5, 6, 8, 7, 0, -7 }, // 0x23 '#' + { 11, 6, 10, 7, 0, -8 }, // 0x24 '$' + { 19, 10, 8, 10, 0, -7 }, // 0x25 '%' + { 29, 6, 8, 8, 1, -7 }, // 0x26 '&' + { 35, 1, 3, 2, 1, -7 }, // 0x27 ''' + { 36, 2, 11, 4, 1, -8 }, // 0x28 '(' + { 39, 3, 11, 4, 0, -8 }, // 0x29 ')' + { 44, 4, 4, 5, 0, -8 }, // 0x2A '*' + { 46, 5, 6, 7, 1, -5 }, // 0x2B '+' + { 50, 1, 3, 3, 1, 0 }, // 0x2C ',' + { 51, 2, 1, 4, 1, -3 }, // 0x2D '-' + { 52, 1, 1, 3, 1, 0 }, // 0x2E '.' + { 53, 3, 9, 3, 0, -8 }, // 0x2F '/' + { 57, 6, 8, 7, 0, -7 }, // 0x30 '0' + { 63, 3, 8, 7, 1, -7 }, // 0x31 '1' + { 66, 6, 8, 7, 0, -7 }, // 0x32 '2' + { 72, 6, 8, 7, 0, -7 }, // 0x33 '3' + { 78, 6, 8, 7, 0, -7 }, // 0x34 '4' + { 84, 6, 8, 7, 0, -7 }, // 0x35 '5' + { 90, 6, 8, 7, 0, -7 }, // 0x36 '6' + { 96, 5, 8, 7, 1, -7 }, // 0x37 '7' + { 101, 6, 8, 7, 0, -7 }, // 0x38 '8' + { 107, 6, 8, 7, 0, -7 }, // 0x39 '9' + { 113, 2, 6, 3, 1, -5 }, // 0x3A ':' + { 115, 2, 8, 3, 1, -5 }, // 0x3B ';' + { 117, 5, 6, 7, 1, -5 }, // 0x3C '<' + { 121, 5, 3, 7, 1, -3 }, // 0x3D '=' + { 123, 5, 6, 7, 1, -5 }, // 0x3E '>' + { 127, 5, 9, 7, 1, -8 }, // 0x3F '?' + { 133, 11, 11, 12, 0, -8 }, // 0x40 '@' + { 149, 8, 9, 8, 0, -8 }, // 0x41 'A' + { 158, 6, 9, 8, 1, -8 }, // 0x42 'B' + { 165, 7, 9, 8, 1, -8 }, // 0x43 'C' + { 173, 7, 9, 8, 1, -8 }, // 0x44 'D' + { 181, 6, 9, 8, 1, -8 }, // 0x45 'E' + { 188, 6, 9, 7, 1, -8 }, // 0x46 'F' + { 195, 7, 9, 9, 1, -8 }, // 0x47 'G' + { 203, 7, 9, 8, 1, -8 }, // 0x48 'H' + { 211, 1, 9, 3, 1, -8 }, // 0x49 'I' + { 213, 5, 9, 6, 0, -8 }, // 0x4A 'J' + { 219, 7, 9, 8, 1, -8 }, // 0x4B 'K' + { 227, 5, 9, 7, 1, -8 }, // 0x4C 'L' + { 233, 8, 9, 10, 1, -8 }, // 0x4D 'M' + { 242, 7, 9, 8, 1, -8 }, // 0x4E 'N' + { 250, 9, 9, 9, 0, -8 }, // 0x4F 'O' + { 261, 6, 9, 8, 1, -8 }, // 0x50 'P' + { 268, 9, 10, 9, 0, -8 }, // 0x51 'Q' + { 280, 7, 9, 8, 1, -8 }, // 0x52 'R' + { 288, 6, 9, 8, 1, -8 }, // 0x53 'S' + { 295, 7, 9, 7, 0, -8 }, // 0x54 'T' + { 303, 7, 9, 8, 1, -8 }, // 0x55 'U' + { 311, 8, 9, 8, 0, -8 }, // 0x56 'V' + { 320, 11, 9, 11, 0, -8 }, // 0x57 'W' + { 333, 8, 9, 8, 0, -8 }, // 0x58 'X' + { 342, 8, 9, 8, 0, -8 }, // 0x59 'Y' + { 351, 7, 9, 7, 0, -8 }, // 0x5A 'Z' + { 359, 2, 11, 3, 1, -8 }, // 0x5B '[' + { 362, 3, 9, 3, 0, -8 }, // 0x5C '\' + { 366, 2, 11, 3, 0, -8 }, // 0x5D ']' + { 369, 4, 4, 6, 1, -7 }, // 0x5E '^' + { 371, 7, 1, 7, 0, 2 }, // 0x5F '_' + { 372, 3, 2, 4, 0, -8 }, // 0x60 '`' + { 373, 6, 6, 7, 0, -5 }, // 0x61 'a' + { 378, 5, 9, 7, 1, -8 }, // 0x62 'b' + { 384, 6, 6, 6, 0, -5 }, // 0x63 'c' + { 389, 6, 9, 7, 0, -8 }, // 0x64 'd' + { 396, 6, 6, 7, 0, -5 }, // 0x65 'e' + { 401, 3, 9, 3, 0, -8 }, // 0x66 'f' + { 405, 6, 9, 7, 0, -5 }, // 0x67 'g' + { 412, 5, 9, 7, 1, -8 }, // 0x68 'h' + { 418, 1, 9, 3, 1, -8 }, // 0x69 'i' + { 420, 2, 12, 3, 0, -8 }, // 0x6A 'j' + { 423, 5, 9, 6, 1, -8 }, // 0x6B 'k' + { 429, 1, 9, 3, 1, -8 }, // 0x6C 'l' + { 431, 8, 6, 10, 1, -5 }, // 0x6D 'm' + { 437, 5, 6, 7, 1, -5 }, // 0x6E 'n' + { 441, 6, 6, 7, 0, -5 }, // 0x6F 'o' + { 446, 5, 9, 7, 1, -5 }, // 0x70 'p' + { 452, 6, 9, 7, 0, -5 }, // 0x71 'q' + { 459, 3, 6, 4, 1, -5 }, // 0x72 'r' + { 462, 5, 6, 6, 0, -5 }, // 0x73 's' + { 466, 3, 8, 3, 0, -7 }, // 0x74 't' + { 469, 5, 6, 7, 1, -5 }, // 0x75 'u' + { 473, 6, 6, 6, 0, -5 }, // 0x76 'v' + { 478, 8, 6, 8, 0, -5 }, // 0x77 'w' + { 484, 6, 6, 6, 0, -5 }, // 0x78 'x' + { 489, 6, 9, 6, 0, -5 }, // 0x79 'y' + { 496, 5, 6, 6, 0, -5 }, // 0x7A 'z' + { 500, 3, 11, 4, 0, -8 }, // 0x7B '{' + { 505, 1, 11, 3, 1, -8 }, // 0x7C '|' + { 507, 3, 11, 4, 0, -8 }, // 0x7D '}' + { 512, 5, 2, 7, 1, -4 } }; // 0x7E '~' + +static const GFXfont FreeSans6pt7b PROGMEM = { + (uint8_t *)FreeSans6pt7bBitmaps, + (GFXglyph *)FreeSans6pt7bGlyphs, + 0x20, 0x7E, 20 }; + +// Approx. 1186 bytes diff --git a/openrtx/include/fonts/adafruit/FreeSans8pt7b.h b/openrtx/include/fonts/adafruit/FreeSans8pt7b.h new file mode 100644 index 00000000..aaba2e38 --- /dev/null +++ b/openrtx/include/fonts/adafruit/FreeSans8pt7b.h @@ -0,0 +1,176 @@ +static const uint8_t FreeSans8pt7bBitmaps[] PROGMEM = { + 0x00, 0xFF, 0x60, 0xBB, 0x98, 0x13, 0x09, 0x04, 0x8F, 0xF3, 0x21, 0x30, + 0x91, 0xFE, 0x24, 0x12, 0x19, 0x00, 0x08, 0x3E, 0x4A, 0x49, 0x48, 0x68, + 0x3E, 0x0B, 0x09, 0x49, 0x4B, 0x7E, 0x08, 0x08, 0x30, 0x42, 0x42, 0x31, + 0x20, 0x89, 0x07, 0x90, 0x18, 0x80, 0x09, 0xC0, 0x99, 0x04, 0x88, 0x44, + 0x42, 0x1E, 0x3C, 0x32, 0x11, 0x0D, 0x83, 0x83, 0xC3, 0x25, 0x1E, 0x86, + 0x63, 0x9F, 0x60, 0xF0, 0x22, 0x44, 0xC8, 0x88, 0x8C, 0x44, 0x22, 0x89, + 0x22, 0x49, 0x2D, 0x25, 0x00, 0x0F, 0x69, 0x10, 0x20, 0x47, 0xF1, 0x02, + 0x04, 0x00, 0xF5, 0xE0, 0xF0, 0x11, 0x12, 0x22, 0x44, 0x48, 0x80, 0x79, + 0x9B, 0x1C, 0x38, 0x70, 0x60, 0xC3, 0x87, 0x89, 0xF0, 0x27, 0x92, 0x49, + 0x24, 0x80, 0x7D, 0x8E, 0x1C, 0x10, 0x61, 0x8E, 0x30, 0xC1, 0x03, 0xF8, + 0x3C, 0x62, 0x43, 0x03, 0x06, 0x1E, 0x03, 0x03, 0x43, 0x43, 0x3E, 0x06, + 0x0E, 0x0E, 0x16, 0x36, 0x66, 0x46, 0xFF, 0x06, 0x06, 0x06, 0x7D, 0x83, + 0x06, 0x0F, 0xD8, 0xC1, 0x81, 0x83, 0x8D, 0xF0, 0x3C, 0x8B, 0x1C, 0x0B, + 0x99, 0xA1, 0xC1, 0x83, 0x8D, 0xF0, 0xFE, 0x04, 0x10, 0x40, 0x82, 0x04, + 0x18, 0x20, 0x41, 0x80, 0x79, 0x8A, 0x1C, 0x36, 0xCF, 0xA1, 0xC1, 0x83, + 0x8D, 0xF0, 0x79, 0x9A, 0x1C, 0x38, 0x78, 0xDE, 0x83, 0x87, 0x89, 0xE0, + 0x83, 0x83, 0x40, 0x06, 0x3B, 0x86, 0x07, 0x01, 0x80, 0x80, 0xFF, 0xFC, + 0x07, 0xF0, 0xC0, 0xE0, 0x38, 0x11, 0xCE, 0x20, 0x00, 0x18, 0xFB, 0x1E, + 0x10, 0x61, 0x86, 0x08, 0x10, 0x00, 0x40, 0x80, 0x03, 0x80, 0x7F, 0x83, + 0x03, 0x18, 0x06, 0xC7, 0xEE, 0x33, 0x39, 0x84, 0x66, 0x33, 0x98, 0x8A, + 0x66, 0x6C, 0xEF, 0x18, 0x00, 0x30, 0x00, 0x7F, 0x00, 0x0E, 0x03, 0x81, + 0xA0, 0x4C, 0x13, 0x0C, 0x43, 0xF8, 0xFE, 0x60, 0x90, 0x3C, 0x0C, 0xFE, + 0x61, 0xB0, 0x58, 0x2C, 0x67, 0xFB, 0x07, 0x83, 0xC1, 0xE1, 0xBF, 0x80, + 0x0C, 0x0F, 0xC6, 0x1B, 0x02, 0x80, 0x20, 0x08, 0x02, 0x00, 0xC0, 0xF0, + 0x26, 0x18, 0xFC, 0xFF, 0x60, 0xF0, 0x78, 0x1C, 0x0E, 0x07, 0x03, 0x81, + 0xC1, 0xE1, 0xBF, 0x80, 0xFF, 0x60, 0x30, 0x18, 0x0C, 0x07, 0xFB, 0x01, + 0x80, 0xC0, 0x60, 0x3F, 0xE0, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFE, 0xC0, + 0xC0, 0xC0, 0xC0, 0xC0, 0x0C, 0x0F, 0xE6, 0x0B, 0x03, 0x80, 0x20, 0x08, + 0x7E, 0x01, 0xC0, 0x70, 0x36, 0x1C, 0xFD, 0xC0, 0xE0, 0x70, 0x38, 0x1C, + 0x0F, 0xFF, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x20, 0xFF, 0xE0, 0x06, 0x0C, + 0x18, 0x30, 0x60, 0xC1, 0xE3, 0xC7, 0x89, 0xF0, 0xC3, 0x63, 0x31, 0x19, + 0x0D, 0x87, 0x43, 0x31, 0x8C, 0xC3, 0x60, 0xB0, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0xF8, 0xE0, 0x7C, 0x1F, 0x82, 0xF8, + 0x5D, 0x1B, 0xA2, 0x76, 0x4E, 0x59, 0xCA, 0x39, 0xC7, 0x10, 0x80, 0xC0, + 0xF0, 0x7C, 0x3A, 0x1D, 0x8E, 0x67, 0x13, 0x8D, 0xC2, 0xE0, 0xF0, 0x60, + 0x0C, 0x07, 0xF1, 0x82, 0x60, 0x68, 0x05, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0x58, 0x19, 0x86, 0x1F, 0x80, 0xFF, 0x60, 0xB0, 0x78, 0x3C, 0x37, 0xF3, + 0x01, 0x80, 0xC0, 0x60, 0x30, 0x00, 0x0C, 0x07, 0xF1, 0x82, 0x60, 0x68, + 0x05, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x58, 0x59, 0x86, 0x1F, 0xE0, 0x04, + 0xFF, 0x30, 0x6C, 0x0B, 0x02, 0xC1, 0xBF, 0xCC, 0x1B, 0x02, 0xC0, 0xB0, + 0x2C, 0x08, 0x18, 0x3F, 0x30, 0x58, 0x2C, 0x03, 0x80, 0x78, 0x06, 0x81, + 0xC0, 0xF0, 0x4F, 0xC0, 0xFF, 0x86, 0x03, 0x01, 0x80, 0xC0, 0x60, 0x30, + 0x18, 0x0C, 0x06, 0x03, 0x00, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, + 0x03, 0x81, 0xC0, 0xB0, 0xCF, 0xC0, 0x40, 0xD8, 0x22, 0x08, 0x86, 0x31, + 0x04, 0x41, 0x30, 0x68, 0x0A, 0x03, 0x80, 0xC0, 0x43, 0x04, 0x87, 0x19, + 0x8A, 0x33, 0x14, 0x62, 0x6C, 0x84, 0x89, 0x0D, 0x16, 0x1E, 0x2C, 0x1C, + 0x70, 0x30, 0x60, 0x60, 0xC0, 0x60, 0x8C, 0x61, 0x30, 0x68, 0x0E, 0x03, + 0x01, 0xE0, 0x4C, 0x31, 0x18, 0x64, 0x0C, 0x60, 0xD8, 0x63, 0x18, 0x4C, + 0x1A, 0x03, 0x80, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x7F, 0x80, 0xC0, + 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x60, 0x20, 0x3F, 0xE0, 0xF2, 0x49, + 0x24, 0x92, 0x49, 0xC0, 0x88, 0x44, 0x42, 0x22, 0x11, 0x10, 0xE4, 0x92, + 0x49, 0x24, 0x93, 0xC0, 0x21, 0xC5, 0x12, 0x8A, 0x30, 0xFF, 0x80, 0xC6, + 0x20, 0x7D, 0x88, 0x11, 0xEC, 0x50, 0xA1, 0x7F, 0x81, 0x02, 0x07, 0xEC, + 0x70, 0x60, 0xC1, 0x83, 0x8F, 0xF0, 0x3E, 0xC5, 0x0A, 0x0C, 0x08, 0x58, + 0x9F, 0x03, 0x03, 0x03, 0x3F, 0x63, 0x43, 0xC3, 0xC3, 0x43, 0x63, 0x3D, + 0x7D, 0x8E, 0x0F, 0xF8, 0x10, 0x31, 0xBE, 0x36, 0x6F, 0x66, 0x66, 0x66, + 0x60, 0x3F, 0x63, 0x43, 0xC3, 0xC3, 0x43, 0x63, 0x3F, 0x03, 0x42, 0x7E, + 0x81, 0x02, 0x05, 0xEC, 0x78, 0xE1, 0xC3, 0x87, 0x0E, 0x18, 0x9F, 0xE0, + 0x41, 0x55, 0x55, 0x70, 0x81, 0x02, 0x04, 0x69, 0x96, 0x3C, 0x6C, 0x89, + 0x1A, 0x18, 0xFF, 0xE0, 0xBF, 0xF8, 0xCE, 0x10, 0xC2, 0x18, 0x43, 0x08, + 0x61, 0x0C, 0x21, 0xBD, 0x8F, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x7D, 0x8A, + 0x1C, 0x18, 0x30, 0xF1, 0x3E, 0xFD, 0x8E, 0x0C, 0x18, 0x30, 0x71, 0xFE, + 0x81, 0x02, 0x00, 0x3D, 0x63, 0x43, 0xC3, 0xC3, 0x43, 0x63, 0x3F, 0x03, + 0x03, 0x03, 0xBC, 0xC8, 0x88, 0x88, 0xFA, 0x38, 0x3C, 0x1C, 0x18, 0x7E, + 0x66, 0xF6, 0x66, 0x66, 0x67, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xF1, 0xFF, + 0xC2, 0x42, 0x66, 0x64, 0x24, 0x38, 0x18, 0x18, 0xC6, 0x69, 0xCD, 0x29, + 0x35, 0x26, 0xBC, 0x73, 0x0C, 0x61, 0x8C, 0x46, 0x48, 0xE0, 0xC1, 0x85, + 0x99, 0x21, 0x42, 0x8D, 0x91, 0x22, 0xC7, 0x06, 0x0C, 0x10, 0x21, 0x80, + 0x7E, 0x08, 0x30, 0xC3, 0x04, 0x10, 0x7F, 0x69, 0x24, 0xB6, 0x49, 0x24, + 0xC0, 0xFF, 0xFC, 0xE2, 0x22, 0x22, 0x33, 0x22, 0x22, 0x2E, 0x61, 0x34, + 0x30 }; + +static const GFXglyph FreeSans8pt7bGlyphs[] PROGMEM = { + { 0, 1, 1, 4, 0, 0 }, // 0x20 ' ' + { 1, 1, 11, 4, 2, -10 }, // 0x21 '!' + { 3, 4, 4, 6, 1, -10 }, // 0x22 '"' + { 5, 9, 11, 9, 0, -10 }, // 0x23 '#' + { 18, 8, 14, 9, 0, -11 }, // 0x24 '$' + { 32, 13, 11, 14, 0, -10 }, // 0x25 '%' + { 50, 9, 11, 10, 1, -10 }, // 0x26 '&' + { 63, 1, 4, 3, 1, -10 }, // 0x27 ''' + { 64, 4, 14, 5, 1, -10 }, // 0x28 '(' + { 71, 3, 14, 5, 1, -10 }, // 0x29 ')' + { 77, 4, 4, 6, 1, -10 }, // 0x2A '*' + { 79, 7, 7, 9, 1, -6 }, // 0x2B '+' + { 86, 2, 4, 4, 1, -1 }, // 0x2C ',' + { 87, 3, 1, 5, 1, -4 }, // 0x2D '-' + { 88, 2, 2, 4, 1, -1 }, // 0x2E '.' + { 89, 4, 11, 4, 0, -10 }, // 0x2F '/' + { 95, 7, 11, 9, 1, -10 }, // 0x30 '0' + { 105, 3, 11, 9, 2, -10 }, // 0x31 '1' + { 110, 7, 11, 9, 1, -10 }, // 0x32 '2' + { 120, 8, 11, 9, 0, -10 }, // 0x33 '3' + { 131, 8, 11, 9, 0, -10 }, // 0x34 '4' + { 142, 7, 11, 9, 1, -10 }, // 0x35 '5' + { 152, 7, 11, 9, 1, -10 }, // 0x36 '6' + { 162, 7, 11, 9, 1, -10 }, // 0x37 '7' + { 172, 7, 11, 9, 1, -10 }, // 0x38 '8' + { 182, 7, 11, 9, 1, -10 }, // 0x39 '9' + { 192, 1, 8, 4, 2, -7 }, // 0x3A ':' + { 193, 1, 10, 4, 2, -7 }, // 0x3B ';' + { 195, 7, 7, 9, 1, -6 }, // 0x3C '<' + { 202, 7, 4, 9, 1, -5 }, // 0x3D '=' + { 206, 7, 7, 9, 1, -6 }, // 0x3E '>' + { 213, 7, 12, 9, 1, -11 }, // 0x3F '?' + { 224, 14, 14, 16, 1, -11 }, // 0x40 '@' + { 249, 10, 11, 10, 0, -10 }, // 0x41 'A' + { 263, 9, 11, 10, 1, -10 }, // 0x42 'B' + { 276, 10, 12, 11, 1, -11 }, // 0x43 'C' + { 291, 9, 11, 11, 1, -10 }, // 0x44 'D' + { 304, 9, 11, 10, 1, -10 }, // 0x45 'E' + { 317, 8, 11, 10, 1, -10 }, // 0x46 'F' + { 328, 10, 12, 12, 1, -11 }, // 0x47 'G' + { 343, 9, 11, 11, 1, -10 }, // 0x48 'H' + { 356, 1, 11, 4, 2, -10 }, // 0x49 'I' + { 358, 7, 11, 8, 0, -10 }, // 0x4A 'J' + { 368, 9, 11, 10, 1, -10 }, // 0x4B 'K' + { 381, 7, 11, 9, 1, -10 }, // 0x4C 'L' + { 391, 11, 11, 13, 1, -10 }, // 0x4D 'M' + { 407, 9, 11, 11, 1, -10 }, // 0x4E 'N' + { 420, 11, 12, 12, 1, -11 }, // 0x4F 'O' + { 437, 9, 11, 10, 1, -10 }, // 0x50 'P' + { 450, 11, 13, 12, 1, -11 }, // 0x51 'Q' + { 468, 10, 11, 11, 1, -10 }, // 0x52 'R' + { 482, 9, 12, 10, 1, -11 }, // 0x53 'S' + { 496, 9, 11, 10, 0, -10 }, // 0x54 'T' + { 509, 9, 11, 11, 1, -10 }, // 0x55 'U' + { 522, 10, 11, 10, 0, -10 }, // 0x56 'V' + { 536, 15, 11, 15, 0, -10 }, // 0x57 'W' + { 557, 10, 11, 10, 0, -10 }, // 0x58 'X' + { 571, 10, 11, 10, 0, -10 }, // 0x59 'Y' + { 585, 9, 11, 10, 0, -10 }, // 0x5A 'Z' + { 598, 3, 14, 4, 1, -10 }, // 0x5B '[' + { 604, 4, 11, 4, 0, -10 }, // 0x5C '\' + { 610, 3, 14, 4, 0, -10 }, // 0x5D ']' + { 616, 6, 6, 7, 1, -10 }, // 0x5E '^' + { 621, 9, 1, 9, 0, 3 }, // 0x5F '_' + { 623, 4, 3, 5, 0, -11 }, // 0x60 '`' + { 625, 7, 8, 9, 1, -7 }, // 0x61 'a' + { 632, 7, 11, 9, 1, -10 }, // 0x62 'b' + { 642, 7, 8, 8, 0, -7 }, // 0x63 'c' + { 649, 8, 11, 9, 0, -10 }, // 0x64 'd' + { 660, 7, 8, 9, 1, -7 }, // 0x65 'e' + { 667, 4, 11, 4, 0, -10 }, // 0x66 'f' + { 673, 8, 11, 9, 0, -7 }, // 0x67 'g' + { 684, 7, 11, 9, 1, -10 }, // 0x68 'h' + { 694, 1, 11, 3, 1, -10 }, // 0x69 'i' + { 696, 2, 14, 3, 0, -10 }, // 0x6A 'j' + { 700, 7, 11, 8, 1, -10 }, // 0x6B 'k' + { 710, 1, 11, 3, 1, -10 }, // 0x6C 'l' + { 712, 11, 8, 13, 1, -7 }, // 0x6D 'm' + { 723, 7, 8, 9, 1, -7 }, // 0x6E 'n' + { 730, 7, 8, 9, 1, -7 }, // 0x6F 'o' + { 737, 7, 11, 9, 1, -7 }, // 0x70 'p' + { 747, 8, 11, 9, 0, -7 }, // 0x71 'q' + { 758, 4, 8, 5, 1, -7 }, // 0x72 'r' + { 762, 6, 8, 8, 1, -7 }, // 0x73 's' + { 768, 4, 10, 4, 0, -9 }, // 0x74 't' + { 773, 7, 8, 9, 1, -7 }, // 0x75 'u' + { 780, 8, 8, 8, 0, -7 }, // 0x76 'v' + { 788, 11, 8, 11, 0, -7 }, // 0x77 'w' + { 799, 7, 8, 8, 0, -7 }, // 0x78 'x' + { 806, 7, 11, 8, 0, -7 }, // 0x79 'y' + { 816, 7, 8, 8, 0, -7 }, // 0x7A 'z' + { 823, 3, 14, 5, 1, -10 }, // 0x7B '{' + { 829, 1, 14, 4, 2, -10 }, // 0x7C '|' + { 831, 4, 14, 5, 0, -10 }, // 0x7D '}' + { 838, 7, 3, 9, 1, -6 } }; // 0x7E '~' + +static const GFXfont FreeSans8pt7b PROGMEM = { + (uint8_t *)FreeSans8pt7bBitmaps, + (GFXglyph *)FreeSans8pt7bGlyphs, + 0x20, 0x7E, 26 }; + +// Approx. 1513 bytes diff --git a/openrtx/include/interfaces/graphics.h b/openrtx/include/interfaces/graphics.h index 5ea371c1..1d828f32 100644 --- a/openrtx/include/interfaces/graphics.h +++ b/openrtx/include/interfaces/graphics.h @@ -25,8 +25,11 @@ #include #include "gfxfont.h" #include "TomThumb.h" +#include "FreeSans6pt7b.h" +#include "FreeSans8pt7b.h" #include "FreeSans9pt7b.h" #include "FreeSans12pt7b.h" +#include "FreeSans16pt7b.h" #include "FreeSans18pt7b.h" #include "FreeSans24pt7b.h" @@ -78,9 +81,12 @@ typedef struct color_t typedef enum { - FONT_SIZE_6PT = 0, + FONT_SIZE_5PT = 0, + FONT_SIZE_6PT, + FONT_SIZE_8PT, FONT_SIZE_9PT, FONT_SIZE_12PT, + FONT_SIZE_16PT, FONT_SIZE_18PT, FONT_SIZE_24PT } fontSize_t; @@ -95,10 +101,13 @@ typedef enum /** * Selection of the fonts, ordered by the fontSize_t enum. */ -static GFXfont fonts[] = { TomThumb, // 6pt +static GFXfont fonts[] = { TomThumb, // 5pt + FreeSans6pt7b, // 6pt + FreeSans8pt7b, // 8pt FreeSans9pt7b, // 9pt FreeSans12pt7b, // 12pt - FreeSans18pt7b, // 18pt + FreeSans16pt7b, // 16pt + FreeSans18pt7b, // 16pt FreeSans24pt7b }; // 24pt /** diff --git a/openrtx/src/threads.c b/openrtx/src/threads.c index f68f063d..cdae49c6 100644 --- a/openrtx/src/threads.c +++ b/openrtx/src/threads.c @@ -58,15 +58,15 @@ static void ui_task(void *arg) platform_setBacklightLevel(255); // Display splash screen - point_t splash_origin = {0, SCREEN_HEIGHT / 2}; + point_t splash_origin = {0, SCREEN_HEIGHT / 2 + 6}; color_t yellow_fab413 = {250, 180, 19}; char *splash_buf = "OpenRTX"; gfx_clearScreen(); - gfx_print(splash_origin, "OpenRTX", FONT_SIZE_18PT, TEXT_ALIGN_CENTER, + gfx_print(splash_origin, "OpenRTX", FONT_SIZE_12PT, TEXT_ALIGN_CENTER, yellow_fab413); gfx_render(); while(gfx_renderingInProgress()); - OSTimeDlyHMSM(0u, 0u, 1u, 0u, OS_OPT_TIME_HMSM_STRICT, &os_err); + OSTimeDlyHMSM(1u, 0u, 1u, 0u, OS_OPT_TIME_HMSM_STRICT, &os_err); // Clear screen gfx_clearScreen(); diff --git a/openrtx/src/ui.c b/openrtx/src/ui.c index a0b21d80..627d3e9d 100644 --- a/openrtx/src/ui.c +++ b/openrtx/src/ui.c @@ -104,16 +104,17 @@ layout_t _ui_calculateLayout() const uint16_t line2_h = 32; const uint16_t line3_h = 32; const uint16_t line_pad = 8; + const uint16_t bottom_h = top_h; const uint16_t bottom_pad = 4; // Top bar font: 8 pt - const fontSize_t top_font = FONT_SIZE_9PT; + const fontSize_t top_font = FONT_SIZE_8PT; // Middle line fonts: 16 pt const fontSize_t line1_font = FONT_SIZE_12PT; const fontSize_t line2_font = FONT_SIZE_12PT; const fontSize_t line3_font = FONT_SIZE_12PT; // Bottom bar font: 8 pt - const fontSize_t bottom_font = FONT_SIZE_9PT; + const fontSize_t bottom_font = FONT_SIZE_8PT; // Radioddity GD-77 #elif SCREEN_HEIGHT > 63 @@ -125,6 +126,7 @@ layout_t _ui_calculateLayout() const uint16_t line2_h = 20; const uint16_t line3_h = 0; const uint16_t line_pad = 2; + const uint16_t bottom_h = top_h; const uint16_t bottom_pad = 0; // Top bar font: 8 pt @@ -145,6 +147,7 @@ layout_t _ui_calculateLayout() const uint16_t line2_h = 20; const uint16_t line3_h = 0; const uint16_t line_pad = 2; + const uint16_t bottom_h = 0; const uint16_t bottom_pad = 0; // Top bar font: 8 pt @@ -161,11 +164,11 @@ layout_t _ui_calculateLayout() #endif // Calculate printing positions - point_t top_pos = {0, top_pad}; - point_t line1_pos = {0, top_h + line_pad}; - point_t line2_pos = {0, top_h + line1_h + line_pad}; - point_t line3_pos = {0, top_h + line1_h + line2_h + line_pad}; - point_t bottom_pos = {0, top_h + line1_h + line2_h + line3_h + bottom_pad}; + point_t top_pos = {0, top_h - top_pad}; + point_t line1_pos = {0, top_h + line1_h - line_pad}; + point_t line2_pos = {0, top_h + line1_h + line2_h - line_pad}; + point_t line3_pos = {0, top_h + line1_h + line2_h + line3_h - line_pad}; + point_t bottom_pos = {0, top_h + line1_h + line2_h + line3_h + bottom_h - bottom_pad}; layout_t new_layout = {