diff --git a/demos/modules/gdisp/gdisp_fonts_cyrillic/gfxconf.h b/demos/modules/gdisp/gdisp_fonts_cyrillic/gfxconf.h new file mode 100644 index 00000000..997e57dd --- /dev/null +++ b/demos/modules/gdisp/gdisp_fonts_cyrillic/gfxconf.h @@ -0,0 +1,169 @@ +/** + * This file has a different license to the rest of the GFX system. + * You can copy, modify and distribute this file as you see fit. + * You do not need to publish your source modifications to this file. + * The only thing you are not permitted to do is to relicense it + * under a different license. + */ + +/** + * Copy this file into your project directory and rename it as gfxconf.h + * Edit your copy to turn on the GFX features you want to use. + */ + +#ifndef _GFXCONF_H +#define _GFXCONF_H + +/* The operating system to use - one of these must be defined */ +#define GFX_USE_OS_CHIBIOS FALSE +#define GFX_USE_OS_WIN32 FALSE +#define GFX_USE_OS_LINUX FALSE +#define GFX_USE_OS_OSX FALSE + +/* GFX subsystems to turn on */ +#define GFX_USE_GDISP TRUE +#define GFX_USE_TDISP FALSE +#define GFX_USE_GWIN FALSE +#define GFX_USE_GEVENT FALSE +#define GFX_USE_GTIMER FALSE +#define GFX_USE_GQUEUE FALSE +#define GFX_USE_GINPUT FALSE +#define GFX_USE_GADC FALSE +#define GFX_USE_GAUDIN FALSE +#define GFX_USE_GAUDOUT FALSE +#define GFX_USE_GMISC FALSE + +/* Features for the GDISP subsystem */ +#define GDISP_NEED_VALIDATION TRUE +#define GDISP_NEED_CLIP TRUE +#define GDISP_NEED_TEXT TRUE +#define GDISP_NEED_CIRCLE TRUE +#define GDISP_NEED_ELLIPSE TRUE +#define GDISP_NEED_ARC FALSE +#define GDISP_NEED_CONVEX_POLYGON FALSE +#define GDISP_NEED_SCROLL FALSE +#define GDISP_NEED_PIXELREAD FALSE +#define GDISP_NEED_CONTROL FALSE +#define GDISP_NEED_QUERY FALSE +#define GDISP_NEED_IMAGE FALSE +#define GDISP_NEED_MULTITHREAD FALSE +#define GDISP_NEED_ASYNC FALSE +#define GDISP_NEED_MSGAPI FALSE +#define GDISP_NEED_ANTIALIAS TRUE +#define GDISP_NEED_UTF8 TRUE +#define GDISP_NEED_TEXT_KERNING TRUE + +/* GDISP - fonts to include */ +#define GDISP_INCLUDE_FONT_DEJAVUSANS10 FALSE +#define GDISP_INCLUDE_FONT_DEJAVUSANS12 FALSE +#define GDISP_INCLUDE_FONT_DEJAVUSANS16 FALSE +#define GDISP_INCLUDE_FONT_DEJAVUSANS24 FALSE +#define GDISP_INCLUDE_FONT_DEJAVUSANS32 FALSE +#define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12 FALSE +#define GDISP_INCLUDE_FONT_FIXED_10x20 FALSE +#define GDISP_INCLUDE_FONT_FIXED_7x14 FALSE +#define GDISP_INCLUDE_FONT_FIXED_5x8 FALSE +#define GDISP_INCLUDE_FONT_DEJAVUSANS12_AA FALSE +#define GDISP_INCLUDE_FONT_DEJAVUSANS16_AA FALSE +#define GDISP_INCLUDE_FONT_DEJAVUSANS24_AA FALSE +#define GDISP_INCLUDE_FONT_DEJAVUSANS32_AA FALSE +#define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA FALSE + +#define GDISP_INCLUDE_FONT_UI1 FALSE +#define GDISP_INCLUDE_FONT_UI2 FALSE +#define GDISP_INCLUDE_FONT_LARGENUMBERS FALSE +#define GDISP_INCLUDE_USER_FONTS TRUE + +/* GDISP image decoders */ +#define GDISP_NEED_IMAGE_NATIVE FALSE +#define GDISP_NEED_IMAGE_GIF FALSE +#define GDISP_NEED_IMAGE_BMP FALSE +#define GDISP_NEED_IMAGE_JPG FALSE +#define GDISP_NEED_IMAGE_PNG FALSE +#define GDISP_NEED_IMAGE_ACCOUNTING FALSE + +/* Optional image support that can be turned off */ +/* + #define GDISP_NEED_IMAGE_BMP_1 TRUE + #define GDISP_NEED_IMAGE_BMP_4 TRUE + #define GDISP_NEED_IMAGE_BMP_4_RLE TRUE + #define GDISP_NEED_IMAGE_BMP_8 TRUE + #define GDISP_NEED_IMAGE_BMP_8_RLE TRUE + #define GDISP_NEED_IMAGE_BMP_16 TRUE + #define GDISP_NEED_IMAGE_BMP_24 TRUE + #define GDISP_NEED_IMAGE_BMP_32 TRUE +*/ + +/* Features for the TDISP subsystem. */ +#define TDISP_NEED_MULTITHREAD FALSE + +/* Features for the GWIN subsystem. */ +#define GWIN_NEED_WINDOWMANAGER FALSE +#define GWIN_NEED_CONSOLE FALSE +#define GWIN_NEED_GRAPH FALSE +#define GWIN_NEED_WIDGET FALSE +#define GWIN_NEED_BUTTON FALSE +#define GWIN_NEED_SLIDER FALSE +#define GWIN_NEED_CHECKBOX FALSE +#define GWIN_NEED_IMAGE FALSE +#define GWIN_NEED_RADIO FALSE +#define GWIN_NEED_LIST FALSE + +/* Features for the GEVENT subsystem. */ +#define GEVENT_ASSERT_NO_RESOURCE FALSE + +/* Features for the GTIMER subsystem. */ +/* NONE */ + +/* Features for the GQUEUE subsystem. */ +#define GQUEUE_NEED_ASYNC FALSE +#define GQUEUE_NEED_GSYNC FALSE +#define GQUEUE_NEED_FSYNC FALSE + +/* Features for the GINPUT subsystem. */ +#define GINPUT_NEED_MOUSE FALSE +#define GINPUT_NEED_KEYBOARD FALSE +#define GINPUT_NEED_TOGGLE FALSE +#define GINPUT_NEED_DIAL FALSE + +/* Features for the GADC subsystem. */ +/* NONE */ + +/* Features for the GAUDIN subsystem. */ +/* NONE */ + +/* Features for the GAUDOUT subsystem. */ +/* NONE */ + +/* Features for the GMISC subsystem. */ +#define GMISC_NEED_ARRAYOPS FALSE +#define GMISC_NEED_FASTTRIG FALSE +#define GMISC_NEED_FIXEDTRIG FALSE + +/* Optional Parameters for various subsystems */ +/* + #define GDISP_NEED_UTF8 FALSE + #define GDISP_NEED_TEXT_KERNING FALSE + #define GDISP_NEED_ANTIALIAS FALSE + #define GEVENT_MAXIMUM_SIZE 32 + #define GEVENT_MAX_SOURCE_LISTENERS 32 + #define GTIMER_THREAD_WORKAREA_SIZE 512 + #define GADC_MAX_LOWSPEED_DEVICES 4 + #define GWIN_BUTTON_LAZY_RELEASE FALSE + #define GWIN_CONSOLE_USE_BASESTREAM FALSE + #define GWIN_CONSOLE_USE_FLOAT FALSE + #define GWIN_NEED_IMAGE_ANIMATION FALSE +*/ + +/* Optional Low Level Driver Definitions */ +/* + #define GDISP_USE_CUSTOM_BOARD FALSE + #define GDISP_SCREEN_WIDTH 320 + #define GDISP_SCREEN_HEIGHT 240 + #define GDISP_USE_FSMC + #define GDISP_USE_GPIO + #define TDISP_COLUMNS 16 + #define TDISP_ROWS 2 +*/ + +#endif /* _GFXCONF_H */ diff --git a/demos/modules/gdisp/gdisp_fonts_cyrillic/main.c b/demos/modules/gdisp/gdisp_fonts_cyrillic/main.c new file mode 100644 index 00000000..dd39a5d5 --- /dev/null +++ b/demos/modules/gdisp/gdisp_fonts_cyrillic/main.c @@ -0,0 +1,20 @@ +#include "gfx.h" + +int main(void) { + font_t font1; + + // Initialize uGFX and the underlying system + gfxInit(); + + // Get the fonts we want to use + font1 = gdispOpenFont("Archangelsk Regular 12"); + + // Demonstrate our other fonts + gdispDrawString(10, 10, "привет мир", font1, Yellow); + + // Wait forever + while(TRUE) { + gfxSleepMilliseconds(500); + } +} + diff --git a/demos/modules/gdisp/gdisp_fonts_cyrillic/userfonts.h b/demos/modules/gdisp/gdisp_fonts_cyrillic/userfonts.h new file mode 100644 index 00000000..4cb6b503 --- /dev/null +++ b/demos/modules/gdisp/gdisp_fonts_cyrillic/userfonts.h @@ -0,0 +1,455 @@ + + +/* Start of automatically generated font definition for php6ySCWY. */ + +#ifndef MF_RLEFONT_INTERNALS +#define MF_RLEFONT_INTERNALS +#endif +#include "mf_rlefont.h" + +#ifndef MF_RLEFONT_VERSION_4_SUPPORTED +#error The font file is not compatible with this version of mcufont. +#endif + +static const uint8_t mf_rlefont_php6ySCWY_dictionary_data[352] = { + 0x11, 0x09, 0x80, 0x03, 0x0f, 0x80, 0x0f, 0x80, 0x41, 0x01, 0x80, 0xc5, 0x80, 0xce, 0xc6, 0x0f, + 0x80, 0x0e, 0x02, 0x09, 0x80, 0x09, 0x0b, 0xc2, 0xce, 0x04, 0x0f, 0x0d, 0xc1, 0xcc, 0x05, 0x80, + 0x09, 0x80, 0x05, 0x80, 0xce, 0xc2, 0x01, 0x80, 0xc3, 0x40, 0x01, 0xce, 0xc7, 0x06, 0x80, 0x03, + 0x80, 0x06, 0x0a, 0x80, 0x83, 0xc8, 0x80, 0xc1, 0xcd, 0xce, 0xc5, 0x85, 0x21, 0x01, 0x80, 0x84, + 0x40, 0x11, 0x80, 0x1f, 0x21, 0x80, 0xcd, 0xc2, 0x80, 0x0b, 0x80, 0xca, 0xcd, 0xc4, 0x02, 0x80, + 0x80, 0xc9, 0xcd, 0xc5, 0xc5, 0xcd, 0x0b, 0x80, 0x03, 0x05, 0xc2, 0x80, 0x81, 0x82, 0xc4, 0x80, + 0xc3, 0xcd, 0x0a, 0x80, 0x02, 0xce, 0xc3, 0x01, 0xca, 0xc1, 0xcb, 0xce, 0x81, 0xcc, 0xc1, 0xc3, + 0xce, 0x07, 0xc6, 0xce, 0xc7, 0xce, 0xc6, 0x80, 0xca, 0xc3, 0x80, 0xce, 0xc7, 0x80, 0x10, 0x80, + 0xc4, 0xc8, 0xce, 0x20, 0x0c, 0x08, 0xca, 0x80, 0x31, 0xc2, 0xcd, 0xc4, 0xcd, 0xc1, 0xce, 0x0b, + 0x82, 0x80, 0x01, 0x24, 0x2c, 0x39, 0x33, 0x43, 0x22, 0xc5, 0x4b, 0x22, 0x2c, 0x21, 0x25, 0x19, + 0x2a, 0x0f, 0x1f, 0x2c, 0x28, 0x29, 0x20, 0x29, 0x0c, 0x19, 0x1b, 0x33, 0x05, 0x32, 0x1b, 0x03, + 0x0f, 0x21, 0x32, 0x26, 0x23, 0x2e, 0x56, 0x49, 0x29, 0x3d, 0x60, 0xcc, 0x50, 0x39, 0x19, 0x19, + 0x2a, 0x24, 0x4e, 0x00, 0x57, 0x4c, 0xc2, 0x01, 0x4c, 0x0f, 0x08, 0x21, 0x07, 0x42, 0x0e, 0x09, + 0x41, 0x54, 0xa6, 0x48, 0x1e, 0x22, 0xc8, 0x29, 0x22, 0xc8, 0x29, 0x24, 0x22, 0x52, 0x1a, 0x1d, + 0x1f, 0x27, 0x0d, 0x4c, 0xb4, 0x0d, 0x28, 0x07, 0x20, 0x48, 0x3e, 0x2f, 0x21, 0x3e, 0x08, 0x33, + 0x09, 0x42, 0x26, 0x29, 0x19, 0x09, 0x2d, 0x00, 0x5a, 0x08, 0x63, 0x3d, 0x0d, 0x01, 0x1a, 0x26, + 0xa6, 0x45, 0x3e, 0x2c, 0x3e, 0x2c, 0x00, 0x3e, 0x26, 0x32, 0x01, 0x20, 0x0d, 0x05, 0x0e, 0x49, + 0x2e, 0x31, 0x0f, 0x0b, 0x22, 0xc8, 0x25, 0x4c, 0xa6, 0x2a, 0x2a, 0x5e, 0xc2, 0x31, 0xc6, 0x33, + 0x0c, 0x46, 0x23, 0x2c, 0x21, 0x25, 0x22, 0x0b, 0x48, 0x00, 0x2b, 0xc8, 0xcc, 0x2b, 0x55, 0x49, + 0x26, 0x53, 0x60, 0xc2, 0x36, 0x2e, 0x0b, 0x0b, 0x21, 0x47, 0x05, 0x52, 0x28, 0x02, 0x5c, 0x4c, + 0x20, 0x35, 0x56, 0x0f, 0x2f, 0x28, 0x07, 0x49, 0x07, 0x28, 0x36, 0x22, 0xc5, 0x2c, 0x25, 0x60, + 0x29, 0x22, 0x4e, 0x1a, 0x45, 0x3e, 0x31, 0x1f, 0x1b, 0x1b, 0x4c, 0x56, 0x01, 0x28, 0x1a, 0x23, +}; + +static const uint16_t mf_rlefont_php6ySCWY_dictionary_offsets[138] = { + 0x0000, 0x0001, 0x0003, 0x0004, 0x0008, 0x000b, 0x000d, 0x000f, + 0x0011, 0x0012, 0x0013, 0x0014, 0x0016, 0x0017, 0x0019, 0x001a, + 0x001b, 0x001c, 0x001e, 0x0022, 0x0024, 0x0027, 0x0029, 0x002b, + 0x002d, 0x002e, 0x0032, 0x0034, 0x0035, 0x0037, 0x0039, 0x003b, + 0x003c, 0x003d, 0x003f, 0x0040, 0x0044, 0x0046, 0x0048, 0x004a, + 0x004c, 0x004e, 0x0050, 0x0052, 0x0054, 0x0056, 0x0059, 0x005a, + 0x005c, 0x005d, 0x005e, 0x0060, 0x0062, 0x0063, 0x0065, 0x0067, + 0x0069, 0x006b, 0x006d, 0x006f, 0x0071, 0x0072, 0x0074, 0x0076, + 0x0078, 0x007a, 0x007c, 0x007e, 0x007f, 0x0081, 0x0083, 0x0084, + 0x0085, 0x0086, 0x0088, 0x0089, 0x008b, 0x008d, 0x008f, 0x0091, + 0x0093, 0x0096, 0x009b, 0x00a1, 0x00a3, 0x00a5, 0x00a8, 0x00af, + 0x00b1, 0x00b3, 0x00b5, 0x00b8, 0x00bd, 0x00bf, 0x00c1, 0x00c9, + 0x00cc, 0x00ce, 0x00d0, 0x00d3, 0x00dc, 0x00df, 0x00e7, 0x00e9, + 0x00f0, 0x00f2, 0x00f5, 0x00f8, 0x00fc, 0x00ff, 0x0104, 0x0108, + 0x010d, 0x0110, 0x0112, 0x0114, 0x0119, 0x011b, 0x011d, 0x011f, + 0x0121, 0x0127, 0x0129, 0x012e, 0x0130, 0x0135, 0x013b, 0x0140, + 0x0142, 0x0145, 0x014a, 0x014d, 0x0150, 0x0154, 0x0157, 0x015b, + 0x015e, 0x0160, +}; + +static const uint8_t mf_rlefont_php6ySCWY_glyph_data_0[1460] = { + 0x06, 0x00, 0x10, 0x02, 0x3c, 0x1b, 0x1b, 0x27, 0x01, 0x1f, 0x07, 0x10, 0x04, 0x38, 0x3f, 0x67, + 0x70, 0x06, 0x0c, 0x28, 0x43, 0x08, 0x10, 0x08, 0x00, 0x3c, 0xa0, 0x5a, 0x37, 0x07, 0x19, 0xcc, + 0x32, 0xa0, 0x5a, 0x37, 0x07, 0x60, 0xa6, 0x4c, 0xa6, 0x10, 0x08, 0x46, 0x1f, 0x5f, 0x56, 0x33, + 0x08, 0x22, 0x4e, 0x20, 0x4e, 0x20, 0x56, 0x49, 0x43, 0x20, 0x53, 0x20, 0x53, 0x22, 0x08, 0x33, + 0x43, 0x70, 0x10, 0x0c, 0x38, 0x55, 0x40, 0x21, 0x25, 0x0b, 0x54, 0x52, 0x03, 0x0a, 0x21, 0x0c, + 0x84, 0x26, 0x52, 0x03, 0x0a, 0x00, 0x82, 0x54, 0x55, 0x40, 0x57, 0x06, 0x64, 0x1e, 0x60, 0x03, + 0x3f, 0x00, 0x58, 0x29, 0x54, 0x35, 0x52, 0x00, 0x58, 0x29, 0x54, 0x0b, 0x2c, 0x00, 0x64, 0x1e, + 0x10, 0x08, 0x1a, 0x38, 0x05, 0x0e, 0x1e, 0x5f, 0x40, 0x04, 0x0e, 0x22, 0xcc, 0x53, 0x22, 0x44, + 0x49, 0x2f, 0x22, 0x4e, 0x00, 0x57, 0x07, 0x4c, 0x0e, 0x04, 0x21, 0x0e, 0x0c, 0x4c, 0x44, 0x67, + 0x07, 0x2d, 0x10, 0x02, 0x3c, 0x05, 0x87, 0x10, 0x03, 0x18, 0x9f, 0x6c, 0x0f, 0x1b, 0x1b, 0x27, + 0x6c, 0x9f, 0x10, 0x03, 0x5b, 0x65, 0x7e, 0x25, 0x9e, 0x26, 0x25, 0x28, 0x01, 0x2f, 0x10, 0x04, + 0x38, 0x09, 0x77, 0x4c, 0x06, 0x51, 0x07, 0x5f, 0x34, 0x08, 0x10, 0x05, 0x1a, 0x38, 0x1b, 0x99, + 0x6b, 0x10, 0x02, 0x1c, 0x04, 0x20, 0x0e, 0x10, 0x05, 0x5e, 0x2e, 0x33, 0x05, 0x10, 0x02, 0x1c, + 0x10, 0x08, 0x30, 0x18, 0x97, 0x0c, 0x28, 0x0b, 0x2c, 0x24, 0x08, 0x5c, 0x5f, 0x1d, 0x08, 0x5f, + 0x25, 0x0b, 0x5f, 0x29, 0x84, 0x22, 0x82, 0x10, 0x07, 0x38, 0x06, 0x51, 0x1e, 0x4c, 0x2c, 0x00, + 0x25, 0x4c, 0xa5, 0x4c, 0xa5, 0x4c, 0xa5, 0x4c, 0x2c, 0x00, 0x25, 0x4c, 0x06, 0x51, 0x1e, 0x10, + 0x04, 0x38, 0x5a, 0x6b, 0x9e, 0x10, 0x08, 0x00, 0x38, 0x0c, 0x33, 0x08, 0x20, 0x6d, 0x22, 0x02, + 0x0a, 0x51, 0x43, 0x22, 0x0b, 0x7e, 0x0e, 0x01, 0x21, 0x70, 0x37, 0x10, 0x08, 0x38, 0x93, 0x1e, + 0x22, 0x4e, 0x1a, 0x6d, 0x5f, 0x61, 0x3f, 0x20, 0x9c, 0x35, 0x22, 0x93, 0x1e, 0x10, 0x08, 0x26, + 0x38, 0x34, 0x5f, 0x01, 0x61, 0x3e, 0x29, 0x0f, 0x5a, 0x4c, 0x63, 0x0f, 0x07, 0x39, 0x4c, 0x05, + 0x48, 0x0d, 0x51, 0x07, 0x28, 0x6b, 0x10, 0x08, 0x38, 0x37, 0x06, 0x19, 0x1b, 0x33, 0x43, 0x20, + 0x9c, 0x29, 0x22, 0x93, 0x1e, 0x10, 0x08, 0x38, 0x56, 0x33, 0x06, 0x22, 0x4e, 0x20, 0x2d, 0x28, + 0xc2, 0x1e, 0x22, 0x2d, 0x1a, 0x9c, 0x29, 0x22, 0x88, 0x1e, 0x10, 0x08, 0x38, 0x37, 0x2d, 0x5f, + 0x35, 0x0d, 0x28, 0x08, 0x2d, 0x5f, 0x6f, 0x08, 0x5f, 0x35, 0x0c, 0x28, 0x08, 0x2d, 0x5f, 0x4a, + 0x08, 0x10, 0x08, 0x38, 0x56, 0x49, 0x2f, 0x7c, 0x29, 0x22, 0x84, 0x35, 0x22, 0x0b, 0x33, 0x8a, + 0x22, 0x84, 0x35, 0x7c, 0x29, 0x22, 0x56, 0x49, 0x2f, 0x10, 0x08, 0x38, 0x93, 0x36, 0x7c, 0x53, + 0x22, 0x52, 0x71, 0x44, 0x33, 0x6b, 0x20, 0x53, 0x22, 0x01, 0x33, 0x2f, 0x10, 0x02, 0x3b, 0x00, + 0x1f, 0x07, 0x10, 0x02, 0x3b, 0x0f, 0x05, 0x87, 0x10, 0x05, 0x00, 0x62, 0x78, 0x5f, 0x5a, 0x08, + 0x28, 0x5a, 0x08, 0x20, 0x5a, 0x08, 0x10, 0x06, 0x5b, 0x3c, 0x8f, 0x22, 0x3c, 0x8f, 0x10, 0x05, + 0x62, 0x5a, 0x08, 0x20, 0x78, 0x28, 0x78, 0x5f, 0x5a, 0x08, 0x10, 0x06, 0x5e, 0x01, 0x49, 0x3f, + 0x97, 0x97, 0x60, 0xb4, 0x3f, 0x24, 0x3c, 0x10, 0x0b, 0x18, 0x55, 0x37, 0x1e, 0x30, 0x2c, 0x46, + 0x25, 0x1a, 0xcc, 0x4f, 0xcb, 0xc5, 0xc8, 0x5c, 0x04, 0x4d, 0xc5, 0xc8, 0x5c, 0x04, 0x67, 0x53, + 0x1a, 0xcc, 0x4f, 0x33, 0x1e, 0x00, 0x2b, 0x27, 0x6c, 0x07, 0x51, 0x3f, 0x10, 0x08, 0x38, 0x88, + 0x36, 0x6a, 0x2a, 0x37, 0x75, 0x2b, 0x10, 0x08, 0x8d, 0x9a, 0x29, 0x22, 0xc5, 0x35, 0x60, 0xc2, + 0x8a, 0x22, 0xc5, 0x35, 0x19, 0x81, 0x33, 0x1e, 0x10, 0x08, 0x38, 0x56, 0x8f, 0x22, 0x6c, 0x0f, + 0x1b, 0x27, 0x6c, 0x56, 0x8f, 0x10, 0x08, 0x8d, 0x9a, 0x53, 0x75, 0x8c, 0x94, 0x10, 0x08, 0x38, + 0x37, 0x6e, 0x0f, 0x8f, 0x10, 0x08, 0x38, 0x37, 0x6e, 0x10, 0x08, 0x38, 0x88, 0x0f, 0x23, 0x6c, + 0xc5, 0x45, 0x5a, 0x23, 0x67, 0x71, 0x4e, 0x71, 0x88, 0x48, 0x10, 0x08, 0x3c, 0x2a, 0x8c, 0x37, + 0x19, 0x8c, 0x2b, 0x10, 0x02, 0x3c, 0x9e, 0x2b, 0x10, 0x06, 0x30, 0x18, 0x9e, 0x26, 0x25, 0x4c, + 0x05, 0x49, 0x2f, 0x10, 0x08, 0x5e, 0xc6, 0x5a, 0x05, 0x54, 0xc8, 0x4a, 0x08, 0x54, 0xcc, 0x65, + 0x0a, 0x22, 0xc0, 0x01, 0x60, 0xcc, 0x65, 0x0a, 0x22, 0xc8, 0x4a, 0x08, 0x22, 0xc6, 0x5a, 0x05, + 0x10, 0x06, 0x3c, 0x9e, 0x26, 0xc2, 0x05, 0x10, 0x09, 0x3c, 0x05, 0x26, 0x1d, 0x60, 0x59, 0x01, + 0x21, 0x65, 0x0f, 0x60, 0x59, 0x0b, 0x21, 0x0b, 0x0e, 0xe5, 0x2b, 0x57, 0x06, 0x57, 0x57, 0x46, + 0xcc, 0x0b, 0x0e, 0x0e, 0x0b, 0x39, 0x46, 0xcc, 0x65, 0x0e, 0x01, 0x39, 0x30, 0xc8, 0x05, 0x05, + 0x41, 0x10, 0x08, 0x3c, 0x08, 0x71, 0x48, 0x08, 0xa0, 0x42, 0x77, 0x23, 0x67, 0x80, 0x74, 0x21, + 0x80, 0x23, 0xe5, 0x34, 0x23, 0xc5, 0x34, 0x10, 0x08, 0x38, 0x93, 0x1e, 0x6a, 0x2a, 0x90, 0x93, + 0x1e, 0x10, 0x08, 0x8d, 0x9a, 0x4b, 0x75, 0x26, 0x4b, 0x60, 0xc2, 0x43, 0x22, 0x6b, 0x10, 0x08, + 0x38, 0x93, 0x1e, 0x6a, 0x2a, 0x00, 0x71, 0x4e, 0x00, 0x0d, 0x00, 0x53, 0x22, 0x44, 0x49, 0x43, + 0x70, 0x10, 0x08, 0x8d, 0x9a, 0x4b, 0x75, 0x94, 0x30, 0xcc, 0x50, 0x0f, 0x07, 0x22, 0xc6, 0x61, + 0x07, 0x10, 0x08, 0x38, 0x08, 0x3a, 0x02, 0x7c, 0x24, 0x52, 0x20, 0x44, 0x49, 0x43, 0x20, 0x6d, + 0x22, 0x02, 0x3a, 0x08, 0x10, 0x08, 0x38, 0x0d, 0x3a, 0x0d, 0x70, 0x9e, 0x10, 0x08, 0x3c, 0x8c, + 0x8c, 0x90, 0x88, 0x36, 0x10, 0x08, 0x38, 0x0c, 0x0b, 0x1a, 0x5d, 0x01, 0x60, 0x57, 0x02, 0x21, + 0x79, 0x22, 0x65, 0x08, 0x00, 0x05, 0x2d, 0x4c, 0x09, 0x0e, 0x00, 0x0c, 0x0c, 0x24, 0x6f, 0x34, + 0x06, 0x5f, 0x0c, 0x59, 0x01, 0x5f, 0x06, 0x42, 0x10, 0x0a, 0x38, 0x0d, 0x0a, 0x21, 0x0d, 0x0e, + 0x21, 0x09, 0x0e, 0x30, 0x5d, 0x00, 0x6f, 0x5c, 0x00, 0x0d, 0x09, 0x30, 0x04, 0x5c, 0x5a, 0x79, + 0x6f, 0x05, 0x54, 0x0e, 0x08, 0x0c, 0x0b, 0x0a, 0x0d, 0x5a, 0x01, 0x30, 0x4f, 0x0e, 0x0f, 0x06, + 0x05, 0x59, 0x0b, 0x60, 0x05, 0x48, 0x02, 0x01, 0x48, 0x06, 0x60, 0x01, 0x0f, 0x0c, 0x21, 0x0b, + 0x0f, 0x02, 0x10, 0x08, 0x38, 0x82, 0x35, 0x0c, 0x4c, 0x0c, 0x0d, 0x50, 0x2c, 0x22, 0x25, 0x0e, + 0x5c, 0x5f, 0x07, 0x3f, 0x5f, 0x25, 0x0e, 0x5c, 0x24, 0x0c, 0x0d, 0x50, 0x2c, 0x60, 0x82, 0x35, + 0x0c, 0x10, 0x08, 0x3c, 0x2a, 0x90, 0x44, 0x49, 0x43, 0x70, 0x1b, 0x10, 0x08, 0x38, 0x37, 0x2d, + 0x5f, 0x08, 0x3f, 0x24, 0x4f, 0x3f, 0x24, 0x50, 0x3f, 0x24, 0x29, 0x3f, 0x5f, 0x0d, 0x3f, 0x28, + 0x37, 0x2d, 0x10, 0x03, 0x21, 0x1f, 0x5c, 0x28, 0x6b, 0x9e, 0x2b, 0x5c, 0x10, 0x08, 0x38, 0x82, + 0x28, 0x0c, 0x84, 0x4c, 0x25, 0x0b, 0x20, 0x1d, 0x7e, 0x08, 0x5c, 0x20, 0x0b, 0x2c, 0x5f, 0x35, + 0x0c, 0x10, 0x03, 0x5b, 0x4a, 0x6b, 0x9e, 0x2b, 0x28, 0x04, 0x48, 0x10, 0x05, 0x21, 0x07, 0x08, + 0x28, 0x5a, 0x42, 0x70, 0x08, 0x57, 0x01, 0x24, 0x08, 0x21, 0x06, 0x01, 0x10, 0x06, 0x5b, 0x1c, + 0x8f, 0x10, 0x02, 0x38, 0x0d, 0x7e, 0x0a, 0x7e, 0x06, 0x07, 0x10, 0x06, 0x2e, 0x91, 0x77, 0x5f, + 0x25, 0x24, 0x34, 0x7f, 0x10, 0x06, 0x3c, 0x1b, 0x48, 0x1e, 0x8b, 0x22, 0xc8, 0x25, 0x66, 0x2f, + 0x10, 0x06, 0x72, 0x24, 0x6c, 0x0f, 0x27, 0x6c, 0x56, 0x49, 0x10, 0x06, 0x26, 0x3c, 0x27, 0x3e, + 0x93, 0x68, 0x45, 0x86, 0x56, 0x49, 0x10, 0x06, 0x2e, 0x5d, 0x0f, 0x2f, 0x76, 0x6c, 0x08, 0x49, + 0x0d, 0x10, 0x03, 0x38, 0x07, 0x36, 0x28, 0x0e, 0x7e, 0x59, 0x20, 0x6b, 0x1b, 0x10, 0x06, 0x72, + 0x68, 0x45, 0x86, 0x93, 0x20, 0x65, 0x60, 0xb4, 0x2f, 0x10, 0x06, 0x3c, 0x1b, 0x48, 0x1e, 0x8b, + 0x9d, 0x10, 0x02, 0x3c, 0x05, 0x20, 0x04, 0x9e, 0x10, 0x02, 0x00, 0x3c, 0x20, 0x18, 0x0e, 0x9e, + 0x26, 0x56, 0x20, 0x1e, 0x10, 0x06, 0x3c, 0x28, 0xc8, 0x01, 0x02, 0x01, 0x54, 0xcc, 0x29, 0x3d, + 0x32, 0x4b, 0x52, 0x66, 0x03, 0x70, 0x73, 0x4e, 0x10, 0x08, 0x5e, 0x3c, 0x59, 0x0b, 0x0e, 0x1e, + 0x30, 0xcc, 0x03, 0x2d, 0x53, 0x19, 0xc8, 0x23, 0xcd, 0x74, 0xa8, 0x10, 0x06, 0x2e, 0x49, 0x2f, + 0x8b, 0x9d, 0x10, 0x06, 0x2e, 0x98, 0x24, 0x2c, 0x25, 0x45, 0x3e, 0x9b, 0x1a, 0x98, 0x10, 0x06, + 0x2e, 0x49, 0x2f, 0x8b, 0x22, 0xc8, 0x25, 0x66, 0x1e, 0x00, 0x32, 0x1b, 0x10, 0x06, 0x72, 0x68, + 0x45, 0x86, 0x93, 0x1f, 0x1b, 0x10, 0x06, 0x2e, 0x49, 0x1e, 0x22, 0xc8, 0x08, 0x0d, 0x00, 0x32, + 0x1b, 0x10, 0x06, 0x2e, 0x09, 0x48, 0x59, 0x24, 0x1e, 0x20, 0x09, 0x49, 0x96, 0x0a, 0x49, 0x52, + 0x10, 0x03, 0x21, 0x18, 0x1b, 0x20, 0x0b, 0x8a, 0x20, 0x6b, 0x1b, 0x10, 0x06, 0x89, 0x85, 0x25, + 0x24, 0x98, 0x10, 0x07, 0x95, 0x22, 0x03, 0x5c, 0x4f, 0x0c, 0x4c, 0x4f, 0x0c, 0x03, 0x5c, 0x24, + 0x6f, 0x0d, 0x0b, 0x28, 0x82, 0x10, 0x0a, 0x2e, 0x0c, 0x09, 0x00, 0x4a, 0x07, 0x00, 0x1d, 0x01, + 0x30, 0x55, 0x01, 0x0a, 0x59, 0x00, 0x0b, 0x0a, 0x54, 0x65, 0x34, 0x5a, 0x08, 0x5c, 0x60, 0x09, + 0x59, 0x00, 0x0b, 0x0f, 0x0d, 0x22, 0x6f, 0x08, 0x00, 0x4a, 0x07, 0x10, 0x06, 0x2e, 0x0a, 0x0e, + 0x01, 0x0a, 0x84, 0x54, 0x35, 0x0d, 0x2d, 0x5f, 0x05, 0x42, 0x5f, 0x35, 0x0d, 0x2d, 0x4c, 0x4f, + 0x0e, 0x50, 0x84, 0x10, 0x07, 0x95, 0x22, 0x03, 0x2d, 0x4f, 0x0b, 0x24, 0x09, 0x0b, 0x02, 0x2d, + 0x24, 0x47, 0x0c, 0x09, 0x28, 0x09, 0x2c, 0x24, 0x02, 0x2f, 0x5f, 0x04, 0x42, 0x10, 0x06, 0x2e, + 0x33, 0x5c, 0x5f, 0x06, 0x8a, 0x01, 0x24, 0x09, 0x3f, 0x5f, 0x0b, 0x42, 0x24, 0xc0, 0x5c, 0x10, + 0x04, 0x00, 0x18, 0x9f, 0x6c, 0x6b, 0x20, 0x63, 0x1b, 0x27, 0x6c, 0x9f, 0x10, 0x02, 0x21, 0x9e, + 0x2b, 0x1b, 0x1b, 0x10, 0x04, 0x5b, 0x65, 0x7e, 0x25, 0x1b, 0x27, 0x3d, 0x20, 0x6b, 0x20, 0x25, + 0x28, 0x01, 0x2f, 0x10, 0x06, 0x38, 0x05, 0x0e, 0x58, 0x02, 0x08, 0x32, 0x8f, 0x4c, 0x08, 0x01, + 0x05, 0x0c, 0x36, 0x10, +}; + +static const uint16_t mf_rlefont_php6ySCWY_glyph_offsets_0[95] = { + 0x0000, 0x0003, 0x000c, 0x0017, 0x002a, 0x0043, 0x0071, 0x0093, + 0x0098, 0x00a3, 0x00af, 0x00bb, 0x00c2, 0x00c8, 0x00ce, 0x00d1, + 0x00e8, 0x0100, 0x0106, 0x011c, 0x012e, 0x0147, 0x0156, 0x016b, + 0x0182, 0x019a, 0x01ad, 0x01b3, 0x01b9, 0x01c7, 0x01cf, 0x01db, + 0x01e8, 0x020d, 0x0217, 0x0229, 0x0236, 0x023e, 0x0245, 0x024a, + 0x025b, 0x0264, 0x0269, 0x0274, 0x0291, 0x0298, 0x02c2, 0x02d8, + 0x02e2, 0x02ef, 0x0302, 0x0312, 0x0325, 0x032d, 0x0335, 0x0359, + 0x0393, 0x03b2, 0x03bc, 0x03d3, 0x03dd, 0x03f2, 0x03fc, 0x040d, + 0x0412, 0x041b, 0x0425, 0x0431, 0x043b, 0x0447, 0x0452, 0x045e, + 0x046a, 0x0472, 0x0479, 0x0485, 0x0264, 0x0499, 0x04ac, 0x04b3, + 0x04bf, 0x04cd, 0x04d6, 0x04e2, 0x04f1, 0x04fc, 0x0503, 0x0516, + 0x053c, 0x0554, 0x056e, 0x0580, 0x058d, 0x0594, 0x05a4, +}; + +static const uint8_t mf_rlefont_php6ySCWY_glyph_data_1[1341] = { + 0x06, 0x00, 0x10, 0x02, 0x3c, 0x7e, 0x01, 0x9e, 0x10, 0x00, 0x02, 0x3c, 0x7e, 0x0f, 0x7e, 0x0d, + 0x06, 0x28, 0x18, 0x0d, 0x1b, 0x10, 0x05, 0x18, 0x61, 0x5c, 0x5f, 0x84, 0x24, 0x0d, 0x0f, 0x43, + 0x5f, 0x0b, 0x01, 0x29, 0x5f, 0x52, 0x35, 0x5f, 0x06, 0x0d, 0x8a, 0x97, 0x27, 0x0c, 0x5f, 0x4a, + 0x42, 0x10, 0x06, 0x38, 0x09, 0x48, 0x42, 0x24, 0x59, 0x67, 0x3e, 0x59, 0x67, 0x3e, 0x09, 0x48, + 0x42, 0x10, 0x08, 0x00, 0x62, 0x78, 0x63, 0x3d, 0x60, 0x83, 0x22, 0x83, 0x4c, 0x83, 0x10, 0x06, + 0x38, 0x09, 0x48, 0x42, 0x66, 0x09, 0x67, 0x32, 0x2d, 0x04, 0x3e, 0x09, 0x48, 0x42, 0x10, 0x04, + 0x5e, 0x4f, 0x3f, 0x00, 0x70, 0x47, 0x5f, 0x4f, 0x3f, 0x10, 0x05, 0x62, 0x41, 0x99, 0x0f, 0x27, + 0x7e, 0x28, 0xc0, 0x05, 0x10, 0x03, 0x62, 0x0b, 0x42, 0x28, 0x51, 0x10, 0x03, 0x62, 0x0e, 0x42, + 0x28, 0x0e, 0x8a, 0x10, 0x02, 0x3c, 0x05, 0x87, 0x10, 0x02, 0x3b, 0x10, 0x06, 0x38, 0x05, 0xf9, + 0x05, 0x4c, 0x18, 0x5d, 0x0f, 0x2f, 0x76, 0x6c, 0x08, 0x49, 0x0d, 0x10, 0x0d, 0x38, 0x0b, 0x08, + 0x26, 0x0b, 0x00, 0x64, 0x1e, 0xd4, 0x42, 0xcc, 0x58, 0x29, 0xd4, 0x34, 0x07, 0xe8, 0x58, 0x29, + 0x00, 0xcc, 0x34, 0x06, 0xf6, 0x64, 0x1e, 0x21, 0xc8, 0x34, 0x4a, 0x60, 0xc6, 0x5d, 0x67, 0x91, + 0xc5, 0xc5, 0x34, 0x10, 0x08, 0x62, 0x83, 0x4c, 0x78, 0x63, 0x2c, 0x60, 0x78, 0x63, 0x2c, 0x54, + 0x83, 0x10, 0x04, 0x38, 0x7d, 0x00, 0x04, 0x0b, 0x28, 0x03, 0x57, 0x28, 0x91, 0x09, 0x10, 0x04, + 0x38, 0x7d, 0x0b, 0x3f, 0x28, 0x0b, 0x3f, 0x22, 0xb4, 0x0d, 0x10, 0x04, 0x38, 0x25, 0x0e, 0x28, + 0x02, 0x05, 0x0e, 0x28, 0x25, 0x0e, 0x28, 0x0d, 0x48, 0x20, 0x04, 0x0b, 0x28, 0x04, 0x34, 0x28, + 0x91, 0x10, 0x06, 0x38, 0xc6, 0x38, 0x66, 0x0a, 0x97, 0x97, 0x4c, 0x01, 0x49, 0x3f, 0x10, 0x08, + 0x38, 0x93, 0x1e, 0x6a, 0x2a, 0x37, 0x75, 0x2b, 0x10, 0x08, 0x38, 0x37, 0x01, 0x19, 0x1b, 0x33, + 0x43, 0x19, 0x81, 0x81, 0x33, 0x1e, 0x10, 0x08, 0x8d, 0x9a, 0x29, 0x22, 0xc5, 0x35, 0x60, 0xc2, + 0x8a, 0x22, 0xc5, 0x35, 0x19, 0x81, 0x33, 0x1e, 0x10, 0x06, 0x8d, 0x05, 0x32, 0x9e, 0x10, 0x09, + 0x00, 0x38, 0x05, 0x51, 0x36, 0x4c, 0x3d, 0x21, 0x63, 0x4c, 0xa5, 0x4c, 0xa5, 0x4c, 0xa5, 0x32, + 0x71, 0x48, 0x37, 0x46, 0xcc, 0x2b, 0x10, 0x08, 0x38, 0x37, 0x6e, 0x0f, 0x8f, 0x10, 0x0a, 0x38, + 0x35, 0x0c, 0xe8, 0x29, 0x84, 0x1a, 0x03, 0x42, 0xf6, 0x09, 0x4e, 0x60, 0x57, 0x57, 0x57, 0x06, + 0x4c, 0x0c, 0x49, 0x0c, 0x4c, 0x57, 0x57, 0x57, 0x06, 0x60, 0x03, 0x42, 0xf6, 0x09, 0x4e, 0x30, + 0x35, 0x52, 0xf6, 0x29, 0x84, 0x10, 0x08, 0x38, 0x08, 0x33, 0x42, 0x20, 0x6d, 0x5f, 0x61, 0x3f, + 0x20, 0x29, 0x97, 0x22, 0x08, 0x3a, 0x08, 0x10, 0x08, 0x38, 0xc5, 0x34, 0x60, 0xc6, 0x34, 0x23, + 0x4d, 0x80, 0x23, 0x67, 0x80, 0x74, 0x80, 0x00, 0x74, 0x77, 0x74, 0x08, 0xd4, 0x10, 0x08, 0x1a, + 0x47, 0x05, 0x24, 0x03, 0x46, 0x03, 0x22, 0xc5, 0x61, 0x60, 0xc6, 0x61, 0x23, 0x4d, 0x61, 0x34, + 0x30, 0xcc, 0x61, 0x08, 0x74, 0x61, 0x08, 0x00, 0x74, 0x77, 0x74, 0x08, 0xd4, 0x10, 0x08, 0x5e, + 0xc6, 0x5a, 0x05, 0x54, 0xc8, 0x4a, 0x08, 0x54, 0xcc, 0x65, 0x0a, 0x22, 0xc0, 0x01, 0x60, 0xcc, + 0x65, 0x0a, 0x22, 0xc8, 0x4a, 0x08, 0x22, 0xc6, 0x5a, 0x05, 0x10, 0x08, 0x21, 0x38, 0x93, 0x4c, + 0x02, 0x5c, 0x41, 0x4c, 0x55, 0xec, 0x4c, 0x0b, 0x0a, 0xa0, 0x01, 0x1e, 0xa0, 0x1d, 0x02, 0xa0, + 0x09, 0x0d, 0xd4, 0x10, 0x09, 0x3c, 0x05, 0x26, 0x1d, 0x60, 0x59, 0x01, 0x21, 0x65, 0x0f, 0x60, + 0x59, 0x0b, 0x21, 0x0b, 0x0e, 0xe5, 0x2b, 0x57, 0x06, 0x57, 0x57, 0x46, 0xcc, 0x0b, 0x0e, 0x0e, + 0x0b, 0x39, 0x46, 0xcc, 0x65, 0x0e, 0x01, 0x39, 0x30, 0xc8, 0x05, 0x05, 0x41, 0x10, 0x08, 0x3c, + 0x2a, 0x8c, 0x37, 0x19, 0x8c, 0x2b, 0x10, 0x08, 0x38, 0x93, 0x1e, 0x6a, 0x2a, 0x90, 0x93, 0x1e, + 0x10, 0x08, 0x3c, 0x37, 0x75, 0x8c, 0x8c, 0x2b, 0x10, 0x08, 0x8d, 0x9a, 0x4b, 0x75, 0x26, 0x4b, + 0x60, 0xc2, 0x43, 0x22, 0x6b, 0x10, 0x08, 0x38, 0x56, 0x8f, 0x22, 0x6c, 0x0f, 0x1b, 0x27, 0x6c, + 0x56, 0x8f, 0x10, 0x08, 0x38, 0x0d, 0x3a, 0x0d, 0x70, 0x9e, 0x10, 0x08, 0x38, 0x09, 0x0f, 0x05, + 0x21, 0x0c, 0x0d, 0x4c, 0x0b, 0x2d, 0x07, 0x2d, 0x4c, 0x35, 0x0e, 0x79, 0x5f, 0x47, 0x84, 0x22, + 0x05, 0x5c, 0x5f, 0x65, 0x08, 0x5f, 0x04, 0x3f, 0x10, 0x0a, 0x38, 0x44, 0x3a, 0x43, 0x54, 0x40, + 0x41, 0x0d, 0x00, 0x4b, 0x30, 0xa6, 0x0d, 0x41, 0x54, 0x40, 0x41, 0x0d, 0x00, 0x4b, 0x54, 0x44, + 0x3a, 0x40, 0x24, 0x6b, 0x10, 0x08, 0x38, 0x82, 0x35, 0x0c, 0x4c, 0x0c, 0x0d, 0x50, 0x2c, 0x22, + 0x25, 0x0e, 0x5c, 0x5f, 0x07, 0x3f, 0x5f, 0x25, 0x0e, 0x5c, 0x24, 0x0c, 0x0d, 0x50, 0x2c, 0x60, + 0x82, 0x35, 0x0c, 0x10, 0x09, 0x3c, 0x8c, 0x8c, 0x8c, 0x37, 0x6b, 0x10, 0x08, 0x3c, 0x8c, 0x00, + 0x71, 0x4e, 0x71, 0x44, 0x3a, 0x1b, 0x10, 0x0a, 0x5e, 0xc6, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x31, + 0xf2, 0x37, 0x10, 0x0a, 0x5e, 0xa6, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x21, 0xc5, 0xb4, 0x37, 0x6b, + 0x10, 0x09, 0x5e, 0x07, 0x48, 0x1b, 0x69, 0x75, 0x94, 0x10, 0x0a, 0x5e, 0xe6, 0x2b, 0x46, 0xc8, + 0x2b, 0x30, 0xc2, 0x43, 0xe6, 0x2b, 0x02, 0x05, 0x09, 0x0d, 0x0f, 0x0d, 0x39, 0x54, 0xc5, 0x02, + 0xf9, 0x54, 0xc5, 0x25, 0x39, 0x30, 0xc2, 0x36, 0x39, 0x10, 0x08, 0x3c, 0x1b, 0x69, 0x75, 0x94, + 0x10, 0x08, 0x38, 0x0c, 0x49, 0x59, 0x7e, 0x53, 0x1f, 0x5f, 0x0d, 0x48, 0x6b, 0x20, 0x53, 0x22, + 0x0c, 0x33, 0x2f, 0x10, 0x0b, 0x38, 0x0d, 0x21, 0x88, 0x1e, 0x26, 0xc8, 0x2c, 0x21, 0x25, 0x92, + 0x49, 0x2b, 0x92, 0x21, 0x2c, 0x21, 0x25, 0x30, 0x0d, 0x21, 0x88, 0x1e, 0x10, 0x08, 0x38, 0x88, + 0x0f, 0x23, 0x4e, 0x71, 0x67, 0x71, 0x4e, 0x71, 0x88, 0x48, 0x4c, 0x07, 0x8a, 0x01, 0x00, 0x23, + 0x07, 0x3f, 0xec, 0x10, 0x06, 0x2e, 0x91, 0x77, 0x5f, 0x25, 0x24, 0x34, 0x7f, 0x10, 0x06, 0x5e, + 0x4f, 0x48, 0x42, 0x00, 0x32, 0x01, 0x1a, 0x66, 0x1e, 0x8b, 0x24, 0x9b, 0x1a, 0x98, 0x10, 0x06, + 0x2e, 0x49, 0x42, 0x45, 0x0c, 0x66, 0x8a, 0x45, 0x0c, 0x66, 0x42, 0x10, 0x06, 0x2e, 0x0a, 0x49, + 0x96, 0x09, 0x49, 0x52, 0x32, 0x06, 0x20, 0x09, 0x48, 0x59, 0x10, 0x06, 0x72, 0x68, 0x45, 0x86, + 0x93, 0x20, 0x65, 0x60, 0xb4, 0x2f, 0x10, 0x06, 0x2e, 0x5d, 0x0f, 0x2f, 0x76, 0x6c, 0x08, 0x49, + 0x0d, 0x10, 0x09, 0x00, 0x62, 0x97, 0x0a, 0x39, 0x4f, 0x84, 0x46, 0x6f, 0x1d, 0x05, 0x2d, 0x22, + 0x4f, 0x48, 0x3f, 0x4c, 0x6f, 0x1d, 0x05, 0x2d, 0x60, 0x35, 0x0a, 0x39, 0x4f, 0x84, 0x10, 0x06, + 0x2e, 0x91, 0x3f, 0x27, 0x0c, 0x5f, 0x57, 0x8a, 0x27, 0x0c, 0x24, 0x91, 0x8a, 0x10, 0x06, 0x2e, + 0xd5, 0x9d, 0x46, 0x0e, 0x01, 0x02, 0x0b, 0x3e, 0x56, 0x79, 0x0e, 0x10, 0x06, 0x21, 0x3c, 0x28, + 0x06, 0x1a, 0x06, 0x9d, 0x1a, 0xc8, 0x02, 0x3e, 0x2f, 0x56, 0x3e, 0x55, 0x79, 0x0d, 0x10, 0x06, + 0x2e, 0x67, 0x50, 0x4e, 0x32, 0x50, 0x3d, 0x66, 0x03, 0x70, 0x73, 0x4e, 0x10, 0x06, 0x00, 0x2e, + 0x09, 0x51, 0x24, 0x6f, 0x02, 0x00, 0x3e, 0x06, 0x0d, 0x21, 0x3e, 0x09, 0x0a, 0x21, 0x3e, 0x0c, + 0x07, 0x41, 0x10, 0x07, 0x5e, 0x3c, 0x05, 0x21, 0x1d, 0x4c, 0x59, 0x02, 0x25, 0x0f, 0x32, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0f, 0x32, 0x25, 0x0e, 0x47, 0x54, 0xcc, 0x05, 0x05, 0x39, 0x10, 0x06, 0x89, + 0x26, 0xa6, 0x4c, 0xc2, 0x9d, 0x10, 0x06, 0x2e, 0x98, 0x24, 0x2c, 0x25, 0x45, 0x3e, 0x9b, 0x1a, + 0x98, 0x10, 0x06, 0x2e, 0x49, 0x2f, 0x8b, 0x9d, 0x10, 0x06, 0x2e, 0x49, 0x2f, 0x8b, 0x22, 0xc8, + 0x25, 0x66, 0x1e, 0x00, 0x32, 0x1b, 0x10, 0x06, 0x72, 0x24, 0x6c, 0x0f, 0x27, 0x6c, 0x56, 0x49, + 0x10, 0x06, 0x5e, 0x8d, 0x28, 0x6b, 0x1b, 0x10, 0x07, 0x95, 0x22, 0x03, 0x2d, 0x4f, 0x0b, 0x24, + 0x09, 0x0b, 0x02, 0x2d, 0x24, 0x47, 0x0c, 0x09, 0x28, 0x09, 0x2c, 0x24, 0x02, 0x2f, 0x5f, 0x04, + 0x42, 0x10, 0x08, 0x72, 0x2f, 0x22, 0x2c, 0x67, 0x25, 0x19, 0xc8, 0x23, 0x2c, 0x67, 0x25, 0x22, + 0x56, 0x49, 0x2f, 0x70, 0x1b, 0x10, 0x06, 0x2e, 0x0a, 0x0e, 0x01, 0x0a, 0x84, 0x54, 0x35, 0x0d, + 0x2d, 0x5f, 0x05, 0x42, 0x5f, 0x35, 0x0d, 0x2d, 0x4c, 0x4f, 0x0e, 0x50, 0x84, 0x10, 0x07, 0x89, + 0x85, 0x00, 0x3e, 0x93, 0x6b, 0x10, 0x06, 0x2e, 0xe5, 0x86, 0x56, 0x49, 0x1b, 0x10, 0x08, 0x2e, + 0xcd, 0x74, 0xe8, 0x74, 0xc8, 0x23, 0x4e, 0x03, 0x2d, 0x00, 0x23, 0x55, 0x8a, 0x49, 0x10, 0x08, + 0x2e, 0xad, 0x4c, 0xad, 0x4c, 0xad, 0x4c, 0x4e, 0x6f, 0x01, 0x0f, 0x4c, 0x55, 0x0e, 0x91, 0x6b, + 0x10, 0x07, 0x27, 0x62, 0x1d, 0x6b, 0x7b, 0x49, 0x1e, 0x10, 0x08, 0x2e, 0x67, 0x71, 0x8a, 0x0b, + 0x58, 0x74, 0x49, 0x0d, 0x74, 0x21, 0x29, 0x74, 0x48, 0x2f, 0x39, 0x10, 0x06, 0x2e, 0x6b, 0x7b, + 0x49, 0x1e, 0x10, 0x06, 0x2e, 0x51, 0x42, 0x20, 0x01, 0x3e, 0x4f, 0x49, 0x20, 0x01, 0x3e, 0x51, + 0x3f, 0x10, 0x09, 0x2e, 0x4d, 0x98, 0x30, 0xc8, 0x9b, 0x49, 0x31, 0xc8, 0x9b, 0x4d, 0x98, 0x10, + 0x06, 0x2e, 0x34, 0x7f, 0x5f, 0x0b, 0x0e, 0x02, 0x3e, 0x08, 0x2d, 0x39, 0x10, +}; + +static const uint16_t mf_rlefont_php6ySCWY_glyph_offsets_1[96] = { + 0x0000, 0x0003, 0x0009, 0x0009, 0x0009, 0x0009, 0x000a, 0x0016, + 0x0009, 0x0032, 0x0009, 0x0042, 0x0009, 0x0009, 0x004f, 0x0009, + 0x005f, 0x006a, 0x0075, 0x007c, 0x0084, 0x0009, 0x0009, 0x0089, + 0x008c, 0x009c, 0x005f, 0x00c4, 0x00d2, 0x00df, 0x00eb, 0x0102, + 0x010f, 0x0119, 0x0127, 0x0139, 0x013f, 0x0157, 0x015e, 0x0186, + 0x0198, 0x01ae, 0x01ce, 0x01eb, 0x0204, 0x022e, 0x0237, 0x0241, + 0x0249, 0x0256, 0x0263, 0x026b, 0x0289, 0x02a5, 0x02c4, 0x02cc, + 0x02d7, 0x02e3, 0x02f1, 0x02fa, 0x031a, 0x0321, 0x0334, 0x034d, + 0x0364, 0x036e, 0x037f, 0x038c, 0x039b, 0x03a7, 0x03b2, 0x03cf, + 0x03de, 0x03ec, 0x03ff, 0x040d, 0x0423, 0x043e, 0x0446, 0x0452, + 0x0459, 0x0467, 0x0471, 0x0478, 0x0492, 0x04a6, 0x04be, 0x04c6, + 0x04ce, 0x04df, 0x04f1, 0x04fa, 0x050c, 0x0513, 0x0522, 0x0530, +}; + +static const uint8_t mf_rlefont_php6ySCWY_glyph_data_2[17] = { + 0x05, 0x21, 0x07, 0x08, 0x28, 0x5a, 0x42, 0x70, 0x08, 0x57, 0x01, 0x24, 0x08, 0x21, 0x06, 0x01, + 0x10, +}; + +static const uint16_t mf_rlefont_php6ySCWY_glyph_offsets_2[1] = { + 0x0000, +}; + +static const uint8_t mf_rlefont_php6ySCWY_glyph_data_3[16] = { + 0x06, 0x38, 0x05, 0x0e, 0x58, 0x02, 0x08, 0x32, 0x8f, 0x4c, 0x08, 0x01, 0x05, 0x0c, 0x36, 0x10, +}; + +static const uint16_t mf_rlefont_php6ySCWY_glyph_offsets_3[1] = { + 0x0000, +}; + +static const uint8_t mf_rlefont_php6ySCWY_glyph_data_4[1096] = { + 0x08, 0xac, 0x4c, 0x18, 0x37, 0x6e, 0x0f, 0x8f, 0x10, 0x00, 0x08, 0x38, 0x93, 0x1e, 0x6a, 0x2a, + 0x37, 0x75, 0x2b, 0x10, 0x08, 0x38, 0x37, 0x01, 0x19, 0x1b, 0x33, 0x43, 0x19, 0x81, 0x81, 0x33, + 0x1e, 0x10, 0x08, 0x8d, 0x9a, 0x29, 0x22, 0xc5, 0x35, 0x60, 0xc2, 0x8a, 0x22, 0xc5, 0x35, 0x19, + 0x81, 0x33, 0x1e, 0x10, 0x06, 0x8d, 0x05, 0x32, 0x9e, 0x10, 0x09, 0x00, 0x38, 0x05, 0x51, 0x36, + 0x4c, 0x3d, 0x21, 0x63, 0x4c, 0xa5, 0x4c, 0xa5, 0x4c, 0xa5, 0x32, 0x71, 0x48, 0x37, 0x46, 0xcc, + 0x2b, 0x10, 0x08, 0x38, 0x37, 0x6e, 0x0f, 0x8f, 0x10, 0x0a, 0x38, 0x35, 0x0c, 0xe8, 0x29, 0x84, + 0x1a, 0x03, 0x42, 0xf6, 0x09, 0x4e, 0x60, 0x57, 0x57, 0x57, 0x06, 0x4c, 0x0c, 0x49, 0x0c, 0x4c, + 0x57, 0x57, 0x57, 0x06, 0x60, 0x03, 0x42, 0xf6, 0x09, 0x4e, 0x30, 0x35, 0x52, 0xf6, 0x29, 0x84, + 0x10, 0x08, 0x38, 0x08, 0x33, 0x42, 0x20, 0x6d, 0x5f, 0x61, 0x3f, 0x20, 0x29, 0x97, 0x22, 0x08, + 0x3a, 0x08, 0x10, 0x08, 0x38, 0xc5, 0x34, 0x60, 0xc6, 0x34, 0x23, 0x4d, 0x80, 0x23, 0x67, 0x80, + 0x74, 0x80, 0x00, 0x74, 0x77, 0x74, 0x08, 0xd4, 0x10, 0x08, 0x1a, 0x47, 0x05, 0x24, 0x03, 0x46, + 0x03, 0x22, 0xc5, 0x61, 0x60, 0xc6, 0x61, 0x23, 0x4d, 0x61, 0x34, 0x30, 0xcc, 0x61, 0x08, 0x74, + 0x61, 0x08, 0x00, 0x74, 0x77, 0x74, 0x08, 0xd4, 0x10, 0x08, 0x5e, 0xc6, 0x5a, 0x05, 0x54, 0xc8, + 0x4a, 0x08, 0x54, 0xcc, 0x65, 0x0a, 0x22, 0xc0, 0x01, 0x60, 0xcc, 0x65, 0x0a, 0x22, 0xc8, 0x4a, + 0x08, 0x22, 0xc6, 0x5a, 0x05, 0x10, 0x08, 0x21, 0x38, 0x93, 0x4c, 0x02, 0x5c, 0x41, 0x4c, 0x55, + 0xec, 0x4c, 0x0b, 0x0a, 0xa0, 0x01, 0x1e, 0xa0, 0x1d, 0x02, 0xa0, 0x09, 0x0d, 0xd4, 0x10, 0x09, + 0x3c, 0x05, 0x26, 0x1d, 0x60, 0x59, 0x01, 0x21, 0x65, 0x0f, 0x60, 0x59, 0x0b, 0x21, 0x0b, 0x0e, + 0xe5, 0x2b, 0x57, 0x06, 0x57, 0x57, 0x46, 0xcc, 0x0b, 0x0e, 0x0e, 0x0b, 0x39, 0x46, 0xcc, 0x65, + 0x0e, 0x01, 0x39, 0x30, 0xc8, 0x05, 0x05, 0x41, 0x10, 0x08, 0x3c, 0x2a, 0x8c, 0x37, 0x19, 0x8c, + 0x2b, 0x10, 0x08, 0x38, 0x93, 0x1e, 0x6a, 0x2a, 0x90, 0x93, 0x1e, 0x10, 0x08, 0x3c, 0x37, 0x75, + 0x8c, 0x8c, 0x2b, 0x10, 0x08, 0x8d, 0x9a, 0x4b, 0x75, 0x26, 0x4b, 0x60, 0xc2, 0x43, 0x22, 0x6b, + 0x10, 0x08, 0x38, 0x56, 0x8f, 0x22, 0x6c, 0x0f, 0x1b, 0x27, 0x6c, 0x56, 0x8f, 0x10, 0x08, 0x38, + 0x0d, 0x3a, 0x0d, 0x70, 0x9e, 0x10, 0x08, 0x38, 0x09, 0x0f, 0x05, 0x21, 0x0c, 0x0d, 0x4c, 0x0b, + 0x2d, 0x07, 0x2d, 0x4c, 0x35, 0x0e, 0x79, 0x5f, 0x47, 0x84, 0x22, 0x05, 0x5c, 0x5f, 0x65, 0x08, + 0x5f, 0x04, 0x3f, 0x10, 0x0a, 0x38, 0x44, 0x3a, 0x43, 0x54, 0x40, 0x41, 0x0d, 0x00, 0x4b, 0x30, + 0xa6, 0x0d, 0x41, 0x54, 0x40, 0x41, 0x0d, 0x00, 0x4b, 0x54, 0x44, 0x3a, 0x40, 0x24, 0x6b, 0x10, + 0x08, 0x38, 0x82, 0x35, 0x0c, 0x4c, 0x0c, 0x0d, 0x50, 0x2c, 0x22, 0x25, 0x0e, 0x5c, 0x5f, 0x07, + 0x3f, 0x5f, 0x25, 0x0e, 0x5c, 0x24, 0x0c, 0x0d, 0x50, 0x2c, 0x60, 0x82, 0x35, 0x0c, 0x10, 0x09, + 0x3c, 0x8c, 0x8c, 0x8c, 0x37, 0x6b, 0x10, 0x08, 0x3c, 0x8c, 0x00, 0x71, 0x4e, 0x71, 0x44, 0x3a, + 0x1b, 0x10, 0x0a, 0x5e, 0xc6, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x31, 0xf2, 0x37, 0x10, 0x0a, 0x5e, + 0xa6, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x21, 0xc5, 0xb4, 0x37, 0x6b, 0x10, 0x09, 0x5e, 0x07, 0x48, + 0x1b, 0x69, 0x75, 0x94, 0x10, 0x0a, 0x5e, 0xe6, 0x2b, 0x46, 0xc8, 0x2b, 0x30, 0xc2, 0x43, 0xe6, + 0x2b, 0x02, 0x05, 0x09, 0x0d, 0x0f, 0x0d, 0x39, 0x54, 0xc5, 0x02, 0xf9, 0x54, 0xc5, 0x25, 0x39, + 0x30, 0xc2, 0x36, 0x39, 0x10, 0x08, 0x3c, 0x1b, 0x69, 0x75, 0x94, 0x10, 0x08, 0x38, 0x0c, 0x49, + 0x59, 0x7e, 0x53, 0x1f, 0x5f, 0x0d, 0x48, 0x6b, 0x20, 0x53, 0x22, 0x0c, 0x33, 0x2f, 0x10, 0x0b, + 0x38, 0x0d, 0x21, 0x88, 0x1e, 0x26, 0xc8, 0x2c, 0x21, 0x25, 0x92, 0x49, 0x2b, 0x92, 0x21, 0x2c, + 0x21, 0x25, 0x30, 0x0d, 0x21, 0x88, 0x1e, 0x10, 0x08, 0x38, 0x88, 0x0f, 0x23, 0x4e, 0x71, 0x67, + 0x71, 0x4e, 0x71, 0x88, 0x48, 0x4c, 0x07, 0x8a, 0x01, 0x00, 0x23, 0x07, 0x3f, 0xec, 0x10, 0x06, + 0x2e, 0x91, 0x77, 0x5f, 0x25, 0x24, 0x34, 0x7f, 0x10, 0x06, 0x5e, 0x4f, 0x48, 0x42, 0x00, 0x32, + 0x01, 0x1a, 0x66, 0x1e, 0x8b, 0x24, 0x9b, 0x1a, 0x98, 0x10, 0x06, 0x2e, 0x49, 0x42, 0x45, 0x0c, + 0x66, 0x8a, 0x45, 0x0c, 0x66, 0x42, 0x10, 0x06, 0x2e, 0x0a, 0x49, 0x96, 0x09, 0x49, 0x52, 0x32, + 0x06, 0x20, 0x09, 0x48, 0x59, 0x10, 0x06, 0x72, 0x68, 0x45, 0x86, 0x93, 0x20, 0x65, 0x60, 0xb4, + 0x2f, 0x10, 0x06, 0x2e, 0x5d, 0x0f, 0x2f, 0x76, 0x6c, 0x08, 0x49, 0x0d, 0x10, 0x09, 0x00, 0x62, + 0x97, 0x0a, 0x39, 0x4f, 0x84, 0x46, 0x6f, 0x1d, 0x05, 0x2d, 0x22, 0x4f, 0x48, 0x3f, 0x4c, 0x6f, + 0x1d, 0x05, 0x2d, 0x60, 0x35, 0x0a, 0x39, 0x4f, 0x84, 0x10, 0x06, 0x2e, 0x91, 0x3f, 0x27, 0x0c, + 0x5f, 0x57, 0x8a, 0x27, 0x0c, 0x24, 0x91, 0x8a, 0x10, 0x06, 0x2e, 0xd5, 0x9d, 0x46, 0x0e, 0x01, + 0x02, 0x0b, 0x3e, 0x56, 0x79, 0x0e, 0x10, 0x06, 0x21, 0x3c, 0x28, 0x06, 0x1a, 0x06, 0x9d, 0x1a, + 0xc8, 0x02, 0x3e, 0x2f, 0x56, 0x3e, 0x55, 0x79, 0x0d, 0x10, 0x06, 0x2e, 0x67, 0x50, 0x4e, 0x32, + 0x50, 0x3d, 0x66, 0x03, 0x70, 0x73, 0x4e, 0x10, 0x06, 0x00, 0x2e, 0x09, 0x51, 0x24, 0x6f, 0x02, + 0x00, 0x3e, 0x06, 0x0d, 0x21, 0x3e, 0x09, 0x0a, 0x21, 0x3e, 0x0c, 0x07, 0x41, 0x10, 0x07, 0x5e, + 0x3c, 0x05, 0x21, 0x1d, 0x4c, 0x59, 0x02, 0x25, 0x0f, 0x32, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x32, + 0x25, 0x0e, 0x47, 0x54, 0xcc, 0x05, 0x05, 0x39, 0x10, 0x06, 0x89, 0x26, 0xa6, 0x4c, 0xc2, 0x9d, + 0x10, 0x06, 0x2e, 0x98, 0x24, 0x2c, 0x25, 0x45, 0x3e, 0x9b, 0x1a, 0x98, 0x10, 0x06, 0x2e, 0x49, + 0x2f, 0x8b, 0x9d, 0x10, 0x06, 0x2e, 0x49, 0x2f, 0x8b, 0x22, 0xc8, 0x25, 0x66, 0x1e, 0x00, 0x32, + 0x1b, 0x10, 0x06, 0x72, 0x24, 0x6c, 0x0f, 0x27, 0x6c, 0x56, 0x49, 0x10, 0x06, 0x5e, 0x8d, 0x28, + 0x6b, 0x1b, 0x10, 0x07, 0x95, 0x22, 0x03, 0x2d, 0x4f, 0x0b, 0x24, 0x09, 0x0b, 0x02, 0x2d, 0x24, + 0x47, 0x0c, 0x09, 0x28, 0x09, 0x2c, 0x24, 0x02, 0x2f, 0x5f, 0x04, 0x42, 0x10, 0x08, 0x72, 0x2f, + 0x22, 0x2c, 0x67, 0x25, 0x19, 0xc8, 0x23, 0x2c, 0x67, 0x25, 0x22, 0x56, 0x49, 0x2f, 0x70, 0x1b, + 0x10, 0x06, 0x2e, 0x0a, 0x0e, 0x01, 0x0a, 0x84, 0x54, 0x35, 0x0d, 0x2d, 0x5f, 0x05, 0x42, 0x5f, + 0x35, 0x0d, 0x2d, 0x4c, 0x4f, 0x0e, 0x50, 0x84, 0x10, 0x07, 0x89, 0x85, 0x00, 0x3e, 0x93, 0x6b, + 0x10, 0x06, 0x2e, 0xe5, 0x86, 0x56, 0x49, 0x1b, 0x10, 0x08, 0x2e, 0xcd, 0x74, 0xe8, 0x74, 0xc8, + 0x23, 0x4e, 0x03, 0x2d, 0x00, 0x23, 0x55, 0x8a, 0x49, 0x10, 0x08, 0x2e, 0xad, 0x4c, 0xad, 0x4c, + 0xad, 0x4c, 0x4e, 0x6f, 0x01, 0x0f, 0x4c, 0x55, 0x0e, 0x91, 0x6b, 0x10, 0x07, 0x27, 0x62, 0x1d, + 0x6b, 0x7b, 0x49, 0x1e, 0x10, 0x08, 0x2e, 0x67, 0x71, 0x8a, 0x0b, 0x58, 0x74, 0x49, 0x0d, 0x74, + 0x21, 0x29, 0x74, 0x48, 0x2f, 0x39, 0x10, 0x06, 0x2e, 0x6b, 0x7b, 0x49, 0x1e, 0x10, 0x06, 0x2e, + 0x51, 0x42, 0x20, 0x01, 0x3e, 0x4f, 0x49, 0x20, 0x01, 0x3e, 0x51, 0x3f, 0x10, 0x09, 0x2e, 0x4d, + 0x98, 0x30, 0xc8, 0x9b, 0x49, 0x31, 0xc8, 0x9b, 0x4d, 0x98, 0x10, 0x06, 0x2e, 0x34, 0x7f, 0x5f, + 0x0b, 0x0e, 0x02, 0x3e, 0x08, 0x2d, 0x39, 0x10, 0x06, 0x38, 0x05, 0xf9, 0x05, 0x4c, 0x18, 0x5d, + 0x0f, 0x2f, 0x76, 0x6c, 0x08, 0x49, 0x0d, 0x10, +}; + +static const uint16_t mf_rlefont_php6ySCWY_glyph_offsets_4[81] = { + 0x0000, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x000a, + 0x0014, 0x0022, 0x0034, 0x003a, 0x0052, 0x0059, 0x0081, 0x0093, + 0x00a9, 0x00c9, 0x00e6, 0x00ff, 0x0129, 0x0132, 0x013c, 0x0144, + 0x0151, 0x015e, 0x0166, 0x0184, 0x01a0, 0x01bf, 0x01c7, 0x01d2, + 0x01de, 0x01ec, 0x01f5, 0x0215, 0x021c, 0x022f, 0x0248, 0x025f, + 0x0269, 0x027a, 0x0287, 0x0296, 0x02a2, 0x02ad, 0x02ca, 0x02d9, + 0x02e7, 0x02fa, 0x0308, 0x031e, 0x0339, 0x0341, 0x034d, 0x0354, + 0x0362, 0x036c, 0x0373, 0x038d, 0x03a1, 0x03b9, 0x03c1, 0x03c9, + 0x03da, 0x03ec, 0x03f5, 0x0407, 0x040e, 0x041d, 0x042b, 0x0009, + 0x0438, +}; + +static const uint8_t mf_rlefont_php6ySCWY_glyph_data_5[159] = { + 0x06, 0x27, 0x62, 0x3c, 0x8f, 0x10, 0x08, 0x5e, 0x2e, 0x37, 0x2d, 0x10, 0x00, 0x02, 0x38, 0x06, + 0x7e, 0x0a, 0x7e, 0x0d, 0x07, 0x10, 0x02, 0x3c, 0x05, 0x87, 0x10, 0x02, 0x1c, 0x04, 0x20, 0x0e, + 0x10, 0x04, 0x38, 0x06, 0x07, 0x09, 0x04, 0x24, 0x4f, 0x07, 0x40, 0x5f, 0x0d, 0x08, 0x5c, 0x10, + 0x04, 0x38, 0x3f, 0x67, 0x70, 0x06, 0x0c, 0x28, 0x43, 0x08, 0x10, 0x04, 0x1c, 0x64, 0x06, 0x5f, + 0x0e, 0x00, 0x52, 0x10, 0x03, 0x2e, 0x48, 0x4c, 0xb4, 0x10, 0x06, 0x1c, 0xee, 0x10, 0x10, 0x38, + 0x55, 0x40, 0x21, 0x07, 0x5c, 0x54, 0x52, 0x03, 0x0a, 0x00, 0x6f, 0x08, 0x60, 0x52, 0x03, 0x0a, + 0x35, 0x0c, 0x22, 0x55, 0x40, 0x0a, 0x0e, 0x02, 0x55, 0x1e, 0x64, 0x1e, 0x26, 0x57, 0x05, 0x00, + 0x52, 0x29, 0x58, 0x29, 0x1a, 0x03, 0x42, 0x21, 0x52, 0x29, 0x58, 0x29, 0x21, 0x35, 0x0c, 0x1a, + 0x55, 0x1e, 0x64, 0x1e, 0x10, 0x05, 0x00, 0x62, 0x78, 0x5f, 0x5a, 0x08, 0x28, 0x5a, 0x08, 0x20, + 0x5a, 0x08, 0x10, 0x05, 0x62, 0x5a, 0x08, 0x20, 0x78, 0x28, 0x78, 0x5f, 0x5a, 0x08, 0x10, +}; + +static const uint16_t mf_rlefont_php6ySCWY_glyph_offsets_5[40] = { + 0x0000, 0x0006, 0x000c, 0x000c, 0x000c, 0x000d, 0x0016, 0x001b, + 0x000c, 0x0021, 0x0030, 0x003b, 0x000c, 0x000c, 0x000c, 0x0044, + 0x000c, 0x000c, 0x000c, 0x004a, 0x000c, 0x000c, 0x000c, 0x000c, + 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x004e, 0x000c, 0x000c, + 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0085, 0x0093, +}; + +static const uint8_t mf_rlefont_php6ySCWY_glyph_data_6[50] = { + 0x0d, 0x38, 0x0b, 0x08, 0x26, 0x0b, 0x00, 0x64, 0x1e, 0xd4, 0x42, 0xcc, 0x58, 0x29, 0xd4, 0x34, + 0x07, 0xe8, 0x58, 0x29, 0x00, 0xcc, 0x34, 0x06, 0xf6, 0x64, 0x1e, 0x21, 0xc8, 0x34, 0x4a, 0x60, + 0xc6, 0x5d, 0x67, 0x91, 0xc5, 0xc5, 0x34, 0x10, 0x00, 0x06, 0x62, 0x51, 0x03, 0x0b, 0x60, 0xb4, + 0x1d, 0x10, +}; + +static const uint16_t mf_rlefont_php6ySCWY_glyph_offsets_6[13] = { + 0x0000, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0029, +}; + +static const struct mf_rlefont_char_range_s mf_rlefont_php6ySCWY_char_ranges[] = { + {32, 95, mf_rlefont_php6ySCWY_glyph_offsets_0, mf_rlefont_php6ySCWY_glyph_data_0}, + {160, 96, mf_rlefont_php6ySCWY_glyph_offsets_1, mf_rlefont_php6ySCWY_glyph_data_1}, + {710, 1, mf_rlefont_php6ySCWY_glyph_offsets_2, mf_rlefont_php6ySCWY_glyph_data_2}, + {732, 1, mf_rlefont_php6ySCWY_glyph_offsets_3, mf_rlefont_php6ySCWY_glyph_data_3}, + {1025, 81, mf_rlefont_php6ySCWY_glyph_offsets_4, mf_rlefont_php6ySCWY_glyph_data_4}, + {8211, 40, mf_rlefont_php6ySCWY_glyph_offsets_5, mf_rlefont_php6ySCWY_glyph_data_5}, + {8470, 13, mf_rlefont_php6ySCWY_glyph_offsets_6, mf_rlefont_php6ySCWY_glyph_data_6}, +}; + +const struct mf_rlefont_s mf_rlefont_php6ySCWY = { + { + "Archangelsk Regular 12", + "php6ySCWY", + 16, /* width */ + 12, /* height */ + 2, /* min x advance */ + 16, /* max x advance */ + 1, /* baseline x */ + 9, /* baseline y */ + 12, /* line height */ + 0, /* flags */ + 63, /* fallback character */ + &mf_rlefont_character_width, + &mf_rlefont_render_character, + }, + 4, /* version */ + mf_rlefont_php6ySCWY_dictionary_data, + mf_rlefont_php6ySCWY_dictionary_offsets, + 80, /* rle dict count */ + 137, /* total dict count */ + 7, /* char range count */ + mf_rlefont_php6ySCWY_char_ranges, +}; + +#ifdef MF_INCLUDED_FONTS +/* List entry for searching fonts by name. */ +static const struct mf_font_list_s mf_rlefont_php6ySCWY_listentry = { + MF_INCLUDED_FONTS, + (struct mf_font_s*)&mf_rlefont_php6ySCWY +}; +#undef MF_INCLUDED_FONTS +#define MF_INCLUDED_FONTS (&mf_rlefont_php6ySCWY_listentry) +#endif + + +/* End of automatically generated font definition for php6ySCWY. */ + diff --git a/drivers/gdisp/ST7565/gdisp_lld.c b/drivers/gdisp/ST7565/gdisp_lld.c new file mode 100644 index 00000000..960b1389 --- /dev/null +++ b/drivers/gdisp/ST7565/gdisp_lld.c @@ -0,0 +1,269 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +#include "gfx.h" + +#if GFX_USE_GDISP || defined(__DOXYGEN__) + + +/* Include the emulation code for things we don't support */ +#include "gdisp/lld/emulation.c" +#include "st7565.h" +#include "gdisp_lld_board.h" + + +/*===========================================================================*/ +/* Driver local definitions. */ +/*===========================================================================*/ + +#ifndef GDISP_SCREEN_HEIGHT +#define GDISP_SCREEN_HEIGHT 64 +#endif +#ifndef GDISP_SCREEN_WIDTH +#define GDISP_SCREEN_WIDTH 128 +#endif + +#define GDISP_INITIAL_CONTRAST 0xFF + +/*===========================================================================*/ +/* Driver local functions. */ +/*===========================================================================*/ + +// Some common routines and macros +#define delay(us) gfxSleepMicroseconds(us) +#define delay_ms(ms) gfxSleepMilliseconds(ms) + +// The memory buffer for the display +static uint8_t gdisp_buffer[GDISP_SCREEN_HEIGHT * GDISP_SCREEN_WIDTH / 8]; + +/** Set the display to normal or inverse. + * @param[in] value 0 for normal mode, or 1 for inverse mode. + * @notapi + */ +static void invert_display(uint8_t i) { + write_cmd(i ? ST7565_INVERT_DISPLAY : ST7565_POSITIVE_DISPLAY); +} + +/** Turn the whole display off. + * Sends the display to sleep, but leaves RAM intact. + * @notapi + */ +static void display_off(void) { + write_cmd(ST7565_DISPLAY_OFF); +} + +/** Turn the whole display on. + * Wakes up this display following a sleep() call. + * @notapi + */ +static void display_on(void) { + write_cmd(ST7565_DISPLAY_ON); +} + +/** Set the display contrast. + * @param[in] value The contrast, from 1 to 63. + * @notapi + */ +static void set_contrast(uint8_t value) { + write_cmd(ST7565_CONTRAST); + write_cmd(value & 0x3F); +} + +/** Set the display start line. This is the line at which the display will start rendering. + * @param[in] value A value from 0 to 63 denoting the line to start at. + * @notapi + */ +static void set_display_start_line(unsigned char value) { + write_cmd(ST7565_START_LINE | value); +} + +static void gdisp_lld_display(void) { + uint8_t p; + set_display_start_line(0); + + for (p = 0; p < 8; p++) { + write_cmd(ST7565_PAGE | p); + write_cmd(ST7565_COLUMN_MSB | 0); + write_cmd(ST7565_COLUMN_LSB | 0); + write_cmd(ST7565_RMW); + write_data(&gdisp_buffer[p * GDISP_SCREEN_WIDTH], GDISP_SCREEN_WIDTH); + } +} + +/*===========================================================================*/ +/* Driver interrupt handlers. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver exported functions. */ +/*===========================================================================*/ + +/* ---- Required Routines ---- */ +/* + The following 2 routines are required. + All other routines are optional. + */ + +/** + * @brief Low level GDISP driver initialization. + * + * @notapi + */ +bool_t gdisp_lld_init(void) { + // Initialize your display + init_board(); + + // Hardware reset. + setpin_reset(TRUE); + delay_ms(10); + setpin_reset(FALSE); + delay_ms(1); + + write_cmd(ST7565_LCD_BIAS_7); + write_cmd(ST7565_ADC_NORMAL); + write_cmd(ST7565_COM_SCAN_INC); + set_display_start_line(0); + + set_contrast(32); + write_cmd(ST7565_RESISTOR_RATIO | 0x3); + + // turn on voltage converter (VC=1, VR=0, VF=0) + write_cmd(ST7565_POWER_CONTROL | 0x04); + delay_ms(50); + // turn on voltage regulator (VC=1, VR=1, VF=0) + write_cmd(ST7565_POWER_CONTROL | 0x06); + delay_ms(50); + // turn on voltage follower (VC=1, VR=1, VF=1) + write_cmd(ST7565_POWER_CONTROL | 0x07); + delay_ms(50); + + display_on(); + write_cmd(ST7565_ALLON_NORMAL); + invert_display(0);// Disable Inversion of display. + + write_cmd(ST7565_RMW); + gdisp_lld_display(); + + // Initialize the GDISP structure + GDISP.Width = GDISP_SCREEN_WIDTH; + GDISP.Height = GDISP_SCREEN_HEIGHT; + GDISP.Orientation = GDISP_ROTATE_0; + GDISP.Powermode = powerOn; + GDISP.Contrast = 50; +#if GDISP_NEED_VALIDATION || GDISP_NEED_CLIP + GDISP.clipx0 = 0; + GDISP.clipy0 = 0; + GDISP.clipx1 = GDISP.Width; + GDISP.clipy1 = GDISP.Height; +#endif + return TRUE; +} + +/** + * @brief Draws a pixel on the display. + * + * @param[in] x X location of the pixel + * @param[in] y Y location of the pixel + * @param[in] color The color of the pixel + * + * @notapi + */ +void gdisp_lld_draw_pixel(coord_t x, coord_t y, color_t color) { +#if GDISP_NEED_VALIDATION || GDISP_NEED_CLIP + if (x < GDISP.clipx0 || y < GDISP.clipy0 || x >= GDISP.clipx1 || y >= GDISP.clipy1) return; +#endif + + if (color == 1) + gdisp_buffer[x+ (y/8)*GDISP_SCREEN_WIDTH] |= (1< 100) value = (void*)100; + if (GDISP.Contrast == (uint8_t)((float)((size_t)value) * 63.0/100.0)) + return; + set_contrast((uint8_t)((float)((size_t)value) * 63.0/100.0) ); + GDISP.Contrast = (unsigned)value; + return; + + case GDISP_CONTROL_LLD_FLUSH: + gdisp_lld_display(); + return; + } +} +#endif // GDISP_NEED_CONTROL + +#endif // GFX_USE_GDISP +/** @} */ + diff --git a/drivers/gdisp/ST7565/gdisp_lld.mk b/drivers/gdisp/ST7565/gdisp_lld.mk new file mode 100644 index 00000000..cd925824 --- /dev/null +++ b/drivers/gdisp/ST7565/gdisp_lld.mk @@ -0,0 +1,6 @@ +# List the required driver. +GFXSRC += $(GFXLIB)/drivers/gdisp/ST7565/gdisp_lld.c + +# Required include directories +GFXINC += $(GFXLIB)/drivers/gdisp/ST7565 + diff --git a/drivers/gdisp/ST7565/gdisp_lld_board_template.h b/drivers/gdisp/ST7565/gdisp_lld_board_template.h new file mode 100644 index 00000000..2f40ccc7 --- /dev/null +++ b/drivers/gdisp/ST7565/gdisp_lld_board_template.h @@ -0,0 +1,82 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +#ifndef _GDISP_LLD_BOARD_H +#define _GDISP_LLD_BOARD_H + +/** + * @brief Initialize the board for the display. + * @notes This board definition uses GPIO and assumes exclusive access to these GPIO pins + * @notapi + */ +static inline void init_board(void) { + /* Configure SPI bus here. Up to 10Mhz, SPI Mode = 3 (CPOL = 1, CPHA = 0) */ + /* Configure A0, !CS, !RST pin for output */ +} + +/** + * @brief Set or clear the lcd reset pin. + * @param[in] state TRUE = lcd in reset, FALSE = normal operation + * @notapi + */ +static inline void setpin_reset(bool_t state) { + /* Set !CS to low */ + if (state) { + /* Set !RST to low */ + } else { + /* Set !RST to high */ + } +} + +/** + * @brief Set the lcd back-light level. + * @param[in] percent 0 to 100% + * @notapi + */ +static inline void set_backlight(uint8_t percent) { + +} + +/** + * @brief Take exclusive control of the bus + * @notapi + */ +static inline void acquire_bus(void) { + +} + +/** + * @brief Release exclusive control of the bus + * @notapi + */ +static inline void release_bus(void) { + +} + +/** + * @brief Send command to the display. + * @param[in] cmd The command to send + * @notapi + */ +static inline void write_cmd(uint8_t cmd) { + /* Set A0 to low */ + /* Transmit cmd over SPI */ +} + +/** + * @brief Send data to the display. + * @param[in] data The data to send + * @notapi + */ +static inline void write_data(uint8_t* data, uint16_t length) { + /* Set A0 to high */ + /* Transmit data for length over SPI. DMA is recommended. */ +} + +#endif /* _GDISP_LLD_BOARD_H */ +/** @} */ + diff --git a/drivers/gdisp/ST7565/gdisp_lld_config.h b/drivers/gdisp/ST7565/gdisp_lld_config.h new file mode 100644 index 00000000..8d26a0aa --- /dev/null +++ b/drivers/gdisp/ST7565/gdisp_lld_config.h @@ -0,0 +1,29 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +#ifndef _GDISP_LLD_CONFIG_H +#define _GDISP_LLD_CONFIG_H + +#if GFX_USE_GDISP + +/*===========================================================================*/ +/* Driver hardware support. */ +/*===========================================================================*/ + +#define GDISP_DRIVER_NAME "ST7565" + +#define GDISP_HARDWARE_CONTROL TRUE + +#define GDISP_PIXELFORMAT GDISP_PIXELFORMAT_MONO + +#define GDISP_CONTROL_LLD_FLUSH (GDISP_CONTROL_LLD + 1) + +#endif /* GFX_USE_GDISP */ + +#endif /* _GDISP_LLD_CONFIG_H */ +/** @} */ + diff --git a/drivers/gdisp/ST7565/st7565.h b/drivers/gdisp/ST7565/st7565.h new file mode 100644 index 00000000..b1f43f6b --- /dev/null +++ b/drivers/gdisp/ST7565/st7565.h @@ -0,0 +1,42 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +#ifndef _ST7565_H +#define _ST7565_H + +#define ST7565_BLACK 0 +#define ST7565_WHITE 1 + +#define ST7565_CONTRAST 0x81 +#define ST7565_ALLON_NORMAL 0xA4 +#define ST7565_ALLON 0xA5 +#define ST7565_POSITIVE_DISPLAY 0xA6 +#define ST7565_INVERT_DISPLAY 0xA7 +#define ST7565_DISPLAY_OFF 0xAE +#define ST7565_DISPLAY_ON 0xAF + +#define ST7565_LCD_BIAS_7 0xA3 +#define ST7565_LCD_BIAS_9 0xA2 + +#define ST7565_ADC_NORMAL 0xA0 +#define ST7565_ADC_REVERSE 0xA1 + +#define ST7565_COM_SCAN_INC 0xC0 +#define ST7565_COM_SCAN_DEC 0xC8 + +#define ST7565_START_LINE 0x40 +#define ST7565_PAGE 0xB0 +#define ST7565_COLUMN_MSB 0x10 +#define ST7565_COLUMN_LSB 0x00 +#define ST7565_RMW 0xE0 + +#define ST7565_RESISTOR_RATIO 0x20 +#define ST7565_POWER_CONTROL 0x28 + +#endif /* _ST7565_H */ +/** @} */ + diff --git a/releases.txt b/releases.txt index b657960f..e257ddc4 100644 --- a/releases.txt +++ b/releases.txt @@ -10,6 +10,7 @@ FIX: POSIX port removed, now dedicated OS-X and Linux ports FIX: Several bugfixes FEATURE: mcufont integration FEATURE: SSD1306 driver by user goeck +FEATURE: ST7565 driver by user sam0737 *** changes after 1.7 ***