Compare commits

...
Sign in to create a new pull request.

1 commit

Author SHA1 Message Date
f7907d0082 Tryout with multiple fonts 2024-12-29 04:02:47 +01:00
7 changed files with 6097 additions and 22 deletions

View file

@ -7,9 +7,9 @@
#include "sats-symbol.h"
//#include "icons.h"
// #include "oswald-20.h"
// #include "oswald-30.h"
// #include "oswald-90.h"
#include "oswald-20.h"
#include "oswald-30.h"
#include "oswald-90.h"
// #include "ubuntu-italic40.h"
// #include "ubuntu-italic60.h"
// #include "ubuntu-italic70.h"

512
src/fonts/oswald-20.h Normal file
View file

@ -0,0 +1,512 @@
const uint8_t Oswald_Medium20pt7bBitmaps[] PROGMEM = {
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xDC, 0xE7, 0x39, 0xCE, 0x73,
0x9C, 0xE7, 0x39, 0xCC, 0x20, 0x01, 0xFF, 0xFF, 0xFF, 0xFB, 0xFE, 0x7F,
0xCF, 0x79, 0xEF, 0x3D, 0xE7, 0xB8, 0xF7, 0x1E, 0xE3, 0x9C, 0x73, 0x8E,
0x00, 0x0F, 0x8F, 0x07, 0x87, 0x83, 0xC7, 0xC1, 0xE3, 0xC0, 0xF1, 0xE0,
0x78, 0xF0, 0x3C, 0x78, 0x3E, 0x3C, 0x1E, 0x1E, 0x0F, 0x0F, 0x3F, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF1, 0xE0, 0xF8, 0xF0, 0x78, 0x78, 0x3C,
0x3C, 0x7F, 0xFF, 0xBF, 0xFF, 0xDF, 0xFF, 0xEF, 0xFF, 0xF3, 0xE3, 0xC1,
0xE1, 0xE0, 0xF0, 0xF0, 0x78, 0xF8, 0x3C, 0x78, 0x1E, 0x3C, 0x0F, 0x1E,
0x07, 0x8F, 0x07, 0xC7, 0x83, 0xC3, 0xC1, 0xE3, 0xE0, 0x00, 0x80, 0x00,
0x40, 0x00, 0x20, 0x00, 0xFE, 0x01, 0xFF, 0xC1, 0xFF, 0xF1, 0xFF, 0xF8,
0xFC, 0x7E, 0xFC, 0x1F, 0x7E, 0x0F, 0xBF, 0x07, 0xDF, 0x83, 0xEF, 0xC0,
0x03, 0xF0, 0x01, 0xFC, 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x0F, 0xF0, 0x03,
0xFC, 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x0F, 0xF0, 0x01, 0xFC, 0x00, 0x7E,
0x00, 0x3F, 0x3C, 0x0F, 0xFE, 0x07, 0xFF, 0x83, 0xFF, 0xC1, 0xFB, 0xE0,
0xFD, 0xF8, 0xFC, 0x7F, 0xFE, 0x3F, 0xFE, 0x0F, 0xFF, 0x03, 0xFE, 0x00,
0x18, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x0F, 0x80, 0x1E, 0x00,
0x0F, 0xF8, 0x07, 0x80, 0x07, 0xFF, 0x01, 0xC0, 0x03, 0xFF, 0xE0, 0x70,
0x00, 0xF8, 0xF8, 0x3C, 0x00, 0x3C, 0x3E, 0x0F, 0x00, 0x0F, 0x07, 0x83,
0x80, 0x03, 0xC1, 0xE1, 0xE0, 0x00, 0xF0, 0x78, 0x78, 0x00, 0x3C, 0x1E,
0x1C, 0x00, 0x0F, 0x07, 0x8F, 0x00, 0x03, 0xC1, 0xE3, 0xC0, 0x00, 0xF0,
0xF8, 0xE0, 0x00, 0x3E, 0x3E, 0x38, 0x00, 0x0F, 0xFF, 0x1E, 0x00, 0x01,
0xFF, 0xC7, 0x87, 0xF8, 0x3F, 0xE1, 0xC3, 0xFF, 0x03, 0xC0, 0xF1, 0xFF,
0xE0, 0x00, 0x3C, 0x78, 0xF8, 0x00, 0x0E, 0x3E, 0x1E, 0x00, 0x03, 0x8F,
0x87, 0xC0, 0x01, 0xE3, 0xE1, 0xF0, 0x00, 0x78, 0xF8, 0x7C, 0x00, 0x1C,
0x3E, 0x1F, 0x00, 0x0F, 0x0F, 0x87, 0xC0, 0x03, 0xC3, 0xE1, 0xF0, 0x00,
0xE0, 0xF8, 0x78, 0x00, 0x78, 0x3E, 0x1E, 0x00, 0x1E, 0x07, 0xFF, 0x80,
0x07, 0x81, 0xFF, 0xC0, 0x01, 0xC0, 0x3F, 0xF0, 0x00, 0xF0, 0x07, 0xF0,
0x07, 0xE0, 0x03, 0xFF, 0x00, 0xFF, 0xF0, 0x1F, 0xFE, 0x07, 0xE3, 0xE0,
0xF8, 0x7C, 0x1F, 0x0F, 0x83, 0xE1, 0xF0, 0x7C, 0x3E, 0x0F, 0x87, 0x80,
0xF1, 0xF0, 0x1F, 0x3C, 0x01, 0xEF, 0x00, 0x3F, 0xE0, 0x03, 0xF8, 0x00,
0x7E, 0x00, 0x0F, 0x80, 0x03, 0xF8, 0x3C, 0xFF, 0x87, 0xBE, 0xF1, 0xF7,
0xDF, 0x3F, 0xF1, 0xE7, 0xBE, 0x3E, 0xF7, 0xC3, 0xFE, 0xF8, 0x7F, 0x9F,
0x07, 0xF3, 0xE0, 0x7C, 0x7C, 0x1F, 0xE7, 0xFF, 0xFE, 0xFF, 0xFF, 0xCF,
0xFC, 0xF8, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xEE, 0xEE, 0xE0, 0x07, 0x0F,
0x1F, 0x3F, 0x7E, 0x7C, 0x7C, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x7C, 0x7C, 0x7C, 0x3F, 0x3F, 0x1F,
0x07, 0xE0, 0x7C, 0x3F, 0x1F, 0xC3, 0xE0, 0xF0, 0x7C, 0x3E, 0x1F, 0x0F,
0x83, 0xC1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xC3, 0xE1, 0xF0,
0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF0, 0xF8, 0x7C,
0x3E, 0x1F, 0x0F, 0x0F, 0x8F, 0xCF, 0xC7, 0xC3, 0xC0, 0x0F, 0x80, 0x38,
0x01, 0xC0, 0x8E, 0x2F, 0x77, 0xFF, 0xFF, 0xFF, 0xE3, 0xF8, 0x0F, 0x80,
0xFE, 0x0F, 0x78, 0xFB, 0xE3, 0x8E, 0x0C, 0x60, 0x03, 0x80, 0x07, 0x00,
0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
0xFE, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0,
0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0x9C, 0xEE, 0xF7, 0x00, 0xFF, 0xFF, 0xFF,
0xFC, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x00, 0xE0,
0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x01, 0xE0, 0x0E, 0x00, 0x70, 0x07,
0x80, 0x3C, 0x01, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x03, 0xC0,
0x1E, 0x00, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0F,
0x00, 0x70, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x1E, 0x00, 0x07, 0xF0, 0x0F,
0xFE, 0x0F, 0xFF, 0x8F, 0xFF, 0xC7, 0xFF, 0xF3, 0xE1, 0xFB, 0xF0, 0x7D,
0xF8, 0x3F, 0xFC, 0x1F, 0xFE, 0x0F, 0xFF, 0x07, 0xFF, 0x83, 0xFF, 0xC1,
0xFF, 0xE0, 0xFF, 0xF0, 0x7F, 0xF8, 0x3F, 0xFC, 0x1F, 0xFE, 0x0F, 0xFF,
0x07, 0xFF, 0x83, 0xFF, 0xC1, 0xFF, 0xE0, 0xFF, 0xF0, 0x7F, 0xF8, 0x3F,
0xFC, 0x1F, 0xFE, 0x0F, 0xDF, 0x07, 0xCF, 0xC7, 0xE7, 0xFF, 0xF1, 0xFF,
0xF0, 0x7F, 0xF0, 0x1F, 0xF0, 0x03, 0xC1, 0xF1, 0xFD, 0xFF, 0xFF, 0xFF,
0xFF, 0x7E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C,
0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07,
0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xF0, 0x1F,
0xFC, 0x3F, 0xFE, 0x7F, 0xFE, 0x7F, 0x7F, 0xFC, 0x3F, 0xF8, 0x1F, 0xF8,
0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x3F, 0x00, 0x3F, 0x00, 0x3E, 0x00,
0x7E, 0x00, 0xFC, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x03, 0xF0, 0x07,
0xE0, 0x07, 0xC0, 0x0F, 0xC0, 0x1F, 0x80, 0x1F, 0x80, 0x3F, 0x00, 0x7E,
0x00, 0x7E, 0x00, 0xFC, 0x00, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF,
0xFE, 0x0F, 0xF0, 0x3F, 0xF8, 0x7F, 0xFC, 0x7F, 0xFE, 0xFC, 0x7E, 0xF8,
0x3F, 0xF8, 0x3F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0x00, 0x3F, 0x00,
0x3F, 0x00, 0x7E, 0x03, 0xFC, 0x03, 0xF8, 0x03, 0xF8, 0x03, 0xFC, 0x03,
0xFE, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x3F, 0x00, 0x1F, 0xF8, 0x1F, 0xF8,
0x1F, 0xF8, 0x1F, 0xF8, 0x3F, 0xF8, 0x3F, 0xFC, 0x7E, 0xFF, 0xFE, 0x7F,
0xFC, 0x3F, 0xFC, 0x1F, 0xF0, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0,
0x07, 0xF8, 0x01, 0xFE, 0x00, 0xFF, 0x80, 0x3F, 0xE0, 0x1E, 0xF8, 0x07,
0xBE, 0x01, 0xEF, 0x80, 0xF3, 0xE0, 0x3C, 0xF8, 0x1E, 0x3E, 0x07, 0x8F,
0x83, 0xE3, 0xE0, 0xF0, 0xF8, 0x3C, 0x3E, 0x1F, 0x0F, 0x87, 0x83, 0xE3,
0xE0, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F,
0x80, 0x03, 0xE0, 0x00, 0xF8, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF,
0xFE, 0xFF, 0xFE, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8,
0x00, 0xF8, 0x00, 0xF9, 0xF0, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, 0xFE, 0xFC,
0x7E, 0xF8, 0x3F, 0xF8, 0x3F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00,
0x1F, 0x00, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x3F, 0xFC,
0x3E, 0x7F, 0xFE, 0x7F, 0xFC, 0x3F, 0xF8, 0x1F, 0xF0, 0x07, 0xF0, 0x0F,
0xFE, 0x0F, 0xFF, 0x87, 0xFF, 0xC7, 0xE3, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D,
0xF8, 0x3E, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC4,
0x07, 0xFF, 0xE3, 0xFF, 0xF9, 0xFF, 0xFE, 0xFF, 0xFF, 0x7E, 0x1F, 0xBF,
0x07, 0xDF, 0x83, 0xFF, 0xC1, 0xFF, 0xE0, 0xFF, 0xF0, 0x7F, 0xF8, 0x3F,
0xFC, 0x1F, 0xFE, 0x0F, 0x9F, 0x07, 0xCF, 0xC7, 0xE7, 0xFF, 0xE1, 0xFF,
0xF0, 0x7F, 0xF0, 0x1F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0xFC, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x01, 0xF8, 0x07, 0xC0, 0x1F,
0x00, 0x7C, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x1F,
0x80, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x3F, 0x00, 0xF8, 0x03, 0xE0, 0x0F,
0x80, 0x3E, 0x01, 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x03, 0xF0, 0x0F,
0x80, 0x0F, 0xF0, 0x1F, 0xF8, 0x3F, 0xFC, 0x7F, 0xFE, 0x7E, 0x7E, 0xFC,
0x3E, 0xF8, 0x3F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xFC, 0x3F, 0x7C,
0x3E, 0x7C, 0x7E, 0x3F, 0xFC, 0x1F, 0xF8, 0x1F, 0xF8, 0x3F, 0xFC, 0x7F,
0xFE, 0x7C, 0x3E, 0xFC, 0x3F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8,
0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xFC, 0x3F, 0x7F, 0xFE, 0x7F,
0xFE, 0x3F, 0xFC, 0x0F, 0xF0, 0x07, 0xE0, 0x1F, 0xF8, 0x3F, 0xFC, 0x7F,
0xFE, 0x7C, 0x7E, 0xFC, 0x3F, 0xF8, 0x3F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8,
0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xFC, 0x3F, 0xFE,
0x7F, 0x7F, 0xFF, 0x7F, 0xFF, 0x3F, 0xDF, 0x0F, 0x9F, 0x00, 0x1F, 0x00,
0x1F, 0x00, 0x1F, 0x00, 0x1F, 0xF8, 0x1F, 0xF8, 0x3F, 0xF8, 0x3F, 0xFC,
0x3E, 0x7F, 0xFE, 0x7F, 0xFC, 0x3F, 0xF8, 0x1F, 0xF0, 0xFF, 0xFF, 0xFF,
0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF,
0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF,
0xFF, 0xFF, 0x1C, 0x71, 0x9E, 0x70, 0x00, 0x20, 0x0C, 0x07, 0x83, 0xF1,
0xFE, 0xFF, 0xFF, 0xC7, 0xE0, 0xF0, 0x1F, 0x03, 0xFC, 0x3F, 0xE3, 0xFE,
0x1F, 0xC0, 0xF8, 0x07, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
0x80, 0x0C, 0x00, 0xF0, 0x0F, 0xC0, 0xFF, 0x07, 0xFC, 0x1F, 0xF0, 0x7F,
0x00, 0xF0, 0x3F, 0x0F, 0xF3, 0xFE, 0xFF, 0x8F, 0xE0, 0xF8, 0x0E, 0x00,
0x80, 0x00, 0x0F, 0xE0, 0x7F, 0xF1, 0xFF, 0xF7, 0xFF, 0xEF, 0xFF, 0xFF,
0x0F, 0xFE, 0x0F, 0xFC, 0x1F, 0xF8, 0x3F, 0xC0, 0x7C, 0x00, 0xF8, 0x01,
0xF0, 0x07, 0xE0, 0x1F, 0x80, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0,
0x3F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0,
0x0F, 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x1F,
0xFF, 0xF8, 0x00, 0x1F, 0xFF, 0xFE, 0x00, 0x3F, 0xC0, 0x1F, 0x80, 0x3F,
0x80, 0x03, 0xE0, 0x1F, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0x3C, 0x1F,
0x01, 0xE7, 0x8F, 0x0F, 0x01, 0xFB, 0xC7, 0x8F, 0x83, 0xFF, 0xE3, 0xC7,
0x81, 0xFF, 0xF0, 0xF7, 0xC1, 0xF8, 0xF0, 0x7B, 0xC1, 0xF8, 0x78, 0x3D,
0xE0, 0xF8, 0x3C, 0x1E, 0xF0, 0xF8, 0x3E, 0x0F, 0x78, 0x7C, 0x1F, 0x07,
0xFC, 0x3E, 0x0F, 0x83, 0xFE, 0x1E, 0x07, 0xC1, 0xFE, 0x0F, 0x03, 0xC0,
0xEF, 0x07, 0x81, 0xE0, 0xF7, 0x83, 0xC0, 0xF0, 0x7B, 0xE1, 0xF0, 0xF8,
0x79, 0xF0, 0xF8, 0xFC, 0x3C, 0xF8, 0x7F, 0xFE, 0x3C, 0x3C, 0x1F, 0xEF,
0xFC, 0x1E, 0x07, 0xF7, 0xFC, 0x0F, 0x81, 0xF0, 0xF8, 0x03, 0xC0, 0x00,
0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3F, 0x00,
0x00, 0x00, 0x0F, 0xE0, 0x00, 0x80, 0x03, 0xFF, 0x9F, 0xC0, 0x00, 0xFF,
0xFF, 0xE0, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x03,
0xF0, 0x00, 0x7F, 0x00, 0x0F, 0xE0, 0x03, 0xFC, 0x00, 0x7F, 0x80, 0x0F,
0xF0, 0x01, 0xFF, 0x00, 0x3F, 0xE0, 0x0F, 0xFC, 0x01, 0xF7, 0x80, 0x3E,
0xF0, 0x07, 0xDF, 0x00, 0xFB, 0xE0, 0x3E, 0x7C, 0x07, 0xCF, 0x80, 0xF8,
0xF0, 0x1F, 0x1F, 0x03, 0xE3, 0xE0, 0xFC, 0x7C, 0x1F, 0x0F, 0x83, 0xE1,
0xF0, 0x7F, 0xFF, 0x0F, 0xFF, 0xE3, 0xFF, 0xFC, 0x7F, 0xFF, 0x8F, 0x81,
0xF1, 0xF0, 0x3F, 0x3E, 0x03, 0xEF, 0xC0, 0x7D, 0xF8, 0x0F, 0xBF, 0x01,
0xF7, 0xC0, 0x3F, 0xFF, 0xE0, 0x3F, 0xFF, 0x0F, 0xFF, 0xF3, 0xFF, 0xFC,
0xFC, 0x7F, 0xBF, 0x03, 0xEF, 0xC0, 0xFB, 0xF0, 0x3E, 0xFC, 0x0F, 0xFF,
0x03, 0xEF, 0xC0, 0xFB, 0xF0, 0x3E, 0xFC, 0x1F, 0xBF, 0xFF, 0xCF, 0xFF,
0xC3, 0xFF, 0xF8, 0xFF, 0xFF, 0x3F, 0x0F, 0xEF, 0xC0, 0xFF, 0xF0, 0x3F,
0xFC, 0x07, 0xFF, 0x01, 0xFF, 0xC0, 0x7F, 0xF0, 0x1F, 0xFC, 0x07, 0xFF,
0x01, 0xFF, 0xC0, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, 0xBF, 0xFF, 0xCF, 0xFF,
0xE3, 0xFF, 0xE0, 0x07, 0xF8, 0x07, 0xFF, 0x83, 0xFF, 0xF1, 0xFF, 0xFC,
0x7E, 0x1F, 0x9F, 0x07, 0xEF, 0xC0, 0xFB, 0xF0, 0x3E, 0xFC, 0x0F, 0xBF,
0x03, 0xFF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0,
0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00,
0xFC, 0x0F, 0xFF, 0x03, 0xFF, 0xC0, 0xFF, 0xF0, 0x3E, 0xFC, 0x0F, 0xBF,
0x03, 0xEF, 0xC0, 0xF9, 0xF8, 0x7E, 0x7F, 0xFF, 0x0F, 0xFF, 0xC1, 0xFF,
0xE0, 0x3F, 0xF0, 0xFF, 0xE0, 0x3F, 0xFF, 0x0F, 0xFF, 0xF3, 0xFF, 0xFC,
0xFC, 0x7F, 0xBF, 0x07, 0xEF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC, 0x0F, 0xFF,
0x03, 0xFF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC, 0x0F, 0xFF, 0x03, 0xFF, 0xC0,
0xFF, 0xF0, 0x3F, 0xFC, 0x0F, 0xFF, 0x03, 0xFF, 0xC0, 0xFF, 0xF0, 0x3F,
0xFC, 0x0F, 0xFF, 0x03, 0xFF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC, 0x0F, 0xFF,
0x03, 0xFF, 0xC1, 0xFB, 0xF0, 0xFE, 0xFF, 0xFF, 0x3F, 0xFF, 0xCF, 0xFF,
0xE3, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x03,
0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00,
0xFC, 0x03, 0xFF, 0xCF, 0xFF, 0x3F, 0xFC, 0xFF, 0xF3, 0xFF, 0xCF, 0xC0,
0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0,
0x0F, 0xC0, 0x3F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80,
0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xFF, 0xDF,
0xFE, 0xFF, 0xF7, 0xFF, 0xBF, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0,
0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03,
0xF0, 0x1F, 0x80, 0x07, 0xF8, 0x07, 0xFF, 0x83, 0xFF, 0xF1, 0xFF, 0xFE,
0x7E, 0x1F, 0x9F, 0x03, 0xEF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC, 0x0F, 0xFF,
0x03, 0xFF, 0xC0, 0xFF, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0,
0x03, 0xF0, 0x00, 0xFC, 0x7F, 0xFF, 0x1F, 0xFF, 0xC7, 0xFF, 0xF1, 0xFF,
0xFC, 0x07, 0xFF, 0x01, 0xFF, 0xC0, 0x7F, 0xF0, 0x1F, 0xFC, 0x07, 0xFF,
0x03, 0xFF, 0xC0, 0xFD, 0xF8, 0x7F, 0x7F, 0xFF, 0xCF, 0xFE, 0xF1, 0xFF,
0xBC, 0x3F, 0xCF, 0xFC, 0x07, 0xFF, 0x01, 0xFF, 0xC0, 0x7F, 0xF0, 0x1F,
0xFC, 0x07, 0xFF, 0x01, 0xFF, 0xC0, 0x7F, 0xF0, 0x1F, 0xFC, 0x07, 0xFF,
0x01, 0xFF, 0xC0, 0x7F, 0xF0, 0x1F, 0xFC, 0x07, 0xFF, 0x01, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xF0, 0x1F,
0xFC, 0x07, 0xFF, 0x01, 0xFF, 0xC0, 0x7F, 0xF0, 0x1F, 0xFC, 0x07, 0xFF,
0x01, 0xFF, 0xC0, 0x7F, 0xF0, 0x1F, 0xFC, 0x07, 0xFF, 0x01, 0xFF, 0xC0,
0x7F, 0xF0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07,
0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0,
0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F,
0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0xFC, 0x3F, 0x1F, 0xFF,
0xFF, 0xFB, 0xFC, 0xFC, 0x00, 0xFC, 0x0F, 0xDF, 0x81, 0xF3, 0xF0, 0x7E,
0x7E, 0x0F, 0xCF, 0xC1, 0xF1, 0xF8, 0x7E, 0x3F, 0x0F, 0x87, 0xE3, 0xF0,
0xFC, 0x7C, 0x1F, 0x9F, 0x83, 0xF3, 0xF0, 0x7E, 0xFC, 0x0F, 0xDF, 0x81,
0xFF, 0xE0, 0x3F, 0xFC, 0x07, 0xFF, 0x80, 0xFF, 0xF8, 0x1F, 0xFF, 0x03,
0xFB, 0xE0, 0x7E, 0x7E, 0x0F, 0xC7, 0xC1, 0xF8, 0xFC, 0x3F, 0x1F, 0x87,
0xE1, 0xF0, 0xFC, 0x3F, 0x1F, 0x87, 0xE3, 0xF0, 0x7E, 0x7E, 0x0F, 0xCF,
0xC0, 0xF9, 0xF8, 0x1F, 0xBF, 0x03, 0xF7, 0xE0, 0x3F, 0xFC, 0x03, 0xF0,
0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC,
0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F,
0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F,
0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, 0xFD, 0xF8, 0x03, 0xF7, 0xE0,
0x0F, 0xDF, 0xC0, 0x7F, 0x7F, 0x01, 0xFD, 0xFC, 0x07, 0xF7, 0xF0, 0x1F,
0xDF, 0xC0, 0xFF, 0x7F, 0x83, 0xFD, 0xFE, 0x0F, 0xF7, 0xF8, 0x3F, 0xDF,
0xE0, 0xEF, 0x7B, 0x87, 0xBD, 0xEF, 0x1E, 0xF7, 0xBC, 0x7B, 0xDE, 0xF1,
0xEF, 0x7B, 0xC7, 0x3D, 0xE7, 0x3C, 0xF7, 0x9E, 0xF3, 0xDE, 0x7B, 0xCF,
0xF9, 0xEF, 0x3F, 0xE7, 0xB8, 0xFF, 0x8F, 0xE3, 0xFE, 0x3F, 0x8F, 0xF8,
0xFE, 0x3F, 0xE3, 0xF8, 0xFF, 0x87, 0xC3, 0xFE, 0x1F, 0x0F, 0xF8, 0x7C,
0x3F, 0xE1, 0xF0, 0xFF, 0x87, 0x83, 0xFE, 0x0E, 0x0F, 0xF8, 0x0F, 0xFC,
0x07, 0xFE, 0x03, 0xFF, 0x81, 0xFF, 0xC0, 0xFF, 0xF0, 0x7F, 0xF8, 0x3F,
0xFE, 0x1F, 0xFF, 0x0F, 0xFF, 0x87, 0xFF, 0xE3, 0xFF, 0xF1, 0xFF, 0xFC,
0xFF, 0xDE, 0x7F, 0xEF, 0x3F, 0xF7, 0xDF, 0xF9, 0xEF, 0xFC, 0xFF, 0xFE,
0x3F, 0xFF, 0x1F, 0xFF, 0x8F, 0xFF, 0xC3, 0xFF, 0xE1, 0xFF, 0xF0, 0x7F,
0xF8, 0x3F, 0xFC, 0x1F, 0xFE, 0x07, 0xFF, 0x03, 0xFF, 0x80, 0xFF, 0xC0,
0x7F, 0xE0, 0x3F, 0xF0, 0x0F, 0x07, 0xF8, 0x07, 0xFF, 0x83, 0xFF, 0xF1,
0xFF, 0xFE, 0x7E, 0x1F, 0xBF, 0x03, 0xFF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC,
0x0F, 0xFF, 0x03, 0xFF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC, 0x0F, 0xFF, 0x03,
0xFF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC, 0x0F, 0xFF, 0x03, 0xFF, 0xC0, 0xFF,
0xF0, 0x3F, 0xFC, 0x0F, 0xFF, 0x03, 0xFF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC,
0x0F, 0xFF, 0x03, 0xFF, 0xC0, 0xFD, 0xF8, 0x7E, 0x7F, 0xFF, 0x8F, 0xFF,
0xC1, 0xFF, 0xE0, 0x3F, 0xF0, 0xFF, 0xF0, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3,
0xFF, 0xFE, 0xFC, 0x3F, 0xBF, 0x03, 0xEF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC,
0x0F, 0xFF, 0x03, 0xFF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC, 0x0F, 0xBF, 0x0F,
0xEF, 0xFF, 0xFB, 0xFF, 0xFC, 0xFF, 0xFE, 0x3F, 0xFC, 0x0F, 0xC0, 0x03,
0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC,
0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00,
0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x07, 0xF8, 0x07, 0xFF, 0x83, 0xFF, 0xF1,
0xFF, 0xFE, 0x7E, 0x1F, 0xBF, 0x03, 0xFF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC,
0x0F, 0xFF, 0x03, 0xFF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC, 0x0F, 0xFF, 0x03,
0xFF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC, 0x0F, 0xFF, 0x03, 0xFF, 0xC0, 0xFF,
0xF0, 0x3F, 0xFC, 0x0F, 0xFF, 0x03, 0xFF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC,
0x0F, 0xFF, 0x03, 0xFF, 0xC0, 0xFD, 0xF8, 0x7E, 0x7F, 0xFF, 0x8F, 0xFF,
0xC1, 0xFF, 0xE0, 0x3F, 0xF0, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x01, 0xF8,
0x00, 0x3E, 0x00, 0x07, 0x00, 0x00, 0xC0, 0xFF, 0xE0, 0x3F, 0xFF, 0x8F,
0xFF, 0xF3, 0xFF, 0xFE, 0xFC, 0x3F, 0xBF, 0x03, 0xFF, 0xC0, 0xFF, 0xF0,
0x3F, 0xFC, 0x07, 0xFF, 0x01, 0xFF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC, 0x0F,
0xFF, 0x0F, 0xEF, 0xFF, 0xFB, 0xFF, 0xFC, 0xFF, 0xFC, 0x3F, 0x1F, 0x0F,
0xC7, 0xE3, 0xF1, 0xF8, 0xFC, 0x3E, 0x3F, 0x0F, 0xCF, 0xC3, 0xF3, 0xF0,
0xFC, 0xFC, 0x1F, 0x3F, 0x07, 0xEF, 0xC1, 0xFB, 0xF0, 0x7E, 0xFC, 0x0F,
0xBF, 0x03, 0xFF, 0xC0, 0xFF, 0xF0, 0x1F, 0x0F, 0xE0, 0x3F, 0xF8, 0x7F,
0xFC, 0x7F, 0xFE, 0xFE, 0x7E, 0xF8, 0x3E, 0xF8, 0x3F, 0xF8, 0x1F, 0xF8,
0x1F, 0xFC, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x7F, 0x80, 0x3F,
0xE0, 0x1F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFC, 0x00, 0xFE, 0x00,
0x7F, 0x00, 0x3F, 0x78, 0x3F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xFC,
0x3F, 0xFE, 0x3F, 0x7F, 0xFE, 0x3F, 0xFE, 0x3F, 0xFC, 0x0F, 0xF0, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF8, 0x01, 0xF0,
0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00,
0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E,
0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80,
0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0xFC,
0x0F, 0xFF, 0x03, 0xFF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC, 0x0F, 0xFF, 0x03,
0xFF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC, 0x0F, 0xFF, 0x03, 0xFF, 0xC0, 0xFF,
0xF0, 0x3F, 0xFC, 0x0F, 0xFF, 0x03, 0xFF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC,
0x0F, 0xFF, 0x03, 0xFF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC, 0x0F, 0xFF, 0x03,
0xFF, 0xC0, 0xFF, 0xF0, 0x3F, 0xFC, 0x0F, 0xFF, 0x03, 0xF7, 0xC0, 0xFD,
0xF8, 0x7E, 0x7F, 0xFF, 0x8F, 0xFF, 0xC1, 0xFF, 0xE0, 0x3F, 0xF0, 0xF8,
0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7D, 0xF0, 0x1F, 0x7C, 0x0F, 0xDF, 0x03,
0xE7, 0xC0, 0xF9, 0xF0, 0x3E, 0x3E, 0x0F, 0x8F, 0x87, 0xE3, 0xE1, 0xF0,
0xF8, 0x7C, 0x3E, 0x1F, 0x07, 0x87, 0xC1, 0xF1, 0xE0, 0x7C, 0xF8, 0x1F,
0x3E, 0x07, 0xCF, 0x80, 0xF3, 0xE0, 0x3E, 0xF0, 0x0F, 0xBC, 0x03, 0xFF,
0x00, 0xFF, 0xC0, 0x1F, 0xF0, 0x07, 0xF8, 0x01, 0xFE, 0x00, 0x7F, 0x80,
0x1F, 0xE0, 0x03, 0xF8, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0xF8,
0x1E, 0x07, 0xFE, 0x07, 0x81, 0xF7, 0x81, 0xE0, 0x79, 0xE0, 0xF8, 0x3E,
0x7C, 0x3F, 0x0F, 0x9F, 0x0F, 0xC3, 0xE7, 0xC3, 0xF0, 0xF9, 0xF0, 0xFC,
0x3E, 0x7C, 0x3F, 0x0F, 0x8F, 0x0F, 0xC3, 0xC3, 0xC7, 0xF8, 0xF0, 0xF9,
0xFE, 0x7C, 0x3E, 0x7F, 0x9F, 0x0F, 0x9F, 0xE7, 0xC3, 0xE7, 0x39, 0xF0,
0xF9, 0xCE, 0x7C, 0x1E, 0xF3, 0xDE, 0x07, 0xBC, 0xF7, 0x81, 0xEF, 0x3D,
0xE0, 0x7F, 0xCF, 0xF8, 0x1F, 0xE1, 0xFE, 0x07, 0xF8, 0x7F, 0x81, 0xFE,
0x1F, 0xE0, 0x3F, 0x87, 0xF0, 0x0F, 0xE1, 0xFC, 0x03, 0xF8, 0x7F, 0x00,
0xFC, 0x0F, 0xC0, 0x3F, 0x03, 0xF0, 0x0F, 0xC0, 0xFC, 0x03, 0xF0, 0x3F,
0x00, 0x7C, 0x0F, 0x80, 0x1F, 0x03, 0xE0, 0x7C, 0x03, 0xEF, 0xC0, 0xF8,
0xF8, 0x1F, 0x1F, 0x03, 0xC3, 0xF0, 0xF8, 0x3E, 0x1F, 0x07, 0xE7, 0xC0,
0x7C, 0xF8, 0x0F, 0x9F, 0x01, 0xFF, 0xC0, 0x1F, 0xF8, 0x03, 0xFE, 0x00,
0x3F, 0xC0, 0x07, 0xF8, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x03, 0xF8, 0x00,
0x7F, 0x00, 0x1F, 0xF0, 0x03, 0xFE, 0x00, 0x7F, 0xC0, 0x1F, 0xFC, 0x03,
0xEF, 0x80, 0x7D, 0xF8, 0x1F, 0x1F, 0x03, 0xE3, 0xE0, 0xF8, 0x7E, 0x1F,
0x07, 0xC3, 0xE0, 0xFC, 0xF8, 0x0F, 0x9F, 0x01, 0xFF, 0xE0, 0x1F, 0xFC,
0x07, 0xEF, 0x80, 0xF9, 0xF0, 0x1F, 0x3F, 0x07, 0xE3, 0xE0, 0xF8, 0x7C,
0x1F, 0x0F, 0xC3, 0xE0, 0xF8, 0xF8, 0x1F, 0x1F, 0x03, 0xF3, 0xE0, 0x3E,
0xF8, 0x07, 0xDF, 0x00, 0xFF, 0xE0, 0x0F, 0xF8, 0x01, 0xFF, 0x00, 0x3F,
0xE0, 0x03, 0xF8, 0x00, 0x7F, 0x00, 0x0F, 0xE0, 0x00, 0xF8, 0x00, 0x1F,
0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E,
0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C,
0x00, 0x0F, 0x80, 0x7F, 0xFE, 0xFF, 0xFD, 0xFF, 0xFB, 0xFF, 0xF0, 0x07,
0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7C, 0x01, 0xF8, 0x03, 0xE0, 0x07, 0xC0,
0x1F, 0x80, 0x3E, 0x00, 0x7C, 0x01, 0xF8, 0x03, 0xE0, 0x0F, 0xC0, 0x1F,
0x80, 0x3E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xE0, 0x0F, 0xC0, 0x1F, 0x00,
0x3E, 0x00, 0xFC, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x87, 0xC3, 0xE1, 0xF0,
0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E,
0x1F, 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87,
0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xFF, 0xFE, 0xF0,
0x03, 0x80, 0x1E, 0x00, 0xF0, 0x03, 0x80, 0x1C, 0x00, 0xF0, 0x07, 0x80,
0x1C, 0x00, 0xF0, 0x07, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x80, 0x1C, 0x00,
0xE0, 0x07, 0x80, 0x3C, 0x00, 0xE0, 0x07, 0x80, 0x3C, 0x00, 0xE0, 0x07,
0x00, 0x3C, 0x01, 0xE0, 0x07, 0x00, 0x3C, 0x01, 0xE0, 0x07, 0x00, 0x38,
0x01, 0xE0, 0x0F, 0xFF, 0xFF, 0xFF, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F,
0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1,
0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78,
0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7F, 0xFF, 0xFE, 0x03,
0xC0, 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0xF0, 0x0F, 0xF0, 0x1F, 0xF8, 0x1E,
0x78, 0x1E, 0x78, 0x3E, 0x7C, 0x3C, 0x3C, 0x7C, 0x3E, 0x7C, 0x3E, 0xF8,
0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x7C, 0x7C, 0x3C,
0x3E, 0x1E, 0x0E, 0x0F, 0x0F, 0xE0, 0x3F, 0xE0, 0xFF, 0xE3, 0xFF, 0xE7,
0xCF, 0xDF, 0x0F, 0xBE, 0x1F, 0x7C, 0x3E, 0x00, 0x7C, 0x03, 0xF8, 0x1F,
0xF0, 0xFF, 0xE3, 0xF7, 0xCF, 0x8F, 0x9E, 0x1F, 0x7C, 0x3E, 0xF8, 0x7D,
0xF0, 0xFB, 0xE3, 0xF7, 0xFF, 0xEF, 0xFF, 0xCF, 0xE7, 0x8F, 0x8F, 0x80,
0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E,
0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF1, 0xE3, 0xEF, 0xE7, 0xFF, 0xEF, 0xFF,
0xDF, 0x0F, 0xFE, 0x0F, 0xFC, 0x1F, 0xF8, 0x3F, 0xF0, 0x7F, 0xE0, 0xFF,
0xC1, 0xFF, 0x83, 0xFF, 0x07, 0xFE, 0x0F, 0xFC, 0x1F, 0xF8, 0x3F, 0xF0,
0x7F, 0xE0, 0xFF, 0xC3, 0xFF, 0xEF, 0xDF, 0xFF, 0xBE, 0xFE, 0x7C, 0xFC,
0x0F, 0xC0, 0xFF, 0xC7, 0xFF, 0xBF, 0xFE, 0xF8, 0xFF, 0xE1, 0xFF, 0x87,
0xFE, 0x1F, 0xF8, 0x7F, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0,
0x0F, 0x87, 0xFE, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF, 0x87, 0xFF, 0x3E, 0x7F,
0xF8, 0xFF, 0xC1, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03,
0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x3C, 0xFD,
0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xFE, 0x1F, 0xFC, 0x3F, 0xF8,
0x7F, 0xF0, 0xFF, 0xE1, 0xFF, 0xC3, 0xFF, 0x87, 0xFF, 0x0F, 0xFE, 0x1F,
0xFC, 0x3F, 0xF8, 0x7F, 0xF0, 0xFF, 0xE1, 0xFF, 0xC3, 0xFF, 0xCF, 0xFF,
0xFF, 0xDF, 0xFF, 0x9F, 0xBF, 0x0F, 0xC0, 0xFF, 0xC7, 0xFF, 0xBF, 0xFE,
0xF8, 0xFB, 0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xF8, 0x7F, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x1F, 0xF8, 0x7F, 0xE1,
0xFF, 0x87, 0xFF, 0xFE, 0x7F, 0xF8, 0xFF, 0xC1, 0xFE, 0x00, 0x07, 0xE1,
0xFC, 0x7F, 0x9F, 0xF3, 0xF0, 0x7E, 0x0F, 0x81, 0xF0, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xF3, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8,
0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F,
0x03, 0xE0, 0x7C, 0x0F, 0x80, 0x00, 0x00, 0x81, 0xF8, 0x61, 0xFF, 0xBC,
0xFF, 0xFE, 0x3E, 0x7E, 0x1F, 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C,
0x3E, 0x1F, 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x0F, 0xFF,
0x03, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xE0, 0x1E, 0x00, 0x07, 0x80, 0x01,
0xFF, 0x80, 0x7F, 0xFE, 0x1F, 0xFF, 0xC1, 0xFF, 0xF0, 0xE0, 0xFC, 0x70,
0x0F, 0xBC, 0x01, 0xEF, 0x80, 0xFB, 0xFF, 0xFC, 0xFF, 0xFF, 0x1F, 0xFF,
0x83, 0xFF, 0x80, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80,
0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF1, 0xF3, 0xE7, 0xF7,
0xFF, 0xEF, 0xFF, 0xFF, 0x8F, 0xFE, 0x1F, 0xFC, 0x1F, 0xF8, 0x3F, 0xF0,
0x7F, 0xE0, 0xFF, 0xC1, 0xFF, 0x83, 0xFF, 0x07, 0xFE, 0x0F, 0xFC, 0x1F,
0xF8, 0x3F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC1, 0xFF, 0x83, 0xFF, 0x07, 0xFE,
0x0F, 0xFC, 0x1F, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xC0, 0x1F, 0x8F, 0xC7, 0xE3, 0xF1, 0xF8, 0x00, 0x00, 0x00,
0x1F, 0x8F, 0xC7, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7,
0xE3, 0xF1, 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xF1, 0xF8,
0xFC, 0x7E, 0x3F, 0x1F, 0xFF, 0xFF, 0xDF, 0xEF, 0xE0, 0xF8, 0x00, 0xF8,
0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8,
0x00, 0xF8, 0x00, 0xF8, 0x1F, 0xF8, 0x3F, 0xF8, 0x7E, 0xF8, 0x7E, 0xF8,
0xFC, 0xF8, 0xF8, 0xF9, 0xF8, 0xFB, 0xF0, 0xFB, 0xF0, 0xFF, 0xE0, 0xFF,
0xE0, 0xFF, 0xF0, 0xFF, 0xF0, 0xFC, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
0x7C, 0xF8, 0x7C, 0xF8, 0x7E, 0xF8, 0x3E, 0xF8, 0x3E, 0xF8, 0x3F, 0xF8,
0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xF8, 0xF8, 0x7C, 0xFB, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFC, 0x7E, 0x1F, 0xF8, 0x3E, 0x1F, 0xF8, 0x3E, 0x1F, 0xF8, 0x3E,
0x1F, 0xF8, 0x3E, 0x1F, 0xF8, 0x3E, 0x1F, 0xF8, 0x3E, 0x1F, 0xF8, 0x3E,
0x1F, 0xF8, 0x3E, 0x1F, 0xF8, 0x3E, 0x1F, 0xF8, 0x3E, 0x1F, 0xF8, 0x3E,
0x1F, 0xF8, 0x3E, 0x1F, 0xF8, 0x3E, 0x1F, 0xF8, 0x3E, 0x1F, 0xF8, 0x3E,
0x1F, 0xF8, 0x3E, 0x1F, 0xF8, 0x3E, 0x1F, 0xF8, 0x3E, 0x1F, 0xF8, 0xF9,
0xF3, 0xFB, 0xFF, 0xF7, 0xFF, 0xFF, 0xC7, 0xFF, 0x0F, 0xFE, 0x1F, 0xFC,
0x3F, 0xF8, 0x7F, 0xF0, 0xFF, 0xE1, 0xFF, 0xC3, 0xFF, 0x87, 0xFF, 0x0F,
0xFE, 0x1F, 0xFC, 0x3F, 0xF8, 0x7F, 0xF0, 0xFF, 0xE1, 0xFF, 0xC3, 0xFF,
0x87, 0xFF, 0x0F, 0xFE, 0x1F, 0x80, 0x0F, 0xC0, 0xFF, 0xC7, 0xFF, 0xBF,
0xFE, 0xF8, 0xFF, 0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF,
0x87, 0xFE, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xF8, 0x7F,
0xE1, 0xFF, 0x87, 0xFF, 0x3F, 0x7F, 0xF8, 0xFF, 0xC1, 0xFE, 0x00, 0xF8,
0xF1, 0xF7, 0xF3, 0xFF, 0xF7, 0xFF, 0xEF, 0x87, 0xFF, 0x07, 0xFE, 0x0F,
0xFC, 0x1F, 0xF8, 0x3F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC1, 0xFF, 0x83, 0xFF,
0x07, 0xFE, 0x0F, 0xFC, 0x1F, 0xF8, 0x3F, 0xF0, 0x7F, 0xE1, 0xFF, 0xF7,
0xEF, 0xFF, 0xDF, 0x7F, 0x3E, 0x7C, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03,
0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x00, 0x1E, 0x7E, 0x7F, 0xFD,
0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xFF, 0x0F, 0xFE, 0x1F, 0xFC, 0x3F, 0xF8,
0x7F, 0xF0, 0xFF, 0xE1, 0xFF, 0xC3, 0xFF, 0x87, 0xFF, 0x0F, 0xFE, 0x1F,
0xFC, 0x3F, 0xF8, 0x7F, 0xF0, 0xFF, 0xE1, 0xFF, 0xE7, 0xFF, 0xFF, 0xEF,
0xFF, 0xCF, 0xDF, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03,
0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0xF8, 0x7F, 0x3F, 0xEF, 0xFD, 0xFF, 0xFF,
0xFE, 0x7F, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0,
0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E,
0x00, 0x0F, 0xC0, 0xFF, 0x87, 0xFF, 0x1F, 0xFE, 0x7C, 0x7B, 0xE1, 0xFF,
0x83, 0x1F, 0x00, 0x7E, 0x01, 0xFC, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0,
0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x30, 0x7F, 0xC1, 0xFF, 0x87, 0xDF, 0x3E,
0x7F, 0xF8, 0xFF, 0xC1, 0xFE, 0x00, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03,
0xE0, 0x7C, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0x1F, 0x03, 0xE0,
0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C,
0x0F, 0x81, 0xF0, 0x3F, 0x07, 0xFC, 0xFF, 0x8F, 0xF0, 0xFE, 0xF8, 0x7F,
0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF, 0x87, 0xFE, 0x1F,
0xF8, 0x7F, 0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF, 0x87,
0xFE, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF, 0x87, 0xFF, 0x7F, 0xFF, 0xFD, 0xFD,
0xF7, 0xE7, 0xC0, 0xFC, 0x3E, 0xF8, 0x7D, 0xF0, 0xFB, 0xE1, 0xF7, 0xC3,
0xEF, 0x87, 0x8F, 0x9F, 0x1F, 0x3E, 0x3E, 0x7C, 0x7C, 0xF8, 0xF9, 0xE0,
0xF3, 0xC1, 0xE7, 0x83, 0xFF, 0x07, 0xFE, 0x0F, 0xF8, 0x0F, 0xF0, 0x1F,
0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFE, 0x00, 0xFC, 0x01, 0xF8, 0x00, 0xF0,
0x78, 0x7F, 0xC3, 0xC3, 0xFE, 0x3E, 0x1F, 0xF1, 0xF0, 0xF7, 0x8F, 0x8F,
0xBC, 0x7C, 0x79, 0xE3, 0xF3, 0xCF, 0x1F, 0x9E, 0x79, 0xFC, 0xF3, 0xEF,
0xE7, 0x9F, 0x77, 0x3C, 0x7B, 0xBB, 0xE3, 0xDD, 0xFE, 0x1E, 0xE7, 0xF0,
0xFF, 0x3F, 0x87, 0xF1, 0xFC, 0x3F, 0x8F, 0xE0, 0xFC, 0x7F, 0x07, 0xE3,
0xF0, 0x3F, 0x0F, 0x81, 0xF8, 0x7C, 0x0F, 0x83, 0xE0, 0x7C, 0x1F, 0x00,
0x7C, 0x1F, 0x7C, 0x1E, 0x3E, 0x3E, 0x3E, 0x3C, 0x3F, 0x3C, 0x1F, 0x7C,
0x1F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF0, 0x07, 0xF0, 0x07, 0xE0, 0x07, 0xE0,
0x07, 0xE0, 0x0F, 0xF0, 0x0F, 0xF0, 0x1F, 0xF8, 0x1F, 0xF8, 0x1E, 0xFC,
0x3E, 0x7C, 0x3C, 0x7E, 0x7C, 0x3E, 0x7C, 0x3E, 0xF8, 0x1F, 0xF8, 0x1F,
0x7C, 0x1F, 0x7C, 0x1F, 0x7C, 0x3E, 0x7C, 0x3E, 0x3C, 0x3E, 0x3E, 0x3E,
0x3E, 0x3C, 0x3E, 0x3C, 0x1E, 0x7C, 0x1E, 0x7C, 0x1F, 0x7C, 0x1F, 0x78,
0x0F, 0x78, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF0, 0x07, 0xF0, 0x07, 0xF0,
0x07, 0xF0, 0x07, 0xF0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0,
0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0x80, 0x3E, 0x00, 0x7F, 0xFB, 0xFF, 0xDF,
0xFE, 0xFF, 0xF0, 0x1F, 0x01, 0xF8, 0x0F, 0x80, 0xFC, 0x07, 0xC0, 0x3E,
0x03, 0xF0, 0x1F, 0x01, 0xF8, 0x0F, 0x80, 0xFC, 0x07, 0xC0, 0x3E, 0x03,
0xF0, 0x1F, 0x01, 0xFF, 0xEF, 0xFF, 0x7F, 0xFB, 0xFF, 0xC0, 0x07, 0xC7,
0xF1, 0xFC, 0xFF, 0x3F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0,
0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x1F, 0x8F, 0xC3, 0xE0, 0xFC,
0x3F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83,
0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xFC, 0x1F, 0xC7, 0xF0, 0xFC, 0x01,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x3F, 0x0F, 0xE3, 0xF8,
0x3F, 0x0F, 0xC3, 0xF0, 0xFC, 0x3F, 0x0F, 0xC3, 0xF0, 0xFC, 0x3F, 0x0F,
0xC3, 0xF0, 0x7C, 0x1F, 0x07, 0xE0, 0xFC, 0x1F, 0x0F, 0xC7, 0xF1, 0xF0,
0x7C, 0x1F, 0x0F, 0xC3, 0xF0, 0xFC, 0x3F, 0x0F, 0xC3, 0xF0, 0xFC, 0x3F,
0x0F, 0xC3, 0xF0, 0xF8, 0xFE, 0x3F, 0x8F, 0xC3, 0x00, 0x1F, 0x04, 0x3F,
0xCE, 0xFF, 0xFF, 0x7F, 0xFE, 0x20, 0xFC, 0x00, 0x30 };
const GFXglyph Oswald_Medium20pt7bGlyphs[] PROGMEM = {
{ 0, 1, 1, 10, 0, 0 }, // 0x20 ' '
{ 1, 5, 32, 9, 2, -31 }, // 0x21 '!'
{ 21, 11, 11, 12, 1, -31 }, // 0x22 '"'
{ 37, 17, 32, 20, 2, -31 }, // 0x23 '#'
{ 105, 17, 39, 19, 1, -34 }, // 0x24 '$'
{ 188, 34, 32, 37, 2, -31 }, // 0x25 '%'
{ 324, 19, 32, 23, 2, -31 }, // 0x26 '&'
{ 400, 4, 11, 6, 1, -31 }, // 0x27 '''
{ 406, 8, 39, 13, 3, -31 }, // 0x28 '('
{ 445, 9, 39, 12, 1, -31 }, // 0x29 ')'
{ 489, 13, 14, 16, 2, -31 }, // 0x2A '*'
{ 512, 15, 16, 17, 1, -23 }, // 0x2B '+'
{ 542, 5, 10, 8, 2, -4 }, // 0x2C ','
{ 549, 10, 3, 12, 1, -12 }, // 0x2D '-'
{ 553, 5, 5, 9, 2, -4 }, // 0x2E '.'
{ 557, 13, 32, 16, 1, -31 }, // 0x2F '/'
{ 609, 17, 32, 21, 2, -31 }, // 0x30 '0'
{ 677, 10, 32, 15, 1, -31 }, // 0x31 '1'
{ 717, 16, 32, 19, 2, -31 }, // 0x32 '2'
{ 781, 16, 32, 19, 2, -31 }, // 0x33 '3'
{ 845, 18, 32, 20, 1, -31 }, // 0x34 '4'
{ 917, 16, 32, 19, 2, -31 }, // 0x35 '5'
{ 981, 17, 32, 20, 2, -31 }, // 0x36 '6'
{ 1049, 14, 32, 16, 1, -31 }, // 0x37 '7'
{ 1105, 16, 32, 20, 2, -31 }, // 0x38 '8'
{ 1169, 16, 32, 20, 2, -31 }, // 0x39 '9'
{ 1233, 6, 18, 9, 2, -20 }, // 0x3A ':'
{ 1247, 6, 25, 10, 2, -21 }, // 0x3B ';'
{ 1266, 11, 17, 15, 2, -24 }, // 0x3C '<'
{ 1290, 13, 11, 17, 2, -21 }, // 0x3D '='
{ 1308, 12, 17, 15, 2, -24 }, // 0x3E '>'
{ 1334, 15, 32, 19, 2, -31 }, // 0x3F '?'
{ 1394, 33, 37, 36, 2, -31 }, // 0x40 '@'
{ 1547, 19, 32, 20, 1, -31 }, // 0x41 'A'
{ 1623, 18, 32, 22, 2, -31 }, // 0x42 'B'
{ 1695, 18, 32, 21, 2, -31 }, // 0x43 'C'
{ 1767, 18, 32, 22, 2, -31 }, // 0x44 'D'
{ 1839, 14, 32, 17, 2, -31 }, // 0x45 'E'
{ 1895, 13, 32, 16, 2, -31 }, // 0x46 'F'
{ 1947, 18, 32, 22, 2, -31 }, // 0x47 'G'
{ 2019, 18, 32, 23, 2, -31 }, // 0x48 'H'
{ 2091, 5, 32, 11, 3, -31 }, // 0x49 'I'
{ 2111, 10, 33, 13, 0, -31 }, // 0x4A 'J'
{ 2153, 19, 32, 21, 2, -31 }, // 0x4B 'K'
{ 2229, 14, 32, 16, 2, -31 }, // 0x4C 'L'
{ 2285, 22, 32, 27, 2, -31 }, // 0x4D 'M'
{ 2373, 17, 32, 21, 2, -31 }, // 0x4E 'N'
{ 2441, 18, 32, 22, 2, -31 }, // 0x4F 'O'
{ 2513, 18, 32, 21, 2, -31 }, // 0x50 'P'
{ 2585, 18, 38, 22, 2, -31 }, // 0x51 'Q'
{ 2671, 18, 32, 22, 2, -31 }, // 0x52 'R'
{ 2743, 16, 32, 19, 2, -31 }, // 0x53 'S'
{ 2807, 15, 32, 17, 1, -31 }, // 0x54 'T'
{ 2867, 18, 32, 22, 2, -31 }, // 0x55 'U'
{ 2939, 18, 32, 20, 1, -31 }, // 0x56 'V'
{ 3011, 26, 32, 28, 1, -31 }, // 0x57 'W'
{ 3115, 19, 32, 20, 0, -31 }, // 0x58 'X'
{ 3191, 19, 32, 19, 0, -31 }, // 0x59 'Y'
{ 3267, 15, 32, 17, 1, -31 }, // 0x5A 'Z'
{ 3327, 9, 39, 13, 2, -31 }, // 0x5B '['
{ 3371, 13, 32, 16, 1, -31 }, // 0x5C '\'
{ 3423, 9, 39, 12, 1, -31 }, // 0x5D ']'
{ 3467, 16, 13, 18, 1, -31 }, // 0x5E '^'
{ 3493, 14, 4, 14, 0, 3 }, // 0x5F '_'
{ 3500, 8, 8, 11, 2, -31 }, // 0x60 '`'
{ 3508, 15, 23, 17, 1, -22 }, // 0x61 'a'
{ 3552, 15, 32, 19, 2, -31 }, // 0x62 'b'
{ 3612, 14, 23, 17, 2, -22 }, // 0x63 'c'
{ 3653, 15, 32, 19, 2, -31 }, // 0x64 'd'
{ 3713, 14, 23, 17, 2, -22 }, // 0x65 'e'
{ 3754, 11, 31, 12, 1, -30 }, // 0x66 'f'
{ 3797, 18, 31, 18, 1, -23 }, // 0x67 'g'
{ 3867, 15, 32, 19, 2, -31 }, // 0x68 'h'
{ 3927, 6, 31, 10, 2, -30 }, // 0x69 'i'
{ 3951, 9, 37, 10, -1, -30 }, // 0x6A 'j'
{ 3993, 16, 32, 18, 2, -31 }, // 0x6B 'k'
{ 4057, 6, 32, 10, 2, -31 }, // 0x6C 'l'
{ 4081, 24, 23, 28, 2, -22 }, // 0x6D 'm'
{ 4150, 15, 23, 19, 2, -22 }, // 0x6E 'n'
{ 4194, 14, 23, 18, 2, -22 }, // 0x6F 'o'
{ 4235, 15, 30, 19, 2, -22 }, // 0x70 'p'
{ 4292, 15, 30, 19, 2, -22 }, // 0x71 'q'
{ 4349, 11, 23, 14, 2, -22 }, // 0x72 'r'
{ 4381, 14, 23, 16, 1, -22 }, // 0x73 's'
{ 4422, 11, 29, 13, 1, -28 }, // 0x74 't'
{ 4462, 14, 23, 19, 2, -22 }, // 0x75 'u'
{ 4503, 15, 23, 16, 0, -22 }, // 0x76 'v'
{ 4547, 21, 23, 23, 1, -22 }, // 0x77 'w'
{ 4608, 16, 23, 16, 0, -22 }, // 0x78 'x'
{ 4654, 16, 29, 16, 0, -22 }, // 0x79 'y'
{ 4712, 13, 23, 15, 1, -22 }, // 0x7A 'z'
{ 4750, 10, 40, 13, 2, -31 }, // 0x7B '{'
{ 4800, 4, 38, 10, 3, -31 }, // 0x7C '|'
{ 4819, 10, 40, 14, 2, -31 }, // 0x7D '}'
{ 4869, 16, 6, 18, 1, -18 } }; // 0x7E '~'
const GFXfont Oswald_Medium20pt7b PROGMEM = {
(uint8_t *)Oswald_Medium20pt7bBitmaps,
(GFXglyph *)Oswald_Medium20pt7bGlyphs,
0x20, 0x7E, 58 };
// Approx. 5553 bytes

1025
src/fonts/oswald-30.h Normal file

File diff suppressed because it is too large Load diff

4480
src/fonts/oswald-90.h Normal file

File diff suppressed because it is too large Load diff

View file

@ -123,10 +123,20 @@ QueueHandle_t updateQueue;
int fgColor = GxEPD_WHITE;
int bgColor = GxEPD_BLACK;
#define FONT_SMALL Antonio_SemiBold20pt7b
#define FONT_BIG Antonio_SemiBold90pt7b
#define FONT_MEDIUM Antonio_SemiBold40pt7b
#define FONT_SATSYMBOL Satoshi_Symbol90pt7b
// #define FONT_SMALL Antonio_SemiBold20pt7b
// #define FONT_BIG Antonio_SemiBold90pt7b
// #define FONT_MEDIUM Antonio_SemiBold40pt7b
// #define FONT_SMALL Oswald_Medium20pt7b
// #define FONT_BIG Oswald_Medium80pt7b
// #define FONT_MEDIUM Oswald_Medium30pt7b
// #define FONT_SATSYMBOL Satoshi_Symbol90pt7b
// Declare font pointers
const GFXfont* FONT_SMALL;
const GFXfont* FONT_BIG;
const GFXfont* FONT_MEDIUM;
const GFXfont* FONT_SATSYMBOL;
std::mutex epdUpdateMutex;
std::mutex epdMutex[NUM_SCREENS];
@ -151,6 +161,21 @@ void forceFullRefresh()
void setupDisplays()
{
String fontPreference = preferences.getString("fontPreference", "Oswald"); // Default to Oswald
if (fontPreference.equals("Antonio")) {
FONT_SMALL = &Antonio_SemiBold20pt7b;
FONT_BIG = &Antonio_SemiBold90pt7b;
FONT_MEDIUM = &Antonio_SemiBold40pt7b;
} else {
FONT_SMALL = &Oswald_Medium20pt7b;
FONT_BIG = &Oswald_Medium80pt7b;
FONT_MEDIUM = &Oswald_Medium30pt7b;
}
Serial.printf("Font preference: %s\n", fontPreference);
FONT_SATSYMBOL = &Satoshi_Symbol90pt7b;
std::lock_guard<std::mutex> lockMcp(mcpMutex);
for (uint i = 0; i < NUM_SCREENS; i++)
@ -271,26 +296,26 @@ void prepareDisplayUpdateTask(void *pvParameters)
else
{
if (epdContent[epdIndex].length() == 2) {
showChars(epdIndex, epdContent[epdIndex], updatePartial, &FONT_BIG);
showChars(epdIndex, epdContent[epdIndex], updatePartial, FONT_BIG);
}
else if (epdContent[epdIndex].length() > 1 && epdContent[epdIndex].indexOf(".") == -1)
{
if (epdContent[epdIndex].equals("STS"))
{
showDigit(epdIndex, 'S', updatePartial,
&FONT_SATSYMBOL);
FONT_SATSYMBOL);
}
else
{
showChars(epdIndex, epdContent[epdIndex], updatePartial,
&FONT_MEDIUM);
FONT_MEDIUM);
}
}
else
{
showDigit(epdIndex, epdContent[epdIndex].c_str()[0], updatePartial,
&FONT_BIG);
FONT_BIG);
}
}
@ -365,7 +390,7 @@ void splitText(const uint dispNum, const String &top, const String &bottom,
} else {
displays[dispNum].setRotation(2);
}
displays[dispNum].setFont(&FONT_SMALL);
displays[dispNum].setFont(FONT_SMALL);
displays[dispNum].setTextColor(getFgColor());
// Top text
@ -411,9 +436,9 @@ void setupDisplay(const uint dispNum, const GFXfont *font) {
void showDigit(const uint dispNum, char chr, bool partial, const GFXfont *font) {
String str(chr);
if (chr == '.') {
str = "!";
}
// if (chr == '.') {
// str = "!";
// }
setupDisplay(dispNum, font);
@ -424,14 +449,41 @@ void showDigit(const uint dispNum, char chr, bool partial, const GFXfont *font)
uint16_t x = ((displays[dispNum].width() - tbw) / 2) - tbx;
uint16_t y = ((displays[dispNum].height() - tbh) / 2) - tby;
displays[dispNum].setCursor(x, y);
displays[dispNum].print(str);
if (chr == '.') {
displays[dispNum].fillRect(x, y, displays[dispNum].width(),
round(displays[dispNum].height() * 0.9), getBgColor());
if (chr == '.' || chr == ',') {
// For the dot, calculate its specific descent
GFXglyph *dotGlyph = &font->glyph[chr -font->first];
int16_t dotDescent = dotGlyph->yOffset;
uint16_t newY = ((displays[dispNum].height() - dotDescent) / 2) - tby;
Serial.printf("Dot descent: %d, height: %u\n", dotDescent, dotGlyph->height);
Serial.printf("New Y: %u\n", newY);
Serial.printf("Old Y: %u\n", y);
Serial.printf("tby: %d\n", tby);
// Draw the dot with adjusted y-position
// Works for Antonio, but not for Oswald
//displays[dispNum].setCursor(x, newY + dotDescent);
displays[dispNum].setCursor(x, newY + dotDescent + 21);
displays[dispNum].print(chr);
} else {
// For other characters, use the original y-position
displays[dispNum].setCursor(x, y);
displays[dispNum].print(chr);
}
}
// displays[dispNum].setCursor(x, y);
// displays[dispNum].print(str);
// if (chr == '.') {
// displays[dispNum].fillRect(x, y, displays[dispNum].width(),
// round(displays[dispNum].height() * 0.9), getBgColor());
//}
//}
int16_t calculateDescent(const GFXfont *font) {
int16_t maxDescent = 0;

View file

@ -106,7 +106,11 @@ namespace V2Notify
JsonDocument doc;
DeserializationError error = deserializeMsgPack(doc, payload, length);
V2Notify::handleV2Message(doc);
if (!error)
{
handleV2Message(doc);
}
break;
}
case WStype_ERROR:

View file

@ -3,7 +3,7 @@
static const char* JSON_CONTENT = "application/json";
static const char *const PROGMEM strSettings[] = {
"hostnamePrefix", "mempoolInstance", "nostrPubKey", "nostrRelay", "bitaxeHostname", "miningPoolName", "miningPoolUser", "nostrZapPubkey", "httpAuthUser", "httpAuthPass", "gitReleaseUrl", "poolLogosUrl", "ceEndpoint"};
"hostnamePrefix", "mempoolInstance", "nostrPubKey", "nostrRelay", "bitaxeHostname", "miningPoolName", "miningPoolUser", "nostrZapPubkey", "httpAuthUser", "httpAuthPass", "gitReleaseUrl", "poolLogosUrl", "ceEndpoint", "fontPreference"};
static const char *const PROGMEM uintSettings[] = {"minSecPriceUpd", "fullRefreshMin", "ledBrightness", "flMaxBrightness", "flEffectDelay", "luxLightToggle", "wpTimeout"};
@ -662,6 +662,8 @@ void onApiSettingsGet(AsyncWebServerRequest *request)
root["wpTimeout"] = preferences.getUInt("wpTimeout", DEFAULT_WP_TIMEOUT);
root["tzOffset"] = preferences.getInt("gmtOffset", DEFAULT_TIME_OFFSET_SECONDS) / 60;
root["fontPreference"] = preferences.getString("fontPreference", "Oswald");
// Add data source settings
root["dataSource"] = preferences.getUChar("dataSource", DEFAULT_DATA_SOURCE);