From 5fd9a4a86faf449bbe6a1017bf77fe01deaa3760 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cle=CC=81ment=20Grennerat?= Date: Sun, 14 Sep 2025 22:37:33 +0200 Subject: [PATCH] Text and font support --- Core/Inc/5x5_font.h | 106 ------ Core/Inc/LCD_driver.h | 18 +- Core/Inc/dashboard.h | 6 +- Core/Inc/font.h | 43 +++ Core/Inc/monomaniacone20pt.h | 426 +++++++++++++++++++++++ Core/Inc/monomaniacone72pt.h | 636 +++++++++++++++++++++++++++++++++++ Core/Src/LCD_driver.c | 72 +--- Core/Src/dashboard.c | 20 +- Core/Src/font.c | 113 +++++++ font26.h | 24 ++ 10 files changed, 1271 insertions(+), 193 deletions(-) delete mode 100644 Core/Inc/5x5_font.h create mode 100644 Core/Inc/font.h create mode 100644 Core/Inc/monomaniacone20pt.h create mode 100644 Core/Inc/monomaniacone72pt.h create mode 100644 Core/Src/font.c create mode 100644 font26.h diff --git a/Core/Inc/5x5_font.h b/Core/Inc/5x5_font.h deleted file mode 100644 index 5288619..0000000 --- a/Core/Inc/5x5_font.h +++ /dev/null @@ -1,106 +0,0 @@ -#ifndef BASIC_5X5_FONT_H -#define BASIC_5X5_FONT_H - -#define CHAR_WIDTH 6 -#define CHAR_HEIGHT 8 - -static const unsigned char font[96][6] = { - {0x00,0x00,0x00,0x00,0x00,0x00}, // - {0x5c,0x00,0x00,0x00,0x00,0x00}, // ! - {0x06,0x00,0x06,0x00,0x00,0x00}, // " - {0x28,0x7c,0x28,0x7c,0x28,0x00}, // # - {0x5c,0x54,0xfe,0x54,0x74,0x00}, // $ - {0x44,0x20,0x10,0x08,0x44,0x00}, // % - {0x28,0x54,0x54,0x20,0x50,0x00}, // & - {0x06,0x00,0x00,0x00,0x00,0x00}, // ' - {0x38,0x44,0x00,0x00,0x00,0x00}, // ( - {0x44,0x38,0x00,0x00,0x00,0x00}, // ) - {0x02,0x07,0x02,0x00,0x00,0x00}, // * - {0x10,0x10,0x7c,0x10,0x10,0x00}, // + - {0xc0,0x00,0x00,0x00,0x00,0x00}, // , - {0x10,0x10,0x10,0x10,0x10,0x00}, // - - {0x40,0x00,0x00,0x00,0x00,0x00}, // . - {0x60,0x10,0x0c,0x00,0x00,0x00}, // / - {0x7c,0x64,0x54,0x4c,0x7c,0x00}, // 0 - {0x48,0x7c,0x40,0x00,0x00,0x00}, // 1 - {0x64,0x54,0x54,0x54,0x48,0x00}, // 2 - {0x44,0x54,0x54,0x54,0x6c,0x00}, // 3 - {0x3c,0x20,0x70,0x20,0x20,0x00}, // 4 - {0x5c,0x54,0x54,0x54,0x24,0x00}, // 5 - {0x7c,0x54,0x54,0x54,0x74,0x00}, // 6 - {0x04,0x04,0x64,0x14,0x0c,0x00}, // 7 - {0x7c,0x54,0x54,0x54,0x7c,0x00}, // 8 - {0x5c,0x54,0x54,0x54,0x7c,0x00}, // 9 - {0x44,0x00,0x00,0x00,0x00,0x00}, // : - {0xc4,0x00,0x00,0x00,0x00,0x00}, // ; - {0x10,0x28,0x44,0x00,0x00,0x00}, // < - {0x28,0x28,0x28,0x28,0x28,0x00}, // = - {0x44,0x28,0x10,0x00,0x00,0x00}, // > - {0x08,0x04,0x54,0x08,0x00,0x00}, // ? - {0x7c,0x44,0x54,0x54,0x5c,0x00}, // @ - {0x7c,0x24,0x24,0x24,0x7c,0x00}, // A - {0x7c,0x54,0x54,0x54,0x6c,0x00}, // B - {0x7c,0x44,0x44,0x44,0x44,0x00}, // C - {0x7c,0x44,0x44,0x44,0x38,0x00}, // D - {0x7c,0x54,0x54,0x54,0x44,0x00}, // E - {0x7c,0x14,0x14,0x14,0x04,0x00}, // F - {0x7c,0x44,0x44,0x54,0x74,0x00}, // G - {0x7c,0x10,0x10,0x10,0x7c,0x00}, // H - {0x44,0x44,0x7c,0x44,0x44,0x00}, // I - {0x60,0x40,0x40,0x44,0x7c,0x00}, // J - {0x7c,0x10,0x10,0x28,0x44,0x00}, // K - {0x7c,0x40,0x40,0x40,0x40,0x00}, // L - {0x7c,0x08,0x10,0x08,0x7c,0x00}, // M - {0x7c,0x08,0x10,0x20,0x7c,0x00}, // N - {0x38,0x44,0x44,0x44,0x38,0x00}, // O - {0x7c,0x14,0x14,0x14,0x08,0x00}, // P - {0x3c,0x24,0x64,0x24,0x3c,0x00}, // Q - {0x7c,0x14,0x14,0x14,0x68,0x00}, // R - {0x5c,0x54,0x54,0x54,0x74,0x00}, // S - {0x04,0x04,0x7c,0x04,0x04,0x00}, // T - {0x7c,0x40,0x40,0x40,0x7c,0x00}, // U - {0x0c,0x30,0x40,0x30,0x0c,0x00}, // V - {0x3c,0x40,0x30,0x40,0x3c,0x00}, // W - {0x44,0x28,0x10,0x28,0x44,0x00}, // X - {0x0c,0x10,0x60,0x10,0x0c,0x00}, // Y - {0x44,0x64,0x54,0x4c,0x44,0x00}, // Z - {0x7c,0x44,0x00,0x00,0x00,0x00}, // [ - {0x0c,0x10,0x60,0x00,0x00,0x00}, // "\" - {0x44,0x7c,0x00,0x00,0x00,0x00}, // ] - {0x00,0x01,0x00,0x01,0x00,0x00}, // ^ - {0x40,0x40,0x40,0x40,0x40,0x40}, // _ - {0x00,0x01,0x00,0x00,0x00,0x00}, // ` - {0x7c,0x24,0x24,0x24,0x7c,0x00}, // a - {0x7c,0x54,0x54,0x54,0x6c,0x00}, // b - {0x7c,0x44,0x44,0x44,0x44,0x00}, // c - {0x7c,0x44,0x44,0x44,0x38,0x00}, // d - {0x7c,0x54,0x54,0x54,0x44,0x00}, // e - {0x7c,0x14,0x14,0x14,0x04,0x00}, // f - {0x7c,0x44,0x44,0x54,0x74,0x00}, // g - {0x7c,0x10,0x10,0x10,0x7c,0x00}, // h - {0x44,0x44,0x7c,0x44,0x44,0x00}, // i - {0x60,0x40,0x40,0x44,0x7c,0x00}, // j - {0x7c,0x10,0x10,0x28,0x44,0x00}, // k - {0x7c,0x40,0x40,0x40,0x40,0x00}, // l - {0x7c,0x08,0x10,0x08,0x7c,0x00}, // m - {0x7c,0x08,0x10,0x20,0x7c,0x00}, // n - {0x38,0x44,0x44,0x44,0x38,0x00}, // o - {0x7c,0x14,0x14,0x14,0x08,0x00}, // p - {0x3c,0x24,0x64,0x24,0x3c,0x00}, // q - {0x7c,0x14,0x14,0x14,0x68,0x00}, // r - {0x5c,0x54,0x54,0x54,0x74,0x00}, // s - {0x04,0x04,0x7c,0x04,0x04,0x00}, // t - {0x7c,0x40,0x40,0x40,0x7c,0x00}, // u - {0x0c,0x30,0x40,0x30,0x0c,0x00}, // v - {0x3c,0x40,0x30,0x40,0x3c,0x00}, // w - {0x44,0x28,0x10,0x28,0x44,0x00}, // x - {0x0c,0x10,0x60,0x10,0x0c,0x00}, // y - {0x44,0x64,0x54,0x4c,0x44,0x00}, // z - {0x10,0x7c,0x44,0x00,0x00,0x00}, // { - {0x6c,0x00,0x00,0x00,0x00,0x00}, // | - {0x44,0x7c,0x10,0x00,0x00,0x00}, // } - {0x02,0x01,0x02,0x01,0x00,0x00}, // ~ - {0x00,0x00,0x00,0x00,0x00,0x00} -}; - -#endif diff --git a/Core/Inc/LCD_driver.h b/Core/Inc/LCD_driver.h index 4fd5a85..933c78d 100644 --- a/Core/Inc/LCD_driver.h +++ b/Core/Inc/LCD_driver.h @@ -25,6 +25,7 @@ #include "stm32f1xx.h" #include "main.h" +#include "font.h" #define SPI1_BASEDR_ADR SPI1_BASE //adresse du reg SPI3 DR pour acces 8 bits (defs std permet accès 16bits seulement) @@ -77,6 +78,7 @@ void LCD_Write_Command(uint8_t Command); void LCD_Write_Data(uint8_t Data); void LCD_Set_Address(uint16_t X1, uint16_t Y1, uint16_t X2, uint16_t Y2); + //Reset n'est pas cable sur aff ADA1983: //void LCD_Reset(void); //void LCD_Enable(void); @@ -147,22 +149,6 @@ void LCD_Draw_Filled_Rectangle_Coord( uint16_t X1, uint16_t Y1, uint16_t Colour); -void LCD_Draw_Char( - char Character, - uint16_t X, - uint16_t Y, - uint16_t Colour, - uint16_t Size, - uint16_t Background_Colour); - -void LCD_Draw_Text( - const char *Text, - uint16_t X, - uint16_t Y, - uint16_t Colour, - uint16_t Size, - uint16_t Background_Colour); -/*Draws a character (fonts imported from fonts.h) at X,Y location with specified font colour, size and Background colour*/ void LCD_Draw_Filled_Rectangle_Size_Text( uint16_t X0, diff --git a/Core/Inc/dashboard.h b/Core/Inc/dashboard.h index 7468c71..540ea48 100644 --- a/Core/Inc/dashboard.h +++ b/Core/Inc/dashboard.h @@ -1,8 +1,7 @@ #ifndef __DASHBOARD_H #define __DASHBOARD_H - -#endif +#include "LCD_driver.h" void run_dashboard_loop(); void init(); @@ -19,3 +18,6 @@ void draw_speed(); void draw_power(); void draw_adc(); void draw_temps(); + + +#endif diff --git a/Core/Inc/font.h b/Core/Inc/font.h new file mode 100644 index 0000000..0455dcf --- /dev/null +++ b/Core/Inc/font.h @@ -0,0 +1,43 @@ +#ifndef FONT_H +#define FONT_H + +#include "stm32f1xx.h" + +typedef struct { + uint16_t bitmapOffset;// Pointer into `bitmaps` array + uint8_t width;// Bitmap width in pixels + uint8_t height;// Bitmap height in pixels + uint8_t advance;// Cursor advance after this glyph + int8_t xOffset;// X offset from cursor position + int8_t yOffset;// Y offset from baseline +} GFXglyph; + +typedef struct { + const uint8_t *bitmaps;// Glyph bitmaps (combined into one array) + const GFXglyph *glyphs;// Glyph metadata + uint16_t firstChar;// First character in the font (e.g., 0x20 for space) + uint16_t lastChar;// Last character in the font (e.g., 0x7E for ~) + uint8_t yAdvance;// Vertical distance to advance for newline +} GFXfont; + +void GFX_DrawChar( + uint16_t x, + uint16_t y, + char c, + const GFXfont *font, + uint16_t fg_color, + uint16_t bg_color); + +uint16_t GFX_GetTextWidth(const char *text, const GFXfont *font); + +// Alignment: 0 => Left, 1 => Center, 2 => Right +void GFX_DrawText( + uint16_t x, + uint16_t y, + const char *text, + const GFXfont *font, + uint16_t fg_color, + uint16_t bg_color, + uint8_t alignment); + +#endif diff --git a/Core/Inc/monomaniacone20pt.h b/Core/Inc/monomaniacone20pt.h new file mode 100644 index 0000000..94948af --- /dev/null +++ b/Core/Inc/monomaniacone20pt.h @@ -0,0 +1,426 @@ +// Created by ttf2gfx utility +const uint8_t monomaniacone20ptBitmaps[] = { + // Bitmap Data: + 0x00 // ' ' + ,0x10,0x70,0xE1,0xC3,0x87,0x0E,0x1C,0x38,0x70,0xE1,0xC3,0x87,0x0E,0x1C,0x38 + ,0x70,0x00,0x00,0x07,0x1F,0x3E,0x38,0x00 // '!' + ,0x00,0x8F,0x39,0xE7,0x3C,0xE7,0x9C,0x61,0x00,0x00 // '"' + ,0x00,0x00,0x00,0x1E,0x38,0x01,0xE7,0x80,0x1C,0x78,0x01,0xC7,0x00,0x1C,0x70 + ,0x03,0xC7,0x00,0x3C,0xF0,0x0F,0xFF,0x81,0xFF,0xFE,0x3F,0xFF,0xE1,0xFF,0xFC + ,0x07,0x9E,0x00,0x79,0xE0,0x3F,0xFF,0x87,0xFF,0xFC,0x7F,0xFF,0x81,0xFF,0xF0 + ,0x0F,0x3C,0x00,0xE3,0xC0,0x0E,0x38,0x01,0xE3,0x80,0x1E,0x78,0x01,0xE7,0x80 + ,0x1C,0x78,0x00,0x80,0x00 // '#' + ,0x00,0x00,0x00,0x1C,0x00,0x03,0x80,0x01,0xFC,0x01,0xFF,0xF0,0x7F,0xFF,0x0F + ,0xFF,0xE3,0xC7,0x1E,0x78,0xE3,0xCF,0x1C,0x79,0xE3,0x80,0x3C,0x70,0x07,0x8E + ,0x00,0x7F,0xC0,0x0F,0xF8,0x00,0x7F,0xC0,0x03,0xFE,0x00,0x1F,0xF0,0x03,0xFE + ,0x00,0x71,0xE0,0x0E,0x3C,0x01,0xC7,0x9E,0x38,0xF3,0xC7,0x1E,0x78,0xE3,0xC7 + ,0xFF,0xF0,0xFF,0xFE,0x0F,0xFF,0x80,0x3F,0x80,0x01,0xC0,0x00,0x10,0x00 // '$' + ,0x06,0x00,0x00,0x07,0xE0,0x1E,0x03,0xFC,0x07,0x01,0xFF,0x03,0xC0,0x79,0xE0 + ,0xE0,0x1E,0x78,0x78,0x07,0x9E,0x1C,0x01,0xE7,0x8F,0x00,0x7F,0xE7,0x80,0x1F + ,0xF1,0xE0,0x03,0xFC,0xF0,0x00,0x7E,0x3C,0x00,0x00,0x1E,0x00,0x00,0x07,0x80 + ,0x00,0x03,0xC7,0xE0,0x00,0xE3,0xFC,0x00,0x78,0xFF,0x00,0x1C,0x7F,0xE0,0x0F + ,0x1E,0x78,0x07,0x87,0x9E,0x01,0xE1,0xE7,0x80,0xF0,0x79,0xE0,0x3C,0x1F,0xF8 + ,0x1E,0x03,0xFC,0x07,0x80,0x7E,0x00,0x00,0x06,0x00 // '%' + ,0x03,0x00,0x03,0xFC,0x00,0xFF,0xC0,0x1F,0xFC,0x07,0x87,0x80,0xF0,0xF0,0x1E + ,0x1E,0x03,0xC3,0xC0,0x78,0x78,0x07,0x9E,0x00,0xFF,0x80,0x0F,0xE3,0x81,0xF8 + ,0x70,0x3F,0x1E,0x0F,0xF3,0xC3,0xFF,0xF0,0x79,0xFE,0x0F,0x1F,0x81,0xE1,0xF0 + ,0x3C,0x3E,0x07,0x83,0xE0,0xF0,0xFC,0x0F,0xFF,0xC1,0xFF,0xFC,0x1F,0xE7,0x80 + ,0x60,0x20 // '&' + ,0x01,0xE7,0x9E,0x78,0xC0,0x00 // ''' + ,0x02,0x0F,0x8F,0xC7,0xE7,0x83,0xC1,0xE0,0xF0,0x78,0x3C,0x1E,0x0F,0x07,0x83 + ,0xC1,0xE0,0xF0,0x78,0x3C,0x1E,0x0F,0x07,0x83,0xC0,0xFC,0x7E,0x1F,0x01,0x00 // '(' + ,0x10,0x3E,0x1F,0x8F,0xE0,0x70,0x38,0x1C,0x0E,0x07,0x03,0x81,0xC0,0xE0,0x70 + ,0x38,0x1C,0x0E,0x07,0x03,0x81,0xC0,0xE0,0x70,0x39,0xFC,0xFC,0x7C,0x08,0x00 // ')' + ,0x00,0x10,0x1E,0x38,0x1E,0x78,0x0F,0xF0,0x0F,0xF0,0x1F,0xFC,0x7F,0xFE,0x7F + ,0xFE,0x7F,0xFE,0x0F,0xF0,0x0F,0xF0,0x0F,0xF8,0x1E,0x78,0x0C,0x38,0x00,0x00 // '*' + ,0x00,0x00,0x18,0x01,0xE0,0x0F,0x00,0x78,0x3F,0xF9,0xFF,0xEF,0xFE,0x1F,0xE0 + ,0x3C,0x01,0xE0,0x0E,0x00,0x00,0x00 // '+' + ,0x00,0x71,0xF3,0xE7,0xC7,0x0E,0x3C,0x00 // ',' + ,0x00,0x03,0xFF,0x9F,0xFE,0xFF,0xE1,0xFE,0x00 // '-' + ,0x00,0x71,0xF3,0xE3,0x80,0x00 // '.' + ,0x00,0x00,0x00,0x01,0xE0,0x00,0x78,0x00,0x3C,0x00,0x0F,0x00,0x07,0x80,0x01 + ,0xC0,0x00,0xF0,0x00,0x38,0x00,0x1E,0x00,0x0F,0x00,0x03,0xC0,0x01,0xE0,0x00 + ,0x78,0x00,0x3C,0x00,0x0F,0x00,0x07,0x80,0x01,0xC0,0x00,0xF0,0x00,0x38,0x00 + ,0x1E,0x00,0x0F,0x00,0x03,0xC0,0x01,0xE0,0x00,0x78,0x00,0x00,0x00,0x00 // '/' + ,0x03,0xF8,0x03,0xFF,0xE0,0xFF,0xFE,0x1F,0xFF,0xC7,0x80,0xFC,0xF0,0x1F,0x9E + ,0x07,0xF3,0xC0,0xFE,0x78,0x3F,0xCF,0x0F,0xF9,0xE1,0xEF,0x3C,0x79,0xE7,0x8F + ,0x3C,0xF3,0xC7,0x9E,0x78,0xF3,0xDE,0x1E,0x7F,0x83,0xCF,0xF0,0x79,0xFC,0x0F + ,0x3F,0x81,0xE7,0xE0,0x3C,0xFC,0x07,0x8F,0xFF,0xE1,0xFF,0xFC,0x1F,0xFF,0x00 + ,0x7F,0x00 // '0' + ,0x06,0x0F,0x8F,0xCF,0xE7,0xF3,0xF9,0x9C,0x0E,0x07,0x03,0x81,0xC0,0xE0,0x70 + ,0x38,0x1C,0x0E,0x07,0x03,0x81,0xC0,0xE0,0x70,0x38,0x1C,0x0E,0x07,0x01,0x00 // '1' + ,0x03,0xF8,0x03,0xFF,0xE0,0xFF,0xFE,0x1F,0xFF,0xC7,0x80,0x3C,0xF0,0x07,0x9E + ,0x00,0xF0,0x00,0x1E,0x00,0x03,0xC0,0x00,0x78,0x00,0x3E,0x00,0x3F,0xC0,0x3F + ,0xE0,0x1F,0xF0,0x0F,0xF0,0x01,0xF8,0x00,0x78,0x00,0x0F,0x00,0x01,0xE0,0x00 + ,0x3C,0x00,0x07,0x80,0x00,0xF0,0x00,0x0F,0xFF,0xF1,0xFF,0xFE,0x1F,0xFF,0xC0 + ,0x7F,0xE0 // '2' + ,0x03,0xF8,0x03,0xFF,0xE0,0xFF,0xFE,0x1F,0xFF,0xC7,0x80,0x3C,0xF0,0x07,0x9C + ,0x00,0xF0,0x00,0x1E,0x00,0x03,0xC0,0x00,0x78,0x00,0x0F,0x03,0xFF,0xE0,0xFF + ,0xF8,0x0F,0xFF,0x00,0xFF,0xF0,0x00,0x1E,0x00,0x03,0xC0,0x00,0x78,0xC0,0x0F + ,0x3C,0x01,0xE7,0x80,0x3C,0xF0,0x07,0x8F,0xFF,0xE1,0xFF,0xFC,0x1F,0xFF,0x00 + ,0x7F,0x00 // '3' + ,0x00,0x00,0x00,0x03,0xC0,0x00,0x78,0x00,0x0F,0x00,0x21,0xE0,0x0F,0x3C,0x03 + ,0xC7,0x80,0x78,0xF0,0x1E,0x1E,0x03,0xC3,0xC0,0xF0,0x78,0x1E,0x0F,0x07,0x81 + ,0xE0,0xF0,0x3C,0x1E,0x07,0x83,0xC0,0xF0,0x78,0x1E,0x0F,0xFF,0xF9,0xFF,0xFF + ,0x3F,0xFF,0xE1,0xFF,0xF0,0x00,0x3C,0x00,0x07,0x80,0x00,0xF0,0x00,0x1E,0x00 + ,0x00,0x00 // '4' + ,0x1F,0xFF,0x0F,0xFF,0xF9,0xFF,0xFF,0x3F,0xFF,0xE7,0x80,0x00,0xF0,0x00,0x1E + ,0x00,0x03,0xC0,0x00,0x78,0x00,0x0F,0x00,0x01,0xFF,0xF8,0x3F,0xFF,0xC7,0xFF + ,0xF8,0x3F,0xFF,0x80,0x00,0xF0,0x00,0x1E,0x00,0x03,0xCE,0x00,0x79,0xE0,0x0F + ,0x3C,0x01,0xE7,0x80,0x3C,0xF0,0x07,0x8F,0xFF,0xE1,0xFF,0xFC,0x1F,0xFF,0x00 + ,0x7F,0x00 // '5' + ,0x03,0xF8,0x03,0xFF,0xE0,0xFF,0xFE,0x1F,0xFF,0xE7,0x80,0x3C,0xF0,0x07,0x9E + ,0x00,0x73,0xC0,0x00,0x78,0x00,0x0F,0x00,0x01,0xFF,0xF8,0x3F,0xFF,0xC7,0xFF + ,0xF8,0xFF,0xFF,0x9E,0x00,0xF3,0xC0,0x1E,0x78,0x03,0xCF,0x00,0x79,0xE0,0x0F + ,0x3C,0x01,0xE7,0x80,0x3C,0xF0,0x07,0x8F,0xFF,0xE1,0xFF,0xFC,0x1F,0xFF,0x00 + ,0x7F,0x00 // '6' + ,0x1F,0xFF,0x0F,0xFF,0xF9,0xFF,0xFF,0x3F,0xFF,0xE7,0x80,0x3C,0xF0,0x07,0x9E + ,0x00,0xF0,0x00,0x1E,0x00,0x03,0xC0,0x00,0x70,0x00,0x1E,0x00,0x03,0x80,0x00 + ,0xF0,0x00,0x1E,0x00,0x03,0x80,0x00,0xF0,0x00,0x1C,0x00,0x07,0x80,0x00,0xF0 + ,0x00,0x1C,0x00,0x07,0x80,0x00,0xE0,0x00,0x3C,0x00,0x07,0x80,0x00,0xE0,0x00 + ,0x08,0x00 // '7' + ,0x03,0xF8,0x03,0xFF,0xE0,0xFF,0xFE,0x1F,0xFF,0xC7,0x80,0x3C,0xF0,0x07,0x9E + ,0x00,0xF3,0xC0,0x1E,0x78,0x03,0xCF,0x00,0x79,0xFF,0xFF,0x1F,0xFF,0xC3,0xFF + ,0xF8,0x7F,0xFF,0x1E,0x00,0xF3,0xC0,0x1E,0x78,0x03,0xCF,0x00,0x79,0xE0,0x0F + ,0x3C,0x01,0xE7,0x80,0x3C,0xF0,0x07,0x8F,0xFF,0xE1,0xFF,0xFC,0x1F,0xFF,0x00 + ,0x7F,0x00 // '8' + ,0x03,0xF8,0x03,0xFF,0xE0,0xFF,0xFE,0x1F,0xFF,0xC7,0x80,0x3C,0xF0,0x07,0x9E + ,0x00,0xF3,0xC0,0x1E,0x78,0x03,0xCF,0x00,0x79,0xE0,0x0F,0x3C,0x01,0xE3,0xFF + ,0xFC,0x7F,0xFF,0x87,0xFF,0xF0,0x1F,0xFE,0x00,0x03,0xC0,0x00,0x78,0xC0,0x0F + ,0x3C,0x01,0xE7,0x80,0x3C,0xF0,0x07,0x8F,0xFF,0xE1,0xFF,0xFC,0x1F,0xFF,0x00 + ,0x7F,0x00 // '9' + ,0x00,0x71,0xF3,0xE3,0x80,0x00,0x00,0x00,0x71,0xF3,0xE3,0x80,0x00 // ':' + ,0x00,0x71,0xF3,0xE3,0x80,0x00,0x00,0x38,0xF9,0xF3,0xE3,0x87,0x1E,0x00 // ';' + ,0x00,0x20,0x01,0xE0,0x0F,0x80,0x7C,0x03,0xE0,0x1E,0x00,0xF0,0x07,0x80,0x3C + ,0x01,0xF0,0x07,0xC0,0x0F,0x00,0x1E,0x00,0x3C,0x00,0x78,0x00,0xF0,0x01,0xE0 + ,0x03,0xC0,0x07,0x80,0x08 // '<' + ,0x00,0x03,0xFF,0x9F,0xFC,0xFF,0xE1,0xFE,0x00,0x00,0x00,0x0F,0xFE,0x7F,0xF3 + ,0xFF,0x87,0xF8 // '=' + ,0x10,0x01,0xE0,0x07,0xC0,0x0F,0x80,0x1F,0x00,0x3E,0x00,0x3C,0x00,0x78,0x00 + ,0xF0,0x03,0xE0,0x0F,0x80,0x3C,0x01,0xE0,0x0F,0x00,0x78,0x03,0xC0,0x1E,0x00 + ,0xF0,0x07,0x80,0x04,0x00 // '>' + ,0x03,0xF8,0x03,0xFF,0xE0,0xFF,0xFE,0x1F,0xFF,0xC7,0x80,0x3C,0xF0,0x07,0x9E + ,0x00,0xF3,0xC0,0x1E,0x70,0x03,0xC0,0x00,0x78,0x00,0x3E,0x00,0x1F,0xC0,0x07 + ,0xE0,0x01,0xF0,0x00,0x38,0x00,0x07,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00 + ,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x7C,0x00,0x0F,0x80,0x00,0xE0,0x00 + ,0x00,0x00 // '?' + ,0x03,0xFF,0xE0,0x1F,0xFF,0xF8,0x3F,0xFF,0xFC,0x3F,0xFF,0xFE,0x78,0x00,0x0E + ,0x78,0x00,0x0F,0x78,0x10,0x0F,0x78,0xFF,0xCF,0x79,0xFF,0xCF,0x79,0xFF,0x8F + ,0x79,0xE7,0x0F,0x79,0xC7,0x0F,0x79,0xC7,0x0F,0x79,0xC7,0x0F,0x79,0xC7,0x0F + ,0x79,0xFF,0xFE,0x79,0xFF,0xFE,0x78,0xFF,0xFE,0x78,0x7F,0xFC,0x78,0x00,0x00 + ,0x78,0x00,0x00,0x78,0x00,0x00,0x3F,0xFF,0xF0,0x3F,0xFF,0xF0,0x1F,0xFF,0xF0 + ,0x03,0xFF,0xE0 // '@' + ,0x00,0x20,0x00,0x03,0xC0,0x00,0x3E,0x00,0x01,0xF0,0x00,0x0F,0xC0,0x00,0xFE + ,0x00,0x07,0xF0,0x00,0x3F,0xC0,0x03,0xDE,0x00,0x1E,0x70,0x00,0xE3,0xC0,0x0F + ,0x1E,0x00,0x78,0x70,0x03,0x83,0xC0,0x3C,0x1E,0x01,0xE0,0xF0,0x0F,0xFF,0xC0 + ,0xFF,0xFE,0x07,0xFF,0xF0,0x3F,0xFF,0xC3,0xC0,0x1E,0x1E,0x00,0x70,0xE0,0x03 + ,0xCF,0x00,0x1E,0x78,0x00,0x70,0x00,0x01,0x00 // 'A' + ,0x1F,0xF0,0x1F,0xFF,0x87,0xFF,0xF1,0xFF,0xFC,0x78,0x07,0x9E,0x01,0xE7,0x80 + ,0x79,0xE0,0x1E,0x78,0x07,0x9E,0x01,0xE7,0xFF,0xF9,0xFF,0xFC,0x7F,0xFF,0x1F + ,0xFF,0xE7,0x80,0x39,0xE0,0x0E,0x78,0x03,0x9E,0x00,0xE7,0x80,0x39,0xE0,0x0E + ,0x78,0x03,0x9E,0x00,0xE7,0xFF,0xF9,0xFF,0xFC,0x7F,0xFE,0x07,0xFE,0x00 // 'B' + ,0x03,0xF8,0x07,0xFF,0x83,0xFF,0xF0,0xFF,0xFE,0x78,0x03,0x9E,0x00,0xE7,0x80 + ,0x39,0xE0,0x00,0x78,0x00,0x1E,0x00,0x07,0x80,0x01,0xE0,0x00,0x78,0x00,0x1E + ,0x00,0x07,0x80,0x01,0xE0,0x00,0x78,0x00,0x1E,0x00,0x07,0x80,0x11,0xE0,0x0E + ,0x78,0x03,0x9E,0x00,0xE3,0xFF,0xF8,0xFF,0xFC,0x1F,0xFE,0x00,0xFE,0x00 // 'C' + ,0x1F,0xF8,0x1F,0xFF,0x87,0xFF,0xF1,0xFF,0xFE,0x78,0x03,0x9E,0x00,0xE7,0x80 + ,0x39,0xE0,0x0E,0x78,0x03,0x9E,0x00,0xE7,0x80,0x39,0xE0,0x0E,0x78,0x03,0x9E + ,0x00,0xE7,0x80,0x39,0xE0,0x0E,0x78,0x03,0x9E,0x00,0xE7,0x80,0x39,0xE0,0x0E + ,0x78,0x03,0x9E,0x00,0xE7,0xFF,0xF9,0xFF,0xFC,0x7F,0xFE,0x07,0xFE,0x00 // 'D' + ,0x1F,0xFE,0x1F,0xFF,0xE7,0xFF,0xF9,0xFF,0xFE,0x78,0x00,0x1E,0x00,0x07,0x80 + ,0x01,0xE0,0x00,0x78,0x00,0x1E,0x00,0x07,0x80,0x01,0xFF,0xF8,0x7F,0xFF,0x1F + ,0xFF,0xC7,0xFF,0xC1,0xE0,0x00,0x78,0x00,0x1E,0x00,0x07,0x80,0x01,0xE0,0x00 + ,0x78,0x00,0x1E,0x00,0x07,0xFF,0xF9,0xFF,0xFE,0x7F,0xFF,0x87,0xFF,0x80 // 'E' + ,0x1F,0xFE,0x1F,0xFF,0xE7,0xFF,0xF9,0xFF,0xFE,0x78,0x00,0x1E,0x00,0x07,0x80 + ,0x01,0xE0,0x00,0x78,0x00,0x1E,0x00,0x07,0x80,0x01,0xFF,0xF8,0x7F,0xFF,0x1F + ,0xFF,0xC7,0xFF,0xC1,0xE0,0x00,0x78,0x00,0x1E,0x00,0x07,0x80,0x01,0xE0,0x00 + ,0x78,0x00,0x1E,0x00,0x07,0x80,0x01,0xE0,0x00,0x78,0x00,0x00,0x00,0x00 // 'F' + ,0x03,0xF8,0x03,0xFF,0xE0,0xFF,0xFE,0x1F,0xFF,0xE7,0x80,0x3C,0xF0,0x07,0x9E + ,0x00,0x73,0xC0,0x00,0x78,0x00,0x0F,0x00,0x01,0xE0,0x00,0x3C,0x1F,0xE7,0x87 + ,0xFC,0xF0,0xFF,0x9E,0x07,0xF3,0xC0,0x1E,0x78,0x03,0xCF,0x00,0x79,0xE0,0x0F + ,0x3C,0x01,0xE7,0x80,0x3C,0xF0,0x07,0x8F,0xFF,0xE1,0xFF,0xFC,0x1F,0xFF,0x00 + ,0x7F,0x00 // 'G' + ,0x00,0x01,0x1E,0x00,0xE7,0x80,0x39,0xE0,0x0E,0x78,0x03,0x9E,0x00,0xE7,0x80 + ,0x39,0xE0,0x0E,0x78,0x03,0x9E,0x00,0xE7,0x80,0x39,0xFF,0xFE,0x7F,0xFF,0x9F + ,0xFF,0xE7,0xFF,0xF9,0xE0,0x0E,0x78,0x03,0x9E,0x00,0xE7,0x80,0x39,0xE0,0x0E + ,0x78,0x03,0x9E,0x00,0xE7,0x80,0x39,0xE0,0x0E,0x78,0x03,0x80,0x00,0x40 // 'H' + ,0x01,0xE7,0x9E,0x79,0xE7,0x9E,0x79,0xE7,0x9E,0x79,0xE7,0x9E,0x79,0xE7,0x9E + ,0x79,0xE7,0x9E,0x78,0x00 // 'I' + ,0x00,0x01,0x00,0x00,0xE0,0x00,0x38,0x00,0x0E,0x00,0x03,0x80,0x00,0xE0,0x00 + ,0x38,0x00,0x0E,0x00,0x03,0x80,0x00,0xE0,0x00,0x38,0x00,0x0E,0x00,0x03,0x80 + ,0x00,0xE0,0x00,0x38,0x00,0x0E,0x00,0x03,0x9C,0x00,0xE7,0x80,0x39,0xE0,0x0E + ,0x78,0x03,0x9E,0x00,0xE3,0xFF,0xF8,0xFF,0xFC,0x1F,0xFE,0x00,0xFE,0x00 // 'J' + ,0x00,0x00,0x1E,0x01,0xE7,0x80,0xF9,0xE0,0x7C,0x78,0x3E,0x1E,0x1F,0x07,0x8F + ,0x81,0xE3,0xC0,0x79,0xE0,0x1F,0xF0,0x07,0xF8,0x01,0xFC,0x00,0x7E,0x00,0x1F + ,0x80,0x07,0xF0,0x01,0xFE,0x00,0x7F,0xC0,0x1E,0x78,0x07,0x8F,0x01,0xE3,0xE0 + ,0x78,0x7C,0x1E,0x0F,0x87,0x81,0xF1,0xE0,0x3E,0x78,0x07,0x80,0x00,0x00 // 'K' + ,0x00,0x00,0x1E,0x00,0x07,0x80,0x01,0xE0,0x00,0x78,0x00,0x1E,0x00,0x07,0x80 + ,0x01,0xE0,0x00,0x78,0x00,0x1E,0x00,0x07,0x80,0x01,0xE0,0x00,0x78,0x00,0x1E + ,0x00,0x07,0x80,0x01,0xE0,0x00,0x78,0x00,0x1E,0x00,0x07,0x80,0x01,0xE0,0x00 + ,0x78,0x00,0x1E,0x00,0x07,0xFF,0xF9,0xFF,0xFE,0x7F,0xFF,0x87,0xFF,0x80 // 'L' + ,0x00,0x00,0x01,0xE0,0x01,0xE7,0x80,0x07,0x9F,0x00,0x3E,0x7C,0x00,0xF9,0xF8 + ,0x07,0xE7,0xE0,0x1F,0x9F,0xC0,0xFE,0x7F,0x03,0xF9,0xFE,0x1F,0xE7,0xF8,0x7F + ,0x9F,0xE3,0xFE,0x7B,0xCF,0x79,0xE7,0xF9,0xE7,0x9F,0xE7,0x9E,0x3F,0x1E,0x78 + ,0xFC,0x79,0xE1,0xE1,0xE7,0x87,0x87,0x9E,0x0C,0x1E,0x78,0x20,0x79,0xE0,0x01 + ,0xE7,0x80,0x07,0x9E,0x00,0x1E,0x78,0x00,0x78,0x00,0x00,0x00 // 'M' + ,0x00,0x00,0x0F,0x00,0x79,0xE0,0x0F,0x3E,0x01,0xE7,0xC0,0x3C,0xFC,0x07,0x9F + ,0xC0,0xF3,0xF8,0x1E,0x7F,0x83,0xCF,0xF0,0x79,0xEF,0x0F,0x3C,0xE1,0xE7,0x9E + ,0x3C,0xF1,0xE7,0x9E,0x1C,0xF3,0xC3,0xDE,0x78,0x3F,0xCF,0x07,0xF9,0xE0,0x7F + ,0x3C,0x0F,0xE7,0x80,0xFC,0xF0,0x0F,0x9E,0x01,0xF3,0xC0,0x1E,0x78,0x03,0xC0 + ,0x00,0x00 // 'N' + ,0x03,0xF8,0x03,0xFF,0xE0,0xFF,0xFE,0x1F,0xFF,0xC7,0x80,0x3C,0xF0,0x07,0x9E + ,0x00,0xF3,0xC0,0x1E,0x78,0x03,0xCF,0x00,0x79,0xE0,0x0F,0x3C,0x01,0xE7,0x80 + ,0x3C,0xF0,0x07,0x9E,0x00,0xF3,0xC0,0x1E,0x78,0x03,0xCF,0x00,0x79,0xE0,0x0F + ,0x3C,0x01,0xE7,0x80,0x3C,0xF0,0x07,0x8F,0xFF,0xE1,0xFF,0xFC,0x1F,0xFF,0x00 + ,0x7F,0x00 // 'O' + ,0x1F,0xF8,0x1F,0xFF,0x87,0xFF,0xF1,0xFF,0xFE,0x78,0x03,0x9E,0x00,0xE7,0x80 + ,0x39,0xE0,0x0E,0x78,0x03,0x9E,0x00,0xE7,0x80,0x39,0xFF,0xFE,0x7F,0xFF,0x9F + ,0xFF,0xC7,0xFF,0xE1,0xE0,0x00,0x78,0x00,0x1E,0x00,0x07,0x80,0x01,0xE0,0x00 + ,0x78,0x00,0x1E,0x00,0x07,0x80,0x01,0xE0,0x00,0x78,0x00,0x00,0x00,0x00 // 'P' + ,0x03,0xF8,0x03,0xFF,0xE0,0xFF,0xFE,0x1F,0xFF,0xC7,0x80,0x3C,0xF0,0x07,0x9E + ,0x00,0xF3,0xC0,0x1E,0x78,0x03,0xCF,0x00,0x79,0xE0,0x0F,0x3C,0x01,0xE7,0x80 + ,0x3C,0xF0,0x07,0x9E,0x00,0xF3,0xC2,0x1E,0x78,0xE3,0xCF,0x1E,0x79,0xE1,0xFF + ,0x3C,0x3F,0xE7,0x81,0xFC,0xF0,0x3F,0x8F,0xFF,0xF1,0xFF,0xFE,0x1F,0xFF,0xC0 + ,0x7F,0xE0 // 'Q' + ,0x1F,0xF8,0x0F,0xFF,0xE1,0xFF,0xFE,0x3F,0xFF,0xC7,0x80,0x38,0xF0,0x07,0x9E + ,0x00,0xF3,0xC0,0x1E,0x78,0x03,0xCF,0x00,0x79,0xE0,0x0F,0x3F,0xFF,0xC7,0xFF + ,0xF8,0xFF,0xFE,0x1F,0xFF,0x83,0xC1,0xF0,0x78,0x1E,0x0F,0x03,0xC1,0xE0,0x38 + ,0x3C,0x07,0x87,0x80,0x70,0xF0,0x0F,0x1E,0x01,0xE3,0xC0,0x1E,0x78,0x03,0xC0 + ,0x00,0x00 // 'R' + ,0x03,0xF8,0x03,0xFF,0xE0,0xFF,0xFE,0x1F,0xFF,0xC7,0x80,0x3C,0xF0,0x07,0x9E + ,0x00,0xF3,0xC0,0x00,0x78,0x00,0x0F,0x00,0x00,0xFC,0x00,0x1F,0xE0,0x00,0xFF + ,0x80,0x07,0xFC,0x00,0x1F,0xE0,0x00,0xFC,0x00,0x03,0xC0,0x00,0x78,0x00,0x0F + ,0x3C,0x01,0xE7,0x80,0x3C,0xF0,0x07,0x8F,0xFF,0xE1,0xFF,0xFC,0x1F,0xFF,0x00 + ,0x7F,0x00 // 'S' + ,0x1F,0xFF,0x1F,0xFF,0xE7,0xFF,0xF9,0xFF,0xFE,0x01,0xE0,0x00,0x78,0x00,0x1E + ,0x00,0x07,0x80,0x01,0xE0,0x00,0x78,0x00,0x1E,0x00,0x07,0x80,0x01,0xE0,0x00 + ,0x78,0x00,0x1E,0x00,0x07,0x80,0x01,0xE0,0x00,0x78,0x00,0x1E,0x00,0x07,0x80 + ,0x01,0xE0,0x00,0x78,0x00,0x1E,0x00,0x07,0x80,0x00,0xE0,0x00,0x00,0x00 // 'T' + ,0x00,0x01,0x1E,0x00,0xE7,0x80,0x39,0xE0,0x0E,0x78,0x03,0x9E,0x00,0xE7,0x80 + ,0x39,0xE0,0x0E,0x78,0x03,0x9E,0x00,0xE7,0x80,0x39,0xE0,0x0E,0x78,0x03,0x9E + ,0x00,0xE7,0x80,0x39,0xE0,0x0E,0x78,0x03,0x9E,0x00,0xE7,0x80,0x39,0xE0,0x0E + ,0x78,0x03,0x9E,0x00,0xE3,0xFF,0xF8,0xFF,0xFC,0x1F,0xFE,0x00,0xFE,0x00 // 'U' + ,0x00,0x00,0x23,0xC0,0x03,0x9E,0x00,0x3C,0x70,0x01,0xE3,0xC0,0x0E,0x1E,0x00 + ,0xF0,0x70,0x07,0x83,0xC0,0x38,0x1E,0x03,0xC0,0x70,0x1E,0x03,0xC0,0xE0,0x1E + ,0x0F,0x00,0x70,0x78,0x03,0xC3,0x80,0x1E,0x3C,0x00,0x71,0xE0,0x03,0xCE,0x00 + ,0x1E,0xF0,0x00,0x7F,0x80,0x03,0xF8,0x00,0x1F,0xC0,0x00,0x7E,0x00,0x03,0xE0 + ,0x00,0x1F,0x00,0x00,0x78,0x00,0x01,0x00,0x00 // 'V' + ,0x00,0x00,0x00,0x0F,0x00,0x00,0x79,0xE0,0x00,0x0F,0x3C,0x00,0x01,0xC3,0x80 + ,0x00,0x38,0x78,0x08,0x0F,0x0F,0x03,0x81,0xE1,0xE0,0x70,0x3C,0x1C,0x1E,0x07 + ,0x03,0x83,0xE0,0xE0,0x78,0x7C,0x3C,0x0F,0x0F,0x87,0x80,0xE3,0xF8,0xE0,0x1C + ,0x7F,0x1C,0x03,0xCF,0xE7,0x80,0x7B,0xFE,0xF0,0x0F,0xFB,0xFC,0x00,0xFE,0x3F + ,0x80,0x1F,0xC7,0xF0,0x03,0xF8,0xFE,0x00,0x7E,0x0F,0xC0,0x07,0xC1,0xF0,0x00 + ,0xF8,0x3E,0x00,0x1E,0x03,0xC0,0x03,0xC0,0x78,0x00,0x10,0x04,0x00 // 'W' + ,0x00,0x00,0x1E,0x01,0xE7,0x80,0x78,0xF0,0x3C,0x3C,0x0F,0x07,0x87,0x80,0xE1 + ,0xC0,0x3C,0xF0,0x07,0xF8,0x01,0xFE,0x00,0x3F,0x00,0x0F,0xC0,0x01,0xE0,0x00 + ,0x78,0x00,0x3F,0x00,0x0F,0xC0,0x07,0xF8,0x01,0xFE,0x00,0xF3,0xC0,0x38,0x70 + ,0x1E,0x1E,0x0F,0x03,0xC3,0xC0,0xF1,0xE0,0x1E,0x78,0x07,0x80,0x00,0x00 // 'X' + ,0x00,0x00,0x23,0xC0,0x07,0x9E,0x00,0x3C,0x78,0x03,0xC1,0xE0,0x1E,0x0F,0x01 + ,0xE0,0x3C,0x1E,0x00,0xE0,0xF0,0x07,0x8F,0x00,0x1E,0x70,0x00,0xFF,0x80,0x03 + ,0xF8,0x00,0x0F,0xC0,0x00,0x7C,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,0x0E,0x00,0x00,0x70,0x00,0x01,0x00,0x00 // 'Y' + ,0x1F,0xFF,0x0F,0xFF,0xF1,0xFF,0xFE,0x1F,0xFF,0xC0,0x00,0xF0,0x00,0x1C,0x00 + ,0x07,0x80,0x01,0xE0,0x00,0x3C,0x00,0x0F,0x00,0x01,0xE0,0x00,0x78,0x00,0x0E + ,0x00,0x03,0xC0,0x00,0xF0,0x00,0x1E,0x00,0x07,0x80,0x00,0xF0,0x00,0x3C,0x00 + ,0x07,0x80,0x01,0xE0,0x00,0x3C,0x00,0x0F,0xFF,0xE3,0xFF,0xFC,0x7F,0xFF,0x83 + ,0xFF,0xE0 // 'Z' + ,0x1E,0x3F,0x9F,0xCF,0xE7,0x83,0xC1,0xE0,0xF0,0x78,0x3C,0x1E,0x0F,0x07,0x83 + ,0xC1,0xE0,0xF0,0x78,0x3C,0x1E,0x0F,0x07,0x83,0xC1,0xFC,0xFE,0x7F,0x0F,0x00 // '[' + ,0x00,0x00,0x1E,0x00,0x07,0x80,0x00,0xF0,0x00,0x1C,0x00,0x07,0x80,0x00,0xE0 + ,0x00,0x3C,0x00,0x07,0x00,0x01,0xE0,0x00,0x3C,0x00,0x0F,0x00,0x01,0xE0,0x00 + ,0x78,0x00,0x0F,0x00,0x03,0xC0,0x00,0x78,0x00,0x0E,0x00,0x03,0xC0,0x00,0x70 + ,0x00,0x1E,0x00,0x03,0xC0,0x00,0xF0,0x00,0x1E,0x00,0x07,0x80,0x00,0x00 // '\' + ,0x1E,0x3F,0x9F,0xCF,0xE0,0x70,0x38,0x1C,0x0E,0x07,0x03,0x81,0xC0,0xE0,0x70 + ,0x38,0x1C,0x0E,0x07,0x03,0x81,0xC0,0xE0,0x70,0x39,0xFC,0xFE,0x7F,0x0F,0x00 // ']' + ,0x00,0x00,0xF0,0x1F,0x83,0xFC,0x7F,0xE7,0x9E,0x70,0xE0,0x00 // '^' + ,0x00,0x00,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x1F,0xFC // '_' + ,0x00,0x61,0xE3,0xC3,0x87,0x80,0x00 // '`' + ,0x07,0xC0,0x1F,0xF0,0x3F,0xF0,0x7F,0xE0,0x03,0xC0,0x03,0x80,0x07,0x03,0xFE + ,0x1F,0xFC,0x7F,0xF9,0xFF,0xF3,0xC1,0xE7,0x81,0xCF,0x03,0x9E,0x07,0x3C,0x1E + ,0x7F,0xFC,0x7F,0xF8,0x7F,0xE0,0x3E,0x00 // 'a' + ,0x00,0x00,0xF0,0x01,0xE0,0x03,0xC0,0x07,0x80,0x0F,0x00,0x1F,0xF0,0x3F,0xFC + ,0x7F,0xFC,0xFF,0xF9,0xE0,0xF3,0xC0,0xE7,0x81,0xCF,0x03,0x9E,0x07,0x3C,0x0E + ,0x78,0x1C,0xF0,0x39,0xE0,0x73,0xC0,0xE7,0x81,0xCF,0x07,0x9F,0xFF,0x1F,0xFE + ,0x1F,0xF8,0x0F,0x80 // 'b' + ,0x07,0xC0,0x3F,0xF0,0xFF,0xF3,0xFF,0xE7,0x83,0xCF,0x03,0x9E,0x07,0x3C,0x04 + ,0x78,0x00,0xF0,0x01,0xE0,0x03,0xC0,0x07,0x80,0x8F,0x03,0x9E,0x07,0x3C,0x1E + ,0x7F,0xFC,0x7F,0xF8,0x7F,0xE0,0x3E,0x00 // 'c' + ,0x00,0x08,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x81,0xFF,0x0F,0xFE + ,0x3F,0xFC,0xFF,0xF9,0xE0,0xF3,0xC0,0xE7,0x81,0xCF,0x03,0x9E,0x07,0x3C,0x0E + ,0x78,0x1C,0xF0,0x39,0xE0,0x73,0xC0,0xE7,0x81,0xCF,0x07,0x9F,0xFF,0x1F,0xFE + ,0x1F,0xF8,0x0F,0x80 // 'd' + ,0x07,0xC0,0x3F,0xF0,0xFF,0xF3,0xFF,0xE7,0x83,0xCF,0x03,0x9E,0x07,0x3C,0x0E + ,0x78,0x3C,0xFF,0xF9,0xFF,0xF3,0xFF,0xC7,0xFC,0x0F,0x00,0x1E,0x00,0x3C,0x00 + ,0x7F,0xE0,0x7F,0xE0,0x7F,0xC0,0x3E,0x00 // 'e' + ,0x07,0xC1,0xFE,0x3F,0xE7,0xFE,0x78,0x07,0x80,0x7F,0xC7,0xFE,0x7F,0xE7,0xFE + ,0x78,0x07,0x80,0x78,0x07,0x80,0x78,0x07,0x80,0x78,0x07,0x80,0x78,0x07,0x80 + ,0x78,0x07,0x80,0x78,0x07,0x80,0x78,0x00,0x00 // 'f' + ,0x07,0xC0,0x3F,0xF0,0xFF,0xF3,0xFF,0xE7,0x83,0xCF,0x03,0x9E,0x07,0x3C,0x0E + ,0x78,0x1C,0xF0,0x39,0xE0,0x73,0xC0,0xE7,0x81,0xCF,0x03,0x9E,0x07,0x3C,0x1E + ,0x7F,0xFC,0x7F,0xF8,0x7F,0xF0,0x3F,0xE0,0x01,0xC0,0x07,0x83,0xFF,0x07,0xFE + ,0x0F,0xF8,0x0F,0x80 // 'g' + ,0x00,0x00,0xF0,0x01,0xE0,0x03,0xC0,0x07,0x80,0x0F,0x00,0x1F,0xF0,0x3F,0xFC + ,0x7F,0xFC,0xFF,0xF9,0xE0,0xF3,0xC0,0xE7,0x81,0xCF,0x03,0x9E,0x07,0x3C,0x0E + ,0x78,0x1C,0xF0,0x39,0xE0,0x73,0xC0,0xE7,0x81,0xCF,0x03,0x9E,0x07,0x3C,0x0E + ,0x78,0x1C,0x00,0x10 // 'h' + ,0x00,0x71,0xF3,0xE3,0x80,0x04,0x1C,0x38,0x70,0xE1,0xC3,0x87,0x0E,0x1C,0x38 + ,0x70,0xE1,0xC3,0x87,0x0E,0x1C,0x38,0x20 // 'i' + ,0x00,0x07,0x83,0xC1,0xE0,0xF0,0x00,0x00,0x1E,0x0F,0x07,0x83,0xC1,0xE0,0xF0 + ,0x78,0x3C,0x1E,0x0F,0x07,0x83,0xC1,0xE0,0xF0,0x78,0x3C,0x1E,0x0F,0x07,0x83 + ,0xC1,0xE7,0xF3,0xF1,0xF0,0x20 // 'j' + ,0x00,0x00,0xF0,0x01,0xE0,0x03,0xC0,0x07,0x80,0x0F,0x00,0x1E,0x00,0x3C,0x1C + ,0x78,0x7C,0xF1,0xF1,0xE7,0xC3,0xDF,0x07,0xFC,0x0F,0xF0,0x1F,0xC0,0x3F,0x80 + ,0x7E,0x00,0xFE,0x01,0xFE,0x03,0xFE,0x07,0xBE,0x0F,0x3E,0x1E,0x3E,0x3C,0x3E + ,0x78,0x3C,0x00,0x10 // 'k' + ,0x00,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78 + ,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x7E,0x3E,0x1E,0x04 // 'l' + ,0x07,0x0E,0x01,0xFF,0xFC,0x3F,0xFF,0xC7,0xFF,0xFE,0x78,0xF1,0xE7,0x8F,0x1E + ,0x78,0xF1,0xE7,0x8F,0x1E,0x78,0xF1,0xE7,0x8F,0x1E,0x78,0xF1,0xE7,0x8F,0x1E + ,0x78,0xF1,0xE7,0x8F,0x1E,0x78,0xF1,0xE7,0x8F,0x1E,0x78,0xF1,0xE7,0x8F,0x1E + ,0x78,0xF1,0xE0,0x00,0x00 // 'm' + ,0x07,0xC0,0x3F,0xF0,0xFF,0xF3,0xFF,0xE7,0x83,0xCF,0x03,0x9E,0x07,0x3C,0x0E + ,0x78,0x1C,0xF0,0x39,0xE0,0x73,0xC0,0xE7,0x81,0xCF,0x03,0x9E,0x07,0x3C,0x0E + ,0x78,0x1C,0xF0,0x39,0xE0,0x70,0x00,0x40 // 'n' + ,0x07,0xC0,0x3F,0xF0,0xFF,0xF3,0xFF,0xE7,0x83,0xCF,0x03,0x9E,0x07,0x3C,0x0E + ,0x78,0x1C,0xF0,0x39,0xE0,0x73,0xC0,0xE7,0x81,0xCF,0x03,0x9E,0x07,0x3C,0x1E + ,0x7F,0xFC,0x7F,0xF8,0x7F,0xE0,0x3E,0x00 // 'o' + ,0x07,0xC0,0x3F,0xF0,0xFF,0xF3,0xFF,0xE7,0x83,0xCF,0x03,0x9E,0x07,0x3C,0x0E + ,0x78,0x1C,0xF0,0x39,0xE0,0x73,0xC0,0xE7,0x81,0xCF,0x03,0x9E,0x07,0x3C,0x1E + ,0x7F,0xFC,0xFF,0xF9,0xFF,0xE3,0xFE,0x07,0x80,0x0F,0x00,0x1E,0x00,0x3C,0x00 + ,0x78,0x00,0x00,0x00 // 'p' + ,0x07,0xC0,0x3F,0xF0,0xFF,0xF3,0xFF,0xE7,0x83,0xCF,0x03,0x9E,0x07,0x3C,0x0E + ,0x78,0x1C,0xF0,0x39,0xE0,0x73,0xC0,0xE7,0x81,0xCF,0x03,0x9E,0x07,0x3C,0x1E + ,0x7F,0xFC,0x7F,0xF8,0x7F,0xF0,0x3F,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E + ,0x00,0x1C,0x00,0x10 // 'q' + ,0x07,0xC0,0xFF,0x8F,0xFC,0xFF,0xC7,0x80,0x3C,0x01,0xE0,0x0F,0x00,0x78,0x03 + ,0xC0,0x1E,0x00,0xF0,0x07,0x80,0x3C,0x01,0xE0,0x0F,0x00,0x78,0x03,0xC0,0x1E + ,0x00,0x00,0x00 // 'r' + ,0x07,0xC0,0x3F,0xF0,0xFF,0xF3,0xFF,0xE7,0x83,0xCF,0x03,0x9E,0x07,0x3C,0x00 + ,0x3F,0x00,0x3F,0xC0,0x3F,0xE0,0x0F,0xE0,0x03,0xCE,0x03,0x9E,0x07,0x3C,0x1E + ,0x7F,0xFC,0x7F,0xF8,0x7F,0xE0,0x3E,0x00 // 's' + ,0x00,0x03,0xC0,0x1E,0x00,0xF0,0x07,0x80,0x3C,0x01,0xFF,0x0F,0xFE,0x7F,0xF3 + ,0xFF,0x1E,0x00,0xF0,0x07,0x80,0x3C,0x01,0xE0,0x0F,0x00,0x78,0x03,0xC0,0x1E + ,0x00,0xF0,0x07,0x80,0x3C,0x01,0xFF,0x87,0xFE,0x1F,0xF0,0x3E,0x00 // 't' + ,0x00,0x08,0xF0,0x39,0xE0,0x73,0xC0,0xE7,0x81,0xCF,0x03,0x9E,0x07,0x3C,0x0E + ,0x78,0x1C,0xF0,0x39,0xE0,0x73,0xC0,0xE7,0x81,0xCF,0x03,0x9E,0x07,0x3C,0x1E + ,0x7F,0xFC,0x7F,0xF8,0x7F,0xE0,0x3E,0x00 // 'u' + ,0x00,0x08,0x78,0x1C,0x78,0x1C,0x38,0x3C,0x3C,0x3C,0x3C,0x38,0x1C,0x78,0x1C + ,0x78,0x1E,0x70,0x1E,0x70,0x0F,0xF0,0x0F,0xF0,0x0F,0xE0,0x07,0xE0,0x07,0xE0 + ,0x07,0xC0,0x07,0xC0,0x03,0xC0,0x03,0xC0,0x00,0x00 // 'v' + ,0x00,0x00,0x07,0x8F,0x1E,0x78,0xF1,0xE7,0x8F,0x1E,0x38,0xF1,0xC3,0x9F,0x9C + ,0x3D,0xFB,0xC3,0xFF,0xFC,0x1F,0xFF,0x81,0xFF,0xF8,0x1F,0xFF,0x81,0xFF,0xF8 + ,0x1F,0xFF,0x80,0xF9,0xF0,0x0F,0x9F,0x00,0xF9,0xF0,0x0F,0x9F,0x00,0xF0,0xF0 + ,0x07,0x0E,0x00,0x20,0x40 // 'w' + ,0x00,0x11,0xE0,0xE7,0x87,0x8F,0x1C,0x3C,0xF0,0x7F,0x81,0xFE,0x03,0xF0,0x0F + ,0xC0,0x1E,0x00,0x78,0x03,0xF0,0x0F,0xC0,0x7F,0x81,0xFE,0x0F,0x3C,0x3C,0xF1 + ,0xE1,0xE7,0x87,0x80,0x04 // 'x' + ,0x00,0x11,0xE0,0xE7,0x87,0x8E,0x1E,0x38,0x70,0xF1,0xC3,0xCF,0x07,0x3C,0x1E + ,0xE0,0x7F,0x81,0xFE,0x03,0xF8,0x0F,0xC0,0x3F,0x00,0x7C,0x01,0xF0,0x07,0x80 + ,0x1E,0x00,0x78,0x01,0xC0,0x07,0x00,0x3C,0x07,0xF0,0x1F,0x80,0x7C,0x00,0x00 + ,0x00 // 'y' + ,0x1F,0xF0,0xFF,0xE7,0xFF,0x8F,0xFC,0x00,0xF0,0x07,0x80,0x1E,0x00,0xF0,0x03 + ,0xC0,0x1E,0x00,0x78,0x03,0xC0,0x0F,0x00,0x78,0x01,0xE0,0x0F,0x80,0x3F,0xF1 + ,0xFF,0xE7,0xFF,0x87,0xF8 // 'z' +}; +const GFXglyph monomaniacone20ptGlyphs[] = { +// bitmapOffset, width, height, xAdvance, xOffset, yOffset + { 0, 1, 1, 10, 0, 0 }, // ' + { 1, 7, 26, 10, 1, -26 }, // '! + { 24, 11, 7, 14, 1, -26 }, // '" + { 34, 20, 26, 23, 1, -26 }, // '# + { 99, 19, 31, 22, 1, -29 }, // '$ + { 173, 26, 26, 29, 1, -26 }, // '% + { 258, 19, 26, 21, 1, -26 }, // '& + { 320, 6, 7, 9, 1, -26 }, // '' + { 326, 9, 26, 13, 1, -26 }, // '( + { 356, 9, 26, 13, 1, -26 }, // ') + { 386, 16, 15, 19, 1, -26 }, // '* + { 416, 13, 13, 17, 1, -17 }, // '+ + { 438, 7, 9, 10, 1, -6 }, // ', + { 446, 13, 5, 17, 1, -13 }, // '- + { 455, 7, 6, 10, 1, -6 }, // '. + { 461, 18, 26, 21, 1, -26 }, // '/ + { 520, 19, 26, 22, 1, -26 }, // '0 + { 582, 9, 26, 22, 6, -26 }, // '1 + { 612, 19, 26, 22, 1, -26 }, // '2 + { 674, 19, 26, 22, 1, -26 }, // '3 + { 736, 19, 26, 22, 1, -26 }, // '4 + { 798, 19, 26, 22, 1, -26 }, // '5 + { 860, 19, 26, 22, 1, -26 }, // '6 + { 922, 19, 26, 22, 1, -26 }, // '7 + { 984, 19, 26, 22, 1, -26 }, // '8 + { 1046, 19, 26, 22, 1, -26 }, // '9 + { 1108, 7, 14, 10, 1, -17 }, // ': + { 1121, 7, 16, 10, 1, -16 }, // '; + { 1135, 14, 20, 17, 1, -20 }, // '< + { 1170, 13, 11, 17, 1, -17 }, // '= + { 1188, 14, 20, 17, 1, -20 }, // '> + { 1223, 19, 26, 22, 1, -26 }, // '? + { 1285, 24, 26, 28, 1, -26 }, // '@ + { 1363, 21, 26, 24, 1, -26 }, // 'A + { 1432, 18, 26, 22, 1, -26 }, // 'B + { 1491, 18, 26, 22, 1, -26 }, // 'C + { 1550, 18, 26, 22, 1, -26 }, // 'D + { 1609, 18, 26, 21, 1, -26 }, // 'E + { 1668, 18, 26, 21, 1, -26 }, // 'F + { 1727, 19, 26, 22, 1, -26 }, // 'G + { 1789, 18, 26, 22, 1, -26 }, // 'H + { 1848, 6, 26, 9, 1, -26 }, // 'I + { 1868, 18, 26, 22, 1, -26 }, // 'J + { 1927, 18, 26, 21, 1, -26 }, // 'K + { 1986, 18, 26, 21, 1, -26 }, // 'L + { 2045, 22, 26, 25, 1, -26 }, // 'M + { 2117, 19, 26, 22, 1, -26 }, // 'N + { 2179, 19, 26, 22, 1, -26 }, // 'O + { 2241, 18, 26, 22, 1, -26 }, // 'P + { 2300, 19, 26, 22, 1, -26 }, // 'Q + { 2362, 19, 26, 22, 1, -26 }, // 'R + { 2424, 19, 26, 22, 1, -26 }, // 'S + { 2486, 18, 26, 22, 1, -26 }, // 'T + { 2545, 18, 26, 22, 1, -26 }, // 'U + { 2604, 21, 26, 24, 1, -26 }, // 'V + { 2673, 27, 26, 30, 1, -26 }, // 'W + { 2761, 18, 26, 21, 1, -26 }, // 'X + { 2820, 21, 26, 24, 1, -26 }, // 'Y + { 2889, 19, 26, 22, 1, -26 }, // 'Z + { 2951, 9, 26, 13, 1, -26 }, // '[ + { 2981, 18, 26, 21, 1, -26 }, // '\ + { 3040, 9, 26, 12, 1, -26 }, // '] + { 3070, 12, 8, 15, 1, -26 }, // '^ + { 3082, 16, 5, 19, 1, -5 }, // '_ + { 3092, 7, 7, 10, 1, -27 }, // '` + { 3099, 15, 20, 18, 1, -20 }, // 'a + { 3137, 15, 26, 18, 1, -26 }, // 'b + { 3186, 15, 20, 18, 1, -20 }, // 'c + { 3224, 15, 26, 18, 1, -26 }, // 'd + { 3273, 15, 20, 18, 1, -20 }, // 'e + { 3311, 12, 26, 15, 1, -26 }, // 'f + { 3350, 15, 26, 18, 1, -20 }, // 'g + { 3399, 15, 26, 18, 1, -26 }, // 'h + { 3448, 7, 26, 10, 1, -26 }, // 'i + { 3471, 9, 32, 13, 1, -26 }, // 'j + { 3507, 15, 26, 18, 1, -26 }, // 'k + { 3556, 8, 26, 11, 1, -26 }, // 'l + { 3582, 20, 20, 23, 1, -20 }, // 'm + { 3632, 15, 20, 18, 1, -20 }, // 'n + { 3670, 15, 20, 18, 1, -20 }, // 'o + { 3708, 15, 26, 18, 1, -20 }, // 'p + { 3757, 15, 26, 18, 1, -20 }, // 'q + { 3806, 13, 20, 16, 1, -20 }, // 'r + { 3839, 15, 20, 18, 1, -20 }, // 's + { 3877, 13, 26, 16, 1, -26 }, // 't + { 3920, 15, 20, 18, 1, -20 }, // 'u + { 3958, 16, 20, 19, 1, -20 }, // 'v + { 3998, 20, 20, 23, 1, -20 }, // 'w + { 4048, 14, 20, 17, 1, -20 }, // 'x + { 4083, 14, 26, 17, 1, -20 }, // 'y + { 4129, 14, 20, 17, 1, -20 } // 'z +}; +const GFXfont monomaniacone20pt = { + (uint8_t *)monomaniacone20ptBitmaps, + (GFXglyph *)monomaniacone20ptGlyphs, + 0x20, + 0x7A, + 58 +}; diff --git a/Core/Inc/monomaniacone72pt.h b/Core/Inc/monomaniacone72pt.h new file mode 100644 index 0000000..5e96caf --- /dev/null +++ b/Core/Inc/monomaniacone72pt.h @@ -0,0 +1,636 @@ +// Created by ttf2gfx utility +const uint8_t monomaniacone72ptBitmaps[] = { +// Bitmap Data: + 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, + 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x00, + 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x03, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, + 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xF8, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, + 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x7F, + 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, + 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, + 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x07, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, + 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x1F, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, + 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, + 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xFF, + 0xFF, 0xFC, 0x00, + 0x00// '0' + , 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xE0, + 0x01, 0xFF, 0xFF, 0xC0, 0x07, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xFF, 0x80, + 0x7F, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xFC, 0x1F, + 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, + 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, + 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, + 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0x3F, 0xF9, 0xFF, 0xFE, 0x7F, 0xE3, 0xFF, + 0xFC, 0x7F, 0x87, 0xFF, 0xF8, 0x7C, 0x0F, 0xFF, 0xF0, 0x00, 0x1F, 0xFF, + 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0xFF, 0xFF, + 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xF8, + 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, + 0x00, 0x7F, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, + 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xF0, 0x00, + 0x1F, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x00, + 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x07, + 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0x3F, + 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0x00, 0x01, 0xFF, + 0xFE, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, + 0xF0, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, + 0x80, 0x00, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xFC, + 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xE0, + 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0x00, + 0x01, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xF8, 0x00, + 0x0F, 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, + 0x7F, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x03, + 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x1F, + 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0xFF, + 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xFF, + 0xF8, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x0F, 0xFF, + 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x03, 0xC0, + 0x00// '1' + , 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, + 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x00, + 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFE, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0F, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFE, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, + 0x0F, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFC, + 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x0F, + 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x0F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x01, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, + 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, + 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, + 0x1F, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, + 0x7F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFF, + 0xC0// '2' + , 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, + 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x00, + 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFE, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, + 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0xFC, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, + 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xFF, + 0xFF, 0xFC, 0x00, + 0x00// '3' + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF8, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, + 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0x00, 0x00, + 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x03, 0xFF, + 0xF8, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x01, 0xFF, 0xFC, 0x00, 0x00, 0x00, + 0x7F, 0xFF, 0x80, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xC0, 0x7F, + 0xFF, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xE0, 0x3F, 0xFF, 0x80, 0x00, 0x00, + 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0xC0, 0x00, 0x00, 0x1F, 0xFF, 0xF0, 0x0F, + 0xFF, 0xE0, 0x00, 0x00, 0x1F, 0xFF, 0xF8, 0x07, 0xFF, 0xF0, 0x00, 0x00, + 0x0F, 0xFF, 0xF8, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0x0F, 0xFF, 0xFC, 0x01, + 0xFF, 0xFC, 0x00, 0x00, 0x07, 0xFF, 0xFC, 0x00, 0xFF, 0xFE, 0x00, 0x00, + 0x07, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFE, 0x00, + 0x3F, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xC0, 0x00, + 0x01, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x01, 0xFF, 0xFF, 0x80, + 0x07, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xF8, 0x00, + 0x00, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xFF, 0xC0, + 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x7F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0x00, + 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xF0, + 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xE0, + 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF8, + 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x01, 0xFF, 0xFC, + 0x00, 0x07, 0xFF, 0xFC, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xFE, + 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xFF, + 0x80, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x07, 0xFF, + 0xF0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, + 0xC0, 0x00, 0x01, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0x00, 0xFF, + 0xFE, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x07, 0xFF, + 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xFC, 0x00, 0x00, 0x1F, + 0xFF, 0xC0, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, + 0xFF, 0x00, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x03, + 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0xFC, 0x00, 0x1F, + 0xFF, 0xE0, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, + 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, + 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0x00, + 0x00// '4' + , 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0xF8, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, + 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xFF, + 0xFF, 0xFC, 0x00, + 0x00// '5' + , 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, + 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x00, + 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFE, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x7F, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xF8, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, + 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xFF, + 0xFF, 0xFC, 0x00, + 0x00// '6' + , 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFE, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFE, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFC, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xF8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xE0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xC0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFE, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFC, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xF8, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0F, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7F, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFC, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, + 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, + 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, + 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, + 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, + 0x00// '7' + , 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, + 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x00, + 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, + 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x01, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, + 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xFF, + 0xFF, 0xFC, 0x00, + 0x00// '8' + , 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, + 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x00, + 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0xFC, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, + 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xFF, + 0xFF, 0xFC, 0x00, 0x00// '9' + }; +const GFXglyph monomaniacone72ptGlyphs[] = { +// bitmapOffset, width, height, xAdvance, xOffset, yOffset + { 0, 64, 95, 77, 6, -95 },// '0 + { 760, 31, 95, 77, 23, -95 },// '1 + { 1129, 64, 95, 77, 6, -95 },// '2 + { 1889, 64, 95, 77, 6, -95 },// '3 + { 2649, 65, 95, 77, 6, -95 },// '4 + { 3421, 64, 95, 77, 6, -95 },// '5 + { 4181, 64, 95, 77, 6, -95 },// '6 + { 4941, 64, 95, 77, 6, -95 },// '7 + { 5701, 64, 95, 77, 6, -95 },// '8 + { 6461, 64, 95, 77, 6, -95 }// '9 +}; +const GFXfont monomaniacone72pt = { (uint8_t*) monomaniacone72ptBitmaps, + (GFXglyph*) monomaniacone72ptGlyphs, 0x30, 0x39, -51 }; diff --git a/Core/Src/LCD_driver.c b/Core/Src/LCD_driver.c index 8635668..d1a638d 100644 --- a/Core/Src/LCD_driver.c +++ b/Core/Src/LCD_driver.c @@ -24,11 +24,9 @@ // #include "LCD_driver.h" -#include "5x5_font.h" -#include "stm32f1xx.h" void LCD_Write_Command(uint8_t Command) { - while ((SPI1->SR & SPI_SR_BSY) != 0); // Wait that everything is sent before changing the RS pin + while ((SPI1->SR & SPI_SR_BSY) != 0);// Wait that everything is sent before changing the RS pin CMD ; while ((SPI1->SR & SPI_SR_TXE) == 0); @@ -36,14 +34,14 @@ void LCD_Write_Command(uint8_t Command) { } /* Send Data (char) to LCD via SPI bus */ void LCD_Write_Data(uint8_t Data) { - while ((SPI1->SR & SPI_SR_BSY) != 0); // Wait that everything is sent before changing the RS pin + while ((SPI1->SR & SPI_SR_BSY) != 0);// Wait that everything is sent before changing the RS pin DATA ; while ((SPI1->SR & SPI_SR_TXE) == 0); SPI1->DR = Data; } void LCD_Write_Data16(uint16_t data) { - while ((SPI1->SR & SPI_SR_BSY) != 0); // Wait that everything is sent before changing the RS pin + while ((SPI1->SR & SPI_SR_BSY) != 0);// Wait that everything is sent before changing the RS pin DATA ; while ((SPI1->SR & SPI_SR_TXE) == 0); @@ -126,15 +124,12 @@ void LCD_Init(void) { BLACK); LCD_Draw_Rectangle(1, LCD_HEIGHT - 21, 20, 20, BLUE); - // Test drawing text - char text[] = "test bro"; - LCD_Draw_Text(&text, 30, 100, WHITE, 20, RED); } //INTERNAL FUNCTIONS OF THE LIBRARY void LCD_Draw_Colour_Burst(uint16_t color, uint32_t size) { - while ((SPI1->SR & SPI_SR_BSY) != 0); // Wait that everything is sent before changing the RS pin + while ((SPI1->SR & SPI_SR_BSY) != 0);// Wait that everything is sent before changing the RS pin DATA ; for (uint32_t j = 0; j < size; j++) { @@ -149,7 +144,6 @@ void LCD_Fill_Screen(uint16_t color) { LCD_Draw_Rectangle(0, 0, LCD_WIDTH, LCD_HEIGHT, color); } - void LCD_Draw_Pixel(uint16_t x, uint16_t y, uint16_t color) { if ((x >= LCD_WIDTH) || (y >= LCD_HEIGHT)) return; @@ -234,7 +228,6 @@ void LCD_Draw_Hollow_Circle( } } - void LCD_Draw_Filled_Circle( uint16_t X, uint16_t Y, @@ -356,63 +349,6 @@ void LCD_Draw_Filled_Rectangle_Coord( LCD_Draw_Rectangle(X0_true, Y0_true, X_length, Y_length, Colour); } -/*Draws a character (fonts imported from fonts.h) at X,Y location with specified font colour, size and Background colour*/ -/*See fonts.h implementation of font on what is required for changing to a different font when switching fonts libraries*/ -void LCD_Draw_Char( - char Character, - uint16_t X, - uint16_t Y, - uint16_t Colour, - uint16_t Size, - uint16_t Background_Colour) { - uint8_t function_char; - uint8_t i, j; - - function_char = Character; - - if (function_char < ' ') { - Character = 0; - } else { - function_char -= 32; - } - - char temp[CHAR_WIDTH]; - for (uint8_t k = 0; k < CHAR_WIDTH; k++) { - temp[k] = font[function_char][k]; - } - -// Draw pixels - LCD_Draw_Rectangle(X, Y, CHAR_WIDTH * Size, CHAR_HEIGHT * Size, - Background_Colour); - for (j = 0; j < CHAR_WIDTH; j++) { - for (i = 0; i < CHAR_HEIGHT; i++) { - if (temp[j] & (1 << i)) { - if (Size == 1) { - LCD_Draw_Pixel(X + j, Y + i, Colour); - } else { - LCD_Draw_Rectangle(X + (j * Size), Y + (i * Size), Size, Size, - Colour); - } - } - } - } -} - -/*Draws an array of characters (fonts imported from fonts.h) at X,Y location with specified font colour, size and Background colour*/ -/*See fonts.h implementation of font on what is required for changing to a different font when switching fonts libraries*/ -void LCD_Draw_Text( - const char *Text, - uint16_t X, - uint16_t Y, - uint16_t Colour, - uint16_t Size, - uint16_t Background_Colour) { - while (*Text) { - LCD_Draw_Char(*Text++, X, Y, Colour, Size, Background_Colour); - X += CHAR_WIDTH * Size; - } -} - /*Dessine une image dans une zone de l'ecran, aux coordonnées X et Y*/ //CONVERTISSEUR: http://www.digole.com/tools/PicturetoC_Hex_converter.php //65K colour (2Bytes / Pixel) diff --git a/Core/Src/dashboard.c b/Core/Src/dashboard.c index dff8943..0e6d01c 100644 --- a/Core/Src/dashboard.c +++ b/Core/Src/dashboard.c @@ -1,5 +1,7 @@ #include "dashboard.h" -#include "LCD_driver.h" +#include "font.h" +#include "monomaniacone20pt.h" +#include "monomaniacone72pt.h" void run_dashboard_loop() { @@ -14,6 +16,22 @@ void init() { LCD_Init(); // draw base + + + // Test drawing text + //char text[] = "test bro"; + //LCD_Draw_Text(&text, 30, 100, WHITE, 20, RED); + + GFX_DrawChar(40, 40, '!', &monomaniacone20pt, BLACK, WHITE); + GFX_DrawChar(60, 40, '2', &monomaniacone20pt, BLACK, WHITE); + GFX_DrawChar(80, 40, '3', &monomaniacone20pt, BLACK, WHITE); + GFX_DrawChar(100, 40, '4', &monomaniacone20pt, BLACK, WHITE); + GFX_DrawChar(120, 40, '5', &monomaniacone20pt, BLACK, WHITE); + + + GFX_DrawText(470/2, 150, "BONJOUR !", &monomaniacone20pt, RED, BLACK, 1); + GFX_DrawText(470/2, 250, "01234", &monomaniacone72pt, ORANGE, BLACK, 1); + } void update_values() { // UART send 0201 04 4084 03 diff --git a/Core/Src/font.c b/Core/Src/font.c new file mode 100644 index 0000000..18bb37b --- /dev/null +++ b/Core/Src/font.c @@ -0,0 +1,113 @@ +#include "font.h" +#include "LCD_driver.h" + +void GFX_DrawChar( + uint16_t x, + uint16_t y, + char c, + const GFXfont *font, + uint16_t fg_color, + uint16_t bg_color) { + + if (c < font->firstChar || c > font->lastChar) { + return; + } + + uint16_t glyphIndex = c - font->firstChar; + const GFXglyph *glyph = &font->glyphs[glyphIndex]; + + int16_t startX = x + glyph->xOffset; + int16_t startY = y + glyph->yOffset; + + if (startX + glyph->width <= 0 || startX >= LCD_WIDTH) return; + if (startY + glyph->height <= 0 || startY >= LCD_HEIGHT) return; + +// LCD_Set_Address(startX, startY, startX + glyph->width - 1, startY + glyph->height - 1); + uint16_t pendingPixelCount = 0; + uint8_t pendingPixelBit = 0; + + uint16_t bitPos = 0; + for (uint8_t row = 0; row < glyph->height; row++) { + for (uint8_t col = 0; col < glyph->width; col++) { + uint16_t byteIndex = glyph->bitmapOffset + (bitPos / 8); + uint8_t bitIndex = bitPos % 8; + uint8_t pixelBit = font->bitmaps[byteIndex] & (0x80 >> bitIndex); + +// if(pixelBit == pendingPixelBit) { +// pendingPixelCount++; +// }else { +// if(pendingPixelCount != 0) { +// LCD_Draw_Colour_Burst(pendingPixelBit ? fg_color : bg_color, pendingPixelCount); +// pendingPixelCount = 0; +// } +// pendingPixelBit = pixelBit; +// } + + uint16_t pixelColor = pixelBit ? fg_color : bg_color; + + int16_t absX = startX + col; + int16_t absY = startY + row; + + if (absX >= 0 && absX < LCD_WIDTH && absY >= 0 && absY < LCD_HEIGHT) { + LCD_Draw_Pixel(absX, absY, pixelColor); + } + + bitPos++; + } + } + if(pendingPixelCount != 0) { + LCD_Draw_Colour_Burst(pendingPixelBit ? fg_color : bg_color, pendingPixelCount); + } +} + +uint16_t GFX_GetTextWidth(const char *text, const GFXfont *font) { + uint16_t width = 0; + + while (*text != '\0') { + if (*text >= font->firstChar && *text <= font->lastChar) { + uint16_t glyphIndex = *text - font->firstChar; + width += font->glyphs[glyphIndex].advance; + } else { + // Default advance for unsupported characters + width += 10; + } + text++; + } + + return width; +} + + +void GFX_DrawText(uint16_t x, uint16_t y, const char *text, const GFXfont *font, + uint16_t fg_color, uint16_t bg_color, uint8_t alignment) { + + // Adjust x position based on alignment + switch (alignment) { + case 1: // Center + x -= GFX_GetTextWidth(text, font) / 2; + break; + case 2: // Right + x -= GFX_GetTextWidth(text, font); + break; + // Default: Left alignment (no adjustment) + } + + // Draw each character + uint16_t cursorX = x; + uint16_t cursorY = y; + + while (*text != '\0') { + GFX_DrawChar(cursorX, cursorY, *text, font, fg_color, bg_color); + + // Move cursor by the glyph's advance width + if (*text >= font->firstChar && *text <= font->lastChar) { + uint16_t glyphIndex = *text - font->firstChar; + cursorX += font->glyphs[glyphIndex].advance; + } else { + // Default advance for unsupported characters + cursorX += 10; + } + + text++; + } +} diff --git a/font26.h b/font26.h new file mode 100644 index 0000000..d9dae4c --- /dev/null +++ b/font26.h @@ -0,0 +1,24 @@ +/* + font26.h (PNM). +*/ +static const unsigned char + MagickImage[] = + { + 0x50, 0x35, 0x0A, 0x37, 0x20, 0x31, 0x33, 0x0A, 0x36, 0x35, 0x35, 0x33, + 0x35, 0x0A, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x23, 0xF5, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x9C, 0x20, + 0x69, 0xE1, 0xF9, 0x25, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x6D, + 0x68, 0x4C, 0x47, 0x22, 0xD7, 0x65, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xD8, 0x8B, 0x6B, 0xE8, 0x83, 0xFD, 0x9F, 0x20, 0xFF, 0xFF, 0xFF, 0xFB, + 0xFF, 0xFF, 0xA7, 0x68, 0x92, 0x74, 0xCA, 0x82, 0x6D, 0xB5, 0xFB, 0x12, + 0xFF, 0xFF, 0xFE, 0x86, 0x6D, 0x6F, 0x77, 0x29, 0x9C, 0x33, 0x40, 0x2B, + 0xDD, 0xD0, 0xFF, 0xFF, 0xE4, 0x38, 0x4D, 0xDC, 0x6A, 0xDE, 0x73, 0xCB, + 0x43, 0xB2, 0xA8, 0x63, 0xFF, 0xFF, 0xAE, 0x2A, 0x71, 0xD2, 0xFF, 0xFF, + 0xFF, 0xFF, 0xAF, 0x10, 0x6C, 0x60, 0xFD, 0x2A, 0x7E, 0x36, 0xA4, 0x93, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x6A, 0x5E, 0xA0, 0xE4, 0x3B, 0xE6, 0x79, + 0xF4, 0xB5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x7E, 0xE5, 0x3C, 0xF8, 0x5D, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF + };