diff --git a/.gitignore b/.gitignore index bad3bc1f..14b00eca 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ build *.lst *.o *.map +src/gdisp/fonts/*.dat diff --git a/demos/applications/notepad/gfxconf.h b/demos/applications/notepad/gfxconf.h index 6755d30d..f3f50009 100644 --- a/demos/applications/notepad/gfxconf.h +++ b/demos/applications/notepad/gfxconf.h @@ -57,11 +57,8 @@ #define GDISP_NEED_MSGAPI FALSE /* Builtin Fonts */ -#define GDISP_INCLUDE_FONT_SMALL FALSE -#define GDISP_INCLUDE_FONT_LARGER FALSE -#define GDISP_INCLUDE_FONT_UI1 FALSE -#define GDISP_INCLUDE_FONT_UI2 TRUE -#define GDISP_INCLUDE_FONT_LARGENUMBERS TRUE +#define GDISP_INCLUDE_FONT_DEJAVUSANS12 TRUE +#define GDISP_INCLUDE_FONT_DEJAVUSANS24 TRUE /* Features for the GINPUT sub-system. */ #define GINPUT_NEED_MOUSE TRUE diff --git a/demos/applications/notepad/main.c b/demos/applications/notepad/main.c index 261b09d4..020a2b60 100644 --- a/demos/applications/notepad/main.c +++ b/demos/applications/notepad/main.c @@ -46,8 +46,8 @@ void drawScreen(void) { char *msg = "ChibiOS/GFX"; font_t font1, font2; - font1 = gdispOpenFont("UI2 Double"); - font2 = gdispOpenFont("LargeNumbers"); + font1 = gdispOpenFont("DejaVuSans24"); + font2 = gdispOpenFont("DejaVuSans12"); gdispClear(White); gdispDrawString(gdispGetWidth()-gdispGetStringWidth(msg, font1)-3, 3, msg, font1, Black); @@ -61,12 +61,12 @@ void drawScreen(void) { gdispDrawBox (5 * COLOR_SIZE + 3, 3, COLOR_SIZE, COLOR_SIZE, Black); /* White */ /* pens */ - gdispDrawString(OFFSET * 2, DRAW_PEN(1), "1", font2, Black); - gdispDrawString(OFFSET * 2, DRAW_PEN(2), "2", font2, Black); - gdispDrawString(OFFSET * 2, DRAW_PEN(3), "3", font2, Black); - gdispDrawString(OFFSET * 2, DRAW_PEN(4), "4", font2, Black); - gdispDrawString(OFFSET * 2, DRAW_PEN(5), "5", font2, Black); - + gdispFillStringBox(OFFSET * 2, DRAW_PEN(1), PEN_SIZE, PEN_SIZE, "1", font2, White, Black, justifyCenter); + gdispFillStringBox(OFFSET * 2, DRAW_PEN(2), PEN_SIZE, PEN_SIZE, "2", font2, White, Black, justifyCenter); + gdispFillStringBox(OFFSET * 2, DRAW_PEN(3), PEN_SIZE, PEN_SIZE, "3", font2, White, Black, justifyCenter); + gdispFillStringBox(OFFSET * 2, DRAW_PEN(4), PEN_SIZE, PEN_SIZE, "4", font2, White, Black, justifyCenter); + gdispFillStringBox(OFFSET * 2, DRAW_PEN(5), PEN_SIZE, PEN_SIZE, "5", font2, White, Black, justifyCenter); + gdispCloseFont(font1); gdispCloseFont(font2); } diff --git a/gfxconf.example.h b/gfxconf.example.h index e20f324f..ca4ba65e 100644 --- a/gfxconf.example.h +++ b/gfxconf.example.h @@ -50,12 +50,17 @@ #define GDISP_NEED_ASYNC FALSE #define GDISP_NEED_MSGAPI FALSE -/* GDISP - builtin fonts */ -#define GDISP_INCLUDE_FONT_SMALL FALSE -#define GDISP_INCLUDE_FONT_LARGER FALSE -#define GDISP_INCLUDE_FONT_UI1 FALSE -#define GDISP_INCLUDE_FONT_UI2 TRUE -#define GDISP_INCLUDE_FONT_LARGENUMBERS FALSE +/* GDISP - fonts to include */ +#define GDISP_INCLUDE_FONT_DEJAVUSANS10 FALSE +#define GDISP_INCLUDE_FONT_DEJAVUSANS12 TRUE +#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_LARGENUMBERS FALSE /* GDISP image decoders */ #define GDISP_NEED_IMAGE_NATIVE FALSE @@ -124,7 +129,9 @@ /* Optional Parameters for various subsystems */ /* - #define GDISP_MAX_FONT_HEIGHT 16 + #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 diff --git a/include/gdisp/fonts.h b/include/gdisp/fonts.h deleted file mode 100644 index 76bd0926..00000000 --- a/include/gdisp/fonts.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * 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 - */ - -/** - * @file include/gdisp/fonts.h - * @brief GDISP internal font definitions. - * @details This is not generally needed by an application. It is used - * by the low level drivers that need to understand a font. - * - * @addtogroup GDISP - * @{ - */ - -#ifndef _GDISP_FONTS_H -#define _GDISP_FONTS_H - -/* Don't test against GFX_USE_GDISP as we may want to use this in other non-GDISP utilities. */ - -/** - * @brief The type of a font column. - * @note Set by defining @p GDISP_MAX_FNT_HEIGHT appropriately. - */ -#if GDISP_MAX_FONT_HEIGHT == 16 - typedef uint16_t fontcolumn_t; -#elif GDISP_MAX_FONT_HEIGHT == 32 - typedef uint32_t fontcolumn_t; -#else - #error "GDISP: GDISP_MAX_FONT_HEIGHT must be either 16 or 32" -#endif - -/** - * @brief Internal font structure. - * @note This structure is followed by: - * 1. An array of character widths (uint8_t) - * 2. An array of column data offsets (relative to the font structure) - * 3. Each characters array of column data (fontcolumn_t) - * Each sub-structure must be padded to a multiple of 8 bytes - * to allow the tables to work across many different compilers. - */ -struct font { - const char * name; - uint8_t height; - uint8_t charPadding; - uint8_t lineSpacing; - uint8_t descenderHeight; - uint8_t minWidth; - uint8_t maxWidth; - char minChar; - char maxChar; - uint8_t xscale; - uint8_t yscale; - const uint8_t *widthTable; - const uint16_t *offsetTable; - const fontcolumn_t *dataTable; -}; - -#define _getCharWidth(f,c) (((c) < (f)->minChar || (c) > (f)->maxChar) ? 0 : (f)->widthTable[(c) - (f)->minChar]) -#define _getCharOffset(f,c) ((f)->offsetTable[(c) - (f)->minChar]) -#define _getCharData(f,c) (&(f)->dataTable[_getCharOffset(f, c)]) - -#endif /* _GDISP_FONTS_H */ -/** @} */ - diff --git a/include/gdisp/gdisp.h b/include/gdisp/gdisp.h index ac741d3b..25194c4f 100644 --- a/include/gdisp/gdisp.h +++ b/include/gdisp/gdisp.h @@ -55,7 +55,11 @@ typedef struct point_t { /** * @brief Type for the text justification. */ -typedef enum justify {justifyLeft, justifyCenter, justifyRight} justify_t; +typedef enum justify { + justifyLeft = 0, + justifyCenter = 1, + justifyRight = 2 +} justify_t; /** * @brief Type for the font metric. */ @@ -63,7 +67,7 @@ typedef enum fontmetric {fontHeight, fontDescendersHeight, fontLineSpacing, font /** * @brief The type of a font. */ -typedef const struct font *font_t; +typedef const struct mf_font_s* font_t; /** * @brief Type for the screen orientation. */ @@ -489,7 +493,7 @@ extern "C" { * * @api */ - void gdispDrawChar(coord_t x, coord_t y, char c, font_t font, color_t color); + void gdispDrawChar(coord_t x, coord_t y, uint16_t c, font_t font, color_t color); /** * @brief Draw a text character with a filled background. @@ -502,7 +506,7 @@ extern "C" { * * @api */ - void gdispFillChar(coord_t x, coord_t y, char c, font_t font, color_t color, color_t bgcolor); + void gdispFillChar(coord_t x, coord_t y, uint16_t c, font_t font, color_t color, color_t bgcolor); #endif /* Read a pixel Function */ @@ -761,6 +765,17 @@ void gdispDrawBox(coord_t x, coord_t y, coord_t cx, coord_t cy, color_t color); */ void gdispCloseFont(font_t font); + /** + * @brief Make a scaled copy of an existing font. + * @details Allocates memory for new font metadata using gfxAlloc, remember to close font after use! + * @return A new font or NULL if out of memory. + * + * @param[in] font The base font to use. + * @param[in] scale_x The scale factor in horizontal direction. + * @param[in] scale_y The scale factor in vertical direction. + */ + font_t gdispScaleFont(font_t font, uint8_t scale_x, uint8_t scale_y); + /** * @brief Get the name of the specified font. * @returns The name of the font. @@ -772,6 +787,18 @@ void gdispDrawBox(coord_t x, coord_t y, coord_t cx, coord_t cy, color_t color); const char *gdispGetFontName(font_t font); #endif +/** + * @brief Blend two colors together according to opacity/alpha. + * @return The blended color. + * + * @param[in] fg Foreground color + * @param[in] bg Background color + * @param[in] alpha Opacity of the foreground color (0-255) + * + * @api + */ +color_t gdispBlendColor(color_t fg, color_t bg, uint8_t alpha); + /* Extra Arc Functions */ #if GDISP_NEED_ARC || defined(__DOXYGEN__) diff --git a/include/gdisp/lld/emulation.c b/include/gdisp/lld/emulation.c index c897a92d..716a3988 100644 --- a/include/gdisp/lld/emulation.c +++ b/include/gdisp/lld/emulation.c @@ -462,180 +462,130 @@ GDISPDriver GDISP; #endif #if GDISP_NEED_TEXT && !GDISP_HARDWARE_TEXT - #include "gdisp/fonts.h" + #include "mcufont.h" #endif #if GDISP_NEED_TEXT && !GDISP_HARDWARE_TEXT - void gdisp_lld_draw_char(coord_t x, coord_t y, char c, font_t font, color_t color) { - const fontcolumn_t *ptr; - fontcolumn_t column; - coord_t width, height, xscale, yscale; - coord_t i, j, xs, ys; - - /* Check we actually have something to print */ - width = _getCharWidth(font, c); - if (!width) return; - - xscale = font->xscale; - yscale = font->yscale; - height = font->height * yscale; - width *= xscale; - - ptr = _getCharData(font, c); - - /* Loop through the data and display. The font data is LSBit first, down the column */ - for(i=0; i < width; i+=xscale) { - /* Get the font bitmap data for the column */ - column = *ptr++; - - /* Draw each pixel */ - for(j=0; j < height; j+=yscale, column >>= 1) { - if (column & 0x01) { - for(xs=0; xs < xscale; xs++) - for(ys=0; ys < yscale; ys++) - gdisp_lld_draw_pixel(x+i+xs, y+j+ys, color); - } + static void gdisp_lld_draw_char_callback(int16_t x, int16_t y, uint8_t count, uint8_t alpha, void *state) { + color_t color = *(color_t*)state; + if (alpha == 255) + { + if (count == 1) + gdisp_lld_draw_pixel(x, y, color); + else + gdisp_lld_fill_area(x, y, count, 1, color); + } +#if GDISP_NEED_ANTIALIAS + else + { + while (count--) + { + color_t oldColor; + + oldColor = gdisp_lld_get_pixel_color(x, y); + oldColor = gdispBlendColor(color, oldColor, alpha); + gdisp_lld_draw_pixel(x, y, oldColor); + + x++; } } +#endif + } + + void gdisp_lld_draw_char(coord_t x, coord_t y, uint16_t c, font_t font, color_t color) { + mf_render_character(font, x, y, c, gdisp_lld_draw_char_callback, &color); } #endif #if GDISP_NEED_TEXT && !GDISP_HARDWARE_TEXTFILLS - void gdisp_lld_fill_char(coord_t x, coord_t y, char c, font_t font, color_t color, color_t bgcolor) { - coord_t width, height; - coord_t xscale, yscale; + typedef struct { + int16_t x0; + int16_t y0; + int16_t x1; + int16_t y1; + int16_t x; + int16_t y; + color_t fg; + color_t bg; + } gdisp_lld_fill_char_state_t; + + static void gdisp_lld_fill_char_callback(int16_t x, int16_t y, uint8_t count, uint8_t alpha, void *state) { + gdisp_lld_fill_char_state_t *s = state; - /* Check we actually have something to print */ - width = _getCharWidth(font, c); - if (!width) return; - - xscale = font->xscale; - yscale = font->yscale; - height = font->height * yscale; - width *= xscale; - - /* Method 1: Use background fill and then draw the text */ - #if GDISP_HARDWARE_TEXT || GDISP_SOFTWARE_TEXTFILLDRAW - - /* Fill the area */ - gdisp_lld_fill_area(x, y, width, height, bgcolor); - - /* Draw the text */ - gdisp_lld_draw_char(x, y, c, font, color); - - /* Method 2: Create a single column bitmap and then blit it */ - #elif GDISP_HARDWARE_BITFILLS && GDISP_SOFTWARE_TEXTBLITCOLUMN + if (y > s->y && s->x != s->x0) { - const fontcolumn_t *ptr; - fontcolumn_t column; - coord_t i, j, xs, ys; - - /* Working buffer for fast non-transparent text rendering [patch by Badger] - This needs to be larger than the largest character we can print. - Assume the max is double sized by one column. - */ - static pixel_t buf[sizeof(fontcolumn_t)*8*2]; - - #if GDISP_NEED_VALIDATION - /* Check our buffer is big enough */ - if ((unsigned)height > sizeof(buf)/sizeof(buf[0])) return; - #endif - - ptr = _getCharData(font, c); - - /* Loop through the data and display. The font data is LSBit first, down the column */ - for(i = 0; i < width; i+=xscale) { - /* Get the font bitmap data for the column */ - column = *ptr++; - - /* Draw each pixel */ - for(j = 0; j < height; j+=yscale, column >>= 1) { - if (column & 0x01) { - for(ys=0; ys < yscale; ys++) - gdispPackPixels(buf, 1, j+ys, 0, color); - } else { - for(ys=0; ys < yscale; ys++) - gdispPackPixels(buf, 1, j+ys, 0, bgcolor); - } - } - - for(xs=0; xs < xscale; xs++) - gdisp_lld_blit_area_ex(x+i+xs, y, 1, height, 0, 0, 1, buf); + /* Fill background to the end of current line */ + gdisp_lld_fill_area(s->x, s->y, s->x1 - s->x, 1, s->bg); + s->y++; + s->x = s->x0; + } + + if (y > s->y) + { + /* Fill background for given number of full lines */ + gdisp_lld_fill_area(s->x0, s->y, s->x1 - s->x0, y - s->y, s->bg); + s->y = y; + } + + if (x > s->x) + { + /* Fill background from previous X position */ + gdisp_lld_fill_area(s->x, s->y, x - s->x, 1, s->bg); + s->x = x; + } + + if (!count) + return; + + if (y == s->y) + { + s->x += count; + + if (s->x == s->x1) + { + s->x = s->x0; + s->y++; } } - - /* Method 3: Create a character bitmap and then blit it */ - #elif GDISP_HARDWARE_BITFILLS + + /* Draw the foreground */ + if (alpha == 255 || alpha == 0) { - const fontcolumn_t *ptr; - fontcolumn_t column; - coord_t i, j, xs, ys; - - /* Working buffer for fast non-transparent text rendering [patch by Badger] - This needs to be larger than the largest character we can print. - Assume the max is double sized. - */ - static pixel_t buf[20*(sizeof(fontcolumn_t)*8)*2]; - - #if GDISP_NEED_VALIDATION - /* Check our buffer is big enough */ - if ((unsigned)(width * height) > sizeof(buf)/sizeof(buf[0])) return; - #endif - - ptr = _getCharData(font, c); - - /* Loop through the data and display. The font data is LSBit first, down the column */ - for(i = 0; i < width; i+=xscale) { - /* Get the font bitmap data for the column */ - column = *ptr++; - - /* Draw each pixel */ - for(j = 0; j < height; j+=yscale, column >>= 1) { - if (column & 0x01) { - for(xs=0; xs < xscale; xs++) - for(ys=0; ys < yscale; ys++) - gdispPackPixels(buf, width, i+xs, j+ys, color); - } else { - for(xs=0; xs < xscale; xs++) - for(ys=0; ys < yscale; ys++) - gdispPackPixels(buf, width, i+xs, j+ys, bgcolor); - } - } - } - - /* [Patch by Badger] Write all in one stroke */ - gdisp_lld_blit_area_ex(x, y, width, height, 0, 0, width, buf); + if (count == 1) + gdisp_lld_draw_pixel(x, y, alpha ? s->fg : s->bg); + else + gdisp_lld_fill_area(x, y, count, 1, alpha ? s->fg : s->bg); } - - /* Method 4: Draw pixel by pixel */ - #else +#if GDISP_NEED_ANTIALIAS + else { - const fontcolumn_t *ptr; - fontcolumn_t column; - coord_t i, j, xs, ys; - - ptr = _getCharData(font, c); - - /* Loop through the data and display. The font data is LSBit first, down the column */ - for(i = 0; i < width; i+=xscale) { - /* Get the font bitmap data for the column */ - column = *ptr++; + while (count--) + { + color_t color; + color = gdispBlendColor(s->fg, s->bg, alpha); + gdisp_lld_draw_pixel(x, y, color); - /* Draw each pixel */ - for(j = 0; j < height; j+=yscale, column >>= 1) { - if (column & 0x01) { - for(xs=0; xs < xscale; xs++) - for(ys=0; ys < yscale; ys++) - gdisp_lld_draw_pixel(x+i+xs, y+j+ys, color); - } else { - for(xs=0; xs < xscale; xs++) - for(ys=0; ys < yscale; ys++) - gdisp_lld_draw_pixel(x+i+xs, y+j+ys, bgcolor); - } - } + x++; } } - #endif +#endif + } + + void gdisp_lld_fill_char(coord_t x, coord_t y, uint16_t c, font_t font, color_t color, color_t bgcolor) { + gdisp_lld_fill_char_state_t state; + + state.x0 = x; + state.y0 = y; + state.x1 = x + mf_character_width(font, c) + font->baseline_x; + state.y1 = y + font->height; + state.x = x; + state.y = y; + state.fg = color; + state.bg = bgcolor; + + mf_render_character(font, x, y, c, gdisp_lld_fill_char_callback, &state); + + gdisp_lld_fill_char_callback(state.x0, state.y1, 0, 0, &state); } #endif diff --git a/include/gdisp/lld/gdisp_lld.h b/include/gdisp/lld/gdisp_lld.h index afd166ae..9c4b3947 100644 --- a/include/gdisp/lld/gdisp_lld.h +++ b/include/gdisp/lld/gdisp_lld.h @@ -281,8 +281,8 @@ extern "C" { /* Text Rendering Functions */ #if GDISP_NEED_TEXT - extern void gdisp_lld_draw_char(coord_t x, coord_t y, char c, font_t font, color_t color); - extern void gdisp_lld_fill_char(coord_t x, coord_t y, char c, font_t font, color_t color, color_t bgcolor); + extern void gdisp_lld_draw_char(coord_t x, coord_t y, uint16_t c, font_t font, color_t color); + extern void gdisp_lld_fill_char(coord_t x, coord_t y, uint16_t c, font_t font, color_t color, color_t bgcolor); #endif /* Pixel readback */ diff --git a/include/gdisp/lld/gdisp_lld_msgs.h b/include/gdisp/lld/gdisp_lld_msgs.h index f2e0e66e..5f4bed9a 100644 --- a/include/gdisp/lld/gdisp_lld_msgs.h +++ b/include/gdisp/lld/gdisp_lld_msgs.h @@ -155,7 +155,7 @@ typedef union gdisp_lld_msg { gfxQueueItem qi; gdisp_msgaction_t action; // GDISP_LLD_MSG_DRAWCHAR coord_t x, y; - char c; + uint16_t c; font_t font; color_t color; } drawchar; @@ -163,7 +163,7 @@ typedef union gdisp_lld_msg { gfxQueueItem qi; gdisp_msgaction_t action; // GDISP_LLD_MSG_FILLCHAR coord_t x, y; - char c; + uint16_t c; font_t font; color_t color; color_t bgcolor; diff --git a/include/gdisp/options.h b/include/gdisp/options.h index 30587530..918c7aea 100644 --- a/include/gdisp/options.h +++ b/include/gdisp/options.h @@ -180,6 +180,36 @@ #ifndef GDISP_NEED_IMAGE_ACCOUNTING #define GDISP_NEED_IMAGE_ACCOUNTING FALSE #endif +/** + * @} + * + * @name GDISP Text Rendering Options + * @{ + */ + /** + * @brief Enable UTF-8 support for text rendering. + * @details Defaults to FALSE + */ + #ifndef GDISP_NEED_UTF8 + #define GDISP_NEED_UTF8 FALSE + #endif + + /** + * @brief Enable kerning for font rendering (improves character placement). + * @details Defaults to FALSE + */ + #ifndef GDISP_NEED_TEXT_KERNING + #define GDISP_NEED_TEXT_KERNING FALSE + #endif + + /** + * @brief Enable antialiased font support + * @details Defaults to FALSE + */ + #ifndef GDISP_NEED_ANTIALIAS + #define GDISP_NEED_ANTIALIAS FALSE + #endif + /** * @} * @@ -220,21 +250,6 @@ * @brief Predefined built in fonts * @note Turning off the ones you are not using can save program size. */ - #ifndef GDISP_INCLUDE_FONT_SMALL - #define GDISP_INCLUDE_FONT_SMALL TRUE - #endif - #ifndef GDISP_INCLUDE_FONT_LARGER - #define GDISP_INCLUDE_FONT_LARGER TRUE - #endif - #ifndef GDISP_INCLUDE_FONT_UI1 - #define GDISP_INCLUDE_FONT_UI1 TRUE - #endif - #ifndef GDISP_INCLUDE_FONT_UI2 - #define GDISP_INCLUDE_FONT_UI2 TRUE - #endif - #ifndef GDISP_INCLUDE_FONT_LARGENUMBERS - #define GDISP_INCLUDE_FONT_LARGENUMBERS TRUE - #endif /** * @} @@ -242,16 +257,6 @@ * @name GDISP Optional Sizing Parameters * @{ */ - /** - * @brief The maximum height of a font. - * @details Either 16 or 32. Defaults to 16 - * @note Setting this to 32 causes the font tables to take - * twice the internal program memory. Don't do it unless - * you realy must define an unscaled font larger than 16 bits high. - */ - #ifndef GDISP_MAX_FONT_HEIGHT - #define GDISP_MAX_FONT_HEIGHT 16 - #endif /** * @} * diff --git a/src/gdisp/fonts.c b/src/gdisp/fonts.c index f7804126..8486e1e5 100644 --- a/src/gdisp/fonts.c +++ b/src/gdisp/fonts.c @@ -17,673 +17,10 @@ #if GFX_USE_GDISP && GDISP_NEED_TEXT -#include "gdisp/fonts.h" +#include "mcufont.h" -/* fontSmall - for side buttons */ -#if GDISP_INCLUDE_FONT_SMALL - /* Forward Declarations of internal arrays */ - static const uint8_t fontSmall_Widths[]; - static const uint16_t fontSmall_Offsets[]; - static const fontcolumn_t fontSmall_Data[]; - - static const struct font fontSmall = { - "Small", - 11, 0, 14, 2, 2, 12, ' ', '~', 1, 1, - fontSmall_Widths, - fontSmall_Offsets, - fontSmall_Data}; - static const struct font fontSmallDouble = { - "Small Double", - 11, 0, 14, 2, 2, 12, ' ', '~', 2, 2, - fontSmall_Widths, - fontSmall_Offsets, - fontSmall_Data}; - static const struct font fontSmallNarrow = { - "Small Narrow", - 11, 0, 14, 2, 2, 12, ' ', '~', 1, 2, - fontSmall_Widths, - fontSmall_Offsets, - fontSmall_Data}; - - static const uint8_t fontSmall_Widths[] = { - 2, 3, 6, 8, 7, 9, 7, 3, 4, 4, 5, 7, 4, 4, 3, 6, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 4, 6, 7, 6, 7, - 12, 8, 7, 8, 8, 7, 7, 8, 8, 3, 5, 8, 7, 9, 8, 8, - 8, 8, 8, 7, 7, 8, 8, 12, 8, 8, 8, 4, 6, 4, 7, 7, - 4, 7, 7, 7, 7, 7, 4, 7, 7, 3, 3, 7, 3, 9, 7, 7, - 7, 7, 4, 6, 4, 7, 7, 9, 6, 6, 6, 5, 3, 5, 8, 0 - }; - static const uint16_t fontSmall_Offsets[] = { - 0, 2, 5, 11, 19, 26, 35, 42, - 45, 49, 53, 58, 65, 69, 73, 76, - 82, 89, 96, 103, 110, 117, 124, 131, - 138, 145, 152, 155, 159, 165, 172, 178, - 185, 197, 205, 212, 220, 228, 235, 242, - 250, 258, 261, 266, 274, 281, 290, 298, - 306, 314, 322, 330, 337, 344, 352, 360, - 372, 380, 388, 396, 400, 406, 410, 417, - 424, 428, 435, 442, 449, 456, 463, 467, - 474, 481, 484, 487, 494, 497, 506, 513, - 520, 527, 534, 538, 544, 548, 555, 562, - 571, 577, 583, 589, 594, 597, 602, 0 - }; - static const fontcolumn_t fontSmall_Data[] = { - /* */ 0x0000, 0x0000, - /* ! */ 0x0000, 0x017F, 0x017F, - /* " */ 0x0000, 0x0007, 0x0007, 0x0000, 0x0007, 0x0007, - /* # */ 0x0000, 0x0044, 0x01FF, 0x01FF, 0x0044, 0x01FF, 0x01FF, 0x0044, - /* $ */ 0x0000, 0x008C, 0x019E, 0x03FF, 0x03FF, 0x01E6, 0x00C4, - /* % */ 0x0000, 0x0082, 0x00C7, 0x0065, 0x00B7, 0x01DA, 0x014C, 0x01C6, 0x0082, - /* & */ 0x0000, 0x00E6, 0x01FF, 0x013F, 0x01E6, 0x01E0, 0x0120, - /* ' */ 0x0000, 0x0007, 0x0007, - /* ( */ 0x0000, 0x03FE, 0x07FF, 0x0401, - /* ) */ 0x0000, 0x0401, 0x07FF, 0x03FE, - /* * */ 0x0000, 0x000A, 0x000E, 0x000E, 0x000A, - /* + */ 0x0000, 0x0020, 0x0020, 0x00F8, 0x00F8, 0x0020, 0x0020, - /* , */ 0x0000, 0x0200, 0x0300, 0x0100, - /* - */ 0x0000, 0x0020, 0x0020, 0x0020, - /* . */ 0x0000, 0x0100, 0x0100, - /* / */ 0x0000, 0x0180, 0x01E0, 0x0078, 0x001F, 0x0007, - /* 0 */ 0x0000, 0x00FE, 0x01FF, 0x0101, 0x0101, 0x01FF, 0x00FE, - /* 1 */ 0x0000, 0x0002, 0x0002, 0x01FF, 0x01FF, 0x0000, 0x0000, - /* 2 */ 0x0000, 0x0182, 0x01C3, 0x0161, 0x0131, 0x011F, 0x010E, - /* 3 */ 0x0000, 0x0082, 0x0183, 0x0111, 0x0111, 0x01FF, 0x00EE, - /* 4 */ 0x0000, 0x0060, 0x0078, 0x005E, 0x01FF, 0x01FF, 0x0040, - /* 5 */ 0x0000, 0x009F, 0x019F, 0x0109, 0x0109, 0x01F9, 0x00F1, - /* 6 */ 0x0000, 0x00FE, 0x01FF, 0x0111, 0x0111, 0x01F3, 0x00E2, - /* 7 */ 0x0000, 0x0001, 0x01C1, 0x01F1, 0x003D, 0x000F, 0x0003, - /* 8 */ 0x0000, 0x00EE, 0x01FF, 0x0111, 0x0111, 0x01FF, 0x00EE, - /* 9 */ 0x0000, 0x008E, 0x019F, 0x0111, 0x0111, 0x01FF, 0x00FE, - /* : */ 0x0000, 0x0108, 0x0108, - /* ; */ 0x0000, 0x0200, 0x0308, 0x0108, - /* < */ 0x0000, 0x0020, 0x0070, 0x00D8, 0x018C, 0x0104, - /* = */ 0x0000, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, - /* > */ 0x0000, 0x0104, 0x018C, 0x00D8, 0x0070, 0x0020, - /* ? */ 0x0000, 0x0002, 0x0003, 0x0161, 0x0171, 0x001F, 0x000E, - /* @ */ 0x0000, 0x0078, 0x01FE, 0x0186, 0x0333, 0x0279, 0x0249, 0x0279, 0x027B, 0x0246, 0x007E, 0x0078, - /* A */ 0x0180, 0x01F0, 0x007C, 0x004F, 0x004F, 0x007C, 0x01F0, 0x0180, - /* B */ 0x0000, 0x01FF, 0x01FF, 0x0111, 0x0111, 0x01FF, 0x00EE, - /* C */ 0x0000, 0x00FE, 0x01FF, 0x0101, 0x0101, 0x0101, 0x0183, 0x0082, - /* D */ 0x0000, 0x01FF, 0x01FF, 0x0101, 0x0101, 0x0183, 0x00FE, 0x007C, - /* E */ 0x0000, 0x01FF, 0x01FF, 0x0111, 0x0111, 0x0111, 0x0101, - /* F */ 0x0000, 0x01FF, 0x01FF, 0x0011, 0x0011, 0x0011, 0x0001, - /* G */ 0x0000, 0x00FE, 0x01FF, 0x0101, 0x0111, 0x0191, 0x01F3, 0x01F2, - /* H */ 0x0000, 0x01FF, 0x01FF, 0x0010, 0x0010, 0x0010, 0x01FF, 0x01FF, - /* I */ 0x0000, 0x01FF, 0x01FF, - /* J */ 0x00C0, 0x01C0, 0x0100, 0x01FF, 0x00FF, - /* K */ 0x0000, 0x01FF, 0x01FF, 0x003C, 0x0066, 0x00C3, 0x0181, 0x0100, - /* L */ 0x0000, 0x01FF, 0x01FF, 0x0100, 0x0100, 0x0100, 0x0100, - /* M */ 0x0000, 0x01FF, 0x01FF, 0x003C, 0x00F0, 0x00F0, 0x003C, 0x01FF, 0x01FF, - /* N */ 0x0000, 0x01FF, 0x01FF, 0x001E, 0x0038, 0x00E0, 0x01FF, 0x01FF, - /* O */ 0x0000, 0x00FE, 0x01FF, 0x0101, 0x0101, 0x0101, 0x01FF, 0x00FE, - /* P */ 0x0000, 0x01FF, 0x01FF, 0x0011, 0x0011, 0x0011, 0x001F, 0x000E, - /* Q */ 0x0000, 0x00FE, 0x01FF, 0x0101, 0x0141, 0x01C1, 0x03FF, 0x02FE, - /* R */ 0x0000, 0x01FF, 0x01FF, 0x0011, 0x0011, 0x0011, 0x01FF, 0x01EE, - /* S */ 0x0000, 0x008E, 0x019F, 0x0111, 0x0111, 0x01F3, 0x00E2, - /* T */ 0x0000, 0x0001, 0x0001, 0x01FF, 0x01FF, 0x0001, 0x0001, - /* U */ 0x0000, 0x00FF, 0x01FF, 0x0100, 0x0100, 0x0100, 0x01FF, 0x00FF, - /* V */ 0x0003, 0x001F, 0x007C, 0x01E0, 0x01E0, 0x007C, 0x001F, 0x0003, - /* W */ 0x0003, 0x001F, 0x007C, 0x01E0, 0x01E0, 0x007C, 0x007C, 0x01E0, 0x01E0, 0x007C, 0x001F, 0x0003, - /* X */ 0x0183, 0x01C7, 0x006C, 0x0038, 0x0038, 0x006C, 0x01C7, 0x0183, - /* Y */ 0x0003, 0x0007, 0x000C, 0x01F8, 0x01F8, 0x000C, 0x0007, 0x0003, - /* Z */ 0x0181, 0x01C1, 0x0161, 0x0131, 0x0119, 0x010D, 0x0107, 0x0103, - /* [ */ 0x0000, 0x07FF, 0x07FF, 0x0401, - /* \ */ 0x0000, 0x0007, 0x001F, 0x0078, 0x01E0, 0x0180, - /* ] */ 0x0000, 0x0401, 0x07FF, 0x07FF, - /* ^ */ 0x0000, 0x0002, 0x0003, 0x0001, 0x0001, 0x0003, 0x0002, - /* _ */ 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, - /* ` */ 0x0000, 0x0001, 0x0003, 0x0002, - /* a */ 0x0000, 0x00C0, 0x01E8, 0x0128, 0x0128, 0x01F8, 0x01F0, - /* b */ 0x0000, 0x01FF, 0x01FF, 0x0108, 0x0108, 0x01F8, 0x00F0, - /* c */ 0x0000, 0x00F0, 0x01F8, 0x0108, 0x0108, 0x0198, 0x0090, - /* d */ 0x0000, 0x00F0, 0x01F8, 0x0108, 0x0108, 0x01FF, 0x01FF, - /* e */ 0x0000, 0x00F0, 0x01F8, 0x0128, 0x0128, 0x01B8, 0x00B0, - /* f */ 0x0000, 0x01FE, 0x01FF, 0x0009, - /* g */ 0x0000, 0x04F0, 0x05F8, 0x0508, 0x0508, 0x07F8, 0x03F8, - /* h */ 0x0000, 0x01FF, 0x01FF, 0x0018, 0x0008, 0x01F8, 0x01F0, - /* i */ 0x0000, 0x01F9, 0x01F9, - /* j */ 0x0000, 0x07F9, 0x07F9, - /* k */ 0x0000, 0x01FF, 0x01FF, 0x0070, 0x00D8, 0x0188, 0x0100, - /* l */ 0x0000, 0x01FF, 0x01FF, - /* m */ 0x0000, 0x01F8, 0x01F8, 0x0008, 0x01F8, 0x01F8, 0x0008, 0x01F8, 0x01F0, - /* n */ 0x0000, 0x01F8, 0x01F8, 0x0018, 0x0008, 0x01F8, 0x01F0, - /* o */ 0x0000, 0x00F0, 0x01F8, 0x0108, 0x0108, 0x01F8, 0x00F0, - /* p */ 0x0000, 0x07F8, 0x07F8, 0x0108, 0x0108, 0x01F8, 0x00F0, - /* q */ 0x0000, 0x00F0, 0x01F8, 0x0108, 0x0108, 0x07F8, 0x07F8, - /* r */ 0x0000, 0x01F8, 0x01F8, 0x0008, - /* s */ 0x0000, 0x0090, 0x01B8, 0x0168, 0x01D8, 0x0090, - /* t */ 0x0000, 0x00FE, 0x01FE, 0x0108, - /* u */ 0x0000, 0x00F8, 0x01F8, 0x0100, 0x0180, 0x01F8, 0x01F8, - /* v */ 0x0000, 0x0018, 0x0078, 0x01E0, 0x01E0, 0x0078, 0x0018, - /* w */ 0x0000, 0x0078, 0x01F8, 0x01E0, 0x0078, 0x0078, 0x01E0, 0x01F8, 0x0078, - /* x */ 0x0000, 0x0198, 0x01F8, 0x0060, 0x01F8, 0x0198, - /* y */ 0x0400, 0x0478, 0x07F8, 0x0380, 0x00F8, 0x0078, - /* z */ 0x0000, 0x0188, 0x01C8, 0x0168, 0x0138, 0x0118, - /* { */ 0x0000, 0x0010, 0x01FF, 0x03EF, 0x0200, - /* | */ 0x0000, 0x03FF, 0x03FF, - /* } */ 0x0000, 0x0200, 0x03EF, 0x01FF, 0x0010, - /* ~ */ 0x0000, 0x0004, 0x0006, 0x0002, 0x0006, 0x0004, 0x0006, 0x0002 - }; -#endif - -/* fontLarger - Tahoma, 11, Bold */ -#if GDISP_INCLUDE_FONT_LARGER - /* Forward Declarations of internal arrays */ - static const uint8_t fontLarger_Widths[]; - static const uint16_t fontLarger_Offsets[]; - static const fontcolumn_t fontLarger_Data[]; - - static const struct font fontLarger = { - "Larger", - 12, 1, 13, 2, 2, 13, ' ', '~', 1, 1, - fontLarger_Widths, - fontLarger_Offsets, - fontLarger_Data}; - static const struct font fontLargerDouble = { - "Larger Double", - 12, 1, 13, 2, 2, 13, ' ', '~', 2, 2, - fontLarger_Widths, - fontLarger_Offsets, - fontLarger_Data}; - static const struct font fontLargerNarrow = { - "Larger Narrow", - 12, 1, 13, 2, 2, 13, ' ', '~', 1, 2, - fontLarger_Widths, - fontLarger_Offsets, - fontLarger_Data}; - static const uint8_t fontLarger_Widths[] = { - 2, 3, 5, 8, 7, 13, 8, 2, 4, 4, 7, 8, 3, 4, 3, 5, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 9, 8, 9, 6, - 9, 8, 7, 7, 8, 6, 5, 7, 8, 4, 5, 7, 6, 10, 7, 8, - 7, 8, 8, 7, 6, 7, 7, 11, 7, 6, 6, 4, 5, 4, 9, 8, - 5, 6, 7, 5, 7, 6, 5, 7, 7, 2, 3, 6, 2, 10, 7, 7, - 7, 7, 4, 5, 5, 7, 6, 10, 6, 6, 5, 6, 4, 6, 9, 0 - }; - static const uint16_t fontLarger_Offsets[] = { - 0, 2, 5, 10, 18, 25, 38, 46, - 48, 52, 56, 63, 71, 74, 78, 81, - 86, 93, 100, 107, 114, 121, 128, 135, - 142, 149, 156, 159, 162, 171, 179, 188, - 194, 203, 211, 218, 225, 233, 239, 244, - 251, 259, 263, 268, 275, 281, 291, 298, - 306, 313, 321, 329, 336, 342, 349, 356, - 367, 374, 380, 386, 390, 395, 399, 408, - 416, 421, 427, 434, 439, 446, 452, 457, - 464, 471, 473, 476, 482, 484, 494, 501, - 508, 515, 522, 526, 531, 536, 543, 549, - 559, 565, 571, 576, 582, 586, 592, 0 - }; - static const fontcolumn_t fontLarger_Data[] = { - /* */ 0x0000, 0x0000, - /* ! */ 0x0000, 0x037E, 0x037E, - /* " */ 0x0007, 0x0007, 0x0000, 0x0007, 0x0007, - /* # */ 0x00C0, 0x03D8, 0x00F8, 0x00DE, 0x03D8, 0x00F8, 0x00DE, 0x0018, - /* $ */ 0x0118, 0x023C, 0x0264, 0x0FFF, 0x0264, 0x03C4, 0x0188, - /* % */ 0x001C, 0x003E, 0x0022, 0x023E, 0x011C, 0x00C0, 0x0020, 0x0018, 0x01C4, 0x03E2, 0x0220, 0x03E0, - 0x01C0, - /* & */ 0x01CC, 0x03FE, 0x0232, 0x0272, 0x03DE, 0x018C, 0x03E0, 0x0260, - /* ' */ 0x0007, 0x0007, - /* ( */ 0x01F8, 0x07FE, 0x0E07, 0x0801, - /* ) */ 0x0801, 0x0E07, 0x07FE, 0x01F8, - /* * */ 0x0000, 0x000A, 0x0004, 0x001F, 0x001F, 0x0004, 0x000A, - /* + */ 0x0000, 0x0020, 0x0020, 0x0020, 0x01FC, 0x0020, 0x0020, 0x0020, - /* , */ 0x0000, 0x0F00, 0x0700, - /* - */ 0x0020, 0x0020, 0x0020, 0x0020, - /* . */ 0x0000, 0x0300, 0x0300, - /* / */ 0x0C00, 0x0380, 0x0060, 0x001C, 0x0003, - /* 0 */ 0x01FC, 0x03FE, 0x0202, 0x0202, 0x0202, 0x03FE, 0x01FC, - /* 1 */ 0x0000, 0x0204, 0x0204, 0x03FE, 0x03FE, 0x0200, 0x0200, - /* 2 */ 0x0204, 0x0302, 0x0382, 0x02C2, 0x0262, 0x023E, 0x021C, - /* 3 */ 0x0104, 0x0202, 0x0222, 0x0222, 0x0222, 0x03FE, 0x01DC, - /* 4 */ 0x0060, 0x0050, 0x0048, 0x0044, 0x03FE, 0x03FE, 0x0040, - /* 5 */ 0x0100, 0x021E, 0x021E, 0x0212, 0x0212, 0x03F2, 0x01E2, - /* 6 */ 0x01F8, 0x03FC, 0x0216, 0x0212, 0x0212, 0x03F2, 0x01E0, - /* 7 */ 0x0002, 0x0002, 0x0382, 0x03E2, 0x007A, 0x001E, 0x0006, - /* 8 */ 0x01DC, 0x03FE, 0x0222, 0x0222, 0x0222, 0x03FE, 0x01DC, - /* 9 */ 0x003C, 0x027E, 0x0242, 0x0242, 0x0342, 0x01FE, 0x00FC, - /* : */ 0x0000, 0x0318, 0x0318, - /* ; */ 0x0000, 0x0F18, 0x0718, - /* < */ 0x0000, 0x0060, 0x0060, 0x0090, 0x0090, 0x0108, 0x0108, 0x0204, 0x0204, - /* = */ 0x0000, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, - /* > */ 0x0000, 0x0204, 0x0204, 0x0108, 0x0108, 0x0090, 0x0090, 0x0060, 0x0060, - /* ? */ 0x0004, 0x0002, 0x0362, 0x0372, 0x001E, 0x000C, - /* @ */ 0x01F8, 0x0204, 0x04F2, 0x05FA, 0x050A, 0x04FA, 0x05FA, 0x0104, 0x00F8, - /* A */ 0x0380, 0x03F0, 0x00FC, 0x008E, 0x008E, 0x00FC, 0x03F0, 0x0380, - /* B */ 0x03FE, 0x03FE, 0x0222, 0x0222, 0x0222, 0x03FE, 0x01DC, - /* C */ 0x01FC, 0x03FE, 0x0202, 0x0202, 0x0202, 0x0202, 0x018C, - /* D */ 0x03FE, 0x03FE, 0x0202, 0x0202, 0x0202, 0x0306, 0x01FC, 0x00F8, - /* E */ 0x03FE, 0x03FE, 0x0222, 0x0222, 0x0222, 0x0222, - /* F */ 0x03FE, 0x03FE, 0x0022, 0x0022, 0x0022, - /* G */ 0x01FC, 0x03FE, 0x0202, 0x0202, 0x0222, 0x03E2, 0x03EC, - /* H */ 0x03FE, 0x03FE, 0x0020, 0x0020, 0x0020, 0x0020, 0x03FE, 0x03FE, - /* I */ 0x0202, 0x03FE, 0x03FE, 0x0202, - /* J */ 0x0200, 0x0202, 0x0202, 0x03FE, 0x01FE, - /* K */ 0x03FE, 0x03FE, 0x0070, 0x00D8, 0x018C, 0x0306, 0x0202, - /* L */ 0x03FE, 0x03FE, 0x0200, 0x0200, 0x0200, 0x0200, - /* M */ 0x03FE, 0x000E, 0x001C, 0x0038, 0x0070, 0x0030, 0x0018, 0x000C, 0x03FE, 0x03FE, - /* N */ 0x03FE, 0x000E, 0x001C, 0x0070, 0x01E0, 0x0380, 0x03FE, - /* O */ 0x01FC, 0x03FE, 0x0202, 0x0202, 0x0202, 0x0202, 0x03FE, 0x01FC, - /* P */ 0x03FE, 0x03FE, 0x0042, 0x0042, 0x0042, 0x007E, 0x003C, - /* Q */ 0x01FC, 0x03FE, 0x0202, 0x0202, 0x0602, 0x0E02, 0x0BFE, 0x09FC, - /* R */ 0x03FE, 0x03FE, 0x0022, 0x0062, 0x00E2, 0x01BE, 0x031C, 0x0200, - /* S */ 0x019C, 0x023E, 0x0222, 0x0222, 0x0222, 0x03E2, 0x01CC, - /* T */ 0x0002, 0x0002, 0x03FE, 0x03FE, 0x0002, 0x0002, - /* U */ 0x01FE, 0x03FE, 0x0200, 0x0200, 0x0200, 0x03FE, 0x01FE, - /* V */ 0x000E, 0x007E, 0x03F0, 0x0380, 0x03F0, 0x007E, 0x000E, - /* W */ 0x001E, 0x00FE, 0x03E0, 0x03E0, 0x00FC, 0x000E, 0x00FC, 0x03E0, 0x03E0, 0x00FE, 0x001E, - /* X */ 0x0306, 0x038E, 0x00F8, 0x0070, 0x00F8, 0x038E, 0x0306, - /* Y */ 0x000E, 0x003E, 0x03F0, 0x03F0, 0x003E, 0x000E, - /* Z */ 0x0382, 0x03C2, 0x0262, 0x0232, 0x021E, 0x020E, - /* [ */ 0x0FFF, 0x0FFF, 0x0801, 0x0801, - /* \ */ 0x0003, 0x001C, 0x0060, 0x0380, 0x0C00, - /* ] */ 0x0801, 0x0801, 0x0FFF, 0x0FFF, - /* ^ */ 0x0000, 0x0010, 0x0008, 0x0004, 0x0002, 0x0002, 0x0004, 0x0008, 0x0010, - /* _ */ 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, - /* ` */ 0x0000, 0x0000, 0x0001, 0x0003, 0x0002, - /* a */ 0x0180, 0x03D0, 0x0248, 0x0248, 0x03F8, 0x03F0, - /* b */ 0x03FF, 0x03FF, 0x0210, 0x0208, 0x0208, 0x03F8, 0x01F0, - /* c */ 0x01F0, 0x03F8, 0x0208, 0x0208, 0x0208, - /* d */ 0x01F0, 0x03F8, 0x0208, 0x0208, 0x0108, 0x03FF, 0x03FF, - /* e */ 0x01F0, 0x03F8, 0x0248, 0x0248, 0x0278, 0x0170, - /* f */ 0x0008, 0x03FE, 0x03FF, 0x0009, 0x0001, - /* g */ 0x01F0, 0x0BF8, 0x0A08, 0x0A08, 0x0908, 0x0FF8, 0x07F8, - /* h */ 0x03FF, 0x03FF, 0x0010, 0x0008, 0x0008, 0x03F8, 0x03F0, - /* i */ 0x03FA, 0x03FA, - /* j */ 0x0808, 0x0FFA, 0x07FA, - /* k */ 0x03FF, 0x03FF, 0x00E0, 0x01B0, 0x0318, 0x0208, - /* l */ 0x03FF, 0x03FF, - /* m */ 0x03F8, 0x03F8, 0x0008, 0x0008, 0x03F8, 0x03F0, 0x0008, 0x0008, 0x03F8, 0x03F0, - /* n */ 0x03F8, 0x03F8, 0x0010, 0x0008, 0x0008, 0x03F8, 0x03F0, - /* o */ 0x01F0, 0x03F8, 0x0208, 0x0208, 0x0208, 0x03F8, 0x01F0, - /* p */ 0x0FF8, 0x0FF8, 0x0210, 0x0208, 0x0208, 0x03F8, 0x01F0, - /* q */ 0x01F0, 0x03F8, 0x0208, 0x0208, 0x0108, 0x0FF8, 0x0FF8, - /* r */ 0x03F8, 0x03F8, 0x0010, 0x0018, - /* s */ 0x0130, 0x0278, 0x0248, 0x03C8, 0x0190, - /* t */ 0x0008, 0x01FE, 0x03FE, 0x0208, 0x0208, - /* u */ 0x01F8, 0x03F8, 0x0200, 0x0200, 0x0100, 0x03F8, 0x03F8, - /* v */ 0x0038, 0x00F8, 0x03C0, 0x03C0, 0x00F8, 0x0038, - /* w */ 0x0018, 0x00F8, 0x03E0, 0x0380, 0x00F8, 0x00F8, 0x0380, 0x03E0, 0x00F8, 0x0018, - /* x */ 0x0318, 0x03B8, 0x00E0, 0x00E0, 0x03B8, 0x0318, - /* y */ 0x0038, 0x0CF8, 0x0FC0, 0x03C0, 0x00F8, 0x0038, - /* z */ 0x0388, 0x03C8, 0x0268, 0x0238, 0x0218, - /* { */ 0x0020, 0x0020, 0x07FE, 0x0FDF, 0x0801, 0x0801, - /* | */ 0x0000, 0x0000, 0x0FFF, 0x0FFF, - /* } */ 0x0801, 0x0801, 0x0FDF, 0x07FE, 0x0020, 0x0020, - /* ~ */ 0x00E0, 0x0030, 0x0030, 0x0030, 0x0060, 0x00C0, 0x00C0, 0x00C0, 0x0070 - }; -#endif - -/* fontUI1 - UI Font 1 Medium Bold */ -#if GDISP_INCLUDE_FONT_UI1 - /* Forward Declarations of internal arrays */ - static const uint8_t fontUI1_Widths[]; - static const uint16_t fontUI1_Offsets[]; - static const fontcolumn_t fontUI1_Data[]; - - static const struct font fontUI1 = { - "UI1", - 13, 0, 15, 2, 3, 13, ' ', '~', 1, 1, - fontUI1_Widths, - fontUI1_Offsets, - fontUI1_Data}; - static const struct font fontUI1Double = { - "UI1 Double", - 13, 0, 15, 2, 3, 13, ' ', '~', 2, 2, - fontUI1_Widths, - fontUI1_Offsets, - fontUI1_Data}; - static const struct font fontUI1Narrow = { - "UI1 Narrow", - 13, 0, 15, 2, 3, 13, ' ', '~', 1, 2, - fontUI1_Widths, - fontUI1_Offsets, - fontUI1_Data}; - - static const uint8_t fontUI1_Widths[] = { - 3, 3, 6, 8, 7, 13, 9, 3, 5, 5, 6, 8, 3, 5, 3, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 8, 8, 8, 6, - 10, 8, 7, 7, 8, 7, 7, 8, 8, 5, 5, 7, 7, 9, 8, 8, - 7, 8, 8, 7, 8, 8, 7, 11, 7, 7, 7, 5, 7, 5, 9, 8, - 5, 7, 7, 6, 7, 7, 5, 7, 7, 3, 4, 7, 3, 11, 7, 7, - 7, 7, 6, 6, 5, 7, 7, 9, 7, 7, 6, 7, 4, 7, 8, 0 - }; - static const uint16_t fontUI1_Offsets[] = { - 0, 3, 6, 12, 20, 27, 40, 49, - 52, 57, 62, 68, 76, 79, 84, 87, - 94, 101, 108, 115, 122, 129, 136, 143, - 150, 157, 164, 167, 170, 178, 186, 194, - 200, 210, 218, 225, 232, 240, 247, 254, - 262, 270, 275, 280, 287, 294, 303, 311, - 319, 326, 334, 342, 349, 357, 365, 372, - 383, 390, 397, 404, 409, 416, 421, 430, - 438, 443, 450, 457, 463, 470, 477, 482, - 489, 496, 499, 503, 510, 513, 524, 531, - 538, 545, 552, 558, 564, 569, 576, 583, - 592, 599, 606, 612, 619, 623, 630, 0 - }; - static const fontcolumn_t fontUI1_Data[] = { - /* */ 0x0000, 0x0000, 0x0000, - /* ! */ 0x0000, 0x02FC, 0x02FC, - /* " */ 0x0000, 0x000E, 0x000E, 0x0000, 0x000E, 0x000E, - /* # */ 0x0000, 0x0080, 0x0390, 0x00F0, 0x039C, 0x00F0, 0x009C, 0x0010, - /* $ */ 0x0000, 0x0130, 0x0278, 0x0FC8, 0x027E, 0x03C8, 0x0190, - /* % */ 0x0000, 0x0038, 0x007C, 0x0044, 0x007C, 0x0338, 0x00C0, 0x0030, 0x01CC, 0x03E0, 0x0220, 0x03E0, - 0x01C0, - /* & */ 0x0000, 0x01D8, 0x03FC, 0x0224, 0x027C, 0x02D8, 0x0180, 0x0360, 0x0220, - /* ' */ 0x0000, 0x000E, 0x000E, - /* ( */ 0x0000, 0x01F0, 0x07FC, 0x0E0E, 0x0802, - /* ) */ 0x0000, 0x0802, 0x0E0E, 0x07FC, 0x01F0, - /* * */ 0x0000, 0x0014, 0x0008, 0x003E, 0x0008, 0x0014, - /* + */ 0x0000, 0x0040, 0x0040, 0x0040, 0x03F8, 0x0040, 0x0040, 0x0040, - /* , */ 0x0000, 0x0F00, 0x0700, - /* - */ 0x0000, 0x0040, 0x0040, 0x0040, 0x0040, - /* . */ 0x0000, 0x0300, 0x0300, - /* / */ 0x0000, 0x0C00, 0x0F00, 0x03E0, 0x00F8, 0x001E, 0x0006, - /* 0 */ 0x0000, 0x01F8, 0x03FC, 0x0204, 0x0204, 0x03FC, 0x01F8, - /* 1 */ 0x0000, 0x0000, 0x0208, 0x03FC, 0x03FC, 0x0200, 0x0000, - /* 2 */ 0x0000, 0x0308, 0x038C, 0x02C4, 0x0264, 0x023C, 0x0218, - /* 3 */ 0x0000, 0x0108, 0x030C, 0x0224, 0x0224, 0x03FC, 0x01D8, - /* 4 */ 0x0000, 0x00C0, 0x00A0, 0x0090, 0x03F8, 0x03FC, 0x0080, - /* 5 */ 0x0000, 0x0100, 0x033C, 0x023C, 0x0224, 0x03E4, 0x01C4, - /* 6 */ 0x0000, 0x01F0, 0x03F8, 0x022C, 0x0224, 0x03E4, 0x01C0, - /* 7 */ 0x0000, 0x0004, 0x0304, 0x03C4, 0x00F4, 0x003C, 0x000C, - /* 8 */ 0x0000, 0x01D8, 0x03FC, 0x0224, 0x0224, 0x03FC, 0x01D8, - /* 9 */ 0x0000, 0x0038, 0x027C, 0x0244, 0x0344, 0x01FC, 0x00F8, - /* : */ 0x0000, 0x0330, 0x0330, - /* ; */ 0x0000, 0x0F30, 0x0730, - /* < */ 0x0000, 0x0040, 0x00A0, 0x00A0, 0x0110, 0x0110, 0x0208, 0x0208, - /* = */ 0x0000, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, - /* > */ 0x0000, 0x0208, 0x0208, 0x0110, 0x0110, 0x00A0, 0x00A0, 0x0040, - /* ? */ 0x0000, 0x0008, 0x02C4, 0x02E4, 0x003C, 0x0018, - /* @ */ 0x0000, 0x01F0, 0x0208, 0x04E4, 0x05F4, 0x0514, 0x05F4, 0x05F4, 0x0104, 0x00F8, - /* A */ 0x0000, 0x0380, 0x03F0, 0x00FC, 0x008C, 0x00FC, 0x03F0, 0x0380, - /* B */ 0x0000, 0x03FC, 0x03FC, 0x0224, 0x0224, 0x03FC, 0x01D8, - /* C */ 0x0000, 0x01F8, 0x03FC, 0x0204, 0x0204, 0x0204, 0x0108, - /* D */ 0x0000, 0x03FC, 0x03FC, 0x0204, 0x0204, 0x030C, 0x01F8, 0x00F0, - /* E */ 0x0000, 0x03FC, 0x03FC, 0x0224, 0x0224, 0x0224, 0x0224, - /* F */ 0x0000, 0x03FC, 0x03FC, 0x0024, 0x0024, 0x0024, 0x0024, - /* G */ 0x0000, 0x01F8, 0x03FC, 0x0204, 0x0204, 0x0244, 0x03C4, 0x03C8, - /* H */ 0x0000, 0x03FC, 0x03FC, 0x0020, 0x0020, 0x0020, 0x03FC, 0x03FC, - /* I */ 0x0000, 0x0204, 0x03FC, 0x03FC, 0x0204, - /* J */ 0x0200, 0x0204, 0x0204, 0x03FC, 0x01FC, - /* K */ 0x0000, 0x03FC, 0x03FC, 0x00F0, 0x0198, 0x030C, 0x0204, - /* L */ 0x0000, 0x03FC, 0x03FC, 0x0200, 0x0200, 0x0200, 0x0200, - /* M */ 0x0000, 0x03FC, 0x001C, 0x0038, 0x0070, 0x0020, 0x0010, 0x03F8, 0x03FC, - /* N */ 0x0000, 0x03FC, 0x0018, 0x0030, 0x0060, 0x00C0, 0x0180, 0x03FC, - /* O */ 0x0000, 0x01F8, 0x03FC, 0x0204, 0x0204, 0x0204, 0x03FC, 0x01F8, - /* P */ 0x0000, 0x03FC, 0x03FC, 0x0044, 0x0044, 0x007C, 0x0038, - /* Q */ 0x0000, 0x01F8, 0x03FC, 0x0204, 0x0604, 0x0E04, 0x0BFC, 0x09F8, - /* R */ 0x0000, 0x03FC, 0x03FC, 0x0044, 0x00C4, 0x01FC, 0x0338, 0x0200, - /* S */ 0x0000, 0x0138, 0x027C, 0x0264, 0x0264, 0x03E4, 0x01C8, - /* T */ 0x0004, 0x0004, 0x0004, 0x03FC, 0x03FC, 0x0004, 0x0004, 0x0004, - /* U */ 0x0000, 0x01FC, 0x03FC, 0x0200, 0x0200, 0x0200, 0x03FC, 0x01FC, - /* V */ 0x0000, 0x001C, 0x00FC, 0x03E0, 0x03E0, 0x00FC, 0x001C, - /* W */ 0x0000, 0x001C, 0x00FC, 0x03E0, 0x03C0, 0x007C, 0x007C, 0x03C0, 0x03E0, 0x00FC, 0x001C, - /* X */ 0x0000, 0x030C, 0x039C, 0x00F0, 0x00F0, 0x039C, 0x030C, - /* Y */ 0x0000, 0x000C, 0x003C, 0x03F0, 0x03F0, 0x003C, 0x000C, - /* Z */ 0x0000, 0x0384, 0x03C4, 0x02E4, 0x0274, 0x023C, 0x021C, - /* [ */ 0x0000, 0x0FFE, 0x0FFE, 0x0802, 0x0802, - /* \ */ 0x0000, 0x0006, 0x001E, 0x00F8, 0x03E0, 0x0F00, 0x0C00, - /* ] */ 0x0000, 0x0802, 0x0802, 0x0FFE, 0x0FFE, - /* ^ */ 0x0000, 0x0020, 0x0030, 0x0018, 0x000C, 0x000C, 0x0018, 0x0030, 0x0020, - /* _ */ 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, - /* ` */ 0x0000, 0x0000, 0x0002, 0x0006, 0x0004, - /* a */ 0x0000, 0x0180, 0x03D0, 0x0250, 0x0250, 0x03F0, 0x03E0, - /* b */ 0x0000, 0x03FE, 0x03FE, 0x0210, 0x0210, 0x03F0, 0x01E0, - /* c */ 0x0000, 0x01E0, 0x03F0, 0x0210, 0x0210, 0x0210, - /* d */ 0x0000, 0x01E0, 0x03F0, 0x0210, 0x0210, 0x03FE, 0x03FE, - /* e */ 0x0000, 0x01E0, 0x03F0, 0x0250, 0x0250, 0x0270, 0x0160, - /* f */ 0x0010, 0x03FC, 0x03FE, 0x0012, 0x0012, - /* g */ 0x0000, 0x01E0, 0x0BF0, 0x0A10, 0x0A10, 0x0FF0, 0x07F0, - /* h */ 0x0000, 0x03FE, 0x03FE, 0x0010, 0x0010, 0x03F0, 0x03E0, - /* i */ 0x0000, 0x03F4, 0x03F4, - /* j */ 0x0800, 0x0810, 0x0FF4, 0x07F4, - /* k */ 0x0000, 0x03FE, 0x03FE, 0x00C0, 0x01E0, 0x0330, 0x0210, - /* l */ 0x0000, 0x03FE, 0x03FE, - /* m */ 0x0000, 0x03F0, 0x03F0, 0x0010, 0x0010, 0x03F0, 0x03E0, 0x0010, 0x0010, 0x03F0, 0x03E0, - /* n */ 0x0000, 0x03F0, 0x03F0, 0x0010, 0x0010, 0x03F0, 0x03E0, - /* o */ 0x0000, 0x01E0, 0x03F0, 0x0210, 0x0210, 0x03F0, 0x01E0, - /* p */ 0x0000, 0x0FF0, 0x0FF0, 0x0210, 0x0210, 0x03F0, 0x01E0, - /* q */ 0x0000, 0x01E0, 0x03F0, 0x0210, 0x0210, 0x0FF0, 0x0FF0, - /* r */ 0x0000, 0x03F0, 0x03F0, 0x0020, 0x0030, 0x0030, - /* s */ 0x0000, 0x0260, 0x02F0, 0x02D0, 0x03D0, 0x0190, - /* t */ 0x0010, 0x01FC, 0x03FC, 0x0210, 0x0210, - /* u */ 0x0000, 0x01F0, 0x03F0, 0x0200, 0x0200, 0x03F0, 0x03F0, - /* v */ 0x0000, 0x0070, 0x01F0, 0x0380, 0x0380, 0x01F0, 0x0070, - /* w */ 0x0000, 0x00F0, 0x03F0, 0x0300, 0x00F0, 0x00F0, 0x0300, 0x03F0, 0x00F0, - /* x */ 0x0000, 0x0330, 0x03F0, 0x00C0, 0x00C0, 0x03F0, 0x0330, - /* y */ 0x0000, 0x0030, 0x0CF0, 0x0FC0, 0x03C0, 0x00F0, 0x0030, - /* z */ 0x0000, 0x0310, 0x0390, 0x02D0, 0x0270, 0x0230, - /* { */ 0x0000, 0x0040, 0x0040, 0x07FC, 0x0FBE, 0x0802, 0x0802, - /* | */ 0x0000, 0x0000, 0x0FFE, 0x0FFE, - /* } */ 0x0000, 0x0802, 0x0802, 0x0FBE, 0x07FC, 0x0040, 0x0040, - /* ~ */ 0x0000, 0x01C0, 0x0020, 0x0020, 0x00C0, 0x0100, 0x0100, 0x00E0 - }; -#endif - -/* fontUI1 - UI Font 2 Medium Bold */ -#if GDISP_INCLUDE_FONT_UI2 - /* Forward Declarations of internal arrays */ - static const uint8_t fontUI2_Widths[]; - static const uint16_t fontUI2_Offsets[]; - static const fontcolumn_t fontUI2_Data[]; - - static const struct font fontUI2 = { - "UI2", - 11, 1, 13, 2, 2, 12, ' ', '~', 1, 1, - fontUI2_Widths, - fontUI2_Offsets, - fontUI2_Data}; - static const struct font fontUI2Double = { - "UI2 Double", - 11, 1, 13, 2, 2, 12, ' ', '~', 2, 2, - fontUI2_Widths, - fontUI2_Offsets, - fontUI2_Data}; - static const struct font fontUI2Narrow = { - "UI2 Narrow", - 11, 1, 13, 2, 2, 12, ' ', '~', 1, 2, - fontUI2_Widths, - fontUI2_Offsets, - fontUI2_Data}; - - static const uint8_t fontUI2_Widths[] = { - 2, 2, 5, 8, 6, 12, 8, 2, 4, 4, 6, 8, 2, 4, 2, 5, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 2, 2, 8, 8, 8, 5, - 9, 7, 6, 6, 7, 5, 5, 7, 7, 4, 5, 6, 5, 9, 6, 7, - 6, 7, 7, 6, 6, 7, 6, 10, 6, 6, 6, 4, 5, 4, 7, 7, - 4, 6, 6, 5, 6, 6, 4, 6, 6, 2, 3, 6, 2, 10, 6, 6, - 6, 6, 4, 5, 4, 6, 6, 8, 6, 6, 5, 6, 4, 6, 8, 0 - }; - static const uint16_t fontUI2_Offsets[] = { - 0, 2, 4, 9, 17, 23, 35, 43, - 45, 49, 53, 59, 67, 69, 73, 75, - 80, 86, 92, 98, 104, 110, 116, 122, - 128, 134, 140, 142, 144, 152, 160, 168, - 173, 182, 189, 195, 201, 208, 213, 218, - 225, 232, 236, 241, 247, 252, 261, 267, - 274, 280, 287, 294, 300, 306, 313, 319, - 329, 335, 341, 347, 351, 356, 360, 367, - 374, 378, 384, 390, 395, 401, 407, 411, - 417, 423, 425, 428, 434, 436, 446, 452, - 458, 464, 470, 474, 479, 483, 489, 495, - 503, 509, 515, 520, 526, 530, 536, 0 - }; - static const fontcolumn_t fontUI2_Data[] = { - /* */ 0x0000, 0x0000, - /* ! */ 0x017E, 0x017E, - /* " */ 0x0007, 0x0007, 0x0000, 0x0007, 0x0007, - /* # */ 0x00C0, 0x03D8, 0x00F8, 0x00DE, 0x03D8, 0x00F8, 0x00DE, 0x0018, - /* $ */ 0x0098, 0x013C, 0x07E4, 0x013F, 0x01E4, 0x00C8, - /* % */ 0x001C, 0x003E, 0x0022, 0x003E, 0x019C, 0x0060, 0x0018, 0x00E6, 0x01F0, 0x0110, 0x01F0, 0x00E0, - /* & */ 0x00EC, 0x01FE, 0x0112, 0x013E, 0x016C, 0x00C0, 0x01B0, 0x0110, - /* ' */ 0x0007, 0x0007, - /* ( */ 0x00F8, 0x03FE, 0x0707, 0x0401, - /* ) */ 0x0401, 0x0707, 0x03FE, 0x00F8, - /* * */ 0x000A, 0x0004, 0x001F, 0x001F, 0x0004, 0x000A, - /* + */ 0x0000, 0x0020, 0x0020, 0x0020, 0x01FC, 0x0020, 0x0020, 0x0020, - /* , */ 0x0780, 0x0380, - /* - */ 0x0020, 0x0020, 0x0020, 0x0020, - /* . */ 0x0180, 0x0180, - /* / */ 0x0600, 0x0180, 0x0070, 0x000C, 0x0003, - /* 0 */ 0x00FC, 0x01FE, 0x0102, 0x0102, 0x01FE, 0x00FC, - /* 1 */ 0x0000, 0x0104, 0x01FE, 0x01FE, 0x0100, 0x0000, - /* 2 */ 0x0184, 0x01C6, 0x0162, 0x0132, 0x011E, 0x010C, - /* 3 */ 0x0084, 0x0186, 0x0112, 0x0112, 0x01FE, 0x00EC, - /* 4 */ 0x0060, 0x0050, 0x0048, 0x01FC, 0x01FE, 0x0040, - /* 5 */ 0x0080, 0x019E, 0x011E, 0x0112, 0x01F2, 0x00E2, - /* 6 */ 0x00FC, 0x01FE, 0x0112, 0x0112, 0x01F2, 0x00E0, - /* 7 */ 0x0002, 0x0002, 0x01C2, 0x01FA, 0x003E, 0x0006, - /* 8 */ 0x00EC, 0x01FE, 0x0112, 0x0112, 0x01FE, 0x00EC, - /* 9 */ 0x001C, 0x013E, 0x0122, 0x0122, 0x01FE, 0x00FC, - /* : */ 0x0198, 0x0198, - /* ; */ 0x0798, 0x0398, - /* < */ 0x0000, 0x0020, 0x0050, 0x0050, 0x0088, 0x0088, 0x0104, 0x0104, - /* = */ 0x0000, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, - /* > */ 0x0000, 0x0104, 0x0104, 0x0088, 0x0088, 0x0050, 0x0050, 0x0020, - /* ? */ 0x0004, 0x0162, 0x0172, 0x001E, 0x000C, - /* @ */ 0x00F8, 0x0104, 0x0272, 0x02FA, 0x028A, 0x027A, 0x02FA, 0x0084, 0x0078, - /* A */ 0x01C0, 0x01F8, 0x007E, 0x0046, 0x007E, 0x01F8, 0x01C0, - /* B */ 0x01FE, 0x01FE, 0x0112, 0x0112, 0x01FE, 0x00EC, - /* C */ 0x00FC, 0x01FE, 0x0102, 0x0102, 0x0102, 0x0102, - /* D */ 0x01FE, 0x01FE, 0x0102, 0x0102, 0x0186, 0x00FC, 0x0078, - /* E */ 0x01FE, 0x01FE, 0x0112, 0x0112, 0x0112, - /* F */ 0x01FE, 0x01FE, 0x0012, 0x0012, 0x0012, - /* G */ 0x00FC, 0x01FE, 0x0102, 0x0102, 0x0122, 0x01E2, 0x01E2, - /* H */ 0x01FE, 0x01FE, 0x0010, 0x0010, 0x0010, 0x01FE, 0x01FE, - /* I */ 0x0102, 0x01FE, 0x01FE, 0x0102, - /* J */ 0x0100, 0x0102, 0x0102, 0x01FE, 0x00FE, - /* K */ 0x01FE, 0x01FE, 0x0078, 0x00CC, 0x0186, 0x0102, - /* L */ 0x01FE, 0x01FE, 0x0100, 0x0100, 0x0100, - /* M */ 0x01FE, 0x000E, 0x001C, 0x0038, 0x0030, 0x0018, 0x000C, 0x01FE, 0x01FE, - /* N */ 0x01FE, 0x000E, 0x001C, 0x0038, 0x0070, 0x01FE, - /* O */ 0x00FC, 0x01FE, 0x0102, 0x0102, 0x0102, 0x01FE, 0x00FC, - /* P */ 0x01FE, 0x01FE, 0x0022, 0x0022, 0x003E, 0x001C, - /* Q */ 0x00FC, 0x01FE, 0x0102, 0x0302, 0x0702, 0x05FE, 0x04FC, - /* R */ 0x01FE, 0x01FE, 0x0022, 0x0062, 0x00FE, 0x019C, 0x0100, - /* S */ 0x011C, 0x013E, 0x0132, 0x0132, 0x01F2, 0x00E2, - /* T */ 0x0002, 0x0002, 0x01FE, 0x01FE, 0x0002, 0x0002, - /* U */ 0x00FE, 0x01FE, 0x0100, 0x0100, 0x0100, 0x01FE, 0x00FE, - /* V */ 0x000E, 0x007E, 0x01F0, 0x01F0, 0x007E, 0x000E, - /* W */ 0x000E, 0x007E, 0x01F0, 0x01E0, 0x003E, 0x003E, 0x01E0, 0x01F0, 0x007E, 0x000E, - /* X */ 0x0186, 0x01CE, 0x0078, 0x0078, 0x01CE, 0x0186, - /* Y */ 0x0006, 0x001E, 0x01F8, 0x01F8, 0x001E, 0x0006, - /* Z */ 0x01C2, 0x01E2, 0x0172, 0x013A, 0x011E, 0x010E, - /* [ */ 0x07FF, 0x07FF, 0x0401, 0x0401, - /* \ */ 0x0003, 0x000C, 0x0070, 0x0180, 0x0600, - /* ] */ 0x0401, 0x0401, 0x07FF, 0x07FF, - /* ^ */ 0x0010, 0x0008, 0x0004, 0x0002, 0x0004, 0x0008, 0x0010, - /* _ */ 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, - /* ` */ 0x0000, 0x0001, 0x0003, 0x0002, - /* a */ 0x00C0, 0x01E8, 0x0128, 0x0128, 0x01F8, 0x01F0, - /* b */ 0x01FF, 0x01FF, 0x0108, 0x0108, 0x01F8, 0x00F0, - /* c */ 0x00F0, 0x01F8, 0x0108, 0x0108, 0x0108, - /* d */ 0x00F0, 0x01F8, 0x0108, 0x0108, 0x01FF, 0x01FF, - /* e */ 0x00F0, 0x01F8, 0x0128, 0x0128, 0x0138, 0x0130, - /* f */ 0x01FE, 0x01FF, 0x0009, 0x0001, - /* g */ 0x00F0, 0x05F8, 0x0508, 0x0508, 0x07F8, 0x03F8, - /* h */ 0x01FF, 0x01FF, 0x0008, 0x0008, 0x01F8, 0x01F0, - /* i */ 0x01FA, 0x01FA, - /* j */ 0x0408, 0x07FA, 0x03FA, - /* k */ 0x01FF, 0x01FF, 0x0060, 0x00F0, 0x0198, 0x0108, - /* l */ 0x01FF, 0x01FF, - /* m */ 0x01F8, 0x01F8, 0x0008, 0x0008, 0x01F8, 0x01F0, 0x0008, 0x0008, 0x01F8, 0x01F0, - /* n */ 0x01F8, 0x01F8, 0x0008, 0x0008, 0x01F8, 0x01F0, - /* o */ 0x00F0, 0x01F8, 0x0108, 0x0108, 0x01F8, 0x00F0, - /* p */ 0x07F8, 0x07F8, 0x0108, 0x0108, 0x01F8, 0x00F0, - /* q */ 0x00F0, 0x01F8, 0x0108, 0x0108, 0x07F8, 0x07F8, - /* r */ 0x01F8, 0x01F8, 0x0010, 0x0018, - /* s */ 0x0130, 0x0178, 0x0168, 0x01E8, 0x00C8, - /* t */ 0x00FE, 0x01FE, 0x0108, 0x0108, - /* u */ 0x00F8, 0x01F8, 0x0100, 0x0100, 0x01F8, 0x01F8, - /* v */ 0x0018, 0x0078, 0x01E0, 0x01E0, 0x0078, 0x0018, - /* w */ 0x0078, 0x01F8, 0x01C0, 0x0078, 0x0078, 0x01C0, 0x01F8, 0x0078, - /* x */ 0x0198, 0x01F8, 0x0060, 0x0060, 0x01F8, 0x0198, - /* y */ 0x0018, 0x0678, 0x07E0, 0x01E0, 0x0078, 0x0018, - /* z */ 0x0188, 0x01C8, 0x0168, 0x0138, 0x0118, - /* { */ 0x0020, 0x0020, 0x03FE, 0x07DF, 0x0401, 0x0401, - /* | */ 0x0000, 0x0000, 0x07FF, 0x07FF, - /* } */ 0x0401, 0x0401, 0x07DF, 0x03FE, 0x0020, 0x0020, - /* ~ */ 0x0060, 0x0010, 0x0010, 0x0030, 0x0060, 0x0040, 0x0040, 0x0030 - }; -#endif - -/* - fontLargeNumbers: - Large numbers font, height = 16 (including the decenders) - Characters include: 0 - 9, -, +, ., %, :, Space, Comma -*/ -#if GDISP_INCLUDE_FONT_LARGENUMBERS - /* Forward Declarations of internal arrays */ - static const uint8_t fontLargeNumbers_Widths[]; - static const uint16_t fontLargeNumbers_Offsets[]; - static const fontcolumn_t fontLargeNumbers_Data[]; - - static const struct font fontLargeNumbers = { - "LargeNumbers", - 16, 2, 21, 1, 3, 15, '%', ':', 1, 1, - fontLargeNumbers_Widths, - fontLargeNumbers_Offsets, - fontLargeNumbers_Data}; - static const struct font fontLargeNumbersDouble = { - "LargeNumbers Double", - 16, 2, 21, 1, 3, 15, '%', ':', 2, 2, - fontLargeNumbers_Widths, - fontLargeNumbers_Offsets, - fontLargeNumbers_Data}; - static const struct font fontLargeNumbersNarrow = { - "LargeNumbers Narrow", 16, 2, 21, 1, 3, 15, '%', ':', 1, 2, - fontLargeNumbers_Widths, - fontLargeNumbers_Offsets, - fontLargeNumbers_Data}; - - static const uint8_t fontLargeNumbers_Widths[] = { - 15, 0, 0, 0, 0, 0, 11, 3, 6, 3, 0, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 4, 0, 0 - }; - static const uint16_t fontLargeNumbers_Offsets[] = { - 0, 0, 0, 0, 0, 0, 15, 26, - 29, 35, 0, 38, 48, 58, 68, 78, - 88, 98, 108, 118, 128, 138, 0, 0 - }; - static const fontcolumn_t fontLargeNumbers_Data[] = { - /* % */ 0x007E, 0x00FF, 0x00C3, 0x80C3, 0xE0FF, 0x7C7E, 0x1F00, 0x07C0, 0x00F0, 0x7E3E, 0xFF0F, 0xC303, - 0xC300, 0xFF00, 0x7E00, - /* + */ 0x01C0, 0x01C0, 0x01C0, 0x01C0, 0x1FFC, 0x1FFC, 0x1FFC, 0x01C0, 0x01C0, 0x01C0, 0x01C0, - /* , */ 0x7000, 0x7000, 0xF000, - /* - */ 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, - /* . */ 0x7000, 0x7000, 0x7000, - /* 0 */ 0x0FF8, 0x3FFE, 0x3FFE, 0x7007, 0x6003, 0x6003, 0x7007, 0x3FFE, 0x3FFE, 0x0FF8, - /* 1 */ 0x0000, 0x0070, 0x0038, 0x0038, 0x001C, 0x7FFF, 0x7FFF, 0x7FFF, 0x0000, 0x0000, - /* 2 */ 0x600C, 0x700E, 0x7C0F, 0x7E07, 0x6F03, 0x6783, 0x63C7, 0x61FF, 0x60FE, 0x603C, - /* 3 */ 0x180C, 0x380E, 0x780F, 0x70C3, 0x60C3, 0x60E3, 0x71FF, 0x3FFE, 0x3F3C, 0x0E00, - /* 4 */ 0x0F00, 0x0DC0, 0x0CE0, 0x0C38, 0x0C1E, 0x7FFF, 0x7FFF, 0x7FFF, 0x0C00, 0x0C00, - /* 5 */ 0x18C0, 0x38FC, 0x78FF, 0x707F, 0x6063, 0x6063, 0x70E3, 0x3FE3, 0x3FC3, 0x0F80, - /* 6 */ 0x0FF8, 0x3FFE, 0x3FFE, 0x70C7, 0x6063, 0x6063, 0x70E7, 0x3FEF, 0x3FC6, 0x0F04, - /* 7 */ 0x0003, 0x0003, 0x7803, 0x7F03, 0x7FC3, 0x07F3, 0x00FB, 0x003F, 0x000F, 0x0007, - /* 8 */ 0x1E1C, 0x3F3E, 0x7FFF, 0x71E7, 0x60C3, 0x60C3, 0x71E7, 0x7FFF, 0x3F3E, 0x1E1C, - /* 9 */ 0x1078, 0x39FE, 0x7BFE, 0x7387, 0x6303, 0x6303, 0x7187, 0x3FFE, 0x3FFE, 0x0FF8, - /* : */ 0x0000, 0x0E38, 0x0E38, 0x0E38 - }; -#endif - -static const struct font *BuiltinFontTable[] = { - #if GDISP_INCLUDE_FONT_SMALL - &fontSmall, &fontSmallDouble, &fontSmallNarrow, - #endif - #if GDISP_INCLUDE_FONT_LARGER - &fontLarger, &fontLargerDouble, &fontLargerNarrow, - #endif - #if GDISP_INCLUDE_FONT_UI1 - &fontUI1, &fontUI1Double, &fontUI1Narrow, - #endif - #if GDISP_INCLUDE_FONT_UI2 - &fontUI2, &fontUI2Double, &fontUI2Narrow, - #endif - #if GDISP_INCLUDE_FONT_LARGENUMBERS - &fontLargeNumbers, &fontLargeNumbersDouble, &fontLargeNumbersNarrow, - #endif - }; +/* Custom flag to indicate dynamically allocated font */ +#define FONT_FLAG_DYNAMIC 0x80 /** * Match a pattern against the font name. @@ -712,21 +49,44 @@ static bool_t matchfont(const char *pattern, const char *name) { } font_t gdispOpenFont(const char *name) { - const struct font **p; - - for(p = BuiltinFontTable; p < BuiltinFontTable+sizeof(BuiltinFontTable)/sizeof(BuiltinFontTable[0]); p++) { - if (matchfont(name, p[0]->name)) - return p[0]; + const struct mf_font_list_s *fp; + int i; + + fp = mf_get_font_list(); + + while (fp) + { + if (matchfont(name, fp->font->short_name)) + return fp->font; + fp = fp->next; } - return 0; + + /* Return default font.. better than nothing. */ + return mf_get_font_list()->font; } void gdispCloseFont(font_t font) { - (void) font; + if (font->flags & FONT_FLAG_DYNAMIC) + { + struct mf_font_s *dfont = (struct mf_font_s *)font; + + /* Make sure that no-one can successfully use font after closing */ + dfont->render_character = NULL; + + /* Release the allocated memory */ + gfxFree(dfont); + } +} + +font_t gdispScaleFont(font_t font, uint8_t scale_x, uint8_t scale_y) +{ + struct mf_scaledfont_s *newfont = gfxAlloc(sizeof(struct mf_scaledfont_s)); + mf_scale_font(newfont, font, scale_x, scale_y); + return (font_t)newfont; } const char *gdispGetFontName(font_t font) { - return font->name; + return font->short_name; } #endif /* GFX_USE_GDISP && GDISP_NEED_TEXT */ diff --git a/src/gdisp/fonts/DejaVuSans-Bold.ttf b/src/gdisp/fonts/DejaVuSans-Bold.ttf new file mode 100644 index 00000000..9b74ef85 Binary files /dev/null and b/src/gdisp/fonts/DejaVuSans-Bold.ttf differ diff --git a/src/gdisp/fonts/DejaVuSans.license b/src/gdisp/fonts/DejaVuSans.license new file mode 100644 index 00000000..710b32c6 --- /dev/null +++ b/src/gdisp/fonts/DejaVuSans.license @@ -0,0 +1,58 @@ +This package was debianized by Peter Cernak on +Sun, 5 Sep 2004 17:10:26 +0200. + +It was downloaded from http://dejavu.sourceforge.net/ + +Upstream Authors: Stepan Roh (original author), + see /usr/share/doc/ttf-dejavu/AUTHORS for full list + +Copyright: + +Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. + +Bitstream Vera Fonts Copyright +------------------------------ + +Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is +a trademark of Bitstream, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of the fonts accompanying this license ("Fonts") and associated +documentation files (the "Font Software"), to reproduce and distribute the +Font Software, including without limitation the rights to use, copy, merge, +publish, distribute, and/or sell copies of the Font Software, and to permit +persons to whom the Font Software is furnished to do so, subject to the +following conditions: + +The above copyright and trademark notices and this permission notice shall +be included in all copies of one or more of the Font Software typefaces. + +The Font Software may be modified, altered, or added to, and in particular +the designs of glyphs or characters in the Fonts may be modified and +additional glyphs or characters may be added to the Fonts, only if the fonts +are renamed to names not containing either the words "Bitstream" or the word +"Vera". + +This License becomes null and void to the extent applicable to Fonts or Font +Software that has been modified and is distributed under the "Bitstream +Vera" names. + +The Font Software may be sold as part of a larger software package but no +copy of one or more of the Font Software typefaces may be sold by itself. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, +TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME +FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING +ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE +FONT SOFTWARE. + +Except as contained in this notice, the names of Gnome, the Gnome +Foundation, and Bitstream Inc., shall not be used in advertising or +otherwise to promote the sale, use or other dealings in this Font Software +without prior written authorization from the Gnome Foundation or Bitstream +Inc., respectively. For further information, contact: fonts at gnome dot +org. diff --git a/src/gdisp/fonts/DejaVuSans.ttf b/src/gdisp/fonts/DejaVuSans.ttf new file mode 100644 index 00000000..19ed0b46 Binary files /dev/null and b/src/gdisp/fonts/DejaVuSans.ttf differ diff --git a/src/gdisp/fonts/DejaVuSans10.c b/src/gdisp/fonts/DejaVuSans10.c new file mode 100644 index 00000000..604fcd02 --- /dev/null +++ b/src/gdisp/fonts/DejaVuSans10.c @@ -0,0 +1,166 @@ + + +/* Start of automatically generated font definition for DejaVuSans10. */ + +#ifndef MF_BWFONT_INTERNALS +#define MF_BWFONT_INTERNALS +#endif +#include "mf_bwfont.h" + +#ifndef MF_BWFONT_VERSION_4_SUPPORTED +#error The font file is not compatible with this version of mcufont. +#endif + +static const uint8_t mf_bwfont_DejaVuSans10_glyph_data_0[1222] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xe8, 0x00, 0x3e, 0x00, 0x28, 0x00, 0xf8, 0x00, + 0x2e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x94, 0x00, 0xfe, 0x01, 0xa4, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x12, 0x00, 0xde, 0x00, 0x30, 0x00, 0x18, 0x00, + 0xf6, 0x00, 0x90, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xcc, 0x00, 0x92, 0x00, + 0x92, 0x00, 0x64, 0x00, 0x40, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x7c, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x0c, 0x00, 0x1e, 0x00, 0x0c, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x10, 0x00, 0x10, 0x00, 0xfe, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x78, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, + 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x82, 0x00, + 0xfe, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0xc2, 0x00, 0xa2, 0x00, + 0x92, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x28, 0x00, 0x24, 0x00, 0xfe, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7c, 0x00, 0x96, 0x00, 0x92, 0x00, 0x92, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x82, 0x00, 0x62, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, + 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x92, 0x00, + 0x92, 0x00, 0xd2, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x10, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xb2, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xf8, 0x00, 0x8c, 0x01, 0x06, 0x03, 0x72, 0x02, 0x52, 0x02, 0x72, 0x02, 0x42, 0x01, + 0x64, 0x00, 0x38, 0x00, 0x00, 0x00, 0x80, 0x00, 0x70, 0x00, 0x2c, 0x00, 0x22, 0x00, 0x2c, 0x00, + 0x70, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x44, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0xc6, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0xc6, 0x00, 0x82, 0x00, 0x92, 0x00, 0x92, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0x00, 0x00, 0x02, 0x00, 0x02, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x10, 0x00, + 0x28, 0x00, 0x44, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x80, 0x00, 0x80, 0x00, + 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x0c, 0x00, 0x30, 0x00, 0x40, 0x00, + 0x30, 0x00, 0x0c, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x04, 0x00, 0x18, 0x00, + 0x20, 0x00, 0x40, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0xc6, 0x00, 0x82, 0x00, + 0x82, 0x00, 0xc6, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x12, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0xc6, 0x00, 0x82, 0x00, 0x82, 0x00, + 0x46, 0x01, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x12, 0x00, 0x12, 0x00, 0x32, 0x00, + 0x4c, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfe, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x18, 0x00, 0x60, 0x00, 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x38, 0x00, 0xc0, 0x00, 0x38, 0x00, 0x06, 0x00, 0x38, 0x00, 0xc0, 0x00, 0x38, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x82, 0x00, 0xc6, 0x00, 0x38, 0x00, 0x38, 0x00, 0xc6, 0x00, 0x82, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0xf0, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x82, 0x00, 0xc2, 0x00, 0xb2, 0x00, 0x9a, 0x00, 0x86, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x00, 0x06, 0x00, 0x78, 0x00, 0x80, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, + 0xa8, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x88, 0x00, + 0x88, 0x00, 0x88, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x00, 0xff, 0x00, 0x09, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x88, 0x02, 0x88, 0x02, 0x88, 0x02, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x08, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x02, + 0xf9, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x20, 0x00, 0x50, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, + 0xf0, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x88, 0x00, + 0x88, 0x00, 0x88, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x88, 0x00, 0x88, 0x00, + 0x88, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, + 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x98, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x08, 0x00, 0xfe, 0x00, 0x88, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xf8, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x60, 0x00, 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0xc0, 0x00, 0x30, 0x00, 0x08, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x38, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x50, 0x00, 0x20, 0x00, 0x50, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x02, 0x60, 0x02, 0x80, 0x01, 0x60, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x88, 0x00, 0xc8, 0x00, 0xa8, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, + 0xef, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0xef, 0x01, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, +}; + +static const uint16_t mf_bwfont_DejaVuSans10_glyph_offsets_0[96] = { + 0x0000, 0x0000, 0x0004, 0x0009, 0x0012, 0x0019, 0x0023, 0x002c, + 0x002f, 0x0033, 0x0037, 0x003d, 0x0046, 0x0049, 0x004e, 0x0051, + 0x0055, 0x005c, 0x0063, 0x006a, 0x0071, 0x0078, 0x007f, 0x0086, + 0x008d, 0x0094, 0x009b, 0x009e, 0x00a1, 0x00a9, 0x00b1, 0x00b9, + 0x00bf, 0x00ca, 0x00d2, 0x00d9, 0x00e1, 0x00e9, 0x00f0, 0x00f6, + 0x00fe, 0x0106, 0x0109, 0x010c, 0x0113, 0x011a, 0x0123, 0x012b, + 0x0133, 0x013a, 0x0142, 0x014a, 0x0151, 0x0157, 0x015f, 0x0167, + 0x0171, 0x0178, 0x0180, 0x0187, 0x018b, 0x018f, 0x0193, 0x019b, + 0x01a1, 0x01a5, 0x01ac, 0x01b3, 0x01b9, 0x01c0, 0x01c7, 0x01cd, + 0x01d4, 0x01db, 0x01de, 0x01e1, 0x01e7, 0x01ea, 0x01f5, 0x01fc, + 0x0203, 0x020a, 0x0211, 0x0216, 0x021c, 0x0221, 0x0228, 0x022f, + 0x0238, 0x023f, 0x0246, 0x024c, 0x0252, 0x0255, 0x025b, 0x0263, +}; + +static const uint8_t mf_bwfont_DejaVuSans10_glyph_widths_0[95] = { + 0x03, 0x04, 0x05, 0x08, 0x06, 0x0a, 0x09, 0x03, 0x04, 0x04, 0x05, 0x08, 0x03, 0x04, 0x03, 0x03, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x08, 0x08, 0x08, 0x05, + 0x0b, 0x07, 0x07, 0x08, 0x08, 0x07, 0x06, 0x08, 0x08, 0x03, 0x03, 0x07, 0x06, 0x09, 0x08, 0x08, + 0x07, 0x08, 0x07, 0x07, 0x05, 0x08, 0x07, 0x09, 0x06, 0x07, 0x06, 0x04, 0x03, 0x04, 0x08, 0x05, + 0x05, 0x06, 0x06, 0x05, 0x06, 0x06, 0x04, 0x06, 0x06, 0x02, 0x02, 0x05, 0x02, 0x0a, 0x06, 0x06, + 0x06, 0x06, 0x04, 0x05, 0x04, 0x06, 0x06, 0x08, 0x06, 0x06, 0x05, 0x06, 0x03, 0x06, 0x08, +}; + +static const struct mf_bwfont_char_range_s mf_bwfont_DejaVuSans10_char_ranges[] = { + { + 32, /* first char */ + 95, /* char count */ + 0, /* offset x */ + 0, /* offset y */ + 2, /* height in bytes */ + 10, /* height in pixels */ + 0, /* width */ + mf_bwfont_DejaVuSans10_glyph_widths_0, /* glyph widths */ + mf_bwfont_DejaVuSans10_glyph_offsets_0, /* glyph offsets */ + mf_bwfont_DejaVuSans10_glyph_data_0, /* glyph data */ + }, +}; + +const struct mf_bwfont_s mf_bwfont_DejaVuSans10 = { + { + "DejaVu Sans Book 10", + "DejaVuSans10", + 11, /* width */ + 10, /* height */ + 2, /* min x advance */ + 11, /* max x advance */ + 1, /* baseline x */ + 8, /* baseline y */ + 12, /* line height */ + 2, /* flags */ + 63, /* fallback character */ + &mf_bwfont_character_width, + &mf_bwfont_render_character, + }, + 4, /* version */ + 1, /* char range count */ + mf_bwfont_DejaVuSans10_char_ranges, +}; + +#ifdef MF_INCLUDED_FONTS +/* List entry for searching fonts by name. */ +static const struct mf_font_list_s mf_bwfont_DejaVuSans10_listentry = { + MF_INCLUDED_FONTS, + (struct mf_font_s*)&mf_bwfont_DejaVuSans10 +}; +#undef MF_INCLUDED_FONTS +#define MF_INCLUDED_FONTS (&mf_bwfont_DejaVuSans10_listentry) +#endif + + +/* End of automatically generated font definition for DejaVuSans10. */ + diff --git a/src/gdisp/fonts/DejaVuSans12.c b/src/gdisp/fonts/DejaVuSans12.c new file mode 100644 index 00000000..e9e16118 --- /dev/null +++ b/src/gdisp/fonts/DejaVuSans12.c @@ -0,0 +1,175 @@ + + +/* Start of automatically generated font definition for DejaVuSans12. */ + +#ifndef MF_BWFONT_INTERNALS +#define MF_BWFONT_INTERNALS +#endif +#include "mf_bwfont.h" + +#ifndef MF_BWFONT_VERSION_4_SUPPORTED +#error The font file is not compatible with this version of mcufont. +#endif + +static const uint8_t mf_bwfont_DejaVuSans12_glyph_data_0[1372] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x90, 0x02, 0xf0, 0x01, 0x9c, 0x00, 0x90, 0x03, + 0xf8, 0x00, 0x94, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x01, 0x24, 0x02, + 0xfe, 0x0f, 0x44, 0x02, 0xc8, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x22, 0x00, 0x22, 0x02, 0x9c, 0x01, + 0x60, 0x00, 0x30, 0x00, 0xcc, 0x01, 0x22, 0x02, 0x20, 0x02, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x01, 0x3c, 0x03, 0x12, 0x02, 0x22, 0x02, 0x44, 0x02, 0x80, 0x01, 0x80, 0x02, 0x60, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x07, 0x07, 0x01, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x07, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, + 0x18, 0x00, 0x7e, 0x00, 0x18, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, + 0x40, 0x00, 0xf8, 0x03, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x06, 0xc0, 0x01, 0x38, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, + 0x06, 0x03, 0x02, 0x02, 0x02, 0x02, 0x06, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, + 0x02, 0x02, 0xfe, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x02, 0x03, + 0x82, 0x02, 0x42, 0x02, 0x26, 0x02, 0x1c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x02, 0x02, + 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xb0, 0x00, + 0x88, 0x00, 0x86, 0x00, 0xfe, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x12, 0x02, + 0x12, 0x02, 0x12, 0x02, 0x32, 0x03, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x24, 0x03, + 0x12, 0x02, 0x12, 0x02, 0x32, 0x03, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x02, + 0x82, 0x01, 0x62, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x01, 0x22, 0x02, + 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x01, 0x66, 0x02, + 0x42, 0x02, 0x42, 0x02, 0x26, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x30, 0x07, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x90, 0x00, + 0x90, 0x00, 0x90, 0x00, 0x98, 0x01, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0xa0, 0x00, + 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x01, 0x98, 0x01, 0x90, 0x00, 0x90, 0x00, 0x90, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x62, 0x03, 0x12, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0x01, 0x08, 0x02, 0x04, 0x04, 0xe2, 0x08, 0x12, 0x09, 0x12, 0x09, 0x12, 0x09, 0xf2, 0x09, + 0x04, 0x05, 0x8c, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc0, 0x01, 0xb8, 0x00, 0x86, 0x00, + 0x86, 0x00, 0xb8, 0x00, 0xc0, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x22, 0x02, + 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x01, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, + 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, + 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x01, + 0x02, 0x02, 0x02, 0x02, 0x22, 0x02, 0x22, 0x02, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, + 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0x03, 0x00, 0x08, 0x00, 0x08, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x20, 0x00, + 0x50, 0x00, 0x88, 0x00, 0x04, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x02, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x0c, 0x00, 0x30, 0x00, + 0xc0, 0x00, 0xc0, 0x00, 0x30, 0x00, 0x0c, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, + 0x06, 0x00, 0x18, 0x00, 0x20, 0x00, 0xc0, 0x00, 0x00, 0x03, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x04, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x01, 0xf8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0x03, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xf8, 0x00, 0x04, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x04, 0x09, 0xf8, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x62, 0x00, 0x9c, 0x01, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, + 0xc4, 0x01, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfe, 0x03, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x03, 0xfe, 0x01, 0x00, 0x00, 0x06, 0x00, 0x38, 0x00, 0xc0, 0x00, 0x00, 0x03, 0x00, 0x03, + 0xc0, 0x00, 0x38, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1c, 0x00, 0xe0, 0x00, 0x00, 0x03, + 0xf0, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x1c, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x02, 0x02, 0x06, 0x01, 0xd8, 0x00, 0x20, 0x00, 0xd8, 0x00, 0x06, 0x01, 0x02, 0x02, 0x00, 0x00, + 0x02, 0x00, 0x0c, 0x00, 0x30, 0x00, 0xc0, 0x03, 0x30, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x03, 0x82, 0x02, 0x42, 0x02, 0x22, 0x02, 0x12, 0x02, 0x0a, 0x02, 0x06, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0x02, 0x08, 0x00, 0x00, 0x06, 0x00, 0x38, 0x00, + 0xc0, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0x48, 0x02, 0x48, 0x02, + 0x48, 0x02, 0x48, 0x01, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x18, 0x03, 0x08, 0x02, + 0x08, 0x02, 0x18, 0x03, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x18, 0x03, 0x08, 0x02, + 0x08, 0x02, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x18, 0x03, 0x08, 0x02, 0x08, 0x02, + 0x18, 0x03, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x58, 0x03, 0x48, 0x02, 0x48, 0x02, + 0x58, 0x02, 0x70, 0x01, 0x00, 0x00, 0x08, 0x00, 0xfe, 0x03, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0x01, 0x18, 0x0b, 0x08, 0x12, 0x08, 0x12, 0x18, 0x1b, 0xf8, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0xff, 0x03, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xf0, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xfa, 0x03, 0x00, 0x00, 0x00, 0x10, 0xfa, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, + 0x40, 0x00, 0xa0, 0x00, 0x10, 0x01, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xf8, 0x03, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xf0, 0x03, 0x08, 0x00, 0x08, 0x00, + 0x08, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x08, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x18, 0x03, 0x08, 0x02, 0x08, 0x02, + 0x18, 0x03, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x18, 0x03, 0x08, 0x02, 0x08, 0x02, + 0x18, 0x03, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x18, 0x03, 0x08, 0x02, 0x08, 0x02, + 0x18, 0x03, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, 0x90, 0x01, 0x00, 0x00, + 0x08, 0x00, 0xfe, 0x03, 0x08, 0x02, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x02, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0xf8, 0x03, 0x00, 0x00, 0x18, 0x00, 0xe0, 0x00, 0x00, 0x03, + 0x00, 0x03, 0xe0, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe0, 0x00, 0x00, 0x03, 0xe0, 0x00, + 0x18, 0x00, 0xe0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x02, 0xb0, 0x01, + 0x40, 0x00, 0x40, 0x00, 0xb0, 0x01, 0x08, 0x02, 0x00, 0x00, 0x18, 0x10, 0x60, 0x10, 0x80, 0x09, + 0x00, 0x07, 0xe0, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x03, 0x88, 0x02, 0x48, 0x02, 0x28, 0x02, + 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0xbe, 0x0f, 0x02, 0x08, + 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, + 0x02, 0x08, 0xbe, 0x0f, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, + 0x20, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x20, 0x00, +}; + +static const uint16_t mf_bwfont_DejaVuSans12_glyph_offsets_0[96] = { + 0x0000, 0x0000, 0x0004, 0x0009, 0x0013, 0x001b, 0x0026, 0x0030, + 0x0033, 0x0038, 0x003d, 0x0044, 0x004d, 0x0050, 0x0055, 0x0058, + 0x005d, 0x0065, 0x006c, 0x0074, 0x007c, 0x0084, 0x008c, 0x0094, + 0x009c, 0x00a4, 0x00ac, 0x00af, 0x00b2, 0x00bc, 0x00c6, 0x00d0, + 0x00d6, 0x00e3, 0x00ec, 0x00f4, 0x00fc, 0x0105, 0x010d, 0x0114, + 0x011d, 0x0126, 0x0129, 0x012c, 0x0134, 0x013b, 0x0145, 0x014e, + 0x0157, 0x015f, 0x0168, 0x0171, 0x0179, 0x0181, 0x018a, 0x0193, + 0x019f, 0x01a7, 0x01af, 0x01b8, 0x01bd, 0x01c2, 0x01c6, 0x01cf, + 0x01d6, 0x01db, 0x01e3, 0x01eb, 0x01f2, 0x01fa, 0x0202, 0x0207, + 0x020f, 0x0217, 0x021a, 0x021d, 0x0224, 0x0227, 0x0232, 0x023a, + 0x0242, 0x024a, 0x0252, 0x0258, 0x025f, 0x0264, 0x026c, 0x0273, + 0x027d, 0x0284, 0x028b, 0x0291, 0x0299, 0x029d, 0x02a4, 0x02ae, +}; + +static const uint8_t mf_bwfont_DejaVuSans12_glyph_widths_0[95] = { + 0x04, 0x05, 0x05, 0x0a, 0x08, 0x0b, 0x0a, 0x03, 0x05, 0x05, 0x06, 0x0a, 0x04, 0x04, 0x04, 0x04, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x0a, 0x0a, 0x0a, 0x06, + 0x0d, 0x08, 0x08, 0x08, 0x09, 0x08, 0x07, 0x09, 0x09, 0x03, 0x03, 0x07, 0x06, 0x0a, 0x09, 0x09, + 0x08, 0x09, 0x08, 0x08, 0x07, 0x09, 0x08, 0x0b, 0x07, 0x07, 0x09, 0x05, 0x04, 0x05, 0x0a, 0x06, + 0x06, 0x08, 0x08, 0x07, 0x08, 0x08, 0x04, 0x08, 0x08, 0x03, 0x03, 0x07, 0x03, 0x0b, 0x08, 0x08, + 0x08, 0x08, 0x05, 0x07, 0x05, 0x08, 0x06, 0x09, 0x06, 0x06, 0x05, 0x08, 0x04, 0x08, 0x0a, +}; + +static const struct mf_bwfont_char_range_s mf_bwfont_DejaVuSans12_char_ranges[] = { + { + 32, /* first char */ + 95, /* char count */ + 0, /* offset x */ + 0, /* offset y */ + 2, /* height in bytes */ + 13, /* height in pixels */ + 0, /* width */ + mf_bwfont_DejaVuSans12_glyph_widths_0, /* glyph widths */ + mf_bwfont_DejaVuSans12_glyph_offsets_0, /* glyph offsets */ + mf_bwfont_DejaVuSans12_glyph_data_0, /* glyph data */ + }, +}; + +const struct mf_bwfont_s mf_bwfont_DejaVuSans12 = { + { + "DejaVu Sans Book 12", + "DejaVuSans12", + 13, /* width */ + 13, /* height */ + 3, /* min x advance */ + 13, /* max x advance */ + 1, /* baseline x */ + 10, /* baseline y */ + 14, /* line height */ + 2, /* flags */ + 63, /* fallback character */ + &mf_bwfont_character_width, + &mf_bwfont_render_character, + }, + 4, /* version */ + 1, /* char range count */ + mf_bwfont_DejaVuSans12_char_ranges, +}; + +#ifdef MF_INCLUDED_FONTS +/* List entry for searching fonts by name. */ +static const struct mf_font_list_s mf_bwfont_DejaVuSans12_listentry = { + MF_INCLUDED_FONTS, + (struct mf_font_s*)&mf_bwfont_DejaVuSans12 +}; +#undef MF_INCLUDED_FONTS +#define MF_INCLUDED_FONTS (&mf_bwfont_DejaVuSans12_listentry) +#endif + + +/* End of automatically generated font definition for DejaVuSans12. */ + diff --git a/src/gdisp/fonts/DejaVuSans12_aa.c b/src/gdisp/fonts/DejaVuSans12_aa.c new file mode 100644 index 00000000..3384b4e3 --- /dev/null +++ b/src/gdisp/fonts/DejaVuSans12_aa.c @@ -0,0 +1,246 @@ + + +/* Start of automatically generated font definition for DejaVuSans12_aa. */ + +#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_DejaVuSans12_aa_dictionary_data[329] = { + 0x27, 0x02, 0x0b, 0x80, 0x01, 0x80, 0x07, 0x80, 0x04, 0x80, 0x02, 0x80, 0x06, 0x04, 0x80, 0x02, + 0x0e, 0xc9, 0xde, 0xc7, 0x0a, 0x06, 0x2a, 0x10, 0x84, 0x07, 0x80, 0x02, 0x80, 0x0c, 0x80, 0x0c, + 0x0f, 0x80, 0x08, 0xcd, 0xc3, 0x86, 0x0d, 0x0c, 0xc2, 0xca, 0x29, 0xc8, 0xcb, 0xc4, 0xcc, 0xce, + 0xc7, 0xcc, 0xc6, 0xcd, 0xc8, 0xcd, 0xc2, 0x01, 0xde, 0xc4, 0xce, 0xcd, 0xc4, 0xc3, 0xce, 0xc7, + 0xcb, 0xc5, 0xcb, 0x06, 0x80, 0x02, 0xc5, 0xcd, 0x07, 0xc6, 0xcd, 0xc5, 0xcc, 0x82, 0xc7, 0xcc, + 0xc3, 0xcd, 0x09, 0xc6, 0x0b, 0xc6, 0xca, 0xd1, 0xc1, 0xcd, 0xc8, 0xcd, 0xca, 0xc6, 0xce, 0xc2, + 0x01, 0xc3, 0x40, 0x03, 0xcc, 0xc3, 0x03, 0x80, 0xc1, 0x02, 0xc7, 0xce, 0x08, 0xca, 0xc4, 0x01, + 0xc2, 0xc7, 0xc9, 0xc2, 0xce, 0xce, 0xc9, 0x01, 0x80, 0xc9, 0xc7, 0x01, 0x80, 0xce, 0xd2, 0xcb, + 0xc4, 0xca, 0xc5, 0xc1, 0x05, 0xc9, 0xc1, 0xcc, 0xc4, 0xcc, 0xc2, 0xc7, 0xc8, 0xca, 0xc2, 0xce, + 0xc1, 0x81, 0x80, 0xc2, 0xcb, 0xc4, 0xcb, 0xc5, 0xca, 0xc7, 0x80, 0x07, 0xc4, 0xcb, 0xc2, 0xc1, + 0xc2, 0xcd, 0xce, 0xcb, 0xcb, 0xce, 0xc3, 0xcc, 0xc4, 0xcd, 0x80, 0xcc, 0xc1, 0xce, 0xcd, 0xc6, + 0x28, 0x28, 0x28, 0x28, 0x0f, 0x2e, 0x28, 0x02, 0x45, 0x2e, 0xbc, 0x6f, 0x02, 0x27, 0x01, 0x19, + 0x07, 0x0a, 0x23, 0x03, 0x45, 0x1f, 0xc6, 0xc5, 0x95, 0xc8, 0x00, 0x01, 0x19, 0x32, 0x3f, 0x0f, + 0x52, 0x58, 0x50, 0xa4, 0x0b, 0x5c, 0x07, 0x3f, 0x67, 0x19, 0x44, 0x3f, 0xc5, 0x6b, 0x67, 0x19, + 0x6e, 0x19, 0xa4, 0x0b, 0x5c, 0x08, 0x19, 0xa4, 0x23, 0xc6, 0x74, 0x27, 0x01, 0x08, 0x0c, 0x21, + 0x6b, 0x31, 0x5c, 0x6b, 0x36, 0x4d, 0x1c, 0x5f, 0x36, 0x4d, 0x6b, 0x31, 0x5c, 0x2a, 0x40, 0x0f, + 0x4f, 0x19, 0xa4, 0x0a, 0x6d, 0x43, 0x3f, 0x51, 0x74, 0x3f, 0xc5, 0x1c, 0x23, 0xa4, 0x2e, 0x3a, + 0x5e, 0x38, 0x03, 0x23, 0x4b, 0x50, 0x47, 0x23, 0x36, 0x19, 0x6e, 0x3d, 0x50, 0x1d, 0xcc, 0xa4, + 0x5f, 0x1d, 0x4b, 0x50, 0x47, 0x23, 0x3a, 0x04, 0x01, 0x38, 0x03, 0x3f, 0x0f, 0x1a, 0x72, 0x39, + 0x0f, 0x22, 0x19, 0x1c, 0x5f, 0x28, 0x28, 0x37, 0x08, 0x53, 0x2e, 0x24, 0x28, 0x22, 0x25, 0x0a, + 0x45, 0x0f, 0x45, 0x0c, 0x08, 0x48, 0x08, 0x0c, 0x3f, +}; + +static const uint16_t mf_rlefont_DejaVuSans12_aa_dictionary_offsets[122] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0005, 0x000b, 0x000d, 0x000e, + 0x0010, 0x0011, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, + 0x001c, 0x0020, 0x0021, 0x0023, 0x0025, 0x0026, 0x0027, 0x0028, + 0x002a, 0x002b, 0x002d, 0x002f, 0x0031, 0x0033, 0x0035, 0x0038, + 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x0046, 0x0048, + 0x0049, 0x004b, 0x004d, 0x004e, 0x0050, 0x0052, 0x0053, 0x0055, + 0x0057, 0x0058, 0x005a, 0x005c, 0x005e, 0x0060, 0x0062, 0x0064, + 0x0066, 0x0067, 0x006a, 0x006c, 0x006d, 0x006f, 0x0071, 0x0073, + 0x0075, 0x0077, 0x0079, 0x007c, 0x007e, 0x0080, 0x0082, 0x0084, + 0x0085, 0x0087, 0x0089, 0x008b, 0x008d, 0x008f, 0x0091, 0x0092, + 0x0094, 0x0096, 0x0098, 0x009a, 0x009c, 0x009e, 0x00a0, 0x00a2, + 0x00a4, 0x00a6, 0x00a8, 0x00aa, 0x00ac, 0x00ae, 0x00b0, 0x00b4, + 0x00b7, 0x00b9, 0x00bf, 0x00c3, 0x00c5, 0x00ca, 0x00cc, 0x00cf, + 0x00e8, 0x00ef, 0x00fe, 0x010c, 0x010f, 0x011e, 0x0122, 0x012c, + 0x012e, 0x0130, 0x0132, 0x0135, 0x0137, 0x013a, 0x013f, 0x0141, + 0x0143, 0x0149, +}; + +static const uint8_t mf_rlefont_DejaVuSans12_aa_glyph_data_0[2069] = { + 0x04, 0x00, 0x10, 0x05, 0x25, 0x8b, 0x0e, 0x2e, 0x0d, 0x20, 0x83, 0x0f, 0x10, 0x05, 0x1a, 0x94, + 0x1d, 0x94, 0x6b, 0xac, 0x10, 0x0a, 0x29, 0x25, 0x0d, 0x01, 0x5d, 0x3f, 0x55, 0x0c, 0x00, 0x08, + 0x06, 0x23, 0x05, 0xc3, 0x6b, 0x0a, 0x05, 0x49, 0x45, 0x0d, 0x01, 0x5d, 0x3f, 0x2c, 0x05, 0x23, + 0x05, 0x09, 0x00, 0x0b, 0x02, 0x53, 0x54, 0x49, 0x10, 0x08, 0x19, 0x25, 0x89, 0x72, 0x0f, 0x0d, + 0x05, 0x53, 0x39, 0x0f, 0x2f, 0x53, 0x65, 0x89, 0x09, 0x0c, 0x0f, 0x05, 0x22, 0x04, 0x0f, 0x0b, + 0x8e, 0x59, 0x74, 0x53, 0x60, 0x0f, 0x72, 0x53, 0x40, 0x0f, 0x39, 0x22, 0x28, 0x10, 0x0b, 0x20, + 0x88, 0x19, 0x72, 0x5f, 0x61, 0x41, 0x19, 0x0d, 0x05, 0x1e, 0x96, 0x06, 0x0b, 0x23, 0x39, 0x32, + 0x74, 0x03, 0x23, 0x88, 0x09, 0x09, 0x88, 0x5f, 0x4d, 0x65, 0x39, 0x32, 0x23, 0x0b, 0x06, 0xd6, + 0x5f, 0x41, 0x19, 0x39, 0x32, 0x5f, 0x39, 0x19, 0x88, 0x10, 0x0a, 0x25, 0x72, 0x33, 0x45, 0x0d, + 0x5e, 0x09, 0x45, 0x4c, 0x1a, 0x0b, 0x0b, 0x01, 0x45, 0x3b, 0x6c, 0x01, 0x00, 0x6e, 0x5f, 0x2b, + 0x00, 0x32, 0x01, 0x56, 0x5f, 0x4c, 0x19, 0x41, 0x36, 0x1e, 0x09, 0x0b, 0x6d, 0x06, 0x35, 0x5f, + 0x7d, 0x09, 0x37, 0x0a, 0x71, 0x08, 0x10, 0x03, 0x29, 0x77, 0x10, 0x05, 0x50, 0x08, 0x8e, 0x7d, + 0x4c, 0x22, 0x56, 0x1a, 0x68, 0x1a, 0x65, 0x83, 0x65, 0x1a, 0x68, 0x1a, 0x56, 0x1a, 0x74, 0x78, + 0x7a, 0x10, 0x05, 0x19, 0x6a, 0x22, 0x55, 0x65, 0x1a, 0x09, 0x46, 0x6c, 0x1a, 0x74, 0x2e, 0x87, + 0x74, 0x1a, 0x6c, 0x1a, 0x09, 0x06, 0x45, 0x55, 0x65, 0x22, 0x6a, 0x10, 0x06, 0x00, 0x25, 0x89, + 0x09, 0x02, 0x67, 0x09, 0x53, 0x2f, 0x0f, 0x64, 0x53, 0x2f, 0x0f, 0x64, 0x53, 0x09, 0x02, 0x67, + 0x09, 0x5f, 0xa4, 0x10, 0x0a, 0x19, 0x24, 0x28, 0x8f, 0xc3, 0x8f, 0x77, 0x10, 0x04, 0x18, 0x4e, + 0x77, 0x10, 0x04, 0x22, 0x4e, 0xbc, 0x10, 0x04, 0x18, 0x4e, 0x28, 0x10, 0x04, 0x25, 0x44, 0x1a, + 0x63, 0x1a, 0x61, 0x22, 0x74, 0x1a, 0x47, 0x1a, 0x0a, 0x46, 0x65, 0x22, 0x32, 0x1a, 0x08, 0x07, + 0x1a, 0x2b, 0x10, 0x08, 0x25, 0x08, 0x8c, 0x06, 0x62, 0x02, 0x34, 0x3f, 0x61, 0x7e, 0x65, 0x19, + 0x74, 0x3f, 0xc5, 0x6b, 0x65, 0x19, 0x74, 0x3f, 0x61, 0x7e, 0x06, 0x62, 0x02, 0x34, 0x53, 0x08, + 0x8c, 0x10, 0x08, 0x1a, 0xb4, 0x77, 0x8b, 0x8f, 0xc2, 0x10, 0x08, 0x29, 0x6c, 0x5b, 0x60, 0x3f, + 0x68, 0x48, 0x09, 0x0b, 0x1a, 0x74, 0x1a, 0x3c, 0x22, 0x44, 0x78, 0x72, 0x7b, 0x3e, 0x7b, 0x07, + 0x36, 0x45, 0xc3, 0x01, 0x10, 0x08, 0x29, 0x6c, 0x5b, 0x60, 0x3f, 0x69, 0x48, 0x3b, 0x1a, 0x74, + 0x45, 0x7d, 0x3b, 0x1e, 0xa4, 0x5b, 0x78, 0x7d, 0x31, 0x1a, 0x74, 0x3f, 0x64, 0x55, 0x09, 0x0b, + 0x3f, 0x41, 0x0f, 0x0d, 0x60, 0x10, 0x08, 0x19, 0x25, 0x0b, 0x89, 0x06, 0x0c, 0x8f, 0x49, 0x02, + 0x8f, 0x5a, 0x2a, 0x71, 0x19, 0x2a, 0x62, 0x19, 0x2a, 0xc3, 0x83, 0x0f, 0x10, 0x08, 0x2d, 0xc0, + 0x2a, 0x28, 0x0f, 0x37, 0x0c, 0x46, 0x71, 0x08, 0x1a, 0x57, 0x1a, 0x57, 0x3f, 0x0a, 0x03, 0x55, + 0x0b, 0x09, 0x3f, 0x41, 0x0f, 0x35, 0x10, 0x08, 0x29, 0x4d, 0x70, 0x75, 0x3f, 0x6e, 0x5e, 0x2f, + 0x3f, 0x0a, 0x46, 0x0e, 0x08, 0x37, 0x60, 0x19, 0xa4, 0x0a, 0x48, 0x0a, 0x09, 0x3f, 0x65, 0x19, + 0x74, 0x3f, 0x0b, 0x01, 0x19, 0x74, 0x3f, 0x47, 0x48, 0x0a, 0x09, 0x53, 0x08, 0x37, 0x0a, 0x01, + 0x10, 0x08, 0x2d, 0xc0, 0x5b, 0x1a, 0x05, 0x08, 0x1a, 0x62, 0x22, 0x05, 0x09, 0x1a, 0x62, 0x22, + 0x5d, 0x1a, 0x4f, 0x22, 0x32, 0x1a, 0x69, 0x10, 0x08, 0x20, 0x55, 0x70, 0x6f, 0x02, 0x3f, 0x90, + 0x65, 0x19, 0x74, 0x3f, 0x0a, 0x08, 0x48, 0x08, 0x0a, 0x3f, 0x6e, 0x66, 0x36, 0x23, 0x0b, 0x08, + 0x48, 0x31, 0x3f, 0x65, 0x19, 0x74, 0x3f, 0x90, 0x02, 0x70, 0x6f, 0x02, 0x10, 0x08, 0x20, 0x7d, + 0x09, 0x8c, 0x09, 0x0a, 0x48, 0x4b, 0x3f, 0x65, 0x00, 0x7d, 0x0b, 0x3f, 0x65, 0x19, 0x74, 0x3f, + 0x0a, 0x0a, 0x48, 0x0a, 0x1d, 0x7d, 0x0a, 0x37, 0x52, 0x1a, 0x47, 0x3f, 0x0a, 0x6d, 0x3e, 0x02, + 0x3f, 0x40, 0x6f, 0x03, 0x10, 0x04, 0x8d, 0x28, 0x10, 0x04, 0x8d, 0x77, 0x10, 0x0a, 0x50, 0x24, + 0x4d, 0x4a, 0x3f, 0x04, 0x09, 0x0d, 0x35, 0x03, 0x5f, 0x09, 0x0e, 0x0c, 0x07, 0x02, 0x53, 0x09, + 0x0e, 0x0c, 0x07, 0x02, 0x22, 0x04, 0x09, 0x0d, 0x35, 0x7b, 0x4d, 0x4a, 0x10, 0x0a, 0x4e, 0x0f, + 0x2c, 0x2d, 0xa4, 0x2c, 0x10, 0x0a, 0x30, 0x35, 0x7b, 0x4d, 0x4a, 0x35, 0x04, 0x45, 0x4d, 0x43, + 0x58, 0x3f, 0x55, 0x43, 0x58, 0x1e, 0x4d, 0x4a, 0x0d, 0x09, 0x04, 0x3f, 0x35, 0x03, 0x10, 0x06, + 0x20, 0x3e, 0x0f, 0x4f, 0x53, 0x0b, 0x03, 0x00, 0x3e, 0x1a, 0x6e, 0x22, 0x6e, 0x05, 0x22, 0x0c, + 0x05, 0x83, 0x2d, 0x28, 0x10, 0x0d, 0x25, 0x55, 0x4a, 0x5b, 0x54, 0x5f, 0x38, 0x08, 0x03, 0x48, + 0x05, 0x35, 0x50, 0x57, 0x04, 0x1e, 0x7d, 0x0c, 0x05, 0x19, 0x5a, 0x44, 0x33, 0x1b, 0x32, 0x19, + 0x36, 0x34, 0x01, 0x06, 0x0f, 0x7d, 0x0f, 0xc8, 0x65, 0x7d, 0x1b, 0x44, 0x19, 0x36, 0x34, 0x01, + 0x06, 0x67, 0x34, 0x19, 0x5a, 0x44, 0x0e, 0x52, 0x69, 0x50, 0x57, 0x03, 0x1a, 0x05, 0x33, 0x02, + 0x55, 0x07, 0x0a, 0x5f, 0x55, 0x09, 0x0d, 0x5b, 0x54, 0x10, 0x08, 0x00, 0x25, 0x0d, 0x0d, 0x22, + 0x44, 0x0d, 0x7b, 0x09, 0x07, 0x56, 0x45, 0x4c, 0x57, 0x53, 0x3c, 0x19, 0x69, 0x3f, 0x69, 0x19, + 0x3c, 0x5f, 0x7d, 0xc3, 0x01, 0x5f, 0x56, 0x1e, 0x5a, 0x1e, 0x61, 0x1e, 0x32, 0x10, 0x08, 0x79, + 0x43, 0x27, 0x7d, 0xe5, 0x94, 0x7d, 0x3b, 0x1e, 0xbc, 0x5b, 0x03, 0x27, 0x01, 0x3b, 0x23, 0xc6, + 0x74, 0x27, 0x01, 0x43, 0x50, 0xb4, 0x5b, 0x4f, 0x10, 0x08, 0x25, 0x32, 0x0f, 0x75, 0x3f, 0x3a, + 0x5e, 0x02, 0x09, 0x3f, 0x0a, 0x46, 0x0d, 0x02, 0x83, 0x36, 0x22, 0x0a, 0x46, 0x3a, 0x5e, 0x02, + 0x09, 0x53, 0x32, 0x0f, 0x75, 0x10, 0x09, 0x2e, 0xbc, 0x0d, 0x0a, 0x03, 0x27, 0x02, 0x52, 0x03, + 0x3d, 0x7a, 0xc5, 0x57, 0x5f, 0xc6, 0x7d, 0x1d, 0xc5, 0x57, 0x3d, 0x7a, 0x1b, 0x55, 0x52, 0x03, + 0x19, 0xb4, 0x5b, 0x0a, 0x03, 0x10, 0x08, 0x20, 0xc2, 0x6b, 0x77, 0x26, 0x6b, 0x77, 0xc3, 0x10, + 0x07, 0x2d, 0xc0, 0x2a, 0x77, 0xf3, 0x2a, 0x8b, 0x10, 0x09, 0x29, 0x4d, 0x70, 0x73, 0x05, 0x23, + 0x3a, 0x06, 0x02, 0x4d, 0x0a, 0x23, 0x6a, 0x1a, 0x4c, 0x1a, 0xb5, 0x1d, 0x4c, 0x1e, 0x1d, 0x6a, + 0x1e, 0x1d, 0x3a, 0x06, 0x48, 0x04, 0x1d, 0x4d, 0x0b, 0x37, 0x68, 0x10, 0x09, 0x53, 0x27, 0x85, + 0x1f, 0x85, 0x2c, 0x3d, 0x85, 0x1f, 0x85, 0x10, 0x03, 0x29, 0x76, 0x0f, 0x10, 0x03, 0x29, 0x77, + 0x8b, 0x87, 0x74, 0x1a, 0x06, 0x0b, 0x5f, 0xa4, 0x4f, 0x10, 0x07, 0x53, 0x27, 0x55, 0x39, 0x3d, + 0x03, 0x2b, 0x50, 0x94, 0x05, 0x2b, 0x50, 0xa4, 0x40, 0x78, 0x66, 0x04, 0x5f, 0xa4, 0x40, 0x78, + 0x1b, 0x06, 0x0e, 0x03, 0x00, 0x27, 0x05, 0x0e, 0x03, 0x23, 0xc6, 0x05, 0x0e, 0x04, 0x10, 0x06, + 0x29, 0x76, 0x26, 0x10, 0x0a, 0x22, 0xa4, 0x06, 0x1e, 0x04, 0x0f, 0x5f, 0x73, 0x1e, 0x0b, 0x0f, + 0xa4, 0x08, 0x05, 0x19, 0x04, 0x09, 0x0f, 0x5f, 0x67, 0x0c, 0x19, 0x62, 0x1b, 0x94, 0x0a, 0x05, + 0x3c, 0xf6, 0x94, 0x32, 0x61, 0xc6, 0xc8, 0x0d, 0x0d, 0xc8, 0x85, 0x0f, 0x10, 0x09, 0x29, 0x73, + 0x94, 0xa4, 0x69, 0xcc, 0xa4, 0x44, 0x00, 0xc8, 0x94, 0x5a, 0xe6, 0x94, 0x49, 0x01, 0x59, 0x3d, + 0x63, 0x59, 0x3d, 0x49, 0x02, 0x1d, 0xe5, 0x05, 0x0a, 0x1d, 0xc5, 0x0c, 0x0f, 0x10, 0x09, 0x25, + 0x32, 0x0f, 0x61, 0x3f, 0x84, 0x36, 0x19, 0x6e, 0x23, 0x86, 0x3e, 0x0f, 0x0d, 0x05, 0x10, 0x08, + 0x1a, 0xb4, 0x5b, 0x64, 0x27, 0x01, 0x31, 0x80, 0x1e, 0xbc, 0x6f, 0x02, 0x3f, 0x8b, 0x10, 0x09, + 0x25, 0x32, 0x73, 0x05, 0x3f, 0x84, 0x36, 0x19, 0x57, 0x23, 0x86, 0x3e, 0x66, 0x05, 0x1a, 0x6a, + 0x22, 0x55, 0x65, 0x10, 0x08, 0x79, 0x08, 0x0c, 0x80, 0x5f, 0xc0, 0x4c, 0x27, 0x02, 0x69, 0x27, + 0x55, 0x65, 0x23, 0xc5, 0x4b, 0x3d, 0x7e, 0x10, 0x08, 0x20, 0x7d, 0x0a, 0x0e, 0x0f, 0x68, 0x3f, + 0x0b, 0x08, 0x01, 0x00, 0x6c, 0x3f, 0x65, 0x1a, 0x0b, 0x09, 0x78, 0x7d, 0x09, 0x0d, 0x0e, 0x0a, + 0x78, 0x7d, 0x31, 0x1a, 0x74, 0x3f, 0x68, 0x7d, 0x31, 0x3f, 0x6c, 0x5b, 0x64, 0x10, 0x07, 0x20, + 0xc3, 0x8f, 0x76, 0x10, 0x09, 0x53, 0x27, 0x85, 0x1f, 0x85, 0x1f, 0x85, 0x2b, 0x50, 0x44, 0x23, + 0x3b, 0x03, 0x4d, 0x0b, 0x07, 0x3f, 0x07, 0x0d, 0x0f, 0x0d, 0x07, 0x10, 0x08, 0x2d, 0x47, 0x23, + 0x4b, 0x1e, 0x4c, 0x1e, 0x57, 0x5f, 0x63, 0x1e, 0x08, 0x07, 0x1e, 0x7d, 0x65, 0x00, 0x7d, 0x65, + 0x23, 0x5a, 0x00, 0x56, 0x3f, 0x6e, 0x19, 0x36, 0x3f, 0x0a, 0x05, 0x05, 0x8e, 0x71, 0x4f, 0x22, + 0x0c, 0x0c, 0x10, 0x0b, 0x20, 0x4f, 0x50, 0x0e, 0x50, 0x71, 0x19, 0x56, 0x00, 0x4d, 0x0f, 0x03, + 0x19, 0x5a, 0x00, 0x57, 0x19, 0x07, 0x0f, 0x07, 0x19, 0x4c, 0x50, 0x61, 0x00, 0x0a, 0x09, 0x0a, + 0x00, 0x6c, 0x1e, 0x47, 0x00, 0x0d, 0x6e, 0x00, 0x4b, 0x1e, 0x74, 0x71, 0x00, 0x4f, 0x65, 0x5f, + 0x0b, 0x0b, 0x08, 0x00, 0x31, 0x0a, 0x23, 0x05, 0x0f, 0x04, 0x00, 0x04, 0x0f, 0x05, 0x5f, 0x7d, + 0x65, 0x7d, 0x65, 0x10, 0x07, 0x20, 0x0a, 0x08, 0x50, 0x08, 0x0a, 0x23, 0x74, 0x03, 0x4d, 0x65, + 0x3f, 0x06, 0x0c, 0x00, 0x34, 0x45, 0x0b, 0x0c, 0x0b, 0x22, 0x04, 0x0f, 0x04, 0x22, 0x0b, 0x0b, + 0x0b, 0x45, 0x06, 0x0c, 0x00, 0x34, 0x23, 0x7d, 0x4c, 0x55, 0x65, 0x23, 0x6a, 0x00, 0x7a, 0x10, + 0x07, 0x20, 0x69, 0x50, 0x3c, 0x23, 0x71, 0x50, 0x4f, 0x3f, 0x54, 0x00, 0x5d, 0x3f, 0x4d, 0x0b, + 0x00, 0x0b, 0x7b, 0x0a, 0x08, 0x8e, 0x55, 0x67, 0x1a, 0x77, 0x10, 0x09, 0x29, 0xc3, 0x87, 0x63, + 0x22, 0x05, 0x8e, 0x4d, 0x0b, 0x45, 0x55, 0x0c, 0x01, 0x53, 0x7d, 0x62, 0x22, 0x68, 0x22, 0x09, + 0x46, 0x2c, 0x10, 0x05, 0x2e, 0xb4, 0x83, 0x76, 0x66, 0x10, 0x04, 0x20, 0x2b, 0x1a, 0x08, 0x07, + 0x1a, 0x32, 0x2e, 0x65, 0x1a, 0x0a, 0x46, 0x47, 0x1a, 0x74, 0x2e, 0x61, 0x1a, 0x63, 0x1a, 0x44, + 0x10, 0x05, 0x1a, 0xb4, 0x2e, 0x76, 0x6b, 0xb4, 0x10, 0x0a, 0x00, 0x25, 0x04, 0x37, 0x04, 0x53, + 0x05, 0x39, 0x72, 0x05, 0x23, 0x07, 0x62, 0x00, 0x55, 0x0c, 0x07, 0x10, 0x06, 0x3f, 0x25, 0x4e, + 0x4e, 0xc3, 0x10, 0x06, 0x7a, 0x23, 0x63, 0x10, 0x08, 0x30, 0x2f, 0x37, 0x0a, 0x01, 0x3f, 0x61, + 0x48, 0x09, 0x09, 0x1a, 0x49, 0x23, 0x4d, 0x70, 0x66, 0x6b, 0x75, 0x01, 0x7d, 0x6b, 0x0e, 0x05, + 0x00, 0x2f, 0x6b, 0x72, 0x0f, 0x75, 0x0f, 0x10, 0x08, 0x19, 0x77, 0x7f, 0x52, 0x58, 0x10, 0x07, + 0x24, 0x4a, 0x33, 0x53, 0x3b, 0x6d, 0x08, 0x53, 0x2b, 0x83, 0x2b, 0x1a, 0x3b, 0x6d, 0x08, 0x45, + 0x4a, 0x33, 0x10, 0x08, 0x3f, 0x28, 0x2a, 0x81, 0x21, 0x0f, 0x10, 0x08, 0x24, 0x07, 0x0d, 0x0e, + 0x60, 0x3f, 0x3b, 0x6d, 0x0a, 0x08, 0x3f, 0x36, 0x00, 0x49, 0x3f, 0x0e, 0xf3, 0x6b, 0x36, 0x22, + 0x3b, 0x02, 0x4d, 0x0a, 0x53, 0x40, 0x73, 0x05, 0x10, 0x04, 0x19, 0x3e, 0x89, 0x2b, 0x1a, 0x2a, + 0xbc, 0x89, 0x28, 0x8b, 0x10, 0x08, 0x24, 0x21, 0x6b, 0x31, 0x5c, 0x6b, 0x36, 0x55, 0x1c, 0x5f, + 0x36, 0x55, 0x6b, 0x31, 0x5c, 0x2a, 0x21, 0x87, 0x44, 0x53, 0x08, 0x01, 0x02, 0x0b, 0x08, 0x53, + 0x07, 0x0d, 0x0e, 0x60, 0x10, 0x08, 0x19, 0x77, 0x0f, 0x82, 0x5f, 0xc5, 0x1c, 0x10, 0x03, 0x29, + 0x8f, 0x25, 0x77, 0x8b, 0x10, 0x03, 0x29, 0x8f, 0x25, 0x77, 0x8b, 0x87, 0x44, 0x1a, 0x0e, 0x06, + 0x10, 0x07, 0x19, 0x77, 0x1f, 0x44, 0x07, 0x50, 0x94, 0x38, 0x05, 0x50, 0xa4, 0x40, 0x7b, 0x0f, + 0x35, 0x5f, 0xa4, 0x6e, 0x07, 0x5f, 0x94, 0x6e, 0x07, 0x00, 0x27, 0x49, 0x07, 0x10, 0x03, 0x19, + 0x28, 0x76, 0x10, 0x0b, 0x18, 0xf8, 0x07, 0x37, 0x05, 0x52, 0x39, 0xd4, 0x60, 0x06, 0x0e, 0x60, + 0x06, 0x0c, 0x1e, 0x51, 0x51, 0xc5, 0x7c, 0x19, 0x7c, 0x10, 0x08, 0x18, 0xf8, 0x82, 0x5f, 0xc5, + 0x1c, 0x10, 0x08, 0x24, 0x08, 0x8c, 0x31, 0x5c, 0x08, 0x3f, 0x36, 0x00, 0x44, 0x3f, 0xc5, 0x6b, + 0x36, 0x00, 0x44, 0x3f, 0x31, 0x5c, 0x08, 0x53, 0x09, 0x0e, 0x58, 0x10, 0x08, 0x30, 0x7f, 0x52, + 0x58, 0x53, 0x28, 0x89, 0x08, 0x24, 0x81, 0x21, 0x77, 0x0f, 0x10, 0x05, 0x18, 0xf8, 0x07, 0x0d, + 0xc5, 0xa4, 0x64, 0x22, 0x67, 0x1a, 0x8b, 0x10, 0x07, 0x30, 0x32, 0x0f, 0x75, 0x53, 0x0e, 0x05, + 0x55, 0x09, 0x53, 0x75, 0x78, 0x4d, 0x0a, 0x0e, 0x39, 0x1a, 0x38, 0x53, 0x64, 0x00, 0x72, 0x53, + 0x3e, 0x0f, 0x61, 0x10, 0x05, 0x1e, 0x83, 0x2a, 0xbc, 0x89, 0x8b, 0x4c, 0x1a, 0x52, 0x0f, 0x10, + 0x08, 0x18, 0xc8, 0x8a, 0x1f, 0x8a, 0x51, 0x01, 0x6b, 0x0c, 0x07, 0x01, 0x2f, 0x6b, 0x71, 0x0f, + 0x75, 0x0f, 0x10, 0x06, 0x18, 0x44, 0x1e, 0x2b, 0x23, 0x61, 0x7e, 0x47, 0x19, 0x4b, 0x3f, 0x74, + 0x48, 0x65, 0x53, 0x6a, 0x07, 0x8e, 0x88, 0x22, 0x0d, 0x0d, 0x10, 0x09, 0x00, 0x18, 0x36, 0x02, + 0x67, 0x00, 0x6e, 0x1e, 0x09, 0x06, 0x00, 0x06, 0x0f, 0x06, 0x00, 0x06, 0x09, 0x1e, 0x5d, 0x00, + 0x0b, 0x31, 0x00, 0x54, 0x1e, 0x49, 0x74, 0x74, 0x49, 0x23, 0x0b, 0x3b, 0x00, 0x0b, 0x3b, 0x23, + 0x06, 0x33, 0x00, 0x52, 0x06, 0x5f, 0x55, 0x0f, 0x03, 0x4d, 0x67, 0x10, 0x06, 0x00, 0x18, 0x68, + 0x19, 0x6c, 0x3f, 0x44, 0x19, 0x62, 0x53, 0x6a, 0x63, 0x45, 0x3e, 0x0d, 0x78, 0x0b, 0x06, 0x06, + 0x09, 0x53, 0x72, 0x19, 0x4f, 0x3f, 0x69, 0x19, 0x6c, 0x10, 0x06, 0x18, 0x01, 0x65, 0x50, 0x65, + 0x23, 0x5a, 0x00, 0x6c, 0x3f, 0x6e, 0x19, 0x09, 0x05, 0x53, 0x0a, 0x05, 0x00, 0x0d, 0x01, 0x3f, + 0x4d, 0x4f, 0x09, 0x22, 0x0b, 0x68, 0x22, 0x3e, 0x1a, 0x06, 0x08, 0x22, 0x49, 0x78, 0x66, 0x06, + 0x10, 0x05, 0x18, 0xe2, 0x87, 0x06, 0x09, 0x45, 0x4d, 0x0b, 0x45, 0x55, 0x62, 0x22, 0x0b, 0x03, + 0x22, 0x09, 0x46, 0x26, 0x10, 0x08, 0x19, 0x25, 0x40, 0x89, 0x0e, 0x04, 0x83, 0x87, 0x3e, 0x23, + 0xb4, 0x46, 0x3e, 0x2e, 0x28, 0x0e, 0x03, 0x1a, 0x40, 0x0f, 0x10, 0x04, 0x25, 0x77, 0x76, 0x8f, + 0x08, 0x29, 0x5b, 0x46, 0x38, 0x2e, 0x28, 0x0d, 0x05, 0x1a, 0x06, 0x0f, 0x89, 0x0d, 0x05, 0x83, + 0x87, 0x38, 0x22, 0x5b, 0x06, 0x10, 0x0a, 0x4e, 0x41, 0x6f, 0x5e, 0x02, 0x0b, 0x5f, 0x09, 0x6d, + 0x05, 0x70, 0x0c, 0x05, 0x10, +}; + +static const uint16_t mf_rlefont_DejaVuSans12_aa_glyph_offsets_0[95] = { + 0x0000, 0x0003, 0x000d, 0x0015, 0x0039, 0x005e, 0x008a, 0x00b7, + 0x00bb, 0x00d2, 0x00ec, 0x0104, 0x010d, 0x0112, 0x0117, 0x011c, + 0x0133, 0x0152, 0x015a, 0x0175, 0x0196, 0x01ad, 0x01c7, 0x01f1, + 0x0208, 0x022d, 0x0255, 0x0259, 0x025d, 0x027d, 0x0285, 0x029f, + 0x02b5, 0x02fa, 0x031e, 0x0339, 0x0356, 0x0376, 0x0380, 0x0389, + 0x03ac, 0x03b8, 0x03bd, 0x03ca, 0x03ef, 0x03f4, 0x041d, 0x043e, + 0x044f, 0x045f, 0x0474, 0x0488, 0x04ae, 0x04b4, 0x04cc, 0x04f3, + 0x0534, 0x0560, 0x057b, 0x0593, 0x059a, 0x05b1, 0x05b9, 0x05cc, + 0x05d3, 0x05d8, 0x05f8, 0x05ff, 0x0613, 0x061b, 0x0639, 0x0645, + 0x0665, 0x066e, 0x0675, 0x0681, 0x069e, 0x06a3, 0x06ba, 0x06c2, + 0x06dc, 0x06e4, 0x06eb, 0x06f8, 0x0714, 0x0720, 0x0733, 0x074b, + 0x077c, 0x079a, 0x07c1, 0x07d5, 0x07eb, 0x07f0, 0x0806, +}; + +static const struct mf_rlefont_char_range_s mf_rlefont_DejaVuSans12_aa_char_ranges[] = { + {32, 95, mf_rlefont_DejaVuSans12_aa_glyph_offsets_0, mf_rlefont_DejaVuSans12_aa_glyph_data_0}, +}; + +const struct mf_rlefont_s mf_rlefont_DejaVuSans12_aa = { + { + "DejaVu Sans Book 12", + "DejaVuSans12_aa", + 13, /* width */ + 13, /* height */ + 3, /* min x advance */ + 13, /* max x advance */ + 1, /* baseline x */ + 10, /* baseline y */ + 14, /* line height */ + 0, /* flags */ + 63, /* fallback character */ + &mf_rlefont_character_width, + &mf_rlefont_render_character, + }, + 4, /* version */ + mf_rlefont_DejaVuSans12_aa_dictionary_data, + mf_rlefont_DejaVuSans12_aa_dictionary_offsets, + 94, /* rle dict count */ + 121, /* total dict count */ + 1, /* char range count */ + mf_rlefont_DejaVuSans12_aa_char_ranges, +}; + +#ifdef MF_INCLUDED_FONTS +/* List entry for searching fonts by name. */ +static const struct mf_font_list_s mf_rlefont_DejaVuSans12_aa_listentry = { + MF_INCLUDED_FONTS, + (struct mf_font_s*)&mf_rlefont_DejaVuSans12_aa +}; +#undef MF_INCLUDED_FONTS +#define MF_INCLUDED_FONTS (&mf_rlefont_DejaVuSans12_aa_listentry) +#endif + + +/* End of automatically generated font definition for DejaVuSans12_aa. */ + diff --git a/src/gdisp/fonts/DejaVuSans16.c b/src/gdisp/fonts/DejaVuSans16.c new file mode 100644 index 00000000..375ec048 --- /dev/null +++ b/src/gdisp/fonts/DejaVuSans16.c @@ -0,0 +1,179 @@ + + +/* Start of automatically generated font definition for DejaVuSans16. */ + +#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_DejaVuSans16_dictionary_data[247] = { + 0x0f, 0x15, 0x83, 0x0a, 0x41, 0x2f, 0x06, 0x0a, 0x80, 0x01, 0x0b, 0x83, 0x01, 0x3d, 0x05, 0x80, + 0x09, 0x80, 0x06, 0x80, 0x09, 0x80, 0x06, 0x80, 0x09, 0x80, 0x01, 0x05, 0x80, 0x03, 0x0a, 0x81, + 0x0e, 0x80, 0x0d, 0x03, 0x80, 0x01, 0x0f, 0x80, 0x10, 0x80, 0x10, 0x80, 0x01, 0x09, 0x80, 0x01, + 0x04, 0x07, 0x80, 0x07, 0x80, 0x08, 0x80, 0x0b, 0x08, 0x80, 0x01, 0x0f, 0x80, 0x10, 0x80, 0x01, + 0x0d, 0x80, 0x01, 0x80, 0x03, 0x80, 0x07, 0x80, 0x01, 0x13, 0x02, 0x80, 0x06, 0x80, 0x01, 0x03, + 0x81, 0x01, 0x03, 0x84, 0x13, 0x87, 0x07, 0x81, 0x01, 0x80, 0x0c, 0x04, 0x80, 0x0a, 0x10, 0x14, + 0x04, 0x80, 0x01, 0x80, 0x01, 0x81, 0x01, 0x80, 0x01, 0x84, 0x82, 0x85, 0xa4, 0xb4, 0x26, 0xa4, + 0x26, 0x20, 0x21, 0x27, 0xf4, 0x2c, 0x1d, 0xc8, 0x1d, 0x00, 0x25, 0xb4, 0x22, 0x3f, 0xd4, 0x1d, + 0xf5, 0xac, 0x30, 0x31, 0x2d, 0x32, 0x22, 0xcf, 0x2b, 0x25, 0x00, 0x1d, 0xd4, 0x1d, 0x37, 0x29, + 0xd0, 0x2e, 0x28, 0x2e, 0x28, 0xf2, 0x29, 0x2f, 0x83, 0x1d, 0x3b, 0xa4, 0x26, 0x20, 0x21, 0x3c, + 0x1c, 0x22, 0x0f, 0x26, 0x21, 0x1c, 0x2c, 0x36, 0xfa, 0xc6, 0x1d, 0x36, 0xd4, 0xa4, 0x3a, 0x2a, + 0xf4, 0x8c, 0x20, 0x20, 0x31, 0x31, 0x2a, 0x29, 0x2a, 0x1f, 0x26, 0x3b, 0x25, 0xfe, 0x3a, 0xf4, + 0x29, 0x36, 0x0f, 0xa3, 0x1d, 0xc4, 0x74, 0x83, 0x1c, 0x32, 0x36, 0x95, 0x24, 0x23, 0x00, 0x29, + 0x31, 0xd0, 0xd8, 0x2a, 0xd5, 0x86, 0xa4, 0xa4, 0x1d, 0x37, 0x2d, 0x29, 0x2d, 0xd3, 0x22, 0x37, + 0x37, 0x31, 0x19, 0x1a, 0xc2, 0x29, 0x30, 0x2e, 0xb4, 0x26, 0xd4, 0x1c, 0x2d, 0xa4, 0x26, 0xc4, + 0xc0, 0xc4, 0x2d, 0x2d, 0x23, 0xfc, 0x36, +}; + +static const uint16_t mf_rlefont_DejaVuSans16_dictionary_offsets[88] = { + 0x0000, 0x0001, 0x0002, 0x0004, 0x0006, 0x0007, 0x000a, 0x000d, + 0x000e, 0x001b, 0x001e, 0x0020, 0x0023, 0x0026, 0x002d, 0x0030, + 0x0031, 0x0037, 0x0038, 0x003b, 0x0040, 0x0042, 0x0046, 0x0049, + 0x004a, 0x004c, 0x004f, 0x0052, 0x0054, 0x0056, 0x0058, 0x005b, + 0x005e, 0x005f, 0x0060, 0x0063, 0x0065, 0x0066, 0x0069, 0x006a, + 0x006b, 0x0074, 0x0076, 0x0079, 0x007b, 0x007e, 0x0080, 0x0082, + 0x0085, 0x0088, 0x008a, 0x008c, 0x008f, 0x0091, 0x0095, 0x0097, + 0x009a, 0x009f, 0x00a2, 0x00a6, 0x00a8, 0x00a9, 0x00ac, 0x00af, + 0x00b7, 0x00b9, 0x00bb, 0x00bd, 0x00bf, 0x00c2, 0x00c5, 0x00cc, + 0x00cf, 0x00d1, 0x00d2, 0x00da, 0x00dd, 0x00e0, 0x00e2, 0x00e4, + 0x00e6, 0x00e8, 0x00ea, 0x00ed, 0x00f0, 0x00f1, 0x00f4, 0x00f7, +}; + +static const uint8_t mf_rlefont_DejaVuSans16_glyph_data_0[1166] = { + 0x05, 0x00, 0x10, 0x06, 0x27, 0x43, 0x49, 0x18, 0x2f, 0x2b, 0x10, 0x06, 0x58, 0x55, 0x3d, 0x55, + 0x10, 0x0d, 0xf4, 0x19, 0x41, 0x8d, 0x42, 0xfa, 0x5e, 0x29, 0xdd, 0x5e, 0x29, 0xdd, 0x10, 0x0a, + 0x2f, 0x65, 0x2c, 0x1a, 0xfe, 0xa9, 0x1d, 0x55, 0xe0, 0x38, 0x8b, 0x4a, 0x36, 0xd6, 0x1d, 0xde, + 0x29, 0x3e, 0x6e, 0x10, 0x0f, 0x2f, 0xd2, 0x6a, 0x6a, 0xf4, 0x85, 0x8c, 0xb6, 0x2a, 0xa8, 0x22, + 0xed, 0x18, 0x76, 0x1d, 0xc6, 0x85, 0x32, 0x2d, 0x2a, 0xe8, 0x68, 0x24, 0x68, 0x74, 0x10, 0x0c, + 0x66, 0xfc, 0xa7, 0x4a, 0x5c, 0xfc, 0x8c, 0x53, 0xc6, 0xa5, 0x1c, 0x5b, 0x68, 0x3a, 0x86, 0x8c, + 0x69, 0x44, 0x30, 0x10, 0x03, 0x2f, 0x5a, 0x10, 0x06, 0x2f, 0xd0, 0x4c, 0x6e, 0x24, 0x49, 0x41, + 0x41, 0x38, 0x51, 0x10, 0x06, 0x2f, 0x51, 0x41, 0x41, 0x60, 0x49, 0x6e, 0x32, 0x4c, 0x10, 0x08, + 0xfc, 0x1c, 0x6e, 0x96, 0x86, 0x1c, 0x67, 0xa0, 0x29, 0x6f, 0x2c, 0x41, 0x10, 0x0d, 0x1f, 0x23, + 0x8c, 0x6e, 0xf3, 0xa3, 0x29, 0x5a, 0x10, 0x05, 0x1b, 0x25, 0x23, 0x10, 0x06, 0x18, 0x1f, 0x1f, + 0xe2, 0x10, 0x05, 0x1b, 0x2b, 0x10, 0x05, 0x1c, 0x41, 0x41, 0x25, 0x6e, 0xd4, 0x25, 0x27, 0x22, + 0x5c, 0x10, 0x0a, 0x66, 0x30, 0x37, 0xfe, 0x45, 0x20, 0x6b, 0x52, 0xfe, 0x37, 0x5b, 0x1e, 0x10, + 0x0a, 0x2f, 0xe0, 0x4c, 0x5a, 0x49, 0x00, 0x23, 0x83, 0x10, 0x0a, 0x2f, 0xa2, 0x29, 0xa7, 0x4a, + 0x65, 0x5c, 0x5f, 0x36, 0x5f, 0xfe, 0x38, 0x83, 0x10, 0x0a, 0x2f, 0x67, 0xe5, 0x90, 0x6e, 0xdc, + 0x1e, 0x41, 0x5a, 0x2a, 0x37, 0xc2, 0x10, 0x0a, 0x29, 0x4c, 0x53, 0x30, 0x55, 0xd5, 0x29, 0xa5, + 0x1c, 0xa4, 0x4b, 0x3c, 0x83, 0x6e, 0xd4, 0x10, 0x0a, 0x39, 0x5d, 0x5c, 0xd4, 0x18, 0x67, 0x5b, + 0x38, 0x5a, 0x2a, 0x37, 0xc2, 0x10, 0x0a, 0x39, 0xa0, 0x29, 0xa7, 0x1c, 0xa4, 0x2b, 0x64, 0x3b, + 0x20, 0x21, 0x1c, 0x5b, 0x1e, 0x10, 0x0a, 0x34, 0x41, 0x2b, 0x23, 0xec, 0x25, 0x6e, 0xec, 0x10, + 0x0a, 0x66, 0xfa, 0x69, 0x6b, 0xf5, 0x35, 0xb4, 0x1e, 0x22, 0x69, 0x6b, 0x52, 0x5b, 0x1e, 0x10, + 0x0a, 0x66, 0x30, 0x45, 0x45, 0x6b, 0x52, 0x3d, 0x48, 0x5c, 0xec, 0x4a, 0x90, 0x1c, 0x74, 0x10, + 0x05, 0x29, 0x1f, 0x41, 0x41, 0x2f, 0x1f, 0x65, 0x10, 0x05, 0x00, 0x29, 0x1f, 0x2b, 0x1c, 0x1f, + 0x43, 0x23, 0x10, 0x0d, 0x27, 0x1f, 0x5c, 0x4e, 0x3f, 0x29, 0x92, 0x4a, 0x41, 0x51, 0x0f, 0x18, + 0xa0, 0x41, 0x10, 0x0d, 0x39, 0x19, 0x1f, 0x33, 0xa3, 0x19, 0x34, 0x3c, 0x10, 0x0d, 0x00, 0x59, + 0x18, 0xd2, 0x41, 0x51, 0xf5, 0x5c, 0x4e, 0x4e, 0x3f, 0x2c, 0x10, 0x09, 0x2f, 0xa2, 0x4a, 0x8c, + 0x6e, 0x32, 0x4c, 0x4c, 0x6e, 0x1c, 0x2b, 0x10, 0x10, 0x38, 0x35, 0x1a, 0xf7, 0xb4, 0x2e, 0x35, + 0x21, 0xb3, 0x86, 0x97, 0x32, 0x2d, 0x47, 0x47, 0x47, 0x47, 0x8d, 0xb0, 0x21, 0x73, 0x1c, 0x86, + 0x4c, 0x44, 0x0f, 0x10, 0x0b, 0x39, 0x8c, 0x23, 0x98, 0x53, 0x63, 0x4a, 0x4b, 0x3f, 0x93, 0x28, + 0xc4, 0x68, 0x2a, 0x10, 0x0b, 0x4f, 0xfc, 0x32, 0x28, 0xfc, 0x21, 0x21, 0x32, 0x1c, 0x82, 0x87, + 0x21, 0x32, 0x28, 0x2e, 0x28, 0x00, 0x21, 0x1c, 0x83, 0x10, 0x0b, 0x19, 0x67, 0x0f, 0x69, 0xf4, + 0x4a, 0x49, 0x41, 0x60, 0xdc, 0x29, 0x3e, 0x10, 0x0c, 0x4f, 0x69, 0x31, 0x2e, 0x28, 0x4d, 0x28, + 0x27, 0x8a, 0x1c, 0x83, 0x10, 0x0a, 0x34, 0x26, 0x25, 0x18, 0x83, 0x85, 0x65, 0x25, 0xfc, 0x2c, + 0x83, 0x10, 0x09, 0x4f, 0x25, 0x18, 0x5d, 0x49, 0x10, 0x0c, 0x19, 0x82, 0x1d, 0xb4, 0x1c, 0x68, + 0x1c, 0x5a, 0x00, 0x7c, 0x2e, 0x28, 0x2a, 0x1c, 0x52, 0x82, 0x10, 0x0c, 0x2f, 0xe5, 0xa4, 0x4d, + 0xf4, 0x74, 0x83, 0x2e, 0x28, 0x4d, 0x10, 0x05, 0xc4, 0x2b, 0x49, 0x49, 0x10, 0x05, 0x39, 0x5a, + 0x49, 0x49, 0x4c, 0x10, 0x0a, 0x58, 0xa4, 0x26, 0x45, 0x24, 0x42, 0x36, 0xd2, 0x53, 0x30, 0x88, + 0x42, 0xec, 0x4a, 0x45, 0xa4, 0x10, 0x09, 0x58, 0x49, 0x49, 0x18, 0x83, 0x10, 0x0d, 0xf4, 0x41, + 0x85, 0x90, 0xb4, 0x35, 0x31, 0x46, 0x31, 0x46, 0x31, 0x46, 0x31, 0x2d, 0x47, 0x30, 0x6d, 0x6d, + 0x00, 0x21, 0x5b, 0x6b, 0xc5, 0xa4, 0x10, 0x0c, 0x2f, 0x87, 0x8c, 0xa4, 0x86, 0x68, 0xc5, 0x68, + 0x3d, 0x6a, 0x6a, 0xd4, 0x1c, 0x5b, 0x68, 0xd4, 0x68, 0xd4, 0x68, 0xf4, 0x98, 0x1c, 0x85, 0x8e, + 0xa4, 0x35, 0x10, 0x0d, 0x2f, 0x33, 0x4a, 0x3a, 0x57, 0x37, 0xc2, 0x10, 0x0a, 0x2f, 0x5d, 0x45, + 0x20, 0x37, 0x5d, 0x18, 0x5a, 0x10, 0x0d, 0x2f, 0x33, 0x4a, 0x3a, 0x57, 0x44, 0x60, 0x41, 0x10, + 0x0b, 0x2f, 0x5d, 0x45, 0x20, 0x37, 0x83, 0x1d, 0x45, 0x6b, 0xf5, 0x28, 0x2e, 0x10, 0x0a, 0x66, + 0xfe, 0xb5, 0x1d, 0x2b, 0x41, 0x51, 0x51, 0x38, 0x52, 0x3c, 0x44, 0x10, 0x09, 0x18, 0x7c, 0xa3, + 0x4a, 0x49, 0x49, 0x10, 0x0c, 0x58, 0x28, 0x4d, 0x4d, 0x2a, 0x21, 0x1c, 0x82, 0x10, 0x0b, 0xfc, + 0x38, 0x52, 0x0f, 0x28, 0x2e, 0x2a, 0x4b, 0x2d, 0x29, 0x63, 0x53, 0xd8, 0x5c, 0x10, 0x11, 0x58, + 0xc4, 0x85, 0x96, 0xa4, 0x31, 0x88, 0x8e, 0x88, 0x86, 0x89, 0x86, 0xa5, 0x5b, 0x3a, 0x98, 0x47, + 0x47, 0x68, 0x3b, 0x62, 0x10, 0x0b, 0x1c, 0x4c, 0x69, 0x37, 0x63, 0x29, 0x98, 0x23, 0x8c, 0x53, + 0x63, 0x1c, 0xa4, 0x6b, 0xfe, 0x10, 0x09, 0x38, 0x68, 0x2a, 0x37, 0x63, 0x29, 0xd8, 0x2b, 0x49, + 0x10, 0x0c, 0x34, 0xf7, 0x5c, 0x5f, 0x36, 0x5f, 0x36, 0x5f, 0x36, 0x74, 0x83, 0x10, 0x06, 0x2f, + 0x8b, 0x4a, 0x49, 0x49, 0x5c, 0x74, 0x10, 0x05, 0xfc, 0x41, 0x41, 0x5a, 0x43, 0x43, 0x41, 0x41, + 0x10, 0x06, 0x2f, 0xd2, 0x49, 0x49, 0x5c, 0x37, 0x74, 0x10, 0x0d, 0xfc, 0x19, 0x8a, 0x1e, 0x1c, + 0xa4, 0x45, 0xa4, 0x10, 0x08, 0xfc, 0x38, 0x1f, 0x1b, 0x34, 0x10, 0x08, 0xf0, 0x38, 0x51, 0x10, + 0x09, 0x1f, 0x1e, 0x4a, 0xd0, 0x29, 0x37, 0x82, 0x22, 0x45, 0x4b, 0x3c, 0x48, 0x10, 0x0a, 0x2f, + 0x5a, 0x64, 0x50, 0xfc, 0xb4, 0x37, 0xc1, 0x10, 0x09, 0x1f, 0x1e, 0x1c, 0xa4, 0x45, 0x18, 0x5a, + 0x41, 0x37, 0xc0, 0x10, 0x0a, 0x29, 0x25, 0x22, 0xf7, 0x40, 0x24, 0x48, 0x10, 0x09, 0x29, 0x1f, + 0xeb, 0x29, 0x2d, 0x4a, 0x4b, 0x83, 0x1c, 0x65, 0x41, 0x37, 0xc0, 0x10, 0x06, 0x39, 0x92, 0x4a, + 0x5c, 0x7c, 0x6e, 0x3a, 0x49, 0x10, 0x0a, 0x1f, 0x1e, 0x40, 0x24, 0x48, 0x29, 0x45, 0x24, 0x1e, + 0x10, 0x0a, 0x2f, 0x5a, 0x64, 0x3b, 0x20, 0x20, 0xa4, 0x10, 0x03, 0xc4, 0x6e, 0x19, 0x5a, 0x49, + 0x10, 0x03, 0xc4, 0x6e, 0x1c, 0x49, 0x49, 0x5c, 0xf0, 0x10, 0x09, 0x2f, 0x5a, 0x45, 0x24, 0x42, + 0x36, 0xd2, 0x2c, 0x88, 0x42, 0xec, 0x4a, 0xd4, 0x10, 0x03, 0x27, 0x2b, 0x49, 0x49, 0x10, 0x0f, + 0x59, 0x3f, 0x7d, 0xa4, 0xb5, 0xb5, 0x3a, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0xd4, 0xa4, 0x10, + 0x0a, 0x59, 0x64, 0x3b, 0x20, 0x20, 0xa4, 0x10, 0x0a, 0x1f, 0x1e, 0x1c, 0xa4, 0x37, 0x50, 0x1c, + 0x5b, 0x1e, 0x10, 0x0a, 0x59, 0x64, 0x50, 0xfc, 0xb4, 0x37, 0xc1, 0x4a, 0x2b, 0x10, 0x0a, 0x1f, + 0x1e, 0x40, 0x24, 0x48, 0x25, 0x10, 0x07, 0x59, 0xcb, 0x22, 0x2b, 0x49, 0x10, 0x09, 0x1f, 0x22, + 0x3f, 0x4a, 0x45, 0x18, 0x51, 0x87, 0x4c, 0x29, 0x4b, 0xc2, 0x10, 0x06, 0x00, 0x19, 0x6e, 0x33, + 0x2c, 0x43, 0x25, 0x18, 0xf2, 0x10, 0x0a, 0x59, 0x20, 0x20, 0x00, 0x45, 0x48, 0x10, 0x09, 0x00, + 0x1f, 0x28, 0x2e, 0x2a, 0x4b, 0x63, 0x53, 0xe0, 0x5c, 0x10, 0x0d, 0x1f, 0x2a, 0x56, 0xf4, 0x86, + 0x86, 0x2d, 0x2d, 0x31, 0x98, 0x47, 0x68, 0x3b, 0x62, 0x10, 0x0a, 0xfc, 0x1f, 0x35, 0xb4, 0x1d, + 0x24, 0x4a, 0x55, 0x00, 0x8a, 0x4a, 0x55, 0xa5, 0x22, 0xb4, 0x10, 0x09, 0x1c, 0x1f, 0x68, 0x2a, + 0x4b, 0xfe, 0x37, 0x63, 0x53, 0x00, 0x8e, 0x4c, 0x6e, 0xf2, 0x10, 0x09, 0xfc, 0x1f, 0x35, 0xa3, + 0x5c, 0x5f, 0x36, 0x5f, 0xfe, 0x38, 0x83, 0x10, 0x0a, 0x00, 0x19, 0x8a, 0x4a, 0x49, 0x4c, 0x43, + 0x25, 0x1c, 0x22, 0x10, 0x05, 0x00, 0x58, 0x49, 0x49, 0x49, 0x10, 0x0a, 0x38, 0xb4, 0x60, 0x49, + 0x18, 0x8a, 0x4a, 0x49, 0x4c, 0x10, 0x0d, 0x00, 0x1f, 0x1f, 0x93, 0x68, 0x7c, 0x10, +}; + +static const uint16_t mf_rlefont_DejaVuSans16_glyph_offsets_0[95] = { + 0x0000, 0x0003, 0x000b, 0x0011, 0x001f, 0x0034, 0x004f, 0x0064, + 0x0068, 0x0074, 0x007f, 0x008d, 0x0097, 0x009c, 0x00a2, 0x00a6, + 0x00b2, 0x00c0, 0x00ca, 0x00d9, 0x00e7, 0x00f8, 0x0106, 0x0116, + 0x0120, 0x0130, 0x0140, 0x0149, 0x0153, 0x0163, 0x016d, 0x017b, + 0x0188, 0x01a4, 0x01b4, 0x01ca, 0x01d8, 0x01e5, 0x01f2, 0x01f9, + 0x020b, 0x0217, 0x021d, 0x0224, 0x0236, 0x023d, 0x0257, 0x0273, + 0x027c, 0x0286, 0x0290, 0x029e, 0x02ac, 0x02b4, 0x02be, 0x02ce, + 0x02e5, 0x02f6, 0x0301, 0x030e, 0x0317, 0x0321, 0x032a, 0x0334, + 0x033b, 0x0340, 0x034e, 0x0358, 0x0364, 0x036d, 0x037c, 0x0386, + 0x0391, 0x039a, 0x03a1, 0x03aa, 0x03b9, 0x03bf, 0x03d0, 0x03d8, + 0x03e3, 0x03ee, 0x03f6, 0x03fd, 0x040b, 0x0416, 0x041e, 0x042a, + 0x043a, 0x044b, 0x045b, 0x0468, 0x0474, 0x047b, 0x0486, +}; + +static const struct mf_rlefont_char_range_s mf_rlefont_DejaVuSans16_char_ranges[] = { + {32, 95, mf_rlefont_DejaVuSans16_glyph_offsets_0, mf_rlefont_DejaVuSans16_glyph_data_0}, +}; + +const struct mf_rlefont_s mf_rlefont_DejaVuSans16 = { + { + "DejaVu Sans Book 16", + "DejaVuSans16", + 17, /* width */ + 17, /* height */ + 3, /* min x advance */ + 17, /* max x advance */ + 1, /* baseline x */ + 13, /* baseline y */ + 19, /* line height */ + 2, /* flags */ + 63, /* fallback character */ + &mf_rlefont_character_width, + &mf_rlefont_render_character, + }, + 4, /* version */ + mf_rlefont_DejaVuSans16_dictionary_data, + mf_rlefont_DejaVuSans16_dictionary_offsets, + 40, /* rle dict count */ + 87, /* total dict count */ + 1, /* char range count */ + mf_rlefont_DejaVuSans16_char_ranges, +}; + +#ifdef MF_INCLUDED_FONTS +/* List entry for searching fonts by name. */ +static const struct mf_font_list_s mf_rlefont_DejaVuSans16_listentry = { + MF_INCLUDED_FONTS, + (struct mf_font_s*)&mf_rlefont_DejaVuSans16 +}; +#undef MF_INCLUDED_FONTS +#define MF_INCLUDED_FONTS (&mf_rlefont_DejaVuSans16_listentry) +#endif + + +/* End of automatically generated font definition for DejaVuSans16. */ + diff --git a/src/gdisp/fonts/DejaVuSans16_aa.c b/src/gdisp/fonts/DejaVuSans16_aa.c new file mode 100644 index 00000000..adcf9a37 --- /dev/null +++ b/src/gdisp/fonts/DejaVuSans16_aa.c @@ -0,0 +1,303 @@ + + +/* Start of automatically generated font definition for DejaVuSans16_aa. */ + +#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_DejaVuSans16_aa_dictionary_data[425] = { + 0x02, 0x07, 0x05, 0x16, 0x0a, 0x80, 0x02, 0x09, 0x04, 0x11, 0x10, 0x0a, 0x08, 0x01, 0x80, 0x04, + 0x80, 0x08, 0x80, 0x40, 0x08, 0x86, 0x14, 0x80, 0x01, 0x80, 0x11, 0x80, 0x11, 0x80, 0xc1, 0x80, + 0xc3, 0xcb, 0xde, 0x88, 0x85, 0x80, 0x0e, 0x01, 0xc1, 0x07, 0xc7, 0xc9, 0x07, 0x80, 0x03, 0xca, + 0xc7, 0xcc, 0xc4, 0x01, 0xc7, 0xc8, 0xcb, 0xc4, 0xcd, 0xc8, 0xce, 0xc2, 0xcd, 0xc2, 0xca, 0xc6, + 0xc3, 0xca, 0xc5, 0xcc, 0xc7, 0xca, 0xcc, 0xc1, 0xca, 0xc2, 0xce, 0xc5, 0x81, 0xc7, 0xcd, 0xc9, + 0xc5, 0x02, 0x80, 0xd1, 0xc6, 0xc8, 0xca, 0xc5, 0xcd, 0x0c, 0x80, 0xcd, 0xc2, 0x80, 0xce, 0x80, + 0xc6, 0xcd, 0xc9, 0xcd, 0x80, 0xc2, 0x82, 0xcb, 0xc6, 0xc3, 0xcd, 0xc4, 0xca, 0xce, 0x0f, 0xce, + 0xc3, 0xcc, 0xc5, 0x01, 0xc6, 0xca, 0x80, 0x02, 0xc1, 0xcd, 0x0e, 0xc4, 0xcc, 0xcc, 0xc3, 0x01, + 0xc7, 0x80, 0x80, 0xc1, 0xc8, 0xc9, 0x80, 0xce, 0xc6, 0xcc, 0x80, 0x11, 0x80, 0xca, 0xc4, 0x80, + 0xc7, 0xc2, 0xce, 0x01, 0xc2, 0xce, 0xc6, 0xc2, 0xcd, 0xc4, 0xcb, 0x28, 0x15, 0xd1, 0xc9, 0xc7, + 0xcc, 0xc7, 0x14, 0x80, 0xd8, 0xc9, 0xca, 0xcd, 0xc3, 0xcd, 0xc4, 0xc6, 0x80, 0xc6, 0xc1, 0xc2, + 0xcc, 0xc6, 0xc7, 0x01, 0xc7, 0xc6, 0xc9, 0x03, 0xc8, 0xcd, 0xce, 0xc1, 0xc5, 0xcb, 0xde, 0xca, + 0xc8, 0xcb, 0xc5, 0x0b, 0xc6, 0xcb, 0xce, 0xcb, 0x0d, 0xc3, 0xcc, 0xc7, 0xcc, 0xc4, 0xcd, 0x05, + 0x80, 0xc1, 0xce, 0x80, 0x0a, 0x2a, 0x1f, 0x2a, 0x1e, 0x87, 0x1d, 0x26, 0x44, 0x38, 0x19, 0x6c, + 0x31, 0x71, 0x19, 0x51, 0x18, 0x86, 0x22, 0x87, 0x18, 0x86, 0x22, 0x87, 0x19, 0x71, 0x19, 0x51, + 0x19, 0x6c, 0x25, 0x25, 0x25, 0x25, 0x23, 0x1c, 0x1e, 0x88, 0x1b, 0x3b, 0x0e, 0x5f, 0x0a, 0x03, + 0x21, 0x05, 0x0e, 0x07, 0x02, 0x65, 0x06, 0x40, 0x19, 0x65, 0x54, 0x1a, 0x7f, 0x09, 0x1d, 0x25, + 0x1f, 0x2a, 0x01, 0x7a, 0x00, 0x09, 0x01, 0x88, 0x64, 0x07, 0x6b, 0x3d, 0x88, 0x33, 0x1e, 0x08, + 0x88, 0x38, 0x78, 0x65, 0x88, 0xc5, 0x30, 0x88, 0x38, 0x78, 0x65, 0x88, 0x33, 0x1e, 0x5c, 0x1d, + 0x65, 0x66, 0x6b, 0x56, 0x0f, 0x7f, 0x2c, 0x09, 0x01, 0x57, 0x00, 0xc8, 0x05, 0x18, 0x25, 0x08, + 0x1e, 0x5a, 0x21, 0x4e, 0x1e, 0x87, 0x1c, 0x24, 0x1c, 0x24, 0x1c, 0x24, 0x1c, 0x24, 0x1c, 0x24, + 0x26, 0x6e, 0x1f, 0x2a, 0x86, 0x86, 0x86, 0x00, 0x42, 0x49, 0x06, 0x78, 0x25, 0x09, 0x08, 0x02, + 0x01, 0x85, 0x1f, 0x61, 0x78, 0x09, 0x0e, 0x81, 0x03, 0x78, 0x25, 0x33, 0x6b, 0x07, 0x38, 0x21, + 0x63, 0x1e, 0x3d, 0x21, 0x4e, 0x1e, 0x64, 0x21, 0xc5, 0x30, 0x88, 0x4e, 0x1e, 0x64, 0x21, 0x63, + 0x1e, 0x3d, 0x18, 0x25, 0x3a, 0x45, 0x38, 0x21, 0x5d, 0x09, 0x0e, 0x81, 0x03, 0x7f, 0x87, 0x20, + 0x1d, 0x25, 0x20, 0x1c, 0x78, 0x85, 0x59, 0x30, 0x19, 0xc8, 0x1f, 0xbc, 0x5f, 0x75, 0x00, 0x1c, + 0x30, 0x47, 0x05, 0x66, 0x02, 0x65, 0x06, 0x02, 0x00, +}; + +static const uint16_t mf_rlefont_DejaVuSans16_aa_dictionary_offsets[140] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0007, 0x0008, 0x0009, + 0x000a, 0x000b, 0x000c, 0x000d, 0x000f, 0x0011, 0x0013, 0x0015, + 0x0016, 0x0017, 0x0019, 0x001e, 0x0020, 0x0023, 0x0024, 0x0025, + 0x0027, 0x0029, 0x002d, 0x002f, 0x0031, 0x0034, 0x0036, 0x0038, + 0x003a, 0x003c, 0x003e, 0x0040, 0x0042, 0x0044, 0x0046, 0x0048, + 0x004a, 0x004c, 0x004d, 0x004f, 0x0051, 0x0053, 0x0055, 0x0057, + 0x0059, 0x005a, 0x005c, 0x005e, 0x0060, 0x0062, 0x0064, 0x0066, + 0x0067, 0x0069, 0x006b, 0x006e, 0x006f, 0x0071, 0x0074, 0x0076, + 0x0078, 0x007a, 0x007b, 0x007d, 0x0080, 0x0082, 0x0084, 0x0086, + 0x0088, 0x008a, 0x008d, 0x008f, 0x0091, 0x0093, 0x0095, 0x0097, + 0x0099, 0x009b, 0x009c, 0x009d, 0x009e, 0x00a0, 0x00a2, 0x00a4, + 0x00a5, 0x00a7, 0x00a9, 0x00ab, 0x00ae, 0x00b0, 0x00b2, 0x00b5, + 0x00b7, 0x00b8, 0x00ba, 0x00bc, 0x00be, 0x00bf, 0x00c1, 0x00c3, + 0x00c4, 0x00c6, 0x00c8, 0x00c9, 0x00cb, 0x00cd, 0x00cf, 0x00d1, + 0x00d3, 0x00d5, 0x00d8, 0x00db, 0x00dd, 0x00f2, 0x00f6, 0x00fa, + 0x010c, 0x010e, 0x0112, 0x0115, 0x013a, 0x013c, 0x0151, 0x0154, + 0x0157, 0x0162, 0x0165, 0x018e, 0x0190, 0x0193, 0x0196, 0x0198, + 0x019a, 0x01a2, 0x01a7, 0x01a9, +}; + +static const uint8_t mf_rlefont_DejaVuSans16_aa_glyph_data_0[2853] = { + 0x05, 0x00, 0x10, 0x06, 0x6a, 0x89, 0x1f, 0x0e, 0x1f, 0x0d, 0x82, 0x69, 0x61, 0x10, 0x06, 0x28, + 0xed, 0x48, 0xa8, 0x48, 0xa8, 0x48, 0xa8, 0x10, 0x0d, 0x18, 0x69, 0x70, 0x00, 0x2b, 0x03, 0x48, + 0x0d, 0x06, 0x00, 0x05, 0x0e, 0x48, 0x4a, 0xa2, 0x70, 0x22, 0x65, 0x2d, 0x88, 0x0a, 0x09, 0x65, + 0x4e, 0x48, 0x40, 0x00, 0x05, 0x0e, 0x48, 0x4a, 0xa2, 0x08, 0x0b, 0x21, 0x2d, 0x5d, 0x1d, 0x0a, + 0x09, 0x65, 0x4e, 0x48, 0x40, 0x00, 0x4c, 0x48, 0x03, 0x5d, 0x00, 0x0a, 0x09, 0x10, 0x0a, 0x19, + 0x99, 0x21, 0x30, 0x4d, 0x5f, 0x62, 0x7f, 0x0a, 0x3f, 0x5d, 0x7b, 0x7f, 0x7a, 0x00, 0x2f, 0x71, + 0x00, 0x2f, 0x05, 0x0e, 0x08, 0x4e, 0x82, 0x65, 0x07, 0x49, 0x5b, 0x21, 0xcc, 0x60, 0x7f, 0xcc, + 0x87, 0x7f, 0x36, 0x01, 0x4e, 0x70, 0x7f, 0x52, 0x49, 0x09, 0x01, 0x59, 0x61, 0x10, 0x0f, 0x28, + 0x02, 0x0b, 0x81, 0x02, 0x1e, 0x0b, 0x07, 0x19, 0x7d, 0x01, 0x46, 0x78, 0x3c, 0x22, 0x7a, 0x00, + 0x87, 0x00, 0x30, 0x72, 0x22, 0x7a, 0x00, 0x87, 0x18, 0x5e, 0x1d, 0x7d, 0x01, 0x46, 0x00, 0x03, + 0x7a, 0x22, 0x65, 0x0b, 0x81, 0xa2, 0x75, 0x53, 0x60, 0x65, 0x0b, 0x81, 0x02, 0x22, 0x30, 0x54, + 0x00, 0x7d, 0x01, 0x46, 0x1d, 0x09, 0x08, 0x18, 0x7a, 0x00, 0x87, 0x22, 0x51, 0x01, 0x18, 0x7a, + 0x00, 0x87, 0x22, 0x55, 0x18, 0x7d, 0x01, 0x46, 0x19, 0x07, 0x0b, 0x78, 0x65, 0x0b, 0x81, 0x02, + 0x10, 0x0c, 0x1b, 0x79, 0x0f, 0x55, 0x90, 0x3f, 0x01, 0x68, 0x48, 0x7a, 0x20, 0x71, 0x20, 0x06, + 0x3e, 0x53, 0x7d, 0x0b, 0x01, 0x82, 0x6f, 0x00, 0x83, 0x02, 0x18, 0x87, 0x22, 0x39, 0x18, 0x03, + 0x72, 0x00, 0x67, 0x22, 0x5d, 0x78, 0x03, 0x40, 0x3d, 0x22, 0x55, 0x78, 0x03, 0x0e, 0x38, 0x22, + 0x04, 0x66, 0x01, 0x18, 0x3c, 0x63, 0x1d, 0x2c, 0x0d, 0x0a, 0x05, 0x67, 0x07, 0x10, 0x03, 0x96, + 0x10, 0x06, 0x6a, 0x4a, 0x09, 0x53, 0x4d, 0x01, 0x59, 0x2b, 0x04, 0x53, 0x07, 0x0b, 0x20, 0x3a, + 0x20, 0x39, 0x20, 0x7a, 0x20, 0x7a, 0x20, 0x39, 0x20, 0x3a, 0x20, 0x80, 0x20, 0x2b, 0x04, 0x1a, + 0x90, 0x3e, 0x53, 0x4a, 0x09, 0x10, 0x06, 0x1d, 0x90, 0x4e, 0x53, 0x58, 0x09, 0x20, 0x04, 0x5d, + 0x20, 0x75, 0x20, 0x56, 0x20, 0x67, 0x20, 0x9b, 0x9b, 0x67, 0x20, 0x56, 0x20, 0x75, 0x53, 0x04, + 0x5d, 0x59, 0x58, 0x09, 0x1e, 0x90, 0x4e, 0x10, 0x08, 0x78, 0x6e, 0x1f, 0x2f, 0x3a, 0xf6, 0x56, + 0x48, 0x80, 0x0f, 0x50, 0x82, 0x80, 0x0f, 0x50, 0x48, 0x3a, 0xf6, 0x56, 0x59, 0x61, 0x10, 0x0d, + 0x1b, 0x69, 0x91, 0x82, 0x2d, 0x82, 0x61, 0x99, 0x10, 0x05, 0x69, 0x26, 0x26, 0x9c, 0x9b, 0x77, + 0x20, 0x5b, 0x10, 0x06, 0x26, 0x26, 0xc0, 0x10, 0x05, 0x69, 0x26, 0x26, 0x99, 0x10, 0x05, 0x1b, + 0x51, 0x20, 0x35, 0x20, 0x34, 0x59, 0x64, 0x20, 0x77, 0x20, 0x7e, 0x9e, 0x7a, 0x53, 0x7b, 0x1a, + 0x90, 0x06, 0x20, 0x38, 0x53, 0x5a, 0x20, 0x6f, 0x20, 0x71, 0x10, 0x0a, 0x28, 0x65, 0x0a, 0x7c, + 0x3f, 0x7f, 0x58, 0x07, 0x6b, 0x42, 0x01, 0x21, 0x3d, 0x1e, 0x3a, 0x21, 0x36, 0x1e, 0x68, 0x21, + 0x7a, 0x8a, 0x23, 0x1a, 0x8e, 0x7a, 0x8a, 0x00, 0x36, 0x1e, 0x68, 0x21, 0x3d, 0x1e, 0x33, 0x21, + 0x58, 0x07, 0x6b, 0x42, 0x01, 0x21, 0x65, 0x0a, 0x7c, 0x3f, 0x10, 0x0a, 0x6a, 0x03, 0x09, 0x0e, + 0x2f, 0x37, 0x03, 0x89, 0x91, 0x59, 0x27, 0x10, 0x0a, 0x28, 0x52, 0x0e, 0x55, 0x78, 0x25, 0x0b, + 0x03, 0x01, 0x03, 0x75, 0x7f, 0x08, 0x1e, 0x51, 0x20, 0x2b, 0x20, 0x3c, 0x9e, 0x72, 0x82, 0x30, + 0x36, 0x82, 0x65, 0x34, 0x48, 0x65, 0x34, 0x48, 0x30, 0x34, 0x59, 0x55, 0x53, 0x2e, 0x5d, 0x10, + 0x0a, 0x28, 0x03, 0x4d, 0x5f, 0x7e, 0x7f, 0x75, 0x02, 0x30, 0x5a, 0x08, 0x20, 0x64, 0x20, 0x64, + 0x82, 0x30, 0x5a, 0x08, 0x21, 0xc0, 0x0b, 0x9e, 0x47, 0x07, 0x20, 0x85, 0x20, 0x2b, 0x20, 0x5a, + 0x21, 0x7e, 0x01, 0x65, 0x06, 0x72, 0x21, 0x52, 0x5f, 0x0a, 0x03, 0x10, 0x0a, 0x18, 0x1b, 0x58, + 0x0f, 0x53, 0x7e, 0x2f, 0x3d, 0x23, 0x82, 0x51, 0x01, 0x23, 0x7f, 0x30, 0x5b, 0x23, 0x48, 0x6c, + 0xec, 0x7f, 0x7b, 0x24, 0x7f, 0x39, 0x24, 0x7f, 0x2d, 0x53, 0x2a, 0x10, 0x0a, 0x6a, 0x2e, 0x48, + 0x2a, 0x1f, 0x5f, 0x5f, 0x3f, 0x48, 0x62, 0x65, 0x07, 0x54, 0x20, 0x80, 0x20, 0x9b, 0x9b, 0x80, + 0x21, 0x7e, 0x01, 0x65, 0x07, 0x54, 0x21, 0x52, 0x49, 0x3f, 0x10, 0x0a, 0x1b, 0x4c, 0x0f, 0x55, + 0x90, 0x09, 0xa2, 0x03, 0x0b, 0x7f, 0x68, 0x20, 0x62, 0x20, 0x0d, 0x7b, 0x0e, 0x81, 0x03, 0x78, + 0x25, 0x66, 0x45, 0x0e, 0x04, 0x18, 0x25, 0x06, 0x1e, 0x80, 0x21, 0x7a, 0x8a, 0x00, 0x0b, 0x01, + 0x8a, 0x00, 0x06, 0x06, 0x1e, 0x80, 0x7f, 0x75, 0x45, 0x0e, 0x04, 0x21, 0x30, 0x0a, 0x4b, 0x34, + 0x10, 0x0a, 0x6e, 0x27, 0x20, 0x3d, 0x20, 0x71, 0x53, 0x3c, 0x20, 0x7e, 0x53, 0x51, 0x20, 0x6c, + 0x9e, 0x7a, 0x22, 0x31, 0x1d, 0x39, 0x53, 0x7b, 0x20, 0x34, 0x10, 0x0a, 0x6a, 0x60, 0x7c, 0x75, + 0x90, 0x0c, 0x04, 0x6b, 0x5a, 0x09, 0x21, 0x38, 0x1e, 0x64, 0x21, 0x38, 0x1e, 0x64, 0x21, 0x84, + 0x04, 0x6b, 0x04, 0x6d, 0x7f, 0x0a, 0xf3, 0x0a, 0x7f, 0x42, 0x05, 0x6b, 0x47, 0x07, 0x21, 0x72, + 0x1e, 0x85, 0x21, 0x5d, 0x78, 0x30, 0x88, 0x72, 0x1e, 0x85, 0x21, 0x4c, 0x05, 0x6b, 0x47, 0x06, + 0x7f, 0x3c, 0x7c, 0x55, 0x10, 0x0a, 0x6a, 0x5a, 0x5f, 0x0a, 0x01, 0x7f, 0x04, 0x66, 0x6b, 0x60, + 0x7f, 0x50, 0x1e, 0x06, 0x06, 0x21, 0x7a, 0x78, 0x30, 0x0b, 0x21, 0x7a, 0x8a, 0x00, 0x50, 0x1e, + 0x06, 0x88, 0x04, 0x66, 0x45, 0x4b, 0x7f, 0x68, 0x7c, 0x0c, 0x47, 0x20, 0x04, 0x0a, 0x20, 0x62, + 0x7f, 0x0b, 0x03, 0x65, 0x09, 0x09, 0x48, 0x47, 0x49, 0x07, 0x10, 0x05, 0x6a, 0x26, 0x61, 0x26, + 0x99, 0x10, 0x05, 0x6a, 0x26, 0x61, 0x26, 0x9c, 0x9b, 0x77, 0x20, 0x5b, 0x10, 0x0d, 0x1d, 0x26, + 0x30, 0x60, 0x82, 0x52, 0x62, 0x1d, 0x65, 0x79, 0x75, 0x01, 0x21, 0x80, 0x0e, 0x08, 0x02, 0x1a, + 0x25, 0x09, 0x01, 0x53, 0x80, 0x0e, 0x08, 0x02, 0x59, 0x65, 0x79, 0x75, 0x01, 0x53, 0x52, 0x62, + 0x9e, 0x60, 0x10, 0x0d, 0x53, 0x1b, 0x8b, 0x2d, 0x69, 0x24, 0x2d, 0x10, 0x0d, 0x78, 0x26, 0x75, + 0x01, 0x53, 0x52, 0x62, 0x9e, 0x60, 0x37, 0x02, 0x59, 0x65, 0x08, 0x0e, 0x50, 0x9e, 0x09, 0x0f, + 0x48, 0x65, 0x08, 0x0e, 0x50, 0x1d, 0x30, 0x60, 0x37, 0x02, 0x21, 0x52, 0x62, 0x82, 0x75, 0x01, + 0x10, 0x09, 0x28, 0x7b, 0x7c, 0x09, 0x01, 0x48, 0x0c, 0x05, 0x6b, 0x70, 0x20, 0x9b, 0x42, 0x53, + 0x07, 0x63, 0x59, 0x06, 0x0f, 0x09, 0x53, 0x37, 0x20, 0x61, 0x82, 0x1b, 0x61, 0x10, 0x10, 0x22, + 0x9e, 0x84, 0x0e, 0x49, 0x09, 0x03, 0x1d, 0x04, 0x0e, 0x09, 0x04, 0x01, 0x65, 0x07, 0x37, 0x19, + 0x05, 0x54, 0x1a, 0x30, 0x0b, 0x09, 0x1e, 0x30, 0x54, 0x00, 0x5a, 0x5f, 0x36, 0x5d, 0x72, 0x1e, + 0x5e, 0x00, 0x04, 0x66, 0x45, 0x0e, 0x29, 0x56, 0x1e, 0x5b, 0x50, 0x1e, 0x06, 0x29, 0x87, 0x1e, + 0x7a, 0x00, 0x7a, 0x78, 0x30, 0x57, 0xc5, 0x7a, 0x00, 0x7a, 0x78, 0x30, 0x29, 0x67, 0x1e, 0x5b, + 0x50, 0x1e, 0x06, 0x29, 0x77, 0x1e, 0x5e, 0x00, 0x04, 0x66, 0x45, 0x4b, 0x03, 0x39, 0x78, 0x30, + 0x54, 0x00, 0x5a, 0x5f, 0x36, 0x0e, 0x0a, 0xa2, 0x1a, 0x05, 0x54, 0x20, 0x04, 0x0e, 0x09, 0x04, + 0x01, 0x30, 0x04, 0x09, 0x0b, 0x22, 0x30, 0x84, 0x0e, 0x5f, 0x0c, 0x08, 0x03, 0x10, 0x0b, 0x22, + 0x9e, 0x0c, 0x20, 0x07, 0x40, 0x53, 0x0d, 0x5a, 0x59, 0x05, 0x0a, 0x00, 0x0b, 0x03, 0x82, 0x36, + 0x00, 0x05, 0x0a, 0x48, 0x83, 0x78, 0x39, 0x90, 0x06, 0x78, 0x35, 0x21, 0x58, 0x1e, 0x92, 0x22, + 0x07, 0x2e, 0x63, 0x1d, 0x39, 0x1a, 0x67, 0x22, 0x05, 0x0a, 0x19, 0x7e, 0x19, 0x0c, 0x04, 0x19, + 0x5a, 0x10, 0x0b, 0x28, 0xf3, 0x5f, 0x75, 0x1d, 0xc6, 0x30, 0x5a, 0x09, 0x9f, 0x1e, 0x64, 0x9f, + 0x1e, 0x64, 0x22, 0xc6, 0x30, 0x5a, 0x09, 0x1d, 0x27, 0x3e, 0x22, 0xc6, 0x30, 0x04, 0x37, 0x9f, + 0x1e, 0x51, 0x9f, 0x1e, 0x2b, 0x9f, 0x1e, 0x51, 0x22, 0xc6, 0x30, 0x85, 0x07, 0x19, 0xc0, 0x5f, + 0x55, 0x10, 0x0b, 0x1b, 0x3b, 0x0e, 0x5f, 0x62, 0x21, 0x4c, 0x05, 0x6b, 0x3b, 0x0f, 0x1d, 0x51, + 0x01, 0x1a, 0x07, 0x1d, 0x09, 0x06, 0x20, 0x39, 0x20, 0x61, 0x1f, 0x39, 0x1a, 0x90, 0x06, 0x20, + 0x51, 0x01, 0x1a, 0x07, 0x21, 0x4c, 0x05, 0x6b, 0x3b, 0x0f, 0x7f, 0x3b, 0x0e, 0x5f, 0x62, 0x10, + 0x0c, 0x28, 0xf3, 0x81, 0x07, 0x02, 0x1c, 0x30, 0x03, 0x08, 0x40, 0x9f, 0x1e, 0x03, 0x54, 0x25, + 0x31, 0x23, 0x19, 0x67, 0x25, 0x22, 0x0e, 0x25, 0x19, 0x87, 0x25, 0x19, 0x67, 0x25, 0x31, 0xf6, + 0x1a, 0x03, 0x38, 0x1a, 0x94, 0x30, 0x03, 0x08, 0x40, 0x19, 0xc0, 0x81, 0x07, 0x02, 0x10, 0x0a, + 0x28, 0xe3, 0xcb, 0x25, 0x91, 0x2e, 0x88, 0x89, 0x27, 0x10, 0x09, 0x28, 0xe3, 0xc7, 0x25, 0x91, + 0xe3, 0x48, 0x89, 0x10, 0x0c, 0x6a, 0x65, 0x4d, 0x0f, 0x49, 0x09, 0x04, 0x1d, 0x47, 0x06, 0x02, + 0x30, 0x3c, 0x0f, 0x22, 0x67, 0xa2, 0x1a, 0x08, 0x22, 0x09, 0x06, 0x20, 0x39, 0x20, 0x61, 0x78, + 0xc0, 0x22, 0x39, 0x18, 0x86, 0x22, 0x6c, 0x18, 0x86, 0x22, 0x64, 0xa2, 0x86, 0x1d, 0x06, 0x0e, + 0x07, 0xa2, 0x74, 0x07, 0x88, 0x3b, 0x0d, 0x5f, 0x37, 0x03, 0x10, 0x0c, 0x6e, 0x25, 0x25, 0x8d, + 0x8d, 0x2d, 0x8d, 0x8d, 0x8d, 0x10, 0x05, 0x6a, 0x89, 0x1f, 0x89, 0x10, 0x05, 0x6a, 0x2a, 0x91, + 0x91, 0x9c, 0x64, 0x9e, 0x46, 0x19, 0x25, 0x0b, 0x02, 0x10, 0x0a, 0x6e, 0x1a, 0x51, 0x07, 0x1d, + 0xc5, 0x03, 0x40, 0x1d, 0xc6, 0x04, 0x71, 0x00, 0x1c, 0x05, 0x39, 0x1d, 0xcc, 0x07, 0x3e, 0x1a, + 0x25, 0x05, 0x3e, 0x59, 0x5d, 0x55, 0x1a, 0x25, 0x30, 0x55, 0x1d, 0xcc, 0x30, 0x75, 0x18, 0x1c, + 0x30, 0x75, 0x21, 0xc6, 0x30, 0x6d, 0x21, 0xc5, 0x30, 0x6d, 0x10, 0x09, 0x96, 0x91, 0x91, 0x2e, + 0x10, 0x0d, 0x6e, 0x0a, 0x19, 0x0a, 0x57, 0x86, 0x39, 0x1e, 0x65, 0x0c, 0x57, 0x86, 0x35, 0x1a, + 0x09, 0x06, 0x57, 0x86, 0x92, 0x18, 0x58, 0x00, 0xc5, 0xcc, 0x6c, 0x78, 0x35, 0x00, 0xc5, 0xcc, + 0x67, 0x78, 0x0d, 0xa2, 0xc5, 0x94, 0x7e, 0x00, 0x56, 0x18, 0xc5, 0x94, 0x5a, 0x00, 0x34, 0xf6, + 0x1a, 0xc6, 0x37, 0x0c, 0xcc, 0x1a, 0xc6, 0x73, 0x94, 0x86, 0x9f, 0x86, 0x9f, 0x10, 0x0c, 0x28, + 0x5f, 0xa2, 0x86, 0x25, 0x80, 0x00, 0x86, 0x1a, 0xcc, 0x50, 0x86, 0x1a, 0xcc, 0x67, 0x01, 0x24, + 0x1a, 0x94, 0x3d, 0x24, 0x19, 0xc6, 0x34, 0x44, 0x19, 0xc6, 0x51, 0x01, 0x44, 0x22, 0xc5, 0x6f, + 0x44, 0x25, 0x1a, 0x5b, 0x0f, 0x25, 0x1a, 0x83, 0x23, 0x1a, 0xcc, 0x1a, 0x08, 0x06, 0x0f, 0x25, + 0x1a, 0x30, 0x0c, 0x0f, 0x10, 0x0d, 0x8f, 0x03, 0x8c, 0x31, 0x02, 0x54, 0x1a, 0x03, 0x38, 0x22, + 0xa1, 0x40, 0x21, 0x3b, 0x0e, 0x5f, 0x0a, 0x03, 0x10, 0x0a, 0xa0, 0x06, 0x9d, 0x1c, 0x78, 0x2b, + 0x9d, 0x1c, 0x30, 0x47, 0x07, 0x19, 0xbc, 0x5f, 0x75, 0x78, 0x25, 0x91, 0x10, 0x0d, 0x8f, 0x03, + 0x8c, 0x31, 0x02, 0x54, 0x1a, 0x03, 0x0e, 0x04, 0x22, 0xa1, 0x0e, 0x08, 0x21, 0x3b, 0x0d, 0x4f, + 0x08, 0x20, 0x4c, 0x01, 0x20, 0x07, 0x3e, 0x10, 0x0b, 0xa0, 0x07, 0x1c, 0x78, 0x51, 0x1c, 0x78, + 0x2b, 0x9d, 0x1c, 0x30, 0x47, 0x06, 0x21, 0x2e, 0x0c, 0x00, 0x1c, 0x30, 0x05, 0x40, 0x1c, 0x78, + 0x47, 0x1c, 0x1e, 0x55, 0x1a, 0xcc, 0x1a, 0x47, 0x9f, 0x1a, 0x75, 0x10, 0x0a, 0x6a, 0x60, 0x7c, + 0x62, 0x7f, 0x84, 0x03, 0x01, 0x3b, 0x0f, 0x7f, 0x39, 0x1e, 0x08, 0x7f, 0x7a, 0x20, 0x0b, 0x07, + 0x20, 0x67, 0x0c, 0x08, 0x05, 0x02, 0x59, 0x04, 0x46, 0x81, 0x01, 0x20, 0x70, 0x20, 0x87, 0x21, + 0x09, 0x1a, 0x51, 0x18, 0x25, 0x0c, 0x05, 0x6b, 0x04, 0x6d, 0x21, 0x03, 0x4d, 0x5f, 0x75, 0x10, + 0x09, 0x18, 0x1f, 0x2d, 0x82, 0x2a, 0x91, 0x91, 0x10, 0x0c, 0x48, 0x8d, 0x8d, 0x8d, 0x8d, 0x22, + 0x0e, 0xa2, 0x1a, 0x64, 0x22, 0x33, 0x00, 0x1a, 0x3d, 0x19, 0x65, 0x37, 0xa2, 0x65, 0x08, 0x39, + 0x22, 0x65, 0x4d, 0x0f, 0x49, 0x09, 0x02, 0x10, 0x0b, 0x78, 0x9e, 0x7a, 0x19, 0x92, 0x1a, 0x6c, + 0x31, 0x51, 0x19, 0x71, 0x22, 0x7e, 0x1a, 0x7b, 0x1d, 0x68, 0x1a, 0x36, 0x21, 0x71, 0x78, 0x51, + 0x7f, 0x77, 0x78, 0x09, 0x06, 0x7f, 0x92, 0x92, 0x7f, 0x08, 0x76, 0x08, 0x82, 0x67, 0x01, 0x39, + 0x59, 0x0a, 0x0a, 0x0a, 0x53, 0x04, 0x0f, 0x04, 0x10, 0x11, 0x28, 0x0d, 0x1e, 0x65, 0x4e, 0x1a, + 0x7a, 0x18, 0x43, 0x1e, 0x06, 0x66, 0x1e, 0x7b, 0x78, 0x04, 0x0a, 0x1e, 0x09, 0x46, 0x1e, 0x0a, + 0x05, 0x1e, 0x0d, 0x01, 0x78, 0x0d, 0x67, 0x78, 0x92, 0x78, 0x08, 0x06, 0x00, 0x30, 0x0c, 0x00, + 0x0c, 0x02, 0x18, 0x77, 0x1a, 0x03, 0x0b, 0x18, 0x05, 0x08, 0x00, 0x08, 0x05, 0x18, 0x34, 0x1a, + 0x0c, 0xa2, 0x43, 0x00, 0x05, 0x09, 0x00, 0x67, 0x19, 0x07, 0x07, 0x00, 0x3e, 0x00, 0x58, 0x00, + 0x35, 0x19, 0x02, 0x3e, 0x0c, 0x78, 0x3e, 0x71, 0x22, 0x6d, 0x09, 0x78, 0x09, 0x08, 0x0c, 0x1d, + 0x07, 0x40, 0x78, 0x05, 0x63, 0x22, 0x30, 0x4e, 0x18, 0x65, 0x5d, 0x10, 0x0b, 0x28, 0x7d, 0x1a, + 0x46, 0x22, 0x30, 0x54, 0x78, 0x03, 0x7a, 0x21, 0x60, 0x78, 0x55, 0x7f, 0x0b, 0x76, 0x0b, 0x82, + 0x64, 0x04, 0x38, 0x59, 0x73, 0x53, 0x73, 0x59, 0x64, 0x04, 0x38, 0x82, 0x0b, 0x76, 0x0b, 0x48, + 0x60, 0x78, 0x75, 0x1d, 0x30, 0x38, 0x78, 0x03, 0x7a, 0x1d, 0x33, 0x1a, 0x3d, 0x10, 0x09, 0x18, + 0x1f, 0x33, 0x1a, 0x56, 0x22, 0x65, 0x38, 0x18, 0x65, 0x39, 0x21, 0x80, 0x78, 0x50, 0x48, 0x75, + 0x00, 0x80, 0x48, 0x65, 0x54, 0x38, 0x59, 0x07, 0x63, 0x20, 0x89, 0x10, 0x0c, 0x6e, 0x2d, 0x20, + 0x80, 0x53, 0x05, 0x3e, 0x59, 0x85, 0x01, 0x59, 0x04, 0x39, 0x59, 0x03, 0x39, 0x82, 0x65, 0x71, + 0x82, 0x65, 0x72, 0x82, 0x30, 0x55, 0x48, 0x30, 0x75, 0x53, 0x0b, 0x07, 0x22, 0x25, 0x2d, 0x10, + 0x06, 0x1f, 0xbc, 0x53, 0x89, 0x1f, 0x89, 0x59, 0xbc, 0x10, 0x05, 0x18, 0x1f, 0x71, 0x20, 0x6f, + 0x20, 0x5a, 0x1f, 0x38, 0x1a, 0x90, 0x06, 0x20, 0x7b, 0x20, 0x92, 0x53, 0x7e, 0x20, 0x77, 0x20, + 0x64, 0x1f, 0x34, 0x53, 0x35, 0x20, 0x51, 0x10, 0x06, 0x28, 0xf2, 0x91, 0x91, 0x91, 0x48, 0xbc, + 0x10, 0x0d, 0x18, 0x1b, 0x05, 0x41, 0x05, 0x82, 0x06, 0x0f, 0x09, 0x09, 0x0f, 0x06, 0x7f, 0x73, + 0x18, 0x73, 0x1d, 0x07, 0x0e, 0x04, 0x1e, 0x04, 0x0e, 0x07, 0x10, 0x08, 0x26, 0x26, 0x26, 0x26, + 0x23, 0x27, 0x10, 0x08, 0x18, 0x08, 0x38, 0x20, 0x0a, 0x0c, 0x1f, 0x0b, 0x09, 0x10, 0x09, 0x18, + 0x26, 0x65, 0x09, 0x0e, 0x37, 0x82, 0x0d, 0x06, 0x74, 0x7d, 0x20, 0x58, 0x48, 0x42, 0x0e, 0x4f, + 0x7f, 0x08, 0x0b, 0x03, 0x01, 0x44, 0x7f, 0x39, 0x78, 0x4a, 0x7f, 0x7a, 0x78, 0x08, 0x0f, 0x7f, + 0x0a, 0x0a, 0x6b, 0x3d, 0x88, 0x30, 0x0a, 0x7c, 0x09, 0x2b, 0x10, 0x0a, 0x96, 0x01, 0x9a, 0x10, + 0x09, 0x18, 0x26, 0x65, 0x09, 0x4b, 0x55, 0x21, 0x67, 0x07, 0xa2, 0x3b, 0x90, 0x08, 0x20, 0x38, + 0x20, 0x5d, 0x20, 0x38, 0x1a, 0x90, 0x08, 0x20, 0x67, 0x07, 0xa2, 0x3b, 0x7f, 0x65, 0x0a, 0x4b, + 0x55, 0x10, 0x0a, 0x1a, 0x1b, 0x2a, 0x7f, 0x2c, 0x93, 0x10, 0x09, 0x78, 0x26, 0x5a, 0x49, 0x06, + 0x7f, 0x65, 0x40, 0x01, 0x03, 0x72, 0x7f, 0x33, 0x78, 0x7b, 0x7f, 0x39, 0x78, 0x58, 0x7f, 0x27, + 0x7f, 0x7a, 0x20, 0x3a, 0x20, 0x03, 0x66, 0x6b, 0x68, 0x48, 0x2c, 0x36, 0x10, 0x06, 0x6a, 0x47, + 0x0f, 0x2f, 0x71, 0x20, 0x2f, 0xc0, 0x53, 0x89, 0x99, 0x10, 0x0a, 0x78, 0x26, 0x2c, 0x09, 0x2b, + 0x1d, 0x65, 0x66, 0x6b, 0x56, 0x88, 0x33, 0x1e, 0x07, 0x88, 0x38, 0x78, 0x65, 0x88, 0xc5, 0x30, + 0x88, 0x38, 0x78, 0x65, 0x88, 0x33, 0x1e, 0x5c, 0x1d, 0x65, 0x66, 0x6b, 0x56, 0x0f, 0x7f, 0x2c, + 0x09, 0x2b, 0x20, 0x5a, 0x7f, 0x62, 0x6b, 0x47, 0x06, 0x7f, 0x3c, 0x7c, 0x55, 0x10, 0x0a, 0x96, + 0x98, 0x95, 0x10, 0x03, 0x28, 0x61, 0x53, 0x6e, 0x91, 0x91, 0x10, 0x03, 0x28, 0x61, 0x53, 0x6e, + 0x91, 0x91, 0x1f, 0x0e, 0x20, 0x5a, 0x19, 0x25, 0x5b, 0x10, 0x09, 0x96, 0x1e, 0x03, 0x66, 0x1d, + 0xc6, 0x04, 0x72, 0x00, 0x1c, 0x60, 0x02, 0x1d, 0xcc, 0x3d, 0x01, 0x21, 0xcc, 0x7a, 0x7f, 0xcc, + 0x06, 0x39, 0x78, 0x1c, 0x04, 0x72, 0x7f, 0xc6, 0x51, 0x05, 0x7f, 0xc5, 0x67, 0x07, 0x10, 0x03, + 0x96, 0x91, 0x91, 0x10, 0x0f, 0x8b, 0x01, 0x09, 0x7c, 0x08, 0x30, 0x09, 0x7c, 0x09, 0x00, 0x86, + 0x09, 0x06, 0x74, 0x6d, 0x09, 0x06, 0x74, 0x75, 0x86, 0x06, 0x78, 0x03, 0x66, 0x78, 0x83, 0x1a, + 0x4e, 0x18, 0x30, 0x4e, 0x78, 0x87, 0x97, 0x97, 0x97, 0x97, 0x97, 0x10, 0x0a, 0x8b, 0x98, 0x95, + 0x10, 0x0a, 0x78, 0x26, 0x3c, 0x7c, 0x34, 0x21, 0x03, 0x40, 0x6b, 0x05, 0x54, 0x21, 0x3a, 0x1e, + 0x56, 0x21, 0x39, 0x1e, 0x67, 0x1c, 0x1e, 0x88, 0x39, 0x1e, 0x67, 0x21, 0x3a, 0x1e, 0x56, 0x21, + 0x03, 0x40, 0x6b, 0x05, 0x54, 0x7f, 0x3c, 0x7c, 0x55, 0x10, 0x0a, 0x8b, 0x01, 0x9a, 0x2a, 0x10, + 0x0a, 0x78, 0x26, 0x2c, 0x93, 0x53, 0x2a, 0x10, 0x07, 0x8b, 0x01, 0x09, 0x4b, 0x1a, 0x25, 0x43, + 0x01, 0x59, 0x63, 0x20, 0x4e, 0x22, 0x25, 0x91, 0x10, 0x09, 0x00, 0x26, 0x30, 0x79, 0x7c, 0x36, + 0x7f, 0x7d, 0x02, 0x30, 0x68, 0x7f, 0x7a, 0x20, 0x0c, 0x09, 0x02, 0x59, 0x65, 0x0a, 0x49, 0x43, + 0x53, 0x03, 0x60, 0x09, 0x20, 0x87, 0x7f, 0x7e, 0x02, 0x30, 0x08, 0x0b, 0x7f, 0x52, 0x0f, 0x37, + 0x01, 0x10, 0x06, 0x6a, 0x99, 0x7f, 0xc0, 0x2f, 0x89, 0x1f, 0x55, 0x53, 0x85, 0x41, 0x10, 0x0a, + 0x8b, 0x1a, 0x8e, 0x32, 0x94, 0x25, 0x1a, 0x8e, 0x7a, 0x78, 0x65, 0x88, 0x34, 0x78, 0x08, 0x88, + 0x05, 0x72, 0x74, 0x5e, 0x0f, 0x7f, 0x4c, 0x49, 0x07, 0x23, 0x10, 0x09, 0x26, 0x02, 0x0c, 0x19, + 0x34, 0x19, 0x3a, 0x1a, 0x60, 0x1d, 0x51, 0x1a, 0x72, 0x21, 0x0b, 0x07, 0x78, 0x84, 0x7f, 0x04, + 0x7a, 0x30, 0x40, 0x48, 0x6d, 0x00, 0x79, 0x82, 0x05, 0x38, 0x40, 0x59, 0x0d, 0x0e, 0x0d, 0x53, + 0x73, 0x10, 0x0d, 0x26, 0x51, 0x1e, 0x58, 0x1a, 0x71, 0x1e, 0x34, 0x18, 0x06, 0x40, 0x78, 0x5a, + 0x1a, 0x56, 0x78, 0x0c, 0x80, 0x78, 0x3a, 0x1a, 0x92, 0x83, 0x00, 0x0c, 0xa2, 0x92, 0x1a, 0x33, + 0x00, 0x08, 0x76, 0x76, 0x09, 0x19, 0x5a, 0x00, 0x0e, 0xa2, 0x67, 0x00, 0x5b, 0x19, 0x37, 0x0b, + 0x78, 0x0b, 0x08, 0x0c, 0x1d, 0x5c, 0x06, 0x78, 0x73, 0x22, 0x65, 0x7a, 0x78, 0x92, 0x10, 0x0a, + 0x18, 0x26, 0x7d, 0x1e, 0x46, 0x1d, 0x30, 0x71, 0x18, 0x03, 0x7a, 0x7f, 0x3c, 0x18, 0x55, 0x48, + 0x6c, 0x07, 0x0b, 0x82, 0x30, 0x0c, 0x39, 0x59, 0x43, 0x77, 0x82, 0x68, 0x18, 0x36, 0x21, 0x30, + 0x39, 0x18, 0x67, 0x01, 0x21, 0x7d, 0x1e, 0x46, 0x10, 0x09, 0x00, 0x26, 0x34, 0x1e, 0x51, 0x1d, + 0x7b, 0x1a, 0x6c, 0x21, 0x71, 0x78, 0x92, 0x1d, 0x07, 0x09, 0x78, 0x3d, 0x7f, 0x92, 0x00, 0x71, + 0x48, 0x6c, 0x00, 0x3c, 0x82, 0x51, 0x00, 0x7e, 0x59, 0x0b, 0x08, 0x0e, 0x53, 0x05, 0x0f, 0x08, + 0x9e, 0x4e, 0x82, 0x30, 0x5e, 0x59, 0x5f, 0x0a, 0x01, 0x10, 0x09, 0x8b, 0x2e, 0x20, 0x84, 0x53, + 0x05, 0x39, 0x59, 0x04, 0x38, 0x59, 0x03, 0x54, 0x59, 0x64, 0x04, 0x59, 0x67, 0x05, 0x53, 0x6d, + 0x20, 0x27, 0x10, 0x0a, 0x00, 0x1b, 0x47, 0x0f, 0x53, 0x0d, 0x05, 0x20, 0x61, 0x9c, 0x2b, 0x20, + 0x84, 0x7f, 0xb4, 0x04, 0x20, 0x60, 0x20, 0x87, 0x1f, 0x2a, 0x1f, 0x0d, 0x05, 0x20, 0x47, 0x0f, + 0x10, 0x05, 0x6a, 0x89, 0x91, 0x1f, 0x89, 0x10, 0x0a, 0x6a, 0x49, 0x05, 0x20, 0x47, 0x91, 0x01, + 0x20, 0x6d, 0x20, 0x04, 0x41, 0x53, 0x75, 0x20, 0x5d, 0x20, 0x61, 0x9c, 0x47, 0x53, 0x49, 0x05, + 0x10, 0x0d, 0x1f, 0x69, 0x26, 0x68, 0x7c, 0x50, 0x02, 0x01, 0x5a, 0x22, 0x0d, 0x05, 0x74, 0x80, + 0x7c, 0x36, 0x19, 0x30, 0x10, +}; + +static const uint16_t mf_rlefont_DejaVuSans16_aa_glyph_offsets_0[95] = { + 0x0000, 0x0003, 0x000e, 0x0018, 0x004e, 0x007e, 0x00d1, 0x010e, + 0x0111, 0x0136, 0x0158, 0x016f, 0x0179, 0x0183, 0x0188, 0x018e, + 0x01ab, 0x01db, 0x01e8, 0x0210, 0x023c, 0x025c, 0x027b, 0x02b1, + 0x02cb, 0x0305, 0x033b, 0x0342, 0x034d, 0x0373, 0x037c, 0x03a1, + 0x03be, 0x042e, 0x0462, 0x0492, 0x04c0, 0x04ef, 0x04fa, 0x0504, + 0x053b, 0x0546, 0x054c, 0x055a, 0x058b, 0x0591, 0x05ce, 0x0605, + 0x0619, 0x062d, 0x0648, 0x066c, 0x06a0, 0x06a9, 0x06c8, 0x06f9, + 0x075c, 0x078e, 0x07ac, 0x07d0, 0x07da, 0x07f8, 0x0801, 0x081b, + 0x0823, 0x082e, 0x085b, 0x0860, 0x0882, 0x088a, 0x08ad, 0x08ba, + 0x08ee, 0x08f3, 0x08fb, 0x090a, 0x092f, 0x0934, 0x095c, 0x0961, + 0x098a, 0x0990, 0x0998, 0x09a9, 0x09d2, 0x09df, 0x09fb, 0x0a22, + 0x0a5f, 0x0a89, 0x0aba, 0x0ad3, 0x0af1, 0x0af8, 0x0b11, +}; + +static const struct mf_rlefont_char_range_s mf_rlefont_DejaVuSans16_aa_char_ranges[] = { + {32, 95, mf_rlefont_DejaVuSans16_aa_glyph_offsets_0, mf_rlefont_DejaVuSans16_aa_glyph_data_0}, +}; + +const struct mf_rlefont_s mf_rlefont_DejaVuSans16_aa = { + { + "DejaVu Sans Book 16", + "DejaVuSans16_aa", + 18, /* width */ + 17, /* height */ + 3, /* min x advance */ + 17, /* max x advance */ + 1, /* baseline x */ + 13, /* baseline y */ + 19, /* line height */ + 0, /* flags */ + 63, /* fallback character */ + &mf_rlefont_character_width, + &mf_rlefont_render_character, + }, + 4, /* version */ + mf_rlefont_DejaVuSans16_aa_dictionary_data, + mf_rlefont_DejaVuSans16_aa_dictionary_offsets, + 113, /* rle dict count */ + 139, /* total dict count */ + 1, /* char range count */ + mf_rlefont_DejaVuSans16_aa_char_ranges, +}; + +#ifdef MF_INCLUDED_FONTS +/* List entry for searching fonts by name. */ +static const struct mf_font_list_s mf_rlefont_DejaVuSans16_aa_listentry = { + MF_INCLUDED_FONTS, + (struct mf_font_s*)&mf_rlefont_DejaVuSans16_aa +}; +#undef MF_INCLUDED_FONTS +#define MF_INCLUDED_FONTS (&mf_rlefont_DejaVuSans16_aa_listentry) +#endif + + +/* End of automatically generated font definition for DejaVuSans16_aa. */ + diff --git a/src/gdisp/fonts/DejaVuSans24.c b/src/gdisp/fonts/DejaVuSans24.c new file mode 100644 index 00000000..caabb080 --- /dev/null +++ b/src/gdisp/fonts/DejaVuSans24.c @@ -0,0 +1,237 @@ + + +/* Start of automatically generated font definition for DejaVuSans24. */ + +#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_DejaVuSans24_dictionary_data[395] = { + 0x80, 0x0a, 0x80, 0x3d, 0x81, 0x02, 0x81, 0x81, 0x09, 0x81, 0x0c, 0x81, 0x09, 0x81, 0x0c, 0x81, + 0x09, 0x81, 0x08, 0x16, 0x81, 0x01, 0x82, 0x0e, 0x84, 0x01, 0x07, 0x87, 0x01, 0x86, 0x0d, 0x85, + 0x80, 0x0c, 0x83, 0x0f, 0x89, 0x0f, 0x82, 0x07, 0x0b, 0x81, 0x09, 0x81, 0x0c, 0x13, 0x81, 0x16, + 0x80, 0x15, 0x04, 0x82, 0x0e, 0x0a, 0x80, 0x81, 0x0a, 0x80, 0x05, 0x82, 0x0a, 0x81, 0x0e, 0x81, + 0x07, 0x81, 0x0d, 0x02, 0x82, 0x01, 0x0b, 0x81, 0x08, 0x81, 0x0d, 0x04, 0x85, 0x09, 0x80, 0x05, + 0x81, 0x45, 0x15, 0x83, 0x01, 0x81, 0x01, 0x82, 0x12, 0x10, 0x81, 0x83, 0x0c, 0x0d, 0x85, 0x02, + 0x81, 0x07, 0x06, 0x82, 0x82, 0x10, 0x85, 0x02, 0x80, 0x15, 0x82, 0x0e, 0x81, 0x0c, 0x81, 0x26, + 0x0c, 0x07, 0x82, 0x0e, 0x82, 0x15, 0x81, 0x01, 0x16, 0x81, 0x17, 0x81, 0x01, 0x80, 0x0b, 0x84, + 0x12, 0x87, 0x10, 0x82, 0x08, 0x8b, 0x1d, 0x11, 0x1e, 0x80, 0x02, 0x0f, 0x04, 0x06, 0x81, 0x01, + 0x12, 0x17, 0x0d, 0x82, 0x01, 0x80, 0x01, 0x17, 0x81, 0x15, 0x03, 0x41, 0x0e, 0x00, 0xbc, 0x56, + 0x31, 0x31, 0x31, 0x31, 0x31, 0x37, 0x3d, 0x45, 0x47, 0x47, 0x47, 0x47, 0x47, 0x1d, 0x36, 0x2d, + 0x2f, 0x44, 0x30, 0x2c, 0x18, 0x2c, 0x1b, 0x51, 0x1b, 0xd4, 0xc5, 0x2d, 0x25, 0x9c, 0x4a, 0x4a, + 0x3b, 0x29, 0x36, 0xc7, 0x27, 0x47, 0x47, 0x47, 0x5a, 0x27, 0x47, 0x37, 0x1f, 0x2e, 0x31, 0xeb, + 0xa4, 0x23, 0xc0, 0x2a, 0x36, 0x22, 0x50, 0x1a, 0x1d, 0x27, 0xd0, 0x54, 0x1a, 0x4d, 0x31, 0x00, + 0xc7, 0x9c, 0x43, 0x3c, 0x2e, 0x37, 0x1f, 0x2e, 0x00, 0xc7, 0x9c, 0x45, 0x47, 0x29, 0xca, 0x54, + 0x00, 0x9c, 0x4a, 0x41, 0x33, 0x48, 0x53, 0x47, 0x47, 0x47, 0x2c, 0x48, 0x2c, 0x48, 0xb4, 0xc4, + 0x90, 0x34, 0x34, 0xc4, 0x3c, 0xc7, 0x90, 0x5a, 0x3b, 0x3a, 0xdc, 0x53, 0x47, 0x46, 0x40, 0x44, + 0x1c, 0x4a, 0xc7, 0xa2, 0x9c, 0x9c, 0x52, 0x3a, 0x51, 0x1b, 0x56, 0x31, 0x31, 0x31, 0x31, 0x37, + 0x00, 0x1c, 0x47, 0xea, 0x2b, 0xc7, 0x2d, 0x2f, 0x2d, 0xb4, 0x20, 0x39, 0x51, 0x24, 0xf2, 0x1a, + 0x55, 0x00, 0x9c, 0x5a, 0x9c, 0x56, 0x31, 0x31, 0x31, 0x31, 0xfe, 0xc5, 0x9c, 0x2a, 0xc0, 0x93, + 0x39, 0xb4, 0x90, 0x27, 0x25, 0x1d, 0x3c, 0x39, 0xd3, 0x39, 0x3a, 0xe3, 0x45, 0x20, 0x2a, 0xfc, + 0xc7, 0x1d, 0x9c, 0x38, 0xbf, 0x27, 0x5a, 0x3a, 0x43, 0x9c, 0xbc, 0x25, 0x2b, 0x22, 0x1c, 0x47, + 0xc2, 0x39, 0xe3, 0x1d, 0xa2, 0xbc, 0x45, 0x1f, 0x45, 0x1c, 0xfd, 0x55, 0x0f, 0xb5, 0x27, 0xca, + 0x54, 0x9f, 0x90, 0x00, 0x27, 0x22, 0x4d, 0x20, 0x43, 0x5b, 0x1a, 0x3e, 0x36, 0x50, 0x56, 0x5b, + 0xc2, 0x90, 0x3b, 0x3a, 0x2a, 0xf0, 0x2d, 0x34, 0x3d, 0xf0, 0x54, +}; + +static const uint16_t mf_rlefont_DejaVuSans24_dictionary_offsets[119] = { + 0x0000, 0x0003, 0x0004, 0x0007, 0x0013, 0x0016, 0x0018, 0x001a, + 0x001b, 0x001d, 0x001f, 0x0020, 0x0022, 0x0026, 0x0028, 0x002d, + 0x002f, 0x0031, 0x0032, 0x0035, 0x0037, 0x003a, 0x003d, 0x0043, + 0x0046, 0x0047, 0x004b, 0x004d, 0x004f, 0x0051, 0x0053, 0x0054, + 0x0056, 0x0059, 0x005b, 0x005d, 0x005f, 0x0062, 0x0064, 0x0067, + 0x0069, 0x006c, 0x006f, 0x0070, 0x0071, 0x0073, 0x0075, 0x0078, + 0x007d, 0x007f, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, + 0x008b, 0x008c, 0x008d, 0x008e, 0x0090, 0x0091, 0x0092, 0x0093, + 0x0094, 0x0097, 0x009a, 0x009b, 0x009d, 0x00a8, 0x00ad, 0x00bf, + 0x00c5, 0x00c8, 0x00cb, 0x00ce, 0x00d9, 0x00de, 0x00e2, 0x00ec, + 0x00f0, 0x00f6, 0x00fa, 0x00fe, 0x0107, 0x010b, 0x010d, 0x0111, + 0x0115, 0x0116, 0x0118, 0x011a, 0x0120, 0x0123, 0x012c, 0x0131, + 0x0133, 0x013a, 0x013d, 0x0141, 0x0143, 0x0145, 0x0148, 0x014b, + 0x014e, 0x0156, 0x0158, 0x015a, 0x015e, 0x0167, 0x016a, 0x016c, + 0x0172, 0x0173, 0x0178, 0x017e, 0x0184, 0x0189, 0x018b, +}; + +static const uint8_t mf_rlefont_DejaVuSans24_glyph_data_0[1873] = { + 0x08, 0x00, 0x10, 0x0a, 0x00, 0x4a, 0x47, 0x5d, 0x56, 0x19, 0x74, 0x10, 0x0b, 0x4c, 0x1a, 0x64, + 0xfc, 0x1a, 0x64, 0xfc, 0x1a, 0x10, 0x14, 0xc4, 0x4e, 0xc7, 0xc6, 0x82, 0x8d, 0xc7, 0xc7, 0x82, + 0x8d, 0xc5, 0xc7, 0x2b, 0x4b, 0x2c, 0x4b, 0xe7, 0x4a, 0x77, 0x8d, 0x4f, 0x3c, 0x2b, 0xa5, 0x4a, + 0x2b, 0xb5, 0x45, 0x4b, 0xc4, 0x34, 0x22, 0x21, 0xc7, 0xc6, 0x82, 0x8d, 0xc7, 0xc7, 0x82, 0x8d, + 0x0f, 0xb4, 0x10, 0x0f, 0x4e, 0x94, 0x29, 0xc8, 0x28, 0x28, 0x1e, 0x39, 0x21, 0x2f, 0xa6, 0x82, + 0xe8, 0x54, 0xa7, 0x27, 0xcd, 0x7c, 0x45, 0x93, 0x7c, 0x56, 0xbd, 0x50, 0x94, 0x8d, 0xfe, 0x9c, + 0x56, 0xa5, 0x2f, 0x3b, 0x7e, 0x2b, 0x29, 0xcc, 0x29, 0xc8, 0x28, 0x10, 0x17, 0x4c, 0xe2, 0x4a, + 0x2c, 0xdd, 0x3d, 0x33, 0xc5, 0xc7, 0x3c, 0xdc, 0xb4, 0xb4, 0x52, 0x34, 0x77, 0x2f, 0x2b, 0xc5, + 0xa7, 0x23, 0xc7, 0xaa, 0x41, 0x7b, 0x30, 0xaa, 0x9d, 0xc0, 0x4a, 0xa2, 0x90, 0x1a, 0x56, 0xaa, + 0xa5, 0x23, 0xab, 0xc5, 0x41, 0xdc, 0x77, 0x2b, 0xa7, 0xa5, 0x48, 0xe7, 0x90, 0x3c, 0xdc, 0x34, + 0xb4, 0x4a, 0x92, 0x7b, 0x52, 0x3c, 0xe2, 0x10, 0x13, 0x55, 0x33, 0x49, 0xa4, 0x39, 0x59, 0x8d, + 0x2d, 0x43, 0x92, 0x7c, 0x30, 0xb2, 0xc7, 0x3c, 0xbc, 0xbc, 0xb4, 0x4a, 0x90, 0xbc, 0x3c, 0xb4, + 0x52, 0xbb, 0x1f, 0x77, 0x71, 0x25, 0x25, 0x3d, 0x32, 0x3b, 0xe7, 0x1d, 0x1e, 0xbc, 0x10, 0x07, + 0x4c, 0x69, 0x10, 0x09, 0x56, 0x27, 0x1c, 0x61, 0x61, 0x1c, 0x60, 0x74, 0x59, 0x90, 0x1c, 0x10, + 0x09, 0x4c, 0xe7, 0x47, 0x74, 0x55, 0x86, 0x69, 0x61, 0x61, 0x46, 0x10, 0x0c, 0x4e, 0xc8, 0x28, + 0x27, 0xec, 0x9c, 0x56, 0xb2, 0x38, 0x1e, 0x7c, 0x30, 0x9b, 0x1d, 0xfe, 0x95, 0x8d, 0xe6, 0x28, + 0x10, 0x14, 0x5a, 0x55, 0x19, 0x69, 0x50, 0x4b, 0x93, 0x44, 0xe3, 0x20, 0x50, 0x69, 0x10, 0x08, + 0x35, 0x6d, 0x61, 0x10, 0x09, 0x00, 0x19, 0x19, 0x5b, 0x3b, 0x52, 0x3b, 0x10, 0x08, 0x35, 0x6d, + 0x10, 0x08, 0x30, 0x1c, 0x85, 0x47, 0x29, 0x6d, 0x85, 0x1c, 0x85, 0x47, 0x29, 0x6d, 0x85, 0x10, + 0x0f, 0x4e, 0x81, 0x52, 0xc2, 0x1d, 0x2f, 0xbc, 0x82, 0xa4, 0x48, 0xb4, 0x78, 0x31, 0x31, 0x31, + 0x65, 0x43, 0x90, 0x77, 0x45, 0x2a, 0x3f, 0x21, 0x71, 0x10, 0x0f, 0x4e, 0xc0, 0x27, 0xd3, 0x54, + 0x1a, 0x74, 0x5d, 0xfc, 0x6c, 0x20, 0x10, 0x0f, 0xc4, 0x55, 0x83, 0xff, 0x39, 0x2d, 0x52, 0x44, + 0x74, 0x46, 0x85, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x4a, 0x3b, 0x7f, 0x10, 0x0f, 0x54, 0x3b, + 0x4a, 0x2b, 0x20, 0x50, 0xc5, 0x92, 0x1c, 0x67, 0x8d, 0x22, 0x27, 0xe3, 0x29, 0x2f, 0x74, 0x28, + 0x48, 0xc8, 0x2d, 0x32, 0x7e, 0x10, 0x0f, 0x29, 0x45, 0x29, 0x93, 0x54, 0x9e, 0x54, 0xba, 0x64, + 0x00, 0xc7, 0xc7, 0x45, 0x9c, 0x39, 0xb4, 0x39, 0x34, 0x39, 0x34, 0x82, 0x34, 0x50, 0x4b, 0x48, + 0xc2, 0x20, 0x27, 0x74, 0x10, 0x0f, 0x4d, 0x3b, 0x3e, 0x7d, 0x59, 0xf0, 0x55, 0x21, 0xa4, 0x21, + 0x94, 0x2a, 0x33, 0x6d, 0x47, 0x40, 0x4f, 0x2a, 0xc2, 0x7e, 0x10, 0x0f, 0x51, 0x4e, 0x49, 0x00, + 0x94, 0x45, 0x61, 0x00, 0x1e, 0x82, 0x21, 0xc0, 0xb5, 0x23, 0xc0, 0x34, 0x23, 0x92, 0xa4, 0x23, + 0x92, 0x34, 0x56, 0x25, 0x2e, 0xd2, 0x2a, 0x36, 0xbc, 0x39, 0x22, 0x7c, 0x10, 0x0f, 0x4c, 0x22, + 0x7f, 0x46, 0x1c, 0x85, 0x61, 0x85, 0x61, 0x85, 0x1c, 0x46, 0x10, 0x0f, 0x4c, 0x83, 0x1d, 0x92, + 0x2f, 0x73, 0x2d, 0x52, 0x20, 0x39, 0x22, 0x50, 0x92, 0x2f, 0x73, 0xe5, 0x92, 0x3b, 0x7e, 0x10, + 0x0f, 0x56, 0x7c, 0x30, 0xc2, 0x1d, 0x2f, 0xc0, 0x45, 0xa4, 0x2e, 0xca, 0x2d, 0xdc, 0x44, 0x30, + 0x90, 0x34, 0x23, 0x92, 0x81, 0x3f, 0xa7, 0x93, 0x3b, 0x91, 0x45, 0x1a, 0x59, 0xea, 0x40, 0x58, + 0x7a, 0x57, 0x10, 0x08, 0x50, 0x5b, 0x74, 0x1f, 0x5b, 0x74, 0x10, 0x08, 0x50, 0x5b, 0x74, 0x1f, + 0x5b, 0x74, 0x61, 0x10, 0x14, 0x5b, 0x3f, 0x50, 0x71, 0x3d, 0x3e, 0x5a, 0x45, 0x3e, 0xc4, 0x45, + 0x28, 0x1e, 0x5f, 0xd3, 0x29, 0x93, 0x28, 0x10, 0x14, 0x19, 0x5b, 0x3f, 0x4b, 0x2c, 0x4b, 0xe7, + 0x19, 0x28, 0x4b, 0xc7, 0x44, 0x4b, 0x10, 0x14, 0x4a, 0x19, 0x19, 0x86, 0x36, 0x28, 0x1e, 0x5f, + 0xd3, 0x40, 0x00, 0x32, 0x39, 0x7e, 0xb4, 0x3a, 0x71, 0x33, 0x10, 0x0d, 0x4e, 0xc2, 0x27, 0x1e, + 0x39, 0x2a, 0x3f, 0x52, 0x6d, 0x46, 0x40, 0x44, 0x85, 0x47, 0x30, 0x42, 0x74, 0x10, 0x18, 0x19, + 0xf2, 0x3e, 0x0f, 0x3a, 0xa2, 0x34, 0x2c, 0x2c, 0xc7, 0x2d, 0x2f, 0x34, 0xa5, 0xab, 0x9d, 0x34, + 0xbc, 0x22, 0xbd, 0xb4, 0xb5, 0xb5, 0xa7, 0xc5, 0xa7, 0xc7, 0x2f, 0x90, 0x90, 0x79, 0x90, 0x90, + 0x79, 0x90, 0x90, 0x79, 0xf0, 0xb4, 0x9c, 0xa4, 0x1a, 0x34, 0xb5, 0xb4, 0xbf, 0x52, 0xa7, 0x4b, + 0x52, 0x92, 0xc0, 0x2f, 0x4a, 0x38, 0x2d, 0x48, 0xe2, 0x3d, 0x3b, 0xe3, 0x39, 0xe3, 0x10, 0x10, + 0x4e, 0x81, 0x5a, 0x71, 0x33, 0x25, 0x3b, 0x64, 0x37, 0x77, 0x39, 0x77, 0x39, 0x77, 0x82, 0x34, + 0x82, 0x34, 0x45, 0x3d, 0x56, 0x4b, 0x3b, 0xff, 0x3a, 0x6a, 0x2c, 0x4f, 0x4a, 0x41, 0x10, 0x10, + 0x4c, 0x20, 0x6c, 0x3d, 0x66, 0x22, 0x6c, 0x00, 0x78, 0xc7, 0x77, 0x3b, 0xe3, 0x45, 0x22, 0x10, + 0x11, 0x4e, 0x83, 0x1d, 0x36, 0x2d, 0xe0, 0x33, 0x4a, 0x77, 0x85, 0x47, 0x67, 0xbc, 0x59, 0x2f, + 0x4a, 0x48, 0xc0, 0x2d, 0x32, 0x7e, 0x10, 0x12, 0x4c, 0x22, 0x3e, 0xe3, 0x48, 0xd0, 0x71, 0xe7, + 0x44, 0x30, 0x2c, 0x48, 0x2c, 0x6a, 0x6a, 0x6a, 0x2c, 0x18, 0x2c, 0x18, 0x48, 0x53, 0x4a, 0x25, + 0x77, 0x71, 0x4b, 0x3b, 0x57, 0x10, 0x0f, 0x4c, 0x22, 0x7f, 0x56, 0x6d, 0x67, 0x5a, 0x22, 0x24, + 0x6d, 0x67, 0x5a, 0x22, 0x7f, 0x10, 0x0e, 0x4c, 0x22, 0x24, 0x6d, 0x67, 0x5a, 0x22, 0x3e, 0x7d, + 0x00, 0x60, 0x10, 0x13, 0x4e, 0x83, 0x1d, 0xeb, 0x2d, 0xe0, 0x33, 0x4a, 0x77, 0x85, 0x47, 0x3d, + 0x25, 0xdc, 0xc4, 0xc0, 0x6a, 0x2c, 0x6a, 0x25, 0x90, 0x4a, 0xc0, 0x3d, 0x3b, 0xe3, 0x39, 0xe3, + 0x10, 0x12, 0x4c, 0x1b, 0x72, 0x68, 0xf2, 0x22, 0x3a, 0x4b, 0x23, 0x1b, 0x72, 0x68, 0x10, 0x07, + 0x1f, 0x47, 0x60, 0x5d, 0x10, 0x07, 0x1f, 0x5d, 0x5d, 0x46, 0x7c, 0x30, 0xc0, 0x10, 0x10, 0x4c, + 0xe7, 0x2d, 0x9c, 0x2d, 0xb4, 0x2d, 0x34, 0x80, 0x1d, 0x71, 0x33, 0xd1, 0x54, 0xaa, 0xc7, 0x82, + 0x2f, 0x39, 0x8c, 0x30, 0xdc, 0x44, 0x56, 0xc7, 0x2d, 0x90, 0x44, 0x10, 0x0d, 0x1f, 0x60, 0x5d, + 0x54, 0x32, 0x7f, 0x10, 0x15, 0x4c, 0x25, 0xbc, 0x33, 0x25, 0xe2, 0x33, 0x25, 0xe2, 0x4a, 0xc2, + 0xc4, 0xc2, 0x4a, 0xba, 0xc4, 0xba, 0x4a, 0xba, 0x52, 0x9f, 0x4a, 0x1a, 0x7b, 0x1f, 0x1a, 0x7b, + 0x1f, 0x1a, 0x7b, 0x1f, 0xa7, 0x9d, 0x3c, 0x90, 0xaa, 0xb5, 0x33, 0xe5, 0x22, 0x9c, 0x6f, 0x6f, + 0x51, 0x77, 0x77, 0x72, 0xb4, 0x10, 0x12, 0x4c, 0x25, 0xca, 0x2b, 0x25, 0x41, 0xe7, 0xa4, 0x23, + 0x1e, 0xa4, 0x23, 0x9f, 0xa4, 0x23, 0x1a, 0xa4, 0x23, 0x1a, 0xa4, 0x23, 0xa7, 0xa5, 0x23, 0xa7, + 0xc5, 0x41, 0x77, 0x90, 0x2b, 0xc5, 0xc7, 0x41, 0xc4, 0x1a, 0x4a, 0x77, 0x7b, 0x2b, 0xc5, 0xb0, + 0x48, 0xca, 0x77, 0x41, 0x44, 0x48, 0xea, 0x71, 0x53, 0x44, 0x10, 0x13, 0x4e, 0x83, 0x5e, 0x75, + 0x36, 0x10, 0x0e, 0x4c, 0x20, 0x6c, 0xfc, 0x77, 0x66, 0x21, 0xfc, 0x20, 0x39, 0x55, 0x69, 0x10, + 0x13, 0x4e, 0x83, 0x5e, 0x75, 0x1e, 0x4a, 0x45, 0x59, 0xdc, 0x10, 0x11, 0x4c, 0x20, 0x6c, 0xfc, + 0x77, 0x66, 0x21, 0x3f, 0x20, 0x82, 0x2a, 0xca, 0x77, 0x56, 0x62, 0x37, 0x44, 0x56, 0x31, 0x31, + 0x0f, 0xc5, 0x34, 0x10, 0x0f, 0x4c, 0x83, 0xeb, 0x45, 0xa4, 0x48, 0x9c, 0x67, 0x2a, 0x4a, 0x21, + 0x44, 0x36, 0x29, 0xa2, 0x28, 0x6d, 0x28, 0x48, 0x90, 0x2a, 0x36, 0x21, 0xec, 0x22, 0x10, 0x0f, + 0x55, 0x32, 0xe3, 0x25, 0x32, 0x20, 0x39, 0x74, 0x47, 0x5d, 0x10, 0x12, 0x4c, 0x1b, 0x72, 0x72, + 0x72, 0x68, 0x90, 0x34, 0x45, 0x2d, 0x34, 0x21, 0x51, 0xc2, 0x10, 0x10, 0xc4, 0x28, 0x48, 0xca, + 0x4a, 0x6a, 0x2c, 0x23, 0x31, 0x31, 0xeb, 0x2d, 0x77, 0x34, 0x82, 0x34, 0x39, 0x77, 0x39, 0xb4, + 0x50, 0x90, 0x8d, 0x1a, 0x27, 0x8d, 0xf2, 0x1d, 0x71, 0x4a, 0xa2, 0x54, 0xc0, 0x10, 0x18, 0x43, + 0x39, 0x44, 0xe5, 0x77, 0x3c, 0x93, 0x34, 0xb4, 0xc4, 0xa2, 0x34, 0x34, 0xc4, 0xa2, 0x34, 0x34, + 0xa4, 0x9f, 0x77, 0x77, 0x7b, 0x9c, 0x34, 0x7b, 0x3c, 0xe7, 0x90, 0xc7, 0x79, 0x2f, 0x92, 0x79, + 0xf0, 0x77, 0x3c, 0xaa, 0xa5, 0x9d, 0x4a, 0x1a, 0x7b, 0x1f, 0x1a, 0x7b, 0x52, 0xba, 0xc4, 0xba, + 0x4a, 0xc0, 0x3d, 0x48, 0x36, 0x3d, 0x48, 0x36, 0x3d, 0x48, 0xeb, 0x44, 0x10, 0x11, 0x4c, 0x25, + 0x37, 0x23, 0x65, 0x45, 0x2a, 0x90, 0x38, 0x1a, 0x7c, 0x43, 0xc0, 0x40, 0x4a, 0x93, 0x54, 0x1e, + 0x27, 0x38, 0xc7, 0xc7, 0x45, 0x77, 0x45, 0xa4, 0x2e, 0xff, 0x33, 0x48, 0xcb, 0x44, 0x10, 0x0f, + 0xc4, 0x28, 0xc7, 0x34, 0x23, 0x65, 0x45, 0x2a, 0x90, 0x3c, 0x2b, 0x1a, 0xc5, 0x45, 0x1d, 0x71, + 0x1f, 0xc0, 0x60, 0x67, 0x10, 0x10, 0x50, 0x3b, 0xe3, 0x25, 0x32, 0x20, 0x6e, 0x46, 0x6e, 0x46, + 0x6e, 0xfc, 0x27, 0x4b, 0x52, 0x34, 0x4b, 0x10, 0x09, 0x4c, 0x1e, 0x7c, 0x56, 0x69, 0x5d, 0x28, + 0xd3, 0x7c, 0x10, 0x08, 0x51, 0x59, 0xe0, 0x74, 0x74, 0x74, 0x1c, 0x74, 0x74, 0x29, 0x38, 0x34, + 0x10, 0x09, 0x4c, 0x1e, 0x7c, 0x39, 0x74, 0x5d, 0x67, 0x1e, 0x7c, 0x10, 0x14, 0x50, 0x40, 0x52, + 0xc2, 0x27, 0xe1, 0x50, 0x2f, 0x2f, 0x45, 0x34, 0x23, 0x92, 0x2d, 0x92, 0x44, 0x10, 0x0c, 0x4c, + 0x5b, 0x35, 0xc2, 0x21, 0x4b, 0x10, 0x0c, 0x5a, 0x92, 0x1c, 0x59, 0xdc, 0x10, 0x0e, 0x5b, 0x3b, + 0xc4, 0x3b, 0x1d, 0xc8, 0x77, 0x59, 0x3c, 0x2b, 0x21, 0xc0, 0x22, 0x45, 0x52, 0x2e, 0x37, 0x3d, + 0x45, 0x76, 0x10, 0x0f, 0x52, 0x74, 0x84, 0x78, 0x63, 0x10, 0x0d, 0x50, 0x5b, 0x49, 0xa4, 0x39, + 0x1c, 0x47, 0x47, 0x59, 0x2f, 0x94, 0x39, 0x22, 0xc4, 0x3b, 0x10, 0x0f, 0x50, 0x74, 0x47, 0x50, + 0xe3, 0x90, 0x3b, 0x3a, 0x2f, 0x81, 0x90, 0x5c, 0x76, 0x10, 0x0e, 0x50, 0x5b, 0x49, 0x2a, 0x79, + 0x43, 0x31, 0x4b, 0x3b, 0xe3, 0x48, 0xd0, 0x1c, 0x59, 0xe0, 0xc4, 0xc6, 0x3b, 0x1d, 0x32, 0x10, + 0x08, 0x4c, 0x81, 0x4a, 0x1e, 0x54, 0x6d, 0x89, 0x5a, 0x82, 0x5d, 0x10, 0x0f, 0x8b, 0x2f, 0x81, + 0x92, 0x5c, 0x76, 0x53, 0x40, 0x58, 0x7a, 0x36, 0x10, 0x0f, 0x52, 0x74, 0x84, 0x52, 0x2e, 0x62, + 0x62, 0x62, 0x62, 0x10, 0x07, 0x1f, 0x67, 0x4e, 0x74, 0x5d, 0x10, 0x07, 0x1f, 0x67, 0x4e, 0x74, + 0x5d, 0x67, 0x36, 0x40, 0x10, 0x0e, 0x1f, 0x60, 0x2a, 0x37, 0x80, 0xcb, 0x54, 0x1e, 0x27, 0x38, + 0xaa, 0xc7, 0x82, 0x2f, 0x39, 0x8c, 0x10, 0x06, 0x1f, 0x47, 0x60, 0x5d, 0x10, 0x18, 0x1f, 0x5b, + 0x34, 0xc0, 0xa5, 0x93, 0x34, 0x20, 0x20, 0x51, 0xa2, 0xbc, 0xc7, 0x92, 0xbc, 0xc4, 0x92, 0x77, + 0x6b, 0x51, 0x79, 0x6b, 0x51, 0x79, 0x6b, 0x51, 0x79, 0x10, 0x0f, 0x8a, 0xd3, 0xbc, 0x45, 0x52, + 0x2e, 0x62, 0x62, 0x62, 0x62, 0x10, 0x0e, 0x51, 0x5b, 0x2b, 0x49, 0x2a, 0x57, 0x78, 0x31, 0xcb, + 0x77, 0x45, 0x7a, 0x36, 0x10, 0x0f, 0x8a, 0xd3, 0xbc, 0x45, 0x78, 0x63, 0xd0, 0x67, 0xdc, 0x10, + 0x0f, 0x8b, 0x2f, 0x81, 0x90, 0x5c, 0x76, 0x6d, 0x47, 0x10, 0x0a, 0x4a, 0x5b, 0x77, 0xa2, 0x39, + 0x22, 0x50, 0xc0, 0x85, 0x47, 0x60, 0x10, 0x0c, 0x5a, 0x5b, 0x2b, 0x49, 0xa4, 0x39, 0x29, 0x90, + 0x5f, 0x0f, 0x6d, 0x43, 0xc8, 0x2a, 0xc2, 0x3a, 0xa4, 0x22, 0x10, 0x09, 0x42, 0x39, 0x74, 0x89, + 0x54, 0x6d, 0x60, 0x28, 0x1e, 0x7c, 0x10, 0x0f, 0x30, 0x5b, 0x62, 0x62, 0x62, 0x62, 0x79, 0x4a, + 0x34, 0x3d, 0x45, 0x76, 0x10, 0x0f, 0x5b, 0x26, 0x62, 0xea, 0x2d, 0x34, 0x34, 0x39, 0x34, 0x50, + 0x90, 0x92, 0x82, 0x8d, 0x87, 0x7c, 0x45, 0x10, 0x14, 0x52, 0x5b, 0x34, 0x34, 0xc7, 0x3c, 0xc7, + 0xc0, 0x34, 0x6f, 0x6f, 0x4a, 0xa7, 0x9d, 0x3c, 0x2f, 0xaa, 0xbd, 0x4a, 0x90, 0x1a, 0x3c, 0x7b, + 0xd7, 0x48, 0xdf, 0x77, 0x41, 0x53, 0x81, 0xa2, 0x81, 0xa2, 0x81, 0xf2, 0x3d, 0x10, 0x0f, 0x30, + 0x5b, 0x25, 0x25, 0x3d, 0x2d, 0x5a, 0x2f, 0x2f, 0x39, 0x9c, 0x54, 0x9f, 0x7c, 0x45, 0x29, 0xe3, + 0x54, 0xb2, 0xc7, 0x82, 0x90, 0x82, 0x77, 0x45, 0x2d, 0xbc, 0x44, 0x10, 0x0f, 0x5b, 0x26, 0x62, + 0xf2, 0x2d, 0x34, 0x34, 0x39, 0x2a, 0x9c, 0x8d, 0x87, 0x7c, 0x45, 0x4a, 0x45, 0x47, 0x46, 0x7c, + 0x30, 0xc0, 0x10, 0x0d, 0x1f, 0x5b, 0x32, 0x7f, 0x46, 0x40, 0x44, 0x40, 0x44, 0x40, 0x44, 0x85, + 0x4a, 0x3b, 0x7f, 0x10, 0x0f, 0x51, 0x4e, 0xa2, 0x7c, 0x56, 0x69, 0x40, 0xc4, 0x1e, 0x7c, 0xfc, + 0x45, 0x55, 0x69, 0x28, 0xd3, 0x54, 0xc0, 0x10, 0x08, 0x4a, 0x5d, 0x5d, 0x67, 0xdc, 0x10, 0x0f, + 0x4e, 0x93, 0x7c, 0x39, 0x74, 0x67, 0xbc, 0x55, 0x1e, 0x7c, 0x30, 0xd2, 0x29, 0x69, 0x7c, 0x30, + 0xc0, 0x10, 0x14, 0xc4, 0x4e, 0x19, 0x5b, 0x7c, 0x48, 0x20, 0x5a, 0x2c, 0xc5, 0x20, 0x4d, 0xc2, + 0x10, +}; + +static const uint16_t mf_rlefont_DejaVuSans24_glyph_offsets_0[95] = { + 0x0000, 0x0003, 0x000c, 0x0016, 0x0043, 0x006c, 0x00a8, 0x00cf, + 0x00d3, 0x00e0, 0x00ec, 0x0101, 0x010f, 0x0114, 0x011d, 0x0121, + 0x0130, 0x014a, 0x0157, 0x016d, 0x0186, 0x01a5, 0x01bb, 0x01dd, + 0x01eb, 0x0200, 0x0223, 0x022b, 0x0234, 0x0248, 0x0257, 0x026b, + 0x027e, 0x02bf, 0x02df, 0x02f0, 0x0307, 0x0326, 0x0336, 0x0343, + 0x0361, 0x036f, 0x0375, 0x037e, 0x039c, 0x03a4, 0x03d6, 0x040b, + 0x0412, 0x0420, 0x042b, 0x0444, 0x045f, 0x046b, 0x047b, 0x049e, + 0x04dd, 0x04ff, 0x0515, 0x0528, 0x0533, 0x0541, 0x054c, 0x055e, + 0x0566, 0x056d, 0x0583, 0x058a, 0x059b, 0x05aa, 0x05c0, 0x05cc, + 0x05d9, 0x05e4, 0x05eb, 0x05f5, 0x0607, 0x060d, 0x062a, 0x0636, + 0x0645, 0x0650, 0x065a, 0x0667, 0x067b, 0x0687, 0x0695, 0x06a8, + 0x06ce, 0x06ec, 0x0703, 0x0714, 0x0728, 0x072f, 0x0742, +}; + +static const struct mf_rlefont_char_range_s mf_rlefont_DejaVuSans24_char_ranges[] = { + {32, 95, mf_rlefont_DejaVuSans24_glyph_offsets_0, mf_rlefont_DejaVuSans24_glyph_data_0}, +}; + +const struct mf_rlefont_s mf_rlefont_DejaVuSans24 = { + { + "DejaVu Sans Book 24", + "DejaVuSans24", + 25, /* width */ + 25, /* height */ + 6, /* min x advance */ + 24, /* max x advance */ + 2, /* baseline x */ + 19, /* baseline y */ + 28, /* line height */ + 2, /* flags */ + 63, /* fallback character */ + &mf_rlefont_character_width, + &mf_rlefont_render_character, + }, + 4, /* version */ + mf_rlefont_DejaVuSans24_dictionary_data, + mf_rlefont_DejaVuSans24_dictionary_offsets, + 68, /* rle dict count */ + 118, /* total dict count */ + 1, /* char range count */ + mf_rlefont_DejaVuSans24_char_ranges, +}; + +#ifdef MF_INCLUDED_FONTS +/* List entry for searching fonts by name. */ +static const struct mf_font_list_s mf_rlefont_DejaVuSans24_listentry = { + MF_INCLUDED_FONTS, + (struct mf_font_s*)&mf_rlefont_DejaVuSans24 +}; +#undef MF_INCLUDED_FONTS +#define MF_INCLUDED_FONTS (&mf_rlefont_DejaVuSans24_listentry) +#endif + + +/* End of automatically generated font definition for DejaVuSans24. */ + diff --git a/src/gdisp/fonts/DejaVuSans24_aa.c b/src/gdisp/fonts/DejaVuSans24_aa.c new file mode 100644 index 00000000..9afd72c9 --- /dev/null +++ b/src/gdisp/fonts/DejaVuSans24_aa.c @@ -0,0 +1,439 @@ + + +/* Start of automatically generated font definition for DejaVuSans24_aa. */ + +#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_DejaVuSans24_aa_dictionary_data[596] = { + 0x20, 0x0f, 0x04, 0x81, 0x05, 0x1e, 0x11, 0x0c, 0x81, 0x01, 0x81, 0x0e, 0x81, 0x07, 0x81, 0x0e, + 0x10, 0xc8, 0x80, 0xce, 0xc5, 0xd1, 0x04, 0x0b, 0x84, 0x09, 0x17, 0x81, 0x17, 0x81, 0x06, 0x88, + 0x0e, 0x15, 0x12, 0x0a, 0x17, 0x81, 0x02, 0x09, 0x81, 0xce, 0x85, 0x0c, 0x83, 0x85, 0x06, 0xc2, + 0xc7, 0x03, 0x81, 0x01, 0xc2, 0xcb, 0x80, 0xc8, 0x02, 0x09, 0x81, 0x0c, 0x81, 0x09, 0x81, 0x80, + 0xcc, 0x03, 0x80, 0xca, 0x14, 0x0d, 0x80, 0x18, 0x05, 0x81, 0x07, 0x81, 0x86, 0x0d, 0x81, 0x01, + 0xcd, 0x80, 0x45, 0x07, 0xc1, 0x01, 0xce, 0xc8, 0x80, 0xc6, 0xc1, 0x80, 0xce, 0xc9, 0x80, 0x80, + 0xc2, 0x80, 0xcd, 0x1f, 0x1d, 0x81, 0xc3, 0xc1, 0xc6, 0xc1, 0xc1, 0xce, 0x02, 0x81, 0x89, 0xc8, + 0x80, 0x80, 0xc7, 0xc5, 0x02, 0xc5, 0x80, 0xc4, 0xc1, 0x06, 0xc1, 0x81, 0xc4, 0x01, 0xce, 0x80, + 0x80, 0xc5, 0x01, 0x80, 0xc8, 0x8c, 0x80, 0xce, 0x1b, 0xcd, 0xca, 0xc9, 0xc4, 0xc1, 0xc4, 0xcb, + 0xc5, 0x08, 0xc1, 0xcd, 0x0d, 0x81, 0x08, 0x81, 0x0d, 0xce, 0x80, 0xc3, 0xce, 0xcc, 0xc8, 0xcd, + 0xc8, 0xc4, 0xc1, 0x0e, 0x81, 0xc9, 0x41, 0x17, 0xcc, 0x80, 0xc2, 0xc9, 0x01, 0x81, 0xcc, 0xc1, + 0xc7, 0x80, 0xcd, 0xc9, 0xc2, 0xcd, 0x16, 0xcc, 0xc7, 0xc1, 0xcc, 0x80, 0x01, 0xc4, 0xc5, 0x81, + 0xc2, 0x01, 0xcd, 0xc1, 0x82, 0xc2, 0xc1, 0xcc, 0x81, 0x80, 0xcb, 0x17, 0x13, 0xc1, 0xc3, 0x32, + 0xcd, 0xc2, 0xc2, 0xce, 0x80, 0xc6, 0xcc, 0x80, 0xc9, 0x81, 0x0e, 0x81, 0xc4, 0x81, 0xc1, 0x81, + 0xde, 0xc3, 0x81, 0xc1, 0xc5, 0xc9, 0xc2, 0xc2, 0xc8, 0xcd, 0xc1, 0xc7, 0xc4, 0xc9, 0x6b, 0x34, + 0x27, 0x1f, 0x86, 0x27, 0x1f, 0x86, 0x27, 0x1f, 0x86, 0x27, 0x1f, 0x58, 0x01, 0x22, 0x35, 0x86, + 0x69, 0x6c, 0x05, 0x1b, 0x0a, 0x86, 0x69, 0x21, 0x04, 0x0b, 0x7a, 0x69, 0x63, 0x24, 0x73, 0x47, + 0x73, 0x0f, 0xdd, 0x19, 0xd4, 0xdd, 0x7f, 0x4a, 0x73, 0x63, 0x39, 0x68, 0x60, 0x0c, 0x7a, 0x3d, + 0x70, 0x6f, 0x22, 0x63, 0x86, 0x3d, 0x36, 0x05, 0x27, 0x77, 0x3d, 0x58, 0x56, 0x64, 0x0f, 0x56, + 0x3d, 0x36, 0x05, 0x27, 0x77, 0x3d, 0x07, 0x39, 0x1b, 0x01, 0x7c, 0x3d, 0x63, 0x39, 0x68, 0x60, + 0x0c, 0x7a, 0x86, 0x05, 0x27, 0x05, 0x7d, 0x25, 0xd4, 0x39, 0x1b, 0x75, 0x07, 0x00, 0x1e, 0x39, + 0x68, 0x60, 0x6c, 0x79, 0x25, 0xd4, 0x5a, 0x24, 0x5c, 0x0f, 0x6f, 0x3c, 0x07, 0x5c, 0x02, 0x3c, + 0x88, 0x04, 0x3c, 0x83, 0x07, 0x1d, 0x4c, 0x26, 0x3b, 0x73, 0x09, 0x46, 0x73, 0x0d, 0x49, 0x0e, + 0x61, 0x6e, 0x69, 0x03, 0x2f, 0x08, 0x86, 0x44, 0x87, 0x08, 0xc3, 0x79, 0x87, 0x7d, 0x68, 0x8c, + 0x0e, 0x5a, 0x87, 0x0a, 0x1b, 0x06, 0x39, 0x69, 0x87, 0x27, 0x47, 0x87, 0x27, 0x7d, 0x73, 0x0f, + 0x51, 0x2c, 0x26, 0x05, 0x2b, 0x05, 0x7d, 0x25, 0x0d, 0x49, 0x87, 0x27, 0x07, 0x39, 0x87, 0x27, + 0x44, 0x87, 0x08, 0x24, 0x5c, 0x03, 0x87, 0x39, 0x68, 0x60, 0x0c, 0x4a, 0x44, 0x1e, 0x6f, 0x22, + 0x63, 0x53, 0x00, 0x1e, 0x05, 0x27, 0x05, 0x7d, 0x00, 0x1e, 0x01, 0x27, 0x47, 0x41, 0x1b, 0xd0, + 0x1e, 0x44, 0x1b, 0x47, 0x86, 0x26, 0x26, 0x26, 0x01, 0x09, 0x42, 0x69, 0x03, 0x2f, 0x08, 0x86, + 0x19, 0x6d, 0x0d, 0x5c, 0x08, 0x01, 0x29, 0x58, 0x01, 0x62, 0x87, 0x73, 0x36, 0x06, 0x39, 0x0a, + 0x86, 0x5c, 0x5f, 0x7f, 0x01, 0x84, 0x7a, 0x67, 0x02, 0x7f, 0x8e, 0x86, 0x39, 0x4e, 0x7f, 0x90, + 0x0e, 0x7a, 0x70, 0x79, 0x07, 0x3b, 0x2b, 0x0a, 0x0b, 0x58, 0x71, 0x2c, 0x26, 0x26, 0x26, 0x2d, + 0x06, 0x3a, 0xd4, 0xc5, 0xca, 0x3f, 0x3f, 0x45, 0x4d, 0x80, 0x08, 0x0e, 0x39, 0x30, 0x48, 0x0e, + 0x74, 0x19, 0x03, 0x86, 0x39, 0x4e, 0x3d, 0x01, 0x84, 0x7a, 0x67, 0x78, 0x26, 0x26, 0x18, 0x90, + 0x0d, 0x8a, 0x0d, 0x5f, 0x19, 0x01, 0x0a, 0x40, 0x3b, 0x62, 0x35, 0x0f, 0x65, 0x62, 0x8b, 0x02, + 0x2b, 0x02, 0x1b, 0x47, 0x87, 0x27, 0x1f, 0x86, 0x27, 0x1f, 0x86, 0x27, 0x1f, 0x86, 0x27, 0x29, + 0x42, 0x00, 0x27, 0x0e, 0x49, 0x09, 0x73, 0x0c, 0x58, 0x5c, 0x01, 0x2d, 0x2e, 0x1e, 0x38, 0x1e, + 0x38, 0x30, 0x0d, 0x65, +}; + +static const uint16_t mf_rlefont_DejaVuSans24_aa_dictionary_offsets[170] = { + 0x0000, 0x0001, 0x0002, 0x0004, 0x0005, 0x0006, 0x0007, 0x0009, + 0x0010, 0x0011, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001e, + 0x001f, 0x0021, 0x0022, 0x0023, 0x0024, 0x0026, 0x0027, 0x0029, + 0x002b, 0x002c, 0x002d, 0x002f, 0x0031, 0x0033, 0x0035, 0x0037, + 0x0039, 0x003f, 0x0041, 0x0042, 0x0044, 0x0045, 0x0046, 0x0048, + 0x004c, 0x004d, 0x0050, 0x0052, 0x0054, 0x0056, 0x0058, 0x005a, + 0x005d, 0x005f, 0x0061, 0x0063, 0x0064, 0x0066, 0x0068, 0x006a, + 0x006c, 0x006e, 0x006f, 0x0071, 0x0073, 0x0076, 0x0078, 0x007c, + 0x007e, 0x0080, 0x0083, 0x0085, 0x0086, 0x0088, 0x0089, 0x008b, + 0x008d, 0x008f, 0x0091, 0x0092, 0x0094, 0x009a, 0x009c, 0x009f, + 0x00a1, 0x00a3, 0x00a4, 0x00a6, 0x00a8, 0x00aa, 0x00ac, 0x00ae, + 0x00b0, 0x00b2, 0x00b4, 0x00b6, 0x00b7, 0x00b9, 0x00bc, 0x00be, + 0x00c0, 0x00c2, 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00cb, 0x00cc, + 0x00cd, 0x00cf, 0x00d0, 0x00d2, 0x00d5, 0x00d7, 0x00d9, 0x00da, + 0x00dc, 0x00de, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00ea, + 0x00ec, 0x00ee, 0x010e, 0x0111, 0x0117, 0x0119, 0x0142, 0x0159, + 0x0166, 0x0168, 0x016f, 0x0177, 0x0188, 0x018d, 0x018f, 0x0191, + 0x0193, 0x019a, 0x01a0, 0x01c2, 0x01c4, 0x01c8, 0x01cb, 0x01d4, + 0x01db, 0x01dd, 0x01df, 0x01f2, 0x01f4, 0x01f8, 0x01fb, 0x01ff, + 0x0201, 0x0207, 0x020f, 0x0211, 0x0213, 0x021c, 0x021e, 0x0229, + 0x0231, 0x023f, 0x0241, 0x0243, 0x0245, 0x0247, 0x0249, 0x024c, + 0x0252, 0x0254, +}; + +static const uint8_t mf_rlefont_DejaVuSans24_aa_glyph_data_0[4800] = { + 0x08, 0x00, 0x10, 0x0a, 0x2d, 0x4c, 0xae, 0x7e, 0x5c, 0x7e, 0x8a, 0x7e, 0x0d, 0x0d, 0x7e, 0x0c, + 0x0c, 0x7f, 0x81, 0x98, 0x10, 0x0b, 0x4c, 0x50, 0x7f, 0x93, 0x93, 0x93, 0x10, 0x14, 0x3a, 0x18, + 0x52, 0x54, 0x53, 0x1d, 0x36, 0x01, 0x2d, 0x09, 0x55, 0x1d, 0x4a, 0x3a, 0x6c, 0x44, 0xb3, 0x85, + 0x2d, 0x01, 0x39, 0x1d, 0x07, 0x46, 0x00, 0x76, 0x5a, 0x3d, 0x36, 0x5b, 0x2b, 0x36, 0x5b, 0x30, + 0x35, 0x7d, 0x3a, 0x0e, 0x0d, 0x19, 0xaf, 0x53, 0x2d, 0x03, 0x3b, 0x1d, 0x09, 0x65, 0xaf, 0x46, + 0x1d, 0x0d, 0xe5, 0x0a, 0x65, 0x3d, 0x5b, 0x3b, 0x2b, 0x5b, 0x3b, 0x3d, 0x52, 0x54, 0x53, 0x1d, + 0x36, 0x01, 0x2d, 0x09, 0x55, 0x1d, 0x4a, 0x3a, 0x6c, 0x01, 0x19, 0x76, 0x85, 0x2d, 0x01, 0x39, + 0x1d, 0x07, 0x46, 0x00, 0x76, 0x5a, 0x10, 0x0f, 0x2d, 0x18, 0x3e, 0x3e, 0x0f, 0x3c, 0x8f, 0xbd, + 0x66, 0x03, 0x19, 0x01, 0x42, 0x40, 0x19, 0x09, 0x4a, 0x05, 0x01, 0x0f, 0x80, 0x07, 0x0c, 0x19, + 0x0e, 0x65, 0xf8, 0x1b, 0x87, 0x01, 0xf8, 0x7f, 0x0c, 0x85, 0x01, 0xfe, 0x7f, 0x88, 0x0e, 0x36, + 0x05, 0x01, 0x3a, 0xb3, 0x0b, 0x31, 0x7d, 0x03, 0x2a, 0x8c, 0x7d, 0x58, 0x55, 0x20, 0xcc, 0x01, + 0x0a, 0x39, 0x1d, 0xc8, 0x89, 0x1d, 0xc8, 0x03, 0x5c, 0x69, 0x67, 0x03, 0x44, 0x49, 0x06, 0x0d, + 0x85, 0x30, 0xe0, 0x5c, 0x31, 0x79, 0x69, 0x33, 0x0b, 0x0d, 0x0e, 0x5c, 0x0b, 0x4e, 0x3c, 0x3e, + 0x3e, 0x3e, 0x0f, 0x10, 0x17, 0x00, 0x5d, 0x35, 0x0a, 0x8a, 0x0a, 0x02, 0x1b, 0x76, 0x5c, 0x02, + 0x62, 0x4f, 0x82, 0x72, 0x0e, 0x01, 0x1b, 0x0c, 0x53, 0x25, 0x08, 0x46, 0xaf, 0x0f, 0x37, 0xaf, + 0x4a, 0x2b, 0x42, 0x78, 0x35, 0x4a, 0x3a, 0x4f, 0x59, 0x2e, 0x01, 0x2d, 0x01, 0xc7, 0x08, 0x7d, + 0x2d, 0x2e, 0x01, 0x2d, 0x01, 0xf7, 0x35, 0x0f, 0x65, 0x23, 0x42, 0x78, 0x35, 0x4a, 0x2d, 0x0b, + 0x85, 0x30, 0x09, 0x46, 0xaf, 0x5a, 0x76, 0xbe, 0x2b, 0x4f, 0x82, 0x72, 0x0e, 0x44, 0x0d, 0x53, + 0x35, 0x0a, 0x8a, 0x0a, 0x02, 0x27, 0x35, 0x0b, 0x8a, 0x0a, 0x78, 0x07, 0x4a, 0x00, 0x4f, 0x82, + 0x72, 0x0e, 0x01, 0x30, 0x01, 0x58, 0x57, 0x08, 0x46, 0xaf, 0x5a, 0x30, 0x09, 0x7d, 0x2d, 0x42, + 0x78, 0x35, 0x4a, 0x23, 0x8b, 0x02, 0x50, 0x01, 0x2d, 0x89, 0x23, 0x0b, 0x85, 0x34, 0x01, 0x2d, + 0x89, 0x2b, 0x05, 0xbe, 0x00, 0x42, 0x78, 0x35, 0x4a, 0x2b, 0x0d, 0x46, 0x22, 0x08, 0x46, 0xaf, + 0x5a, 0x25, 0x07, 0x39, 0x1b, 0x4f, 0x82, 0x72, 0x0e, 0x01, 0x62, 0x83, 0x04, 0x1b, 0x35, 0x0a, + 0x8a, 0x0a, 0x02, 0x10, 0x13, 0x4b, 0x8f, 0x7c, 0x71, 0x03, 0x20, 0x75, 0xc3, 0x20, 0x21, 0x03, + 0x07, 0x0c, 0x20, 0x0d, 0x55, 0x62, 0x87, 0x44, 0xb9, 0x04, 0x73, 0xab, 0x29, 0x89, 0x6f, 0x22, + 0xb3, 0x0d, 0x7a, 0x6f, 0x1d, 0x63, 0x39, 0x04, 0x42, 0x82, 0x2d, 0x35, 0x5c, 0x2b, 0x52, 0x79, + 0x35, 0x42, 0x82, 0xaf, 0x7d, 0x2b, 0x42, 0x05, 0x3a, 0x83, 0x0e, 0x03, 0x00, 0x0c, 0x46, 0x00, + 0x2e, 0x01, 0x22, 0x83, 0x45, 0xbe, 0x62, 0x0e, 0x65, 0x1b, 0x03, 0x0e, 0x86, 0x46, 0x23, 0x48, + 0x6f, 0x1b, 0x52, 0xbe, 0x25, 0x83, 0x0d, 0x06, 0x78, 0x03, 0x09, 0x7a, 0x7d, 0x30, 0x03, 0x0d, + 0xc3, 0x53, 0x88, 0x0a, 0x30, 0x8f, 0xbd, 0x71, 0x03, 0x2d, 0x88, 0x08, 0x10, 0x07, 0x27, 0xae, + 0x10, 0x09, 0x1c, 0x35, 0x9d, 0x09, 0x55, 0x3c, 0x35, 0x9d, 0x52, 0x05, 0x73, 0x0d, 0x0e, 0x01, + 0x3c, 0x76, 0x3b, 0x73, 0x07, 0x53, 0xa8, 0x57, 0xb9, 0x02, 0x73, 0x58, 0x01, 0x62, 0x87, 0x7e, + 0x58, 0x44, 0xb9, 0x02, 0xa8, 0x04, 0x73, 0x07, 0x53, 0x29, 0x76, 0x3b, 0x7e, 0x0d, 0x0e, 0x01, + 0x73, 0x52, 0x05, 0x29, 0x35, 0x7d, 0x7e, 0x09, 0x55, 0x29, 0x35, 0x7d, 0x10, 0x09, 0xba, 0xa8, + 0x02, 0x29, 0x76, 0x85, 0x7e, 0x0b, 0x49, 0x3c, 0xaf, 0x5a, 0x73, 0x4f, 0x0d, 0x7e, 0x0a, 0x65, + 0x73, 0x07, 0x53, 0x29, 0x76, 0x9d, 0x02, 0x94, 0x47, 0x2c, 0x92, 0x02, 0x94, 0x04, 0x9d, 0x07, + 0x53, 0xa8, 0x04, 0x29, 0x4f, 0x0d, 0x3c, 0xaf, 0x5a, 0xa8, 0x02, 0x3c, 0x76, 0x85, 0xa8, 0x02, + 0x10, 0x0c, 0x18, 0x3e, 0x0f, 0x7f, 0x09, 0x8d, 0xc8, 0x6d, 0x09, 0x69, 0x03, 0x0a, 0x3b, 0x03, + 0x65, 0x0a, 0x3b, 0x03, 0x19, 0x35, 0x08, 0x58, 0x45, 0x02, 0x1d, 0x35, 0x08, 0x58, 0x45, 0x78, + 0xb3, 0x0a, 0x3b, 0x03, 0x65, 0x0a, 0x3b, 0x03, 0x69, 0x09, 0x8d, 0xc8, 0x6d, 0x09, 0x7f, 0x3e, + 0x0f, 0x10, 0x14, 0x69, 0x81, 0xae, 0x69, 0xe0, 0x5b, 0xba, 0xe0, 0x5b, 0x20, 0xa4, 0x10, 0x08, + 0x43, 0x87, 0x2c, 0x29, 0x35, 0x94, 0x05, 0x99, 0x10, 0x09, 0x5d, 0x81, 0x81, 0x6b, 0xc3, 0x7f, + 0xc3, 0x10, 0x08, 0x43, 0x87, 0x26, 0x10, 0x08, 0x1d, 0xb3, 0x94, 0x08, 0x5a, 0x73, 0x0c, 0x55, + 0x3c, 0x35, 0x5c, 0x3c, 0xaf, 0x3b, 0xa8, 0x06, 0x29, 0x01, 0x58, 0x01, 0x29, 0x05, 0x39, 0x73, + 0x09, 0x53, 0x73, 0xc0, 0x27, 0xb3, 0x94, 0x70, 0xbc, 0x0c, 0x55, 0x20, 0xa3, 0x01, 0x7f, 0xaf, + 0x9d, 0x0a, 0x46, 0x73, 0xbb, 0x3c, 0x76, 0x39, 0x73, 0x08, 0x5a, 0x73, 0xc0, 0x10, 0x0f, 0x18, + 0x84, 0x8a, 0x0c, 0x06, 0x2a, 0x0b, 0x24, 0x7d, 0x20, 0x21, 0x05, 0x0e, 0x5a, 0x3d, 0x35, 0x0f, + 0x65, 0x22, 0x8b, 0x01, 0x23, 0xaf, 0x3b, 0x27, 0x0a, 0x46, 0x3d, 0x0a, 0x59, 0x1b, 0x05, 0x3b, + 0x3d, 0xc0, 0x27, 0x03, 0x39, 0x3d, 0x58, 0x44, 0xa3, 0x41, 0x3a, 0x1a, 0x64, 0x0f, 0x44, 0xa3, + 0x3d, 0xc0, 0x27, 0x03, 0x39, 0x3d, 0x0a, 0x59, 0x1b, 0x05, 0x3b, 0x23, 0xaf, 0x3b, 0x27, 0x0a, + 0x46, 0x30, 0x35, 0x0f, 0x65, 0x22, 0x8b, 0x01, 0x69, 0x21, 0x05, 0x0e, 0x5a, 0x20, 0x0b, 0x24, + 0x7d, 0x2a, 0x84, 0x8a, 0x0c, 0x06, 0x10, 0x0f, 0x1c, 0x02, 0x06, 0x0a, 0x0e, 0x86, 0x7f, 0xc3, + 0x7f, 0x71, 0x06, 0x02, 0xa4, 0xae, 0x7f, 0x51, 0x19, 0x51, 0x10, 0x0f, 0x2d, 0x5d, 0x33, 0x0b, + 0x0d, 0x5c, 0x71, 0x03, 0x30, 0xd4, 0x40, 0x53, 0x19, 0x67, 0x05, 0x7b, 0x80, 0x48, 0x55, 0x73, + 0x08, 0x9d, 0x47, 0x92, 0x04, 0x39, 0x73, 0x0c, 0x53, 0x29, 0x48, 0x79, 0x3c, 0x07, 0x5c, 0x03, + 0x3c, 0x70, 0x55, 0x3c, 0x70, 0x55, 0x3c, 0x70, 0x59, 0x7f, 0x70, 0x59, 0x7f, 0x70, 0x59, 0x7f, + 0x70, 0x59, 0x3c, 0x9e, 0x01, 0x3d, 0x9e, 0x01, 0x10, 0x0f, 0x19, 0xb3, 0x08, 0x0b, 0x0e, 0x5c, + 0x61, 0x1d, 0x40, 0x3b, 0x20, 0x74, 0x4d, 0x80, 0x52, 0x46, 0x73, 0x07, 0x39, 0x29, 0x35, 0x86, + 0x92, 0x06, 0x3b, 0x3c, 0x33, 0x5c, 0x03, 0x20, 0xe2, 0x7d, 0x03, 0x1d, 0xe2, 0x5c, 0x09, 0x01, + 0x3c, 0x60, 0x0a, 0x5c, 0x02, 0x73, 0x08, 0x9d, 0x47, 0x92, 0x08, 0x7d, 0x3d, 0x74, 0x4d, 0x2d, + 0x60, 0x0a, 0x86, 0x57, 0x1e, 0xc3, 0x5c, 0x05, 0x69, 0x03, 0x07, 0x0b, 0x58, 0x5c, 0x0b, 0x07, + 0x01, 0x10, 0x0f, 0x7f, 0xb3, 0x7a, 0x29, 0xbd, 0x0f, 0x3c, 0x07, 0x53, 0x86, 0x7f, 0x4f, 0x0d, + 0x6e, 0x7f, 0x0a, 0x55, 0x6e, 0x1d, 0x76, 0x7d, 0x50, 0x2a, 0x0d, 0x49, 0x50, 0x1d, 0x07, 0x5a, + 0x34, 0x19, 0x35, 0x0f, 0x79, 0x34, 0x20, 0x36, 0x05, 0x1a, 0x19, 0x05, 0x7d, 0x00, 0x1a, 0x19, + 0xc0, 0x00, 0x1a, 0x19, 0x5b, 0x30, 0x40, 0x32, 0x87, 0x9f, 0x10, 0x0f, 0x1c, 0x28, 0x2d, 0x28, + 0x50, 0xb5, 0x0c, 0x8a, 0x67, 0x02, 0x1d, 0xc3, 0x5c, 0x04, 0x20, 0x0b, 0x06, 0x78, 0x8c, 0x0c, + 0x5c, 0x02, 0x73, 0x0c, 0x5a, 0x29, 0x76, 0x94, 0x47, 0x92, 0x04, 0x4a, 0x29, 0x75, 0x08, 0x69, + 0x74, 0x03, 0x44, 0x8c, 0x0c, 0xbe, 0x30, 0x40, 0x5c, 0x03, 0xb3, 0x08, 0xbd, 0xb2, 0x01, 0x10, + 0x0f, 0x00, 0x18, 0x07, 0xbd, 0x71, 0x03, 0x20, 0x72, 0x40, 0x19, 0x83, 0x0b, 0x68, 0x35, 0x84, + 0x19, 0x0b, 0x85, 0x27, 0xb3, 0x94, 0x08, 0x53, 0xa8, 0x03, 0x03, 0x0a, 0x0e, 0x4a, 0x8d, 0x19, + 0x0e, 0x53, 0x24, 0x5c, 0x04, 0x87, 0x6a, 0x78, 0x6d, 0x5c, 0x78, 0x1e, 0x7d, 0x1b, 0x0b, 0x85, + 0x3d, 0x58, 0x55, 0x22, 0x76, 0x4a, 0x3d, 0x7c, 0x01, 0xa3, 0x3d, 0x0a, 0x86, 0x01, 0xa3, 0x23, + 0xaf, 0x0f, 0x55, 0x22, 0x76, 0x4a, 0x3d, 0x4f, 0x7d, 0x1b, 0x0b, 0x5a, 0x69, 0x08, 0x6a, 0x78, + 0x6d, 0x5c, 0x02, 0x19, 0x0a, 0x24, 0x5c, 0x04, 0x1d, 0x05, 0xad, 0x02, 0x10, 0x0f, 0x4c, 0x28, + 0x51, 0x0c, 0xa8, 0x06, 0x3c, 0x35, 0xbe, 0x7f, 0x52, 0xbc, 0x0e, 0x65, 0x29, 0x05, 0x39, 0x73, + 0x0c, 0x46, 0x27, 0xb3, 0xbe, 0x7f, 0x09, 0x85, 0x29, 0x4f, 0x65, 0x29, 0xa9, 0x73, 0x6c, 0x05, + 0x27, 0xb3, 0x5c, 0x73, 0x09, 0x5a, 0x29, 0x01, 0xbb, 0x7f, 0xaf, 0x9d, 0x6c, 0x05, 0x10, 0x0f, + 0x1c, 0x76, 0x0a, 0x0d, 0x86, 0x5e, 0x04, 0x20, 0x09, 0xc3, 0x6a, 0x30, 0xaf, 0x6a, 0x4d, 0x80, + 0x48, 0x46, 0x3d, 0x0c, 0x53, 0x27, 0x07, 0x39, 0x00, 0x1e, 0x56, 0x3d, 0x58, 0x01, 0x27, 0x01, + 0x4a, 0x3d, 0x0a, 0x46, 0x27, 0x07, 0x3b, 0x3d, 0x83, 0x09, 0x4d, 0x80, 0x09, 0x5c, 0x02, 0x3d, + 0x35, 0x0a, 0x24, 0x3b, 0x02, 0x69, 0x76, 0x0c, 0x24, 0x39, 0x04, 0x69, 0x03, 0x6a, 0x4d, 0x80, + 0x48, 0x65, 0x3d, 0x0b, 0x53, 0x27, 0x07, 0x7d, 0x3d, 0x58, 0x44, 0xa3, 0x3d, 0x58, 0x44, 0xa3, + 0x3d, 0x0c, 0x53, 0x27, 0x07, 0x39, 0x23, 0xaf, 0x6a, 0x4d, 0x80, 0x48, 0x46, 0x69, 0x09, 0xc3, + 0x6a, 0x19, 0x76, 0x0a, 0x0d, 0x86, 0x5e, 0x04, 0x10, 0x0f, 0x4b, 0x6d, 0x0d, 0x5c, 0x61, 0x20, + 0x76, 0x2f, 0x0a, 0x19, 0x83, 0x8d, 0x35, 0x48, 0x53, 0x69, 0x08, 0x7d, 0x1b, 0x0b, 0xbe, 0x23, + 0x0d, 0x55, 0x1b, 0x88, 0x06, 0x3d, 0x58, 0x01, 0x1b, 0x89, 0x0a, 0x00, 0x1e, 0x01, 0x1b, 0x89, + 0x0c, 0x3d, 0xc0, 0x1b, 0x88, 0x0e, 0x3d, 0x09, 0x3b, 0x1b, 0x0b, 0x7a, 0x3d, 0x83, 0x09, 0x78, + 0x6d, 0x31, 0x69, 0x05, 0xc3, 0x53, 0x5c, 0x19, 0x6d, 0x0d, 0x5c, 0x0a, 0x03, 0x03, 0x9d, 0x07, + 0x5a, 0x73, 0xc0, 0x29, 0x09, 0x7d, 0x19, 0x0c, 0x06, 0x78, 0x60, 0x0b, 0x5c, 0x02, 0x19, 0xc3, + 0x4a, 0x78, 0xb3, 0x09, 0x42, 0xb2, 0x01, 0x10, 0x08, 0x6b, 0x98, 0x81, 0x81, 0x81, 0x9f, 0x10, + 0x08, 0x6b, 0x98, 0x81, 0x81, 0x81, 0x26, 0x29, 0x35, 0x94, 0x05, 0x99, 0x10, 0x14, 0x2b, 0x18, + 0x81, 0x81, 0x8f, 0x0c, 0x7f, 0x8c, 0x0b, 0x7a, 0x1d, 0x90, 0x0e, 0x86, 0x3b, 0x05, 0x69, 0x8e, + 0xb4, 0x69, 0x0a, 0x86, 0x5c, 0x5f, 0x22, 0x87, 0x7d, 0x01, 0x3c, 0xaa, 0x0a, 0x05, 0x7f, 0x8c, + 0x0b, 0x7a, 0x73, 0x8f, 0x0c, 0x10, 0x14, 0x4b, 0x6b, 0x2c, 0x5b, 0x2b, 0x5b, 0xc7, 0x18, 0x81, + 0x9e, 0xd3, 0x2e, 0x5b, 0x10, 0x14, 0x1c, 0x81, 0x81, 0x74, 0x01, 0x3c, 0xe0, 0x61, 0x3c, 0x05, + 0xaa, 0x0a, 0x3c, 0x01, 0x0b, 0x7a, 0x2a, 0x90, 0x0e, 0x86, 0x3b, 0x19, 0x8e, 0xb4, 0x3d, 0x05, + 0x0a, 0x86, 0x5c, 0x5f, 0x19, 0xe0, 0x61, 0x01, 0x7f, 0x74, 0x01, 0x10, 0x0d, 0x1c, 0x6d, 0x42, + 0x71, 0x01, 0x19, 0xaf, 0xc3, 0x82, 0x20, 0x4a, 0x4e, 0x60, 0x0d, 0x3b, 0x20, 0x09, 0x01, 0x3a, + 0x76, 0x5c, 0x73, 0x89, 0x73, 0x05, 0x39, 0x27, 0xb3, 0x58, 0x05, 0x1b, 0xb3, 0x0e, 0x3b, 0x3c, + 0x83, 0x0a, 0x29, 0x0a, 0x3b, 0x73, 0x58, 0x01, 0x62, 0x87, 0x2c, 0x81, 0x9f, 0x10, 0x18, 0x2b, + 0x81, 0x33, 0x0b, 0x0d, 0x58, 0x5e, 0x4e, 0x30, 0x35, 0x48, 0x40, 0x5c, 0x06, 0x2b, 0x76, 0x58, + 0x3b, 0x05, 0x78, 0x01, 0x02, 0x06, 0x36, 0x7d, 0x25, 0x88, 0x0b, 0x02, 0xba, 0x76, 0x0d, 0x7d, + 0xba, 0x83, 0x08, 0x23, 0x72, 0x5a, 0x27, 0x0a, 0x7d, 0x3a, 0x05, 0x0c, 0x8a, 0x61, 0x6e, 0x35, + 0x0f, 0x49, 0x22, 0x03, 0xbe, 0x08, 0x24, 0x53, 0xe7, 0x09, 0x5a, 0x22, 0x52, 0x37, 0x88, 0x8d, + 0x80, 0x09, 0xeb, 0x76, 0x39, 0x22, 0x0c, 0x55, 0x2d, 0x0b, 0x85, 0x1b, 0x09, 0xe7, 0x47, 0x22, + 0x58, 0x01, 0x2d, 0xbb, 0x22, 0x35, 0x86, 0x34, 0x1a, 0x34, 0x01, 0x1b, 0x01, 0xf7, 0x35, 0x4a, + 0x22, 0x58, 0x01, 0x2d, 0xbb, 0x22, 0x35, 0x86, 0xaf, 0x3b, 0x22, 0x0c, 0x55, 0x2d, 0x0b, 0x85, + 0x1b, 0x09, 0xf7, 0x75, 0x04, 0x22, 0x08, 0x85, 0x00, 0x76, 0x6a, 0x7b, 0x6d, 0x86, 0x65, 0x0b, + 0x3b, 0x1b, 0x03, 0xbe, 0x08, 0x24, 0x53, 0x86, 0x6a, 0x01, 0x27, 0x0b, 0x3b, 0x3a, 0x05, 0x0c, + 0x8a, 0x61, 0x00, 0x0e, 0x71, 0x03, 0x62, 0x03, 0x58, 0xbc, 0x77, 0x0b, 0x02, 0xba, 0x76, 0x0c, + 0x03, 0x2b, 0x05, 0x58, 0x3b, 0x05, 0x7b, 0x01, 0x02, 0x06, 0x0b, 0x39, 0x02, 0x2b, 0x35, 0x0a, + 0x0f, 0x40, 0x5a, 0x01, 0x69, 0x03, 0x07, 0x0b, 0x42, 0xb2, 0x02, 0x10, 0x10, 0x00, 0x18, 0x52, + 0x5a, 0xb9, 0x4a, 0x7f, 0x76, 0x4a, 0x0d, 0x55, 0x7f, 0x09, 0x5a, 0x08, 0x3b, 0x2a, 0x01, 0xbb, + 0x02, 0xbe, 0x3d, 0xaf, 0x7d, 0x2d, 0x0b, 0x46, 0x1d, 0x0b, 0x46, 0xaf, 0x7d, 0x19, 0x35, 0xbe, + 0x01, 0xbb, 0x19, 0x07, 0x3b, 0x22, 0x0a, 0x53, 0x19, 0x0d, 0x55, 0x3a, 0x76, 0x4a, 0x69, 0x03, + 0x5c, 0x27, 0xc0, 0x3d, 0x09, 0x5a, 0x27, 0x08, 0x85, 0x3d, 0x2f, 0x7a, 0x5c, 0x30, 0x77, 0x51, + 0x05, 0x23, 0x0b, 0x46, 0x27, 0xaf, 0x7d, 0x2b, 0x89, 0x01, 0x62, 0x89, 0x01, 0x25, 0xac, 0x53, + 0x25, 0x6c, 0x05, 0x2b, 0x05, 0x39, 0x10, 0x10, 0x4c, 0x31, 0xb2, 0x2d, 0x87, 0x40, 0x6f, 0x69, + 0xc7, 0x35, 0x06, 0x0e, 0x5a, 0x87, 0x22, 0xaf, 0x4a, 0x87, 0x27, 0x89, 0x9c, 0x05, 0x7d, 0x69, + 0xc7, 0x35, 0x06, 0x58, 0x05, 0x69, 0x40, 0x4a, 0x06, 0x23, 0xd4, 0x40, 0x7d, 0x02, 0x87, 0x22, + 0x01, 0x33, 0x5c, 0x78, 0x1e, 0x1b, 0xaf, 0x3b, 0x41, 0x27, 0x01, 0x4a, 0x41, 0x27, 0x89, 0x41, + 0x22, 0xaf, 0x4a, 0x41, 0x3a, 0x35, 0x70, 0x53, 0x3d, 0x51, 0x0a, 0x69, 0x40, 0x5e, 0x05, 0x10, + 0x11, 0x1d, 0xb3, 0x08, 0xbd, 0x0e, 0x0b, 0x07, 0x01, 0x19, 0x09, 0x40, 0x5c, 0x05, 0x3d, 0x36, + 0x45, 0x03, 0x44, 0x01, 0x90, 0x58, 0x30, 0x52, 0x82, 0xba, 0x01, 0x0a, 0x2b, 0x35, 0x0f, 0x65, + 0x29, 0x07, 0x85, 0xa8, 0x57, 0xb9, 0x02, 0x62, 0x87, 0x2c, 0x7e, 0x0d, 0x49, 0xa8, 0x04, 0x73, + 0x70, 0xbc, 0x02, 0x0f, 0x65, 0x73, 0x52, 0x82, 0xba, 0x01, 0x0a, 0x3d, 0x36, 0x45, 0x03, 0x44, + 0x01, 0x90, 0x58, 0x69, 0x09, 0x40, 0x5c, 0x05, 0xb3, 0x08, 0xbd, 0x0e, 0x0b, 0x07, 0x01, 0x10, + 0x12, 0x4c, 0x7a, 0x8a, 0x0c, 0x09, 0x4e, 0x69, 0x51, 0x45, 0x41, 0x3a, 0x80, 0x06, 0x36, 0x7d, + 0x1e, 0xba, 0x76, 0x0e, 0x85, 0x2d, 0x2e, 0x25, 0x8b, 0x78, 0x2e, 0x2b, 0x0a, 0x5a, 0x00, 0x2e, + 0x2b, 0x05, 0x7d, 0x00, 0x2e, 0x25, 0x35, 0x4a, 0x00, 0x2e, 0x1b, 0xa3, 0x00, 0x2e, 0x1b, 0xa3, + 0x00, 0x2e, 0x25, 0x35, 0x4a, 0x00, 0x2e, 0x2b, 0x05, 0x7d, 0x00, 0x2e, 0x2b, 0x0a, 0x5a, 0x00, + 0x2e, 0x25, 0x8b, 0x78, 0x2e, 0xba, 0x76, 0x0e, 0x85, 0xba, 0xd4, 0xc5, 0x80, 0x06, 0x36, 0x7d, + 0x30, 0x51, 0x45, 0x30, 0xc2, 0x5c, 0x0c, 0x09, 0x4e, 0x10, 0x0f, 0x4c, 0x28, 0x86, 0x28, 0xa4, + 0x0f, 0x40, 0x19, 0x51, 0x19, 0xa4, 0x28, 0x9e, 0x10, 0x0e, 0x2d, 0x5d, 0x51, 0x19, 0x51, 0x19, + 0xa4, 0x40, 0x20, 0x28, 0x50, 0xae, 0x10, 0x13, 0x18, 0x90, 0x0d, 0x58, 0x5e, 0x4e, 0x69, 0x01, + 0x0a, 0x40, 0x5c, 0x05, 0x30, 0x75, 0x0e, 0x07, 0x4d, 0x35, 0x05, 0x09, 0x86, 0x30, 0x48, 0x6f, + 0xba, 0x01, 0x0a, 0x2b, 0x35, 0x5c, 0x02, 0x29, 0x52, 0xbc, 0x0b, 0x55, 0x73, 0x58, 0x01, 0x1d, + 0x3f, 0xd3, 0x2e, 0xba, 0xc3, 0x2b, 0x58, 0x78, 0x2e, 0x2b, 0x36, 0x57, 0x2e, 0x2b, 0x07, 0x85, + 0x00, 0x2e, 0x25, 0x35, 0x0f, 0x49, 0x2e, 0x23, 0x48, 0x82, 0x22, 0x1a, 0x30, 0x0c, 0x5c, 0x5f, + 0x44, 0x35, 0x05, 0x0b, 0x86, 0x3d, 0x48, 0x40, 0x4a, 0x04, 0x69, 0x03, 0x08, 0xbd, 0x0e, 0x0c, + 0x5f, 0x10, 0x12, 0x4c, 0x2e, 0x1e, 0x38, 0x1e, 0xbf, 0x5b, 0x30, 0x5b, 0x1e, 0xbf, 0x86, 0x2e, + 0x1e, 0x38, 0x10, 0x07, 0x27, 0xb5, 0xae, 0xae, 0x10, 0x07, 0x27, 0xb5, 0xae, 0xae, 0x29, 0x35, + 0x94, 0x06, 0x7d, 0x3c, 0x8c, 0x0e, 0x46, 0x1d, 0xe0, 0x39, 0x27, 0x87, 0x67, 0x01, 0x10, 0x10, + 0x4c, 0xba, 0x52, 0x53, 0x1e, 0x27, 0x52, 0x53, 0x41, 0x22, 0x48, 0x46, 0x87, 0x22, 0x48, 0x46, + 0x19, 0xc7, 0x48, 0x46, 0x19, 0xca, 0x0a, 0x86, 0x05, 0x22, 0x41, 0x0a, 0x86, 0x05, 0x22, 0x87, + 0x36, 0x59, 0x22, 0x87, 0x6a, 0x27, 0x87, 0x70, 0x53, 0x27, 0x41, 0x70, 0x5a, 0x1d, 0xca, 0x70, + 0x5a, 0x1d, 0xc7, 0x07, 0x6a, 0x19, 0xca, 0xaf, 0x6a, 0x19, 0xc7, 0xaf, 0x6a, 0x87, 0x22, 0xaf, + 0x0f, 0x3b, 0x41, 0x22, 0xaf, 0x0f, 0x3b, 0x1e, 0x62, 0x77, 0x0b, 0x10, 0x0d, 0x98, 0xae, 0xae, + 0x28, 0x9e, 0x10, 0x15, 0x4c, 0x53, 0x62, 0x07, 0x7a, 0x2e, 0x4a, 0x62, 0x0d, 0x7a, 0x2e, 0x0e, + 0x65, 0x27, 0x03, 0x4a, 0x86, 0x2e, 0x08, 0x85, 0x27, 0x09, 0x5a, 0x86, 0x2e, 0x03, 0x5c, 0x27, + 0xbb, 0x86, 0xba, 0xd0, 0x6c, 0x05, 0x22, 0x05, 0x39, 0x6e, 0xba, 0xd0, 0x06, 0x7d, 0x22, 0x0b, + 0x46, 0x6e, 0xba, 0xd0, 0x89, 0x01, 0x2d, 0x89, 0x01, 0x6e, 0x62, 0xca, 0x0a, 0x53, 0x2d, 0x07, + 0x3b, 0x50, 0x62, 0xca, 0x05, 0x39, 0x2d, 0x0c, 0x55, 0x50, 0x25, 0xc7, 0x0e, 0x65, 0x03, 0x5c, + 0x34, 0x25, 0xc7, 0x08, 0x85, 0x09, 0x5a, 0x34, 0x25, 0xc7, 0x03, 0x0f, 0x8a, 0x65, 0x34, 0x2e, + 0x22, 0x6c, 0x39, 0x1a, 0x2e, 0x22, 0x70, 0x53, 0x1a, 0x2e, 0x1e, 0x38, 0x1e, 0x10, 0x12, 0x4c, + 0x65, 0x3a, 0x1a, 0x1e, 0x7d, 0x3a, 0x1a, 0x1e, 0x0e, 0x65, 0x2d, 0x1a, 0x1e, 0x08, 0x7d, 0x2d, + 0x1a, 0x1e, 0x01, 0x58, 0x57, 0x1a, 0x2b, 0xd0, 0x07, 0x39, 0x00, 0x1a, 0x2b, 0xd0, 0x4f, 0x59, + 0x34, 0x23, 0xca, 0xa9, 0x1a, 0x30, 0xc7, 0x42, 0x05, 0x34, 0x2b, 0xd0, 0xaf, 0x4a, 0x34, 0x1e, + 0x22, 0x0d, 0x46, 0x50, 0x1e, 0x22, 0x05, 0x4a, 0x50, 0x1e, 0x1b, 0x0c, 0x53, 0x6e, 0x1e, 0x22, + 0x76, 0x5c, 0x89, 0x1e, 0x27, 0x0b, 0x53, 0x86, 0x1e, 0x27, 0x03, 0x5c, 0x86, 0x1e, 0xba, 0x0b, + 0x7a, 0x1e, 0xba, 0x03, 0x7a, 0x10, 0x13, 0xb6, 0x01, 0x3d, 0x6c, 0xb1, 0x82, 0x27, 0x72, 0x5a, + 0x25, 0x35, 0x0f, 0x65, 0x62, 0x8b, 0x02, 0x25, 0xac, 0x53, 0x25, 0x36, 0xa0, 0x25, 0x35, 0x4a, + 0x38, 0x1e, 0x25, 0xbb, 0x25, 0x35, 0x4a, 0x25, 0x36, 0x05, 0x2b, 0x05, 0x7d, 0x25, 0xac, 0x53, + 0xb7, 0x48, 0x82, 0x27, 0x72, 0x85, 0x23, 0x75, 0x45, 0x4d, 0x80, 0x08, 0x0e, 0x39, 0x3d, 0x01, + 0x0a, 0x40, 0x3b, 0x01, 0x19, 0x90, 0x0d, 0x8a, 0x0d, 0x5f, 0x10, 0x0e, 0x4c, 0x7a, 0x5c, 0x61, + 0x30, 0xd4, 0x40, 0x3b, 0x19, 0xc7, 0x01, 0x02, 0x52, 0x53, 0xa1, 0x47, 0x9c, 0x07, 0x39, 0x69, + 0xc7, 0x01, 0x02, 0x52, 0x53, 0x87, 0xc3, 0x7d, 0x69, 0xc2, 0x5c, 0x61, 0x2d, 0x87, 0xae, 0x10, + 0x13, 0xb6, 0x01, 0x3d, 0x6c, 0xb1, 0x82, 0x27, 0x72, 0x85, 0x25, 0x35, 0x0f, 0x65, 0x62, 0x8b, + 0x02, 0x25, 0xac, 0x53, 0x25, 0x36, 0xa0, 0x25, 0x35, 0x4a, 0x38, 0x1e, 0x25, 0x0d, 0x49, 0x25, + 0x35, 0x5c, 0x25, 0x36, 0x05, 0x2b, 0x05, 0x7d, 0x25, 0xac, 0x5a, 0xb7, 0x52, 0x82, 0x27, 0x72, + 0x3b, 0x30, 0x6c, 0x45, 0x4d, 0x80, 0x08, 0x58, 0x79, 0x30, 0x01, 0x0a, 0x40, 0x7d, 0x01, 0x19, + 0x90, 0x0d, 0x0e, 0x86, 0x39, 0x73, 0x83, 0x08, 0x73, 0x8b, 0x06, 0x73, 0x77, 0x04, 0x10, 0x11, + 0x4c, 0x7a, 0x5c, 0x0b, 0x06, 0x30, 0xd4, 0x40, 0x7d, 0x23, 0xd4, 0xc5, 0x33, 0x0e, 0x53, 0x87, + 0x27, 0xa9, 0x00, 0x41, 0xa3, 0x9c, 0xa9, 0x69, 0xc7, 0x35, 0x70, 0x46, 0x87, 0xc3, 0x5a, 0x23, + 0xd4, 0x40, 0x6f, 0x19, 0xc7, 0x8c, 0x0d, 0x7d, 0x00, 0x87, 0x1b, 0x83, 0x05, 0xa1, 0x00, 0x0e, + 0x65, 0x41, 0x27, 0x08, 0x85, 0x41, 0x1b, 0x35, 0x5c, 0x01, 0x1e, 0x62, 0x0b, 0x46, 0x1e, 0x62, + 0x05, 0x39, 0x10, 0x0f, 0x20, 0xb3, 0x0a, 0x42, 0x4a, 0x0b, 0x07, 0x03, 0x19, 0x08, 0x28, 0x77, + 0x08, 0x4d, 0x35, 0x04, 0x08, 0x0d, 0x69, 0x0b, 0x46, 0x73, 0x58, 0x01, 0x62, 0x87, 0x01, 0x73, + 0x0c, 0x46, 0x3c, 0xaf, 0x6a, 0x03, 0x29, 0x08, 0x7a, 0x39, 0x09, 0x05, 0x2a, 0x8e, 0x7a, 0x4a, + 0x04, 0x7f, 0x60, 0x07, 0x42, 0x65, 0x73, 0x0a, 0x9d, 0x02, 0x5c, 0x92, 0xa9, 0x3d, 0x67, 0x05, + 0x02, 0x44, 0x80, 0x48, 0x59, 0x1e, 0x40, 0x5a, 0x69, 0x33, 0x0a, 0x0d, 0x0e, 0x5c, 0x0c, 0x09, + 0x03, 0x10, 0x0f, 0x5d, 0x9e, 0xcb, 0x2e, 0x51, 0xc7, 0x87, 0x2c, 0xae, 0xae, 0x10, 0x12, 0x4c, + 0xbf, 0x86, 0xbf, 0x86, 0x2e, 0x1e, 0x01, 0xba, 0x89, 0x30, 0x0d, 0x49, 0x27, 0x35, 0x4a, 0x30, + 0x0b, 0x46, 0x1b, 0xaf, 0x7d, 0x2b, 0xaf, 0x0f, 0x79, 0x1b, 0x63, 0x46, 0x3d, 0x0d, 0x39, 0x05, + 0x44, 0x8c, 0x0c, 0x4a, 0x69, 0x72, 0x40, 0x82, 0x19, 0x8f, 0xbd, 0xb2, 0x01, 0x10, 0x10, 0x5d, + 0x6c, 0x05, 0x2b, 0x05, 0x39, 0x25, 0xac, 0x53, 0x25, 0x89, 0x01, 0x62, 0x89, 0x01, 0x2b, 0x0b, + 0x53, 0x27, 0xaf, 0x7d, 0x23, 0x05, 0x39, 0x62, 0x6c, 0x05, 0x30, 0x0e, 0x65, 0x27, 0x03, 0x5c, + 0x3d, 0x09, 0x5a, 0x27, 0x08, 0x85, 0x3d, 0x03, 0x5c, 0x27, 0xc0, 0x69, 0x0d, 0x55, 0x3a, 0x76, + 0x4a, 0x19, 0x07, 0x3b, 0x22, 0x0a, 0x53, 0x69, 0x35, 0x86, 0x01, 0x2d, 0x01, 0xbb, 0x20, 0x0b, + 0x46, 0xaf, 0x7d, 0x1d, 0xa9, 0x2d, 0x0b, 0x46, 0x1d, 0x01, 0xbb, 0x02, 0xbe, 0x20, 0x09, 0x5a, + 0x07, 0x3b, 0x2a, 0x76, 0x4a, 0x0d, 0x55, 0x3c, 0x42, 0x4a, 0x29, 0x52, 0x5a, 0x10, 0x18, 0x00, + 0x5d, 0xc0, 0x27, 0x48, 0x3b, 0x27, 0x03, 0x4a, 0x3a, 0x0a, 0x46, 0x27, 0x6c, 0x4a, 0x22, 0xaf, + 0x3b, 0x00, 0xaf, 0x3b, 0xa3, 0xbb, 0x1b, 0x0a, 0x46, 0x2d, 0x35, 0x4a, 0x1b, 0x05, 0x7d, 0x36, + 0x05, 0x1b, 0x0d, 0x49, 0x22, 0xbb, 0x22, 0x08, 0x5a, 0x07, 0x85, 0x3a, 0x35, 0x5c, 0x1b, 0x0a, + 0x46, 0x22, 0x0c, 0x55, 0x04, 0x39, 0x2d, 0xaf, 0x3b, 0x3a, 0xaf, 0x85, 0x3a, 0x89, 0x01, 0x89, + 0x01, 0x3a, 0x09, 0x46, 0x1b, 0x03, 0x4a, 0x2d, 0x76, 0x39, 0x2d, 0x0c, 0x55, 0x3a, 0xc0, 0x27, + 0xbb, 0x2d, 0x70, 0x37, 0x52, 0x37, 0x02, 0x5c, 0xba, 0x36, 0x05, 0x2d, 0x36, 0x54, 0x7d, 0x2d, + 0x05, 0x7d, 0xba, 0x07, 0x85, 0x2d, 0x58, 0x01, 0x2d, 0x47, 0x2d, 0x09, 0x53, 0xba, 0x03, 0x4a, + 0x00, 0x03, 0x4a, 0x22, 0xc0, 0x00, 0xc0, 0x62, 0x58, 0x8f, 0x85, 0x22, 0x09, 0x53, 0x47, 0x25, + 0x36, 0x05, 0x0a, 0x46, 0x2d, 0xaf, 0x3b, 0x05, 0x7d, 0x25, 0x07, 0x85, 0xbb, 0x3a, 0x35, 0x5c, + 0x09, 0x53, 0x62, 0x76, 0x5c, 0x5c, 0x27, 0x58, 0x58, 0x57, 0x2e, 0x3b, 0x27, 0x0a, 0x7a, 0x23, + 0x36, 0x46, 0x27, 0x70, 0x7d, 0x10, 0x11, 0x2d, 0x5d, 0x0a, 0x7d, 0x62, 0x0b, 0x3b, 0x23, 0x4f, + 0x59, 0x1b, 0xab, 0x2b, 0xaf, 0xbe, 0x2d, 0x8b, 0x04, 0x69, 0x0b, 0x3b, 0x22, 0x0c, 0x5a, 0x19, + 0x83, 0x04, 0x2d, 0x08, 0x39, 0x1d, 0xab, 0x88, 0x03, 0x2a, 0x0c, 0x85, 0x0d, 0x53, 0x2a, 0x35, + 0x86, 0x7d, 0x29, 0x48, 0x49, 0x3c, 0x83, 0x5a, 0x3c, 0x36, 0x36, 0x65, 0x2a, 0xab, 0x08, 0x39, + 0x1d, 0x8b, 0x57, 0x63, 0x53, 0x20, 0x6c, 0x37, 0x76, 0x5c, 0x02, 0x69, 0x08, 0x39, 0x1b, 0x09, + 0x7d, 0x3d, 0x88, 0x03, 0x1b, 0x63, 0x46, 0x23, 0x63, 0x53, 0xba, 0x05, 0xbe, 0x62, 0x0a, 0x7d, + 0x25, 0x0a, 0x3b, 0x10, 0x0f, 0x5d, 0x0a, 0x3b, 0x62, 0x0a, 0x3b, 0x23, 0x83, 0x05, 0x27, 0x05, + 0x5c, 0x02, 0x2b, 0xaf, 0xbe, 0x2d, 0x4f, 0x46, 0x69, 0x0c, 0x85, 0x22, 0x09, 0x7d, 0x69, 0x35, + 0x86, 0x57, 0x76, 0x0f, 0x49, 0x20, 0x07, 0x4a, 0x2d, 0x0d, 0x53, 0x2a, 0x0d, 0x5a, 0x08, 0x4a, + 0x22, 0xb3, 0x7a, 0x65, 0x3c, 0x09, 0x6a, 0x29, 0x89, 0x01, 0x62, 0x87, 0xae, 0x10, 0x10, 0x5d, + 0xfe, 0x5b, 0xba, 0xd4, 0x5b, 0x29, 0x83, 0x07, 0x3c, 0x75, 0x0a, 0x29, 0x0a, 0x97, 0x3a, 0x75, + 0x0a, 0x29, 0x0a, 0x97, 0x3a, 0x63, 0x3b, 0x29, 0x0a, 0x0f, 0x6f, 0x3c, 0x07, 0x5c, 0x02, 0x1d, + 0xd4, 0x5b, 0xba, 0xd4, 0x5b, 0x10, 0x09, 0x4c, 0x7a, 0x7f, 0xc2, 0x3c, 0xa4, 0xb5, 0xae, 0x7a, + 0x7f, 0xc2, 0x10, 0x08, 0x5d, 0xc0, 0x73, 0x08, 0x5a, 0x29, 0x76, 0x39, 0x7e, 0xbb, 0x73, 0x0a, + 0x46, 0x3c, 0xaf, 0x9d, 0x47, 0x01, 0x73, 0x0c, 0x55, 0x73, 0x70, 0xbc, 0x03, 0x4a, 0x7e, 0xc0, + 0x73, 0x09, 0x53, 0x73, 0x05, 0x39, 0x73, 0x89, 0x01, 0xa8, 0x06, 0x3c, 0xaf, 0x3b, 0x29, 0x35, + 0x5c, 0x7e, 0x0c, 0x55, 0x73, 0x08, 0x5a, 0xba, 0xb3, 0x4a, 0x10, 0x09, 0x4c, 0x7a, 0x7f, 0xc2, + 0x9f, 0xae, 0xae, 0x7f, 0xc2, 0x7f, 0xc2, 0x10, 0x14, 0x3a, 0x18, 0x83, 0x0e, 0x02, 0x7f, 0x72, + 0x7a, 0x82, 0x1d, 0x63, 0x4a, 0x04, 0x42, 0x79, 0x19, 0x75, 0x82, 0x35, 0x42, 0x6f, 0x69, 0x36, + 0x82, 0x3a, 0x72, 0x7d, 0x3d, 0x0a, 0x0f, 0x6f, 0x1b, 0x75, 0x09, 0x23, 0x52, 0x6f, 0xba, 0x75, + 0x08, 0x10, 0x0c, 0x4b, 0x6b, 0x43, 0xd4, 0x9e, 0x25, 0xd4, 0x9e, 0x10, 0x0c, 0x22, 0xab, 0x73, + 0x07, 0x7d, 0x7e, 0x07, 0x3b, 0x7e, 0x07, 0x5a, 0x10, 0x0e, 0x3a, 0x6b, 0x03, 0x08, 0xbd, 0x0e, + 0x61, 0x1d, 0x40, 0x5a, 0x20, 0x0c, 0x06, 0x4d, 0x35, 0x70, 0x55, 0x3c, 0xaf, 0x3b, 0x73, 0x01, + 0x4a, 0x19, 0x8f, 0x0b, 0x2f, 0x69, 0x72, 0x28, 0x0a, 0x39, 0x05, 0x7b, 0x34, 0x69, 0xbb, 0x1b, + 0x8b, 0x87, 0x02, 0x1b, 0x0a, 0x86, 0x69, 0x0b, 0x39, 0x4d, 0x60, 0x0b, 0x7a, 0x69, 0x03, 0xc3, + 0x5a, 0x86, 0xb3, 0x0a, 0x0e, 0x5c, 0x0b, 0x04, 0x6e, 0x10, 0x0f, 0x98, 0x9f, 0x00, 0x05, 0xad, + 0xa2, 0xa3, 0x3d, 0x96, 0x03, 0x00, 0x41, 0x05, 0xad, 0x02, 0x10, 0x0d, 0x22, 0x6b, 0x8f, 0xbd, + 0x5e, 0x04, 0x20, 0x72, 0x40, 0x19, 0x63, 0x4a, 0x05, 0x01, 0x35, 0x05, 0x0b, 0x19, 0xab, 0x29, + 0x36, 0x05, 0x73, 0x58, 0x01, 0x62, 0x87, 0x7e, 0x58, 0x01, 0xa8, 0x05, 0x3c, 0xaf, 0x0f, 0x79, + 0x29, 0x63, 0x4a, 0x05, 0x01, 0x35, 0x05, 0x0b, 0x20, 0x72, 0x40, 0x1d, 0x8f, 0xbd, 0x5e, 0x04, + 0x10, 0x0f, 0x25, 0x4c, 0xb5, 0x19, 0xa5, 0x9a, 0x3d, 0x95, 0xa6, 0x61, 0x6e, 0x10, 0x0e, 0x3a, + 0x6b, 0xaf, 0x0b, 0x58, 0x5e, 0x03, 0x19, 0x35, 0x0c, 0xc3, 0x46, 0x19, 0x0c, 0x7d, 0x04, 0x7b, + 0x02, 0x52, 0x65, 0x23, 0xaf, 0x7d, 0x27, 0x08, 0x85, 0x3d, 0x0b, 0x55, 0x1b, 0x35, 0x4a, 0x3d, + 0x0e, 0x9e, 0x25, 0xd4, 0x9e, 0x3d, 0xbb, 0x73, 0x6c, 0x05, 0x73, 0xab, 0x29, 0x63, 0x39, 0x05, + 0x44, 0x80, 0x07, 0x0c, 0x69, 0x35, 0x42, 0x40, 0x20, 0x8f, 0x0b, 0x58, 0x66, 0x03, 0x10, 0x08, + 0x4b, 0x05, 0x0b, 0x0e, 0x86, 0x7f, 0x05, 0x24, 0x7f, 0x6c, 0xa7, 0x29, 0xc3, 0xc7, 0x87, 0xc3, + 0x7f, 0xa4, 0xb5, 0x10, 0x0f, 0x22, 0x6b, 0x6d, 0x42, 0x9a, 0x3d, 0x63, 0x39, 0x68, 0x60, 0x0c, + 0x7a, 0x3d, 0x07, 0x39, 0x27, 0x7c, 0x3d, 0x6c, 0x05, 0x27, 0x77, 0x3d, 0x58, 0x56, 0x64, 0x0f, + 0x56, 0x3d, 0x6c, 0x05, 0x27, 0x77, 0x3d, 0x07, 0x39, 0x27, 0x7c, 0x3d, 0x4f, 0x39, 0x68, 0x60, + 0x0c, 0x7a, 0xa6, 0x61, 0x47, 0x29, 0x76, 0x39, 0xa8, 0x08, 0x19, 0x61, 0x7b, 0x60, 0x0b, 0x5c, + 0x78, 0x87, 0xc3, 0x05, 0x20, 0x90, 0x0d, 0x58, 0x71, 0x03, 0x10, 0x0f, 0x98, 0x9f, 0x76, 0xad, + 0x9b, 0x86, 0xb8, 0x1f, 0x10, 0x07, 0x98, 0x81, 0x26, 0xb5, 0xae, 0x10, 0x07, 0x98, 0x81, 0xae, + 0xae, 0x1d, 0xa3, 0x29, 0x01, 0x08, 0x3b, 0x2a, 0xe0, 0x55, 0x3c, 0x5c, 0x0c, 0x04, 0x10, 0x0e, + 0x98, 0x9f, 0x22, 0x75, 0x59, 0x3d, 0xc7, 0x75, 0x59, 0x3d, 0xca, 0x75, 0x0e, 0x04, 0x3a, 0x41, + 0x72, 0x5c, 0x03, 0x3a, 0x87, 0x72, 0x5c, 0x03, 0x22, 0x87, 0x42, 0x82, 0x1b, 0x87, 0x58, 0x6f, + 0x19, 0xd4, 0x49, 0x42, 0x82, 0x1b, 0x41, 0x75, 0x0d, 0x03, 0x20, 0xca, 0x01, 0x0b, 0x5c, 0x03, + 0x30, 0xd4, 0xc5, 0x0a, 0x5c, 0x57, 0x87, 0x1b, 0x48, 0x46, 0x87, 0x27, 0x52, 0x53, 0x10, 0x06, + 0x27, 0xb5, 0xae, 0xae, 0x10, 0x18, 0x6b, 0x34, 0x76, 0xad, 0x78, 0x76, 0x0a, 0x58, 0x71, 0x01, + 0x2d, 0xd4, 0x5a, 0x24, 0x5c, 0x33, 0x24, 0x4a, 0x44, 0x1a, 0x7d, 0x68, 0x8c, 0x0e, 0x4a, 0x7d, + 0x68, 0x8c, 0x58, 0x37, 0xec, 0x3b, 0x1b, 0x77, 0x0a, 0x1b, 0x05, 0x39, 0x00, 0xd4, 0x65, 0x1b, + 0x89, 0x03, 0xa3, 0x3f, 0xb0, 0xb0, 0xb0, 0x3a, 0xd4, 0xc5, 0xca, 0x3f, 0x10, 0x0f, 0x6b, 0x34, + 0x76, 0xad, 0x9b, 0x86, 0xb8, 0x1f, 0x10, 0x0e, 0x22, 0x6b, 0x01, 0x08, 0x0c, 0x0e, 0x66, 0x44, + 0xb3, 0x2f, 0x0e, 0x03, 0x69, 0x63, 0x39, 0x68, 0x60, 0x6c, 0x79, 0x3d, 0xab, 0x22, 0x63, 0x53, + 0x3d, 0x6c, 0x05, 0x27, 0x05, 0x7d, 0x3d, 0x58, 0x44, 0xa3, 0x64, 0x0f, 0x44, 0xa3, 0x3d, 0x6c, + 0x05, 0x27, 0x05, 0x39, 0x3d, 0x70, 0x6f, 0x22, 0x63, 0x53, 0x3d, 0x4f, 0x39, 0x68, 0x60, 0x6c, + 0x79, 0x69, 0x03, 0x2f, 0x0e, 0x03, 0x20, 0x01, 0x08, 0x0d, 0x8a, 0x67, 0x01, 0x10, 0x0f, 0x00, + 0x6b, 0xd0, 0x05, 0xad, 0xa2, 0xa3, 0x3d, 0x96, 0x03, 0x00, 0x41, 0x05, 0xad, 0x78, 0x87, 0xb5, + 0x10, 0x0f, 0x22, 0x6b, 0xa5, 0x9a, 0x3d, 0x95, 0xa6, 0x61, 0x6e, 0x2c, 0xb5, 0x10, 0x0a, 0x6b, + 0x34, 0x76, 0x0a, 0x0d, 0xc7, 0x87, 0x08, 0x7a, 0xc7, 0x87, 0x7d, 0x68, 0x19, 0xd4, 0x9d, 0x0f, + 0x55, 0x62, 0x87, 0x01, 0x73, 0xa4, 0x10, 0x0c, 0x3a, 0x6b, 0x03, 0x0a, 0x42, 0x4a, 0x5f, 0x20, + 0x88, 0xc3, 0x20, 0x0c, 0x7d, 0x4d, 0x35, 0x06, 0x0b, 0x2d, 0x87, 0x44, 0xb9, 0x07, 0x73, 0x70, + 0x5c, 0x0b, 0x08, 0x04, 0x1d, 0xaf, 0x0d, 0x7a, 0x5c, 0x07, 0x2a, 0x35, 0x05, 0x08, 0x6c, 0x53, + 0x73, 0x05, 0x94, 0x47, 0x19, 0x74, 0x04, 0x44, 0x80, 0x0b, 0x39, 0x19, 0x40, 0x5c, 0x03, 0xb3, + 0x08, 0x0b, 0x58, 0x66, 0x01, 0x10, 0x09, 0x4b, 0xb5, 0x29, 0xc3, 0xc7, 0x87, 0xc3, 0x7f, 0xa4, + 0x7e, 0x58, 0x01, 0x73, 0x0c, 0x53, 0x01, 0x29, 0x07, 0x24, 0x3c, 0x07, 0x0d, 0x7a, 0x10, 0x0f, + 0x91, 0x5a, 0x86, 0x19, 0xa5, 0x0e, 0x0b, 0x04, 0x6e, 0x10, 0x0f, 0x2d, 0x6b, 0x6c, 0x05, 0xba, + 0x05, 0x39, 0x2b, 0xaf, 0x7d, 0xba, 0x0b, 0x46, 0x30, 0x89, 0x02, 0x22, 0x35, 0x86, 0x01, 0x3d, + 0x0a, 0x53, 0x1b, 0x07, 0x3b, 0x3d, 0x76, 0x4a, 0x1b, 0x0d, 0x55, 0x19, 0x0d, 0x55, 0x2d, 0x76, + 0x4a, 0x20, 0x07, 0x3b, 0x3a, 0x0a, 0x53, 0x19, 0x35, 0x86, 0x44, 0x89, 0x02, 0x1d, 0x0b, 0x46, + 0x00, 0x06, 0x7d, 0x2a, 0x05, 0x39, 0x00, 0x6c, 0x05, 0x7f, 0x0e, 0x46, 0x5c, 0x3c, 0x08, 0x5c, + 0x5a, 0x3c, 0x8b, 0x65, 0x10, 0x14, 0x2d, 0x6b, 0xc0, 0x22, 0x09, 0x6a, 0x22, 0x03, 0x4a, 0xba, + 0x09, 0x53, 0x22, 0x42, 0x4a, 0x22, 0x07, 0x85, 0xba, 0x05, 0x7d, 0x2d, 0x35, 0x5c, 0xbb, 0x3a, + 0x36, 0x05, 0xba, 0x89, 0x01, 0xaf, 0x3b, 0x0a, 0x46, 0x2d, 0x89, 0x01, 0x62, 0x0c, 0x55, 0x2d, + 0x0a, 0x46, 0x06, 0x3b, 0x00, 0x76, 0x39, 0x25, 0x52, 0x37, 0xbb, 0x02, 0x5c, 0x2d, 0x08, 0x5a, + 0x62, 0x76, 0x39, 0x00, 0x03, 0x4a, 0x2d, 0xc0, 0x00, 0x0c, 0x55, 0x2b, 0x58, 0x8f, 0x85, 0x2d, + 0x09, 0x53, 0x47, 0x23, 0x36, 0x05, 0x36, 0x54, 0x0f, 0x61, 0x7d, 0x25, 0xaf, 0x3b, 0x86, 0x01, + 0x2d, 0x89, 0x0a, 0x46, 0x2b, 0x35, 0x86, 0x39, 0x22, 0x7c, 0x49, 0x30, 0x42, 0x5a, 0x22, 0x52, + 0x4a, 0x3d, 0x48, 0x55, 0x3a, 0x76, 0x6a, 0x10, 0x0f, 0x2d, 0x6b, 0x48, 0x79, 0x1b, 0x63, 0x85, + 0x3d, 0x0b, 0x7d, 0x1b, 0x0b, 0x7d, 0x69, 0x63, 0x85, 0x3a, 0x48, 0x79, 0xb3, 0x0e, 0x46, 0x00, + 0x06, 0x5c, 0x03, 0x1d, 0x77, 0x70, 0x59, 0x2a, 0x08, 0x86, 0x5a, 0x3c, 0x8b, 0x49, 0x7f, 0x63, + 0x5c, 0x7d, 0x7f, 0x0a, 0x39, 0x72, 0x5a, 0x19, 0xaf, 0x5c, 0x78, 0x8b, 0x05, 0x19, 0x8b, 0x05, + 0x3a, 0x07, 0x5c, 0x02, 0x3d, 0x63, 0x85, 0x1b, 0x0a, 0x39, 0x3d, 0x09, 0x39, 0x27, 0x63, 0x85, + 0x10, 0x0f, 0x2d, 0x6b, 0x6c, 0x05, 0xba, 0xa9, 0x30, 0xa9, 0xba, 0x6c, 0x05, 0x30, 0x4f, 0x65, + 0x22, 0x76, 0x5c, 0x69, 0x08, 0x85, 0x1b, 0x0a, 0x5a, 0x3d, 0x35, 0xbe, 0x00, 0x89, 0x02, 0x19, + 0x0b, 0x46, 0x3a, 0x08, 0x3b, 0x20, 0x05, 0x4a, 0x3a, 0x0e, 0x55, 0x1d, 0x42, 0x57, 0x05, 0x39, + 0x2a, 0x07, 0x3b, 0x00, 0x0c, 0x46, 0x1d, 0x35, 0x0f, 0x55, 0xbe, 0x1d, 0x0a, 0x5c, 0x5a, 0x3c, + 0x88, 0x49, 0xb9, 0x0a, 0x73, 0x0d, 0x55, 0x3c, 0x76, 0x4a, 0x27, 0xb3, 0x0c, 0x46, 0x1d, 0xe0, + 0x39, 0x20, 0xd4, 0x5c, 0x09, 0x01, 0x10, 0x0d, 0x6b, 0x50, 0x28, 0x9e, 0x29, 0x88, 0x07, 0x1b, + 0xb3, 0x0e, 0x5a, 0x3c, 0x83, 0x0a, 0x3c, 0x63, 0x7d, 0x3c, 0x75, 0x6f, 0x3c, 0x36, 0x79, 0x3c, + 0x0a, 0x5c, 0x02, 0x3c, 0x08, 0x5c, 0x03, 0x3c, 0x70, 0x55, 0xba, 0x87, 0x28, 0x9e, 0x10, 0x0f, + 0x3a, 0x18, 0x07, 0xbd, 0x3c, 0x07, 0x31, 0x3c, 0x6c, 0xa7, 0x26, 0x73, 0x89, 0x29, 0x76, 0x4a, + 0x3c, 0x80, 0x0c, 0x85, 0x1d, 0xe0, 0x7d, 0x01, 0x1d, 0xe0, 0x3b, 0x01, 0x3c, 0x60, 0x6c, 0xbc, + 0x03, 0x4a, 0xb5, 0x7e, 0x58, 0x01, 0x73, 0x0c, 0x5a, 0x01, 0x29, 0x07, 0x31, 0x29, 0x07, 0xbd, + 0x10, 0x08, 0x00, 0x98, 0xae, 0xae, 0xae, 0x10, 0x0f, 0x5d, 0xec, 0xb2, 0x7f, 0xe0, 0x53, 0x29, + 0x01, 0x08, 0x39, 0x1d, 0xa3, 0xb5, 0x01, 0x73, 0xc0, 0x73, 0x0a, 0x39, 0x4d, 0x3c, 0x01, 0x0a, + 0x31, 0x7f, 0x01, 0x0a, 0x31, 0x7f, 0x09, 0x39, 0x68, 0x3c, 0xc0, 0x62, 0x87, 0x9f, 0x1d, 0xa3, + 0x29, 0x01, 0x08, 0x39, 0x2a, 0xe0, 0x53, 0x20, 0xd4, 0xb2, 0x10, 0x14, 0x23, 0x18, 0x81, 0x6b, + 0x01, 0x23, 0x6d, 0x42, 0x67, 0x02, 0x1b, 0x01, 0x0c, 0x62, 0xaf, 0x2f, 0x0a, 0x68, 0x01, 0x06, + 0x58, 0x2b, 0x39, 0x05, 0x01, 0x60, 0x0a, 0xc3, 0x46, 0x2b, 0x07, 0x27, 0x8e, 0x4a, 0x8d, 0x10, +}; + +static const uint16_t mf_rlefont_DejaVuSans24_aa_glyph_offsets_0[95] = { + 0x0000, 0x0003, 0x0015, 0x001d, 0x0077, 0x00d4, 0x0174, 0x01dd, + 0x01e1, 0x021d, 0x0251, 0x0282, 0x028f, 0x0299, 0x02a2, 0x02a7, + 0x02de, 0x0337, 0x034b, 0x0389, 0x03d2, 0x040b, 0x0440, 0x049d, + 0x04cf, 0x0539, 0x0598, 0x05a0, 0x05ad, 0x05d6, 0x05e5, 0x060c, + 0x063e, 0x06fc, 0x0757, 0x07a0, 0x07f0, 0x084a, 0x0859, 0x0867, + 0x08c2, 0x08d3, 0x08d9, 0x08ef, 0x093c, 0x0943, 0x09ae, 0x0a06, + 0x0a4b, 0x0a70, 0x0abf, 0x0b03, 0x0b52, 0x0b5e, 0x0b8e, 0x0bee, + 0x0c96, 0x0cf4, 0x0d2e, 0x0d56, 0x0d63, 0x0d9b, 0x0da8, 0x0dd2, + 0x0ddc, 0x0de9, 0x0e2a, 0x0e3b, 0x0e71, 0x0e7e, 0x0ebf, 0x0ed4, + 0x0f1b, 0x0f25, 0x0f2c, 0x0f3f, 0x0f7f, 0x0f85, 0x0fbd, 0x0fc7, + 0x100e, 0x1021, 0x102e, 0x1047, 0x1086, 0x109f, 0x10aa, 0x10f5, + 0x1168, 0x11b1, 0x1207, 0x122f, 0x1261, 0x1268, 0x129b, +}; + +static const struct mf_rlefont_char_range_s mf_rlefont_DejaVuSans24_aa_char_ranges[] = { + {32, 95, mf_rlefont_DejaVuSans24_aa_glyph_offsets_0, mf_rlefont_DejaVuSans24_aa_glyph_data_0}, +}; + +const struct mf_rlefont_s mf_rlefont_DejaVuSans24_aa = { + { + "DejaVu Sans Book 24", + "DejaVuSans24_aa", + 25, /* width */ + 25, /* height */ + 6, /* min x advance */ + 24, /* max x advance */ + 2, /* baseline x */ + 19, /* baseline y */ + 28, /* line height */ + 0, /* flags */ + 63, /* fallback character */ + &mf_rlefont_character_width, + &mf_rlefont_render_character, + }, + 4, /* version */ + mf_rlefont_DejaVuSans24_aa_dictionary_data, + mf_rlefont_DejaVuSans24_aa_dictionary_offsets, + 121, /* rle dict count */ + 169, /* total dict count */ + 1, /* char range count */ + mf_rlefont_DejaVuSans24_aa_char_ranges, +}; + +#ifdef MF_INCLUDED_FONTS +/* List entry for searching fonts by name. */ +static const struct mf_font_list_s mf_rlefont_DejaVuSans24_aa_listentry = { + MF_INCLUDED_FONTS, + (struct mf_font_s*)&mf_rlefont_DejaVuSans24_aa +}; +#undef MF_INCLUDED_FONTS +#define MF_INCLUDED_FONTS (&mf_rlefont_DejaVuSans24_aa_listentry) +#endif + + +/* End of automatically generated font definition for DejaVuSans24_aa. */ + diff --git a/src/gdisp/fonts/DejaVuSans32.c b/src/gdisp/fonts/DejaVuSans32.c new file mode 100644 index 00000000..ca669582 --- /dev/null +++ b/src/gdisp/fonts/DejaVuSans32.c @@ -0,0 +1,291 @@ + + +/* Start of automatically generated font definition for DejaVuSans32. */ + +#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_DejaVuSans32_dictionary_data[578] = { + 0x06, 0x83, 0x1e, 0x82, 0x03, 0x0c, 0x80, 0x09, 0x8b, 0x84, 0x0e, 0x80, 0x82, 0x0c, 0x80, 0x05, + 0x83, 0x16, 0x83, 0x93, 0x0d, 0x87, 0x83, 0x11, 0x81, 0x1c, 0x87, 0x17, 0x80, 0x01, 0x1e, 0x82, + 0x1e, 0x82, 0x1b, 0x81, 0x07, 0x82, 0x06, 0x06, 0x82, 0x03, 0x0b, 0x82, 0x08, 0x03, 0x82, 0x85, + 0x08, 0x11, 0x83, 0x05, 0x11, 0x8f, 0x11, 0x80, 0x01, 0x82, 0x91, 0x0e, 0x92, 0x16, 0x1a, 0x82, + 0x10, 0x82, 0x80, 0x12, 0x04, 0x83, 0x8f, 0x18, 0x82, 0x11, 0x82, 0x0a, 0x82, 0x11, 0x82, 0x0a, + 0x82, 0x11, 0x82, 0x0a, 0x82, 0x15, 0x0f, 0x0a, 0x83, 0x12, 0x0d, 0x82, 0x03, 0x08, 0x83, 0x05, + 0x40, 0x07, 0x1e, 0x83, 0x11, 0x82, 0x05, 0x46, 0x05, 0x82, 0x0f, 0x04, 0x82, 0x0b, 0x8e, 0x0f, + 0x0b, 0x81, 0x1a, 0x83, 0x87, 0x1f, 0x81, 0x13, 0x88, 0x0d, 0x07, 0x83, 0x14, 0x83, 0x14, 0x82, + 0x81, 0x19, 0x89, 0x16, 0x89, 0x80, 0x14, 0x82, 0x81, 0x01, 0x82, 0x08, 0x82, 0x02, 0x80, 0x1f, + 0x82, 0x0d, 0x82, 0x0e, 0x82, 0x0d, 0x82, 0x0e, 0x80, 0x16, 0x82, 0x04, 0x04, 0x82, 0x81, 0x13, + 0x8c, 0x8a, 0x01, 0x01, 0x83, 0x17, 0x18, 0x8a, 0x16, 0x8b, 0x15, 0x81, 0x05, 0x13, 0x83, 0x17, + 0x01, 0x81, 0x41, 0x17, 0x1d, 0x19, 0x43, 0x08, 0x08, 0x82, 0x06, 0x81, 0x0f, 0x82, 0x0c, 0x82, + 0x0f, 0x82, 0x0c, 0x82, 0x0f, 0x82, 0x0a, 0x81, 0x14, 0x08, 0x82, 0x02, 0x86, 0x04, 0x80, 0x02, + 0x82, 0x80, 0x01, 0x80, 0x40, 0x28, 0x27, 0x27, 0x27, 0x27, 0x18, 0xd3, 0x21, 0x6a, 0x51, 0x5a, + 0x24, 0xeb, 0xa4, 0xd3, 0x3f, 0x3b, 0x3b, 0x1e, 0xcb, 0x3b, 0x56, 0x52, 0x2b, 0x64, 0x44, 0x30, + 0x2b, 0x64, 0x44, 0x30, 0x2b, 0x64, 0x44, 0x30, 0x2b, 0x64, 0x2a, 0x2b, 0x69, 0x68, 0xa7, 0x66, + 0x1d, 0xb3, 0x59, 0x34, 0x1d, 0x58, 0xcb, 0x33, 0x3e, 0x1b, 0x3e, 0x3e, 0x38, 0x38, 0x2e, 0x2c, + 0x34, 0x53, 0x34, 0x1d, 0x35, 0x59, 0x51, 0x23, 0xbf, 0x39, 0xc2, 0x2c, 0x39, 0x1c, 0x4d, 0xf4, + 0x33, 0xff, 0x3f, 0x41, 0x41, 0xf4, 0x32, 0x27, 0x61, 0x32, 0xeb, 0x48, 0x68, 0x67, 0xd2, 0x42, + 0xb4, 0x34, 0x67, 0x63, 0x55, 0x27, 0x19, 0x61, 0x63, 0x55, 0x27, 0x19, 0x66, 0x2b, 0x27, 0x27, + 0x27, 0x19, 0x40, 0x68, 0x27, 0x19, 0x40, 0x57, 0x32, 0x00, 0xc0, 0x2e, 0xdc, 0x34, 0xc3, 0x35, + 0xc5, 0x1e, 0x1c, 0x34, 0xd2, 0x6a, 0x66, 0xcb, 0xc2, 0x37, 0x2c, 0x37, 0x2c, 0xcb, 0x62, 0xc2, + 0x27, 0x27, 0x27, 0x0f, 0xc5, 0x32, 0x30, 0x2c, 0x67, 0x53, 0x67, 0x53, 0x67, 0x53, 0x67, 0x53, + 0x67, 0x53, 0xd2, 0x2a, 0x42, 0x6c, 0x4e, 0x20, 0xe4, 0x42, 0xcb, 0x4f, 0x69, 0xd2, 0x3d, 0x3b, + 0x67, 0x58, 0xc5, 0x3b, 0x3b, 0x3a, 0xc2, 0x18, 0x34, 0x1c, 0x66, 0x1c, 0x32, 0x5b, 0x6c, 0xc0, + 0x37, 0xdc, 0xc7, 0x4f, 0x35, 0xff, 0x5a, 0x3c, 0xc3, 0x35, 0x5d, 0x4d, 0x67, 0x3b, 0x64, 0x00, + 0x2b, 0xd2, 0x42, 0x58, 0x69, 0xc2, 0x39, 0xd2, 0x49, 0x51, 0x5a, 0x3c, 0xc3, 0x35, 0xc5, 0x1e, + 0x53, 0x67, 0x3b, 0x67, 0x27, 0x19, 0xff, 0x3f, 0x3b, 0x27, 0x27, 0x00, 0x39, 0x45, 0x1a, 0xc5, + 0xd2, 0x3f, 0x24, 0xa4, 0x34, 0x22, 0x1c, 0x4c, 0x4b, 0x23, 0xbf, 0x39, 0xc3, 0x2c, 0x25, 0x1a, + 0x52, 0xd2, 0xb4, 0xbd, 0xf4, 0x2d, 0x28, 0x1d, 0x68, 0x27, 0x27, 0x27, 0x27, 0xe4, 0x1f, 0xc7, + 0xd2, 0x6c, 0x34, 0x1d, 0x58, 0xc7, 0x33, 0x64, 0x3d, 0x44, 0x58, 0x64, 0x4c, 0x53, 0x4f, 0x20, + 0x21, 0x2d, 0x24, 0xd3, 0x5e, 0x1c, 0x4e, 0x18, 0x67, 0x2b, 0xeb, 0x38, 0x42, 0x44, 0xc0, 0x67, + 0xd3, 0x2e, 0x30, 0x34, 0x1f, 0x65, 0x6c, 0x3a, 0x51, 0x58, 0x66, 0xd2, 0xc0, 0x34, 0xb4, 0xbd, + 0xc7, 0x4f, 0x25, 0xc3, 0x62, 0xc2, 0xcb, 0x21, 0xc3, 0x37, 0xd3, 0x28, 0xe7, 0x62, 0x5b, 0xa4, + 0xcb, 0x48, 0xdc, 0x1c, 0x34, 0x46, 0x2c, 0x69, 0x5b, 0x32, 0x23, 0x3f, 0x66, 0x00, 0x1a, 0xbf, + 0x2d, 0x5f, 0x58, 0xf4, 0xd2, 0xb4, 0xc5, 0xcb, 0x3f, 0x52, 0x48, 0xb4, 0xa5, 0xc7, 0xd2, 0x25, + 0xd2, 0x5e, +}; + +static const uint16_t mf_rlefont_DejaVuSans32_dictionary_offsets[141] = { + 0x0000, 0x0002, 0x0005, 0x0007, 0x0008, 0x0009, 0x000a, 0x000c, + 0x000f, 0x0011, 0x0013, 0x0016, 0x0017, 0x0019, 0x001a, 0x001e, + 0x0022, 0x0024, 0x0027, 0x002a, 0x002d, 0x002f, 0x0031, 0x0034, + 0x0038, 0x003a, 0x003e, 0x0040, 0x0042, 0x0044, 0x0046, 0x0047, + 0x0049, 0x0055, 0x0056, 0x0057, 0x0059, 0x005a, 0x005d, 0x005f, + 0x0060, 0x0062, 0x0064, 0x0067, 0x0068, 0x006b, 0x006e, 0x0070, + 0x0072, 0x0074, 0x0075, 0x0078, 0x0079, 0x007a, 0x007c, 0x007e, + 0x0080, 0x0085, 0x0088, 0x008a, 0x008d, 0x008f, 0x0091, 0x0099, + 0x009c, 0x009e, 0x00a1, 0x00a3, 0x00a6, 0x00ad, 0x00af, 0x00b0, + 0x00b2, 0x00b4, 0x00b5, 0x00b6, 0x00b8, 0x00bb, 0x00c7, 0x00c9, + 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00cf, 0x00d1, 0x00d4, 0x00d6, + 0x00da, 0x00fd, 0x011c, 0x011e, 0x0121, 0x0123, 0x0125, 0x0129, + 0x012c, 0x0132, 0x013c, 0x013e, 0x0142, 0x0149, 0x0159, 0x015d, + 0x0160, 0x0163, 0x0166, 0x0168, 0x0172, 0x017c, 0x018c, 0x0195, + 0x01a4, 0x01b4, 0x01b6, 0x01b9, 0x01bd, 0x01c9, 0x01cf, 0x01d4, + 0x01d6, 0x01d8, 0x01dd, 0x01e1, 0x01e3, 0x0204, 0x0208, 0x0212, + 0x0218, 0x021a, 0x0222, 0x0227, 0x0229, 0x022b, 0x022d, 0x0231, + 0x0233, 0x0239, 0x023b, 0x023f, 0x0242, +}; + +static const uint8_t mf_rlefont_DejaVuSans32_glyph_data_0[2504] = { + 0x0a, 0x00, 0x10, 0x0d, 0x6e, 0x6c, 0x80, 0x6f, 0x25, 0x6e, 0x8b, 0x10, 0x0f, 0x6e, 0x68, 0x2c, + 0x7e, 0x7e, 0x7e, 0x7e, 0x10, 0x1b, 0x67, 0x6e, 0x52, 0x58, 0x5e, 0x74, 0xc7, 0x4f, 0x9d, 0x2c, + 0x8c, 0x5a, 0x24, 0x9d, 0x2c, 0x9d, 0x2c, 0x8c, 0x5a, 0x24, 0x9d, 0xb4, 0x9d, 0xdc, 0xa5, 0xc7, + 0x4f, 0x58, 0x5e, 0xc7, 0xd0, 0x57, 0x5f, 0x10, 0x14, 0x4c, 0x4a, 0x1a, 0xc5, 0x28, 0x4a, 0x1b, + 0x4b, 0x21, 0x6a, 0x59, 0xfd, 0x24, 0xcb, 0xc7, 0xca, 0x33, 0xb5, 0x37, 0xb4, 0x37, 0xb4, 0x37, + 0xe5, 0xc7, 0x21, 0xd1, 0x37, 0x6a, 0x62, 0x49, 0xc7, 0x21, 0x2d, 0x24, 0xc0, 0x67, 0x24, 0x9b, + 0x9f, 0x5e, 0x9f, 0x5e, 0x9f, 0x24, 0x3f, 0xb7, 0xcb, 0x3a, 0x46, 0x2c, 0x5a, 0x4f, 0x6a, 0x5e, + 0x9d, 0x47, 0x4a, 0x1a, 0xc5, 0x28, 0x10, 0x1e, 0x00, 0x6e, 0xc2, 0x2b, 0xa4, 0x2d, 0xf0, 0x3d, + 0xcb, 0x3f, 0xca, 0x47, 0xa7, 0xcb, 0x58, 0x3d, 0xf0, 0xc5, 0xd0, 0x3d, 0xf0, 0xc5, 0xca, 0x1b, + 0xa0, 0x67, 0xeb, 0x58, 0xb4, 0x33, 0xe4, 0x82, 0x33, 0xb4, 0xc7, 0x74, 0x3d, 0xcb, 0x9f, 0x52, + 0x3b, 0xcb, 0x82, 0xd3, 0x3b, 0xa5, 0xb5, 0xb5, 0x34, 0xa7, 0xcb, 0xd2, 0x3a, 0x82, 0x44, 0x9f, + 0x44, 0x68, 0x58, 0x44, 0x74, 0xeb, 0x45, 0xdc, 0x2a, 0x6c, 0x3d, 0x2c, 0xb5, 0xc7, 0x1b, 0xca, + 0x2a, 0xcb, 0x47, 0x3b, 0xcb, 0x2b, 0x69, 0xc2, 0x10, 0x19, 0x6e, 0x18, 0x50, 0xc5, 0x2e, 0xea, + 0x4f, 0x27, 0x55, 0x41, 0x25, 0xc3, 0x9c, 0xc7, 0x45, 0xf0, 0xb7, 0xcb, 0x58, 0x3d, 0xc2, 0x35, + 0x67, 0x58, 0xc5, 0xc2, 0x2c, 0x3d, 0x35, 0xc1, 0x3d, 0x20, 0xd3, 0x3d, 0x18, 0xff, 0xc5, 0x3b, + 0x67, 0xc2, 0x33, 0xc5, 0x8f, 0x67, 0x1d, 0x20, 0xd3, 0x3a, 0x1c, 0xc2, 0x33, 0xc3, 0xb5, 0xcb, + 0x3a, 0xc3, 0xc5, 0xc2, 0x10, 0x09, 0x6e, 0x91, 0x10, 0x0c, 0x40, 0x6b, 0xc7, 0x28, 0x19, 0x28, + 0x27, 0x76, 0x5f, 0x27, 0x7b, 0x25, 0xe7, 0x76, 0x6c, 0x19, 0x25, 0x7a, 0x5e, 0x7a, 0x10, 0x0c, + 0x40, 0xcb, 0x61, 0x7a, 0x39, 0xd0, 0x27, 0x69, 0x76, 0xd0, 0x27, 0x7b, 0x28, 0x89, 0x32, 0x19, + 0x28, 0x19, 0x28, 0x19, 0x10, 0x10, 0x6e, 0xb4, 0x61, 0xd0, 0x62, 0xa5, 0xc5, 0x51, 0xec, 0xb5, + 0x51, 0xf1, 0x5b, 0x49, 0x28, 0xc7, 0x48, 0x90, 0xe5, 0x4f, 0xb1, 0xcb, 0x3f, 0x3d, 0xa7, 0x66, + 0xa5, 0xa5, 0x39, 0x9d, 0x47, 0x10, 0x1b, 0x25, 0x60, 0x91, 0x72, 0x1d, 0xd3, 0x47, 0x36, 0x1f, + 0x23, 0x36, 0x39, 0x91, 0x10, 0x0a, 0x63, 0x43, 0x4f, 0x89, 0x28, 0x27, 0xf4, 0x28, 0x10, 0x0c, + 0x4c, 0x40, 0x43, 0x49, 0x62, 0x49, 0x62, 0x49, 0x10, 0x0a, 0x63, 0x43, 0x4f, 0x89, 0x10, 0x0b, + 0x67, 0x40, 0x19, 0x48, 0x76, 0x68, 0x27, 0x76, 0x23, 0xa3, 0x2a, 0x48, 0x76, 0x0f, 0x81, 0x19, + 0x48, 0xa3, 0x2a, 0x48, 0xa3, 0x10, 0x14, 0x6e, 0x35, 0x50, 0x52, 0x4e, 0x35, 0x4e, 0x18, 0xf4, + 0x33, 0x64, 0x3d, 0xe4, 0xd2, 0x38, 0x38, 0x38, 0x3c, 0x53, 0x00, 0x3c, 0x53, 0x5d, 0x18, 0x4e, + 0x35, 0x72, 0x21, 0xc3, 0x62, 0xc3, 0x10, 0x14, 0xf4, 0x6e, 0x98, 0x98, 0x98, 0xf4, 0x91, 0x6f, + 0xe4, 0x72, 0x51, 0x23, 0x2d, 0x1a, 0x1c, 0x10, 0x14, 0x6e, 0xc2, 0xcb, 0x72, 0x72, 0xe7, 0x24, + 0x3e, 0x41, 0x8b, 0x29, 0x5e, 0x99, 0x25, 0x99, 0x62, 0x9a, 0x1c, 0x10, 0x14, 0x67, 0x40, 0x90, + 0x5c, 0xc2, 0x8b, 0x18, 0x37, 0x1d, 0x62, 0xc3, 0x90, 0xc7, 0x32, 0x81, 0x00, 0x8b, 0x3f, 0x93, + 0xc7, 0x58, 0x59, 0x4f, 0x4b, 0x5e, 0x49, 0x10, 0x14, 0x25, 0x40, 0x1e, 0x7f, 0x28, 0x23, 0x28, + 0x30, 0x32, 0xd2, 0x37, 0x6c, 0x62, 0xa7, 0x66, 0x6b, 0xa7, 0xc7, 0x4f, 0x58, 0x5e, 0x74, 0xcb, + 0x4f, 0x44, 0x2a, 0x2c, 0x39, 0xc7, 0xb4, 0x51, 0x29, 0x3d, 0x44, 0xb4, 0x46, 0x5f, 0x46, 0x5f, + 0x46, 0x1a, 0x81, 0x89, 0x10, 0x14, 0x6e, 0x1c, 0x72, 0x72, 0x00, 0x4f, 0x8b, 0x67, 0x4b, 0x5c, + 0x30, 0x81, 0x41, 0x8b, 0x29, 0x4c, 0xc7, 0x58, 0x59, 0x4f, 0x4b, 0x5e, 0x49, 0x10, 0x14, 0x6e, + 0xa4, 0x98, 0x68, 0xd3, 0x39, 0x5a, 0x4f, 0xc7, 0xcc, 0x4f, 0x25, 0x5b, 0x2a, 0x48, 0xa3, 0x2a, + 0x2d, 0x9e, 0x1a, 0x49, 0x2d, 0x3b, 0xc7, 0x93, 0x1d, 0x4d, 0x2e, 0x58, 0x2e, 0xb4, 0x34, 0x78, + 0x23, 0x73, 0xfd, 0xb4, 0x66, 0x1c, 0x21, 0xc3, 0x62, 0xc3, 0x10, 0x14, 0x61, 0x40, 0x9a, 0x1c, + 0xa3, 0x20, 0xa3, 0x2a, 0x48, 0xa3, 0x20, 0xa3, 0x2a, 0x48, 0xa3, 0x20, 0xa3, 0x2a, 0x32, 0x19, + 0x48, 0xa3, 0x2a, 0x32, 0x10, 0x14, 0x6e, 0x35, 0x50, 0x66, 0x94, 0x00, 0x1c, 0x66, 0x1c, 0x5e, + 0x49, 0x10, 0x14, 0xe4, 0x6e, 0xc3, 0x62, 0xc3, 0xcb, 0x72, 0x4e, 0xa4, 0xcb, 0x2e, 0x93, 0x78, + 0xeb, 0x3e, 0x42, 0x35, 0x2e, 0x54, 0xd3, 0x2e, 0x1d, 0x34, 0x46, 0x35, 0x8d, 0x5b, 0x18, 0xa3, + 0x20, 0x61, 0xcb, 0x3f, 0x1e, 0x18, 0xc5, 0x24, 0x4b, 0x21, 0x98, 0x23, 0x10, 0x0b, 0x79, 0x10, + 0x0b, 0x79, 0x28, 0x27, 0xf4, 0x28, 0x10, 0x1b, 0x6e, 0x60, 0xe5, 0x48, 0x9c, 0x5e, 0x4b, 0x21, + 0xd3, 0x39, 0x4b, 0x39, 0x4b, 0x21, 0xd3, 0x5e, 0xc2, 0x25, 0x49, 0x90, 0xa1, 0x1d, 0x28, 0xc3, + 0x90, 0xa1, 0xcb, 0x62, 0x93, 0x1e, 0x10, 0x1b, 0x6e, 0x63, 0x22, 0x1c, 0x4c, 0x1d, 0x46, 0x6e, + 0x48, 0x36, 0x4c, 0x22, 0x1c, 0x10, 0x1b, 0x25, 0x6e, 0x6e, 0x34, 0x1e, 0xcb, 0x90, 0x90, 0xa1, + 0x23, 0x90, 0xa1, 0x1d, 0x28, 0x68, 0x7f, 0x62, 0x49, 0x21, 0x1d, 0x39, 0x4b, 0x21, 0xd3, 0x39, + 0x4b, 0x5e, 0x6a, 0x48, 0x3a, 0x1e, 0x10, 0x11, 0x69, 0x6e, 0xc3, 0x62, 0x4b, 0x5e, 0x49, 0xcb, + 0x4f, 0x20, 0x39, 0xc5, 0x58, 0x89, 0x32, 0xa3, 0x44, 0x00, 0x3d, 0x48, 0x76, 0xd2, 0x40, 0x37, + 0x89, 0x10, 0x20, 0x6e, 0x3b, 0xcb, 0x72, 0xfd, 0x24, 0x46, 0xc3, 0x4d, 0xc7, 0x1b, 0xc2, 0x47, + 0xeb, 0x3b, 0x3a, 0xd3, 0x3e, 0x42, 0x58, 0x18, 0xec, 0xa7, 0xc7, 0x58, 0x20, 0xb3, 0xa7, 0xc7, + 0xb4, 0xa5, 0x1c, 0x58, 0x20, 0x35, 0x58, 0xc7, 0xd2, 0x58, 0x35, 0x18, 0xa0, 0x30, 0xa0, 0x30, + 0xa0, 0x30, 0xa0, 0x82, 0x2a, 0xe2, 0x18, 0x2c, 0x18, 0x58, 0xa5, 0xb3, 0x53, 0x58, 0x1c, 0x74, + 0x58, 0x20, 0xd3, 0xc3, 0x3b, 0x18, 0xdc, 0xc7, 0x3b, 0x41, 0x1e, 0x3a, 0x1d, 0x2b, 0x4d, 0xc7, + 0xb4, 0xcb, 0x1e, 0x1c, 0x66, 0x1c, 0x5e, 0x6a, 0x10, 0x16, 0x6e, 0x2a, 0x1b, 0x24, 0x7f, 0x90, + 0x32, 0x30, 0x32, 0xd2, 0x37, 0xbd, 0x37, 0x69, 0xd2, 0x21, 0x2c, 0x5e, 0xeb, 0x58, 0x57, 0xd2, + 0x4e, 0x20, 0x4f, 0x29, 0x1e, 0xe7, 0x44, 0xb4, 0x1c, 0x34, 0x46, 0x54, 0x36, 0x33, 0x2b, 0x64, + 0x44, 0xd3, 0x3b, 0x1e, 0x74, 0x64, 0x64, 0x29, 0xf4, 0x45, 0x58, 0x10, 0x16, 0x6e, 0x1c, 0x72, + 0x59, 0x74, 0x3d, 0xe4, 0xc2, 0x38, 0x42, 0x44, 0x69, 0x53, 0x34, 0x1c, 0x59, 0x4e, 0x5a, 0x42, + 0x35, 0x42, 0x44, 0x6c, 0x2b, 0x64, 0x44, 0x30, 0x2b, 0x64, 0x44, 0x30, 0x3b, 0x3a, 0xd2, 0x3e, + 0x2f, 0x0f, 0x1c, 0x34, 0x1c, 0x10, 0x16, 0x6e, 0x4d, 0xcb, 0x72, 0xe5, 0x33, 0x1c, 0x24, 0xcb, + 0xa4, 0xcb, 0x1e, 0x1f, 0x3f, 0x3b, 0xa3, 0x2a, 0x32, 0x80, 0x00, 0x27, 0x75, 0x1a, 0x24, 0x68, + 0x4d, 0xe4, 0x1e, 0x1c, 0x59, 0x5e, 0x6a, 0x10, 0x19, 0x6e, 0x1c, 0x72, 0xeb, 0x2f, 0x74, 0x8f, + 0x64, 0x20, 0x3a, 0x1f, 0xeb, 0x3d, 0x1b, 0xd2, 0x3d, 0x3b, 0x56, 0xff, 0x56, 0xff, 0x56, 0x74, + 0x64, 0x64, 0x29, 0x4d, 0x3d, 0x69, 0x64, 0x64, 0x18, 0x4c, 0xd2, 0x3b, 0x67, 0x29, 0xec, 0xd3, + 0x3a, 0x36, 0x24, 0x1c, 0x34, 0x1c, 0x10, 0x14, 0x6e, 0x46, 0x9a, 0x80, 0x5a, 0x3c, 0x1c, 0x59, + 0xe5, 0x33, 0x7b, 0x00, 0x5e, 0x9a, 0x1c, 0x10, 0x12, 0x6e, 0x1c, 0x51, 0x49, 0x66, 0x1c, 0x51, + 0x80, 0x4b, 0x72, 0x72, 0x39, 0x91, 0x27, 0x10, 0x19, 0x6e, 0x18, 0xd3, 0x21, 0x6a, 0x59, 0xff, + 0x24, 0xcb, 0xa4, 0xcb, 0x1e, 0x1f, 0x3f, 0x3b, 0xa3, 0x20, 0xf4, 0x32, 0x27, 0x1b, 0x49, 0x3d, + 0x18, 0x23, 0x3d, 0x18, 0x23, 0x56, 0xc7, 0x3b, 0x56, 0x1f, 0x8a, 0x2b, 0x3e, 0xe5, 0x58, 0xc7, + 0x1e, 0x1c, 0x59, 0x21, 0x23, 0x10, 0x18, 0x6e, 0x95, 0x95, 0x1f, 0x8a, 0x1c, 0x8a, 0x1c, 0x8a, + 0x1c, 0x65, 0x6c, 0x3a, 0x95, 0x95, 0x10, 0x09, 0x6e, 0x91, 0x80, 0x6f, 0x10, 0x09, 0x6e, 0x91, + 0x6f, 0x7b, 0x32, 0xf5, 0x48, 0x9c, 0x77, 0x10, 0x15, 0x6e, 0x68, 0x3b, 0x3a, 0xd2, 0x3e, 0x42, + 0xec, 0xcb, 0x33, 0x73, 0x20, 0x96, 0xc2, 0x37, 0x23, 0x77, 0x68, 0x86, 0x57, 0xe2, 0x39, 0xcb, + 0x58, 0x51, 0x73, 0x3e, 0x3c, 0xeb, 0x3e, 0x42, 0x20, 0x3a, 0xd2, 0x3b, 0x10, 0x12, 0x6e, 0x91, + 0x6f, 0x89, 0x00, 0x5e, 0x9a, 0x1c, 0x10, 0x1c, 0x6e, 0x1d, 0x47, 0x1f, 0x1d, 0x1b, 0x2d, 0x35, + 0x74, 0x58, 0x1f, 0x1d, 0x1b, 0x2d, 0x58, 0xd2, 0x3f, 0xd2, 0x1f, 0xef, 0xc7, 0x58, 0xd2, 0x47, + 0xc1, 0x20, 0x30, 0x8e, 0x8e, 0x1a, 0xb7, 0xa7, 0xcb, 0x1f, 0xa7, 0xa7, 0xc7, 0x1f, 0xa7, 0xc7, + 0xcb, 0xd2, 0x47, 0xa5, 0xbf, 0x92, 0x68, 0x92, 0x68, 0x45, 0x30, 0xa4, 0xd3, 0x45, 0x30, 0xa4, + 0xd3, 0x45, 0xd2, 0x58, 0x74, 0x1f, 0x74, 0xd2, 0x3f, 0x95, 0x68, 0x10, 0x18, 0x6e, 0x68, 0x74, + 0x44, 0x68, 0x74, 0x44, 0x2d, 0xfe, 0x8a, 0x74, 0x6b, 0x8a, 0x53, 0x3a, 0xdb, 0xc7, 0x44, 0xdb, + 0xcb, 0x44, 0xcb, 0xcb, 0x44, 0xcb, 0xd2, 0x44, 0xeb, 0xc0, 0x44, 0x68, 0x58, 0x44, 0x68, 0x35, + 0x45, 0xa0, 0xe4, 0x58, 0x20, 0x2c, 0x4c, 0x6c, 0x2a, 0xcb, 0x3d, 0xb4, 0xbd, 0x3a, 0xcb, 0xa4, + 0xbb, 0xc5, 0x2b, 0xeb, 0xcb, 0x3d, 0xa4, 0x2d, 0x29, 0x8f, 0x29, 0x8f, 0x29, 0x35, 0xc5, 0x2b, + 0x00, 0xc2, 0x10, 0x19, 0x6e, 0x70, 0x85, 0x5e, 0x49, 0x10, 0x13, 0x6e, 0x5a, 0x72, 0x51, 0x4b, + 0xc7, 0x33, 0x73, 0x3e, 0x3c, 0x78, 0x78, 0x53, 0xf5, 0x33, 0x73, 0x4b, 0x59, 0x69, 0x3c, 0x5a, + 0x39, 0x91, 0x10, 0x19, 0x6e, 0x70, 0x85, 0x5e, 0x4b, 0x75, 0x75, 0x10, 0x16, 0x6e, 0x5a, 0x72, + 0x51, 0x4b, 0xc7, 0x33, 0x73, 0x67, 0xd3, 0x42, 0xb4, 0x34, 0x78, 0x53, 0xf5, 0x33, 0x73, 0x5a, + 0x3c, 0x1c, 0x72, 0x39, 0xcb, 0x58, 0x51, 0x73, 0x64, 0x3d, 0x2a, 0xe4, 0x2b, 0xd2, 0x38, 0x0f, + 0x33, 0x2b, 0x64, 0x20, 0x10, 0x14, 0xe4, 0x6e, 0x49, 0x21, 0x6a, 0x59, 0xf5, 0x2e, 0xdc, 0x67, + 0x3b, 0x76, 0x5f, 0x81, 0xe7, 0x90, 0x66, 0xa4, 0x4b, 0x9c, 0xe5, 0x32, 0x81, 0xfd, 0x76, 0xd3, + 0x3a, 0xca, 0x3f, 0x93, 0x46, 0xdc, 0x1c, 0x39, 0x4b, 0x10, 0x14, 0xe4, 0x40, 0x32, 0x36, 0x1e, + 0x31, 0x91, 0x6f, 0x89, 0x10, 0x17, 0x6e, 0x95, 0x95, 0x95, 0x95, 0x1f, 0x8a, 0x3b, 0x33, 0x1b, + 0xd2, 0x3a, 0xc2, 0x18, 0x34, 0x1c, 0x66, 0x1c, 0x5e, 0x49, 0x10, 0x16, 0x40, 0x19, 0x67, 0x45, + 0x6c, 0x56, 0xeb, 0x3b, 0x4c, 0x6c, 0x2b, 0x64, 0x44, 0x30, 0xc5, 0xa4, 0xcb, 0x3a, 0x78, 0x84, + 0x44, 0x69, 0x2a, 0xd3, 0x39, 0x82, 0x5e, 0x82, 0x4c, 0x1a, 0xbf, 0x32, 0x30, 0x9c, 0x28, 0x7f, + 0xa3, 0x10, 0x20, 0x40, 0x55, 0x3b, 0x1b, 0x82, 0x3f, 0x58, 0x53, 0xc5, 0x53, 0x53, 0x3f, 0x53, + 0x53, 0x3f, 0x53, 0x53, 0xa4, 0xcb, 0xb4, 0xbd, 0x18, 0x2a, 0xf4, 0xcb, 0xcb, 0x58, 0x29, 0xcb, + 0xcb, 0x58, 0x29, 0xcb, 0xcb, 0x58, 0x4d, 0x58, 0xb4, 0xa5, 0x53, 0xa2, 0xe4, 0xa2, 0xec, 0x74, + 0x58, 0xa2, 0x3e, 0x69, 0xcb, 0x58, 0xc0, 0x1b, 0xd2, 0xd2, 0x3f, 0xcb, 0xcb, 0x1b, 0xab, 0x74, + 0xd2, 0xd2, 0x1b, 0xb2, 0xcb, 0xb4, 0xbd, 0x1b, 0x8f, 0x2d, 0x20, 0x74, 0x8f, 0x20, 0x74, 0x8f, + 0x20, 0x74, 0x8f, 0x18, 0x67, 0xf0, 0x8a, 0x3b, 0x10, 0x16, 0x69, 0x40, 0x41, 0x3b, 0x33, 0xfd, + 0x3f, 0x93, 0x53, 0x5d, 0x18, 0x4e, 0x35, 0x57, 0xeb, 0x21, 0xc0, 0x37, 0x1d, 0x77, 0xe7, 0x48, + 0x61, 0xd3, 0x28, 0xd3, 0x62, 0x49, 0x62, 0xcb, 0xcb, 0x21, 0xc0, 0x21, 0x35, 0x39, 0xcb, 0x58, + 0x4e, 0x18, 0x67, 0x3b, 0x3e, 0x42, 0x44, 0xe2, 0x3b, 0x1e, 0xcb, 0x3b, 0x10, 0x14, 0x40, 0x41, + 0x47, 0x8a, 0x00, 0x3e, 0x42, 0x45, 0x4d, 0x73, 0xe5, 0x93, 0x2c, 0x44, 0x4d, 0x9b, 0x23, 0x5b, + 0x54, 0xbf, 0x9c, 0x28, 0x68, 0x76, 0x00, 0x91, 0x10, 0x16, 0x40, 0x55, 0x36, 0x1e, 0x31, 0x18, + 0x25, 0xd3, 0x28, 0xc7, 0x48, 0x25, 0x99, 0x61, 0x99, 0x25, 0x5b, 0x20, 0x25, 0xd3, 0x90, 0x1c, + 0x1e, 0x31, 0x10, 0x0c, 0x40, 0x6a, 0x9c, 0x9c, 0x32, 0x80, 0x6f, 0x6f, 0xf4, 0x90, 0x9c, 0x9c, + 0x10, 0x0b, 0x40, 0x27, 0x0f, 0x27, 0x41, 0x89, 0x69, 0x32, 0x27, 0x41, 0x27, 0x41, 0x89, 0x69, + 0x32, 0x27, 0x00, 0x89, 0x28, 0x81, 0x10, 0x0c, 0x40, 0x6a, 0x9c, 0x48, 0x91, 0x6f, 0x7b, 0x5e, + 0x6a, 0x9c, 0x9c, 0x10, 0x1b, 0x6e, 0x3e, 0x97, 0xc0, 0x21, 0x35, 0x4e, 0x18, 0x67, 0x3b, 0x3e, + 0x67, 0x3e, 0x3b, 0x1e, 0xcb, 0x3b, 0x10, 0x10, 0x62, 0x6e, 0x43, 0x43, 0x36, 0x2f, 0x46, 0x10, + 0x44, 0x33, 0x55, 0x4a, 0x4c, 0x7a, 0x10, 0x14, 0x63, 0x4d, 0x68, 0x5c, 0xc0, 0x61, 0xd2, 0x27, + 0x21, 0xc3, 0x51, 0x49, 0x59, 0xf5, 0x33, 0xc7, 0xb4, 0x34, 0x78, 0x53, 0x34, 0x23, 0x20, 0x59, + 0x51, 0x8d, 0x10, 0x14, 0x40, 0x68, 0x80, 0x88, 0x23, 0x38, 0x38, 0x2e, 0x7d, 0x10, 0x12, 0x63, + 0x3b, 0xeb, 0x21, 0x6a, 0x72, 0x4f, 0xe7, 0xa4, 0x4e, 0xa3, 0xa4, 0x81, 0x8b, 0xf4, 0x2a, 0x28, + 0xe7, 0x28, 0xcb, 0xb4, 0x72, 0x21, 0x6a, 0x62, 0x6a, 0x10, 0x14, 0x62, 0x25, 0x27, 0x8b, 0x71, + 0x10, 0x14, 0x00, 0x63, 0x3e, 0x50, 0x66, 0x1d, 0x20, 0x67, 0x2b, 0xcb, 0x42, 0x58, 0x42, 0x44, + 0x69, 0x36, 0x2f, 0x46, 0x6c, 0x27, 0xfd, 0x3c, 0x2b, 0xc8, 0x24, 0xeb, 0x44, 0xa4, 0x1c, 0x39, + 0x5a, 0x5e, 0x6a, 0x10, 0x0b, 0x40, 0x8f, 0x24, 0x98, 0x98, 0x34, 0x2b, 0x57, 0x5e, 0x5a, 0x39, + 0x5a, 0x39, 0x5a, 0x37, 0x80, 0x6f, 0x10, 0x14, 0x1b, 0x63, 0x71, 0x19, 0x48, 0x39, 0x64, 0x1e, + 0x4d, 0x51, 0x4b, 0x39, 0x5a, 0x5e, 0x6a, 0x10, 0x14, 0x40, 0x68, 0x80, 0x8f, 0x9e, 0x1a, 0x87, + 0x3c, 0x78, 0x78, 0x78, 0x78, 0x78, 0x10, 0x09, 0x7c, 0x6f, 0x6f, 0x10, 0x09, 0x7c, 0x80, 0x80, + 0x7b, 0x48, 0x77, 0xa1, 0x10, 0x13, 0x4c, 0x25, 0x7b, 0xa4, 0xcb, 0x33, 0x73, 0x20, 0x96, 0xe2, + 0x62, 0x6a, 0x77, 0x68, 0x86, 0x57, 0xe2, 0x39, 0xcb, 0x58, 0x51, 0x73, 0x67, 0x1d, 0x10, 0x09, + 0x40, 0x91, 0x6f, 0x7b, 0x10, 0x1f, 0xe4, 0x63, 0x82, 0x74, 0xc2, 0x47, 0xc1, 0xd3, 0xc0, 0xd3, + 0x1b, 0x1c, 0xc1, 0x2d, 0xc2, 0x35, 0x9f, 0xfd, 0x3e, 0x18, 0xfd, 0xa4, 0x53, 0x67, 0x53, 0x67, + 0x53, 0x67, 0x53, 0x67, 0x53, 0x83, 0x83, 0x83, 0x10, 0x14, 0x00, 0x63, 0x58, 0x8f, 0x9e, 0x1a, + 0x87, 0x3c, 0x78, 0x78, 0x78, 0x78, 0x78, 0x10, 0x14, 0x00, 0x63, 0x3e, 0x50, 0xff, 0x4e, 0xa5, + 0xd3, 0x3c, 0x53, 0x67, 0x3b, 0x3e, 0x38, 0x38, 0x2e, 0x00, 0x93, 0x53, 0x3c, 0xc2, 0x58, 0x66, + 0x1c, 0x21, 0xc3, 0x62, 0xc3, 0x10, 0x14, 0x00, 0x63, 0x58, 0x88, 0x23, 0x38, 0x38, 0x2e, 0x7d, + 0x69, 0x4f, 0x80, 0x10, 0x14, 0x1b, 0x63, 0x71, 0x7b, 0x10, 0x0d, 0x00, 0x63, 0x58, 0x9b, 0xbb, + 0xd3, 0x21, 0xc3, 0x5e, 0xc3, 0x28, 0xc7, 0x48, 0x76, 0x00, 0x91, 0x10, 0x11, 0x63, 0x4d, 0x23, + 0x5e, 0x5a, 0x39, 0x5a, 0x4f, 0xc5, 0xcc, 0x4f, 0x27, 0x7f, 0x23, 0x62, 0x4b, 0x90, 0x41, 0x27, + 0x3c, 0xe8, 0x64, 0x1e, 0xe7, 0xb4, 0x66, 0x1c, 0x21, 0xc3, 0x62, 0xc3, 0x10, 0x0d, 0x6e, 0x68, + 0x8b, 0x18, 0x6a, 0x21, 0x6a, 0x39, 0xc2, 0x98, 0x27, 0x6f, 0x75, 0x23, 0x62, 0x49, 0x28, 0x23, + 0x10, 0x14, 0x3f, 0x63, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x53, 0x34, 0x23, 0x4d, 0x5d, 0x35, + 0x59, 0x51, 0x8d, 0x10, 0x13, 0x63, 0x2c, 0x67, 0x2c, 0x42, 0xb4, 0x34, 0x78, 0x84, 0x44, 0x4d, + 0x9b, 0x68, 0x2c, 0x5e, 0x82, 0x4c, 0x1a, 0xbf, 0x32, 0x30, 0x32, 0x30, 0x28, 0xeb, 0x28, 0x7f, + 0x10, 0x1a, 0x63, 0xec, 0x74, 0xc2, 0x2a, 0x29, 0x1d, 0x2a, 0xe4, 0x58, 0xa4, 0xd3, 0x92, 0x68, + 0x92, 0x68, 0x92, 0x68, 0x45, 0x00, 0x82, 0x82, 0x1e, 0xb7, 0xb5, 0xbd, 0x1e, 0xb7, 0xb5, 0xbd, + 0x1e, 0xb7, 0xb5, 0xbd, 0x3a, 0xdb, 0xa7, 0xbf, 0x33, 0xcb, 0x8f, 0x3e, 0x74, 0xc3, 0x33, 0xcb, + 0x8f, 0x67, 0xc2, 0xa4, 0xd3, 0x2e, 0x93, 0x23, 0x4d, 0x67, 0x3b, 0x4d, 0x10, 0x13, 0x63, 0x35, + 0x3e, 0x67, 0x3b, 0x18, 0x4e, 0x35, 0x57, 0x23, 0x21, 0xc0, 0x37, 0x1d, 0x77, 0x52, 0x4c, 0x1e, + 0x7f, 0x97, 0x6c, 0x5e, 0xd3, 0xc0, 0x57, 0x30, 0x51, 0xf5, 0x58, 0x5d, 0x4d, 0x2e, 0x35, 0x10, + 0x13, 0x63, 0x2c, 0x2b, 0x1b, 0x78, 0x23, 0x73, 0x29, 0x1e, 0xeb, 0x44, 0x2a, 0x93, 0x2c, 0x44, + 0x69, 0x2a, 0xd3, 0x39, 0x82, 0x37, 0xbd, 0x62, 0xeb, 0xd3, 0x37, 0xd2, 0x77, 0xf5, 0x32, 0xc7, + 0x48, 0xa3, 0x2a, 0x32, 0x19, 0x48, 0x77, 0xa1, 0x10, 0x11, 0x63, 0x2c, 0x5a, 0x3c, 0x1c, 0x59, + 0xf5, 0x48, 0x61, 0x99, 0x61, 0x99, 0xf4, 0x48, 0x25, 0x1c, 0x59, 0xf5, 0x24, 0x1c, 0x10, 0x14, + 0x67, 0x40, 0xc2, 0x9c, 0x9c, 0x67, 0x2e, 0x37, 0x7b, 0x48, 0x62, 0x6a, 0x32, 0x52, 0x90, 0x19, + 0x25, 0x91, 0x75, 0x68, 0x48, 0x7f, 0x10, 0x0b, 0x4c, 0x61, 0x6f, 0x6f, 0x6f, 0x6f, 0x10, 0x14, + 0x40, 0xfe, 0xd3, 0x90, 0x9c, 0x41, 0x6f, 0x75, 0x7f, 0x9c, 0x32, 0x61, 0x91, 0xf4, 0x48, 0x62, + 0x6a, 0x9c, 0x62, 0xc2, 0x10, 0x1b, 0x60, 0x63, 0x21, 0xe7, 0x3f, 0xcc, 0x4c, 0x5a, 0x45, 0xc0, + 0x36, 0x3d, 0xf0, 0x4b, 0x1e, 0x3b, 0xff, 0x10, +}; + +static const uint16_t mf_rlefont_DejaVuSans32_glyph_offsets_0[95] = { + 0x0000, 0x0003, 0x000c, 0x0015, 0x0038, 0x0077, 0x00c9, 0x0105, + 0x0109, 0x011f, 0x0135, 0x0156, 0x0165, 0x016f, 0x0179, 0x017f, + 0x0196, 0x01b7, 0x01c8, 0x01dc, 0x01f8, 0x0225, 0x023e, 0x026b, + 0x0285, 0x0292, 0x02bd, 0x02c0, 0x02c7, 0x02e7, 0x02f6, 0x0317, + 0x0332, 0x0389, 0x03bc, 0x03e6, 0x0408, 0x0437, 0x0448, 0x0458, + 0x0486, 0x0497, 0x049d, 0x04a8, 0x04cd, 0x04d7, 0x051c, 0x0563, + 0x056a, 0x0583, 0x058c, 0x05b5, 0x05da, 0x05e5, 0x05fb, 0x0622, + 0x0679, 0x06ad, 0x06c9, 0x06e3, 0x06f1, 0x0707, 0x0714, 0x0727, + 0x072f, 0x0737, 0x0753, 0x075e, 0x077a, 0x0781, 0x07a4, 0x07b7, + 0x07c8, 0x07d7, 0x07dc, 0x07e5, 0x07ff, 0x0805, 0x0829, 0x0838, + 0x0856, 0x0864, 0x086a, 0x087c, 0x089d, 0x08b1, 0x08c4, 0x08e1, + 0x091d, 0x0940, 0x0969, 0x097f, 0x0997, 0x099f, 0x09b5, +}; + +static const struct mf_rlefont_char_range_s mf_rlefont_DejaVuSans32_char_ranges[] = { + {32, 95, mf_rlefont_DejaVuSans32_glyph_offsets_0, mf_rlefont_DejaVuSans32_glyph_data_0}, +}; + +const struct mf_rlefont_s mf_rlefont_DejaVuSans32 = { + { + "DejaVu Sans Book 32", + "DejaVuSans32", + 33, /* width */ + 34, /* height */ + 9, /* min x advance */ + 32, /* max x advance */ + 2, /* baseline x */ + 26, /* baseline y */ + 37, /* line height */ + 2, /* flags */ + 63, /* fallback character */ + &mf_rlefont_character_width, + &mf_rlefont_render_character, + }, + 4, /* version */ + mf_rlefont_DejaVuSans32_dictionary_data, + mf_rlefont_DejaVuSans32_dictionary_offsets, + 87, /* rle dict count */ + 140, /* total dict count */ + 1, /* char range count */ + mf_rlefont_DejaVuSans32_char_ranges, +}; + +#ifdef MF_INCLUDED_FONTS +/* List entry for searching fonts by name. */ +static const struct mf_font_list_s mf_rlefont_DejaVuSans32_listentry = { + MF_INCLUDED_FONTS, + (struct mf_font_s*)&mf_rlefont_DejaVuSans32 +}; +#undef MF_INCLUDED_FONTS +#define MF_INCLUDED_FONTS (&mf_rlefont_DejaVuSans32_listentry) +#endif + + +/* End of automatically generated font definition for DejaVuSans32. */ + diff --git a/src/gdisp/fonts/DejaVuSans32_aa.c b/src/gdisp/fonts/DejaVuSans32_aa.c new file mode 100644 index 00000000..8b8f6e8d --- /dev/null +++ b/src/gdisp/fonts/DejaVuSans32_aa.c @@ -0,0 +1,569 @@ + + +/* Start of automatically generated font definition for DejaVuSans32_aa. */ + +#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_DejaVuSans32_aa_dictionary_data[740] = { + 0x86, 0x1a, 0x86, 0x1a, 0x85, 0x1e, 0x82, 0x1e, 0x81, 0x12, 0x82, 0x08, 0x1a, 0x1d, 0x05, 0x85, + 0x13, 0x1c, 0x88, 0x0f, 0x81, 0xcb, 0x0a, 0x82, 0x0f, 0x80, 0x1e, 0x82, 0x1e, 0x82, 0x83, 0x08, + 0x0c, 0xce, 0x1d, 0x0d, 0x40, 0x07, 0x8d, 0x13, 0xc9, 0x85, 0x1e, 0x82, 0x15, 0x17, 0x8c, 0x01, + 0x18, 0x01, 0xc1, 0x11, 0x82, 0x09, 0x81, 0xcd, 0x1b, 0x0f, 0x16, 0x80, 0xcc, 0x80, 0xc5, 0x80, + 0xca, 0x1e, 0xc6, 0x81, 0x04, 0x81, 0x0d, 0x93, 0x0d, 0x93, 0x41, 0x11, 0x8b, 0xce, 0xcc, 0x03, + 0x84, 0x01, 0x02, 0xcd, 0xc2, 0xcd, 0xc9, 0x91, 0x06, 0x4f, 0x01, 0x8f, 0x11, 0x8f, 0x11, 0x8f, + 0x0b, 0xc9, 0x81, 0xc6, 0xcb, 0x81, 0xca, 0xc3, 0xc1, 0x01, 0x82, 0x01, 0xc8, 0x81, 0x80, 0xc7, + 0x0f, 0x82, 0x02, 0x0c, 0x82, 0x80, 0xcd, 0xce, 0x80, 0x11, 0x82, 0x09, 0x82, 0x12, 0x82, 0x09, + 0x82, 0x01, 0xc5, 0x81, 0xc9, 0xc4, 0x80, 0xce, 0xcd, 0xc1, 0xc6, 0xc2, 0xca, 0xcd, 0x80, 0xc8, + 0xc1, 0xc4, 0xca, 0xc5, 0xc8, 0xcd, 0xc1, 0xcd, 0x81, 0xcb, 0xc1, 0xc3, 0xc7, 0xce, 0xc1, 0x01, + 0xc9, 0xc1, 0x02, 0xc5, 0x01, 0xc2, 0xc7, 0x80, 0xc2, 0xcd, 0xca, 0xc4, 0x01, 0x42, 0x3b, 0x09, + 0xc7, 0xc2, 0x0e, 0xc2, 0xc8, 0xce, 0xc5, 0xc2, 0xce, 0x80, 0x10, 0xc4, 0xc1, 0x0a, 0x19, 0xc8, + 0xc2, 0xc2, 0x82, 0xc1, 0xc7, 0x07, 0x80, 0xc3, 0x01, 0xcd, 0xc3, 0x82, 0xc1, 0x01, 0xc2, 0xc6, + 0xc8, 0xc4, 0xca, 0x81, 0xcc, 0xc1, 0xc7, 0x81, 0xce, 0xc2, 0xc2, 0xcd, 0x81, 0xc1, 0x80, 0x40, + 0x28, 0x12, 0x82, 0xcb, 0xc6, 0xc2, 0xc1, 0x81, 0xc4, 0x01, 0x80, 0xcb, 0xcd, 0xca, 0xcc, 0x81, + 0x80, 0xc4, 0xc1, 0xc3, 0xc1, 0x82, 0xcb, 0x81, 0x01, 0xc2, 0xde, 0xce, 0x81, 0xc9, 0xcd, 0x80, + 0xc9, 0x81, 0x11, 0x82, 0x08, 0x82, 0x08, 0x82, 0x08, 0x82, 0x08, 0x82, 0x08, 0x82, 0x08, 0x82, + 0x08, 0x82, 0x08, 0x82, 0x08, 0x82, 0x08, 0x82, 0x08, 0x82, 0x08, 0x82, 0x08, 0x82, 0x07, 0xc4, + 0x81, 0xc4, 0xce, 0x01, 0x81, 0x01, 0x01, 0xc3, 0xc3, 0x81, 0xcd, 0xcb, 0xc9, 0xc2, 0xc7, 0xc1, + 0x14, 0xcb, 0xcd, 0x91, 0x01, 0x05, 0x0e, 0x9f, 0x97, 0x0e, 0x1d, 0xeb, 0xe0, 0x31, 0x92, 0x0f, + 0x40, 0x9e, 0x1f, 0x4d, 0x4e, 0xe3, 0x44, 0x76, 0x51, 0x49, 0xe3, 0x85, 0x9f, 0x4d, 0x0a, 0x1e, + 0x38, 0x02, 0x76, 0x51, 0x2c, 0x84, 0x58, 0x47, 0x51, 0x4b, 0x4c, 0x8c, 0x94, 0x24, 0x19, 0x24, + 0x83, 0x3f, 0x6f, 0x68, 0x02, 0x94, 0x28, 0x1c, 0x91, 0x84, 0x19, 0x24, 0x19, 0x24, 0x0f, 0x38, + 0x83, 0xe2, 0x5b, 0x4c, 0x9a, 0x7c, 0x39, 0x47, 0x51, 0x8b, 0x47, 0x0b, 0x4b, 0x36, 0xdc, 0x5b, + 0x76, 0x04, 0x34, 0x36, 0xdc, 0x77, 0x76, 0x81, 0x57, 0x1a, 0x4d, 0x54, 0x54, 0x54, 0x54, 0x54, + 0x9f, 0x2a, 0x2d, 0x2d, 0x19, 0x24, 0x51, 0x50, 0x23, 0x84, 0x51, 0x50, 0x23, 0x84, 0x51, 0x50, + 0x23, 0x84, 0x51, 0x41, 0x51, 0x51, 0x50, 0x23, 0x1c, 0x8e, 0x06, 0x1c, 0x06, 0x22, 0x1c, 0x0f, + 0x22, 0x26, 0x8a, 0x08, 0x6b, 0xdc, 0x39, 0x26, 0x05, 0x22, 0x6b, 0xdc, 0x66, 0x76, 0x8f, 0x34, + 0x33, 0xf2, 0x33, 0xf2, 0x6b, 0xdc, 0x66, 0x76, 0x8f, 0x34, 0x6b, 0xdc, 0x39, 0x26, 0x05, 0x22, + 0x29, 0xd4, 0x22, 0x26, 0x8a, 0x08, 0x1d, 0x51, 0x4f, 0x47, 0x7e, 0x66, 0x1d, 0x51, 0x4b, 0x4c, + 0x8c, 0x7c, 0x3a, 0x47, 0x51, 0x2c, 0x84, 0x58, 0x95, 0x4d, 0x0a, 0x1e, 0x38, 0x02, 0x3d, 0x50, + 0x05, 0x5a, 0x57, 0x85, 0x67, 0xf2, 0x83, 0x8f, 0x0c, 0xe3, 0x4b, 0xf2, 0x83, 0x5f, 0x1e, 0x93, + 0x84, 0x83, 0x7c, 0x3a, 0x4c, 0x8c, 0x0a, 0xe3, 0x95, 0x74, 0x07, 0x47, 0x07, 0x25, 0x95, 0x08, + 0x22, 0x26, 0x0c, 0x84, 0x95, 0x8e, 0x05, 0x26, 0x05, 0x84, 0x95, 0x53, 0x66, 0x26, 0x74, 0x33, + 0xf2, 0x33, 0xf2, 0x95, 0x53, 0x66, 0x26, 0x74, 0x95, 0x8e, 0x05, 0x26, 0x05, 0x84, 0x95, 0x08, + 0x22, 0x26, 0x0c, 0x84, 0x95, 0x74, 0x07, 0x47, 0x07, 0x25, 0x83, 0x7c, 0x3a, 0x4c, 0x8c, 0x0a, + 0xe3, 0x83, 0x5f, 0x1e, 0x93, 0x84, 0x83, 0x8f, 0x0c, 0xe3, 0x4b, 0xf2, 0x2e, 0x4a, 0x53, 0x89, + 0x64, 0x94, 0x24, 0x2d, 0x1c, 0x81, 0x1d, 0xe0, 0x0f, 0x57, 0x00, 0x51, 0x69, 0x2e, 0x1e, 0x57, + 0x00, 0x23, 0x4d, 0x71, 0x91, 0x01, 0x6b, 0x81, 0x57, 0x71, 0x78, 0x0f, 0x77, 0x29, 0x9a, 0x34, + 0x72, 0x1e, 0x00, 0x7c, 0x06, 0x6b, 0x06, 0x4b, 0x3d, 0x7c, 0x3a, 0x47, 0x51, 0x4f, 0x47, 0x7e, + 0x66, 0x6e, 0x52, 0x1c, 0x8a, 0x07, 0x20, 0x0b, 0x6b, 0x8e, 0x06, 0x71, 0x8f, 0x94, 0x8b, 0x43, + 0x43, 0xe7, 0x04, 0x0d, 0x38, 0x19, 0x24, 0x1d, 0x02, 0x22, 0x1c, 0x55, 0x05, 0x1c, 0x08, 0x57, + 0x3b, 0x0b, 0x93, 0x3b, 0x29, 0x51, 0x0f, 0x58, 0x19, 0xfd, 0x43, 0x55, 0x29, 0x6e, 0x52, 0x03, + 0x76, 0x9a, 0x0d, 0x94, 0x7f, 0x29, 0x7c, 0x7f, 0x71, 0x6e, 0x3a, 0x27, 0x74, 0x04, 0x27, 0x97, + 0x66, 0x00, 0x71, 0x07, 0x22, 0x6b, 0x4a, 0x53, 0x51, 0x50, 0x23, 0x84, 0x51, 0x29, 0x2e, 0x3f, + 0x01, 0x8e, 0x01, 0x91, 0x0f, 0x46, 0x71, 0xd4, 0x46, 0x41, 0x68, 0x50, 0x0c, 0x53, 0x35, 0x55, + 0x3b, 0x2a, 0x0c, 0x1c, +}; + +static const uint16_t mf_rlefont_DejaVuSans32_aa_dictionary_offsets[188] = { + 0x0000, 0x0005, 0x0009, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, + 0x0011, 0x0012, 0x0014, 0x0016, 0x0019, 0x001e, 0x001f, 0x0020, + 0x0021, 0x0023, 0x0024, 0x0026, 0x0028, 0x002a, 0x002c, 0x002d, + 0x002e, 0x0030, 0x0031, 0x0033, 0x0036, 0x0038, 0x0039, 0x003a, + 0x003b, 0x003d, 0x003f, 0x0041, 0x0042, 0x0044, 0x0045, 0x004c, + 0x004d, 0x004f, 0x0050, 0x0052, 0x0053, 0x0055, 0x0057, 0x0058, + 0x0059, 0x0061, 0x0063, 0x0065, 0x0067, 0x0069, 0x006c, 0x006e, + 0x0070, 0x0073, 0x0075, 0x0077, 0x0079, 0x0082, 0x0084, 0x0086, + 0x0088, 0x008a, 0x008c, 0x008e, 0x0090, 0x0092, 0x0094, 0x0096, + 0x0099, 0x009b, 0x009d, 0x00a0, 0x00a3, 0x00a5, 0x00a7, 0x00a9, + 0x00ad, 0x00af, 0x00b0, 0x00b2, 0x00b3, 0x00b5, 0x00b7, 0x00ba, + 0x00bb, 0x00bd, 0x00be, 0x00bf, 0x00c1, 0x00c3, 0x00c5, 0x00c6, + 0x00c8, 0x00ca, 0x00ce, 0x00d0, 0x00d2, 0x00d4, 0x00d6, 0x00d8, + 0x00da, 0x00dd, 0x00df, 0x00e1, 0x00e2, 0x00e3, 0x00e5, 0x00e7, + 0x00ea, 0x00ec, 0x00ee, 0x00f0, 0x00f2, 0x00f4, 0x00f6, 0x00f8, + 0x00fa, 0x00fb, 0x00fd, 0x00ff, 0x0101, 0x0102, 0x0103, 0x011f, + 0x0121, 0x0123, 0x0126, 0x0128, 0x012a, 0x012c, 0x012e, 0x0130, + 0x0131, 0x0133, 0x0135, 0x0137, 0x013b, 0x013e, 0x014b, 0x015c, + 0x0160, 0x0162, 0x0164, 0x0167, 0x0169, 0x016e, 0x0192, 0x0196, + 0x01a8, 0x01af, 0x01f4, 0x0251, 0x0254, 0x0256, 0x0258, 0x025a, + 0x025d, 0x025f, 0x0270, 0x0272, 0x0279, 0x0281, 0x0283, 0x0287, + 0x0290, 0x0295, 0x0298, 0x02a4, 0x02a6, 0x02a8, 0x02aa, 0x02ac, + 0x02c6, 0x02c8, 0x02ce, 0x02d0, 0x02d2, 0x02d4, 0x02d9, 0x02dc, + 0x02de, 0x02e0, 0x02e2, 0x02e4, +}; + +static const uint8_t mf_rlefont_DejaVuSans32_aa_glyph_data_0[6702] = { + 0x0a, 0x00, 0x10, 0x0d, 0x82, 0xe0, 0x3b, 0xac, 0x3b, 0x53, 0x28, 0x78, 0x0f, 0x28, 0x78, 0x52, + 0x3b, 0x0c, 0x38, 0x3b, 0x0b, 0x88, 0x20, 0x82, 0xc1, 0x10, 0x0f, 0x82, 0xa4, 0xa4, 0xa4, 0xa4, + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0x10, 0x1b, 0x76, 0x82, 0x81, 0x4f, 0x3d, 0x0e, 0x93, 0x9f, 0xc6, + 0x03, 0x41, 0x9b, 0x05, 0x37, 0x09, 0x57, 0x3d, 0x7e, 0x01, 0x2e, 0x78, 0x3a, 0x3d, 0x0b, 0x38, + 0x2e, 0x8f, 0x94, 0x06, 0x41, 0x81, 0x4f, 0x37, 0x3c, 0x02, 0x00, 0xc6, 0x03, 0x6f, 0x9b, 0x46, + 0x27, 0x9b, 0x46, 0x27, 0x9b, 0x46, 0x95, 0x97, 0x04, 0x41, 0x9b, 0x05, 0x37, 0x08, 0x57, 0x3d, + 0x7e, 0x01, 0x37, 0x0c, 0x88, 0x3d, 0x0a, 0x52, 0x37, 0x81, 0x4f, 0x3d, 0x0e, 0x93, 0x9f, 0xc6, + 0x03, 0x41, 0x9b, 0x05, 0x29, 0xd4, 0x46, 0x77, 0x26, 0xd4, 0x46, 0x77, 0x26, 0xd4, 0x46, 0x77, + 0x6f, 0x9b, 0x05, 0x41, 0x81, 0x4f, 0x37, 0x7e, 0x01, 0x00, 0xc6, 0x03, 0x37, 0x0b, 0x38, 0x3d, + 0x09, 0x57, 0x37, 0x81, 0x5b, 0x41, 0x78, 0x3a, 0x37, 0x97, 0x04, 0x43, 0x8f, 0x0f, 0x39, 0x37, + 0x08, 0x57, 0x3d, 0x3c, 0x01, 0x10, 0x14, 0x27, 0x1c, 0xdc, 0x20, 0xdc, 0x20, 0xdc, 0x20, 0xdc, + 0x1b, 0x9a, 0x09, 0xcf, 0x34, 0x0c, 0x09, 0x05, 0x02, 0x83, 0x32, 0x0b, 0x3f, 0x95, 0x32, 0x0c, + 0x30, 0x95, 0x7e, 0x88, 0x70, 0x94, 0x01, 0x02, 0x04, 0x06, 0x5a, 0x83, 0x8a, 0x08, 0xdc, 0x31, + 0xa1, 0xdc, 0x31, 0x53, 0x66, 0xdc, 0x31, 0x0c, 0x4b, 0x01, 0xf0, 0x31, 0x3c, 0x57, 0x09, 0x55, + 0x72, 0x2c, 0x38, 0x09, 0x05, 0x01, 0x37, 0x05, 0x0d, 0x1e, 0xb6, 0x07, 0x2f, 0x61, 0x0a, 0xe3, + 0x4b, 0x37, 0xdc, 0x61, 0x0d, 0x84, 0x06, 0x9f, 0xd4, 0xe5, 0x7c, 0x0c, 0x31, 0xe7, 0x8f, 0xb6, + 0x31, 0xe7, 0x32, 0xb6, 0x9f, 0xd4, 0xe5, 0x4e, 0x0c, 0x95, 0x45, 0x05, 0x4c, 0xf8, 0x66, 0x05, + 0x8e, 0x4f, 0x1d, 0x51, 0xb6, 0x53, 0x1e, 0x7d, 0x95, 0x3f, 0x3a, 0x01, 0x95, 0x8f, 0x05, 0x08, + 0x0b, 0x0c, 0x0d, 0x91, 0x40, 0x08, 0x03, 0x31, 0xdc, 0x20, 0xdc, 0x20, 0xdc, 0x20, 0xdc, 0x20, + 0xdc, 0x10, 0x1e, 0x82, 0x8f, 0x5a, 0x52, 0x9d, 0x71, 0x0b, 0x93, 0x27, 0x98, 0x84, 0xb6, 0x04, + 0x26, 0x06, 0x0f, 0x62, 0x71, 0xcc, 0x05, 0x01, 0x55, 0x62, 0x3d, 0x32, 0x0e, 0x39, 0x27, 0x7e, + 0x08, 0x41, 0x49, 0x07, 0x47, 0x09, 0x88, 0x29, 0x8a, 0x03, 0x41, 0x97, 0x0c, 0x1d, 0x04, 0x0f, + 0x7f, 0x29, 0xa1, 0x43, 0x32, 0xb6, 0x3d, 0x78, 0x4f, 0x27, 0xf0, 0xe5, 0xe0, 0x3d, 0x08, 0x38, + 0x36, 0xa1, 0x43, 0x32, 0xb6, 0x41, 0x9b, 0x03, 0x36, 0x8a, 0x03, 0x41, 0x9b, 0x0c, 0x41, 0x0c, + 0x93, 0x6f, 0x4e, 0x08, 0x41, 0x49, 0x07, 0x43, 0x06, 0xc4, 0x6f, 0xcc, 0x64, 0x55, 0x62, 0x6e, + 0x64, 0x8f, 0x92, 0x0f, 0x89, 0x02, 0x69, 0x04, 0x25, 0xb6, 0x04, 0x43, 0x0a, 0x3a, 0x43, 0x98, + 0x84, 0xb6, 0x04, 0x26, 0x8f, 0x0a, 0x0e, 0x57, 0x0a, 0x02, 0x43, 0x05, 0x0f, 0x7f, 0x32, 0x53, + 0x39, 0x01, 0x55, 0x62, 0x6b, 0x32, 0x0d, 0x0f, 0x06, 0x43, 0x7e, 0x09, 0x41, 0x49, 0x07, 0x6f, + 0x08, 0x38, 0x41, 0x8a, 0x03, 0x41, 0x9b, 0x0c, 0x36, 0x9b, 0x03, 0x41, 0xa1, 0x43, 0x32, 0xb6, + 0x36, 0x0c, 0x5b, 0x00, 0xdc, 0xe5, 0xe0, 0x6b, 0x07, 0xc4, 0x3d, 0xa1, 0x43, 0x32, 0xb6, 0x29, + 0x6e, 0x04, 0x1d, 0x8a, 0x03, 0x41, 0x9b, 0x0c, 0x29, 0x0b, 0x3a, 0x47, 0x7e, 0x09, 0x41, 0x49, + 0x07, 0x27, 0x05, 0x57, 0x01, 0x47, 0xcc, 0x64, 0x55, 0x62, 0x69, 0x32, 0x53, 0x06, 0x26, 0x98, + 0x84, 0xb6, 0x04, 0x27, 0x09, 0x88, 0x69, 0x8f, 0x0a, 0x0e, 0x57, 0x0a, 0x02, 0x10, 0x19, 0x3d, + 0x82, 0x75, 0xcf, 0x0e, 0x89, 0x6a, 0x37, 0xa2, 0x21, 0x47, 0x9b, 0x21, 0x47, 0x0b, 0xb6, 0x08, + 0x86, 0x01, 0x02, 0x05, 0x92, 0x2e, 0x53, 0x8b, 0x1c, 0xa1, 0x1c, 0x8e, 0x05, 0x1c, 0x05, 0xb6, + 0x04, 0x20, 0x78, 0x84, 0x06, 0x1b, 0xcb, 0x94, 0x4f, 0x2f, 0x32, 0x0c, 0x84, 0x91, 0x5b, 0x1d, + 0x8f, 0xb6, 0x29, 0x0a, 0x84, 0x9e, 0x8a, 0x5b, 0x1d, 0x06, 0x22, 0x27, 0x04, 0x84, 0x06, 0x43, + 0x5f, 0x93, 0x3d, 0x8e, 0x07, 0x27, 0x0a, 0x4b, 0x3d, 0x80, 0x3a, 0x43, 0x74, 0x02, 0x27, 0x53, + 0x66, 0x1d, 0x6e, 0x4b, 0x00, 0x0a, 0x4b, 0x00, 0x51, 0x01, 0x1d, 0x9a, 0x53, 0x34, 0x94, 0x77, + 0x29, 0x53, 0x8b, 0x76, 0x98, 0x25, 0x5b, 0x6b, 0x8e, 0x0c, 0x26, 0x7e, 0x34, 0x36, 0x05, 0x84, + 0x60, 0x3d, 0x9a, 0x0e, 0x25, 0x39, 0x36, 0x8e, 0x57, 0x07, 0x4c, 0x75, 0x91, 0x53, 0xb6, 0x03, + 0x6b, 0x5f, 0x94, 0x1e, 0x77, 0x4e, 0xc4, 0x29, 0x32, 0x2c, 0xb6, 0x04, 0x43, 0x4e, 0x88, 0x6f, + 0x6c, 0x0b, 0x53, 0x40, 0x9e, 0x3d, 0x49, 0x93, 0x10, 0x09, 0x82, 0xac, 0x10, 0x0c, 0x3d, 0x2a, + 0x0b, 0x88, 0x1c, 0x97, 0x03, 0x1c, 0x0c, 0x88, 0x43, 0xd0, 0x04, 0x1c, 0x0c, 0x52, 0x1c, 0x9b, + 0x08, 0x1c, 0x49, 0x03, 0x1c, 0x53, 0x28, 0x03, 0x22, 0x1c, 0x7e, 0x08, 0x1c, 0x7c, 0x05, 0x1c, + 0x8a, 0x03, 0xab, 0x02, 0x1c, 0xa1, 0x3d, 0xc3, 0x3b, 0xa1, 0xab, 0x02, 0x1c, 0x8a, 0x03, 0x1c, + 0x49, 0x05, 0x1c, 0x3c, 0x08, 0x20, 0x9a, 0x22, 0x1c, 0x78, 0x57, 0x3b, 0x4e, 0x03, 0x1c, 0x9b, + 0x08, 0x3b, 0x0c, 0x52, 0x41, 0xd0, 0x04, 0x3b, 0x0c, 0x88, 0x3b, 0x97, 0x03, 0x3b, 0x0b, 0x88, + 0x10, 0x0c, 0x2a, 0x0b, 0x88, 0x3b, 0x9b, 0x04, 0x3b, 0x0b, 0x38, 0x41, 0xd0, 0x05, 0x3b, 0x0e, + 0x38, 0x3b, 0x4e, 0x03, 0x1c, 0x9b, 0x08, 0x3b, 0x0e, 0x52, 0x3b, 0x8e, 0x03, 0x1c, 0x4e, 0x06, + 0x43, 0xd0, 0x09, 0x1c, 0x9b, 0xd2, 0x02, 0x34, 0xb4, 0x57, 0x2d, 0xb4, 0x57, 0x20, 0x8f, 0x34, + 0x1c, 0x9b, 0xd2, 0x55, 0x09, 0x1c, 0x4e, 0x06, 0x1c, 0x8e, 0x03, 0x1c, 0x0e, 0x52, 0x1c, 0x9b, + 0x08, 0x1c, 0x4e, 0x03, 0x1c, 0x53, 0xd2, 0x55, 0x05, 0x1c, 0x0b, 0x0f, 0xd2, 0x9b, 0x04, 0x1c, + 0x0b, 0x88, 0x10, 0x10, 0x00, 0x82, 0xdc, 0x20, 0xdc, 0x72, 0x06, 0x63, 0x00, 0xe7, 0x32, 0x09, + 0x06, 0x1f, 0x0c, 0x52, 0x04, 0xc0, 0x83, 0x32, 0x49, 0x08, 0x99, 0x4e, 0x63, 0x83, 0x9a, 0x0c, + 0x52, 0x34, 0x38, 0x03, 0x72, 0x06, 0x0e, 0xb6, 0x06, 0x35, 0x06, 0x0e, 0xb6, 0x06, 0x31, 0x9a, + 0x0c, 0x52, 0x34, 0x38, 0x03, 0x9f, 0x32, 0x49, 0x08, 0x99, 0x4e, 0x63, 0x95, 0x0c, 0x52, 0x04, + 0xc0, 0x1f, 0x06, 0x63, 0x00, 0xe7, 0x32, 0x09, 0x06, 0x37, 0xdc, 0x20, 0xdc, 0x10, 0x1b, 0x3d, + 0x2a, 0x82, 0xac, 0x69, 0x51, 0x46, 0x51, 0x46, 0x51, 0x46, 0x2e, 0xac, 0x10, 0x0a, 0xd1, 0x82, + 0x68, 0x68, 0xc3, 0xc5, 0x20, 0xc2, 0x0e, 0x77, 0x10, 0x0c, 0x68, 0x68, 0x2d, 0xe3, 0xc3, 0xe3, + 0xc3, 0xe3, 0x10, 0x0a, 0x2f, 0x2a, 0x82, 0xa9, 0xa9, 0xb3, 0x10, 0x0b, 0x3d, 0x82, 0x04, 0x34, + 0x1c, 0x49, 0x08, 0x20, 0x78, 0x87, 0x35, 0x9b, 0x28, 0x07, 0x4b, 0x1c, 0x8a, 0x05, 0x20, 0x8d, + 0x01, 0x20, 0x06, 0x22, 0x1c, 0x8e, 0x06, 0x20, 0xcc, 0x02, 0x00, 0xd0, 0xd2, 0x49, 0x08, 0xab, + 0x03, 0x20, 0x9b, 0x28, 0x4e, 0x09, 0x1c, 0x8a, 0x05, 0x20, 0x74, 0x01, 0x20, 0x06, 0x22, 0x1c, + 0x8e, 0x06, 0x20, 0x8d, 0x02, 0x00, 0xd0, 0xd2, 0x7c, 0x07, 0xab, 0x03, 0x20, 0x04, 0x34, 0x1c, + 0x4e, 0x09, 0x20, 0x78, 0x87, 0x10, 0x14, 0x43, 0x82, 0x9a, 0x92, 0x90, 0x45, 0x03, 0x31, 0x4e, + 0xe3, 0x5b, 0x37, 0x08, 0x84, 0x1e, 0x5b, 0x9f, 0x97, 0x88, 0x70, 0x5c, 0x8e, 0x8b, 0x1f, 0x0c, + 0x22, 0x47, 0x8e, 0x0c, 0x83, 0x74, 0x02, 0x47, 0x74, 0x02, 0x95, 0x07, 0x4b, 0x26, 0x7c, 0x07, + 0x95, 0x7c, 0x06, 0x26, 0x06, 0x4b, 0x95, 0x8a, 0x03, 0x26, 0x9b, 0x0c, 0x95, 0xa1, 0x76, 0x32, + 0xb6, 0x95, 0xa1, 0x76, 0x32, 0xb6, 0x33, 0xf2, 0x95, 0xa1, 0x76, 0x32, 0xb6, 0x95, 0xa1, 0x76, + 0x32, 0xb6, 0x95, 0x8a, 0x03, 0x26, 0x9b, 0x0c, 0x95, 0x7c, 0x06, 0x26, 0x06, 0x4b, 0x95, 0x07, + 0x4b, 0x26, 0x7c, 0x07, 0x95, 0x74, 0x02, 0x47, 0x74, 0x02, 0x83, 0x0c, 0x22, 0x47, 0x8e, 0x0c, + 0x1f, 0x97, 0x88, 0x70, 0x5c, 0x8e, 0x8b, 0x9f, 0x08, 0x84, 0x1e, 0x5b, 0x37, 0x4e, 0xe3, 0x5b, + 0x2f, 0x9a, 0x92, 0x90, 0x45, 0x03, 0x10, 0x14, 0x82, 0x5c, 0x07, 0x09, 0xcf, 0x94, 0x31, 0x21, + 0x69, 0x21, 0x69, 0x0e, 0x0b, 0x09, 0x06, 0x70, 0xac, 0xae, 0xc5, 0x31, 0x30, 0x1f, 0x30, 0x1f, + 0x30, 0x10, 0x14, 0x00, 0xd1, 0x8f, 0x05, 0x08, 0xa0, 0x0e, 0x57, 0x9c, 0x9e, 0xb8, 0x84, 0xb6, + 0x07, 0x43, 0xa8, 0x5b, 0x1f, 0x89, 0x07, 0x04, 0x86, 0x43, 0x65, 0x91, 0x8b, 0x20, 0x80, 0x0b, + 0x1c, 0x97, 0x28, 0x8d, 0xb4, 0x52, 0x1c, 0x06, 0x4b, 0x20, 0x5f, 0x03, 0x20, 0x0b, 0x4b, 0x20, + 0x7c, 0x58, 0x35, 0x0a, 0xb6, 0x03, 0x1b, 0xcb, 0x0e, 0x03, 0x72, 0x32, 0x0c, 0xb6, 0x04, 0x1b, + 0x80, 0x0e, 0x04, 0x72, 0x9a, 0x0e, 0xb6, 0x04, 0x1b, 0x98, 0xb6, 0x03, 0x1b, 0x3c, 0x52, 0x03, + 0x1b, 0x07, 0x84, 0x44, 0x31, 0xdc, 0x3f, 0x66, 0x6b, 0xdc, 0x3f, 0x66, 0x6b, 0xdc, 0x3f, 0x66, + 0x10, 0x14, 0x82, 0x7a, 0x09, 0xcf, 0x0e, 0x89, 0x64, 0x71, 0x51, 0x1e, 0x38, 0x02, 0xb8, 0xe3, + 0x62, 0x1f, 0x45, 0x05, 0x4c, 0x8f, 0x04, 0x7c, 0x93, 0x1c, 0x07, 0x34, 0x1c, 0x8d, 0xb4, 0x0f, + 0x28, 0x7e, 0x09, 0x1b, 0x8c, 0x49, 0x7f, 0x2f, 0xe3, 0x22, 0x02, 0x2f, 0xe2, 0x4b, 0x02, 0xc3, + 0xe3, 0x63, 0x31, 0x8c, 0x08, 0x0e, 0x22, 0x1c, 0x80, 0x07, 0x43, 0xd0, 0xd2, 0x01, 0xb6, 0xb4, + 0x0f, 0x28, 0x05, 0x34, 0x20, 0x80, 0x08, 0x95, 0x78, 0x08, 0x05, 0x86, 0x43, 0x5c, 0x08, 0x91, + 0x7f, 0xa8, 0x39, 0x76, 0x51, 0x1e, 0x34, 0x04, 0x9f, 0x7a, 0x09, 0x0c, 0x91, 0x40, 0x09, 0x05, + 0x10, 0x14, 0x26, 0x82, 0x06, 0x25, 0x35, 0x6e, 0x84, 0x35, 0x0b, 0x52, 0x84, 0x1b, 0x3c, 0x04, + 0x84, 0x72, 0x6e, 0x09, 0xf2, 0x72, 0x0b, 0x57, 0x01, 0xf2, 0x31, 0x3c, 0x05, 0xe0, 0x2f, 0x6e, + 0x0a, 0x00, 0xe0, 0x2f, 0x0b, 0x0f, 0x62, 0xe0, 0x37, 0x3c, 0x06, 0x43, 0xe0, 0x2e, 0x6e, 0x0b, + 0x41, 0xe0, 0x2e, 0x0b, 0x0f, 0x7f, 0x41, 0xe0, 0x9f, 0x3c, 0x06, 0x3d, 0xe0, 0x1f, 0x6e, 0x0b, + 0xb5, 0x1f, 0x0b, 0x0f, 0x7f, 0xb5, 0x1f, 0xe3, 0x3f, 0x6f, 0xe3, 0x3f, 0x6f, 0xe3, 0x3f, 0x35, + 0xb3, 0x2d, 0x10, 0x14, 0x82, 0x3f, 0xca, 0xca, 0x2e, 0xb3, 0x2d, 0x2d, 0x92, 0x57, 0x0d, 0x5d, + 0x9f, 0xdc, 0x1e, 0x34, 0x03, 0xb8, 0x84, 0xb6, 0x03, 0x9f, 0x0c, 0x7b, 0x02, 0x00, 0x8f, 0x05, + 0x7c, 0xc4, 0x00, 0xd0, 0x4f, 0x1c, 0x08, 0x22, 0x1c, 0xaa, 0xf2, 0x1c, 0xaa, 0x08, 0x22, 0x00, + 0xd0, 0x4f, 0x95, 0x78, 0x08, 0x05, 0x4c, 0x00, 0x8f, 0x05, 0x7c, 0xc4, 0xa8, 0x0e, 0x03, 0x83, + 0xe2, 0x1e, 0x38, 0x03, 0x9f, 0x7a, 0x09, 0x0c, 0x91, 0x40, 0x56, 0x10, 0x14, 0x41, 0x82, 0x9a, + 0x08, 0xcf, 0x0e, 0x0b, 0x08, 0x03, 0x2e, 0x32, 0x2c, 0x84, 0x9f, 0x32, 0x0c, 0x25, 0x1e, 0x2e, + 0x8e, 0x88, 0x05, 0x01, 0x00, 0x5c, 0x5e, 0x9f, 0x3c, 0x5b, 0x35, 0x78, 0x4b, 0x20, 0x97, 0x66, + 0x20, 0x4e, 0xd2, 0x8e, 0x07, 0x20, 0x78, 0x0f, 0x39, 0x9a, 0x5a, 0x0f, 0x40, 0x73, 0x9f, 0x91, + 0x6c, 0x0f, 0x1e, 0x4f, 0x6f, 0xdc, 0x5b, 0x84, 0x1e, 0x4f, 0x83, 0x91, 0x34, 0x05, 0x01, 0x32, + 0x05, 0x0d, 0x94, 0x77, 0x95, 0x0e, 0x84, 0x7d, 0x3d, 0x32, 0x8a, 0x09, 0x95, 0x8a, 0x8b, 0x76, + 0x04, 0x34, 0x95, 0x0a, 0x84, 0x01, 0x47, 0x32, 0xb6, 0x95, 0x07, 0x84, 0x01, 0x47, 0x32, 0xb6, + 0x95, 0x74, 0x04, 0x76, 0x04, 0x34, 0x83, 0x8e, 0x7d, 0x3d, 0x32, 0x8a, 0x09, 0x83, 0x9b, 0x52, + 0x05, 0x01, 0x32, 0x05, 0x0d, 0x94, 0x66, 0x1f, 0x07, 0xe3, 0x1e, 0x06, 0x2e, 0x07, 0x1e, 0xb6, + 0x06, 0x2f, 0x6c, 0xcf, 0x0e, 0x0b, 0x9e, 0x10, 0x14, 0xd1, 0xe0, 0x3f, 0xa8, 0xb6, 0xa8, 0x0f, + 0x5b, 0x20, 0x74, 0x02, 0x20, 0x08, 0x22, 0xab, 0x64, 0xd0, 0x0d, 0x1c, 0x8e, 0x08, 0x20, 0x74, + 0x02, 0x20, 0x08, 0x4b, 0xab, 0x04, 0x20, 0x05, 0x34, 0x1c, 0x8e, 0x07, 0x20, 0x74, 0x01, 0x20, + 0x08, 0x4b, 0xab, 0x04, 0x20, 0x06, 0x34, 0xbe, 0x79, 0x35, 0x09, 0x4b, 0x20, 0xcc, 0x04, 0x20, + 0x06, 0x34, 0xbe, 0x10, 0x14, 0x00, 0x82, 0x32, 0x06, 0xa0, 0x34, 0x85, 0x01, 0x2e, 0x9a, 0x0d, + 0x1e, 0x34, 0x03, 0x9f, 0x6e, 0x84, 0x1e, 0x7f, 0x1f, 0x49, 0x93, 0x4c, 0x8c, 0x49, 0x93, 0x83, + 0x78, 0x0f, 0x4f, 0x47, 0x07, 0x34, 0x76, 0x51, 0x01, 0x47, 0x8d, 0x1f, 0xa1, 0x1d, 0x32, 0x34, + 0x1f, 0x49, 0x06, 0x47, 0x7e, 0x09, 0x1f, 0x80, 0x09, 0x4c, 0x8c, 0x49, 0x44, 0x1f, 0x8f, 0x0b, + 0x1e, 0x22, 0x02, 0x2e, 0x8f, 0x2c, 0x9d, 0x37, 0x08, 0x84, 0x1e, 0x93, 0x9f, 0x0a, 0x34, 0x59, + 0x43, 0x7a, 0x0e, 0x4b, 0x83, 0x3c, 0x58, 0x47, 0x5f, 0x06, 0x95, 0x8a, 0x04, 0x26, 0x97, 0x0c, + 0x95, 0xa1, 0x76, 0x32, 0xb6, 0x1d, 0x51, 0x01, 0x26, 0x8d, 0x6f, 0x78, 0x87, 0x76, 0x04, 0x34, + 0x95, 0x7c, 0x58, 0x47, 0x5f, 0x0a, 0x95, 0x97, 0x52, 0x59, 0x43, 0x65, 0x91, 0x8b, 0x83, 0x2c, + 0xe3, 0x93, 0x9f, 0x08, 0x84, 0x1e, 0x5b, 0x37, 0x6c, 0x0b, 0x0e, 0xb6, 0x0b, 0x73, 0x10, 0x14, + 0x43, 0x82, 0x75, 0x0b, 0x53, 0x40, 0x73, 0x2f, 0x05, 0x53, 0x1e, 0x4f, 0x2e, 0x06, 0x25, 0x1e, + 0x4f, 0x1f, 0x74, 0x0d, 0x05, 0x01, 0x32, 0x05, 0x0d, 0x94, 0x77, 0x83, 0x49, 0x7d, 0x3d, 0x32, + 0x0c, 0x22, 0x95, 0x78, 0x87, 0x47, 0x97, 0x66, 0x95, 0xa1, 0x76, 0x8d, 0x06, 0x95, 0xa1, 0x76, + 0x8d, 0x09, 0x6f, 0x78, 0x87, 0x47, 0x97, 0x38, 0x95, 0x49, 0x7d, 0x3d, 0x32, 0x8a, 0x52, 0x95, + 0x9b, 0x38, 0x05, 0x01, 0x32, 0x05, 0x0d, 0x94, 0xb6, 0x83, 0x08, 0x84, 0x1e, 0x5b, 0x84, 0x1f, + 0x7e, 0x1e, 0x73, 0xb6, 0x9f, 0x6c, 0xcf, 0x67, 0x05, 0x34, 0x1c, 0x08, 0x22, 0x1c, 0x8a, 0x08, + 0x20, 0x74, 0x04, 0x20, 0x0b, 0x34, 0x20, 0x08, 0x84, 0x06, 0x1f, 0x78, 0x08, 0x4c, 0x32, 0x05, + 0x8e, 0x88, 0xb8, 0x25, 0x7d, 0xb8, 0x84, 0x63, 0x1f, 0x9a, 0x08, 0x0b, 0x53, 0x40, 0x08, 0x03, + 0x10, 0x0b, 0x47, 0xa9, 0xc1, 0x2a, 0x68, 0xb3, 0x10, 0x0b, 0x47, 0xa9, 0xc1, 0x2a, 0x68, 0x94, + 0x24, 0x1c, 0xc2, 0x0e, 0x77, 0x10, 0x1b, 0x43, 0x68, 0x65, 0x0c, 0x1b, 0x32, 0x4a, 0x84, 0x72, + 0x04, 0x0a, 0x0e, 0xe3, 0x2e, 0x9a, 0x09, 0x0e, 0x1e, 0x85, 0x1f, 0x65, 0x0d, 0xe3, 0x38, 0x9e, + 0x95, 0x32, 0x06, 0x0c, 0x25, 0x34, 0x08, 0x03, 0x1f, 0x05, 0x0a, 0x25, 0xb6, 0x56, 0x2e, 0x0e, + 0x1e, 0x5d, 0x2f, 0xe2, 0x38, 0x02, 0x1b, 0x0e, 0x1e, 0x5d, 0x72, 0x05, 0x0a, 0x25, 0xb6, 0x56, + 0x2f, 0x32, 0x06, 0x0c, 0x25, 0x34, 0x08, 0x03, 0x31, 0x65, 0x0d, 0xe3, 0x38, 0x9e, 0x2f, 0x9a, + 0x09, 0x0e, 0x1e, 0x85, 0x72, 0x04, 0x0a, 0x0e, 0xe3, 0x1b, 0x32, 0x4a, 0x84, 0x3b, 0x65, 0x0c, + 0x10, 0x1b, 0xd1, 0xa9, 0x46, 0x3e, 0x46, 0x3e, 0x10, 0x1b, 0x20, 0x82, 0x82, 0x0c, 0x6a, 0x2d, + 0x85, 0x01, 0x43, 0xc3, 0xb6, 0x0a, 0x04, 0x72, 0x4a, 0x25, 0xb6, 0x09, 0x03, 0x31, 0x65, 0x0c, + 0x25, 0x34, 0x6a, 0x2f, 0x9a, 0x5e, 0x1e, 0x85, 0x01, 0x31, 0x04, 0x09, 0x0e, 0x1e, 0x5d, 0x72, + 0x05, 0x0b, 0x25, 0xb6, 0x72, 0x8f, 0x0c, 0xe3, 0x31, 0x05, 0x0a, 0x25, 0xb6, 0x2e, 0x04, 0x09, + 0x0e, 0x1e, 0x5d, 0x83, 0x9a, 0x5e, 0xe3, 0x38, 0x06, 0x01, 0x83, 0x75, 0x0c, 0x25, 0x34, 0x6a, + 0x1f, 0x4a, 0x25, 0xb6, 0x09, 0x03, 0x71, 0x51, 0xb6, 0x0a, 0x04, 0xc3, 0x85, 0x01, 0x35, 0x0c, + 0x6a, 0x10, 0x11, 0x00, 0x82, 0x05, 0x5a, 0x0f, 0x40, 0x73, 0x2f, 0x05, 0x0d, 0xe3, 0xb6, 0x04, + 0x2e, 0xe2, 0x1e, 0x66, 0x83, 0xdc, 0x5d, 0x01, 0x01, 0x6c, 0x0f, 0x4b, 0x2e, 0x0b, 0x02, 0x47, + 0x7e, 0x28, 0x8d, 0xb4, 0x52, 0x1c, 0x7e, 0x08, 0x20, 0x97, 0x62, 0x72, 0x9a, 0x0e, 0x57, 0x03, + 0x1b, 0x9a, 0x53, 0x8b, 0x35, 0xcc, 0x05, 0x20, 0x49, 0x08, 0x20, 0x78, 0x0f, 0x66, 0x1b, 0xdc, + 0x24, 0x72, 0x2a, 0xb3, 0x10, 0x20, 0x26, 0x82, 0x65, 0x5a, 0x0e, 0x57, 0x9c, 0x6a, 0x9f, 0x04, + 0x0b, 0x84, 0x1e, 0x22, 0x04, 0x6f, 0xcb, 0x3f, 0x3a, 0x01, 0x27, 0x9a, 0x91, 0x4b, 0x06, 0x4c, + 0x00, 0x8c, 0x4a, 0x25, 0x44, 0x00, 0x71, 0x04, 0x25, 0x63, 0x47, 0x8f, 0x7c, 0xc4, 0x69, 0xbd, + 0x03, 0x29, 0x04, 0x53, 0x38, 0x69, 0x8a, 0x44, 0x36, 0x04, 0x53, 0x4f, 0x1d, 0xc6, 0x77, 0x3d, + 0x06, 0x0c, 0x0e, 0x40, 0x06, 0xf8, 0xe7, 0x06, 0xb6, 0x47, 0x78, 0x0f, 0x4f, 0x43, 0x32, 0x0c, + 0x25, 0x4b, 0xfa, 0xe5, 0x8a, 0x05, 0x1d, 0x97, 0x62, 0x43, 0x7c, 0x1e, 0x49, 0xe5, 0x06, 0x4b, + 0x1d, 0x4e, 0x09, 0x41, 0x97, 0x88, 0x70, 0x5c, 0x8e, 0xe7, 0x8f, 0x34, 0x1d, 0x8a, 0x04, 0x41, + 0x0a, 0x22, 0x47, 0x8e, 0xf5, 0x32, 0xb6, 0x1d, 0x53, 0x66, 0x43, 0x78, 0x87, 0x1d, 0x97, 0xe5, + 0x4d, 0xd4, 0xe7, 0xe0, 0x01, 0x47, 0x81, 0xe7, 0x8f, 0x34, 0x41, 0xe0, 0x01, 0x00, 0xe0, 0x01, + 0x47, 0x8d, 0x41, 0x05, 0x22, 0x1d, 0x53, 0x66, 0x43, 0x78, 0x87, 0x1d, 0x97, 0xe5, 0x8e, 0x06, + 0x1d, 0x8a, 0x05, 0x41, 0x0a, 0x22, 0x47, 0x8e, 0xf5, 0x3c, 0x58, 0x1d, 0x49, 0x09, 0x41, 0x97, + 0x88, 0x70, 0x8c, 0x0b, 0x84, 0x66, 0x4e, 0x39, 0x3d, 0xc6, 0x62, 0x43, 0x8e, 0x1e, 0x4e, 0xe3, + 0x06, 0x26, 0x53, 0x5b, 0x43, 0x32, 0x0c, 0x25, 0x4b, 0xf2, 0x22, 0x03, 0x69, 0x3c, 0x77, 0x3d, + 0x07, 0x0c, 0x0e, 0x40, 0x06, 0x43, 0x0e, 0x9c, 0x08, 0x03, 0x27, 0x0d, 0x94, 0x7f, 0x20, 0x9b, + 0x57, 0x04, 0x27, 0x01, 0x0a, 0x03, 0x29, 0x05, 0x25, 0x9d, 0x69, 0x05, 0x0d, 0x38, 0x6b, 0x05, + 0x91, 0x4b, 0x06, 0x4c, 0x32, 0x61, 0x8a, 0x4f, 0x6b, 0x9a, 0x0d, 0x0f, 0x3f, 0x6d, 0x83, 0x06, + 0x0d, 0x25, 0x1e, 0x63, 0x1f, 0x04, 0x08, 0xcf, 0x57, 0x0b, 0x9e, 0x10, 0x16, 0x1d, 0x82, 0x7e, + 0x4f, 0x20, 0x8a, 0x52, 0x1b, 0x9a, 0x25, 0x77, 0x1b, 0x09, 0x25, 0x93, 0x1b, 0x53, 0x4f, 0xb6, + 0x72, 0x05, 0x34, 0x78, 0x0f, 0x39, 0x31, 0x8e, 0x07, 0x00, 0x07, 0x22, 0x2f, 0x74, 0x02, 0x8f, + 0x94, 0x66, 0x37, 0x07, 0x22, 0x41, 0x8e, 0x07, 0x2e, 0x78, 0x94, 0x64, 0xc6, 0x0d, 0x00, 0xa3, + 0x53, 0x8b, 0x9f, 0x49, 0x09, 0x1d, 0x49, 0x09, 0x1f, 0xcc, 0x03, 0x1d, 0x9b, 0x62, 0x95, 0x3c, + 0x0c, 0x76, 0x8a, 0x06, 0x83, 0x0c, 0x3f, 0x38, 0x95, 0x74, 0x3f, 0x02, 0x6f, 0x4e, 0x3f, 0x5b, + 0x36, 0x78, 0x0f, 0x39, 0x69, 0x04, 0x34, 0x36, 0x04, 0xb6, 0x00, 0x71, 0x53, 0x8b, 0x6b, 0x7c, + 0x08, 0x00, 0x71, 0x08, 0x4b, 0x29, 0x8d, 0x03, 0x00, 0x71, 0x74, 0x01, 0x27, 0x3c, 0x0c, 0x29, + 0x8a, 0x06, 0x27, 0x8a, 0x06, 0x29, 0x3c, 0x0c, 0x10, 0x16, 0x82, 0x84, 0x1e, 0x40, 0x5d, 0x43, + 0xa8, 0x38, 0x03, 0xa8, 0x94, 0x7f, 0x1d, 0x51, 0x47, 0x5c, 0x7c, 0x93, 0x33, 0x07, 0x34, 0x33, + 0x8d, 0x33, 0x01, 0x34, 0x33, 0x07, 0x4b, 0x1d, 0x51, 0x47, 0x5c, 0x49, 0x77, 0x95, 0x3f, 0x52, + 0x04, 0xa8, 0x0c, 0x04, 0x00, 0xa8, 0x4b, 0x01, 0x1d, 0x51, 0x47, 0x8c, 0x06, 0x0d, 0x22, 0x33, + 0x01, 0x8a, 0x06, 0x3d, 0x51, 0x71, 0x04, 0x22, 0x41, 0xb7, 0x32, 0xb6, 0x41, 0xb7, 0x32, 0xeb, + 0x50, 0x26, 0x04, 0x34, 0x41, 0xb7, 0x01, 0x0c, 0x4b, 0x3d, 0x51, 0x1d, 0x32, 0x61, 0x0d, 0x94, + 0x8b, 0x29, 0xdc, 0x3f, 0x93, 0x29, 0xd4, 0x3f, 0x4f, 0x6b, 0xd4, 0x1e, 0xb6, 0x9c, 0x9e, 0x10, + 0x16, 0x1d, 0x82, 0x7a, 0x5a, 0x0e, 0x57, 0x89, 0x6a, 0x1f, 0x8f, 0x2c, 0x84, 0x22, 0x04, 0x95, + 0x04, 0x91, 0x3f, 0x6f, 0x04, 0x25, 0x85, 0x4c, 0x32, 0x02, 0x05, 0x5e, 0x94, 0x36, 0xbd, 0x03, + 0x71, 0x04, 0x0b, 0x36, 0x7c, 0x58, 0x35, 0x74, 0x03, 0x20, 0x07, 0x22, 0x1c, 0x7c, 0x06, 0x20, + 0x78, 0x0f, 0x66, 0x1c, 0xa1, 0x3d, 0xc3, 0x3b, 0xa1, 0x20, 0x78, 0x0f, 0x66, 0x1c, 0x7c, 0x06, + 0x1c, 0x07, 0x22, 0x1c, 0x74, 0x03, 0x1c, 0x7c, 0x58, 0x20, 0xbd, 0x03, 0x71, 0x04, 0x0b, 0x6f, + 0x04, 0x25, 0x85, 0x4c, 0x32, 0x02, 0x05, 0x5e, 0x94, 0x95, 0x04, 0x91, 0x3f, 0x95, 0x8f, 0x0a, + 0x84, 0x1e, 0x22, 0x04, 0x9f, 0x65, 0x5a, 0x0e, 0x57, 0x89, 0x6a, 0x10, 0x19, 0x82, 0xe3, 0xb6, + 0x0d, 0x89, 0x7b, 0x43, 0xa8, 0x57, 0x63, 0x27, 0xec, 0x3f, 0xb6, 0x06, 0x3d, 0x51, 0x3d, 0x32, + 0x02, 0x05, 0x5e, 0x25, 0x06, 0x50, 0x26, 0x05, 0x91, 0x77, 0x29, 0x4d, 0x71, 0x80, 0x0b, 0x43, + 0x51, 0x27, 0x9b, 0x77, 0xb7, 0x3d, 0x8e, 0x07, 0xb7, 0x3d, 0x06, 0x22, 0xb7, 0x41, 0x8f, 0x34, + 0xb7, 0x41, 0x32, 0xb6, 0xb7, 0x3d, 0x4d, 0x51, 0x27, 0x32, 0xb6, 0xb7, 0x41, 0x9a, 0x34, 0xb7, + 0x3d, 0x06, 0x22, 0xb7, 0x3d, 0x8e, 0x07, 0xb7, 0x41, 0x9b, 0x77, 0xb7, 0x43, 0x80, 0x0b, 0x43, + 0x51, 0x71, 0x05, 0x91, 0x77, 0x43, 0x51, 0x3d, 0x32, 0x02, 0x05, 0x5e, 0x25, 0x06, 0x41, 0x51, + 0x3f, 0x6d, 0x6f, 0x3f, 0x57, 0x63, 0x27, 0xec, 0x1e, 0x90, 0x89, 0x7b, 0x10, 0x14, 0x82, 0x84, + 0x3f, 0xa8, 0x84, 0xa8, 0x84, 0x83, 0xb3, 0xc5, 0x1c, 0x2b, 0x2b, 0x2b, 0xac, 0x3f, 0xa8, 0x84, + 0xa8, 0x84, 0x10, 0x12, 0x82, 0x30, 0x1f, 0x30, 0x1f, 0x30, 0x1f, 0xa7, 0x84, 0x1e, 0xca, 0xca, + 0x2e, 0xac, 0xc5, 0x10, 0x19, 0x1d, 0x82, 0x61, 0xa0, 0x53, 0x40, 0x0a, 0x59, 0x1f, 0x9a, 0x0b, + 0x84, 0x1e, 0x22, 0x04, 0x95, 0x3c, 0x30, 0x36, 0x06, 0x25, 0x5d, 0x86, 0x32, 0x02, 0x05, 0x5e, + 0x94, 0x36, 0x9b, 0x38, 0x02, 0x71, 0x04, 0x0b, 0x36, 0x8e, 0x0c, 0x20, 0x74, 0x02, 0x20, 0x07, + 0x4b, 0x1c, 0x8e, 0x05, 0x20, 0x78, 0x0f, 0x66, 0x1c, 0xa1, 0x1d, 0xdc, 0x1e, 0xb7, 0x94, 0x1e, + 0x29, 0xa1, 0x1d, 0xdc, 0x1e, 0x27, 0x78, 0x0f, 0x66, 0xb7, 0x3d, 0x8e, 0x06, 0xb7, 0x3d, 0x07, + 0x4b, 0xb7, 0x3d, 0x74, 0x02, 0x51, 0x6b, 0x7c, 0x7d, 0x3d, 0xb5, 0x6b, 0x6e, 0x38, 0x03, 0x23, + 0x55, 0x4b, 0x06, 0x4c, 0x32, 0x02, 0x04, 0x5e, 0x84, 0x6f, 0x05, 0x53, 0x3f, 0x6d, 0x6f, 0x9a, + 0x7c, 0x1e, 0xb6, 0x08, 0x01, 0x9f, 0x65, 0xa0, 0x53, 0x40, 0x09, 0x06, 0x01, 0x10, 0x18, 0x82, + 0x84, 0xaf, 0x46, 0x36, 0x46, 0x36, 0x46, 0x50, 0x23, 0x84, 0xaf, 0x84, 0x51, 0x10, 0x09, 0x82, + 0xac, 0xae, 0xae, 0xc5, 0x10, 0x09, 0x82, 0xac, 0xc5, 0x1c, 0xac, 0x19, 0x28, 0xaa, 0x97, 0xd2, + 0x7c, 0x09, 0x1b, 0x9a, 0x7c, 0x8b, 0xba, 0x0b, 0x1b, 0xe3, 0x7d, 0x1b, 0xb6, 0x85, 0x10, 0x15, + 0x6f, 0x2a, 0x33, 0x80, 0x4f, 0x50, 0x1d, 0x9a, 0x91, 0x39, 0x3d, 0x51, 0x76, 0xa2, 0xb6, 0x04, + 0x1d, 0x51, 0x47, 0x3c, 0x57, 0x03, 0x47, 0x51, 0x1d, 0x08, 0x84, 0x44, 0x76, 0x51, 0x3d, 0x09, + 0x84, 0x7d, 0x1d, 0x50, 0xcb, 0x0f, 0x60, 0x69, 0x51, 0x32, 0x8a, 0x93, 0x6f, 0xb5, 0x80, 0x5b, + 0x9f, 0xd4, 0xb6, 0x84, 0x06, 0xba, 0x06, 0x00, 0xba, 0x7d, 0xc3, 0x07, 0x84, 0x7d, 0x2f, 0x4d, + 0x06, 0x84, 0x44, 0x26, 0x50, 0x05, 0x84, 0x44, 0x2e, 0x4d, 0xc6, 0x57, 0x03, 0x69, 0x51, 0x3d, + 0x98, 0xb6, 0x03, 0x26, 0x51, 0x3d, 0x9a, 0x0e, 0xb6, 0x04, 0x76, 0x51, 0x1d, 0x9a, 0x0e, 0xb6, + 0x04, 0x47, 0x51, 0x76, 0x80, 0x39, 0x1d, 0x51, 0x26, 0x80, 0x0f, 0x06, 0x41, 0xb7, 0x01, 0x0c, + 0x84, 0x06, 0x43, 0xb7, 0x32, 0x8a, 0x4f, 0x10, 0x12, 0x82, 0xac, 0xae, 0xae, 0x3f, 0xa8, 0x84, + 0xa8, 0x84, 0x10, 0x1c, 0x82, 0x25, 0x39, 0x69, 0x05, 0xe3, 0x51, 0x4b, 0x69, 0x0a, 0xe3, 0x27, + 0x1e, 0x01, 0x47, 0x32, 0x1e, 0x51, 0x8a, 0x06, 0x76, 0x3c, 0x0c, 0x84, 0x51, 0x3c, 0x0c, 0x76, + 0x8a, 0x06, 0x84, 0x51, 0x8d, 0x02, 0x3d, 0x9a, 0x84, 0x8d, 0x27, 0xeb, 0x7c, 0x08, 0x1d, 0x08, + 0x4b, 0x4d, 0x71, 0x4d, 0x04, 0x34, 0x3d, 0x78, 0x87, 0x84, 0x51, 0x43, 0x53, 0x8b, 0x41, 0x04, + 0xb6, 0xe0, 0x51, 0x43, 0x08, 0x4b, 0x41, 0x7c, 0x08, 0xe0, 0x51, 0x43, 0x9b, 0x62, 0xcc, 0x03, + 0xe0, 0x51, 0x41, 0x8a, 0x06, 0x00, 0x3c, 0x0c, 0x00, 0xe0, 0x51, 0x41, 0x07, 0x22, 0x00, 0x8e, + 0x07, 0x00, 0xe0, 0x51, 0x41, 0x74, 0x79, 0xe0, 0x51, 0x3d, 0x0b, 0x34, 0x22, 0x43, 0xe0, 0x51, + 0x3d, 0x05, 0x25, 0x39, 0x43, 0xe0, 0x51, 0x3d, 0xcc, 0x57, 0x01, 0x43, 0xe0, 0x51, 0x1d, 0x49, + 0x93, 0x41, 0xe0, 0x51, 0x1d, 0x97, 0x8b, 0x41, 0xe0, 0xc9, 0xe0, 0x51, 0x50, 0x10, 0x18, 0x82, + 0x84, 0x5b, 0x23, 0x25, 0x7f, 0x47, 0xdc, 0xe5, 0x51, 0x4b, 0x43, 0xb5, 0x36, 0xe3, 0x77, 0x1d, + 0xdc, 0xe5, 0x51, 0x7c, 0x0c, 0x1d, 0xdc, 0xe5, 0x51, 0x74, 0x05, 0xb5, 0x6b, 0x4d, 0x08, 0x34, + 0xb5, 0x6b, 0x4d, 0xcc, 0x07, 0x3d, 0xe0, 0x50, 0x3c, 0x62, 0x43, 0xe0, 0x50, 0x78, 0x0f, 0x93, + 0x41, 0xe0, 0x50, 0x00, 0x97, 0x77, 0x43, 0xe0, 0x50, 0x43, 0x0b, 0x22, 0x43, 0xe0, 0x50, 0x43, + 0x9b, 0x8b, 0xdc, 0xe5, 0x51, 0x1d, 0x09, 0x34, 0xdc, 0xe5, 0x51, 0x1d, 0xcc, 0x06, 0xe0, 0x50, + 0x3d, 0x7e, 0x62, 0x84, 0x50, 0x3d, 0x78, 0x0f, 0x5b, 0xf2, 0x50, 0x1d, 0x05, 0x84, 0x74, 0x50, + 0x47, 0x8a, 0x7c, 0xe5, 0x51, 0x76, 0x9a, 0x25, 0xe7, 0xb7, 0x0a, 0xe3, 0x50, 0x47, 0x8f, 0xe3, + 0x50, 0x26, 0x08, 0x25, 0x10, 0x19, 0x1d, 0x82, 0x61, 0xa0, 0x90, 0x9c, 0x07, 0x03, 0x9f, 0x8f, + 0x7c, 0x1e, 0x22, 0x02, 0x83, 0xa2, 0x3f, 0x6d, 0x6f, 0x04, 0x25, 0x5d, 0x86, 0x01, 0x02, 0x05, + 0x7c, 0x87, 0xc7, 0x8e, 0x06, 0x71, 0xbb, 0x47, 0x78, 0x0f, 0x77, 0x29, 0x9a, 0x34, 0x00, 0x71, + 0xa1, 0x6b, 0x81, 0xb9, 0x71, 0xbb, 0x76, 0x7e, 0xbf, 0x71, 0x97, 0x66, 0x27, 0x7c, 0x44, 0x71, + 0x6e, 0x3a, 0x29, 0xbd, 0x03, 0x76, 0x9a, 0x0d, 0x94, 0x7f, 0x6b, 0x05, 0x25, 0x5d, 0x86, 0x01, + 0x02, 0x05, 0x7c, 0x87, 0x36, 0xa2, 0x3f, 0x6d, 0x95, 0x9a, 0x8e, 0x1e, 0x22, 0x02, 0x2e, 0x61, + 0xa0, 0x90, 0x9c, 0x08, 0x03, 0x10, 0x13, 0xd1, 0xdc, 0x1e, 0x40, 0x73, 0xca, 0x09, 0x43, 0xa8, + 0x93, 0x76, 0x51, 0x1d, 0x7a, 0x0d, 0x94, 0x8b, 0x47, 0x51, 0x47, 0x32, 0x0c, 0x4b, 0x1a, 0x04, + 0x34, 0x1a, 0x01, 0xb6, 0x1a, 0x01, 0xb6, 0x1a, 0x04, 0x34, 0x47, 0x51, 0x47, 0x32, 0x0c, 0x4b, + 0x47, 0x51, 0x1d, 0x7a, 0x0d, 0x94, 0x8b, 0xa8, 0x3a, 0x00, 0xa8, 0x09, 0x95, 0xdc, 0x1e, 0x40, + 0x08, 0x03, 0x2e, 0xac, 0x10, 0x19, 0x1d, 0x82, 0x61, 0xa0, 0x90, 0x9c, 0x08, 0x03, 0x9f, 0x8f, + 0x7c, 0x1e, 0x22, 0x03, 0x83, 0xa2, 0x3f, 0x6d, 0x6f, 0x04, 0x25, 0x5d, 0x86, 0x01, 0x02, 0x05, + 0x0a, 0x25, 0x64, 0xc7, 0x8e, 0x07, 0x00, 0x71, 0x7c, 0x06, 0x6b, 0x06, 0x22, 0x71, 0x78, 0x0f, + 0x77, 0x29, 0x9a, 0x34, 0x00, 0x71, 0xa1, 0x6b, 0x81, 0xb9, 0x71, 0xbb, 0x76, 0x3c, 0xbf, 0x71, + 0x97, 0x66, 0x27, 0x7c, 0x44, 0x71, 0x6e, 0x93, 0x29, 0xbd, 0x03, 0x76, 0x9a, 0x0d, 0xb6, 0x01, + 0x6b, 0x04, 0x25, 0x5d, 0x86, 0x01, 0x02, 0x05, 0x7c, 0x87, 0x36, 0x98, 0x3f, 0x0e, 0x04, 0x95, + 0x8f, 0x0a, 0x25, 0x1e, 0x63, 0x1f, 0x61, 0xa0, 0x0e, 0x25, 0x77, 0x35, 0x32, 0x8a, 0x7f, 0x20, + 0x6e, 0xc4, 0x20, 0x9b, 0x88, 0x43, 0xd0, 0x93, 0x10, 0x16, 0xd1, 0xdc, 0x1e, 0x40, 0x56, 0xca, + 0x60, 0x00, 0xa8, 0x38, 0x76, 0x51, 0x3d, 0x32, 0x05, 0x8e, 0x4f, 0x1a, 0x7c, 0x0c, 0x1a, 0x02, + 0xb6, 0x1a, 0xf2, 0x1a, 0x02, 0x34, 0x1a, 0x0a, 0x4b, 0x47, 0x51, 0x3d, 0x32, 0x05, 0x8e, 0x77, + 0xa8, 0x0f, 0x06, 0x76, 0x51, 0x1e, 0x22, 0x03, 0x43, 0xa8, 0x06, 0x95, 0xdc, 0xe5, 0x8f, 0x05, + 0x8a, 0x8b, 0x76, 0x51, 0x76, 0x0b, 0x34, 0x76, 0x51, 0x76, 0xcc, 0x06, 0x1a, 0x07, 0x34, 0x1a, + 0xcc, 0x06, 0x33, 0x07, 0x34, 0x33, 0xcc, 0x64, 0x50, 0x26, 0x4e, 0x0c, 0x41, 0xb7, 0x32, 0x53, + 0x8b, 0x50, 0x69, 0x08, 0x22, 0x10, 0x14, 0x43, 0x82, 0x75, 0xa0, 0x0e, 0x57, 0x9c, 0x09, 0x59, + 0x9f, 0x07, 0x3f, 0x1f, 0x09, 0x30, 0x95, 0x97, 0x52, 0x06, 0x4c, 0x32, 0x02, 0x04, 0x06, 0x92, + 0x83, 0x0a, 0x22, 0xab, 0x02, 0x3d, 0xc3, 0x01, 0xab, 0x03, 0x1c, 0x7c, 0x44, 0x20, 0x04, 0x25, + 0x85, 0x4c, 0x72, 0x07, 0x1e, 0x38, 0x56, 0x37, 0x9a, 0x0b, 0x1e, 0x34, 0x05, 0x2f, 0x7a, 0x5a, + 0xe3, 0x4f, 0x1b, 0x5c, 0x08, 0x91, 0x77, 0x35, 0x32, 0x0c, 0x4b, 0x20, 0x9a, 0xb6, 0x2d, 0x20, + 0x9a, 0xb6, 0x20, 0xcb, 0x0b, 0x95, 0x89, 0x07, 0x04, 0x4c, 0x00, 0x32, 0x61, 0x0d, 0x94, 0x39, + 0x95, 0x3f, 0x4b, 0xa8, 0x5b, 0x83, 0x8f, 0x05, 0x08, 0x0b, 0xcf, 0x57, 0x89, 0x06, 0x01, 0x10, + 0x14, 0xd1, 0x0f, 0x46, 0x6b, 0xcd, 0x37, 0xac, 0xc5, 0x1c, 0xac, 0x10, 0x17, 0x82, 0x84, 0x51, + 0x50, 0x23, 0x84, 0xc9, 0xe0, 0xaf, 0xa1, 0x69, 0x32, 0xb6, 0x6b, 0x78, 0x0f, 0x77, 0x69, 0x9a, + 0x34, 0x36, 0x8e, 0x06, 0x71, 0x06, 0x22, 0x36, 0x7e, 0x0c, 0x71, 0x8a, 0x07, 0x36, 0x74, 0x08, + 0x26, 0x4e, 0x66, 0x6f, 0x49, 0x88, 0x05, 0x02, 0x00, 0x8f, 0x05, 0x8e, 0x93, 0x6f, 0x32, 0x0c, + 0x3f, 0x0c, 0x83, 0x32, 0x2c, 0x84, 0x93, 0x37, 0x6c, 0x0b, 0x0e, 0xb6, 0x0b, 0x73, 0x10, 0x16, + 0xd1, 0x8a, 0x06, 0x29, 0x3c, 0x0c, 0x27, 0x3c, 0x0c, 0x29, 0x8a, 0x06, 0x27, 0x8d, 0x02, 0x00, + 0x71, 0x74, 0x01, 0x29, 0x7c, 0x08, 0x00, 0x71, 0x08, 0x4b, 0x6b, 0x04, 0xb6, 0x00, 0x71, 0x53, + 0x8b, 0x6b, 0x78, 0x0f, 0x39, 0x69, 0x04, 0x34, 0x6f, 0x08, 0x4b, 0x69, 0x7c, 0x08, 0x6f, 0x74, + 0x01, 0x76, 0x8d, 0x02, 0x95, 0x8a, 0x07, 0x76, 0x7e, 0x0c, 0x83, 0x3c, 0x0c, 0x76, 0x8a, 0x06, + 0x83, 0xcc, 0x03, 0x1d, 0x9b, 0x62, 0x83, 0x49, 0x09, 0x1d, 0x49, 0x09, 0xa3, 0x53, 0x8b, 0x9f, + 0x78, 0x94, 0x64, 0xc6, 0x0d, 0x37, 0x07, 0x22, 0x41, 0x8e, 0x07, 0x37, 0x74, 0x02, 0x8f, 0x94, + 0x66, 0x2f, 0x8e, 0x07, 0x00, 0x07, 0x22, 0x31, 0x05, 0x34, 0x78, 0x0f, 0x39, 0x72, 0x91, 0x7e, + 0x62, 0x31, 0x09, 0x25, 0x93, 0x72, 0x9a, 0x25, 0x77, 0x35, 0x8a, 0x52, 0x20, 0x7e, 0x4f, 0x10, + 0x20, 0xd1, 0x78, 0x87, 0x76, 0x07, 0x84, 0x4f, 0x26, 0x04, 0x34, 0x41, 0x49, 0x07, 0x26, 0x7c, + 0x22, 0x26, 0x4e, 0x09, 0x41, 0x05, 0x22, 0x26, 0x91, 0xb6, 0x26, 0x8e, 0x05, 0x41, 0x8d, 0x01, + 0x1d, 0x9a, 0x34, 0x0d, 0x0f, 0x77, 0x47, 0x8d, 0x01, 0x41, 0x78, 0x87, 0x1d, 0x07, 0x4b, 0x49, + 0x07, 0x47, 0x04, 0x34, 0x1d, 0x49, 0x08, 0x47, 0x8e, 0x06, 0x06, 0x22, 0x47, 0x4e, 0x09, 0x41, + 0xc6, 0x0c, 0x47, 0x53, 0x66, 0x02, 0xb6, 0x47, 0x8a, 0x05, 0x1d, 0x8d, 0x01, 0x41, 0x9a, 0x34, + 0x00, 0x78, 0x0f, 0x77, 0x3d, 0x8d, 0x01, 0x47, 0x8a, 0x04, 0x3d, 0x7e, 0x09, 0x43, 0x49, 0x07, + 0x43, 0xc6, 0x0c, 0x76, 0x4e, 0x08, 0x3d, 0x8e, 0x06, 0x43, 0x06, 0x22, 0x3d, 0x49, 0x08, 0x76, + 0x97, 0x0c, 0x3d, 0x53, 0x66, 0x00, 0x8f, 0xb6, 0x3d, 0x8a, 0x04, 0x76, 0x8d, 0x01, 0x00, 0x9a, + 0x34, 0x41, 0x78, 0x0f, 0x77, 0x43, 0x8d, 0x01, 0x26, 0x8a, 0x05, 0x43, 0x7e, 0x09, 0x3d, 0x49, + 0x07, 0xc6, 0x0b, 0x69, 0x4e, 0x09, 0x43, 0x8e, 0x06, 0x3d, 0x05, 0x22, 0x43, 0x49, 0x08, 0x69, + 0x04, 0x34, 0x43, 0x53, 0x66, 0x41, 0x8f, 0xb6, 0x00, 0x78, 0x87, 0x47, 0xdc, 0x66, 0x04, 0x34, + 0x1d, 0x78, 0x0f, 0x8b, 0x02, 0xb6, 0x00, 0x71, 0x8e, 0x05, 0x7e, 0x09, 0x47, 0x49, 0x07, 0x06, + 0x22, 0x00, 0x71, 0x7e, 0x09, 0x8e, 0x05, 0x47, 0x05, 0x22, 0x7c, 0x07, 0x71, 0x9a, 0x34, 0x94, + 0x66, 0x1d, 0x8f, 0xb6, 0x53, 0x77, 0x27, 0x91, 0x34, 0x76, 0x78, 0x94, 0xb6, 0x29, 0x0b, 0x84, + 0x93, 0x26, 0x49, 0x4b, 0x29, 0x07, 0x84, 0x39, 0x26, 0x05, 0x84, 0x4f, 0x27, 0x9a, 0x25, 0x01, + 0x26, 0x74, 0x77, 0x10, 0x16, 0x43, 0xd1, 0x7c, 0x62, 0x76, 0xcc, 0x0a, 0x36, 0xcc, 0x0a, 0x26, + 0x7c, 0x62, 0x29, 0xc6, 0x39, 0x3d, 0xc6, 0x39, 0x83, 0x7c, 0x62, 0x41, 0xcc, 0x0a, 0x1f, 0xcc, + 0x0a, 0x3d, 0x7c, 0x62, 0x95, 0xc6, 0x39, 0xc6, 0x39, 0x37, 0x0a, 0xb6, 0x01, 0xcc, 0x0a, 0x2f, + 0xcc, 0x0a, 0x7c, 0x62, 0x2f, 0x05, 0xe3, 0x39, 0x1b, 0x7c, 0x4b, 0x35, 0xcc, 0x62, 0x1b, 0x05, + 0x84, 0x39, 0x1b, 0xcc, 0xb6, 0x01, 0x72, 0x7c, 0x90, 0x4b, 0x37, 0xc6, 0x39, 0x55, 0x39, 0x37, + 0xcc, 0x0a, 0x43, 0x7c, 0x62, 0x9f, 0x7c, 0x58, 0x43, 0xcc, 0x0a, 0x83, 0xc6, 0x8b, 0x43, 0xc6, + 0x39, 0x83, 0xcc, 0x09, 0x47, 0x7c, 0x62, 0x6f, 0x7c, 0x58, 0x47, 0xcc, 0x0a, 0x6b, 0xc6, 0x8b, + 0x47, 0xc6, 0x39, 0x6b, 0xcc, 0x09, 0x71, 0x7c, 0x62, 0x27, 0x7c, 0x58, 0x71, 0xcc, 0x0a, 0x10, + 0x14, 0xd1, 0x7c, 0x58, 0x69, 0x5f, 0x0a, 0x6b, 0xcc, 0x09, 0x69, 0x49, 0x62, 0x27, 0xc6, 0x8b, + 0x76, 0x97, 0x39, 0x95, 0x7c, 0x58, 0x1d, 0x5f, 0x0a, 0x83, 0xcc, 0x09, 0x1d, 0x49, 0x62, 0x6f, + 0xc6, 0x8b, 0x41, 0x97, 0x39, 0x2e, 0x7c, 0x58, 0x32, 0x0d, 0x4b, 0x37, 0xcc, 0x08, 0x00, 0x49, + 0x62, 0x37, 0x05, 0x84, 0x7e, 0x39, 0x72, 0x0a, 0x84, 0x4b, 0x1b, 0xcc, 0x57, 0x01, 0xd0, 0x39, + 0x1c, 0xac, 0xc5, 0x10, 0x16, 0x00, 0xd1, 0xcd, 0x6b, 0x46, 0x0c, 0x35, 0x5f, 0x7f, 0x35, 0x8e, + 0x77, 0x35, 0x09, 0x84, 0x06, 0x35, 0x3c, 0x5b, 0x35, 0x97, 0x88, 0x35, 0x6e, 0xc4, 0x72, 0x32, + 0x8a, 0x7f, 0x35, 0x7c, 0x8b, 0x35, 0x4e, 0x4f, 0xd0, 0x93, 0x1b, 0x9a, 0x53, 0x38, 0x35, 0x5f, + 0x58, 0x35, 0x0b, 0xb6, 0x03, 0x35, 0x49, 0x39, 0x35, 0x3c, 0x4f, 0x35, 0x97, 0x3a, 0x1b, 0x8f, + 0x91, 0x7d, 0x35, 0x0c, 0x46, 0x6b, 0xcd, 0x10, 0x0c, 0x2a, 0x18, 0x0f, 0x1b, 0xac, 0xae, 0xae, + 0xc5, 0x1c, 0x18, 0x0f, 0x10, 0x0b, 0xd1, 0x0d, 0x87, 0x20, 0x4e, 0x09, 0x1c, 0x04, 0x34, 0x3b, + 0x53, 0x77, 0x1c, 0x7c, 0x07, 0x43, 0xd0, 0xd2, 0x8d, 0x02, 0xb0, 0x74, 0x01, 0x1c, 0x8a, 0x05, + 0x1c, 0x4e, 0x09, 0x20, 0x9a, 0xb6, 0x3b, 0x53, 0x77, 0x1c, 0x49, 0x08, 0x43, 0xd0, 0xd2, 0xcc, + 0x02, 0xb0, 0x8d, 0x01, 0x1c, 0x8a, 0x05, 0x1c, 0x07, 0x4b, 0x1c, 0x9b, 0x28, 0x78, 0x87, 0x20, + 0x49, 0x08, 0x1c, 0x04, 0x34, 0x10, 0x0c, 0x2a, 0x18, 0x24, 0xae, 0xae, 0x3b, 0xac, 0x1b, 0x18, + 0x0f, 0x10, 0x1b, 0x76, 0x82, 0x80, 0x44, 0x1b, 0x5f, 0x0f, 0xc4, 0x2f, 0x32, 0x0c, 0xb6, 0x91, + 0x7d, 0x2e, 0x32, 0x8a, 0x44, 0x80, 0x7d, 0x2e, 0x8e, 0x44, 0x43, 0x80, 0x0b, 0x9f, 0x7c, 0x7d, + 0x41, 0x32, 0x0c, 0x4b, 0x83, 0x7c, 0x7d, 0x1d, 0x32, 0x0c, 0x4b, 0x6f, 0x49, 0x60, 0x26, 0xcb, + 0x09, 0x6b, 0x08, 0x4b, 0x27, 0x7c, 0x08, 0x10, 0x10, 0x48, 0x10, 0x10, 0x1d, 0x49, 0x03, 0x3b, + 0x0c, 0xc4, 0x1c, 0x6e, 0x09, 0x3b, 0x97, 0x04, 0x3b, 0x06, 0xc4, 0x3b, 0x0a, 0x3a, 0x10, 0x14, + 0x43, 0xa9, 0x7a, 0x09, 0xcf, 0x57, 0x0b, 0x9e, 0x2e, 0xe2, 0x1e, 0x6d, 0xca, 0x05, 0x1f, 0x78, + 0x08, 0x05, 0x4c, 0x32, 0x7a, 0x0d, 0xb6, 0x01, 0x35, 0x32, 0x8a, 0x06, 0x20, 0x9a, 0x4b, 0x3b, + 0x34, 0x2e, 0x05, 0x09, 0xcf, 0x25, 0xb6, 0x83, 0x9a, 0x0c, 0x3f, 0x83, 0x6e, 0x3f, 0x83, 0x09, + 0xb6, 0x7b, 0x86, 0x43, 0xe0, 0x95, 0x78, 0x0f, 0x39, 0x76, 0x74, 0x47, 0x51, 0x01, 0x76, 0x07, + 0x84, 0x83, 0x53, 0x8b, 0x1d, 0x9a, 0x0e, 0x84, 0x83, 0x0b, 0xb6, 0x6a, 0x00, 0x8c, 0x09, 0xe3, + 0x83, 0x04, 0x84, 0x1e, 0x93, 0x84, 0x1f, 0x3c, 0xe3, 0x93, 0xf2, 0x1f, 0x9a, 0x92, 0x57, 0x0d, + 0x56, 0xe0, 0x10, 0x14, 0x2a, 0xa7, 0x43, 0x04, 0x5a, 0x57, 0xa6, 0xbc, 0x95, 0xb1, 0x10, 0x12, + 0x1d, 0xa9, 0x75, 0xa0, 0x94, 0x9c, 0x08, 0x03, 0x37, 0x07, 0x0e, 0x21, 0x47, 0x7c, 0x21, 0x1d, + 0x7e, 0x52, 0x06, 0x86, 0x8f, 0x04, 0x08, 0x0c, 0x1f, 0xcc, 0x0a, 0x20, 0x07, 0x34, 0x1c, 0x8e, + 0x06, 0x20, 0x78, 0x0f, 0x66, 0x1c, 0xa1, 0x3d, 0xc3, 0x01, 0x20, 0x78, 0x0f, 0x66, 0x1c, 0x8e, + 0x06, 0x1c, 0x07, 0x34, 0x1c, 0xcc, 0x0a, 0x1c, 0x7e, 0x52, 0x06, 0x86, 0x00, 0x5c, 0x07, 0x0c, + 0x2e, 0x7c, 0x21, 0x76, 0x08, 0x25, 0x1e, 0x2f, 0x65, 0x0b, 0x91, 0x9c, 0x07, 0x03, 0x10, 0x14, + 0x2f, 0x3b, 0xae, 0x2e, 0xc8, 0xb2, 0xf2, 0x10, 0x14, 0x1d, 0xa9, 0x6c, 0xcf, 0x0e, 0x0b, 0x9e, + 0x2f, 0x08, 0x1e, 0xb6, 0x04, 0x2e, 0x0a, 0x25, 0x1e, 0x77, 0x1f, 0x7e, 0x93, 0x70, 0x00, 0x7a, + 0x0d, 0x34, 0x83, 0xcc, 0x04, 0x47, 0x5f, 0x05, 0x95, 0x7e, 0x08, 0x26, 0x05, 0x4b, 0x95, 0x8e, + 0x03, 0x76, 0x32, 0x34, 0x6f, 0x78, 0x3f, 0xb6, 0x95, 0x91, 0x30, 0x36, 0xe2, 0x3f, 0x95, 0xa1, + 0x1c, 0x8e, 0x04, 0x1c, 0x07, 0x22, 0x1c, 0x74, 0x08, 0x76, 0x8f, 0x0b, 0x1f, 0x4e, 0x38, 0x05, + 0x02, 0x32, 0x02, 0x05, 0x7c, 0x9f, 0x0a, 0x3f, 0x2e, 0x4e, 0xe3, 0x34, 0x04, 0x37, 0x65, 0x0b, + 0x0e, 0x57, 0x0d, 0x56, 0x10, 0x0b, 0x43, 0x2a, 0xc8, 0x84, 0x31, 0xcb, 0xe3, 0x31, 0x7e, 0x1e, + 0x31, 0x8a, 0x9d, 0x20, 0xa1, 0x6b, 0x50, 0xba, 0x42, 0xb8, 0x42, 0xb8, 0xe3, 0x72, 0xac, 0xae, + 0x10, 0x14, 0x1d, 0xa9, 0xc8, 0x67, 0xf2, 0x1f, 0x80, 0x84, 0x4b, 0xf2, 0x83, 0x5f, 0x1e, 0x93, + 0x84, 0x83, 0x7c, 0x93, 0x4c, 0x8c, 0x09, 0xe3, 0x95, 0x74, 0x06, 0x47, 0x06, 0x25, 0x95, 0x08, + 0x22, 0x26, 0x0b, 0x84, 0x95, 0x8e, 0x05, 0x26, 0x05, 0x84, 0x95, 0x53, 0x66, 0x26, 0x74, 0x33, + 0xf2, 0x33, 0xf2, 0x95, 0x53, 0x66, 0x26, 0x74, 0x95, 0x8e, 0x05, 0x26, 0x05, 0x84, 0x95, 0x08, + 0x22, 0x26, 0x0b, 0x84, 0x6f, 0x9a, 0x84, 0x06, 0x47, 0x06, 0x25, 0x83, 0x7c, 0x93, 0x4c, 0x8c, + 0x09, 0xe3, 0x83, 0x5f, 0x1e, 0x93, 0x84, 0x1f, 0x80, 0x84, 0x4b, 0x01, 0xb6, 0x2e, 0xc8, 0x67, + 0x02, 0x34, 0x1c, 0x05, 0x4b, 0xbe, 0x4e, 0x66, 0x1f, 0x0c, 0x7b, 0x86, 0x8f, 0x05, 0x8e, 0x3a, + 0x1f, 0xe2, 0x1e, 0xc4, 0x26, 0x51, 0x1e, 0x38, 0x02, 0x2e, 0x61, 0xa0, 0x0e, 0x57, 0x45, 0x05, + 0x10, 0x14, 0x2a, 0xa7, 0x00, 0x9a, 0xa5, 0xad, 0x10, 0x09, 0x2a, 0xb3, 0x72, 0x2a, 0xac, 0x3b, + 0xac, 0x10, 0x09, 0x2a, 0xb3, 0x72, 0x2a, 0xa7, 0xae, 0xae, 0xb4, 0x0f, 0x28, 0x97, 0x0c, 0x35, + 0x9a, 0x8a, 0x08, 0x1b, 0xe3, 0x66, 0x72, 0xe2, 0x4f, 0x31, 0xdc, 0x67, 0x10, 0x13, 0x2a, 0xa7, + 0x76, 0x98, 0x84, 0x06, 0x1d, 0x51, 0x47, 0x3c, 0x57, 0x04, 0x47, 0x51, 0x1d, 0x4e, 0x52, 0x03, + 0x3d, 0x50, 0x32, 0x7c, 0x38, 0x02, 0x1f, 0x4d, 0x32, 0x8a, 0x3a, 0x01, 0x69, 0x51, 0x9a, 0x0d, + 0x94, 0x5b, 0x6f, 0xb5, 0x98, 0x84, 0x06, 0x2f, 0xe2, 0xb6, 0x04, 0xba, 0x06, 0x37, 0xd4, 0x34, + 0x94, 0x8b, 0xc3, 0x80, 0x39, 0x2f, 0x4d, 0x80, 0x39, 0x26, 0x50, 0x80, 0x39, 0x76, 0x50, 0x32, + 0x0d, 0x84, 0x06, 0x83, 0xdc, 0xe5, 0x32, 0x0c, 0x84, 0x06, 0x26, 0x51, 0x3d, 0x32, 0x0c, 0x84, + 0x06, 0x76, 0x51, 0x1d, 0x32, 0x8a, 0x4f, 0x47, 0x51, 0x47, 0x32, 0x8a, 0x4f, 0x10, 0x09, 0x2a, + 0xac, 0xae, 0x3b, 0xac, 0x10, 0x1f, 0xce, 0x05, 0xa0, 0x52, 0x9d, 0x3d, 0x05, 0xa0, 0x52, 0x9d, + 0x69, 0x4d, 0x0a, 0x25, 0xb6, 0x03, 0x32, 0x0a, 0x25, 0xb6, 0x03, 0x43, 0xb5, 0x2c, 0x34, 0x00, + 0x7c, 0xe3, 0xc4, 0x1d, 0xdc, 0xb6, 0x6a, 0x8f, 0x4e, 0x88, 0x57, 0x6a, 0x00, 0x6c, 0x84, 0x06, + 0x3d, 0xd4, 0xb6, 0x03, 0x1d, 0x49, 0x57, 0x03, 0x1d, 0x09, 0x4b, 0x1d, 0xdc, 0x4f, 0x47, 0x9b, + 0x4f, 0x1d, 0x9a, 0x34, 0x1d, 0xdc, 0x66, 0x47, 0x8d, 0x02, 0x1d, 0x32, 0xb6, 0x00, 0xb5, 0x26, + 0x96, 0x4d, 0xb5, 0x26, 0x96, 0x4d, 0xb5, 0x10, 0x14, 0xce, 0x03, 0xa5, 0xad, 0x10, 0x14, 0x1d, + 0xa9, 0x04, 0x5a, 0x90, 0x67, 0x37, 0xcb, 0x1e, 0x60, 0x9f, 0x5f, 0x0f, 0x1e, 0xc4, 0x1f, 0x7c, + 0x3a, 0x4c, 0x8c, 0x7c, 0x3a, 0x83, 0x74, 0x07, 0x47, 0x7e, 0x66, 0x95, 0x4e, 0x0c, 0x26, 0x8a, + 0x08, 0x95, 0x8e, 0x05, 0x26, 0x06, 0x22, 0x95, 0x53, 0x66, 0x76, 0x8f, 0x34, 0x33, 0xf2, 0x33, + 0xf2, 0x95, 0x53, 0x66, 0x76, 0x8f, 0x34, 0x95, 0x8e, 0x05, 0x26, 0x05, 0x22, 0x95, 0x08, 0x22, + 0x26, 0x8a, 0x08, 0x95, 0x74, 0x07, 0x47, 0x7e, 0x66, 0x83, 0x7c, 0x3a, 0x4c, 0x8c, 0x7c, 0x3a, + 0x1f, 0x5f, 0x0f, 0x1e, 0xc4, 0x9f, 0xcb, 0x1e, 0x60, 0x2f, 0x05, 0x5a, 0x90, 0x67, 0x10, 0x14, + 0xce, 0x04, 0x5a, 0x57, 0xa6, 0xbc, 0x95, 0xb1, 0x2e, 0xa7, 0x10, 0x14, 0x1d, 0xa9, 0xc8, 0xb2, + 0xf2, 0x3b, 0xa7, 0x10, 0x0d, 0xce, 0x05, 0xa0, 0xf7, 0x71, 0x51, 0x01, 0x0a, 0x42, 0x71, 0x51, + 0x2c, 0x2f, 0xe3, 0x73, 0x00, 0xc3, 0x8b, 0x72, 0xdc, 0x93, 0x1b, 0xdc, 0x8b, 0x3d, 0xc3, 0x01, + 0x1c, 0xb3, 0xae, 0x10, 0x11, 0x43, 0xa9, 0x9a, 0x09, 0xcf, 0x0e, 0x9c, 0x08, 0x03, 0x37, 0x08, + 0x25, 0x1e, 0x2e, 0x3c, 0x21, 0x47, 0x0c, 0x34, 0x05, 0x02, 0x43, 0x5c, 0x07, 0x0c, 0x83, 0xdc, + 0x77, 0xab, 0x05, 0x1c, 0x0a, 0x84, 0x45, 0x05, 0x02, 0x72, 0x6e, 0x84, 0x34, 0x73, 0x37, 0x8f, + 0x09, 0x53, 0x1e, 0x06, 0x31, 0x5c, 0x08, 0x0b, 0x91, 0x87, 0x72, 0x32, 0x05, 0x0d, 0x22, 0x1c, + 0x97, 0x28, 0x8d, 0x9f, 0x0b, 0x02, 0x76, 0x04, 0xb6, 0x95, 0xdc, 0x85, 0x86, 0x01, 0x65, 0x0e, + 0x4b, 0x43, 0xa8, 0x03, 0x9f, 0x04, 0x0c, 0x1e, 0xb6, 0x04, 0x2f, 0x04, 0x92, 0x0e, 0x57, 0x85, + 0x01, 0x10, 0x0d, 0x82, 0xb3, 0x2d, 0x41, 0xba, 0x42, 0xb8, 0x42, 0xb8, 0xe3, 0x31, 0xb3, 0xae, + 0x3b, 0x53, 0x66, 0x1c, 0x0b, 0x22, 0x02, 0x20, 0x3c, 0x1e, 0x72, 0x8a, 0xe3, 0x1b, 0xc8, 0x84, + 0x10, 0x14, 0x68, 0x1a, 0x4d, 0x54, 0x54, 0x54, 0x54, 0x33, 0x84, 0x1a, 0x8d, 0x83, 0xa1, 0x47, + 0x9a, 0x84, 0x95, 0x78, 0x87, 0x47, 0x08, 0x84, 0x83, 0x0a, 0x22, 0x47, 0x04, 0x25, 0x6f, 0xc6, + 0x3a, 0x03, 0x00, 0x8c, 0x08, 0xe3, 0x1f, 0x8a, 0x1e, 0x5b, 0x84, 0x1f, 0x80, 0x25, 0x5b, 0xf2, + 0x9f, 0x75, 0xcf, 0x67, 0xf2, 0x10, 0x13, 0xa9, 0x8a, 0x06, 0x69, 0x3c, 0x0c, 0x6f, 0x07, 0x22, + 0x69, 0x8e, 0x07, 0x6f, 0x74, 0x02, 0x76, 0x74, 0x01, 0x95, 0x8e, 0x07, 0x76, 0x07, 0x22, 0x83, + 0x05, 0x34, 0x47, 0x78, 0x0f, 0x39, 0x83, 0xcc, 0x03, 0x1d, 0x9b, 0x62, 0x83, 0x7c, 0x08, 0x1d, + 0x08, 0x4b, 0xa3, 0x53, 0x8b, 0x2e, 0x53, 0x8b, 0x41, 0x04, 0x34, 0x37, 0x08, 0x4b, 0x41, 0x7c, + 0x08, 0x37, 0x9b, 0x62, 0xcc, 0x03, 0x2f, 0x8a, 0x06, 0x00, 0x3c, 0x0c, 0x31, 0x07, 0x22, 0x00, + 0x8e, 0x07, 0x31, 0x74, 0x79, 0x31, 0x0b, 0x34, 0x22, 0x1b, 0x05, 0x25, 0x39, 0x1b, 0xcc, 0x57, + 0x01, 0x35, 0x7c, 0x3a, 0x10, 0x1a, 0xa9, 0x0d, 0x0f, 0x77, 0x1d, 0x53, 0xb6, 0x3d, 0x9a, 0x34, + 0x71, 0x49, 0x07, 0x41, 0x8f, 0x25, 0x66, 0x3d, 0x7e, 0x09, 0x71, 0x06, 0x22, 0x3d, 0x06, 0xe3, + 0x06, 0x3d, 0x8e, 0x06, 0x69, 0x8f, 0xb6, 0x3d, 0x0a, 0x34, 0x4b, 0x3d, 0x53, 0x66, 0x71, 0x78, + 0x0f, 0x77, 0x41, 0x91, 0x06, 0xb6, 0x43, 0x9a, 0x34, 0x27, 0x7c, 0x07, 0x00, 0x8f, 0xb6, 0x00, + 0x53, 0x66, 0x43, 0x7e, 0x09, 0x27, 0x06, 0x22, 0x43, 0x06, 0x4b, 0x00, 0x7c, 0x06, 0x43, 0x8e, + 0x06, 0x27, 0x02, 0xb6, 0x43, 0x7c, 0x06, 0x00, 0x07, 0x4b, 0x43, 0x53, 0x66, 0x27, 0x78, 0x0f, + 0x77, 0x00, 0x53, 0x77, 0x9a, 0xb6, 0x9a, 0x34, 0x6b, 0x7c, 0x07, 0x03, 0xb6, 0x41, 0x91, 0x65, + 0x4b, 0x6b, 0x3c, 0x85, 0x4b, 0x41, 0x7c, 0x06, 0x8e, 0x06, 0x29, 0x8f, 0xb6, 0x7c, 0x06, 0x41, + 0x06, 0x4b, 0x53, 0x66, 0x6b, 0x78, 0x25, 0x77, 0x43, 0x9a, 0x84, 0x34, 0x6f, 0x7c, 0xb6, 0x1d, + 0x91, 0x4b, 0x6f, 0x3c, 0x4b, 0x1d, 0x0a, 0x25, 0x06, 0x36, 0x8f, 0x25, 0x06, 0x1d, 0x06, 0x84, + 0x66, 0x6f, 0x78, 0x94, 0x77, 0x1d, 0x9b, 0x52, 0x83, 0x0a, 0xb6, 0x76, 0x0e, 0x4b, 0x10, 0x13, + 0x00, 0xa9, 0x7c, 0x7f, 0x47, 0x6e, 0x3a, 0x95, 0x5f, 0x0c, 0x47, 0x8a, 0x58, 0x83, 0x9b, 0x5b, + 0x3d, 0x7e, 0x77, 0x9f, 0x7e, 0x8b, 0x43, 0x9b, 0x4f, 0x37, 0x8e, 0x58, 0x5f, 0x0b, 0x2f, 0x6e, + 0x3a, 0x7c, 0x7f, 0x31, 0x05, 0xe3, 0x39, 0x1b, 0x09, 0x84, 0x93, 0x35, 0xcc, 0x58, 0x35, 0x08, + 0x84, 0x77, 0x1b, 0x04, 0x25, 0xc4, 0x31, 0x6e, 0x88, 0x53, 0x93, 0x31, 0x8a, 0x58, 0x3c, 0x8b, + 0x37, 0x49, 0x77, 0x43, 0x7c, 0x58, 0x83, 0xc6, 0x4f, 0x41, 0xcc, 0x09, 0x1f, 0x6e, 0x3a, 0x41, + 0xc6, 0x8b, 0x6f, 0x32, 0x8a, 0x58, 0x47, 0x7c, 0x62, 0x36, 0x49, 0x77, 0x76, 0x5f, 0x0a, 0x10, + 0x13, 0xa9, 0x8a, 0x07, 0x69, 0x3c, 0x0c, 0x6f, 0x06, 0x34, 0x69, 0x8a, 0x06, 0x95, 0x53, 0x8b, + 0x76, 0x79, 0x6f, 0x08, 0x22, 0x76, 0x09, 0x4b, 0x83, 0x74, 0x02, 0x47, 0x53, 0x8b, 0x1f, 0x8e, + 0x08, 0x1d, 0x05, 0x34, 0xa3, 0x8e, 0x07, 0x9f, 0x78, 0x94, 0x06, 0x41, 0x74, 0x02, 0x2e, 0x7e, + 0x0c, 0x41, 0x08, 0x22, 0x37, 0x8d, 0x03, 0x00, 0x78, 0x0f, 0x39, 0x2f, 0x49, 0x09, 0x00, 0x04, + 0xb6, 0x2f, 0x9a, 0x84, 0x01, 0x7c, 0x08, 0x72, 0x8a, 0x4e, 0x77, 0x72, 0x06, 0x25, 0x38, 0x35, + 0x0e, 0x25, 0x06, 0x35, 0x4e, 0x57, 0x01, 0x35, 0x74, 0x09, 0x20, 0xcc, 0x04, 0x20, 0x05, 0x34, + 0x1c, 0x7c, 0x07, 0x20, 0x8d, 0x02, 0x1b, 0x8f, 0x0b, 0x4b, 0x1b, 0xe3, 0x77, 0x72, 0xe2, 0x93, + 0x2f, 0xd4, 0x34, 0x07, 0x10, 0x11, 0xa9, 0x2b, 0x2b, 0x3f, 0x57, 0x20, 0x4e, 0x8b, 0xd0, 0x5b, + 0x35, 0x6e, 0x88, 0x35, 0x5f, 0x58, 0x35, 0x8e, 0x77, 0x35, 0x08, 0x84, 0x06, 0xd0, 0x93, 0x35, + 0x6e, 0x38, 0x35, 0x5f, 0x7f, 0x35, 0x7c, 0x8b, 0x35, 0x7e, 0x4f, 0x35, 0x97, 0x3a, 0x20, 0x53, + 0x3f, 0x1f, 0x2b, 0x2b, 0x10, 0x14, 0x26, 0x2a, 0x06, 0x5a, 0x91, 0x1b, 0x0c, 0x1e, 0x72, 0x3c, + 0xe3, 0x72, 0x8e, 0x0c, 0x70, 0x35, 0x53, 0x77, 0x1c, 0xb3, 0x2d, 0xb4, 0x0f, 0x28, 0x3c, 0x0c, + 0x35, 0x7a, 0x53, 0x5b, 0xba, 0x60, 0x31, 0xe2, 0x5b, 0x1b, 0xe2, 0x4b, 0x35, 0x8f, 0x7e, 0x4f, + 0x1c, 0x7e, 0xd2, 0xaa, 0xf2, 0xc1, 0x72, 0xa1, 0x20, 0x78, 0x87, 0x20, 0x0b, 0x34, 0x70, 0x35, + 0x3c, 0xe3, 0x1b, 0x0b, 0x1e, 0x35, 0x05, 0x5a, 0x91, 0x10, 0x0b, 0x00, 0x2a, 0xac, 0xae, 0xae, + 0xc5, 0x1c, 0xac, 0x10, 0x14, 0x00, 0x2a, 0xb6, 0x89, 0x06, 0x35, 0xe3, 0x38, 0x37, 0xd4, 0x1e, + 0x06, 0x35, 0x5c, 0x0c, 0x22, 0x1c, 0x9b, 0x28, 0x8d, 0xc1, 0x72, 0xa1, 0x1c, 0x8a, 0x06, 0x1c, + 0x08, 0xb6, 0x59, 0x35, 0xcb, 0x25, 0x35, 0x08, 0xe3, 0x1b, 0x0a, 0x1e, 0x72, 0x07, 0x84, 0x6a, + 0x35, 0x8a, 0x07, 0xab, 0x02, 0x1c, 0xb3, 0x2d, 0xb4, 0x0f, 0x28, 0x04, 0x34, 0x35, 0x5c, 0x0c, + 0x22, 0xc3, 0x25, 0x06, 0xba, 0x0b, 0x1b, 0xb6, 0x0d, 0x5d, 0x10, 0x1b, 0x83, 0x3b, 0x82, 0xa9, + 0x32, 0x6b, 0x9a, 0x92, 0x0e, 0x40, 0x56, 0x26, 0xa2, 0x27, 0x32, 0x2c, 0xb6, 0x56, 0x02, 0x00, + 0x7a, 0x8a, 0x27, 0x78, 0x46, 0x0d, 0x69, 0xd4, 0x38, 0x59, 0x8f, 0x05, 0x09, 0x0e, 0x1e, 0x4b, + 0x01, 0x29, 0x0e, 0x06, 0x26, 0x04, 0x09, 0x0c, 0x90, 0x45, 0x03, 0x6b, 0x8f, 0x10, +}; + +static const uint16_t mf_rlefont_DejaVuSans32_aa_glyph_offsets_0[95] = { + 0x0000, 0x0003, 0x001a, 0x0026, 0x00a6, 0x0132, 0x020e, 0x02a9, + 0x02ad, 0x0301, 0x0353, 0x039e, 0x03ad, 0x03b9, 0x03c3, 0x03cb, + 0x0416, 0x0497, 0x04b2, 0x0511, 0x0571, 0x05c3, 0x060c, 0x0698, + 0x06d4, 0x075f, 0x07e1, 0x07e9, 0x07f6, 0x0851, 0x0859, 0x08b2, + 0x08f5, 0x09fc, 0x0a79, 0x0ae0, 0x0b4c, 0x0bbd, 0x0bd3, 0x0be4, + 0x0c5e, 0x0c6e, 0x0c75, 0x0c8f, 0x0d08, 0x0d13, 0x0d9e, 0x0e15, + 0x0e76, 0x0eb5, 0x0f29, 0x0f86, 0x0ff0, 0x0ffc, 0x103f, 0x10c0, + 0x11b4, 0x1230, 0x1274, 0x12b8, 0x12c5, 0x1306, 0x1312, 0x1348, + 0x134b, 0x135f, 0x13c3, 0x13cf, 0x141f, 0x1428, 0x1485, 0x14a1, + 0x1521, 0x1529, 0x1532, 0x154d, 0x15ae, 0x15b5, 0x1608, 0x160e, + 0x166f, 0x167b, 0x1684, 0x16a4, 0x1702, 0x1721, 0x1756, 0x17b5, + 0x185f, 0x18c0, 0x1935, 0x1965, 0x19aa, 0x19b4, 0x19fb, +}; + +static const struct mf_rlefont_char_range_s mf_rlefont_DejaVuSans32_aa_char_ranges[] = { + {32, 95, mf_rlefont_DejaVuSans32_aa_glyph_offsets_0, mf_rlefont_DejaVuSans32_aa_glyph_data_0}, +}; + +const struct mf_rlefont_s mf_rlefont_DejaVuSans32_aa = { + { + "DejaVu Sans Book 32", + "DejaVuSans32_aa", + 33, /* width */ + 34, /* height */ + 9, /* min x advance */ + 32, /* max x advance */ + 2, /* baseline x */ + 26, /* baseline y */ + 37, /* line height */ + 0, /* flags */ + 63, /* fallback character */ + &mf_rlefont_character_width, + &mf_rlefont_render_character, + }, + 4, /* version */ + mf_rlefont_DejaVuSans32_aa_dictionary_data, + mf_rlefont_DejaVuSans32_aa_dictionary_offsets, + 137, /* rle dict count */ + 187, /* total dict count */ + 1, /* char range count */ + mf_rlefont_DejaVuSans32_aa_char_ranges, +}; + +#ifdef MF_INCLUDED_FONTS +/* List entry for searching fonts by name. */ +static const struct mf_font_list_s mf_rlefont_DejaVuSans32_aa_listentry = { + MF_INCLUDED_FONTS, + (struct mf_font_s*)&mf_rlefont_DejaVuSans32_aa +}; +#undef MF_INCLUDED_FONTS +#define MF_INCLUDED_FONTS (&mf_rlefont_DejaVuSans32_aa_listentry) +#endif + + +/* End of automatically generated font definition for DejaVuSans32_aa. */ + diff --git a/src/gdisp/fonts/DejaVuSansBold12.c b/src/gdisp/fonts/DejaVuSansBold12.c new file mode 100644 index 00000000..b2581760 --- /dev/null +++ b/src/gdisp/fonts/DejaVuSansBold12.c @@ -0,0 +1,186 @@ + + +/* Start of automatically generated font definition for DejaVuSansBold12. */ + +#ifndef MF_BWFONT_INTERNALS +#define MF_BWFONT_INTERNALS +#endif +#include "mf_bwfont.h" + +#ifndef MF_BWFONT_VERSION_4_SUPPORTED +#error The font file is not compatible with this version of mcufont. +#endif + +static const uint8_t mf_bwfont_DejaVuSansBold12_glyph_data_0[1540] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x03, 0x7e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, + 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xc8, 0x03, 0xf8, 0x01, 0x4e, 0x00, + 0xc8, 0x03, 0x7c, 0x00, 0x4e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x02, 0x7c, 0x02, + 0x74, 0x02, 0xfe, 0x0f, 0xe4, 0x02, 0xe4, 0x03, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x22, 0x00, 0x22, 0x00, 0x22, 0x03, 0xdc, 0x00, 0x70, 0x00, 0xd8, 0x01, 0x26, 0x02, 0x20, 0x02, + 0x20, 0x02, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xec, 0x03, 0x3e, 0x02, 0x72, 0x02, + 0xe2, 0x02, 0xc4, 0x03, 0x80, 0x01, 0xe0, 0x03, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0xff, 0x07, 0x07, 0x07, 0x01, 0x04, 0x00, 0x00, 0x01, 0x04, + 0x07, 0x07, 0xff, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x18, 0x00, 0x7e, 0x00, + 0x18, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0xf8, 0x03, + 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x07, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x03, 0x3c, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0xfc, 0x01, 0x06, 0x03, 0x02, 0x02, 0x06, 0x03, 0xfc, 0x01, 0xf8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x03, 0xfe, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x02, 0x02, 0x03, 0x82, 0x03, 0xc2, 0x02, 0x62, 0x02, 0x3e, 0x02, 0x1c, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x02, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0xfe, 0x03, + 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xb0, 0x00, 0x8c, 0x00, 0x86, 0x00, 0xfe, 0x03, + 0xfe, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x02, 0x1e, 0x02, 0x12, 0x02, 0x12, 0x02, + 0x32, 0x03, 0xf2, 0x03, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0xfc, 0x01, 0x16, 0x02, + 0x12, 0x02, 0x12, 0x02, 0xf2, 0x03, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x02, + 0x82, 0x03, 0xe2, 0x01, 0x7a, 0x00, 0x1e, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x01, + 0xde, 0x03, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0xde, 0x03, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x7e, 0x02, 0x42, 0x02, 0x42, 0x02, 0x42, 0x03, 0xfc, 0x01, 0xf8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x03, 0x18, 0x03, 0x00, 0x00, 0x00, 0x08, 0x18, 0x07, 0x18, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x00, 0xe0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xb0, 0x01, 0x10, 0x01, 0x10, 0x01, + 0x18, 0x03, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, + 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x03, 0x10, 0x01, 0x10, 0x01, + 0xb0, 0x01, 0xa0, 0x00, 0xa0, 0x00, 0xe0, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x62, 0x03, 0x72, 0x03, 0x1e, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x08, 0x02, + 0x04, 0x04, 0xe2, 0x08, 0x12, 0x09, 0x12, 0x09, 0xf2, 0x09, 0x04, 0x0d, 0x8c, 0x09, 0xf0, 0x00, + 0x00, 0x00, 0x00, 0x02, 0xc0, 0x03, 0xf8, 0x01, 0xbe, 0x00, 0x86, 0x00, 0xbe, 0x00, 0xf8, 0x01, + 0xc0, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0xfe, 0x03, 0x22, 0x02, 0x22, 0x02, + 0x22, 0x02, 0xfe, 0x03, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0xfc, 0x01, 0x06, 0x03, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0xfe, 0x03, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x03, 0xfc, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0x03, 0xfe, 0x03, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0x03, 0xfe, 0x03, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0xfc, 0x01, 0x06, 0x03, 0x02, 0x02, 0x02, 0x02, 0x22, 0x02, 0xe2, 0x03, 0xe6, 0x03, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0xfe, 0x03, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, + 0xfe, 0x03, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0xfe, 0x03, 0x00, 0x08, 0x00, 0x08, + 0xfe, 0x0f, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0xfe, 0x03, 0x20, 0x00, 0x70, 0x00, + 0xd8, 0x00, 0x8c, 0x01, 0x06, 0x03, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0xfe, 0x03, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0xfe, 0x03, + 0x0e, 0x00, 0x38, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x0e, 0x00, 0xfe, 0x03, 0xfe, 0x03, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0xfe, 0x03, 0x0e, 0x00, 0x38, 0x00, 0xe0, 0x00, 0x80, 0x03, + 0xfe, 0x03, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0xfc, 0x01, 0x06, 0x03, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x06, 0x03, 0xfc, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, + 0xfe, 0x03, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0xfc, 0x01, 0x06, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x06, 0x0f, 0xfc, 0x09, + 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0xfe, 0x03, 0x22, 0x00, 0x22, 0x00, 0x62, 0x00, + 0xfe, 0x01, 0x9c, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x03, 0x3e, 0x02, 0x32, 0x02, + 0x32, 0x02, 0x62, 0x02, 0xe6, 0x03, 0xc0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0xfe, 0x03, 0xfe, 0x03, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, + 0xfe, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0xfe, 0x03, 0xfe, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x1e, 0x00, 0xfc, 0x00, 0xe0, 0x03, 0x00, 0x03, 0xe0, 0x03, 0xfc, 0x00, 0x1e, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x7e, 0x00, 0xf8, 0x03, 0xc0, 0x03, 0xf8, 0x00, + 0x1e, 0x00, 0x1e, 0x00, 0xf8, 0x00, 0xc0, 0x03, 0xf8, 0x03, 0x7e, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x02, 0x02, 0x06, 0x03, 0xdc, 0x01, 0xf8, 0x00, 0x20, 0x00, 0xf8, 0x00, 0xdc, 0x01, 0x06, 0x03, + 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0xf0, 0x03, 0xf0, 0x03, 0x1c, 0x00, + 0x0e, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x82, 0x03, 0xc2, 0x02, 0x62, 0x02, + 0x32, 0x02, 0x1a, 0x02, 0x0e, 0x02, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0xff, 0x07, 0xff, 0x07, + 0x01, 0x04, 0x01, 0x04, 0x00, 0x00, 0x06, 0x00, 0x3c, 0x00, 0xc0, 0x03, 0x00, 0x06, 0x00, 0x00, + 0x01, 0x04, 0x01, 0x04, 0xff, 0x07, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, + 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xd0, 0x03, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, + 0xf8, 0x03, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0xff, 0x03, 0x08, 0x02, 0x08, 0x02, + 0x08, 0x02, 0xf8, 0x03, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0x18, 0x03, + 0x08, 0x02, 0x08, 0x02, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0xf8, 0x03, 0x08, 0x02, + 0x08, 0x02, 0x08, 0x02, 0xff, 0x03, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xf0, 0x01, + 0x58, 0x03, 0x48, 0x02, 0x48, 0x02, 0x78, 0x02, 0x60, 0x01, 0x00, 0x00, 0x08, 0x00, 0xfe, 0x03, + 0xff, 0x03, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0xf8, 0x0b, 0x18, 0x12, + 0x08, 0x12, 0x18, 0x13, 0xf8, 0x1f, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0xff, 0x03, + 0x18, 0x00, 0x08, 0x00, 0x08, 0x00, 0xf8, 0x03, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x03, + 0xfb, 0x03, 0x00, 0x00, 0x00, 0x10, 0xfb, 0x1f, 0xfb, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, + 0xff, 0x03, 0x60, 0x00, 0xf0, 0x00, 0x98, 0x01, 0x08, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x03, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0xf8, 0x03, 0x08, 0x00, 0x08, 0x00, + 0xf8, 0x03, 0xf8, 0x03, 0x08, 0x00, 0x08, 0x00, 0xf8, 0x03, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0x03, 0xf8, 0x03, 0x18, 0x00, 0x08, 0x00, 0x08, 0x00, 0xf8, 0x03, 0xf0, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0x01, 0xf8, 0x03, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02, 0xf8, 0x03, 0xf0, 0x01, + 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0xf8, 0x1f, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02, 0xf8, 0x03, + 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0xf8, 0x03, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02, + 0xf8, 0x1f, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0xf8, 0x03, 0x18, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x78, 0x02, 0x48, 0x02, 0x48, 0x02, 0xc8, 0x03, + 0x90, 0x01, 0x00, 0x00, 0x08, 0x00, 0xfe, 0x03, 0xfe, 0x03, 0x08, 0x02, 0x08, 0x02, 0x00, 0x00, + 0x00, 0x00, 0xf8, 0x01, 0xf8, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0xf8, 0x03, 0xf8, 0x03, + 0x00, 0x00, 0x18, 0x00, 0xf8, 0x00, 0xe0, 0x03, 0x00, 0x03, 0xe0, 0x03, 0xf8, 0x00, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0xf8, 0x01, 0x80, 0x03, 0xe0, 0x03, 0x78, 0x00, 0x78, 0x00, + 0xe0, 0x03, 0x80, 0x03, 0xf8, 0x01, 0x38, 0x00, 0x00, 0x00, 0x08, 0x02, 0x18, 0x03, 0xf0, 0x01, + 0xe0, 0x00, 0xf0, 0x01, 0x18, 0x03, 0x08, 0x02, 0x00, 0x00, 0x18, 0x00, 0x78, 0x10, 0xe0, 0x19, + 0x80, 0x0f, 0xe0, 0x07, 0xf8, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x03, 0x88, 0x03, + 0xc8, 0x02, 0x68, 0x02, 0x38, 0x02, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, + 0xfe, 0x03, 0xdf, 0x07, 0x01, 0x04, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x01, 0x04, 0xdf, 0x07, 0xfe, 0x03, 0x20, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, + 0x40, 0x00, 0x20, 0x00, +}; + +static const uint16_t mf_bwfont_DejaVuSansBold12_glyph_offsets_0[96] = { + 0x0000, 0x0000, 0x0005, 0x000a, 0x0014, 0x001d, 0x002a, 0x0035, + 0x0038, 0x003e, 0x0043, 0x004a, 0x0053, 0x0057, 0x005d, 0x0061, + 0x0066, 0x006f, 0x0077, 0x0080, 0x0089, 0x0092, 0x009b, 0x00a4, + 0x00ad, 0x00b6, 0x00bf, 0x00c3, 0x00c7, 0x00d1, 0x00db, 0x00e5, + 0x00ec, 0x00f8, 0x0102, 0x010b, 0x0114, 0x011e, 0x0126, 0x012e, + 0x0138, 0x0142, 0x0146, 0x014a, 0x0154, 0x015c, 0x0168, 0x0172, + 0x017d, 0x0186, 0x0191, 0x019b, 0x01a4, 0x01ad, 0x01b7, 0x01c1, + 0x01cf, 0x01d9, 0x01e2, 0x01ec, 0x01f2, 0x01f7, 0x01fc, 0x0205, + 0x020c, 0x0211, 0x021a, 0x0223, 0x022b, 0x0234, 0x023d, 0x0243, + 0x024c, 0x0255, 0x0259, 0x025d, 0x0266, 0x026a, 0x0276, 0x027f, + 0x0288, 0x0291, 0x029a, 0x02a1, 0x02a9, 0x02af, 0x02b8, 0x02c0, + 0x02cc, 0x02d4, 0x02dc, 0x02e4, 0x02ec, 0x02f0, 0x02f8, 0x0302, +}; + +static const uint8_t mf_bwfont_DejaVuSansBold12_glyph_widths_0[95] = { + 0x04, 0x05, 0x06, 0x0a, 0x08, 0x0c, 0x0a, 0x04, 0x05, 0x05, 0x06, 0x0a, 0x05, 0x05, 0x05, 0x04, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x05, 0x05, 0x0a, 0x0a, 0x0a, 0x07, + 0x0c, 0x09, 0x09, 0x09, 0x0a, 0x08, 0x08, 0x0a, 0x0a, 0x04, 0x04, 0x09, 0x08, 0x0c, 0x0a, 0x0b, + 0x09, 0x0a, 0x09, 0x09, 0x08, 0x0a, 0x09, 0x0e, 0x09, 0x08, 0x0a, 0x05, 0x04, 0x05, 0x0a, 0x06, + 0x06, 0x09, 0x09, 0x07, 0x09, 0x09, 0x05, 0x09, 0x09, 0x04, 0x04, 0x08, 0x04, 0x0c, 0x09, 0x09, + 0x09, 0x09, 0x06, 0x08, 0x06, 0x09, 0x07, 0x0c, 0x07, 0x08, 0x08, 0x09, 0x04, 0x09, 0x0a, +}; + +static const struct mf_bwfont_char_range_s mf_bwfont_DejaVuSansBold12_char_ranges[] = { + { + 32, /* first char */ + 95, /* char count */ + 0, /* offset x */ + 0, /* offset y */ + 2, /* height in bytes */ + 13, /* height in pixels */ + 0, /* width */ + mf_bwfont_DejaVuSansBold12_glyph_widths_0, /* glyph widths */ + mf_bwfont_DejaVuSansBold12_glyph_offsets_0, /* glyph offsets */ + mf_bwfont_DejaVuSansBold12_glyph_data_0, /* glyph data */ + }, +}; + +const struct mf_bwfont_s mf_bwfont_DejaVuSansBold12 = { + { + "DejaVu Sans Bold 12", + "DejaVuSansBold12", + 14, /* width */ + 13, /* height */ + 4, /* min x advance */ + 14, /* max x advance */ + 1, /* baseline x */ + 10, /* baseline y */ + 14, /* line height */ + 2, /* flags */ + 63, /* fallback character */ + &mf_bwfont_character_width, + &mf_bwfont_render_character, + }, + 4, /* version */ + 1, /* char range count */ + mf_bwfont_DejaVuSansBold12_char_ranges, +}; + +#ifdef MF_INCLUDED_FONTS +/* List entry for searching fonts by name. */ +static const struct mf_font_list_s mf_bwfont_DejaVuSansBold12_listentry = { + MF_INCLUDED_FONTS, + (struct mf_font_s*)&mf_bwfont_DejaVuSansBold12 +}; +#undef MF_INCLUDED_FONTS +#define MF_INCLUDED_FONTS (&mf_bwfont_DejaVuSansBold12_listentry) +#endif + + +/* End of automatically generated font definition for DejaVuSansBold12. */ + diff --git a/src/gdisp/fonts/DejaVuSansBold12_aa.c b/src/gdisp/fonts/DejaVuSansBold12_aa.c new file mode 100644 index 00000000..bab54f58 --- /dev/null +++ b/src/gdisp/fonts/DejaVuSansBold12_aa.c @@ -0,0 +1,257 @@ + + +/* Start of automatically generated font definition for DejaVuSansBold12_aa. */ + +#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_DejaVuSansBold12_aa_dictionary_data[295] = { + 0x09, 0x06, 0xce, 0x80, 0xc2, 0x02, 0x11, 0x80, 0xc5, 0x07, 0x0a, 0x03, 0x0b, 0x02, 0x01, 0xc2, + 0x06, 0x81, 0x81, 0x0c, 0x81, 0x86, 0x04, 0x81, 0x2c, 0x83, 0x05, 0x2b, 0x80, 0xc3, 0x80, 0xcb, + 0x0f, 0x40, 0x07, 0xce, 0xcb, 0x80, 0xc6, 0x0c, 0xd9, 0x0c, 0x01, 0xca, 0x84, 0x1a, 0xc5, 0xc1, + 0xcb, 0x80, 0x2d, 0xc7, 0x80, 0xc8, 0xc2, 0x01, 0x0b, 0xc5, 0x07, 0x81, 0x02, 0x01, 0x80, 0x10, + 0xc4, 0xce, 0xc3, 0x80, 0x80, 0xca, 0xc3, 0xca, 0x04, 0x80, 0xcc, 0xce, 0xca, 0x07, 0x81, 0xc5, + 0xcd, 0xc3, 0xcc, 0xc2, 0x81, 0xce, 0x80, 0x80, 0xc2, 0x01, 0x81, 0x82, 0x80, 0xce, 0xc1, 0xc5, + 0x80, 0xc9, 0x0c, 0x01, 0xc5, 0x80, 0x08, 0xcd, 0x80, 0xcd, 0xc9, 0x80, 0xc7, 0x85, 0x08, 0xce, + 0xc9, 0xd1, 0xc1, 0x01, 0xce, 0x81, 0xc1, 0xc6, 0x80, 0xc4, 0xcc, 0xc6, 0xc3, 0xce, 0x07, 0xcd, + 0x80, 0xce, 0xc1, 0x81, 0xde, 0x80, 0xcd, 0xce, 0xcd, 0xc4, 0xcb, 0xc1, 0xc9, 0xc5, 0xcc, 0x80, + 0xc8, 0xcd, 0xc5, 0xc2, 0xc9, 0x0e, 0x0c, 0x06, 0x2c, 0x24, 0x50, 0x24, 0x05, 0x0f, 0x45, 0xdc, + 0x1a, 0x18, 0x0f, 0x52, 0xa4, 0x18, 0x94, 0x42, 0x09, 0x30, 0x1f, 0x06, 0x4f, 0x29, 0x1a, 0x22, + 0x63, 0x21, 0x9c, 0x26, 0x29, 0x1a, 0x22, 0x4d, 0x29, 0x09, 0x30, 0x1f, 0x06, 0x0f, 0x4f, 0x66, + 0x55, 0x45, 0x02, 0x22, 0x63, 0x19, 0x8a, 0x4d, 0x45, 0x02, 0x22, 0x63, 0x45, 0x09, 0x66, 0x55, + 0x29, 0xc0, 0x57, 0x00, 0x01, 0x01, 0x20, 0x24, 0x50, 0x24, 0x50, 0x24, 0x50, 0x24, 0x50, 0x09, + 0x0e, 0x28, 0x1d, 0x38, 0x66, 0x61, 0x5f, 0x39, 0x48, 0x45, 0xdc, 0x5f, 0x39, 0x48, 0x1d, 0x38, + 0x66, 0x61, 0x52, 0x09, 0x0c, 0x03, 0x45, 0x09, 0x4e, 0x63, 0x45, 0x24, 0x20, 0x02, 0x62, 0x04, + 0x01, 0x01, 0x4d, 0x21, 0x90, 0xb7, 0x5f, 0x39, 0x01, 0x63, 0x2a, 0x24, 0x3a, 0x1c, 0x20, 0x0c, + 0x07, 0x26, 0x23, 0x02, 0x1e, 0x1e, 0x01, 0x07, 0x20, 0x51, 0x0a, 0x1d, 0x0f, 0x1c, 0x18, 0x1d, + 0x36, 0x0b, 0x1c, 0x0d, 0x63, 0x0a, 0x49, +}; + +static const uint16_t mf_rlefont_DejaVuSansBold12_aa_dictionary_offsets[115] = { + 0x0000, 0x0001, 0x0002, 0x0006, 0x0007, 0x0009, 0x000a, 0x000b, + 0x000c, 0x000d, 0x000e, 0x0010, 0x0012, 0x0015, 0x0016, 0x0018, + 0x0019, 0x001a, 0x001b, 0x001c, 0x001e, 0x0020, 0x0021, 0x0023, + 0x0025, 0x0027, 0x002a, 0x002c, 0x002d, 0x002e, 0x0030, 0x0032, + 0x0033, 0x0036, 0x0038, 0x003a, 0x003d, 0x003f, 0x0040, 0x0042, + 0x0044, 0x0046, 0x0048, 0x0049, 0x004b, 0x004d, 0x004f, 0x0051, + 0x0053, 0x0055, 0x0057, 0x0059, 0x005b, 0x005c, 0x005e, 0x0060, + 0x0062, 0x0063, 0x0066, 0x0067, 0x0069, 0x006b, 0x006d, 0x006f, + 0x0071, 0x0072, 0x0074, 0x0076, 0x0078, 0x007a, 0x007c, 0x007e, + 0x0081, 0x0083, 0x0084, 0x0085, 0x0087, 0x0089, 0x008b, 0x008d, + 0x008f, 0x0091, 0x0093, 0x0095, 0x0097, 0x0099, 0x009c, 0x009e, + 0x00a0, 0x00a2, 0x00a7, 0x00bd, 0x00d3, 0x00d5, 0x00d7, 0x00df, + 0x00f4, 0x00fb, 0x00fd, 0x0101, 0x0103, 0x0106, 0x0108, 0x010a, + 0x0111, 0x0113, 0x0115, 0x0117, 0x0119, 0x011c, 0x011f, 0x0121, + 0x0123, 0x0125, 0x0127, +}; + +static const uint8_t mf_rlefont_DejaVuSansBold12_aa_glyph_data_0[2289] = { + 0x04, 0x00, 0x10, 0x05, 0x1b, 0x6d, 0x50, 0x0d, 0x0d, 0x50, 0x0c, 0x0c, 0x34, 0x24, 0x10, 0x06, + 0x2d, 0xee, 0x52, 0xac, 0x52, 0xac, 0x10, 0x0a, 0x52, 0x82, 0x4a, 0x06, 0x0d, 0x18, 0x46, 0x32, + 0x09, 0x19, 0x51, 0x56, 0x69, 0x3f, 0x01, 0x1d, 0x74, 0x4a, 0x06, 0x0d, 0x52, 0xc3, 0x1c, 0x1d, + 0x08, 0x0b, 0x00, 0x5d, 0x18, 0x0b, 0x08, 0x00, 0x2b, 0x18, 0x69, 0x3f, 0x01, 0x10, 0x08, 0x2d, + 0xd4, 0x82, 0x89, 0xf7, 0x86, 0x3f, 0x1e, 0x0e, 0x4f, 0x0f, 0x01, 0x18, 0x0c, 0x4c, 0x43, 0x03, + 0x1d, 0x03, 0x0d, 0x4c, 0x43, 0x18, 0x03, 0x2c, 0x4d, 0x1e, 0x4a, 0x2c, 0x29, 0xc0, 0x44, 0x81, + 0x0f, 0x52, 0xa4, 0x10, 0x0c, 0x3d, 0x47, 0x6b, 0x03, 0x21, 0x0c, 0x05, 0x29, 0x5d, 0x5b, 0x0c, + 0x00, 0x06, 0x0b, 0x19, 0x60, 0x74, 0x60, 0x0d, 0x03, 0x19, 0x5d, 0x5b, 0x0c, 0x08, 0x09, 0x1d, + 0x47, 0x6b, 0x3e, 0x04, 0x0c, 0x6b, 0x03, 0x19, 0x32, 0x08, 0x5d, 0x5b, 0x0c, 0x19, 0x03, 0x0d, + 0x01, 0x60, 0x74, 0x0e, 0x19, 0x0b, 0x06, 0x00, 0x5d, 0x5b, 0x0c, 0x29, 0x67, 0x21, 0x47, 0x6b, + 0x03, 0x10, 0x0a, 0x1b, 0x47, 0x64, 0x06, 0x18, 0x0d, 0x2b, 0x6a, 0x18, 0x0e, 0x5c, 0x20, 0x09, + 0x63, 0x01, 0x18, 0x06, 0x61, 0x2c, 0x22, 0x4d, 0x29, 0x0d, 0x1c, 0x0e, 0x68, 0x08, 0x40, 0x29, + 0x49, 0x01, 0x04, 0x4c, 0x5c, 0x29, 0x09, 0x68, 0x01, 0x0a, 0x0f, 0x43, 0x29, 0x74, 0x08, 0x88, + 0x0a, 0x06, 0x0e, 0x08, 0x10, 0x04, 0x3d, 0x71, 0x10, 0x05, 0x1f, 0x08, 0x40, 0x82, 0x49, 0x81, + 0x06, 0x40, 0x20, 0x87, 0x20, 0x49, 0x75, 0x61, 0x50, 0x49, 0x75, 0x87, 0x20, 0x07, 0x40, 0x00, + 0x82, 0x70, 0x08, 0x40, 0x10, 0x05, 0x32, 0x68, 0x1e, 0x22, 0x4d, 0x75, 0x0a, 0x30, 0x3a, 0x2c, + 0x20, 0x7b, 0x29, 0x45, 0x20, 0x7b, 0x3a, 0x2c, 0x1e, 0x32, 0x30, 0x18, 0x22, 0x0f, 0x60, 0x18, + 0x32, 0x68, 0x10, 0x06, 0x2d, 0xec, 0x1e, 0x32, 0x3f, 0x41, 0x18, 0x04, 0x88, 0x04, 0x18, 0x04, + 0x88, 0x04, 0x52, 0x32, 0x3f, 0x41, 0x19, 0xa4, 0x10, 0x0a, 0x21, 0x37, 0x71, 0x18, 0x25, 0x1e, + 0x71, 0x10, 0x05, 0x2e, 0x7f, 0x10, 0x05, 0x2d, 0x2e, 0x28, 0x52, 0xc0, 0x10, 0x05, 0x2a, 0x2e, + 0x24, 0x10, 0x04, 0x1b, 0x46, 0x31, 0x0d, 0x04, 0x20, 0x3f, 0x75, 0x07, 0x0b, 0x50, 0x0b, 0x83, + 0x01, 0x2b, 0x20, 0x04, 0x0d, 0x31, 0x69, 0x10, 0x08, 0x19, 0x3a, 0x53, 0x69, 0x52, 0x04, 0x4f, + 0x66, 0x2b, 0x86, 0x02, 0x22, 0x40, 0x5f, 0x21, 0x7e, 0x6f, 0x5f, 0x21, 0x7e, 0x86, 0x02, 0x22, + 0x40, 0x1d, 0x04, 0x4f, 0x66, 0x5c, 0x52, 0x05, 0x53, 0x69, 0x10, 0x08, 0x18, 0x45, 0x6d, 0x50, + 0x6d, 0x1e, 0xc3, 0x10, 0x08, 0x3d, 0x41, 0x0e, 0x63, 0x08, 0x01, 0x1d, 0x0b, 0x05, 0x58, 0x08, + 0x4f, 0x20, 0x7b, 0x20, 0x04, 0x63, 0x1e, 0x5e, 0x1c, 0x18, 0x3e, 0x30, 0x18, 0x05, 0x85, 0x07, + 0x4d, 0x04, 0x1e, 0x25, 0x10, 0x08, 0x3d, 0x65, 0x62, 0x54, 0x01, 0x1d, 0x0b, 0x04, 0x58, 0x08, + 0x2c, 0x20, 0x7b, 0x82, 0x07, 0x40, 0x21, 0x45, 0x63, 0x02, 0x82, 0x07, 0x2c, 0x00, 0x82, 0x61, + 0x1d, 0x0b, 0x04, 0x58, 0x08, 0x2c, 0x1d, 0x05, 0x36, 0x64, 0x08, 0x01, 0x10, 0x08, 0x21, 0x1b, + 0x0c, 0x61, 0x1e, 0x08, 0x0a, 0x61, 0x18, 0x03, 0x60, 0x61, 0x1d, 0x74, 0x69, 0x4b, 0x52, 0x09, + 0x09, 0xf0, 0x52, 0x0d, 0x01, 0xf0, 0x52, 0x25, 0x20, 0x24, 0x10, 0x08, 0x3d, 0x56, 0x79, 0x3c, + 0x4d, 0x6b, 0x83, 0x02, 0x0a, 0x68, 0x20, 0x7b, 0x20, 0x7b, 0x82, 0x0a, 0x68, 0x45, 0x4d, 0x5d, + 0x10, 0x08, 0x1b, 0x03, 0x0b, 0x4c, 0x52, 0x03, 0x2c, 0x81, 0x0a, 0x2b, 0x20, 0x0e, 0x43, 0x0e, + 0x57, 0x01, 0x45, 0x07, 0x01, 0x07, 0x4f, 0x5f, 0x59, 0x7b, 0x86, 0x59, 0x7e, 0x1d, 0x04, 0x55, + 0x01, 0x38, 0x52, 0x05, 0x88, 0x07, 0x10, 0x08, 0x3d, 0x25, 0x20, 0x04, 0x63, 0x20, 0x0c, 0x30, + 0x1e, 0x04, 0x63, 0x20, 0x87, 0x1e, 0x03, 0x43, 0x1e, 0x32, 0x5c, 0x18, 0x22, 0x43, 0x20, 0x09, + 0x5c, 0x10, 0x08, 0x2d, 0x22, 0x89, 0x44, 0x02, 0x86, 0x06, 0x01, 0x6c, 0x1d, 0x49, 0x59, 0x7b, + 0x19, 0x32, 0x30, 0x5b, 0x40, 0x19, 0x74, 0x0c, 0x61, 0x43, 0x01, 0x86, 0x06, 0x01, 0x6c, 0x1d, + 0x49, 0x59, 0x7b, 0x86, 0x06, 0x01, 0x6c, 0x19, 0x22, 0x89, 0x44, 0x02, 0x10, 0x08, 0x1b, 0x07, + 0x0d, 0x43, 0x05, 0x52, 0x08, 0x55, 0x01, 0x07, 0x2b, 0x5f, 0x01, 0x74, 0x2c, 0x1d, 0x49, 0x59, + 0x7e, 0x1d, 0x09, 0x55, 0x01, 0x07, 0x61, 0x1d, 0x66, 0x0e, 0x6b, 0x4d, 0x20, 0x03, 0x40, 0x18, + 0x22, 0x0b, 0x2b, 0x00, 0x45, 0x2c, 0x03, 0x10, 0x05, 0x27, 0x79, 0x2a, 0x24, 0x10, 0x05, 0x27, + 0x79, 0x7f, 0x10, 0x0a, 0x1f, 0x37, 0x22, 0x07, 0x0c, 0x52, 0x5b, 0x0c, 0x0f, 0x44, 0x19, 0x06, + 0x36, 0x44, 0x35, 0x45, 0x0a, 0x01, 0x1e, 0x06, 0x36, 0x44, 0x35, 0x18, 0x5b, 0x0c, 0x0f, 0x44, + 0x1e, 0x22, 0x07, 0x0c, 0x10, 0x0a, 0x2e, 0x3c, 0x25, 0x2d, 0xa4, 0x25, 0x10, 0x0a, 0x27, 0x0c, + 0x07, 0x02, 0x20, 0x89, 0x5d, 0x01, 0x18, 0x4e, 0x89, 0x0b, 0x06, 0x82, 0x0a, 0x61, 0x1d, 0x4e, + 0x89, 0x0b, 0x06, 0x19, 0x89, 0x5d, 0x01, 0x52, 0x0c, 0x07, 0x02, 0x10, 0x07, 0x18, 0x45, 0x43, + 0x04, 0x20, 0x03, 0x63, 0x20, 0x07, 0x63, 0x1e, 0x04, 0x0f, 0x5c, 0x1e, 0x0c, 0x30, 0x42, 0x45, + 0x01, 0x52, 0x1b, 0x24, 0x10, 0x0c, 0x00, 0x1b, 0x41, 0x62, 0x5d, 0x1d, 0x06, 0x0e, 0x06, 0x02, + 0x01, 0x65, 0x0a, 0x29, 0x5e, 0x02, 0x29, 0x0b, 0x06, 0x1f, 0x32, 0x07, 0x00, 0x04, 0x44, 0xfd, + 0x47, 0x42, 0x0e, 0x39, 0x0d, 0x04, 0x6e, 0x74, 0x0e, 0xd4, 0xa8, 0x22, 0x0d, 0x42, 0x0d, 0x39, + 0x0d, 0x04, 0x05, 0x4a, 0x0b, 0x07, 0x42, 0x09, 0x06, 0x00, 0x04, 0x2f, 0x63, 0x07, 0x42, 0x22, + 0x0d, 0x02, 0x50, 0x46, 0x35, 0x4e, 0x5d, 0x1d, 0x6a, 0x53, 0x44, 0x03, 0x10, 0x09, 0x1d, 0x82, + 0x49, 0x60, 0x52, 0x51, 0x85, 0x0b, 0x43, 0x40, 0x1d, 0x74, 0x61, 0x48, 0x01, 0x1d, 0x06, 0x40, + 0x00, 0x0b, 0x30, 0x1d, 0x87, 0x51, 0x0b, 0x29, 0x22, 0xc3, 0x4a, 0x29, 0x07, 0x40, 0x21, 0x32, + 0x55, 0x29, 0x0c, 0x1c, 0x1f, 0x05, 0x43, 0x10, 0x09, 0x2d, 0xe2, 0x44, 0x02, 0x3b, 0x6c, 0x3b, + 0x7b, 0x3b, 0x6c, 0x19, 0xc2, 0x2b, 0x3b, 0x05, 0x43, 0x6f, 0x3b, 0x05, 0x43, 0x29, 0xc0, 0x2f, + 0x03, 0x10, 0x09, 0x1b, 0x6a, 0x49, 0x2f, 0x19, 0x22, 0x62, 0x35, 0x41, 0x1d, 0x09, 0x30, 0x20, + 0x70, 0x61, 0x50, 0x70, 0x09, 0x30, 0x20, 0x7a, 0x41, 0x52, 0x6a, 0x49, 0x2f, 0x10, 0x0a, 0x2d, + 0xf2, 0x6b, 0x08, 0x01, 0x45, 0x22, 0x06, 0x64, 0x01, 0x29, 0x8a, 0x07, 0x4f, 0x42, 0x90, 0x22, + 0x63, 0x23, 0x80, 0x21, 0x22, 0x63, 0x29, 0x8a, 0x07, 0x4f, 0x1f, 0x9c, 0x5b, 0x64, 0x01, 0x1f, + 0xbc, 0x6b, 0x08, 0x01, 0x10, 0x08, 0x3d, 0x56, 0x6d, 0x28, 0x52, 0x6d, 0x28, 0x10, 0x08, 0x3d, + 0x56, 0x6d, 0x28, 0x52, 0x6d, 0x10, 0x0a, 0x1d, 0x82, 0x08, 0x53, 0x64, 0x0b, 0x29, 0x74, 0x0d, + 0x0e, 0x06, 0x58, 0x65, 0x19, 0x09, 0x55, 0x42, 0x7d, 0x1f, 0x45, 0xbc, 0x19, 0x1a, 0x4b, 0x19, + 0x09, 0x30, 0xdc, 0x29, 0x22, 0x62, 0x35, 0x48, 0x1d, 0x6a, 0x53, 0x6b, 0x09, 0x10, 0x0a, 0x18, + 0x45, 0x80, 0x80, 0x80, 0x80, 0xc3, 0x23, 0x80, 0x80, 0x80, 0x26, 0x10, 0x04, 0x3d, 0x76, 0x61, + 0x10, 0x04, 0x3d, 0x76, 0x4d, 0x20, 0x07, 0x2c, 0x29, 0xa4, 0x54, 0x01, 0x10, 0x09, 0x2d, 0x8a, + 0x03, 0x0d, 0x30, 0x1f, 0x90, 0x04, 0x62, 0x04, 0x23, 0x51, 0x0d, 0x03, 0x45, 0x06, 0x43, 0x59, + 0x45, 0x85, 0x0f, 0x30, 0x0f, 0x1c, 0x00, 0x45, 0x51, 0x1c, 0x3b, 0x3e, 0x30, 0x29, 0x8a, 0x3e, + 0x55, 0x10, 0x08, 0x3d, 0x76, 0xc3, 0x10, 0x0c, 0x20, 0xa4, 0x4f, 0x42, 0x09, 0xf7, 0xbc, 0x39, + 0x22, 0x4c, 0x26, 0x54, 0x21, 0x09, 0x53, 0xa5, 0x55, 0x4a, 0x02, 0x55, 0x61, 0x26, 0x01, 0x57, + 0x09, 0x60, 0xf7, 0x9c, 0x07, 0x0f, 0x55, 0x4b, 0x26, 0x74, 0x0e, 0x60, 0x4b, 0x80, 0x80, 0x10, + 0x0a, 0x20, 0xa4, 0x43, 0xdc, 0x23, 0x5c, 0xd0, 0xa4, 0x43, 0x0c, 0xd0, 0xa4, 0x5c, 0x1c, 0x8a, + 0x9c, 0x0b, 0x0c, 0x8a, 0x9c, 0x04, 0x0f, 0x6e, 0xc5, 0x90, 0x0b, 0x0c, 0x0f, 0xc5, 0x90, 0x03, + 0x61, 0xc5, 0x90, 0x32, 0x61, 0x10, 0x0b, 0x1b, 0x6a, 0x49, 0x54, 0x02, 0x19, 0x7a, 0x04, 0x62, + 0x39, 0x72, 0x4f, 0x29, 0x7a, 0x04, 0x62, 0x02, 0x19, 0x6a, 0x49, 0x57, 0x02, 0x10, 0x09, 0x2d, + 0xe2, 0x54, 0x01, 0x3b, 0x08, 0x4f, 0x3b, 0x7b, 0x3b, 0x7b, 0x3b, 0x08, 0x4f, 0x29, 0xc0, 0x54, + 0x01, 0x45, 0x50, 0x24, 0x10, 0x0a, 0x1b, 0x6a, 0x49, 0x57, 0x02, 0x19, 0x7a, 0x04, 0x62, 0x39, + 0x72, 0x40, 0x29, 0x7a, 0x3e, 0x2b, 0x19, 0x6a, 0x0d, 0x61, 0x5c, 0x82, 0x0d, 0x30, 0x20, 0x03, + 0x4d, 0x02, 0x10, 0x09, 0x2d, 0xe2, 0x2f, 0x02, 0x3b, 0x06, 0x43, 0x3b, 0x7b, 0x3b, 0x6c, 0x29, + 0xc0, 0x63, 0x01, 0x45, 0x22, 0x0b, 0x30, 0x3b, 0x7e, 0x3b, 0x32, 0x1c, 0x29, 0x8a, 0x05, 0x43, + 0x10, 0x09, 0x19, 0x82, 0x89, 0x6b, 0x1d, 0x32, 0x1c, 0x00, 0x41, 0x52, 0x70, 0x53, 0x57, 0x06, + 0x01, 0x52, 0x04, 0x0d, 0x61, 0x85, 0x03, 0x07, 0x88, 0x1e, 0x22, 0x4d, 0x1d, 0x0b, 0x35, 0x84, + 0x0a, 0x0d, 0x49, 0x54, 0x01, 0x10, 0x08, 0x1e, 0xa4, 0x25, 0x18, 0x76, 0x10, 0x0a, 0x18, 0x45, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x26, 0x19, 0x53, 0x01, 0x21, 0x7e, 0x19, 0x08, 0x4f, 0x01, 0x66, + 0x68, 0x1d, 0x07, 0x53, 0x63, 0x07, 0x10, 0x09, 0x2d, 0x0c, 0x1c, 0x1f, 0x05, 0x43, 0x29, 0x07, + 0x40, 0x21, 0x32, 0x55, 0x42, 0x22, 0x0f, 0x60, 0x74, 0x1a, 0x42, 0x87, 0x51, 0x0b, 0x1d, 0x6c, + 0x00, 0x0b, 0x30, 0x19, 0x74, 0x0f, 0x2b, 0x61, 0x59, 0x86, 0x0c, 0x40, 0x52, 0x51, 0x85, 0x01, + 0x49, 0x60, 0x10, 0x0e, 0x3d, 0x0d, 0x2b, 0x74, 0x61, 0x59, 0x03, 0x63, 0x00, 0x32, 0x55, 0x51, + 0x1c, 0x00, 0x07, 0x40, 0x21, 0x06, 0x40, 0x00, 0x09, 0x0e, 0x44, 0x32, 0x30, 0x00, 0x22, 0x4d, + 0x00, 0x57, 0x09, 0x0e, 0x00, 0x1a, 0x00, 0x0e, 0x30, 0x1c, 0x05, 0x30, 0x4d, 0x1f, 0x32, 0x0f, + 0x49, 0x01, 0x7b, 0x40, 0x42, 0x07, 0x0f, 0x2c, 0x21, 0x36, 0x55, 0x42, 0x3f, 0x55, 0x21, 0x06, + 0x0f, 0x2b, 0x29, 0x1a, 0x02, 0x4d, 0x10, 0x09, 0x2d, 0x0a, 0x30, 0x1f, 0x06, 0x40, 0x42, 0x74, + 0x0d, 0x0e, 0x02, 0x22, 0x64, 0x01, 0x19, 0x04, 0x2c, 0x00, 0x0b, 0x5c, 0x52, 0x08, 0x43, 0x68, + 0x18, 0x48, 0x4a, 0x52, 0x32, 0x4f, 0x40, 0x52, 0x05, 0x40, 0x32, 0x1c, 0x29, 0x74, 0x0e, 0x60, + 0x74, 0x0e, 0x60, 0x42, 0x32, 0x1c, 0x21, 0x84, 0x10, 0x08, 0x2d, 0x0b, 0x2b, 0x21, 0x03, 0x2c, + 0x29, 0x22, 0x2c, 0x21, 0x0b, 0x4a, 0x1d, 0x08, 0x5c, 0x04, 0x68, 0x1d, 0x74, 0x6b, 0x0c, 0x60, + 0x18, 0x06, 0x0f, 0x30, 0x20, 0x6d, 0x10, 0x0a, 0x20, 0xa4, 0x25, 0x3a, 0x4d, 0x1e, 0x05, 0x4d, + 0x03, 0x18, 0x04, 0x4d, 0x03, 0x18, 0x5e, 0x5c, 0x18, 0x5e, 0x1c, 0x18, 0x5e, 0x30, 0x1e, 0x49, + 0x83, 0x0f, 0x25, 0x10, 0x05, 0xc0, 0x1e, 0x76, 0x24, 0x61, 0x10, 0x04, 0x2d, 0x69, 0x31, 0x04, + 0x0d, 0x21, 0x82, 0x2b, 0x50, 0x0b, 0x07, 0x50, 0x07, 0x0b, 0x50, 0x3f, 0x01, 0x50, 0x0d, 0x04, + 0x31, 0x46, 0x10, 0x05, 0x4b, 0x76, 0x24, 0x52, 0xc0, 0x10, 0x0a, 0x1d, 0x3a, 0x85, 0x06, 0x40, + 0x0a, 0x30, 0x1d, 0x07, 0x0e, 0x05, 0x21, 0x05, 0x0e, 0x07, 0x10, 0x06, 0x00, 0x34, 0x2e, 0x2e, + 0xc3, 0x10, 0x06, 0x21, 0x08, 0x0d, 0x01, 0x50, 0x08, 0x09, 0x10, 0x09, 0x37, 0x07, 0x61, 0x57, + 0x01, 0x52, 0x08, 0x03, 0x00, 0x06, 0x4f, 0x50, 0x63, 0x1d, 0x03, 0x0b, 0x0e, 0x28, 0x5f, 0x04, + 0x74, 0x61, 0x5f, 0x04, 0x66, 0x61, 0x1d, 0x04, 0x0c, 0x33, 0x10, 0x09, 0x21, 0x6d, 0x61, 0x57, + 0x52, 0x73, 0x10, 0x07, 0x37, 0x67, 0x64, 0x06, 0x52, 0x6c, 0x02, 0x66, 0x00, 0x7d, 0x1f, 0x45, + 0x29, 0x7d, 0x1e, 0x6c, 0x02, 0x01, 0x08, 0x18, 0x67, 0x64, 0x06, 0x10, 0x09, 0x45, 0x50, 0x24, + 0x52, 0x77, 0x0e, 0x28, 0x10, 0x09, 0x37, 0x06, 0x0c, 0x64, 0x06, 0x52, 0x06, 0x40, 0x01, 0x08, + 0x30, 0x7d, 0x7e, 0x1d, 0x25, 0x7d, 0x1e, 0x07, 0x40, 0x58, 0x65, 0x52, 0x67, 0x0e, 0x2f, 0x04, + 0x10, 0x05, 0x21, 0x46, 0xc7, 0x5f, 0x03, 0x42, 0x45, 0x1e, 0xc2, 0x1e, 0x24, 0x50, 0x6d, 0x10, + 0x09, 0x37, 0x08, 0x0e, 0x28, 0x1d, 0x07, 0x4f, 0x66, 0x61, 0x7d, 0x48, 0x6f, 0x7d, 0x48, 0x1d, + 0x38, 0x66, 0x61, 0x52, 0x08, 0x0e, 0x28, 0x20, 0x7b, 0x52, 0x09, 0x02, 0x01, 0x08, 0x4f, 0x52, + 0x06, 0x88, 0x07, 0x10, 0x09, 0x21, 0x6d, 0x4c, 0x78, 0x02, 0xf0, 0x6f, 0x6f, 0x6f, 0x6f, 0x10, + 0x04, 0x21, 0x24, 0x34, 0x79, 0x4b, 0x50, 0x6d, 0x10, 0x04, 0x21, 0x24, 0x34, 0x6d, 0x50, 0x6d, + 0x1e, 0x22, 0x43, 0x20, 0x63, 0x04, 0x10, 0x08, 0x21, 0x6d, 0x22, 0x0d, 0x55, 0x45, 0x02, 0x0d, + 0x55, 0x1f, 0xa4, 0x63, 0x55, 0x42, 0xa4, 0x4d, 0x60, 0x42, 0xa4, 0x5c, 0x43, 0x59, 0x45, 0x84, + 0xca, 0x38, 0x10, 0x04, 0x21, 0x76, 0x24, 0x10, 0x0c, 0x2a, 0xe2, 0x6b, 0x88, 0x04, 0xd4, 0x55, + 0x3f, 0x55, 0x03, 0x63, 0x26, 0x01, 0x4b, 0x01, 0x4b, 0x7c, 0x7c, 0x7c, 0x7c, 0x10, 0x09, 0x2a, + 0xc2, 0x78, 0x02, 0xf0, 0x6f, 0x6f, 0x6f, 0x6f, 0x10, 0x09, 0x37, 0x06, 0x0d, 0x64, 0x06, 0x52, + 0x38, 0x66, 0x30, 0x7d, 0x02, 0x63, 0x1d, 0x0e, 0xe5, 0x4d, 0x7d, 0x02, 0x63, 0x1d, 0x38, 0x66, + 0x55, 0x52, 0x07, 0x0d, 0x64, 0x07, 0x10, 0x09, 0x2a, 0xe2, 0x57, 0x52, 0x73, 0x52, 0x79, 0x4b, + 0x10, 0x09, 0x37, 0x77, 0x5a, 0x6d, 0x10, 0x06, 0x2a, 0xe2, 0xc5, 0xa4, 0x4f, 0x01, 0x1f, 0x45, + 0x75, 0x6d, 0x10, 0x08, 0x27, 0x03, 0x0b, 0x0e, 0x2f, 0x04, 0x00, 0x5f, 0x35, 0x65, 0x52, 0x0e, + 0x1c, 0x81, 0x06, 0x5a, 0x69, 0x1e, 0x03, 0x07, 0x63, 0x1d, 0x32, 0x03, 0x00, 0x03, 0x63, 0x52, + 0x65, 0x0e, 0x2f, 0x03, 0x10, 0x06, 0x3d, 0x79, 0x33, 0x1e, 0x6d, 0x50, 0x70, 0x06, 0x5a, 0x10, + 0x09, 0x20, 0x34, 0x6f, 0x6f, 0x6f, 0x6f, 0x3b, 0x48, 0x5f, 0x05, 0x66, 0x61, 0x1d, 0x47, 0x33, + 0x10, 0x07, 0x19, 0x34, 0x82, 0x43, 0x00, 0x74, 0x61, 0x01, 0x29, 0x32, 0x2b, 0x84, 0x04, 0x68, + 0x32, 0x5c, 0x52, 0x62, 0x7b, 0x18, 0x08, 0x40, 0x68, 0x52, 0x22, 0x4c, 0x81, 0x0c, 0x43, 0x10, + 0x0c, 0x2a, 0x03, 0x43, 0x74, 0x61, 0x59, 0x0c, 0x2b, 0x1f, 0x62, 0x51, 0x1c, 0x00, 0x4d, 0x42, + 0x09, 0x0f, 0x41, 0x0c, 0x0c, 0x09, 0x03, 0x4f, 0x42, 0x04, 0x30, 0x0e, 0x08, 0x08, 0x0e, 0x06, + 0x5c, 0x29, 0x6b, 0x5c, 0x04, 0x43, 0x0e, 0x29, 0x32, 0x61, 0x58, 0x0f, 0x40, 0x19, 0x05, 0x2c, + 0x21, 0x87, 0x10, 0x07, 0x2a, 0x0a, 0x5c, 0x00, 0x04, 0x40, 0x19, 0x74, 0x62, 0x02, 0x0e, 0x60, + 0x1d, 0x51, 0x85, 0x00, 0x88, 0x1e, 0x06, 0x4d, 0x30, 0x1d, 0x74, 0x64, 0x01, 0x0d, 0x60, 0x19, + 0x32, 0x5c, 0x00, 0x03, 0x40, 0x10, 0x08, 0x2d, 0x34, 0x22, 0x0f, 0x60, 0x22, 0x63, 0x86, 0x07, + 0x00, 0x38, 0x1d, 0x04, 0x63, 0x00, 0x0c, 0x2b, 0x52, 0x0c, 0x68, 0x4d, 0x18, 0x05, 0x61, 0x4f, + 0x1f, 0x5f, 0x5c, 0x1e, 0x07, 0x4d, 0x20, 0x03, 0x40, 0x82, 0x0c, 0x5c, 0x1e, 0x4d, 0x06, 0x10, + 0x08, 0x27, 0xc3, 0x3a, 0x61, 0x18, 0x51, 0x5c, 0x18, 0x04, 0x85, 0x04, 0x0f, 0x30, 0x1f, 0x45, + 0x83, 0xc3, 0x10, 0x09, 0x42, 0x46, 0x61, 0x1e, 0x0e, 0x5c, 0x20, 0x79, 0x06, 0x63, 0x1f, 0x45, + 0x1c, 0x20, 0x07, 0x63, 0x00, 0x82, 0x24, 0x50, 0x0e, 0x5c, 0x20, 0x46, 0x61, 0x10, 0x04, 0x1b, + 0x71, 0x50, 0x71, 0x50, 0x71, 0x50, 0x71, 0x10, 0x09, 0xf0, 0x69, 0x20, 0x04, 0x4d, 0x50, 0x24, + 0x50, 0x0d, 0x30, 0x3a, 0x8b, 0x5f, 0x83, 0x61, 0x75, 0x61, 0x20, 0x04, 0x4d, 0x1f, 0x45, 0x69, + 0x10, 0x0a, 0x00, 0x2e, 0x67, 0x2f, 0x35, 0x02, 0x0b, 0x19, 0x09, 0x02, 0x4e, 0x0b, 0x6b, 0x05, + 0x10, +}; + +static const uint16_t mf_rlefont_DejaVuSansBold12_aa_glyph_offsets_0[95] = { + 0x0000, 0x0003, 0x000f, 0x0017, 0x003e, 0x0064, 0x00a2, 0x00d5, + 0x00d9, 0x00f5, 0x0113, 0x0129, 0x0132, 0x0136, 0x013d, 0x0142, + 0x0158, 0x017b, 0x0184, 0x01a5, 0x01cd, 0x01eb, 0x0201, 0x0227, + 0x0242, 0x026d, 0x0298, 0x029e, 0x02a3, 0x02c5, 0x02cd, 0x02ec, + 0x0305, 0x034d, 0x0378, 0x0392, 0x03ae, 0x03d5, 0x03de, 0x03e6, + 0x040e, 0x041c, 0x0421, 0x042d, 0x0452, 0x0457, 0x0480, 0x04a6, + 0x04be, 0x04d5, 0x04f3, 0x0511, 0x0536, 0x053d, 0x0557, 0x0583, + 0x05c7, 0x05f9, 0x0617, 0x0634, 0x063b, 0x0653, 0x065a, 0x066b, + 0x0672, 0x067b, 0x069b, 0x06a3, 0x06bc, 0x06c5, 0x06e1, 0x06f0, + 0x0714, 0x0720, 0x0729, 0x0737, 0x0753, 0x0758, 0x076e, 0x0779, + 0x0797, 0x07a1, 0x07a7, 0x07b3, 0x07d5, 0x07e0, 0x07f1, 0x0810, + 0x0843, 0x0866, 0x0890, 0x08a3, 0x08be, 0x08c8, 0x08e1, +}; + +static const struct mf_rlefont_char_range_s mf_rlefont_DejaVuSansBold12_aa_char_ranges[] = { + {32, 95, mf_rlefont_DejaVuSansBold12_aa_glyph_offsets_0, mf_rlefont_DejaVuSansBold12_aa_glyph_data_0}, +}; + +const struct mf_rlefont_s mf_rlefont_DejaVuSansBold12_aa = { + { + "DejaVu Sans Bold 12", + "DejaVuSansBold12_aa", + 14, /* width */ + 13, /* height */ + 4, /* min x advance */ + 14, /* max x advance */ + 1, /* baseline x */ + 10, /* baseline y */ + 14, /* line height */ + 0, /* flags */ + 63, /* fallback character */ + &mf_rlefont_character_width, + &mf_rlefont_render_character, + }, + 4, /* version */ + mf_rlefont_DejaVuSansBold12_aa_dictionary_data, + mf_rlefont_DejaVuSansBold12_aa_dictionary_offsets, + 83, /* rle dict count */ + 114, /* total dict count */ + 1, /* char range count */ + mf_rlefont_DejaVuSansBold12_aa_char_ranges, +}; + +#ifdef MF_INCLUDED_FONTS +/* List entry for searching fonts by name. */ +static const struct mf_font_list_s mf_rlefont_DejaVuSansBold12_aa_listentry = { + MF_INCLUDED_FONTS, + (struct mf_font_s*)&mf_rlefont_DejaVuSansBold12_aa +}; +#undef MF_INCLUDED_FONTS +#define MF_INCLUDED_FONTS (&mf_rlefont_DejaVuSansBold12_aa_listentry) +#endif + + +/* End of automatically generated font definition for DejaVuSansBold12_aa. */ + diff --git a/src/gdisp/fonts/DejaVuSerif.license b/src/gdisp/fonts/DejaVuSerif.license new file mode 100644 index 00000000..710b32c6 --- /dev/null +++ b/src/gdisp/fonts/DejaVuSerif.license @@ -0,0 +1,58 @@ +This package was debianized by Peter Cernak on +Sun, 5 Sep 2004 17:10:26 +0200. + +It was downloaded from http://dejavu.sourceforge.net/ + +Upstream Authors: Stepan Roh (original author), + see /usr/share/doc/ttf-dejavu/AUTHORS for full list + +Copyright: + +Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. + +Bitstream Vera Fonts Copyright +------------------------------ + +Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is +a trademark of Bitstream, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of the fonts accompanying this license ("Fonts") and associated +documentation files (the "Font Software"), to reproduce and distribute the +Font Software, including without limitation the rights to use, copy, merge, +publish, distribute, and/or sell copies of the Font Software, and to permit +persons to whom the Font Software is furnished to do so, subject to the +following conditions: + +The above copyright and trademark notices and this permission notice shall +be included in all copies of one or more of the Font Software typefaces. + +The Font Software may be modified, altered, or added to, and in particular +the designs of glyphs or characters in the Fonts may be modified and +additional glyphs or characters may be added to the Fonts, only if the fonts +are renamed to names not containing either the words "Bitstream" or the word +"Vera". + +This License becomes null and void to the extent applicable to Fonts or Font +Software that has been modified and is distributed under the "Bitstream +Vera" names. + +The Font Software may be sold as part of a larger software package but no +copy of one or more of the Font Software typefaces may be sold by itself. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, +TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME +FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING +ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE +FONT SOFTWARE. + +Except as contained in this notice, the names of Gnome, the Gnome +Foundation, and Bitstream Inc., shall not be used in advertising or +otherwise to promote the sale, use or other dealings in this Font Software +without prior written authorization from the Gnome Foundation or Bitstream +Inc., respectively. For further information, contact: fonts at gnome dot +org. diff --git a/src/gdisp/fonts/DejaVuSerif.ttf b/src/gdisp/fonts/DejaVuSerif.ttf new file mode 100644 index 00000000..0dfeb882 Binary files /dev/null and b/src/gdisp/fonts/DejaVuSerif.ttf differ diff --git a/src/gdisp/fonts/LargeNumbers.c b/src/gdisp/fonts/LargeNumbers.c new file mode 100644 index 00000000..08517248 --- /dev/null +++ b/src/gdisp/fonts/LargeNumbers.c @@ -0,0 +1,127 @@ + + +/* Start of automatically generated font definition for LargeNumbers. */ + +#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_LargeNumbers_dictionary_data[141] = { + 0x82, 0x11, 0x85, 0x11, 0x82, 0x0f, 0x10, 0x82, 0x02, 0x82, 0x10, 0x82, 0x02, 0x82, 0x16, 0x0d, + 0x04, 0x15, 0x81, 0x8c, 0x0b, 0x8c, 0x03, 0x86, 0x11, 0x86, 0x80, 0x14, 0x82, 0x84, 0x0a, 0x1a, + 0x82, 0x08, 0x03, 0x81, 0x89, 0x80, 0x0c, 0x44, 0x10, 0x09, 0x82, 0x81, 0x13, 0x83, 0x13, 0x84, + 0x13, 0x83, 0x13, 0x84, 0x13, 0x83, 0x14, 0x83, 0x13, 0x82, 0x05, 0x82, 0x81, 0x0b, 0x8b, 0x0c, + 0x8a, 0x0f, 0x81, 0x09, 0x8e, 0x04, 0x84, 0x03, 0x82, 0x02, 0x80, 0x8f, 0x08, 0x8f, 0x08, 0x85, + 0x01, 0x81, 0x83, 0x01, 0x0b, 0x1d, 0x14, 0x82, 0x11, 0x40, 0x01, 0x82, 0x81, 0x0c, 0x83, 0x0d, + 0x89, 0x3d, 0x75, 0x84, 0x2c, 0x1f, 0xfd, 0x39, 0x9c, 0x19, 0x67, 0x2a, 0x28, 0x75, 0xc7, 0x2c, + 0x33, 0x83, 0x23, 0x23, 0x23, 0x23, 0x0f, 0x00, 0x2c, 0x85, 0xa2, 0x27, 0xa2, 0x64, 0x00, 0x83, + 0x3c, 0x65, 0x39, 0x23, 0x23, 0x00, 0x2e, 0x25, 0x2c, 0x3d, 0x2a, 0x23, 0x0f, +}; + +static const uint16_t mf_rlefont_LargeNumbers_dictionary_offsets[55] = { + 0x0000, 0x0005, 0x0006, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, + 0x0013, 0x0016, 0x0018, 0x001a, 0x001d, 0x001e, 0x001f, 0x0021, + 0x0022, 0x0024, 0x0025, 0x0027, 0x0029, 0x002b, 0x003a, 0x003c, + 0x0043, 0x0045, 0x0047, 0x0049, 0x004b, 0x0050, 0x0052, 0x0054, + 0x0055, 0x0056, 0x0058, 0x0059, 0x005b, 0x005c, 0x005d, 0x005e, + 0x0061, 0x0065, 0x0068, 0x006e, 0x0070, 0x0072, 0x0077, 0x007e, + 0x0080, 0x0082, 0x0085, 0x0087, 0x0089, 0x008b, 0x008d, +}; + +static const uint8_t mf_rlefont_LargeNumbers_glyph_data_0[630] = { + 0x08, 0x00, 0x10, 0x0b, 0x00, 0x26, 0x45, 0x49, 0x45, 0x3b, 0x7c, 0x49, 0x0f, 0x10, 0x0d, 0x26, + 0x1b, 0x1a, 0x1b, 0x1a, 0x1b, 0x1a, 0x1b, 0x10, 0x14, 0x37, 0x1f, 0x75, 0x19, 0x40, 0x42, 0x37, + 0x34, 0x29, 0x27, 0xd4, 0x75, 0x19, 0x40, 0xec, 0x2a, 0x34, 0x29, 0x37, 0x40, 0x42, 0x10, 0x11, + 0x1e, 0x9c, 0x1f, 0x1c, 0xe7, 0x22, 0x2a, 0xf0, 0x29, 0x25, 0x44, 0x93, 0x2c, 0x9f, 0x90, 0x2c, + 0x9d, 0x19, 0x53, 0x2a, 0x31, 0x36, 0x1d, 0x44, 0x4c, 0x44, 0x4c, 0x31, 0x36, 0x1d, 0x70, 0x4c, + 0xd4, 0x7d, 0x25, 0x87, 0x77, 0x85, 0x64, 0x83, 0xa3, 0x2c, 0x29, 0x25, 0x7c, 0xa3, 0x19, 0x9c, + 0x1f, 0x1c, 0xf7, 0x1f, 0x10, 0x18, 0x00, 0x1c, 0x31, 0x27, 0x8a, 0x31, 0x87, 0x9c, 0x84, 0x73, + 0x87, 0x92, 0xa4, 0xa7, 0x87, 0x8a, 0xa4, 0x67, 0x65, 0x2c, 0x28, 0x75, 0x2c, 0xec, 0x67, 0x25, + 0x73, 0x77, 0x27, 0x21, 0x9c, 0x80, 0x2e, 0x67, 0x21, 0x37, 0x6b, 0x7f, 0x25, 0x67, 0x75, 0x2c, + 0xf4, 0x8b, 0x8b, 0x64, 0x65, 0x75, 0x27, 0x87, 0x92, 0x92, 0x64, 0x85, 0x73, 0x87, 0x9c, 0x4a, + 0x93, 0xa4, 0x85, 0x31, 0x10, 0x15, 0xc4, 0x26, 0x4c, 0x31, 0x36, 0x1d, 0x29, 0xc4, 0x2c, 0x85, + 0x85, 0x2c, 0x23, 0x23, 0xf7, 0x3a, 0x82, 0x22, 0x75, 0x85, 0x21, 0xab, 0x8b, 0x31, 0x82, 0x92, + 0x4a, 0xb5, 0x83, 0x27, 0x36, 0x21, 0x2c, 0xc5, 0x82, 0x2c, 0xf7, 0x31, 0x25, 0x29, 0xa3, 0x30, + 0x84, 0xa4, 0xa3, 0x82, 0x10, 0x07, 0x26, 0x41, 0x41, 0x41, 0x10, 0x0b, 0xf4, 0x26, 0x23, 0x39, + 0x23, 0x49, 0x49, 0x45, 0x41, 0x4d, 0x41, 0x0f, 0x41, 0x0f, 0x10, 0x0b, 0x26, 0x0f, 0x41, 0x0f, + 0x41, 0x4d, 0x41, 0x45, 0x49, 0x49, 0x39, 0x23, 0x3a, 0x7c, 0x10, 0x0d, 0x38, 0xf7, 0x1f, 0x3a, + 0xc6, 0xa7, 0x27, 0x64, 0x5f, 0x4c, 0x44, 0x3a, 0xa2, 0x22, 0x2a, 0xf0, 0x5f, 0x4c, 0xc6, 0xa7, + 0x19, 0x9c, 0x1f, 0x10, 0x14, 0xfc, 0x3a, 0x3b, 0x41, 0x41, 0x41, 0x84, 0x30, 0x30, 0x30, 0x1d, + 0xa0, 0x39, 0x41, 0x41, 0x10, 0x09, 0x2b, 0x1b, 0x45, 0x39, 0x39, 0x23, 0x10, 0x0a, 0x38, 0x3b, + 0x3b, 0x3b, 0x22, 0x22, 0x22, 0x10, 0x09, 0x2b, 0x1b, 0x45, 0x10, 0x09, 0x00, 0x27, 0x41, 0x1f, + 0x41, 0x1f, 0x41, 0x1f, 0x41, 0x1f, 0x41, 0x1f, 0x41, 0x1f, 0x41, 0x10, 0x11, 0x38, 0xc3, 0x19, + 0x44, 0x19, 0x29, 0x1d, 0x48, 0x43, 0xe5, 0xa2, 0x46, 0x3d, 0x46, 0x3d, 0x46, 0x3d, 0x46, 0x3d, + 0x37, 0x48, 0x43, 0xc5, 0x3f, 0x1d, 0x44, 0x3a, 0xc3, 0x10, 0x11, 0xf4, 0x26, 0x4c, 0x31, 0x4c, + 0x74, 0xa3, 0x19, 0x77, 0x45, 0x49, 0x45, 0x00, 0x19, 0x29, 0x43, 0xc3, 0x4c, 0x3d, 0x29, 0x10, + 0x11, 0x37, 0x22, 0x3e, 0x21, 0x3f, 0x43, 0x00, 0x31, 0x37, 0x85, 0x7c, 0x49, 0x0f, 0x19, 0x31, + 0x1d, 0x64, 0x18, 0x18, 0x18, 0x29, 0x37, 0x20, 0x10, 0x11, 0x37, 0x22, 0x3e, 0x21, 0x3f, 0x3d, + 0x25, 0x88, 0x7c, 0x23, 0x4d, 0x4b, 0x2a, 0x21, 0x2a, 0x74, 0xa3, 0x1d, 0x44, 0x4d, 0x23, 0x23, + 0x4d, 0x84, 0x64, 0x4a, 0x2f, 0x24, 0x10, 0x11, 0x84, 0x1c, 0x31, 0x3a, 0x82, 0x22, 0x22, 0x3e, + 0x31, 0x4c, 0x7c, 0xa2, 0x1d, 0x52, 0x4c, 0xf0, 0x77, 0x85, 0x2c, 0x7c, 0x27, 0x64, 0xa7, 0x4c, + 0x48, 0x43, 0xa4, 0x8b, 0x30, 0x30, 0x30, 0x27, 0x2c, 0x23, 0x4d, 0x10, 0x11, 0x25, 0x22, 0x3f, + 0x2a, 0xfe, 0x29, 0x25, 0x7c, 0x49, 0x3c, 0x4c, 0x21, 0x4c, 0x44, 0x4c, 0xc6, 0x7c, 0x45, 0x84, + 0x64, 0x4a, 0x2f, 0x24, 0x10, 0x11, 0x1d, 0x22, 0x19, 0xc3, 0x3f, 0xe5, 0x2c, 0x87, 0x88, 0x2c, + 0x23, 0x39, 0xf1, 0x3f, 0x43, 0x29, 0x25, 0xc2, 0x31, 0x46, 0xf7, 0x2c, 0xe5, 0x7c, 0x37, 0x8b, + 0x7c, 0x84, 0x64, 0x87, 0x3f, 0x2a, 0xf0, 0x83, 0x19, 0x82, 0x10, 0x11, 0x26, 0x29, 0x37, 0x20, + 0x4b, 0x2d, 0x2d, 0x3d, 0x10, 0x11, 0x37, 0x22, 0x2a, 0xf0, 0x29, 0x27, 0x7c, 0x29, 0x84, 0x31, + 0x31, 0x46, 0xe7, 0x2c, 0xa5, 0x93, 0x2c, 0xc3, 0x4c, 0x1b, 0xa3, 0x1d, 0x29, 0x43, 0xe5, 0xa2, + 0x46, 0xf7, 0x2c, 0x85, 0xa2, 0x2c, 0x87, 0xa3, 0x27, 0x44, 0x3f, 0x1d, 0x44, 0x10, 0x11, 0x38, + 0xc3, 0x19, 0x82, 0x4c, 0x44, 0x4c, 0xa2, 0x7c, 0x84, 0x64, 0x87, 0xa0, 0x46, 0xf7, 0x2c, 0xe5, + 0x7c, 0x84, 0x31, 0x31, 0x37, 0x29, 0x4c, 0x29, 0x87, 0x2c, 0x7b, 0x23, 0x39, 0x2a, 0xf5, 0x31, + 0x37, 0x47, 0x3f, 0x3e, 0x21, 0x10, +}; + +static const uint16_t mf_rlefont_LargeNumbers_glyph_offsets_0[26] = { + 0x0000, 0x0003, 0x000e, 0x0018, 0x002f, 0x0065, 0x00a5, 0x00d5, + 0x00db, 0x00eb, 0x00fb, 0x0114, 0x0125, 0x012d, 0x0136, 0x013b, + 0x014c, 0x016a, 0x0180, 0x0199, 0x01b7, 0x01dc, 0x01f5, 0x021b, + 0x0225, 0x024e, +}; + +static const struct mf_rlefont_char_range_s mf_rlefont_LargeNumbers_char_ranges[] = { + {32, 26, mf_rlefont_LargeNumbers_glyph_offsets_0, mf_rlefont_LargeNumbers_glyph_data_0}, +}; + +const struct mf_rlefont_s mf_rlefont_LargeNumbers = { + { + "DejaVu Sans Bold 24", + "LargeNumbers", + 24, /* width */ + 23, /* height */ + 7, /* min x advance */ + 24, /* max x advance */ + 0, /* baseline x */ + 19, /* baseline y */ + 28, /* line height */ + 2, /* flags */ + 32, /* fallback character */ + &mf_rlefont_character_width, + &mf_rlefont_render_character, + }, + 4, /* version */ + mf_rlefont_LargeNumbers_dictionary_data, + mf_rlefont_LargeNumbers_dictionary_offsets, + 40, /* rle dict count */ + 54, /* total dict count */ + 1, /* char range count */ + mf_rlefont_LargeNumbers_char_ranges, +}; + +#ifdef MF_INCLUDED_FONTS +/* List entry for searching fonts by name. */ +static const struct mf_font_list_s mf_rlefont_LargeNumbers_listentry = { + MF_INCLUDED_FONTS, + (struct mf_font_s*)&mf_rlefont_LargeNumbers +}; +#undef MF_INCLUDED_FONTS +#define MF_INCLUDED_FONTS (&mf_rlefont_LargeNumbers_listentry) +#endif + + +/* End of automatically generated font definition for LargeNumbers. */ + diff --git a/src/gdisp/fonts/build_fonts.sh b/src/gdisp/fonts/build_fonts.sh new file mode 100644 index 00000000..8b434e6e --- /dev/null +++ b/src/gdisp/fonts/build_fonts.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +set -x -e + +# Path to the mcufont encoder program +MCUFONT=mcufont + +# Character ranges to include in the fonts. +# Default: ASCII only +CHARS=32-127 + +# Number of iterations in optimization +# Higher numbers compress better +ITERS=25 + +function build { + infile=`basename $1` + outfile=$2 + fmt=$3 + size=$4 + bw=$5 + ext="${infile##*.}" + noext="${infile%.*}" + if [ $ext = 'ttf' ]; then + dat=$noext$size$bw.dat + $MCUFONT import_ttf $1 $size $bw + else + dat=$noext.dat + $MCUFONT import_bdf $1 + fi + + $MCUFONT filter $dat $CHARS + + if [ $outfile = 'LargeNumbers' ]; then + $MCUFONT filter $dat 0x20-0x39 + fi + + if [ $fmt = 'rlefont' ]; then + $MCUFONT rlefont_optimize $dat $ITERS + $MCUFONT rlefont_export $dat $outfile.c + else + $MCUFONT bwfont_export $dat $outfile.c + fi +} + +# Commands are of form: build [size] [bw] +# If bw is not given, builds an antialiased font. + +rm -f *.c +build DejaVuSans.ttf DejaVuSans10 bwfont 10 bw +build DejaVuSans.ttf DejaVuSans12 bwfont 12 bw +build DejaVuSans.ttf DejaVuSans16 rlefont 16 bw +build DejaVuSans.ttf DejaVuSans24 rlefont 24 bw +build DejaVuSans.ttf DejaVuSans32 rlefont 32 bw +build DejaVuSans.ttf DejaVuSans12_aa rlefont 12 +build DejaVuSans.ttf DejaVuSans16_aa rlefont 16 +build DejaVuSans.ttf DejaVuSans24_aa rlefont 24 +build DejaVuSans.ttf DejaVuSans32_aa rlefont 32 +build DejaVuSans-Bold.ttf DejaVuSansBold12 bwfont 12 bw +build DejaVuSans-Bold.ttf DejaVuSansBold12_aa rlefont 12 +build DejaVuSans-Bold.ttf LargeNumbers rlefont 24 bw +build fixed_10x20.bdf fixed_10x20 bwfont +build fixed_7x14.bdf fixed_7x14 bwfont +build fixed_5x8.bdf fixed_5x8 bwfont + +echo > fonts.h +echo '#include ' >> fonts.h +for file in *.c; do + echo >> fonts.h + noext="${file%.*}" + upper=${noext^^} + defname='GDISP_INCLUDE_FONT_'$upper + echo '#if defined('$defname') && '$defname >> fonts.h + echo '#include "'$file'"' >> fonts.h + echo '#endif' >> fonts.h +done + diff --git a/src/gdisp/fonts/fixed_10x20.bdf b/src/gdisp/fonts/fixed_10x20.bdf new file mode 100644 index 00000000..20134133 --- /dev/null +++ b/src/gdisp/fonts/fixed_10x20.bdf @@ -0,0 +1,6279 @@ +STARTFONT 2.1 +FONT -Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO8859-15 +SIZE 20 75 75 +FONTBOUNDINGBOX 10 20 0 -4 + +STARTPROPERTIES 24 +FONTNAME_REGISTRY "" +FOUNDRY "Misc" +FAMILY_NAME "Fixed" +WEIGHT_NAME "Medium" +SLANT "R" +SETWIDTH_NAME "Normal" +ADD_STYLE_NAME "" +PIXEL_SIZE 20 +POINT_SIZE 200 +RESOLUTION_X 75 +RESOLUTION_Y 75 +SPACING "C" +AVERAGE_WIDTH 100 +CHARSET_REGISTRY "ISO8859" +CHARSET_ENCODING "15" +X_HEIGHT 8 +CAP_HEIGHT 13 +COPYRIGHT "Public domain font. Share and enjoy." +_GBDFED_INFO "Edited with gbdfed 1.3." +WEIGHT 10 +QUAD_WIDTH 10 +DEFAULT_CHAR 0 +FONT_DESCENT 4 +FONT_ASCENT 16 +ENDPROPERTIES + +CHARS 223 + +STARTCHAR defaultchar +ENCODING 0 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +7380 +4080 +4080 +0000 +0000 +4080 +4080 +4080 +0000 +0000 +4080 +4080 +7380 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR uni25C6 +ENCODING 1 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0C00 +1E00 +3F00 +7F80 +7F80 +3F00 +1E00 +0C00 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR shade +ENCODING 2 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +5540 +AA80 +5540 +AA80 +5540 +AA80 +5540 +AA80 +5540 +AA80 +5540 +AA80 +5540 +AA80 +5540 +AA80 +5540 +AA80 +5540 +AA80 +ENDCHAR + +STARTCHAR uni2409 +ENCODING 3 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +6600 +6600 +6600 +7E00 +6600 +6600 +6600 +0000 +1F80 +0600 +0600 +0600 +0600 +0600 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR uni240C +ENCODING 4 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +7C00 +6000 +6000 +7800 +6000 +6000 +6000 +0F80 +0C00 +0C00 +0F00 +0C00 +0C00 +0C00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR uni240D +ENCODING 5 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +3C00 +6600 +6000 +6000 +6600 +3C00 +0000 +1F00 +1980 +1980 +1F00 +1E00 +1B00 +1980 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR uni240A +ENCODING 6 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +3000 +3000 +3000 +3000 +3000 +3E00 +0000 +0F80 +0C00 +0C00 +0F00 +0C00 +0C00 +0C00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR degree +ENCODING 7 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0C00 +1E00 +3300 +3300 +1E00 +0C00 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR plusminus +ENCODING 8 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0C00 +0C00 +7F80 +0C00 +0C00 +0000 +7F80 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR uni2424 +ENCODING 9 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +6600 +7600 +7E00 +7E00 +6E00 +6600 +0000 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR uni240B +ENCODING 10 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +6600 +6600 +6600 +3C00 +3C00 +1800 +1800 +0000 +1F80 +0600 +0600 +0600 +0600 +0600 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR SF040000 +ENCODING 11 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +F800 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR SF030000 +ENCODING 12 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +F800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +ENDCHAR + +STARTCHAR SF010000 +ENCODING 13 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0FC0 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +ENDCHAR + +STARTCHAR SF020000 +ENCODING 14 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0FC0 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR SF050000 +ENCODING 15 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +FFC0 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +ENDCHAR + +STARTCHAR uni23BA +ENCODING 16 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +FFC0 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR uni23BB +ENCODING 17 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +FFC0 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR SF100000 +ENCODING 18 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +FFC0 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR uni23BC +ENCODING 19 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +FFC0 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR uni23BD +ENCODING 20 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +FFC0 +ENDCHAR + +STARTCHAR SF080000 +ENCODING 21 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0FC0 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +ENDCHAR + +STARTCHAR SF090000 +ENCODING 22 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +F800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +ENDCHAR + +STARTCHAR SF070000 +ENCODING 23 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +FFC0 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR SF060000 +ENCODING 24 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +FFC0 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +ENDCHAR + +STARTCHAR SF110000 +ENCODING 25 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +0800 +ENDCHAR + +STARTCHAR lessequal +ENCODING 26 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0380 +0E00 +3800 +E000 +3800 +0E00 +0380 +0000 +0000 +FF80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR greaterequal +ENCODING 27 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +E000 +3800 +0E00 +0380 +0E00 +3800 +E000 +0000 +0000 +FF80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR pi +ENCODING 28 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +7F80 +3300 +3300 +3300 +3300 +3300 +3300 +3300 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR notequal +ENCODING 29 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0300 +0300 +0600 +7F80 +0C00 +0C00 +7F80 +1800 +3000 +3000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR sterling +ENCODING 30 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0F00 +1980 +1980 +1800 +1800 +7E00 +1800 +1800 +1800 +7C00 +56C0 +7380 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR periodcentered +ENCODING 31 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0E00 +0E00 +0E00 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR space +ENCODING 32 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR exclam +ENCODING 33 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0000 +0C00 +0C00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR quotedbl +ENCODING 34 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +3300 +3300 +3300 +1200 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR numbersign +ENCODING 35 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0D80 +0D80 +0D80 +3FC0 +1B00 +1B00 +1B00 +7F80 +3600 +3600 +3600 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR dollar +ENCODING 36 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0C00 +3F00 +6D80 +6C00 +6C00 +6C00 +3F00 +0D80 +0D80 +0D80 +6D80 +3F00 +0C00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR percent +ENCODING 37 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +3980 +6D80 +6F00 +3B00 +0600 +0600 +0C00 +0C00 +1B80 +1EC0 +36C0 +3380 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR ampersand +ENCODING 38 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1C00 +3600 +3600 +3600 +3C00 +1800 +3800 +6C00 +66C0 +6380 +6300 +7780 +3CC0 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR quotesingle +ENCODING 39 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0C00 +0C00 +0C00 +0C00 +0800 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR parenleft +ENCODING 40 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0300 +0600 +0C00 +0C00 +1800 +1800 +1800 +1800 +1800 +0C00 +0C00 +0600 +0300 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR parenright +ENCODING 41 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +3000 +1800 +0C00 +0C00 +0600 +0600 +0600 +0600 +0600 +0C00 +0C00 +1800 +3000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR asterisk +ENCODING 42 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +3300 +3300 +1E00 +7F80 +1E00 +3300 +3300 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR plus +ENCODING 43 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0C00 +0C00 +0C00 +7F80 +0C00 +0C00 +0C00 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR comma +ENCODING 44 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0E00 +0E00 +1C00 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR hyphen +ENCODING 45 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +7F80 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR period +ENCODING 46 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0E00 +0E00 +0E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR slash +ENCODING 47 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0180 +0180 +0300 +0300 +0600 +0600 +0C00 +0C00 +1800 +1800 +3000 +3000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR zero +ENCODING 48 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0C00 +1E00 +3300 +3300 +6180 +6180 +6180 +6180 +6180 +3300 +3300 +1E00 +0C00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR one +ENCODING 49 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0C00 +1C00 +3C00 +6C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +7F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR two +ENCODING 50 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1E00 +3300 +6180 +6180 +0180 +0180 +0300 +0E00 +1800 +3000 +6000 +6000 +7F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR three +ENCODING 51 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1E00 +3300 +6180 +6180 +0180 +0300 +0E00 +0300 +0180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR four +ENCODING 52 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0100 +0300 +0700 +0F00 +1B00 +3300 +6300 +6300 +7F80 +0300 +0300 +0300 +0300 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR five +ENCODING 53 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +7F80 +6000 +6000 +6000 +6000 +6E00 +7300 +0180 +0180 +0180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR six +ENCODING 54 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1E00 +3300 +6100 +6000 +6000 +6E00 +7300 +6180 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR seven +ENCODING 55 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +7F80 +0180 +0180 +0300 +0300 +0600 +0600 +0C00 +0C00 +1800 +1800 +3000 +3000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR eight +ENCODING 56 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1E00 +3300 +6180 +6180 +6180 +3300 +1E00 +3300 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR nine +ENCODING 57 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1E00 +3300 +6180 +6180 +6180 +6180 +3380 +1D80 +0180 +0180 +2180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR colon +ENCODING 58 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0E00 +0E00 +0000 +0000 +0000 +0000 +0E00 +0E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR semicolon +ENCODING 59 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0E00 +0E00 +0000 +0000 +0000 +0000 +0E00 +0E00 +1C00 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR less +ENCODING 60 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0100 +0300 +0600 +0C00 +1800 +3000 +6000 +3000 +1800 +0C00 +0600 +0300 +0100 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR equal +ENCODING 61 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +7F80 +0000 +0000 +0000 +0000 +7F80 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR greater +ENCODING 62 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +2000 +3000 +1800 +0C00 +0600 +0300 +0180 +0300 +0600 +0C00 +1800 +3000 +2000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR question +ENCODING 63 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1E00 +3300 +6180 +6180 +6180 +0300 +0600 +0C00 +0C00 +0C00 +0000 +0C00 +0C00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR at +ENCODING 64 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1E00 +3300 +6180 +6780 +6F80 +6D80 +6D80 +6D80 +6F00 +6600 +6000 +3180 +1F00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR A +ENCODING 65 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0C00 +1E00 +3300 +3300 +6180 +6180 +6180 +7F80 +6180 +6180 +6180 +6180 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR B +ENCODING 66 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +7C00 +6600 +6300 +6300 +6300 +6600 +7E00 +6300 +6180 +6180 +6180 +6300 +7E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR C +ENCODING 67 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1E00 +3300 +6180 +6000 +6000 +6000 +6000 +6000 +6000 +6000 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR D +ENCODING 68 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +7E00 +6300 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6300 +7E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR E +ENCODING 69 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +7F80 +6000 +6000 +6000 +6000 +6000 +7E00 +6000 +6000 +6000 +6000 +6000 +7F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR F +ENCODING 70 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +7F80 +6000 +6000 +6000 +6000 +6000 +7E00 +6000 +6000 +6000 +6000 +6000 +6000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR G +ENCODING 71 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1E00 +3300 +6180 +6000 +6000 +6000 +6780 +6180 +6180 +6180 +6180 +3380 +1E80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR H +ENCODING 72 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +6180 +6180 +6180 +6180 +6180 +6180 +7F80 +6180 +6180 +6180 +6180 +6180 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR I +ENCODING 73 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +7F80 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +7F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR J +ENCODING 74 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0FC0 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +6300 +6300 +3600 +1C00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR K +ENCODING 75 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +6180 +6180 +6300 +6300 +6600 +6600 +7C00 +6600 +6600 +6300 +6300 +6180 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR L +ENCODING 76 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +6000 +6000 +6000 +6000 +6000 +6000 +6000 +6000 +6000 +6000 +6000 +6000 +7F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR M +ENCODING 77 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +6180 +6180 +7380 +7380 +7F80 +6D80 +6D80 +6D80 +6D80 +6180 +6180 +6180 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR N +ENCODING 78 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +6180 +7180 +7180 +7980 +7980 +6D80 +6D80 +6780 +6780 +6380 +6380 +6180 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR O +ENCODING 79 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1E00 +3300 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR P +ENCODING 80 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +7E00 +6300 +6180 +6180 +6180 +6180 +6300 +7E00 +6000 +6000 +6000 +6000 +6000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Q +ENCODING 81 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1E00 +3300 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6D80 +6780 +3300 +1F00 +0180 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR R +ENCODING 82 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +7E00 +6300 +6180 +6180 +6180 +6180 +6300 +7E00 +6600 +6300 +6300 +6180 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR S +ENCODING 83 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1E00 +3300 +6180 +6000 +6000 +3000 +1E00 +0300 +0180 +0180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR T +ENCODING 84 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +7F80 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR U +ENCODING 85 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR V +ENCODING 86 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +6180 +6180 +6180 +6180 +3300 +3300 +3300 +1E00 +1E00 +1E00 +0C00 +0C00 +0C00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR W +ENCODING 87 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +6180 +6180 +6180 +6180 +6180 +6D80 +6D80 +6D80 +6D80 +7380 +7380 +6180 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR X +ENCODING 88 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +6180 +6180 +3300 +3300 +1E00 +1E00 +0C00 +1E00 +1E00 +3300 +3300 +6180 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Y +ENCODING 89 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +6180 +6180 +3300 +3300 +1E00 +1E00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Z +ENCODING 90 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +7F80 +0180 +0180 +0300 +0600 +0600 +0C00 +1800 +1800 +3000 +6000 +6000 +7F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR bracketleft +ENCODING 91 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +3F00 +3000 +3000 +3000 +3000 +3000 +3000 +3000 +3000 +3000 +3000 +3000 +3F00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR backslash +ENCODING 92 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +3000 +3000 +1800 +1800 +0C00 +0C00 +0600 +0600 +0300 +0300 +0180 +0180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR bracketright +ENCODING 93 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +3F00 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +3F00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR asciicircum +ENCODING 94 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0C00 +1E00 +3300 +6180 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR underscore +ENCODING 95 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +7FC0 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR grave +ENCODING 96 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1800 +0C00 +0600 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR a +ENCODING 97 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +1F00 +3180 +0180 +3F80 +6180 +6180 +6180 +3E80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR b +ENCODING 98 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +6000 +6000 +6000 +6000 +6000 +6E00 +7300 +6180 +6180 +6180 +6180 +7300 +6E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR c +ENCODING 99 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +1F00 +3180 +6000 +6000 +6000 +6000 +3180 +1F00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR d +ENCODING 100 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0180 +0180 +0180 +0180 +0180 +1D80 +3380 +6180 +6180 +6180 +6180 +3380 +1D80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR e +ENCODING 101 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +1E00 +3300 +6180 +7F80 +6000 +6000 +3180 +1F00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR f +ENCODING 102 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0F00 +1980 +1980 +1800 +1800 +7E00 +1800 +1800 +1800 +1800 +1800 +1800 +1800 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR g +ENCODING 103 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +3E80 +6380 +6300 +6300 +6300 +3E00 +6000 +3F00 +6180 +6180 +6180 +3F00 +ENDCHAR + +STARTCHAR h +ENCODING 104 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +6000 +6000 +6000 +6000 +6000 +6E00 +7300 +6180 +6180 +6180 +6180 +6180 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR i +ENCODING 105 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0C00 +0C00 +0000 +3C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +7F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR j +ENCODING 106 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0180 +0180 +0000 +0780 +0180 +0180 +0180 +0180 +0180 +0180 +0180 +3180 +3180 +3180 +1F00 +ENDCHAR + +STARTCHAR k +ENCODING 107 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +6000 +6000 +6000 +6000 +6000 +6300 +6600 +6C00 +7800 +7C00 +6600 +6300 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR l +ENCODING 108 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +3C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +7F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR m +ENCODING 109 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +5B00 +7F80 +6D80 +6D80 +6D80 +6D80 +6D80 +6D80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR n +ENCODING 110 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +6E00 +7300 +6180 +6180 +6180 +6180 +6180 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR o +ENCODING 111 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +1E00 +3300 +6180 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR p +ENCODING 112 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +6E00 +7300 +6180 +6180 +6180 +6180 +7300 +6E00 +6000 +6000 +6000 +6000 +ENDCHAR + +STARTCHAR q +ENCODING 113 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +1D80 +3380 +6180 +6180 +6180 +6180 +3380 +1D80 +0180 +0180 +0180 +0180 +ENDCHAR + +STARTCHAR r +ENCODING 114 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +6F00 +3980 +3000 +3000 +3000 +3000 +3000 +3000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR s +ENCODING 115 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +3F00 +6180 +6000 +3F00 +0180 +0180 +6180 +3F00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR t +ENCODING 116 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +1800 +1800 +1800 +7E00 +1800 +1800 +1800 +1800 +1800 +1980 +0F00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR u +ENCODING 117 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +6180 +6180 +6180 +6180 +6180 +6180 +3380 +1D80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR v +ENCODING 118 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +6180 +6180 +3300 +3300 +1E00 +1E00 +0C00 +0C00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR w +ENCODING 119 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +6180 +6180 +6180 +6D80 +6D80 +6D80 +7F80 +3300 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR x +ENCODING 120 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +6180 +3300 +1E00 +0C00 +0C00 +1E00 +3300 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR y +ENCODING 121 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +6180 +6180 +6180 +6180 +6180 +6180 +3380 +1D80 +0180 +6180 +3300 +1E00 +ENDCHAR + +STARTCHAR z +ENCODING 122 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +3F80 +0180 +0300 +0600 +0C00 +1800 +3000 +3F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR braceleft +ENCODING 123 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0780 +0C00 +0C00 +0C00 +0C00 +0C00 +7800 +0C00 +0C00 +0C00 +0C00 +0C00 +0780 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR bar +ENCODING 124 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR braceright +ENCODING 125 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +7800 +0C00 +0C00 +0C00 +0C00 +0C00 +0780 +0C00 +0C00 +0C00 +0C00 +0C00 +7800 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR asciitilde +ENCODING 126 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +3980 +6D80 +6700 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR space +ENCODING 160 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR exclamdown +ENCODING 161 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0C00 +0C00 +0000 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR cent +ENCODING 162 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0C00 +0C00 +1E00 +3300 +6100 +6000 +6000 +6100 +3300 +1E00 +0C00 +0C00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR sterling +ENCODING 163 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0F00 +1980 +1980 +1800 +1800 +7E00 +1800 +1800 +1800 +7C00 +56C0 +7380 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Euro +ENCODING 164 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0F00 +1980 +3000 +3000 +7F00 +3000 +7E00 +3000 +3000 +1980 +0F00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR yen +ENCODING 165 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +4080 +6180 +3300 +1E00 +3F00 +0C00 +3F00 +0C00 +0C00 +0C00 +0C00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Scaron +ENCODING 166 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +3300 +1E00 +0C00 +0000 +1E00 +3300 +6180 +6000 +3000 +1E00 +0300 +0180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR section +ENCODING 167 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1E00 +3300 +6300 +3000 +3C00 +6600 +3300 +1980 +0F00 +0300 +3180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR scaron +ENCODING 168 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +3300 +1E00 +0C00 +0000 +3F00 +6180 +6000 +3F00 +0180 +0180 +6180 +3F00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR copyright +ENCODING 169 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +1E00 +3300 +6180 +5E80 +5280 +5080 +5280 +5E80 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR ordfeminine +ENCODING 170 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1F00 +2180 +0180 +3F80 +6180 +6180 +3E80 +0000 +7F80 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR guillemotleft +ENCODING 171 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0480 +0D80 +1B00 +3600 +6C00 +D800 +6C00 +3600 +1B00 +0D80 +0480 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR logicalnot +ENCODING 172 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +7F80 +7F80 +0180 +0180 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR hyphen +ENCODING 173 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +3F00 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR registered +ENCODING 174 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +1E00 +3300 +6180 +5E80 +5280 +5E80 +5480 +5680 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR macron +ENCODING 175 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +7F80 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR degree +ENCODING 176 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0C00 +1E00 +3300 +3300 +1E00 +0C00 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR plusminus +ENCODING 177 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0C00 +0C00 +7F80 +0C00 +0C00 +0000 +7F80 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR twosuperior +ENCODING 178 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1C00 +3600 +0600 +0C00 +1800 +3000 +3E00 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR threesuperior +ENCODING 179 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1C00 +3600 +0600 +0C00 +0600 +3600 +1C00 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Zcaron +ENCODING 180 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +3300 +1E00 +0C00 +0000 +7F80 +0180 +0300 +0600 +0600 +0C00 +1800 +1800 +3000 +6000 +7F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR mu +ENCODING 181 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +6300 +6300 +6300 +6300 +6300 +7700 +7D00 +6000 +6000 +6000 +0000 +ENDCHAR + +STARTCHAR paragraph +ENCODING 182 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +3F80 +7F80 +7D80 +7D80 +7D80 +3D80 +0D80 +0D80 +0D80 +0D80 +0D80 +0D80 +0D80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR periodcentered +ENCODING 183 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0E00 +0E00 +0E00 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR zcaron +ENCODING 184 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +3300 +1E00 +0C00 +0000 +3F80 +0180 +0300 +0600 +0C00 +1800 +3000 +3F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR onesuperior +ENCODING 185 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1800 +3800 +1800 +1800 +1800 +1800 +3C00 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR ordmasculine +ENCODING 186 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1C00 +3600 +6300 +6300 +6300 +3600 +1C00 +0000 +7F00 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR guillemotright +ENCODING 187 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +4800 +6C00 +3600 +1B00 +0D80 +06C0 +0D80 +1B00 +3600 +6C00 +4800 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR OE +ENCODING 188 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1F80 +3600 +6600 +6600 +6600 +6600 +6780 +6600 +6600 +6600 +6600 +3600 +1F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR oe +ENCODING 189 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +3F00 +6D80 +6D80 +6F80 +6C00 +6C00 +6D80 +3F00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Ydieresis +ENCODING 190 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +3300 +3300 +0000 +6180 +6180 +3300 +3300 +1E00 +1E00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR questiondown +ENCODING 191 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0C00 +0C00 +0000 +0C00 +0C00 +0C00 +1800 +3000 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Agrave +ENCODING 192 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +3000 +1800 +0C00 +0000 +0C00 +1E00 +3300 +6180 +6180 +6180 +7F80 +6180 +6180 +6180 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Aacute +ENCODING 193 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0300 +0600 +0C00 +0000 +0C00 +1E00 +3300 +6180 +6180 +6180 +7F80 +6180 +6180 +6180 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Acircumflex +ENCODING 194 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0C00 +1E00 +3300 +0000 +0C00 +1E00 +3300 +6180 +6180 +6180 +7F80 +6180 +6180 +6180 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Atilde +ENCODING 195 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +1900 +3F00 +2600 +0000 +0C00 +1E00 +3300 +6180 +6180 +6180 +7F80 +6180 +6180 +6180 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Adieresis +ENCODING 196 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +3300 +3300 +0000 +0C00 +1E00 +3300 +3300 +6180 +6180 +6180 +7F80 +6180 +6180 +6180 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Aring +ENCODING 197 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +1E00 +3300 +3300 +1E00 +0000 +0C00 +1E00 +3300 +6180 +6180 +6180 +7F80 +6180 +6180 +6180 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR AE +ENCODING 198 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0F80 +1E00 +3600 +3600 +6600 +6600 +7F80 +6600 +6600 +6600 +6600 +6600 +6780 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Ccedilla +ENCODING 199 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1E00 +3300 +6180 +6000 +6000 +6000 +6000 +6000 +6000 +6000 +6180 +3300 +1E00 +0C00 +0600 +3600 +1C00 +ENDCHAR + +STARTCHAR Egrave +ENCODING 200 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +3000 +1800 +0C00 +0000 +7F80 +6000 +6000 +6000 +6000 +7E00 +6000 +6000 +6000 +6000 +7F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Eacute +ENCODING 201 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0600 +0C00 +1800 +0000 +7F80 +6000 +6000 +6000 +6000 +7E00 +6000 +6000 +6000 +6000 +7F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Ecircumflex +ENCODING 202 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0C00 +1E00 +3300 +0000 +7F80 +6000 +6000 +6000 +6000 +7E00 +6000 +6000 +6000 +6000 +7F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Edieresis +ENCODING 203 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +3300 +3300 +0000 +0000 +7F80 +6000 +6000 +6000 +6000 +7E00 +6000 +6000 +6000 +6000 +7F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Igrave +ENCODING 204 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +1800 +0C00 +0600 +0000 +3F00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +3F00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Iacute +ENCODING 205 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0600 +0C00 +1800 +0000 +3F00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +3F00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Icircumflex +ENCODING 206 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0C00 +1E00 +3300 +0000 +3F00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +3F00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Idieresis +ENCODING 207 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +3300 +3300 +0000 +3F00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +3F00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Eth +ENCODING 208 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +7E00 +6300 +6180 +6180 +6180 +6180 +F980 +6180 +6180 +6180 +6180 +6300 +7E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Ntilde +ENCODING 209 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +1900 +3F00 +2600 +0000 +6180 +7180 +7980 +7980 +6D80 +6D80 +6780 +6780 +6380 +6180 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Ograve +ENCODING 210 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +1800 +0C00 +0600 +0000 +1E00 +3300 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Oacute +ENCODING 211 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0600 +0C00 +1800 +0000 +1E00 +3300 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Ocircumflex +ENCODING 212 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0C00 +1E00 +3300 +0000 +1E00 +3300 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Otilde +ENCODING 213 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +1900 +3F00 +2600 +0000 +1E00 +3300 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Odieresis +ENCODING 214 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +3300 +3300 +0000 +1E00 +3300 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR multiply +ENCODING 215 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +4100 +6300 +3600 +1C00 +1C00 +3600 +6300 +4100 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Oslash +ENCODING 216 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0080 +1F00 +3300 +6380 +6380 +6580 +6580 +6580 +6980 +6980 +6980 +7180 +3300 +3E00 +4000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Ugrave +ENCODING 217 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +1800 +0C00 +0600 +0000 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Uacute +ENCODING 218 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0600 +0C00 +1800 +0000 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Ucircumflex +ENCODING 219 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0C00 +1E00 +3300 +0000 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Udieresis +ENCODING 220 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +3300 +3300 +0000 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Yacute +ENCODING 221 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0600 +0C00 +1800 +0000 +6180 +6180 +3300 +3300 +1E00 +1E00 +0C00 +0C00 +0C00 +0C00 +0C00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR Thorn +ENCODING 222 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +3000 +3000 +3000 +3F00 +3180 +3180 +3180 +3180 +3180 +3F00 +3000 +3000 +3000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR germandbls +ENCODING 223 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0E00 +1B00 +3180 +3180 +3300 +7600 +3600 +3300 +3180 +3180 +3180 +3300 +3600 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR agrave +ENCODING 224 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +1800 +0C00 +0600 +0000 +3F00 +6180 +0180 +3F80 +6180 +6180 +6180 +3E80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR aacute +ENCODING 225 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0600 +0C00 +1800 +0000 +3F00 +6180 +0180 +3F80 +6180 +6180 +6180 +3E80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR acircumflex +ENCODING 226 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0C00 +1E00 +3300 +0000 +3F00 +6180 +0180 +3F80 +6180 +6180 +6180 +3E80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR atilde +ENCODING 227 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +1900 +3F00 +2600 +0000 +3F00 +6180 +0180 +3F80 +6180 +6180 +6180 +3E80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR adieresis +ENCODING 228 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +3300 +3300 +0000 +3F00 +6180 +0180 +3F80 +6180 +6180 +6180 +3E80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR aring +ENCODING 229 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +1E00 +3300 +3300 +1E00 +0000 +3F00 +6180 +0180 +3F80 +6180 +6180 +6180 +3E80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR ae +ENCODING 230 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +3B00 +4D80 +0D80 +0F00 +3C00 +6C00 +6C80 +3700 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR ccedilla +ENCODING 231 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +1F00 +3180 +6000 +6000 +6000 +6000 +3180 +1F00 +0C00 +0600 +3600 +1C00 +ENDCHAR + +STARTCHAR egrave +ENCODING 232 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +3000 +1800 +0C00 +0000 +1E00 +3300 +6180 +7F80 +6000 +6000 +3180 +1F00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR eacute +ENCODING 233 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0300 +0600 +0C00 +0000 +1E00 +3300 +6180 +7F80 +6000 +6000 +3180 +1F00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR ecircumflex +ENCODING 234 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0C00 +1E00 +3300 +0000 +1E00 +3300 +6180 +7F80 +6000 +6000 +3180 +1F00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR edieresis +ENCODING 235 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +3300 +3300 +0000 +1E00 +3300 +6180 +7F80 +6000 +6000 +3180 +1F00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR igrave +ENCODING 236 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +3000 +1800 +0C00 +0000 +3C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +7F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR iacute +ENCODING 237 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0600 +0C00 +1800 +0000 +3C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +7F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR icircumflex +ENCODING 238 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0C00 +1E00 +3300 +0000 +3C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +7F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR idieresis +ENCODING 239 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +3300 +3300 +0000 +3C00 +0C00 +0C00 +0C00 +0C00 +0C00 +0C00 +7F80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR eth +ENCODING 240 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +4400 +6C00 +3800 +3800 +6C00 +4600 +1F00 +3380 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR ntilde +ENCODING 241 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +1900 +3F00 +2600 +0000 +6E00 +7300 +6180 +6180 +6180 +6180 +6180 +6180 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR ograve +ENCODING 242 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +3000 +1800 +0C00 +0000 +1E00 +3300 +6180 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR oacute +ENCODING 243 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0300 +0600 +0C00 +0000 +1E00 +3300 +6180 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR ocircumflex +ENCODING 244 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0C00 +1E00 +3300 +0000 +1E00 +3300 +6180 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR otilde +ENCODING 245 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +1900 +3F00 +2600 +0000 +1E00 +3300 +6180 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR odieresis +ENCODING 246 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +3300 +3300 +0000 +1E00 +3300 +6180 +6180 +6180 +6180 +3300 +1E00 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR divide +ENCODING 247 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0C00 +0C00 +0000 +0000 +7F80 +7F80 +0000 +0000 +0C00 +0C00 +0000 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR oslash +ENCODING 248 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0080 +1F00 +3300 +6580 +6580 +6980 +6980 +3300 +3E00 +4000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR ugrave +ENCODING 249 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +1800 +0C00 +0600 +0000 +6180 +6180 +6180 +6180 +6180 +6180 +3380 +1D80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR uacute +ENCODING 250 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0300 +0600 +0C00 +0000 +6180 +6180 +6180 +6180 +6180 +6180 +3380 +1D80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR ucircumflex +ENCODING 251 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0C00 +1E00 +3300 +0000 +6180 +6180 +6180 +6180 +6180 +6180 +3380 +1D80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR udieresis +ENCODING 252 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +3300 +3300 +0000 +6180 +6180 +6180 +6180 +6180 +6180 +3380 +1D80 +0000 +0000 +0000 +0000 +ENDCHAR + +STARTCHAR yacute +ENCODING 253 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0600 +0C00 +1800 +0000 +6180 +6180 +6180 +6180 +6180 +6180 +3380 +1D80 +0180 +6180 +3300 +1E00 +ENDCHAR + +STARTCHAR thorn +ENCODING 254 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +3000 +3000 +3000 +3000 +3000 +3000 +3E00 +3300 +3180 +3180 +3180 +3300 +3E00 +3000 +3000 +3000 +3000 +ENDCHAR + +STARTCHAR ydieresis +ENCODING 255 +SWIDTH 480 0 +DWIDTH 10 0 +BBX 10 20 0 -4 +BITMAP +0000 +0000 +0000 +0000 +0000 +3300 +3300 +0000 +6180 +6180 +6180 +6180 +6180 +6180 +3380 +1D80 +0180 +6180 +3300 +1E00 +ENDCHAR + +ENDFONT diff --git a/src/gdisp/fonts/fixed_10x20.c b/src/gdisp/fonts/fixed_10x20.c new file mode 100644 index 00000000..6c6fc416 --- /dev/null +++ b/src/gdisp/fonts/fixed_10x20.c @@ -0,0 +1,227 @@ + + +/* Start of automatically generated font definition for fixed_10x20. */ + +#ifndef MF_BWFONT_INTERNALS +#define MF_BWFONT_INTERNALS +#endif +#include "mf_bwfont.h" + +#ifndef MF_BWFONT_VERSION_4_SUPPORTED +#error The font file is not compatible with this version of mcufont. +#endif + +static const uint8_t mf_bwfont_fixed_10x20_glyph_data_0[2193] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1b, 0x00, 0xff, 0x1b, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x0f, 0x00, 0xf0, 0x0f, 0x00, 0xfe, 0x01, 0x00, + 0x1e, 0x0f, 0x00, 0xf0, 0x0f, 0x00, 0xfe, 0x01, 0x00, 0x1e, 0x01, 0x00, 0x10, 0x00, 0x00, 0x3c, + 0x04, 0x00, 0x7e, 0x0c, 0x00, 0x42, 0x08, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x42, 0x08, + 0x00, 0xc6, 0x0f, 0x00, 0x84, 0x07, 0x00, 0x0c, 0x00, 0x00, 0x1e, 0x18, 0x00, 0x12, 0x1e, 0x00, + 0x9e, 0x07, 0x00, 0xec, 0x0d, 0x00, 0x78, 0x1e, 0x00, 0x1e, 0x12, 0x00, 0x06, 0x1e, 0x00, 0x00, + 0x0c, 0x00, 0x80, 0x0f, 0x00, 0xde, 0x1f, 0x00, 0x7f, 0x18, 0x00, 0xf1, 0x10, 0x00, 0x9f, 0x19, + 0x00, 0x0e, 0x0f, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0x01, 0x00, 0xfc, 0x07, 0x00, 0x0e, 0x0e, 0x00, 0x03, 0x18, 0x00, 0x01, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x03, 0x18, 0x00, 0x0e, 0x0e, 0x00, 0xfc, 0x07, 0x00, + 0xf0, 0x01, 0x00, 0x40, 0x00, 0x00, 0x58, 0x03, 0x00, 0xf8, 0x03, 0x00, 0xe0, 0x00, 0x00, 0xe0, + 0x00, 0x00, 0xf8, 0x03, 0x00, 0x58, 0x03, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, + 0x00, 0x40, 0x00, 0x00, 0xf8, 0x03, 0x00, 0xf8, 0x03, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x18, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, + 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x1e, 0x00, 0x80, 0x07, 0x00, 0xe0, 0x01, 0x00, 0x78, 0x00, + 0x00, 0x1e, 0x00, 0x00, 0x06, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xfc, 0x07, 0x00, 0x0e, 0x0e, 0x00, + 0x03, 0x18, 0x00, 0x03, 0x18, 0x00, 0x0e, 0x0e, 0x00, 0xfc, 0x07, 0x00, 0xf0, 0x01, 0x00, 0x08, + 0x10, 0x00, 0x0c, 0x10, 0x00, 0x06, 0x10, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x0c, 0x1c, 0x00, 0x0e, 0x1e, 0x00, 0x03, 0x13, 0x00, + 0x81, 0x11, 0x00, 0x81, 0x10, 0x00, 0xc3, 0x10, 0x00, 0x7e, 0x10, 0x00, 0x3c, 0x10, 0x00, 0x0c, + 0x06, 0x00, 0x0e, 0x0e, 0x00, 0x03, 0x18, 0x00, 0x41, 0x10, 0x00, 0x41, 0x10, 0x00, 0xe3, 0x18, + 0x00, 0xbe, 0x0f, 0x00, 0x1c, 0x07, 0x00, 0xc0, 0x01, 0x00, 0xe0, 0x01, 0x00, 0x30, 0x01, 0x00, + 0x18, 0x01, 0x00, 0x0c, 0x01, 0x00, 0xfe, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0x01, 0x00, 0x7f, + 0x04, 0x00, 0x7f, 0x0c, 0x00, 0x41, 0x18, 0x00, 0x21, 0x10, 0x00, 0x21, 0x10, 0x00, 0x61, 0x18, + 0x00, 0xc1, 0x0f, 0x00, 0x81, 0x07, 0x00, 0xfc, 0x07, 0x00, 0xfe, 0x0f, 0x00, 0x43, 0x18, 0x00, + 0x21, 0x10, 0x00, 0x21, 0x10, 0x00, 0x63, 0x18, 0x00, 0xc6, 0x0f, 0x00, 0x80, 0x07, 0x00, 0x01, + 0x00, 0x00, 0x01, 0x18, 0x00, 0x01, 0x1e, 0x00, 0x81, 0x07, 0x00, 0xe1, 0x01, 0x00, 0x79, 0x00, + 0x00, 0x1f, 0x00, 0x00, 0x07, 0x00, 0x00, 0x1c, 0x07, 0x00, 0xbe, 0x0f, 0x00, 0xe3, 0x18, 0x00, + 0x41, 0x10, 0x00, 0x41, 0x10, 0x00, 0xe3, 0x18, 0x00, 0xbe, 0x0f, 0x00, 0x1c, 0x07, 0x00, 0x3c, + 0x00, 0x00, 0x7e, 0x0c, 0x00, 0xc3, 0x18, 0x00, 0x81, 0x10, 0x00, 0x81, 0x10, 0x00, 0x43, 0x18, + 0x00, 0xfe, 0x0f, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x60, 0x38, 0x00, 0x60, 0x38, 0x00, 0x60, 0x18, 0x00, 0x40, 0x00, 0x00, 0xe0, 0x00, + 0x00, 0xb0, 0x01, 0x00, 0x18, 0x03, 0x00, 0x0c, 0x06, 0x00, 0x06, 0x0c, 0x00, 0x03, 0x18, 0x00, + 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, + 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x18, 0x00, 0x06, 0x0c, + 0x00, 0x0c, 0x06, 0x00, 0x18, 0x03, 0x00, 0xb0, 0x01, 0x00, 0xe0, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x03, 0x00, 0x00, 0x81, 0x1b, 0x00, 0xc1, 0x1b, 0x00, 0x63, + 0x00, 0x00, 0x3e, 0x00, 0x00, 0x1c, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xfe, 0x0f, 0x00, 0x03, 0x18, + 0x00, 0xf1, 0x11, 0x00, 0xf9, 0x13, 0x00, 0x1b, 0x13, 0x00, 0xfe, 0x19, 0x00, 0xfc, 0x08, 0x00, + 0xf0, 0x1f, 0x00, 0xfc, 0x1f, 0x00, 0x8e, 0x00, 0x00, 0x83, 0x00, 0x00, 0x83, 0x00, 0x00, 0x8e, + 0x00, 0x00, 0xfc, 0x1f, 0x00, 0xf0, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x41, 0x10, + 0x00, 0x41, 0x10, 0x00, 0x63, 0x10, 0x00, 0xfe, 0x18, 0x00, 0x9c, 0x0f, 0x00, 0x00, 0x07, 0x00, + 0xfc, 0x07, 0x00, 0xfe, 0x0f, 0x00, 0x03, 0x18, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x03, + 0x18, 0x00, 0x06, 0x0c, 0x00, 0x04, 0x04, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x01, 0x10, + 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x03, 0x18, 0x00, 0xfe, 0x0f, 0x00, 0xfc, 0x07, 0x00, + 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x41, 0x10, 0x00, 0x41, 0x10, 0x00, 0x41, 0x10, 0x00, 0x41, + 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x41, 0x00, + 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, + 0xfc, 0x07, 0x00, 0xfe, 0x0f, 0x00, 0x03, 0x18, 0x00, 0x01, 0x10, 0x00, 0x41, 0x10, 0x00, 0x43, + 0x18, 0x00, 0xc6, 0x0f, 0x00, 0xc4, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x40, 0x00, + 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, + 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x01, + 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x18, + 0x00, 0x01, 0x10, 0x00, 0x01, 0x18, 0x00, 0xff, 0x0f, 0x00, 0xff, 0x07, 0x00, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xf0, + 0x01, 0x00, 0xbc, 0x07, 0x00, 0x0f, 0x1e, 0x00, 0x03, 0x18, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, + 0x00, 0x10, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x1c, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf0, + 0x01, 0x00, 0x1c, 0x00, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, + 0x00, 0x1e, 0x00, 0x00, 0x78, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x80, 0x07, 0x00, 0xff, 0x1f, 0x00, + 0xff, 0x1f, 0x00, 0xfc, 0x07, 0x00, 0xfe, 0x0f, 0x00, 0x03, 0x18, 0x00, 0x01, 0x10, 0x00, 0x01, + 0x10, 0x00, 0x03, 0x18, 0x00, 0xfe, 0x0f, 0x00, 0xfc, 0x07, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, + 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x7e, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xfe, 0x0f, 0x00, 0x03, 0x18, 0x00, 0x01, 0x12, 0x00, 0x01, + 0x16, 0x00, 0x03, 0x1c, 0x00, 0xfe, 0x3f, 0x00, 0xfc, 0x27, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, + 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x01, 0x00, 0xc3, 0x07, 0x00, 0x7e, 0x1e, 0x00, + 0x3c, 0x18, 0x00, 0x1c, 0x04, 0x00, 0x3e, 0x0c, 0x00, 0x63, 0x18, 0x00, 0x41, 0x10, 0x00, 0x41, + 0x10, 0x00, 0xc3, 0x18, 0x00, 0x86, 0x0f, 0x00, 0x04, 0x07, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x01, 0x00, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0xff, 0x07, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x18, 0x00, 0xff, 0x0f, 0x00, 0xff, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x7f, 0x00, + 0x00, 0xf0, 0x03, 0x00, 0x80, 0x1f, 0x00, 0x80, 0x1f, 0x00, 0xf0, 0x03, 0x00, 0x7f, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0x06, 0x00, 0xe0, 0x01, 0x00, 0xe0, + 0x01, 0x00, 0x00, 0x06, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x03, 0x18, 0x00, 0x0f, 0x1e, + 0x00, 0xbc, 0x07, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xbc, 0x07, 0x00, 0x0f, 0x1e, 0x00, + 0x03, 0x18, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xf0, + 0x1f, 0x00, 0x3c, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x1c, 0x00, 0x01, 0x1e, + 0x00, 0x81, 0x13, 0x00, 0xc1, 0x11, 0x00, 0x71, 0x10, 0x00, 0x39, 0x10, 0x00, 0x0f, 0x10, 0x00, + 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x01, 0x10, 0x00, 0x01, + 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1e, 0x00, + 0x00, 0x78, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x80, 0x07, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0xff, + 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x08, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x40, 0x1f, 0x00, + 0x60, 0x11, 0x00, 0x20, 0x11, 0x00, 0x20, 0x11, 0x00, 0x20, 0x11, 0x00, 0xe0, 0x0f, 0x00, 0xc0, + 0x1f, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x40, 0x08, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, + 0x00, 0x60, 0x18, 0x00, 0xc0, 0x0f, 0x00, 0x80, 0x07, 0x00, 0x80, 0x07, 0x00, 0xc0, 0x0f, 0x00, + 0x60, 0x18, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x18, 0x00, 0x40, + 0x08, 0x00, 0x80, 0x07, 0x00, 0xc0, 0x0f, 0x00, 0x60, 0x18, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, + 0x00, 0x40, 0x08, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x80, 0x07, 0x00, 0xc0, 0x0f, 0x00, + 0x60, 0x19, 0x00, 0x20, 0x11, 0x00, 0x20, 0x11, 0x00, 0x60, 0x11, 0x00, 0xc0, 0x19, 0x00, 0x80, + 0x09, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x21, 0x00, + 0x00, 0x21, 0x00, 0x00, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0xc0, 0xeb, 0x00, 0xe0, 0xff, 0x01, + 0x20, 0x14, 0x01, 0x20, 0x14, 0x01, 0x20, 0x14, 0x01, 0xe0, 0x17, 0x01, 0xc0, 0xf3, 0x01, 0x60, + 0xe0, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x60, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x10, 0x00, 0x20, 0x10, 0x00, + 0x20, 0x10, 0x00, 0xec, 0x1f, 0x00, 0xec, 0x1f, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x01, 0x20, 0x00, + 0x01, 0x20, 0x00, 0x01, 0xec, 0xff, 0x01, 0xec, 0xff, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, 0x00, + 0x00, 0x03, 0x00, 0x80, 0x03, 0x00, 0xc0, 0x06, 0x00, 0x60, 0x0c, 0x00, 0x20, 0x18, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0xe0, 0x1f, 0x00, 0xc0, 0x1f, 0x00, + 0x60, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0xc0, 0x1f, 0x00, 0x60, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0xc0, + 0x1f, 0x00, 0xe0, 0x1f, 0x00, 0xe0, 0x1f, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x60, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x80, 0x1f, 0x00, 0x80, 0x07, 0x00, 0xc0, 0x0f, 0x00, + 0x60, 0x18, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x18, 0x00, 0xc0, 0x0f, 0x00, 0x80, + 0x07, 0x00, 0xe0, 0xff, 0x01, 0xe0, 0xff, 0x01, 0x40, 0x08, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, + 0x00, 0x60, 0x18, 0x00, 0xc0, 0x0f, 0x00, 0x80, 0x07, 0x00, 0x80, 0x07, 0x00, 0xc0, 0x0f, 0x00, + 0x60, 0x18, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x40, 0x08, 0x00, 0xe0, 0xff, 0x01, 0xe0, + 0xff, 0x01, 0x20, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0xc0, 0x1f, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0xc0, 0x08, 0x00, 0xe0, 0x19, 0x00, + 0x20, 0x11, 0x00, 0x20, 0x11, 0x00, 0x20, 0x11, 0x00, 0x20, 0x11, 0x00, 0x60, 0x1f, 0x00, 0x40, + 0x0e, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0xfc, 0x1f, 0x00, 0x20, 0x10, + 0x00, 0x20, 0x10, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x07, 0x00, 0xe0, 0x0f, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x1f, 0x00, 0xe0, + 0x1f, 0x00, 0x60, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x80, 0x07, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x1e, + 0x00, 0x80, 0x07, 0x00, 0xe0, 0x01, 0x00, 0x60, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0xe0, 0x1f, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x18, 0x00, 0xe0, 0x1f, 0x00, 0xe0, + 0x0f, 0x00, 0x20, 0x10, 0x00, 0x60, 0x18, 0x00, 0xc0, 0x0c, 0x00, 0x80, 0x07, 0x00, 0x80, 0x07, + 0x00, 0xc0, 0x0c, 0x00, 0x60, 0x18, 0x00, 0x20, 0x10, 0x00, 0xe0, 0x47, 0x00, 0xe0, 0xcf, 0x00, + 0x00, 0x98, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x88, 0x01, 0xe0, 0xff, 0x00, 0xe0, + 0x7f, 0x00, 0x00, 0x00, 0x00, 0x20, 0x18, 0x00, 0x20, 0x1c, 0x00, 0x20, 0x16, 0x00, 0x20, 0x13, + 0x00, 0xa0, 0x11, 0x00, 0xe0, 0x10, 0x00, 0x60, 0x10, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x40, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0xbf, 0x1f, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1f, 0x00, 0xff, 0x1f, + 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0xbf, 0x1f, 0x00, 0xfe, 0x0f, 0x00, + 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x06, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, 0x00, + 0x00, +}; + +static const uint16_t mf_bwfont_fixed_10x20_glyph_offsets_0[96] = { + 0x0000, 0x0000, 0x0005, 0x000c, 0x0015, 0x001d, 0x0026, 0x002f, + 0x0034, 0x003b, 0x0041, 0x0049, 0x0051, 0x0057, 0x005f, 0x0065, + 0x006d, 0x0075, 0x007d, 0x0085, 0x008d, 0x0095, 0x009d, 0x00a5, + 0x00ad, 0x00b5, 0x00bd, 0x00c3, 0x00c9, 0x00d0, 0x00d8, 0x00e0, + 0x00e8, 0x00f0, 0x00f8, 0x0100, 0x0108, 0x0110, 0x0118, 0x0120, + 0x0128, 0x0130, 0x0138, 0x0141, 0x0149, 0x0151, 0x0159, 0x0161, + 0x0169, 0x0171, 0x0179, 0x0181, 0x0189, 0x0191, 0x0199, 0x01a1, + 0x01a9, 0x01b1, 0x01b9, 0x01c1, 0x01c8, 0x01d0, 0x01d7, 0x01df, + 0x01e8, 0x01ee, 0x01f6, 0x01fe, 0x0206, 0x020e, 0x0216, 0x021e, + 0x0226, 0x022e, 0x0236, 0x023e, 0x0246, 0x024e, 0x0256, 0x025e, + 0x0266, 0x026e, 0x0276, 0x027e, 0x0286, 0x028e, 0x0296, 0x029e, + 0x02a6, 0x02ae, 0x02b6, 0x02be, 0x02c6, 0x02cb, 0x02d3, 0x02db, +}; + +static const uint8_t mf_bwfont_fixed_10x20_glyph_widths_0[95] = { + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, +}; + +static const struct mf_bwfont_char_range_s mf_bwfont_fixed_10x20_char_ranges[] = { + { + 32, /* first char */ + 95, /* char count */ + 0, /* offset x */ + 0, /* offset y */ + 3, /* height in bytes */ + 17, /* height in pixels */ + 0, /* width */ + mf_bwfont_fixed_10x20_glyph_widths_0, /* glyph widths */ + mf_bwfont_fixed_10x20_glyph_offsets_0, /* glyph offsets */ + mf_bwfont_fixed_10x20_glyph_data_0, /* glyph data */ + }, +}; + +const struct mf_bwfont_s mf_bwfont_fixed_10x20 = { + { + "-Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO8859-15", + "fixed_10x20", + 9, /* width */ + 17, /* height */ + 10, /* min x advance */ + 10, /* max x advance */ + -1, /* baseline x */ + 13, /* baseline y */ + 20, /* line height */ + 3, /* flags */ + 63, /* fallback character */ + &mf_bwfont_character_width, + &mf_bwfont_render_character, + }, + 4, /* version */ + 1, /* char range count */ + mf_bwfont_fixed_10x20_char_ranges, +}; + +#ifdef MF_INCLUDED_FONTS +/* List entry for searching fonts by name. */ +static const struct mf_font_list_s mf_bwfont_fixed_10x20_listentry = { + MF_INCLUDED_FONTS, + (struct mf_font_s*)&mf_bwfont_fixed_10x20 +}; +#undef MF_INCLUDED_FONTS +#define MF_INCLUDED_FONTS (&mf_bwfont_fixed_10x20_listentry) +#endif + + +/* End of automatically generated font definition for fixed_10x20. */ + diff --git a/src/gdisp/fonts/fixed_5x8.bdf b/src/gdisp/fonts/fixed_5x8.bdf new file mode 100644 index 00000000..a44d3bfa --- /dev/null +++ b/src/gdisp/fonts/fixed_5x8.bdf @@ -0,0 +1,3602 @@ +STARTFONT 2.1 +FONT -Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO8859-15 +SIZE 8 75 75 +FONTBOUNDINGBOX 5 8 0 -1 + +STARTPROPERTIES 23 +FONTNAME_REGISTRY "" +FOUNDRY "Misc" +FAMILY_NAME "Fixed" +WEIGHT_NAME "Medium" +SLANT "R" +SETWIDTH_NAME "Normal" +ADD_STYLE_NAME "" +PIXEL_SIZE 8 +POINT_SIZE 80 +RESOLUTION_X 75 +RESOLUTION_Y 75 +SPACING "C" +AVERAGE_WIDTH 50 +CHARSET_REGISTRY "ISO8859" +CHARSET_ENCODING "15" +COPYRIGHT "Public domain font. Share and enjoy." +CAP_HEIGHT 6 +X_HEIGHT 4 +WEIGHT 10 +QUAD_WIDTH 5 +DEFAULT_CHAR 0 +FONT_DESCENT 1 +FONT_ASCENT 7 +ENDPROPERTIES + +CHARS 223 + +STARTCHAR defaultchar +ENCODING 0 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +A0 +10 +80 +10 +80 +50 +00 +ENDCHAR + +STARTCHAR uni25C6 +ENCODING 1 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +20 +70 +F8 +70 +20 +00 +ENDCHAR + +STARTCHAR shade +ENCODING 2 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +50 +A8 +50 +A8 +50 +A8 +50 +A8 +ENDCHAR + +STARTCHAR uni2409 +ENCODING 3 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +A0 +A0 +E0 +A0 +A0 +70 +20 +20 +ENDCHAR + +STARTCHAR uni240C +ENCODING 4 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +E0 +80 +C0 +B8 +A0 +30 +20 +20 +ENDCHAR + +STARTCHAR uni240D +ENCODING 5 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +60 +80 +80 +60 +30 +28 +30 +28 +ENDCHAR + +STARTCHAR uni240A +ENCODING 6 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +80 +80 +80 +E0 +38 +20 +30 +20 +ENDCHAR + +STARTCHAR degree +ENCODING 7 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +50 +20 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR plusminus +ENCODING 8 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +20 +70 +20 +00 +70 +00 +ENDCHAR + +STARTCHAR uni2424 +ENCODING 9 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +90 +D0 +B0 +90 +20 +20 +20 +38 +ENDCHAR + +STARTCHAR uni240B +ENCODING 10 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +A0 +A0 +A0 +40 +38 +10 +10 +10 +ENDCHAR + +STARTCHAR SF040000 +ENCODING 11 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +20 +20 +E0 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR SF030000 +ENCODING 12 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +E0 +20 +20 +20 +20 +ENDCHAR + +STARTCHAR SF010000 +ENCODING 13 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +38 +20 +20 +20 +20 +ENDCHAR + +STARTCHAR SF020000 +ENCODING 14 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +20 +20 +38 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR SF050000 +ENCODING 15 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +20 +20 +F8 +20 +20 +20 +20 +ENDCHAR + +STARTCHAR uni23BA +ENCODING 16 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR uni23BB +ENCODING 17 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +F8 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR SF100000 +ENCODING 18 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +F8 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR uni23BC +ENCODING 19 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +F8 +00 +ENDCHAR + +STARTCHAR uni23BD +ENCODING 20 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +F8 +ENDCHAR + +STARTCHAR SF080000 +ENCODING 21 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +20 +20 +38 +20 +20 +20 +20 +ENDCHAR + +STARTCHAR SF090000 +ENCODING 22 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +20 +20 +E0 +20 +20 +20 +20 +ENDCHAR + +STARTCHAR SF070000 +ENCODING 23 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +20 +20 +F8 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR SF060000 +ENCODING 24 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +F8 +20 +20 +20 +20 +ENDCHAR + +STARTCHAR SF110000 +ENCODING 25 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +20 +20 +20 +20 +20 +20 +20 +ENDCHAR + +STARTCHAR lessequal +ENCODING 26 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +10 +20 +40 +20 +10 +70 +00 +ENDCHAR + +STARTCHAR greaterequal +ENCODING 27 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +40 +20 +10 +20 +40 +70 +00 +ENDCHAR + +STARTCHAR pi +ENCODING 28 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +F8 +50 +50 +50 +00 +ENDCHAR + +STARTCHAR notequal +ENCODING 29 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +20 +F0 +60 +F0 +40 +00 +ENDCHAR + +STARTCHAR sterling +ENCODING 30 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +50 +E0 +40 +50 +A0 +00 +ENDCHAR + +STARTCHAR periodcentered +ENCODING 31 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +20 +00 +00 +00 +ENDCHAR + +STARTCHAR space +ENCODING 32 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR exclam +ENCODING 33 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +20 +20 +20 +00 +20 +00 +ENDCHAR + +STARTCHAR quotedbl +ENCODING 34 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +50 +50 +50 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR numbersign +ENCODING 35 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +50 +50 +F8 +50 +F8 +50 +50 +00 +ENDCHAR + +STARTCHAR dollar +ENCODING 36 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +70 +A0 +70 +28 +70 +20 +00 +ENDCHAR + +STARTCHAR percent +ENCODING 37 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +40 +50 +20 +50 +10 +00 +00 +ENDCHAR + +STARTCHAR ampersand +ENCODING 38 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +40 +A0 +A0 +40 +A0 +A0 +50 +00 +ENDCHAR + +STARTCHAR quotesingle +ENCODING 39 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +20 +20 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR parenleft +ENCODING 40 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +40 +40 +40 +40 +20 +00 +ENDCHAR + +STARTCHAR parenright +ENCODING 41 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +40 +20 +20 +20 +20 +40 +00 +ENDCHAR + +STARTCHAR asterisk +ENCODING 42 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +90 +60 +F0 +60 +90 +00 +ENDCHAR + +STARTCHAR plus +ENCODING 43 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +20 +20 +F8 +20 +20 +00 +ENDCHAR + +STARTCHAR comma +ENCODING 44 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +30 +20 +40 +ENDCHAR + +STARTCHAR hyphen +ENCODING 45 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +F0 +00 +00 +00 +ENDCHAR + +STARTCHAR period +ENCODING 46 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +20 +70 +20 +ENDCHAR + +STARTCHAR slash +ENCODING 47 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +10 +10 +20 +40 +80 +80 +00 +ENDCHAR + +STARTCHAR zero +ENCODING 48 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +50 +50 +50 +50 +20 +00 +ENDCHAR + +STARTCHAR one +ENCODING 49 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +60 +20 +20 +20 +70 +00 +ENDCHAR + +STARTCHAR two +ENCODING 50 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +60 +90 +10 +60 +80 +F0 +00 +ENDCHAR + +STARTCHAR three +ENCODING 51 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +F0 +20 +60 +10 +90 +60 +00 +ENDCHAR + +STARTCHAR four +ENCODING 52 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +60 +A0 +F0 +20 +20 +00 +ENDCHAR + +STARTCHAR five +ENCODING 53 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +F0 +80 +E0 +10 +90 +60 +00 +ENDCHAR + +STARTCHAR six +ENCODING 54 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +60 +80 +E0 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR seven +ENCODING 55 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +F0 +10 +20 +20 +40 +40 +00 +ENDCHAR + +STARTCHAR eight +ENCODING 56 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +60 +90 +60 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR nine +ENCODING 57 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +60 +90 +90 +70 +10 +60 +00 +ENDCHAR + +STARTCHAR colon +ENCODING 58 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +60 +60 +00 +60 +60 +00 +ENDCHAR + +STARTCHAR semicolon +ENCODING 59 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +30 +30 +00 +30 +20 +40 +ENDCHAR + +STARTCHAR less +ENCODING 60 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +10 +20 +40 +40 +20 +10 +00 +ENDCHAR + +STARTCHAR equal +ENCODING 61 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +F0 +00 +F0 +00 +00 +ENDCHAR + +STARTCHAR greater +ENCODING 62 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +40 +20 +10 +10 +20 +40 +00 +ENDCHAR + +STARTCHAR question +ENCODING 63 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +50 +10 +20 +00 +20 +00 +ENDCHAR + +STARTCHAR at +ENCODING 64 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +30 +48 +98 +A8 +A8 +90 +40 +30 +ENDCHAR + +STARTCHAR A +ENCODING 65 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR + +STARTCHAR B +ENCODING 66 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +E0 +90 +E0 +90 +90 +E0 +00 +ENDCHAR + +STARTCHAR C +ENCODING 67 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +60 +90 +80 +80 +90 +60 +00 +ENDCHAR + +STARTCHAR D +ENCODING 68 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +E0 +90 +90 +90 +90 +E0 +00 +ENDCHAR + +STARTCHAR E +ENCODING 69 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR + +STARTCHAR F +ENCODING 70 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +F0 +80 +E0 +80 +80 +80 +00 +ENDCHAR + +STARTCHAR G +ENCODING 71 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +60 +90 +80 +B0 +90 +60 +00 +ENDCHAR + +STARTCHAR H +ENCODING 72 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +90 +90 +F0 +90 +90 +90 +00 +ENDCHAR + +STARTCHAR I +ENCODING 73 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +20 +20 +20 +20 +70 +00 +ENDCHAR + +STARTCHAR J +ENCODING 74 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +20 +20 +20 +A0 +40 +00 +ENDCHAR + +STARTCHAR K +ENCODING 75 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +90 +A0 +C0 +A0 +A0 +90 +00 +ENDCHAR + +STARTCHAR L +ENCODING 76 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +80 +80 +80 +80 +80 +F0 +00 +ENDCHAR + +STARTCHAR M +ENCODING 77 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +90 +F0 +F0 +90 +90 +90 +00 +ENDCHAR + +STARTCHAR N +ENCODING 78 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +90 +D0 +F0 +B0 +B0 +90 +00 +ENDCHAR + +STARTCHAR O +ENCODING 79 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +60 +90 +90 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR P +ENCODING 80 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +E0 +90 +90 +E0 +80 +80 +00 +ENDCHAR + +STARTCHAR Q +ENCODING 81 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +60 +90 +90 +D0 +B0 +60 +10 +ENDCHAR + +STARTCHAR R +ENCODING 82 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +E0 +90 +90 +E0 +90 +90 +00 +ENDCHAR + +STARTCHAR S +ENCODING 83 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +60 +90 +40 +20 +90 +60 +00 +ENDCHAR + +STARTCHAR T +ENCODING 84 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +20 +20 +20 +20 +20 +00 +ENDCHAR + +STARTCHAR U +ENCODING 85 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +90 +90 +90 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR V +ENCODING 86 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +90 +90 +90 +90 +60 +60 +00 +ENDCHAR + +STARTCHAR W +ENCODING 87 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +90 +90 +90 +F0 +F0 +90 +00 +ENDCHAR + +STARTCHAR X +ENCODING 88 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +90 +90 +60 +60 +90 +90 +00 +ENDCHAR + +STARTCHAR Y +ENCODING 89 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +88 +88 +50 +20 +20 +20 +00 +ENDCHAR + +STARTCHAR Z +ENCODING 90 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +F0 +10 +20 +40 +80 +F0 +00 +ENDCHAR + +STARTCHAR bracketleft +ENCODING 91 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +40 +40 +40 +40 +70 +00 +ENDCHAR + +STARTCHAR backslash +ENCODING 92 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +80 +80 +40 +20 +10 +10 +00 +ENDCHAR + +STARTCHAR bracketright +ENCODING 93 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +10 +10 +10 +10 +70 +00 +ENDCHAR + +STARTCHAR asciicircum +ENCODING 94 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +50 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR underscore +ENCODING 95 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +F0 +ENDCHAR + +STARTCHAR grave +ENCODING 96 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +40 +20 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR a +ENCODING 97 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +70 +90 +90 +70 +00 +ENDCHAR + +STARTCHAR b +ENCODING 98 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +80 +80 +E0 +90 +90 +E0 +00 +ENDCHAR + +STARTCHAR c +ENCODING 99 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +30 +40 +40 +30 +00 +ENDCHAR + +STARTCHAR d +ENCODING 100 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +10 +10 +70 +90 +90 +70 +00 +ENDCHAR + +STARTCHAR e +ENCODING 101 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +60 +B0 +C0 +60 +00 +ENDCHAR + +STARTCHAR f +ENCODING 102 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +50 +40 +E0 +40 +40 +00 +ENDCHAR + +STARTCHAR g +ENCODING 103 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +60 +90 +70 +10 +60 +ENDCHAR + +STARTCHAR h +ENCODING 104 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +80 +80 +E0 +90 +90 +90 +00 +ENDCHAR + +STARTCHAR i +ENCODING 105 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +00 +60 +20 +20 +70 +00 +ENDCHAR + +STARTCHAR j +ENCODING 106 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +10 +00 +10 +10 +10 +50 +20 +ENDCHAR + +STARTCHAR k +ENCODING 107 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +80 +80 +90 +E0 +90 +90 +00 +ENDCHAR + +STARTCHAR l +ENCODING 108 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +60 +20 +20 +20 +20 +70 +00 +ENDCHAR + +STARTCHAR m +ENCODING 109 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +D0 +A8 +A8 +A8 +00 +ENDCHAR + +STARTCHAR n +ENCODING 110 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +E0 +90 +90 +90 +00 +ENDCHAR + +STARTCHAR o +ENCODING 111 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +60 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR p +ENCODING 112 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +E0 +90 +E0 +80 +80 +ENDCHAR + +STARTCHAR q +ENCODING 113 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +70 +90 +70 +10 +10 +ENDCHAR + +STARTCHAR r +ENCODING 114 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +A0 +D0 +80 +80 +00 +ENDCHAR + +STARTCHAR s +ENCODING 115 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +30 +60 +10 +60 +00 +ENDCHAR + +STARTCHAR t +ENCODING 116 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +40 +40 +E0 +40 +50 +20 +00 +ENDCHAR + +STARTCHAR u +ENCODING 117 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +90 +90 +90 +70 +00 +ENDCHAR + +STARTCHAR v +ENCODING 118 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +50 +50 +50 +20 +00 +ENDCHAR + +STARTCHAR w +ENCODING 119 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +88 +A8 +A8 +50 +00 +ENDCHAR + +STARTCHAR x +ENCODING 120 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +90 +60 +60 +90 +00 +ENDCHAR + +STARTCHAR y +ENCODING 121 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +90 +90 +70 +90 +60 +ENDCHAR + +STARTCHAR z +ENCODING 122 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +F0 +20 +40 +F0 +00 +ENDCHAR + +STARTCHAR braceleft +ENCODING 123 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +30 +40 +20 +C0 +20 +40 +30 +00 +ENDCHAR + +STARTCHAR bar +ENCODING 124 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +20 +20 +20 +20 +20 +00 +ENDCHAR + +STARTCHAR braceright +ENCODING 125 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +C0 +20 +40 +30 +40 +20 +C0 +00 +ENDCHAR + +STARTCHAR asciitilde +ENCODING 126 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +50 +A0 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR space +ENCODING 160 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR exclamdown +ENCODING 161 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +00 +20 +20 +20 +20 +00 +ENDCHAR + +STARTCHAR cent +ENCODING 162 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +20 +70 +A0 +A0 +70 +20 +ENDCHAR + +STARTCHAR sterling +ENCODING 163 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +50 +E0 +40 +50 +A0 +00 +ENDCHAR + +STARTCHAR Euro +ENCODING 164 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +30 +40 +E0 +40 +E0 +40 +30 +00 +ENDCHAR + +STARTCHAR yen +ENCODING 165 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +88 +50 +F8 +20 +F8 +20 +00 +ENDCHAR + +STARTCHAR Scaron +ENCODING 166 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +90 +60 +70 +80 +60 +10 +E0 +00 +ENDCHAR + +STARTCHAR section +ENCODING 167 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +70 +80 +E0 +90 +70 +10 +E0 +00 +ENDCHAR + +STARTCHAR scaron +ENCODING 168 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +50 +20 +00 +30 +60 +10 +60 +00 +ENDCHAR + +STARTCHAR copyright +ENCODING 169 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +A8 +C8 +C8 +A8 +70 +00 +ENDCHAR + +STARTCHAR ordfeminine +ENCODING 170 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +30 +50 +30 +00 +70 +00 +00 +00 +ENDCHAR + +STARTCHAR guillemotleft +ENCODING 171 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +50 +A0 +50 +00 +00 +ENDCHAR + +STARTCHAR logicalnot +ENCODING 172 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +70 +10 +10 +00 +ENDCHAR + +STARTCHAR hyphen +ENCODING 173 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +70 +00 +00 +00 +ENDCHAR + +STARTCHAR registered +ENCODING 174 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +E8 +D8 +E8 +D8 +70 +00 +ENDCHAR + +STARTCHAR macron +ENCODING 175 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR degree +ENCODING 176 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +50 +20 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR plusminus +ENCODING 177 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +20 +70 +20 +00 +70 +00 +ENDCHAR + +STARTCHAR twosuperior +ENCODING 178 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +50 +10 +20 +70 +00 +00 +00 +ENDCHAR + +STARTCHAR threesuperior +ENCODING 179 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +60 +10 +60 +10 +60 +00 +00 +00 +ENDCHAR + +STARTCHAR Zcaron +ENCODING 180 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +90 +60 +F0 +20 +40 +80 +F0 +00 +ENDCHAR + +STARTCHAR mu +ENCODING 181 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +90 +90 +90 +E0 +80 +ENDCHAR + +STARTCHAR paragraph +ENCODING 182 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +78 +E8 +E8 +68 +28 +28 +00 +ENDCHAR + +STARTCHAR periodcentered +ENCODING 183 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +20 +00 +00 +00 +ENDCHAR + +STARTCHAR zcaron +ENCODING 184 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +90 +60 +00 +F0 +20 +40 +F0 +00 +ENDCHAR + +STARTCHAR onesuperior +ENCODING 185 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +60 +20 +20 +70 +00 +00 +00 +ENDCHAR + +STARTCHAR ordmasculine +ENCODING 186 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +50 +20 +00 +70 +00 +00 +00 +ENDCHAR + +STARTCHAR guillemotright +ENCODING 187 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +A0 +50 +A0 +00 +00 +ENDCHAR + +STARTCHAR OE +ENCODING 188 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +A0 +B0 +A0 +A0 +70 +00 +ENDCHAR + +STARTCHAR oe +ENCODING 189 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +70 +A8 +B0 +78 +00 +ENDCHAR + +STARTCHAR Ydieresis +ENCODING 190 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +50 +00 +88 +50 +20 +20 +20 +00 +ENDCHAR + +STARTCHAR questiondown +ENCODING 191 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +00 +20 +40 +50 +20 +00 +ENDCHAR + +STARTCHAR Agrave +ENCODING 192 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +40 +20 +60 +90 +F0 +90 +90 +00 +ENDCHAR + +STARTCHAR Aacute +ENCODING 193 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +40 +60 +90 +F0 +90 +90 +00 +ENDCHAR + +STARTCHAR Acircumflex +ENCODING 194 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +60 +90 +60 +90 +F0 +90 +90 +00 +ENDCHAR + +STARTCHAR Atilde +ENCODING 195 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +50 +A0 +60 +90 +F0 +90 +90 +00 +ENDCHAR + +STARTCHAR Adieresis +ENCODING 196 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +90 +00 +60 +90 +F0 +90 +90 +00 +ENDCHAR + +STARTCHAR Aring +ENCODING 197 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +60 +90 +60 +90 +F0 +90 +90 +00 +ENDCHAR + +STARTCHAR AE +ENCODING 198 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +A0 +A0 +F0 +A0 +B0 +00 +ENDCHAR + +STARTCHAR Ccedilla +ENCODING 199 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +60 +90 +80 +80 +90 +60 +40 +ENDCHAR + +STARTCHAR Egrave +ENCODING 200 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +40 +20 +F0 +80 +E0 +80 +F0 +00 +ENDCHAR + +STARTCHAR Eacute +ENCODING 201 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +40 +F0 +80 +E0 +80 +F0 +00 +ENDCHAR + +STARTCHAR Ecircumflex +ENCODING 202 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +60 +90 +F0 +80 +E0 +80 +F0 +00 +ENDCHAR + +STARTCHAR Edieresis +ENCODING 203 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +90 +00 +F0 +80 +E0 +80 +F0 +00 +ENDCHAR + +STARTCHAR Igrave +ENCODING 204 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +40 +20 +70 +20 +20 +20 +70 +00 +ENDCHAR + +STARTCHAR Iacute +ENCODING 205 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +10 +20 +70 +20 +20 +20 +70 +00 +ENDCHAR + +STARTCHAR Icircumflex +ENCODING 206 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +50 +70 +20 +20 +20 +70 +00 +ENDCHAR + +STARTCHAR Idieresis +ENCODING 207 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +50 +00 +70 +20 +20 +20 +70 +00 +ENDCHAR + +STARTCHAR Eth +ENCODING 208 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +48 +E8 +48 +48 +70 +00 +ENDCHAR + +STARTCHAR Ntilde +ENCODING 209 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +50 +A0 +90 +D0 +B0 +90 +90 +00 +ENDCHAR + +STARTCHAR Ograve +ENCODING 210 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +40 +20 +60 +90 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR Oacute +ENCODING 211 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +40 +60 +90 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR Ocircumflex +ENCODING 212 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +60 +90 +60 +90 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR Otilde +ENCODING 213 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +50 +A0 +60 +90 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR Odieresis +ENCODING 214 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +90 +00 +60 +90 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR multiply +ENCODING 215 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +50 +20 +50 +00 +ENDCHAR + +STARTCHAR Oslash +ENCODING 216 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +B0 +B0 +D0 +D0 +E0 +00 +ENDCHAR + +STARTCHAR Ugrave +ENCODING 217 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +40 +20 +90 +90 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR Uacute +ENCODING 218 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +40 +90 +90 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR Ucircumflex +ENCODING 219 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +60 +90 +90 +90 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR Udieresis +ENCODING 220 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +90 +00 +90 +90 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR Yacute +ENCODING 221 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +10 +20 +88 +50 +20 +20 +20 +00 +ENDCHAR + +STARTCHAR Thorn +ENCODING 222 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +80 +E0 +90 +90 +E0 +80 +00 +ENDCHAR + +STARTCHAR germandbls +ENCODING 223 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +60 +90 +A0 +A0 +90 +A0 +00 +ENDCHAR + +STARTCHAR agrave +ENCODING 224 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +40 +20 +00 +70 +90 +90 +70 +00 +ENDCHAR + +STARTCHAR aacute +ENCODING 225 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +40 +00 +70 +90 +90 +70 +00 +ENDCHAR + +STARTCHAR acircumflex +ENCODING 226 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +50 +00 +70 +90 +90 +70 +00 +ENDCHAR + +STARTCHAR atilde +ENCODING 227 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +50 +A0 +00 +70 +90 +90 +70 +00 +ENDCHAR + +STARTCHAR adieresis +ENCODING 228 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +50 +00 +70 +90 +90 +70 +00 +ENDCHAR + +STARTCHAR aring +ENCODING 229 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +60 +90 +60 +70 +90 +90 +70 +00 +ENDCHAR + +STARTCHAR ae +ENCODING 230 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +F0 +68 +B0 +78 +00 +ENDCHAR + +STARTCHAR ccedilla +ENCODING 231 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +30 +40 +40 +30 +20 +ENDCHAR + +STARTCHAR egrave +ENCODING 232 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +40 +20 +00 +60 +B0 +C0 +60 +00 +ENDCHAR + +STARTCHAR eacute +ENCODING 233 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +40 +00 +60 +B0 +C0 +60 +00 +ENDCHAR + +STARTCHAR ecircumflex +ENCODING 234 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +60 +90 +00 +60 +B0 +C0 +60 +00 +ENDCHAR + +STARTCHAR edieresis +ENCODING 235 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +50 +00 +60 +B0 +C0 +60 +00 +ENDCHAR + +STARTCHAR igrave +ENCODING 236 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +40 +20 +00 +60 +20 +20 +70 +00 +ENDCHAR + +STARTCHAR iacute +ENCODING 237 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +10 +20 +00 +60 +20 +20 +70 +00 +ENDCHAR + +STARTCHAR icircumflex +ENCODING 238 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +50 +00 +60 +20 +20 +70 +00 +ENDCHAR + +STARTCHAR idieresis +ENCODING 239 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +50 +00 +60 +20 +20 +70 +00 +ENDCHAR + +STARTCHAR eth +ENCODING 240 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +A0 +40 +A0 +10 +70 +90 +60 +00 +ENDCHAR + +STARTCHAR ntilde +ENCODING 241 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +50 +A0 +00 +E0 +90 +90 +90 +00 +ENDCHAR + +STARTCHAR ograve +ENCODING 242 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +40 +20 +00 +60 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR oacute +ENCODING 243 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +40 +00 +60 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR ocircumflex +ENCODING 244 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +60 +90 +00 +60 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR otilde +ENCODING 245 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +50 +A0 +00 +60 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR odieresis +ENCODING 246 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +90 +00 +60 +90 +90 +60 +00 +ENDCHAR + +STARTCHAR divide +ENCODING 247 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +20 +00 +70 +00 +20 +00 +ENDCHAR + +STARTCHAR oslash +ENCODING 248 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +70 +B0 +D0 +E0 +00 +ENDCHAR + +STARTCHAR ugrave +ENCODING 249 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +40 +20 +00 +90 +90 +90 +70 +00 +ENDCHAR + +STARTCHAR uacute +ENCODING 250 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +40 +00 +90 +90 +90 +70 +00 +ENDCHAR + +STARTCHAR ucircumflex +ENCODING 251 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +60 +90 +00 +90 +90 +90 +70 +00 +ENDCHAR + +STARTCHAR udieresis +ENCODING 252 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +90 +00 +90 +90 +90 +70 +00 +ENDCHAR + +STARTCHAR yacute +ENCODING 253 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +40 +00 +90 +90 +70 +90 +60 +ENDCHAR + +STARTCHAR thorn +ENCODING 254 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +80 +80 +E0 +90 +E0 +80 +80 +ENDCHAR + +STARTCHAR ydieresis +ENCODING 255 +SWIDTH 436 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +90 +00 +90 +90 +70 +90 +60 +ENDCHAR + +ENDFONT diff --git a/src/gdisp/fonts/fixed_5x8.c b/src/gdisp/fonts/fixed_5x8.c new file mode 100644 index 00000000..d65d58bf --- /dev/null +++ b/src/gdisp/fonts/fixed_5x8.c @@ -0,0 +1,95 @@ + + +/* Start of automatically generated font definition for fixed_5x8. */ + +#ifndef MF_BWFONT_INTERNALS +#define MF_BWFONT_INTERNALS +#endif +#include "mf_bwfont.h" + +#ifndef MF_BWFONT_VERSION_4_SUPPORTED +#error The font file is not compatible with this version of mcufont. +#endif + +static const uint8_t mf_bwfont_fixed_5x8_glyph_data_0[475] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x14, + 0x7f, 0x14, 0x7f, 0x14, 0x04, 0x2a, 0x7f, 0x2a, 0x10, 0x00, 0x16, 0x08, 0x34, 0x00, 0x36, 0x49, + 0x36, 0x40, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x42, 0x00, 0x00, 0x00, 0x42, 0x3c, + 0x00, 0x00, 0x54, 0x38, 0x38, 0x54, 0x00, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x00, 0x80, 0x60, 0x20, + 0x00, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x40, 0xe0, 0x40, 0x00, 0x60, 0x10, 0x08, 0x06, 0x00, + 0x00, 0x3c, 0x42, 0x3c, 0x00, 0x00, 0x44, 0x7e, 0x40, 0x00, 0x64, 0x52, 0x52, 0x4c, 0x00, 0x22, + 0x4a, 0x4e, 0x32, 0x00, 0x18, 0x14, 0x7e, 0x10, 0x00, 0x2e, 0x4a, 0x4a, 0x32, 0x00, 0x3c, 0x4a, + 0x4a, 0x30, 0x00, 0x02, 0x62, 0x1a, 0x06, 0x00, 0x34, 0x4a, 0x4a, 0x34, 0x00, 0x0c, 0x52, 0x52, + 0x3c, 0x00, 0x00, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x6c, 0x2c, 0x00, 0x00, 0x18, 0x24, 0x42, + 0x00, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, 0x42, 0x24, 0x18, 0x00, 0x00, 0x04, 0x52, 0x0c, 0x00, + 0x3c, 0x42, 0x99, 0xa5, 0x1e, 0x7c, 0x12, 0x12, 0x7c, 0x00, 0x7e, 0x4a, 0x4a, 0x34, 0x00, 0x3c, + 0x42, 0x42, 0x24, 0x00, 0x7e, 0x42, 0x42, 0x3c, 0x00, 0x7e, 0x4a, 0x4a, 0x42, 0x00, 0x7e, 0x0a, + 0x0a, 0x02, 0x00, 0x3c, 0x42, 0x52, 0x34, 0x00, 0x7e, 0x08, 0x08, 0x7e, 0x00, 0x00, 0x42, 0x7e, + 0x42, 0x00, 0x20, 0x42, 0x3e, 0x02, 0x00, 0x7e, 0x08, 0x34, 0x42, 0x00, 0x7e, 0x40, 0x40, 0x40, + 0x00, 0x7e, 0x0c, 0x0c, 0x7e, 0x00, 0x7e, 0x0c, 0x38, 0x7e, 0x00, 0x3c, 0x42, 0x42, 0x3c, 0x00, + 0x7e, 0x12, 0x12, 0x0c, 0x00, 0x3c, 0x52, 0x62, 0xbc, 0x00, 0x7e, 0x12, 0x12, 0x6c, 0x00, 0x24, + 0x4a, 0x52, 0x24, 0x00, 0x00, 0x02, 0x7e, 0x02, 0x00, 0x3e, 0x40, 0x40, 0x3e, 0x00, 0x1e, 0x60, + 0x60, 0x1e, 0x00, 0x7e, 0x30, 0x30, 0x7e, 0x00, 0x66, 0x18, 0x18, 0x66, 0x00, 0x06, 0x08, 0x70, + 0x08, 0x06, 0x62, 0x52, 0x4a, 0x46, 0x00, 0x00, 0x7e, 0x42, 0x42, 0x00, 0x06, 0x08, 0x10, 0x60, + 0x00, 0x00, 0x42, 0x42, 0x7e, 0x00, 0x00, 0x04, 0x02, 0x04, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, + 0x00, 0x02, 0x04, 0x00, 0x00, 0x30, 0x48, 0x48, 0x78, 0x00, 0x7e, 0x48, 0x48, 0x30, 0x00, 0x00, + 0x30, 0x48, 0x48, 0x00, 0x30, 0x48, 0x48, 0x7e, 0x00, 0x30, 0x68, 0x58, 0x10, 0x00, 0x10, 0x7c, + 0x12, 0x04, 0x00, 0x10, 0xa8, 0xa8, 0x70, 0x00, 0x7e, 0x08, 0x08, 0x70, 0x00, 0x00, 0x48, 0x7a, + 0x40, 0x00, 0x00, 0x40, 0x80, 0x7a, 0x00, 0x7e, 0x10, 0x10, 0x68, 0x00, 0x00, 0x42, 0x7e, 0x40, + 0x00, 0x78, 0x08, 0x70, 0x08, 0x70, 0x78, 0x08, 0x08, 0x70, 0x00, 0x30, 0x48, 0x48, 0x30, 0x00, + 0xf8, 0x28, 0x28, 0x10, 0x00, 0x10, 0x28, 0x28, 0xf8, 0x00, 0x78, 0x10, 0x08, 0x10, 0x00, 0x00, + 0x50, 0x58, 0x28, 0x00, 0x08, 0x3e, 0x48, 0x20, 0x00, 0x38, 0x40, 0x40, 0x78, 0x00, 0x00, 0x38, + 0x40, 0x38, 0x00, 0x38, 0x40, 0x30, 0x40, 0x38, 0x48, 0x30, 0x30, 0x48, 0x00, 0x58, 0xa0, 0xa0, + 0x78, 0x00, 0x48, 0x68, 0x58, 0x48, 0x00, 0x08, 0x2a, 0x55, 0x41, 0x00, 0x00, 0x00, 0x7e, 0x00, + 0x00, 0x41, 0x55, 0x2a, 0x08, 0x00, 0x04, 0x02, 0x04, 0x02, 0x00, +}; + +static const struct mf_bwfont_char_range_s mf_bwfont_fixed_5x8_char_ranges[] = { + { + 32, /* first char */ + 95, /* char count */ + 0, /* offset x */ + 0, /* offset y */ + 1, /* height in bytes */ + 8, /* height in pixels */ + 5, /* width */ + 0, /* glyph widths */ + 0, /* glyph offsets */ + mf_bwfont_fixed_5x8_glyph_data_0, /* glyph data */ + }, +}; + +const struct mf_bwfont_s mf_bwfont_fixed_5x8 = { + { + "-Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO8859-15", + "fixed_5x8", + 5, /* width */ + 8, /* height */ + 5, /* min x advance */ + 5, /* max x advance */ + 0, /* baseline x */ + 7, /* baseline y */ + 8, /* line height */ + 3, /* flags */ + 63, /* fallback character */ + &mf_bwfont_character_width, + &mf_bwfont_render_character, + }, + 4, /* version */ + 1, /* char range count */ + mf_bwfont_fixed_5x8_char_ranges, +}; + +#ifdef MF_INCLUDED_FONTS +/* List entry for searching fonts by name. */ +static const struct mf_font_list_s mf_bwfont_fixed_5x8_listentry = { + MF_INCLUDED_FONTS, + (struct mf_font_s*)&mf_bwfont_fixed_5x8 +}; +#undef MF_INCLUDED_FONTS +#define MF_INCLUDED_FONTS (&mf_bwfont_fixed_5x8_listentry) +#endif + + +/* End of automatically generated font definition for fixed_5x8. */ + diff --git a/src/gdisp/fonts/fixed_7x14.bdf b/src/gdisp/fonts/fixed_7x14.bdf new file mode 100644 index 00000000..674a5ebd --- /dev/null +++ b/src/gdisp/fonts/fixed_7x14.bdf @@ -0,0 +1,4940 @@ +STARTFONT 2.1 +FONT -Misc-Fixed-Medium-R-Normal--14-130-75-75-C-70-ISO8859-15 +SIZE 14 75 75 +FONTBOUNDINGBOX 7 14 0 -2 + +STARTPROPERTIES 23 +FONTNAME_REGISTRY "" +FOUNDRY "Misc" +FAMILY_NAME "Fixed" +WEIGHT_NAME "Medium" +SLANT "R" +SETWIDTH_NAME "Normal" +ADD_STYLE_NAME "" +PIXEL_SIZE 14 +POINT_SIZE 130 +RESOLUTION_X 75 +RESOLUTION_Y 75 +SPACING "C" +AVERAGE_WIDTH 70 +CHARSET_REGISTRY "ISO8859" +CHARSET_ENCODING "15" +COPYRIGHT "Public domain font. Share and enjoy." +CAP_HEIGHT 10 +X_HEIGHT 7 +WEIGHT 10 +QUAD_WIDTH 7 +DEFAULT_CHAR 0 +FONT_DESCENT 2 +FONT_ASCENT 12 +ENDPROPERTIES + +CHARS 223 + +STARTCHAR defaultchar +ENCODING 0 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +B4 +84 +00 +84 +84 +00 +84 +84 +00 +84 +B4 +00 +00 +ENDCHAR + +STARTCHAR uni25C6 +ENCODING 1 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +30 +30 +78 +78 +FC +FC +78 +78 +30 +30 +00 +00 +ENDCHAR + +STARTCHAR shade +ENCODING 2 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +54 +AA +54 +AA +54 +AA +54 +AA +54 +AA +54 +AA +54 +AA +ENDCHAR + +STARTCHAR uni2409 +ENCODING 3 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +90 +90 +F0 +90 +90 +00 +7C +10 +10 +10 +10 +00 +00 +ENDCHAR + +STARTCHAR uni240C +ENCODING 4 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +E0 +80 +80 +E0 +80 +9C +90 +10 +1C +10 +10 +10 +00 +ENDCHAR + +STARTCHAR uni240D +ENCODING 5 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +70 +80 +80 +80 +70 +00 +38 +24 +24 +38 +24 +24 +00 +ENDCHAR + +STARTCHAR uni240A +ENCODING 6 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +80 +80 +80 +80 +F0 +00 +3C +20 +38 +20 +20 +00 +00 +ENDCHAR + +STARTCHAR degree +ENCODING 7 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +30 +48 +48 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR plusminus +ENCODING 8 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +10 +10 +7C +10 +10 +7C +00 +00 +ENDCHAR + +STARTCHAR uni2424 +ENCODING 9 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +90 +D0 +B0 +90 +90 +20 +20 +20 +20 +3C +00 +00 +ENDCHAR + +STARTCHAR uni240B +ENCODING 10 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +88 +88 +88 +50 +20 +00 +7C +10 +10 +10 +10 +10 +00 +ENDCHAR + +STARTCHAR SF040000 +ENCODING 11 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +10 +10 +10 +10 +10 +10 +10 +F0 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR SF030000 +ENCODING 12 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +F0 +10 +10 +10 +10 +10 +10 +ENDCHAR + +STARTCHAR SF010000 +ENCODING 13 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +1E +10 +10 +10 +10 +10 +10 +ENDCHAR + +STARTCHAR SF020000 +ENCODING 14 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +10 +10 +10 +10 +10 +10 +10 +1E +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR SF050000 +ENCODING 15 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +10 +10 +10 +10 +10 +10 +10 +FE +10 +10 +10 +10 +10 +10 +ENDCHAR + +STARTCHAR uni23BA +ENCODING 16 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +FE +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR uni23BB +ENCODING 17 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +FE +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR SF100000 +ENCODING 18 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FE +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR uni23BC +ENCODING 19 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +FE +00 +00 +00 +ENDCHAR + +STARTCHAR uni23BD +ENCODING 20 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +FE +ENDCHAR + +STARTCHAR SF080000 +ENCODING 21 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +10 +10 +10 +10 +10 +10 +10 +1E +10 +10 +10 +10 +10 +10 +ENDCHAR + +STARTCHAR SF090000 +ENCODING 22 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +10 +10 +10 +10 +10 +10 +10 +F0 +10 +10 +10 +10 +10 +10 +ENDCHAR + +STARTCHAR SF070000 +ENCODING 23 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +10 +10 +10 +10 +10 +10 +10 +FE +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR SF060000 +ENCODING 24 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FE +10 +10 +10 +10 +10 +10 +ENDCHAR + +STARTCHAR SF110000 +ENCODING 25 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +ENDCHAR + +STARTCHAR lessequal +ENCODING 26 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +0C +30 +C0 +30 +0C +00 +FC +00 +00 +00 +ENDCHAR + +STARTCHAR greaterequal +ENCODING 27 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +C0 +30 +0C +30 +C0 +00 +FC +00 +00 +00 +ENDCHAR + +STARTCHAR pi +ENCODING 28 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +FC +48 +48 +48 +48 +48 +48 +00 +00 +ENDCHAR + +STARTCHAR notequal +ENCODING 29 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +08 +08 +FC +10 +10 +FC +20 +20 +00 +00 +00 +ENDCHAR + +STARTCHAR sterling +ENCODING 30 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +18 +24 +20 +20 +78 +20 +20 +78 +24 +00 +00 +ENDCHAR + +STARTCHAR periodcentered +ENCODING 31 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR space +ENCODING 32 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR exclam +ENCODING 33 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +10 +10 +10 +10 +10 +10 +10 +00 +10 +10 +00 +00 +ENDCHAR + +STARTCHAR quotedbl +ENCODING 34 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +28 +28 +28 +28 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR numbersign +ENCODING 35 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +28 +28 +28 +7C +28 +28 +7C +28 +28 +28 +00 +00 +ENDCHAR + +STARTCHAR dollar +ENCODING 36 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +10 +78 +94 +94 +50 +38 +14 +94 +94 +78 +10 +00 +ENDCHAR + +STARTCHAR percent +ENCODING 37 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +64 +94 +98 +70 +10 +20 +38 +64 +A4 +98 +00 +00 +ENDCHAR + +STARTCHAR ampersand +ENCODING 38 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +30 +48 +48 +48 +30 +64 +94 +88 +98 +64 +00 +00 +ENDCHAR + +STARTCHAR quotesingle +ENCODING 39 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +10 +10 +10 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR parenleft +ENCODING 40 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +04 +08 +10 +10 +20 +20 +20 +20 +20 +10 +10 +08 +04 +ENDCHAR + +STARTCHAR parenright +ENCODING 41 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +40 +20 +10 +10 +08 +08 +08 +08 +08 +10 +10 +20 +40 +ENDCHAR + +STARTCHAR asterisk +ENCODING 42 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +10 +54 +38 +10 +38 +54 +10 +00 +00 +00 +ENDCHAR + +STARTCHAR plus +ENCODING 43 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +10 +10 +10 +7C +10 +10 +10 +00 +00 +00 +ENDCHAR + +STARTCHAR comma +ENCODING 44 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +30 +10 +10 +20 +ENDCHAR + +STARTCHAR hyphen +ENCODING 45 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +7C +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR period +ENCODING 46 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +10 +38 +10 +00 +ENDCHAR + +STARTCHAR slash +ENCODING 47 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +04 +04 +08 +08 +10 +10 +10 +20 +20 +40 +40 +80 +80 +ENDCHAR + +STARTCHAR zero +ENCODING 48 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +30 +48 +84 +84 +84 +84 +84 +84 +48 +30 +00 +00 +ENDCHAR + +STARTCHAR one +ENCODING 49 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +10 +30 +50 +10 +10 +10 +10 +10 +10 +7C +00 +00 +ENDCHAR + +STARTCHAR two +ENCODING 50 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +78 +84 +84 +04 +08 +08 +10 +20 +40 +FC +00 +00 +ENDCHAR + +STARTCHAR three +ENCODING 51 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +FC +04 +08 +10 +38 +04 +04 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR four +ENCODING 52 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +08 +18 +28 +28 +48 +48 +88 +FC +08 +08 +00 +00 +ENDCHAR + +STARTCHAR five +ENCODING 53 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +FC +80 +80 +F8 +84 +04 +04 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR six +ENCODING 54 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +38 +40 +80 +80 +B8 +C4 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR seven +ENCODING 55 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +FC +04 +08 +08 +10 +10 +20 +20 +40 +40 +00 +00 +ENDCHAR + +STARTCHAR eight +ENCODING 56 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +78 +84 +84 +48 +30 +48 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR nine +ENCODING 57 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +78 +84 +84 +84 +8C +74 +04 +84 +88 +70 +00 +00 +ENDCHAR + +STARTCHAR colon +ENCODING 58 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +10 +38 +10 +00 +00 +10 +38 +10 +00 +00 +ENDCHAR + +STARTCHAR semicolon +ENCODING 59 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +30 +30 +00 +00 +30 +10 +10 +20 +00 +ENDCHAR + +STARTCHAR less +ENCODING 60 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +04 +08 +10 +20 +40 +20 +10 +08 +04 +00 +00 +ENDCHAR + +STARTCHAR equal +ENCODING 61 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +FC +00 +00 +FC +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR greater +ENCODING 62 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +40 +20 +10 +08 +04 +08 +10 +20 +40 +00 +00 +ENDCHAR + +STARTCHAR question +ENCODING 63 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +78 +84 +84 +08 +10 +10 +10 +00 +10 +10 +00 +00 +ENDCHAR + +STARTCHAR at +ENCODING 64 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +38 +44 +9C +A4 +A4 +A4 +A4 +9C +40 +3C +00 +00 +ENDCHAR + +STARTCHAR A +ENCODING 65 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +30 +48 +84 +84 +84 +FC +84 +84 +84 +84 +00 +00 +ENDCHAR + +STARTCHAR B +ENCODING 66 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +F0 +88 +84 +88 +F0 +88 +84 +84 +88 +F0 +00 +00 +ENDCHAR + +STARTCHAR C +ENCODING 67 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +78 +84 +84 +80 +80 +80 +80 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR D +ENCODING 68 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +F0 +88 +84 +84 +84 +84 +84 +84 +88 +F0 +00 +00 +ENDCHAR + +STARTCHAR E +ENCODING 69 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +FC +80 +80 +80 +F0 +80 +80 +80 +80 +FC +00 +00 +ENDCHAR + +STARTCHAR F +ENCODING 70 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +FC +80 +80 +80 +F0 +80 +80 +80 +80 +80 +00 +00 +ENDCHAR + +STARTCHAR G +ENCODING 71 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +78 +84 +84 +80 +80 +9C +84 +84 +8C +74 +00 +00 +ENDCHAR + +STARTCHAR H +ENCODING 72 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +84 +84 +84 +84 +FC +84 +84 +84 +84 +84 +00 +00 +ENDCHAR + +STARTCHAR I +ENCODING 73 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +7C +10 +10 +10 +10 +10 +10 +10 +10 +7C +00 +00 +ENDCHAR + +STARTCHAR J +ENCODING 74 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +1C +08 +08 +08 +08 +08 +08 +88 +88 +70 +00 +00 +ENDCHAR + +STARTCHAR K +ENCODING 75 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +84 +88 +90 +A0 +C0 +A0 +90 +88 +84 +84 +00 +00 +ENDCHAR + +STARTCHAR L +ENCODING 76 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +80 +80 +80 +80 +80 +80 +80 +80 +80 +FC +00 +00 +ENDCHAR + +STARTCHAR M +ENCODING 77 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +84 +CC +CC +B4 +B4 +84 +84 +84 +84 +84 +00 +00 +ENDCHAR + +STARTCHAR N +ENCODING 78 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +84 +84 +C4 +C4 +A4 +94 +8C +8C +84 +84 +00 +00 +ENDCHAR + +STARTCHAR O +ENCODING 79 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +78 +84 +84 +84 +84 +84 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR P +ENCODING 80 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +F8 +84 +84 +84 +84 +F8 +80 +80 +80 +80 +00 +00 +ENDCHAR + +STARTCHAR Q +ENCODING 81 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +78 +84 +84 +84 +84 +84 +E4 +94 +8C +78 +08 +04 +ENDCHAR + +STARTCHAR R +ENCODING 82 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +F8 +84 +84 +84 +84 +F8 +90 +88 +84 +84 +00 +00 +ENDCHAR + +STARTCHAR S +ENCODING 83 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +78 +84 +84 +80 +60 +18 +04 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR T +ENCODING 84 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +FE +10 +10 +10 +10 +10 +10 +10 +10 +10 +00 +00 +ENDCHAR + +STARTCHAR U +ENCODING 85 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +84 +84 +84 +84 +84 +84 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR V +ENCODING 86 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +84 +84 +84 +84 +48 +48 +48 +30 +30 +30 +00 +00 +ENDCHAR + +STARTCHAR W +ENCODING 87 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +44 +44 +44 +44 +44 +44 +54 +54 +54 +28 +00 +00 +ENDCHAR + +STARTCHAR X +ENCODING 88 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +84 +84 +48 +48 +30 +30 +48 +48 +84 +84 +00 +00 +ENDCHAR + +STARTCHAR Y +ENCODING 89 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +44 +44 +44 +28 +28 +10 +10 +10 +10 +10 +00 +00 +ENDCHAR + +STARTCHAR Z +ENCODING 90 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +FC +04 +08 +10 +10 +20 +40 +40 +80 +FC +00 +00 +ENDCHAR + +STARTCHAR bracketleft +ENCODING 91 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +3C +20 +20 +20 +20 +20 +20 +20 +20 +20 +20 +20 +3C +ENDCHAR + +STARTCHAR backslash +ENCODING 92 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +80 +80 +40 +40 +20 +20 +20 +10 +10 +08 +08 +04 +04 +ENDCHAR + +STARTCHAR bracketright +ENCODING 93 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +78 +08 +08 +08 +08 +08 +08 +08 +08 +08 +08 +08 +78 +ENDCHAR + +STARTCHAR asciicircum +ENCODING 94 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +30 +48 +84 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR underscore +ENCODING 95 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +FC +ENDCHAR + +STARTCHAR grave +ENCODING 96 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +20 +10 +08 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR a +ENCODING 97 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +78 +84 +04 +7C +84 +84 +7C +00 +00 +ENDCHAR + +STARTCHAR b +ENCODING 98 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +80 +80 +80 +B8 +C4 +84 +84 +84 +C4 +B8 +00 +00 +ENDCHAR + +STARTCHAR c +ENCODING 99 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +78 +84 +80 +80 +80 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR d +ENCODING 100 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +04 +04 +04 +74 +8C +84 +84 +84 +8C +74 +00 +00 +ENDCHAR + +STARTCHAR e +ENCODING 101 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +78 +84 +84 +FC +80 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR f +ENCODING 102 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +18 +24 +20 +20 +F8 +20 +20 +20 +20 +20 +00 +00 +ENDCHAR + +STARTCHAR g +ENCODING 103 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +74 +88 +88 +88 +70 +40 +B8 +84 +78 +ENDCHAR + +STARTCHAR h +ENCODING 104 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +80 +80 +80 +B8 +C4 +84 +84 +84 +84 +84 +00 +00 +ENDCHAR + +STARTCHAR i +ENCODING 105 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +10 +10 +00 +30 +10 +10 +10 +10 +10 +7C +00 +00 +ENDCHAR + +STARTCHAR j +ENCODING 106 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +04 +04 +00 +0C +04 +04 +04 +04 +04 +44 +44 +38 +ENDCHAR + +STARTCHAR k +ENCODING 107 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +80 +80 +80 +88 +90 +A0 +E0 +90 +88 +84 +00 +00 +ENDCHAR + +STARTCHAR l +ENCODING 108 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +30 +10 +10 +10 +10 +10 +10 +10 +10 +7C +00 +00 +ENDCHAR + +STARTCHAR m +ENCODING 109 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +68 +54 +54 +54 +54 +54 +44 +00 +00 +ENDCHAR + +STARTCHAR n +ENCODING 110 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +B8 +C4 +84 +84 +84 +84 +84 +00 +00 +ENDCHAR + +STARTCHAR o +ENCODING 111 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +78 +84 +84 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR p +ENCODING 112 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +B8 +C4 +84 +84 +84 +C4 +B8 +80 +80 +ENDCHAR + +STARTCHAR q +ENCODING 113 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +74 +8C +84 +84 +84 +8C +74 +04 +04 +ENDCHAR + +STARTCHAR r +ENCODING 114 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +B8 +C4 +84 +80 +80 +80 +80 +00 +00 +ENDCHAR + +STARTCHAR s +ENCODING 115 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +78 +84 +40 +30 +08 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR t +ENCODING 116 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +20 +20 +20 +F8 +20 +20 +20 +20 +24 +18 +00 +00 +ENDCHAR + +STARTCHAR u +ENCODING 117 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +84 +84 +84 +84 +84 +8C +74 +00 +00 +ENDCHAR + +STARTCHAR v +ENCODING 118 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +44 +44 +44 +28 +28 +10 +10 +00 +00 +ENDCHAR + +STARTCHAR w +ENCODING 119 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +44 +44 +54 +54 +54 +54 +28 +00 +00 +ENDCHAR + +STARTCHAR x +ENCODING 120 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +84 +84 +48 +30 +48 +84 +84 +00 +00 +ENDCHAR + +STARTCHAR y +ENCODING 121 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +84 +84 +84 +84 +8C +74 +04 +84 +78 +ENDCHAR + +STARTCHAR z +ENCODING 122 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +FC +08 +10 +20 +20 +40 +FC +00 +00 +ENDCHAR + +STARTCHAR braceleft +ENCODING 123 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +0C +10 +10 +10 +10 +10 +20 +10 +10 +10 +10 +10 +0C +ENDCHAR + +STARTCHAR bar +ENCODING 124 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +ENDCHAR + +STARTCHAR braceright +ENCODING 125 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +60 +10 +10 +10 +10 +10 +08 +10 +10 +10 +10 +10 +60 +ENDCHAR + +STARTCHAR asciitilde +ENCODING 126 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +40 +A4 +94 +08 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR space +ENCODING 160 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR exclamdown +ENCODING 161 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +10 +10 +00 +10 +10 +10 +10 +10 +10 +10 +00 +00 +ENDCHAR + +STARTCHAR cent +ENCODING 162 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +20 +78 +A4 +A0 +A0 +A0 +A4 +78 +20 +00 +ENDCHAR + +STARTCHAR sterling +ENCODING 163 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +18 +24 +20 +20 +78 +20 +20 +78 +24 +00 +00 +ENDCHAR + +STARTCHAR Euro +ENCODING 164 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +38 +44 +40 +E0 +40 +E0 +40 +44 +38 +00 +00 +ENDCHAR + +STARTCHAR yen +ENCODING 165 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +44 +28 +28 +10 +7C +10 +7C +10 +10 +10 +00 +00 +ENDCHAR + +STARTCHAR Scaron +ENCODING 166 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +48 +30 +00 +78 +84 +84 +60 +18 +04 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR section +ENCODING 167 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +78 +84 +40 +30 +48 +84 +48 +30 +08 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR scaron +ENCODING 168 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +48 +30 +00 +78 +84 +40 +30 +08 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR copyright +ENCODING 169 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +78 +84 +B4 +CC +C4 +C4 +C4 +CC +B4 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR ordfeminine +ENCODING 170 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +38 +44 +3C +44 +4C +34 +00 +7C +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR guillemotleft +ENCODING 171 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +14 +28 +50 +A0 +50 +28 +14 +00 +00 +ENDCHAR + +STARTCHAR logicalnot +ENCODING 172 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +7C +04 +04 +04 +00 +00 +ENDCHAR + +STARTCHAR hyphen +ENCODING 173 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +78 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR registered +ENCODING 174 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +78 +84 +F4 +CC +CC +F4 +CC +CC +CC +84 +78 +00 +00 +ENDCHAR + +STARTCHAR macron +ENCODING 175 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +7C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR degree +ENCODING 176 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +30 +48 +48 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR plusminus +ENCODING 177 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +10 +10 +7C +10 +10 +7C +00 +00 +ENDCHAR + +STARTCHAR twosuperior +ENCODING 178 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +30 +48 +08 +10 +20 +40 +78 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR threesuperior +ENCODING 179 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +30 +48 +08 +30 +08 +48 +30 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR Zcaron +ENCODING 180 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +48 +30 +00 +FC +08 +10 +10 +20 +40 +40 +80 +FC +00 +00 +ENDCHAR + +STARTCHAR mu +ENCODING 181 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +44 +44 +44 +44 +6C +54 +40 +40 +ENDCHAR + +STARTCHAR paragraph +ENCODING 182 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +3C +54 +54 +54 +54 +34 +14 +14 +14 +14 +14 +1C +ENDCHAR + +STARTCHAR periodcentered +ENCODING 183 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR zcaron +ENCODING 184 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +48 +30 +00 +FC +08 +10 +20 +20 +40 +FC +00 +00 +ENDCHAR + +STARTCHAR onesuperior +ENCODING 185 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +10 +30 +10 +10 +10 +10 +38 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR ordmasculine +ENCODING 186 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +30 +48 +48 +30 +00 +78 +00 +00 +00 +00 +00 +00 +ENDCHAR + +STARTCHAR guillemotright +ENCODING 187 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +A0 +50 +28 +14 +28 +50 +A0 +00 +00 +ENDCHAR + +STARTCHAR OE +ENCODING 188 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +7C +90 +90 +90 +9C +90 +90 +90 +90 +7C +00 +00 +ENDCHAR + +STARTCHAR oe +ENCODING 189 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +78 +94 +94 +9C +90 +90 +7C +00 +00 +ENDCHAR + +STARTCHAR Ydieresis +ENCODING 190 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +28 +28 +00 +44 +44 +28 +28 +10 +10 +10 +10 +10 +00 +00 +ENDCHAR + +STARTCHAR questiondown +ENCODING 191 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +20 +20 +00 +20 +20 +20 +20 +40 +84 +84 +78 +ENDCHAR + +STARTCHAR Agrave +ENCODING 192 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +20 +10 +00 +30 +48 +84 +84 +FC +84 +84 +84 +84 +00 +00 +ENDCHAR + +STARTCHAR Aacute +ENCODING 193 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +10 +20 +00 +30 +48 +84 +84 +FC +84 +84 +84 +84 +00 +00 +ENDCHAR + +STARTCHAR Acircumflex +ENCODING 194 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +30 +48 +00 +30 +48 +84 +84 +FC +84 +84 +84 +84 +00 +00 +ENDCHAR + +STARTCHAR Atilde +ENCODING 195 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +64 +98 +00 +30 +48 +84 +84 +FC +84 +84 +84 +84 +00 +00 +ENDCHAR + +STARTCHAR Adieresis +ENCODING 196 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +48 +00 +30 +48 +84 +84 +FC +84 +84 +84 +84 +00 +00 +ENDCHAR + +STARTCHAR Aring +ENCODING 197 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +30 +48 +30 +48 +84 +84 +FC +84 +84 +84 +84 +00 +00 +ENDCHAR + +STARTCHAR AE +ENCODING 198 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +3C +50 +90 +90 +FC +90 +90 +90 +90 +9C +00 +00 +ENDCHAR + +STARTCHAR Ccedilla +ENCODING 199 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +78 +84 +84 +80 +80 +80 +80 +84 +84 +78 +10 +20 +ENDCHAR + +STARTCHAR Egrave +ENCODING 200 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +20 +10 +00 +FC +80 +80 +80 +F8 +80 +80 +80 +FC +00 +00 +ENDCHAR + +STARTCHAR Eacute +ENCODING 201 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +10 +20 +00 +FC +80 +80 +80 +F8 +80 +80 +80 +FC +00 +00 +ENDCHAR + +STARTCHAR Ecircumflex +ENCODING 202 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +30 +48 +00 +FC +80 +80 +80 +F8 +80 +80 +80 +FC +00 +00 +ENDCHAR + +STARTCHAR Edieresis +ENCODING 203 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +48 +00 +FC +80 +80 +80 +F8 +80 +80 +80 +FC +00 +00 +ENDCHAR + +STARTCHAR Igrave +ENCODING 204 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +20 +10 +00 +7C +10 +10 +10 +10 +10 +10 +10 +7C +00 +00 +ENDCHAR + +STARTCHAR Iacute +ENCODING 205 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +08 +10 +00 +7C +10 +10 +10 +10 +10 +10 +10 +7C +00 +00 +ENDCHAR + +STARTCHAR Icircumflex +ENCODING 206 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +10 +28 +00 +7C +10 +10 +10 +10 +10 +10 +10 +7C +00 +00 +ENDCHAR + +STARTCHAR Idieresis +ENCODING 207 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +28 +00 +7C +10 +10 +10 +10 +10 +10 +10 +7C +00 +00 +ENDCHAR + +STARTCHAR Eth +ENCODING 208 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +78 +44 +42 +42 +F2 +42 +42 +42 +44 +78 +00 +00 +ENDCHAR + +STARTCHAR Ntilde +ENCODING 209 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +64 +98 +00 +C4 +C4 +A4 +A4 +94 +94 +94 +8C +8C +00 +00 +ENDCHAR + +STARTCHAR Ograve +ENCODING 210 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +20 +10 +00 +78 +84 +84 +84 +84 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR Oacute +ENCODING 211 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +10 +20 +00 +78 +84 +84 +84 +84 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR Ocircumflex +ENCODING 212 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +30 +48 +00 +78 +84 +84 +84 +84 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR Otilde +ENCODING 213 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +64 +98 +00 +78 +84 +84 +84 +84 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR Odieresis +ENCODING 214 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +48 +00 +78 +84 +84 +84 +84 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR multiply +ENCODING 215 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +82 +44 +28 +10 +28 +44 +82 +00 +00 +ENDCHAR + +STARTCHAR Oslash +ENCODING 216 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +04 +04 +78 +8C +94 +94 +94 +A4 +A4 +A4 +C4 +78 +80 +80 +ENDCHAR + +STARTCHAR Ugrave +ENCODING 217 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +20 +10 +00 +84 +84 +84 +84 +84 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR Uacute +ENCODING 218 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +10 +20 +00 +84 +84 +84 +84 +84 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR Ucircumflex +ENCODING 219 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +30 +48 +00 +84 +84 +84 +84 +84 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR Udieresis +ENCODING 220 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +48 +00 +84 +84 +84 +84 +84 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR Yacute +ENCODING 221 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +08 +10 +00 +44 +44 +28 +28 +10 +10 +10 +10 +10 +00 +00 +ENDCHAR + +STARTCHAR Thorn +ENCODING 222 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +80 +80 +F8 +84 +84 +84 +84 +F8 +80 +80 +00 +00 +ENDCHAR + +STARTCHAR germandbls +ENCODING 223 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +30 +48 +48 +48 +70 +48 +44 +44 +44 +F8 +00 +00 +ENDCHAR + +STARTCHAR agrave +ENCODING 224 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +20 +10 +00 +78 +84 +04 +7C +84 +84 +7C +00 +00 +ENDCHAR + +STARTCHAR aacute +ENCODING 225 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +08 +10 +00 +78 +84 +04 +7C +84 +84 +7C +00 +00 +ENDCHAR + +STARTCHAR acircumflex +ENCODING 226 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +30 +48 +00 +78 +84 +04 +7C +84 +84 +7C +00 +00 +ENDCHAR + +STARTCHAR atilde +ENCODING 227 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +64 +98 +00 +78 +84 +04 +7C +84 +84 +7C +00 +00 +ENDCHAR + +STARTCHAR adieresis +ENCODING 228 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +48 +00 +78 +84 +04 +7C +84 +84 +7C +00 +00 +ENDCHAR + +STARTCHAR aring +ENCODING 229 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +30 +48 +30 +00 +78 +84 +04 +7C +84 +84 +7C +00 +00 +ENDCHAR + +STARTCHAR ae +ENCODING 230 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +7C +92 +32 +5E +90 +92 +7C +00 +00 +ENDCHAR + +STARTCHAR ccedilla +ENCODING 231 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +78 +84 +80 +80 +80 +84 +78 +10 +20 +ENDCHAR + +STARTCHAR egrave +ENCODING 232 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +20 +10 +00 +78 +84 +84 +FC +80 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR eacute +ENCODING 233 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +10 +20 +00 +78 +84 +84 +FC +80 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR ecircumflex +ENCODING 234 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +30 +48 +00 +78 +84 +84 +FC +80 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR edieresis +ENCODING 235 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +48 +00 +78 +84 +84 +FC +80 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR igrave +ENCODING 236 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +20 +10 +00 +30 +10 +10 +10 +10 +10 +7C +00 +00 +ENDCHAR + +STARTCHAR iacute +ENCODING 237 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +08 +10 +00 +30 +10 +10 +10 +10 +10 +7C +00 +00 +ENDCHAR + +STARTCHAR icircumflex +ENCODING 238 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +30 +48 +00 +30 +10 +10 +10 +10 +10 +7C +00 +00 +ENDCHAR + +STARTCHAR idieresis +ENCODING 239 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +28 +00 +30 +10 +10 +10 +10 +10 +7C +00 +00 +ENDCHAR + +STARTCHAR eth +ENCODING 240 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +28 +10 +28 +04 +3C +44 +44 +44 +44 +44 +38 +00 +00 +ENDCHAR + +STARTCHAR ntilde +ENCODING 241 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +64 +98 +00 +B8 +C4 +84 +84 +84 +84 +84 +00 +00 +ENDCHAR + +STARTCHAR ograve +ENCODING 242 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +20 +10 +00 +78 +84 +84 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR oacute +ENCODING 243 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +10 +20 +00 +78 +84 +84 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR ocircumflex +ENCODING 244 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +30 +48 +00 +78 +84 +84 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR otilde +ENCODING 245 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +64 +98 +00 +78 +84 +84 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR odieresis +ENCODING 246 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +48 +00 +78 +84 +84 +84 +84 +84 +78 +00 +00 +ENDCHAR + +STARTCHAR divide +ENCODING 247 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +00 +00 +00 +00 +30 +00 +FC +00 +30 +00 +00 +ENDCHAR + +STARTCHAR oslash +ENCODING 248 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +04 +08 +78 +94 +94 +A4 +A4 +C4 +78 +80 +80 +ENDCHAR + +STARTCHAR ugrave +ENCODING 249 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +20 +10 +00 +84 +84 +84 +84 +84 +8C +74 +00 +00 +ENDCHAR + +STARTCHAR uacute +ENCODING 250 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +10 +20 +00 +84 +84 +84 +84 +84 +8C +74 +00 +00 +ENDCHAR + +STARTCHAR ucircumflex +ENCODING 251 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +30 +48 +00 +84 +84 +84 +84 +84 +8C +74 +00 +00 +ENDCHAR + +STARTCHAR udieresis +ENCODING 252 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +48 +00 +84 +84 +84 +84 +84 +8C +74 +00 +00 +ENDCHAR + +STARTCHAR yacute +ENCODING 253 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +10 +20 +00 +84 +84 +44 +48 +28 +38 +10 +90 +60 +ENDCHAR + +STARTCHAR thorn +ENCODING 254 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +80 +80 +80 +B8 +C4 +84 +84 +84 +C4 +B8 +80 +80 +ENDCHAR + +STARTCHAR ydieresis +ENCODING 255 +SWIDTH 960 0 +DWIDTH 7 0 +BBX 7 14 0 -2 +BITMAP +00 +00 +00 +48 +00 +84 +84 +44 +48 +28 +38 +10 +90 +60 +ENDCHAR + +ENDFONT diff --git a/src/gdisp/fonts/fixed_7x14.c b/src/gdisp/fonts/fixed_7x14.c new file mode 100644 index 00000000..28b05608 --- /dev/null +++ b/src/gdisp/fonts/fixed_7x14.c @@ -0,0 +1,149 @@ + + +/* Start of automatically generated font definition for fixed_7x14. */ + +#ifndef MF_BWFONT_INTERNALS +#define MF_BWFONT_INTERNALS +#endif +#include "mf_bwfont.h" + +#ifndef MF_BWFONT_VERSION_4_SUPPORTED +#error The font file is not compatible with this version of mcufont. +#endif + +static const uint8_t mf_bwfont_fixed_7x14_glyph_data_0[1330] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0xfe, 0x07, + 0x90, 0x00, 0xfe, 0x07, 0x90, 0x00, 0x00, 0x00, 0x18, 0x03, 0x24, 0x04, 0x44, 0x04, 0xfe, 0x0f, + 0x44, 0x04, 0x98, 0x03, 0x00, 0x00, 0x0c, 0x06, 0x12, 0x01, 0xd2, 0x03, 0xbc, 0x04, 0x88, 0x04, + 0x06, 0x03, 0x00, 0x00, 0x80, 0x03, 0x5c, 0x04, 0x62, 0x04, 0xa2, 0x02, 0x1c, 0x03, 0xc0, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x0c, 0x06, 0x02, 0x08, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x10, 0x02, 0x08, 0x0c, 0x06, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, + 0xa0, 0x00, 0xf8, 0x03, 0xa0, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, + 0xf8, 0x03, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x00, 0x06, 0x80, 0x01, 0x70, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x01, 0x04, 0x02, 0x02, 0x04, 0x02, 0x04, 0x04, 0x02, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x04, 0x04, 0x04, 0xfe, 0x07, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x0c, 0x04, 0x02, 0x06, + 0x02, 0x05, 0x82, 0x04, 0x62, 0x04, 0x1c, 0x04, 0x00, 0x00, 0x02, 0x03, 0x02, 0x04, 0x22, 0x04, + 0x32, 0x04, 0x2a, 0x04, 0xc6, 0x03, 0x00, 0x00, 0x80, 0x01, 0x60, 0x01, 0x18, 0x01, 0x04, 0x01, + 0xfe, 0x07, 0x00, 0x01, 0x00, 0x00, 0x3e, 0x03, 0x12, 0x04, 0x12, 0x04, 0x12, 0x04, 0x12, 0x04, + 0xe2, 0x03, 0x00, 0x00, 0xf8, 0x03, 0x44, 0x04, 0x22, 0x04, 0x22, 0x04, 0x22, 0x04, 0xc0, 0x03, + 0x00, 0x00, 0x02, 0x00, 0x02, 0x06, 0x82, 0x01, 0x62, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x8c, 0x03, 0x52, 0x04, 0x22, 0x04, 0x22, 0x04, 0x52, 0x04, 0x8c, 0x03, 0x00, 0x00, 0x3c, 0x03, + 0x42, 0x04, 0x42, 0x04, 0x42, 0x04, 0x22, 0x02, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x02, 0x38, 0x07, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x09, + 0x30, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xa0, 0x00, 0x10, 0x01, + 0x08, 0x02, 0x04, 0x04, 0x00, 0x00, 0x90, 0x00, 0x90, 0x00, 0x90, 0x00, 0x90, 0x00, 0x90, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x08, 0x02, 0x10, 0x01, 0xa0, 0x00, 0x40, 0x00, + 0x00, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x02, 0x00, 0xe2, 0x06, 0x12, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0xf8, 0x01, 0x04, 0x02, 0xf2, 0x04, 0x0a, 0x05, 0x0a, 0x05, 0xfc, 0x05, 0x00, 0x00, 0xf8, 0x07, + 0x44, 0x00, 0x42, 0x00, 0x42, 0x00, 0x44, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xfe, 0x07, 0x22, 0x04, + 0x22, 0x04, 0x22, 0x04, 0x54, 0x02, 0x88, 0x01, 0x00, 0x00, 0xfc, 0x03, 0x02, 0x04, 0x02, 0x04, + 0x02, 0x04, 0x02, 0x04, 0x0c, 0x03, 0x00, 0x00, 0xfe, 0x07, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, + 0x04, 0x02, 0xf8, 0x01, 0x00, 0x00, 0xfe, 0x07, 0x22, 0x04, 0x22, 0x04, 0x22, 0x04, 0x02, 0x04, + 0x02, 0x04, 0x00, 0x00, 0xfe, 0x07, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfc, 0x03, 0x02, 0x04, 0x02, 0x04, 0x42, 0x04, 0x42, 0x02, 0xcc, 0x07, 0x00, 0x00, + 0xfe, 0x07, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x04, 0x02, 0x04, 0xfe, 0x07, 0x02, 0x04, 0x02, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, + 0x00, 0x04, 0x02, 0x04, 0xfe, 0x03, 0x02, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x20, 0x00, 0x50, 0x00, + 0x88, 0x00, 0x04, 0x01, 0x02, 0x06, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, + 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0xfe, 0x07, 0x0c, 0x00, 0x30, 0x00, 0x30, 0x00, 0x0c, 0x00, + 0xfe, 0x07, 0x00, 0x00, 0xfe, 0x07, 0x18, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0xfe, 0x07, + 0x00, 0x00, 0xfc, 0x03, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0xfc, 0x03, 0x00, 0x00, + 0xfe, 0x07, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xfc, 0x03, + 0x82, 0x04, 0x82, 0x04, 0x02, 0x05, 0x02, 0x0e, 0xfc, 0x13, 0x00, 0x00, 0xfe, 0x07, 0x42, 0x00, + 0x42, 0x00, 0xc2, 0x00, 0x42, 0x01, 0x3c, 0x06, 0x00, 0x00, 0x1c, 0x03, 0x22, 0x04, 0x22, 0x04, + 0x42, 0x04, 0x42, 0x04, 0x8c, 0x03, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfe, 0x07, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfe, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, + 0xfe, 0x03, 0x00, 0x00, 0x1e, 0x00, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x07, 0xe0, 0x00, 0x1e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x04, 0x80, 0x03, 0x00, 0x04, 0xfe, 0x03, 0x00, 0x00, + 0x06, 0x06, 0x98, 0x01, 0x60, 0x00, 0x60, 0x00, 0x98, 0x01, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x30, 0x00, 0xc0, 0x07, 0x30, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, 0x05, + 0x42, 0x04, 0x32, 0x04, 0x0a, 0x04, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1f, + 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x70, 0x00, 0x80, 0x01, + 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0xff, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x03, + 0x90, 0x04, 0x90, 0x04, 0x90, 0x04, 0x90, 0x04, 0xe0, 0x07, 0x00, 0x00, 0xfe, 0x07, 0x20, 0x02, + 0x10, 0x04, 0x10, 0x04, 0x10, 0x04, 0xe0, 0x03, 0x00, 0x00, 0xe0, 0x03, 0x10, 0x04, 0x10, 0x04, + 0x10, 0x04, 0x10, 0x04, 0x20, 0x02, 0x00, 0x00, 0xe0, 0x03, 0x10, 0x04, 0x10, 0x04, 0x10, 0x04, + 0x20, 0x02, 0xfe, 0x07, 0x00, 0x00, 0xe0, 0x03, 0x90, 0x04, 0x90, 0x04, 0x90, 0x04, 0x90, 0x04, + 0xe0, 0x02, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0xfc, 0x07, 0x22, 0x00, 0x22, 0x00, 0x04, 0x00, + 0x00, 0x00, 0xe0, 0x0c, 0x10, 0x13, 0x10, 0x15, 0x10, 0x15, 0xe0, 0x14, 0x10, 0x08, 0x00, 0x00, + 0xfe, 0x07, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x10, 0x04, 0xf6, 0x07, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, + 0x00, 0x10, 0x00, 0x10, 0x10, 0x10, 0xf6, 0x0f, 0x00, 0x00, 0xfe, 0x07, 0x80, 0x00, 0xc0, 0x00, + 0x20, 0x01, 0x10, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x04, 0xfe, 0x07, + 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x10, 0x00, 0xe0, 0x03, 0x10, 0x00, + 0xe0, 0x07, 0x00, 0x00, 0xf0, 0x07, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xe0, 0x07, + 0x00, 0x00, 0xe0, 0x03, 0x10, 0x04, 0x10, 0x04, 0x10, 0x04, 0x10, 0x04, 0xe0, 0x03, 0x00, 0x00, + 0xf0, 0x1f, 0x20, 0x02, 0x10, 0x04, 0x10, 0x04, 0x10, 0x04, 0xe0, 0x03, 0x00, 0x00, 0xe0, 0x03, + 0x10, 0x04, 0x10, 0x04, 0x10, 0x04, 0x20, 0x02, 0xf0, 0x1f, 0x00, 0x00, 0xf0, 0x07, 0x20, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x60, 0x00, 0x00, 0x00, 0x20, 0x02, 0x50, 0x04, 0x90, 0x04, + 0x90, 0x04, 0x10, 0x05, 0x20, 0x02, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0xfe, 0x03, 0x10, 0x04, + 0x10, 0x04, 0x00, 0x02, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, + 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x80, 0x01, 0x00, 0x06, 0x80, 0x01, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x04, 0xc0, 0x03, 0x00, 0x04, 0xf0, 0x03, 0x00, 0x00, + 0x30, 0x06, 0x40, 0x01, 0x80, 0x00, 0x80, 0x00, 0x40, 0x01, 0x30, 0x06, 0x00, 0x00, 0xf0, 0x09, + 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x11, 0xf0, 0x0f, 0x00, 0x00, 0x10, 0x04, 0x10, 0x06, + 0x90, 0x05, 0x50, 0x04, 0x30, 0x04, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, + 0xbe, 0x0f, 0x01, 0x10, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0x10, 0xbe, 0x0f, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x06, 0x00, + 0x00, 0x00, +}; + +static const struct mf_bwfont_char_range_s mf_bwfont_fixed_7x14_char_ranges[] = { + { + 32, /* first char */ + 95, /* char count */ + 0, /* offset x */ + 0, /* offset y */ + 2, /* height in bytes */ + 13, /* height in pixels */ + 7, /* width */ + 0, /* glyph widths */ + 0, /* glyph offsets */ + mf_bwfont_fixed_7x14_glyph_data_0, /* glyph data */ + }, +}; + +const struct mf_bwfont_s mf_bwfont_fixed_7x14 = { + { + "-Misc-Fixed-Medium-R-Normal--14-130-75-75-C-70-ISO8859-15", + "fixed_7x14", + 7, /* width */ + 13, /* height */ + 7, /* min x advance */ + 7, /* max x advance */ + 0, /* baseline x */ + 11, /* baseline y */ + 14, /* line height */ + 3, /* flags */ + 63, /* fallback character */ + &mf_bwfont_character_width, + &mf_bwfont_render_character, + }, + 4, /* version */ + 1, /* char range count */ + mf_bwfont_fixed_7x14_char_ranges, +}; + +#ifdef MF_INCLUDED_FONTS +/* List entry for searching fonts by name. */ +static const struct mf_font_list_s mf_bwfont_fixed_7x14_listentry = { + MF_INCLUDED_FONTS, + (struct mf_font_s*)&mf_bwfont_fixed_7x14 +}; +#undef MF_INCLUDED_FONTS +#define MF_INCLUDED_FONTS (&mf_bwfont_fixed_7x14_listentry) +#endif + + +/* End of automatically generated font definition for fixed_7x14. */ + diff --git a/src/gdisp/fonts/fonts.h b/src/gdisp/fonts/fonts.h new file mode 100644 index 00000000..3b67de84 --- /dev/null +++ b/src/gdisp/fonts/fonts.h @@ -0,0 +1,62 @@ + +#include + +#if defined(GDISP_INCLUDE_FONT_DEJAVUSANS10) && GDISP_INCLUDE_FONT_DEJAVUSANS10 +#include "DejaVuSans10.c" +#endif + +#if defined(GDISP_INCLUDE_FONT_DEJAVUSANS12_AA) && GDISP_INCLUDE_FONT_DEJAVUSANS12_AA +#include "DejaVuSans12_aa.c" +#endif + +#if defined(GDISP_INCLUDE_FONT_DEJAVUSANS12) && GDISP_INCLUDE_FONT_DEJAVUSANS12 +#include "DejaVuSans12.c" +#endif + +#if defined(GDISP_INCLUDE_FONT_DEJAVUSANS16_AA) && GDISP_INCLUDE_FONT_DEJAVUSANS16_AA +#include "DejaVuSans16_aa.c" +#endif + +#if defined(GDISP_INCLUDE_FONT_DEJAVUSANS16) && GDISP_INCLUDE_FONT_DEJAVUSANS16 +#include "DejaVuSans16.c" +#endif + +#if defined(GDISP_INCLUDE_FONT_DEJAVUSANS24_AA) && GDISP_INCLUDE_FONT_DEJAVUSANS24_AA +#include "DejaVuSans24_aa.c" +#endif + +#if defined(GDISP_INCLUDE_FONT_DEJAVUSANS24) && GDISP_INCLUDE_FONT_DEJAVUSANS24 +#include "DejaVuSans24.c" +#endif + +#if defined(GDISP_INCLUDE_FONT_DEJAVUSANS32_AA) && GDISP_INCLUDE_FONT_DEJAVUSANS32_AA +#include "DejaVuSans32_aa.c" +#endif + +#if defined(GDISP_INCLUDE_FONT_DEJAVUSANS32) && GDISP_INCLUDE_FONT_DEJAVUSANS32 +#include "DejaVuSans32.c" +#endif + +#if defined(GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA) && GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA +#include "DejaVuSansBold12_aa.c" +#endif + +#if defined(GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12) && GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12 +#include "DejaVuSansBold12.c" +#endif + +#if defined(GDISP_INCLUDE_FONT_FIXED_10X20) && GDISP_INCLUDE_FONT_FIXED_10X20 +#include "fixed_10x20.c" +#endif + +#if defined(GDISP_INCLUDE_FONT_FIXED_5X8) && GDISP_INCLUDE_FONT_FIXED_5X8 +#include "fixed_5x8.c" +#endif + +#if defined(GDISP_INCLUDE_FONT_FIXED_7X14) && GDISP_INCLUDE_FONT_FIXED_7X14 +#include "fixed_7x14.c" +#endif + +#if defined(GDISP_INCLUDE_FONT_LARGENUMBERS) && GDISP_INCLUDE_FONT_LARGENUMBERS +#include "LargeNumbers.c" +#endif diff --git a/src/gdisp/gdisp.c b/src/gdisp/gdisp.c index 4c005079..f7a94a60 100644 --- a/src/gdisp/gdisp.c +++ b/src/gdisp/gdisp.c @@ -17,7 +17,7 @@ #if GFX_USE_GDISP #ifdef GDISP_NEED_TEXT - #include "gdisp/fonts.h" + #include "mcufont.h" #endif /* Include the low level driver information */ @@ -400,13 +400,13 @@ void gdispFillRoundedBox(coord_t x, coord_t y, coord_t cx, coord_t cy, coord_t r #endif #if (GDISP_NEED_TEXT && GDISP_NEED_MULTITHREAD) - void gdispDrawChar(coord_t x, coord_t y, char c, font_t font, color_t color) { + void gdispDrawChar(coord_t x, coord_t y, uint16_t c, font_t font, color_t color) { gfxMutexEnter(&gdispMutex); gdisp_lld_draw_char(x, y, c, font, color); gfxMutexExit(&gdispMutex); } #elif GDISP_NEED_TEXT && GDISP_NEED_ASYNC - void gdispDrawChar(coord_t x, coord_t y, char c, font_t font, color_t color) { + void gdispDrawChar(coord_t x, coord_t y, uint16_t c, font_t font, color_t color) { gdisp_lld_msg_t *p = gdispAllocMsg(GDISP_LLD_MSG_DRAWCHAR); p->drawchar.x = x; p->drawchar.y = y; @@ -418,13 +418,13 @@ void gdispFillRoundedBox(coord_t x, coord_t y, coord_t cx, coord_t cy, coord_t r #endif #if (GDISP_NEED_TEXT && GDISP_NEED_MULTITHREAD) - void gdispFillChar(coord_t x, coord_t y, char c, font_t font, color_t color, color_t bgcolor) { + void gdispFillChar(coord_t x, coord_t y, uint16_t c, font_t font, color_t color, color_t bgcolor) { gfxMutexEnter(&gdispMutex); gdisp_lld_fill_char(x, y, c, font, color, bgcolor); gfxMutexExit(&gdispMutex); } #elif GDISP_NEED_TEXT && GDISP_NEED_ASYNC - void gdispFillChar(coord_t x, coord_t y, char c, font_t font, color_t color, color_t bgcolor) { + void gdispFillChar(coord_t x, coord_t y, uint16_t c, font_t font, color_t color, color_t bgcolor) { gdisp_lld_msg_t *p = gdispAllocMsg(GDISP_LLD_MSG_FILLCHAR); p->fillchar.x = x; p->fillchar.y = y; @@ -619,321 +619,206 @@ void gdispDrawBox(coord_t x, coord_t y, coord_t cx, coord_t cy, color_t color) { } #endif - #if GDISP_NEED_TEXT +#if GDISP_NEED_TEXT + typedef struct + { + font_t font; + color_t color; + } gdispDrawString_state_t; + + /* Callback to render characters. */ + static uint8_t gdispDrawString_callback(int16_t x, int16_t y, + mf_char character, void *state) + { + gdispDrawString_state_t *s = state; + uint8_t w; + + gdispDrawChar(x, y, character, s->font, s->color); + w = mf_character_width(s->font, character); + return w; + } + void gdispDrawString(coord_t x, coord_t y, const char *str, font_t font, color_t color) { /* No mutex required as we only call high level functions which have their own mutex */ - coord_t w, p; - char c; - int first; + gdispDrawString_state_t state; - if (!str) return; + state.font = font; + state.color = color; - first = 1; - p = font->charPadding * font->xscale; - while(*str) { - /* Get the next printable character */ - c = *str++; - w = _getCharWidth(font, c) * font->xscale; - if (!w) continue; - - /* Handle inter-character padding */ - if (p) { - if (!first) - x += p; - else - first = 0; - } - - /* Print the character */ - gdispDrawChar(x, y, c, font, color); - x += w; - } + mf_render_aligned(font, x, y, MF_ALIGN_LEFT, str, 0, + gdispDrawString_callback, &state); } #endif #if GDISP_NEED_TEXT + typedef struct + { + coord_t y0; + coord_t prev_x; + font_t font; + color_t color; + color_t bgcolor; + bool_t rightalign; + } gdispFillString_state_t; + + /* Callback to render characters. */ + static uint8_t gdispFillString_callback(int16_t x, int16_t y, + mf_char character, void *state) + { + gdispFillString_state_t *s = state; + uint8_t w; + int16_t right_edge; + w = mf_character_width(s->font, character); + right_edge = x + w + s->font->baseline_x; + + if (!s->rightalign) + { + if (s->prev_x < x) + { + /* Fill any space between characters */ + gdispFillArea(s->prev_x, s->y0, x - s->prev_x, s->font->height, + s->bgcolor); + } + else if (s->prev_x > x) + { + /* Uh, looks like there is some kerning going on. If we would + * just call gdispFillChar() here, it would overwrite part of + * the previous character. Instead, fill background separately. + */ + gdispFillArea(s->prev_x, s->y0, right_edge - s->prev_x, + s->font->height, s->bgcolor); + gdispDrawChar(x, y, character, s->font, s->color); + s->prev_x = right_edge; + return w; + } + + s->prev_x = right_edge; + } + else + { + /* When rendering right-aligned text, the characters are drawn + * from right to left. */ + if (s->prev_x > right_edge) + { + /* Fill any space between characters */ + gdispFillArea(right_edge, s->y0, s->prev_x - right_edge, + s->font->height, s->bgcolor); + } + else if (s->prev_x < right_edge) + { + gdispFillArea(x, s->y0, s->prev_x - x, + s->font->height, s->bgcolor); + gdispDrawChar(x, y, character, s->font, s->color); + s->prev_x = x; + return w; + } + + s->prev_x = x; + } + + gdispFillChar(x, y, character, s->font, s->color, s->bgcolor); + + return w; + } + void gdispFillString(coord_t x, coord_t y, const char *str, font_t font, color_t color, color_t bgcolor) { /* No mutex required as we only call high level functions which have their own mutex */ - coord_t w, h, p; - char c; - int first; + gdispFillString_state_t state; - if (!str) return; + state.y0 = y; + state.prev_x = x; + state.font = font; + state.color = color; + state.bgcolor = bgcolor; + state.rightalign = false; - first = 1; - h = font->height * font->yscale; - p = font->charPadding * font->xscale; - while(*str) { - /* Get the next printable character */ - c = *str++; - w = _getCharWidth(font, c) * font->xscale; - if (!w) continue; - - /* Handle inter-character padding */ - if (p) { - if (!first) { - gdispFillArea(x, y, p, h, bgcolor); - x += p; - } else - first = 0; - } - - /* Print the character */ - gdispFillChar(x, y, c, font, color, bgcolor); - x += w; - } + x += font->baseline_x; + mf_render_aligned(font, x, y, MF_ALIGN_LEFT, str, 0, + gdispFillString_callback, &state); } #endif #if GDISP_NEED_TEXT void gdispDrawStringBox(coord_t x, coord_t y, coord_t cx, coord_t cy, const char* str, font_t font, color_t color, justify_t justify) { /* No mutex required as we only call high level functions which have their own mutex */ - coord_t w, h, p, ypos, xpos; - char c; - int first; - const char *rstr; + gdispDrawString_state_t state; - if (!str) str = ""; - - h = font->height * font->yscale; - p = font->charPadding * font->xscale; - - /* Oops - font too large for the area */ - if (h > cy) return; - - /* See if we need to fill above the font */ - ypos = (cy - h + 1)/2; - if (ypos > 0) { - y += ypos; - cy -= ypos; - } + state.font = font; + state.color = color; - /* See if we need to fill below the font */ - ypos = cy - h; - if (ypos > 0) - cy -= ypos; - - /* get the start of the printable string and the xpos */ - switch(justify) { - case justifyCenter: - /* Get the length of the entire string */ - w = gdispGetStringWidth(str, font); - if (w <= cx) - xpos = x + (cx - w)/2; - else { - /* Calculate how much of the string we need to get rid of */ - ypos = (w - cx)/2; - xpos = 0; - first = 1; - while(*str) { - /* Get the next printable character */ - c = *str++; - w = _getCharWidth(font, c) * font->xscale; - if (!w) continue; - - /* Handle inter-character padding */ - if (p) { - if (!first) { - xpos += p; - if (xpos > ypos) break; - } else - first = 0; - } + /* Select the anchor position */ + if (justify == justifyLeft) + x += font->baseline_x; + else if (justify == justifyCenter) + x += (cx + 1) / 2; + else if (justify == justifyRight) + x += cx; - /* Print the character */ - xpos += w; - if (xpos > ypos) break; - } - xpos = ypos - xpos + x; - } - break; - case justifyRight: - /* Find the end of the string */ - for(rstr = str; *str; str++); - xpos = x+cx - 2; - first = 1; - for(str--; str >= rstr; str--) { - /* Get the next printable character */ - c = *str; - w = _getCharWidth(font, c) * font->xscale; - if (!w) continue; - - /* Handle inter-character padding */ - if (p) { - if (!first) { - if (xpos - p < x) break; - xpos -= p; - } else - first = 0; - } - - /* Print the character */ - if (xpos - w < x) break; - xpos -= w; - } - str++; - break; - case justifyLeft: - /* Fall through */ - default: - xpos = x+1; - break; - } - - /* Print characters until we run out of room */ - first = 1; - while(*str) { - /* Get the next printable character */ - c = *str++; - w = _getCharWidth(font, c) * font->xscale; - if (!w) continue; - - /* Handle inter-character padding */ - if (p) { - if (!first) { - if (xpos + p > x+cx) break; - xpos += p; - } else - first = 0; - } - - /* Print the character */ - if (xpos + w > x+cx) break; - gdispDrawChar(xpos, y, c, font, color); - xpos += w; - } + mf_render_aligned(font, x, y, justify, str, 0, + gdispDrawString_callback, &state); } #endif #if GDISP_NEED_TEXT void gdispFillStringBox(coord_t x, coord_t y, coord_t cx, coord_t cy, const char* str, font_t font, color_t color, color_t bgcolor, justify_t justify) { /* No mutex required as we only call high level functions which have their own mutex */ - coord_t w, h, p, ypos, xpos; - char c; - int first; - const char *rstr; + gdispFillString_state_t state; + int16_t min_x, max_x; - if (!str) str = ""; - - h = font->height * font->yscale; - p = font->charPadding * font->xscale; - - /* Oops - font too large for the area */ - if (h > cy) return; - - /* See if we need to fill above the font */ - ypos = (cy - h + 1)/2; - if (ypos > 0) { - gdispFillArea(x, y, cx, ypos, bgcolor); - y += ypos; - cy -= ypos; + min_x = x; + max_x = x + cx; + + state.y0 = y + (cy - font->height + 1) / 2; + state.prev_x = x; + state.font = font; + state.color = color; + state.bgcolor = bgcolor; + state.rightalign = false; + + /* Fill above the text */ + if (state.y0 > y) + { + gdispFillArea(x, y, cx, state.y0 - y, bgcolor); } - /* See if we need to fill below the font */ - ypos = cy - h; - if (ypos > 0) { - gdispFillArea(x, y+cy-ypos, cx, ypos, bgcolor); - cy -= ypos; + /* Fill below the text */ + if (state.y0 + font->height < y + cy) + { + gdispFillArea(x, state.y0 + font->height, cx, + (y + cy) - (state.y0 + font->height), bgcolor); } - /* get the start of the printable string and the xpos */ - switch(justify) { - case justifyCenter: - /* Get the length of the entire string */ - w = gdispGetStringWidth(str, font); - if (w <= cx) - xpos = x + (cx - w)/2; - else { - /* Calculate how much of the string we need to get rid of */ - ypos = (w - cx)/2; - xpos = 0; - first = 1; - while(*str) { - /* Get the next printable character */ - c = *str++; - w = _getCharWidth(font, c) * font->xscale; - if (!w) continue; - - /* Handle inter-character padding */ - if (p) { - if (!first) { - xpos += p; - if (xpos > ypos) break; - } else - first = 0; - } - - /* Print the character */ - xpos += w; - if (xpos > ypos) break; - } - xpos = ypos - xpos + x; - } - break; - case justifyRight: - /* Find the end of the string */ - for(rstr = str; *str; str++); - xpos = x+cx - 2; - first = 1; - for(str--; str >= rstr; str--) { - /* Get the next printable character */ - c = *str; - w = _getCharWidth(font, c) * font->xscale; - if (!w) continue; - - /* Handle inter-character padding */ - if (p) { - if (!first) { - if (xpos - p < x) break; - xpos -= p; - } else - first = 0; - } - - /* Print the character */ - if (xpos - w < x) break; - xpos -= w; - } - str++; - break; - case justifyLeft: - /* Fall through */ - default: - xpos = x+1; - break; + /* Select the anchor position */ + if (justify == justifyLeft) + { + x += font->baseline_x; + } + else if (justify == justifyCenter) + { + x += (cx + 1) / 2; + } + else if (justify == justifyRight) + { + state.rightalign = true; + state.prev_x = x + cx; + x += cx; } - /* Fill any space to the left */ - if (x < xpos) - gdispFillArea(x, y, xpos-x, cy, bgcolor); + /* Render */ + mf_render_aligned(font, x, state.y0, justify, str, 0, + gdispFillString_callback, &state); - /* Print characters until we run out of room */ - first = 1; - while(*str) { - /* Get the next printable character */ - c = *str++; - w = _getCharWidth(font, c) * font->xscale; - if (!w) continue; - - /* Handle inter-character padding */ - if (p) { - if (!first) { - if (xpos + p > x+cx) break; - gdispFillArea(xpos, y, p, cy, bgcolor); - xpos += p; - } else - first = 0; - } - - /* Print the character */ - if (xpos + w > x+cx) break; - gdispFillChar(xpos, y, c, font, color, bgcolor); - xpos += w; + /* Fill any space left */ + if (!state.rightalign && state.prev_x < max_x) + { + gdispFillArea(state.prev_x, state.y0, max_x - state.prev_x, + state.font->height, bgcolor); + } + else if (state.rightalign && state.prev_x > min_x) + { + gdispFillArea(min_x, state.y0, state.prev_x - min_x, + state.font->height, bgcolor); } - - /* Fill any space to the right */ - if (xpos < x+cx) - gdispFillArea(xpos, y, x+cx-xpos, cy, bgcolor); } #endif @@ -941,12 +826,12 @@ void gdispDrawBox(coord_t x, coord_t y, coord_t cx, coord_t cy, color_t color) { coord_t gdispGetFontMetric(font_t font, fontmetric_t metric) { /* No mutex required as we only read static data */ switch(metric) { - case fontHeight: return font->height * font->yscale; - case fontDescendersHeight: return font->descenderHeight * font->yscale; - case fontLineSpacing: return font->lineSpacing * font->yscale; - case fontCharPadding: return font->charPadding * font->xscale; - case fontMinWidth: return font->minWidth * font->xscale; - case fontMaxWidth: return font->maxWidth * font->xscale; + case fontHeight: return font->height; + case fontDescendersHeight: return font->height - font->baseline_y; + case fontLineSpacing: return font->line_height; + case fontCharPadding: return 0; + case fontMinWidth: return font->min_x_advance; + case fontMaxWidth: return font->max_x_advance; } return 0; } @@ -955,41 +840,38 @@ void gdispDrawBox(coord_t x, coord_t y, coord_t cx, coord_t cy, color_t color) { #if GDISP_NEED_TEXT coord_t gdispGetCharWidth(char c, font_t font) { /* No mutex required as we only read static data */ - return _getCharWidth(font, c) * font->xscale; + return mf_character_width(font, c); } #endif #if GDISP_NEED_TEXT coord_t gdispGetStringWidth(const char* str, font_t font) { /* No mutex required as we only read static data */ - coord_t w, p, x; - char c; - int first; - - first = 1; - x = 0; - p = font->charPadding * font->xscale; - while(*str) { - /* Get the next printable character */ - c = *str++; - w = _getCharWidth(font, c) * font->xscale; - if (!w) continue; - - /* Handle inter-character padding */ - if (p) { - if (!first) - x += p; - else - first = 0; - } - - /* Add the character width */ - x += w; - } - return x; + return mf_get_string_width(font, str, 0, 0); } #endif +color_t gdispBlendColor(color_t fg, color_t bg, uint8_t alpha) +{ + uint16_t fg_ratio = alpha + 1; + uint16_t bg_ratio = 256 - alpha; + uint16_t r, g, b; + + r = RED_OF(fg) * fg_ratio; + g = GREEN_OF(fg) * fg_ratio; + b = BLUE_OF(fg) * fg_ratio; + + r += RED_OF(bg) * bg_ratio; + g += GREEN_OF(bg) * bg_ratio; + b += BLUE_OF(bg) * bg_ratio; + + r /= 256; + g /= 256; + b /= 256; + + return RGB2COLOR(r, g, b); +} + #if (!defined(gdispPackPixels) && !defined(GDISP_PIXELFORMAT_CUSTOM)) void gdispPackPixels(pixel_t *buf, coord_t cx, coord_t x, coord_t y, color_t color) { /* No mutex required as we only read static data */ diff --git a/src/gdisp/gdisp.mk b/src/gdisp/gdisp.mk index caa5f65d..a93394e8 100644 --- a/src/gdisp/gdisp.mk +++ b/src/gdisp/gdisp.mk @@ -7,3 +7,9 @@ GFXSRC += $(GFXLIB)/src/gdisp/gdisp.c \ $(GFXLIB)/src/gdisp/image_jpg.c \ $(GFXLIB)/src/gdisp/image_png.c +MFDIR = $(GFXLIB)/src/gdisp/mcufont +include $(GFXLIB)/src/gdisp/mcufont/mcufont.mk +GFXINC += $(MFDIR) +GFXSRC += $(MFSRC) + +GFXINC += $(GFXLIB)/src/gdisp/fonts diff --git a/src/gdisp/mcufont/mcufont.h b/src/gdisp/mcufont/mcufont.h new file mode 100644 index 00000000..8a81ff42 --- /dev/null +++ b/src/gdisp/mcufont/mcufont.h @@ -0,0 +1,14 @@ +/* Tiny library for rendering compressed bitmap fonts on microcontrollers. */ + +#ifndef _MCUFONT_H_ +#define _MCUFONT_H_ + +#include "mf_config.h" +#include "mf_encoding.h" +#include "mf_justify.h" +#include "mf_kerning.h" +#include "mf_rlefont.h" +#include "mf_scaledfont.h" +#include "mf_wordwrap.h" + +#endif diff --git a/src/gdisp/mcufont/mcufont.mk b/src/gdisp/mcufont/mcufont.mk new file mode 100644 index 00000000..0b402877 --- /dev/null +++ b/src/gdisp/mcufont/mcufont.mk @@ -0,0 +1,19 @@ +# Makefile fragment listing the source files for the mcufont decoder. + +# Directory where the decoder source code recides +# Usually you'll want to set this in your own Makefile. +MFDIR ?= mcufont/decoder + +# Name of the include directory +MFINC = $(MFDIR) + +# Source code files to include +MFSRC = \ + $(MFDIR)/mf_encoding.c \ + $(MFDIR)/mf_font.c \ + $(MFDIR)/mf_justify.c \ + $(MFDIR)/mf_kerning.c \ + $(MFDIR)/mf_rlefont.c \ + $(MFDIR)/mf_bwfont.c \ + $(MFDIR)/mf_scaledfont.c \ + $(MFDIR)/mf_wordwrap.c diff --git a/src/gdisp/mcufont/mf_bwfont.c b/src/gdisp/mcufont/mf_bwfont.c new file mode 100644 index 00000000..918fbb29 --- /dev/null +++ b/src/gdisp/mcufont/mf_bwfont.c @@ -0,0 +1,134 @@ +#include "mf_bwfont.h" +#include + +/* Find the character range and index that contains a given glyph.. */ +static const struct mf_bwfont_char_range_s *find_char_range( + const struct mf_bwfont_s *font, uint16_t character, uint16_t *index_ret) +{ + unsigned i, index; + const struct mf_bwfont_char_range_s *range; + for (i = 0; i < font->char_range_count; i++) + { + range = &font->char_ranges[i]; + index = character - range->first_char; + if (character >= range->first_char && index < range->char_count) + { + *index_ret = index; + return range; + } + } + + return 0; +} + +static uint8_t get_width(const struct mf_bwfont_char_range_s *r, uint16_t index) +{ + if (r->width) + { + return r->width + r->offset_x; + } + else + { + return r->glyph_widths[index]; + } +} + +static uint8_t render_char(const struct mf_bwfont_char_range_s *r, + int16_t x0, int16_t y0, uint16_t index, + mf_pixel_callback_t callback, + void *state) +{ + const uint8_t *data, *p; + uint8_t stride, runlen; + uint8_t x, y, height, num_cols; + uint8_t bit, byte, mask; + bool oldstate, newstate; + + if (r->width) + { + data = r->glyph_data + r->width * index * r->height_bytes; + num_cols = r->width; + } + else + { + data = r->glyph_data + r->glyph_offsets[index] * r->height_bytes; + num_cols = r->glyph_offsets[index + 1] - r->glyph_offsets[index]; + } + + stride = r->height_bytes; + height = r->height_pixels; + y0 += r->offset_y; + x0 += r->offset_x; + bit = 0; + byte = 0; + + for (y = 0; y < height; y++) + { + mask = (1 << bit); + + oldstate = false; + runlen = 0; + p = data + byte; + for (x = 0; x < num_cols; x++, p += stride) + { + newstate = *p & mask; + if (newstate != oldstate) + { + if (oldstate && runlen) + { + callback(x0 + x - runlen, y0 + y, runlen, 255, state); + } + + oldstate = newstate; + runlen = 0; + } + + runlen++; + } + + if (oldstate && runlen) + { + callback(x0 + x - runlen, y0 + y, runlen, 255, state); + } + + bit++; + if (bit > 7) + { + bit = 0; + byte++; + } + } + + return get_width(r, index); +} + +uint8_t mf_bwfont_render_character(const struct mf_font_s *font, + int16_t x0, int16_t y0, + uint16_t character, + mf_pixel_callback_t callback, + void *state) +{ + const struct mf_bwfont_s *bwfont = (const struct mf_bwfont_s*)font; + const struct mf_bwfont_char_range_s *range; + uint16_t index; + + range = find_char_range(bwfont, character, &index); + if (!range) + return 0; + + return render_char(range, x0, y0, index, callback, state); +} + +uint8_t mf_bwfont_character_width(const struct mf_font_s *font, + uint16_t character) +{ + const struct mf_bwfont_s *bwfont = (const struct mf_bwfont_s*)font; + const struct mf_bwfont_char_range_s *range; + uint16_t index; + + range = find_char_range(bwfont, character, &index); + if (!range) + return 0; + + return get_width(range, index); +} diff --git a/src/gdisp/mcufont/mf_bwfont.h b/src/gdisp/mcufont/mf_bwfont.h new file mode 100644 index 00000000..9aea2ac9 --- /dev/null +++ b/src/gdisp/mcufont/mf_bwfont.h @@ -0,0 +1,77 @@ +/* Uncompressed font format for storing black & white fonts. Very efficient + * to decode and works well for small font sizes. + */ + +#ifndef _MF_BWFONT_H_ +#define _MF_BWFONT_H_ + +#include "mf_font.h" + +/* Versions of the BW font format that are supported. */ +#define MF_BWFONT_VERSION_4_SUPPORTED 1 + +/* Structure for a range of characters. */ +struct mf_bwfont_char_range_s +{ + /* The number of the first character in this range. */ + uint16_t first_char; + + /* The total count of characters in this range. */ + uint16_t char_count; + + /* The left and top skips of the characters in this range. + * This is the number of empty rows at left and at top. */ + uint8_t offset_x; + uint8_t offset_y; + + /* Column height for glyphs in this range, in bytes and pixels. */ + uint8_t height_bytes; + uint8_t height_pixels; + + /* Positive value if the width of all glyphs in this range is the + * same, or zero if it is not. */ + uint8_t width; + + /* Lookup table for the character widths. NULL if width is specified. */ + const uint8_t *glyph_widths; + + /* Lookup table for the character offsets. Multiply by height_bytes + * to get the byte offset. Also allows lookup of the number of columns. + * NULL if width is specified. */ + const uint16_t *glyph_offsets; + + /* Table for the glyph data. + * The data for each glyph is column-by-column, with N bytes per each + * column. The LSB of the first byte is the top left pixel. + */ + const uint8_t *glyph_data; +}; + +/* Structure for the font */ +struct mf_bwfont_s +{ + struct mf_font_s font; + + /* Version of the font format. */ + const uint8_t version; + + /* Number of character ranges. */ + const uint8_t char_range_count; + + /* Array of the character ranges */ + const struct mf_bwfont_char_range_s *char_ranges; +}; + +#ifdef MF_BWFONT_INTERNALS +/* Internal functions, don't use these directly. */ +MF_EXTERN uint8_t mf_bwfont_render_character(const struct mf_font_s *font, + int16_t x0, int16_t y0, + mf_char character, + mf_pixel_callback_t callback, + void *state); + +MF_EXTERN uint8_t mf_bwfont_character_width(const struct mf_font_s *font, + mf_char character); +#endif + +#endif diff --git a/src/gdisp/mcufont/mf_config.h b/src/gdisp/mcufont/mf_config.h new file mode 100644 index 00000000..7e58c8f6 --- /dev/null +++ b/src/gdisp/mcufont/mf_config.h @@ -0,0 +1,148 @@ +/* Configuration constants for mcufont. */ + +#ifndef _MF_CONFIG_H_ +#define _MF_CONFIG_H_ + +#include + +/* Mapping from uGFX settings to mcufont settings */ +#if GDISP_NEED_UTF8 +#define MF_ENCODING MF_ENCODING_UTF8 +#else +#define MF_ENCODING MF_ENCODING_ASCII +#endif + +#define MF_USE_KERNING GDISP_NEED_TEXT_KERNING + +/* These are not used for now */ +#define MF_USE_ADVANCED_WORDWRAP 0 +#define MF_USE_JUSTIFY 0 + + +/******************************************************* + * Configuration settings related to build environment * + *******************************************************/ + +/* Name of the file that contains all the included fonts. */ +#ifndef MF_FONT_FILE_NAME +#define MF_FONT_FILE_NAME "fonts.h" +#endif + + +/***************************************** + * Configuration settings related to API * + *****************************************/ + +/* Encoding for the input data. + * With the unicode encodings, the library supports the range of unicode + * characters 0x0000-0xFFFF (the Basic Multilingual Plane). + * + * ASCII: Plain ascii (somewhat works with ISO8859-1 also) + * UTF8: UTF8 encoding (variable number of bytes) + * UTF16: UTF16 encoding (2 bytes per character, compatible with UCS-2) + * WCHAR: Use compiler's wchar_t (usually same as UTF16) + */ +#define MF_ENCODING_ASCII 0 +#define MF_ENCODING_UTF8 1 +#define MF_ENCODING_UTF16 2 +#define MF_ENCODING_WCHAR 3 +#ifndef MF_ENCODING +#define MF_ENCODING MF_ENCODING_UTF8 +#endif + + +/************************************************************************ + * Configuration settings related to visual appearance of rendered text * + ************************************************************************/ + +/* Minimum space between characters, in percents of the glyph width. + * Increasing this causes the kerning module to leave more space between + * characters. + */ +#ifndef MF_KERNING_SPACE_PERCENT +#define MF_KERNING_SPACE_PERCENT 15 +#endif + +/* Minimum space between characters, in pixels. Added to the percentual + * spacing. This pixel-based value guarantees enough space even with small + * fonts. + */ +#ifndef MF_KERNING_SPACE_PIXELS +#define MF_KERNING_SPACE_PIXELS 3 +#endif + +/* Maximum adjustment done by the kerning algorithm, as percent of the + * glyph width. + */ +#ifndef MF_KERNING_LIMIT +#define MF_KERNING_LIMIT 20 +#endif + +/* Spacing of tabulator stops. The value is multiplied by the width of the + * 'm' character in the current font. + */ +#ifndef MF_TABSIZE +#define MF_TABSIZE 8 +#endif + + +/************************************************************************* + * Configuration settings to strip down library to reduce resource usage * + *************************************************************************/ + +/* Enable or disable the kerning module. + * Disabling it saves some code size and run time, but causes the spacing + * between characters to be less consistent. + */ +#ifndef MF_USE_KERNING +#define MF_USE_KERNING 1 +#endif + +/* Enable or disable the advanced word wrap algorithm. + * If disabled, uses a simpler algorithm. + */ +#ifndef MF_USE_ADVANCED_WORDWRAP +#define MF_USE_ADVANCED_WORDWRAP 1 +#endif + +/* Enable of disable the justification algorithm. + * If disabled, mf_render_justified renders just left-aligned. + */ +#ifndef MF_USE_JUSTIFY +#define MF_USE_JUSTIFY 1 +#endif + +/* Enable or disable the center and right alignment code. + * If disabled, any alignment results in MF_ALIGN_LEFT. + */ +#ifndef MF_USE_ALIGN +#define MF_USE_ALIGN 1 +#endif + +/* Enable or disable the support for tab alignment. + * If disabled, tabs will be rendered as regular space character. + */ +#ifndef MF_USE_TABS +#define MF_USE_TABS 1 +#endif + +/* Number of vertical zones to use when computing kerning. + * Larger values give more accurate kerning, but are slower and use somewhat + * more memory. There is no point to increase this beyond the height of the + * font. + */ +#ifndef MF_KERNING_ZONES +#define MF_KERNING_ZONES 16 +#endif + + + +/* Add extern "C" when used from C++. */ +#ifdef __cplusplus +#define MF_EXTERN extern "C" +#else +#define MF_EXTERN extern +#endif + +#endif + diff --git a/src/gdisp/mcufont/mf_encoding.c b/src/gdisp/mcufont/mf_encoding.c new file mode 100644 index 00000000..4e3975ae --- /dev/null +++ b/src/gdisp/mcufont/mf_encoding.c @@ -0,0 +1,69 @@ +#include "mf_encoding.h" + +#if MF_ENCODING == MF_ENCODING_UTF8 + +mf_char mf_getchar(mf_str *str) +{ + uint8_t c; + uint8_t tmp, seqlen; + uint16_t result; + + c = **str; + if (!c) + return 0; + + (*str)++; + + if ((c & 0x80) == 0) + { + /* Just normal ASCII character. */ + return c; + } + else if ((c & 0xC0) == 0x80) + { + /* Dangling piece of corrupted multibyte sequence. + * Did you cut the string in the wrong place? + */ + return c; + } + else if ((**str & 0xC0) == 0xC0) + { + /* Start of multibyte sequence without any following bytes. + * Silly. Maybe you are using the wrong encoding. + */ + return c; + } + else + { + /* Beginning of a multi-byte sequence. + * Find out how many characters and combine them. + */ + seqlen = 2; + tmp = 0x20; + result = 0; + while ((c & tmp) && (seqlen < 5)) + { + seqlen++; + tmp >>= 1; + + result = (result << 6) | (**str & 0x3F); + (*str)++; + } + + result = (result << 6) | (**str & 0x3F); + (*str)++; + + result |= (c & (tmp - 1)) << ((seqlen - 1) * 6); + return result; + } +} + +void mf_rewind(mf_str *str) +{ + (*str)--; + + while ((**str & 0x80) != 0x00 && (**str & 0xC0) != 0xC0) + (*str)--; +} + +#endif diff --git a/src/gdisp/mcufont/mf_encoding.h b/src/gdisp/mcufont/mf_encoding.h new file mode 100644 index 00000000..e96718b7 --- /dev/null +++ b/src/gdisp/mcufont/mf_encoding.h @@ -0,0 +1,53 @@ +/* Simple UTF-8 decoder. Also implements the much simpler ASCII and UTF16 + * input encodings. + */ + +#ifndef _MF_ENCODING_H_ +#define _MF_ENCODING_H_ + +#include "mf_config.h" +#include + +/* Type used to represent characters internally. */ +#if MF_ENCODING == MF_ENCODING_ASCII +typedef char mf_char; +#else +typedef uint16_t mf_char; +#endif + +/* Type used to represent input strings. */ +#if MF_ENCODING == MF_ENCODING_ASCII +typedef const char * mf_str; +#elif MF_ENCODING == MF_ENCODING_UTF8 +typedef const char * mf_str; +#elif MF_ENCODING == MF_ENCODING_UTF16 +typedef const uint16_t * mf_str; +#elif MF_ENCODING == MF_ENCODING_WCHAR +#include +typedef const wchar_t * mf_str; +#endif + +/* Returns the next character in the string and advances the pointer. + * When the string ends, returns 0 and leaves the pointer at the 0 byte. + * + * str: Pointer to variable holding current location in string. + * Initialize it to the start of the string. + * + * Returns: The next character, as unicode codepoint. + */ +#if MF_ENCODING == MF_ENCODING_UTF8 +MF_EXTERN mf_char mf_getchar(mf_str *str); +#else +static mf_char mf_getchar(mf_str *str) { return *(*str)++; } +#endif + +/* Moves back the pointer to the beginning of the previous character. + * Be careful not to go beyond the start of the string. + */ +#if MF_ENCODING == MF_ENCODING_UTF8 +MF_EXTERN void mf_rewind(mf_str *str); +#else +static void mf_rewind(mf_str *str) { (*str)--; } +#endif + +#endif diff --git a/src/gdisp/mcufont/mf_font.c b/src/gdisp/mcufont/mf_font.c new file mode 100644 index 00000000..698a3d8e --- /dev/null +++ b/src/gdisp/mcufont/mf_font.c @@ -0,0 +1,77 @@ +#include "mf_font.h" +#include + +/* This will be made into a list of included fonts using macro magic. */ +#define MF_INCLUDED_FONTS 0 + +/* Included fonts begin here */ +#include MF_FONT_FILE_NAME +/* Include fonts end here */ + +uint8_t mf_render_character(const struct mf_font_s *font, + int16_t x0, int16_t y0, + mf_char character, + mf_pixel_callback_t callback, + void *state) +{ + uint8_t width; + width = font->render_character(font, x0, y0, character, callback, state); + + if (!width) + { + width = font->render_character(font, x0, y0, font->fallback_character, + callback, state); + } + + return width; +} + +uint8_t mf_character_width(const struct mf_font_s *font, + mf_char character) +{ + uint8_t width; + width = font->character_width(font, character); + + if (!width) + { + width = font->character_width(font, font->fallback_character); + } + + return width; +} + +/* Avoids a dependency on libc */ +static bool strequals(const char *a, const char *b) +{ + while (*a) + { + if (*a++ != *b++) + return false; + } + return (!*b); +} + +const struct mf_font_s *mf_find_font(const char *name) +{ + const struct mf_font_list_s *f; + f = MF_INCLUDED_FONTS; + + while (f) + { + if (strequals(f->font->full_name, name) || + strequals(f->font->short_name, name)) + { + return f->font; + } + + f = f->next; + } + + return 0; +} + +const struct mf_font_list_s *mf_get_font_list() +{ + return MF_INCLUDED_FONTS; +} + diff --git a/src/gdisp/mcufont/mf_font.h b/src/gdisp/mcufont/mf_font.h new file mode 100644 index 00000000..591ebab6 --- /dev/null +++ b/src/gdisp/mcufont/mf_font.h @@ -0,0 +1,118 @@ +/* Generic font type that supports fonts with multiple kinds of compression. + * Provides an interface for decoding and rendering single characters. + */ + +#ifndef _MF_FONT_H_ +#define _MF_FONT_H_ + +#include "mf_encoding.h" + +/* Callback function that writes pixels to screen / buffer / whatever. + * + * x: X coordinate of the first pixel to write. + * y: Y coordinate of the first pixel to write. + * count: Number of pixels to fill (horizontally). + * alpha: The "opaqueness" of the pixels, 0 for background, 255 for text. + * state: Free variable that was passed to render_character(). + */ +typedef void (*mf_pixel_callback_t) (int16_t x, int16_t y, uint8_t count, + uint8_t alpha, void *state); + +/* General information about a font. */ +struct mf_font_s +{ + /* Full name of the font, comes from the original font file. */ + const char *full_name; + + /* Short name of the font, comes from file name. */ + const char *short_name; + + /* Width and height of the character bounding box. */ + uint8_t width; + uint8_t height; + + /* Minimum and maximum tracking width of characters. */ + uint8_t min_x_advance; + uint8_t max_x_advance; + + /* Location of the text baseline relative to character. */ + uint8_t baseline_x; + uint8_t baseline_y; + + /* Line height of the font (vertical advance). */ + uint8_t line_height; + + /* Flags identifying various aspects of the font. */ + uint8_t flags; + + /* Fallback character to use for missing glyphs. */ + mf_char fallback_character; + + /* Function to get character width. Should return 0 if character is + * not found. */ + uint8_t (*character_width)(const struct mf_font_s *font, mf_char character); + + /* Function to render a character. Returns the character width or 0 if + * character is not found. */ + uint8_t (*render_character)(const struct mf_font_s *font, + int16_t x0, int16_t y0, + mf_char character, + mf_pixel_callback_t callback, + void *state); +}; + +/* The flag definitions for the font.flags field. */ +#define MF_FONT_FLAG_MONOSPACE 0x01 +#define MF_FONT_FLAG_BW 0x02 + +/* Lookup structure for searching fonts by name. */ +struct mf_font_list_s +{ + const struct mf_font_list_s *next; + const struct mf_font_s *font; +}; + + +/* Function to decode and render a single character. + * + * font: Pointer to the font definition. + * x0, y0: Upper left corner of the target area. + * character: The character code (unicode) to render. + * callback: Callback function to write out the pixels. + * state: Free variable for caller to use (can be NULL). + * + * Returns width of the character. + */ +MF_EXTERN uint8_t mf_render_character(const struct mf_font_s *font, + int16_t x0, int16_t y0, + mf_char character, + mf_pixel_callback_t callback, + void *state); + +/* Function to get the width of a single character. + * This is not necessarily the bounding box of the character + * data, but rather the tracking width. + * + * font: Pointer to the font definition. + * character: The character code (unicode) to render. + * + * Returns width of the character in pixels. + */ +MF_EXTERN uint8_t mf_character_width(const struct mf_font_s *font, + mf_char character); + +/* Find a font based on name. The name can be either short name or full name. + * Note: You can pass MF_INCLUDED_FONTS to search among all the included .h + * files. + * + * name: Font name to search for. + * fonts: Pointer to the first font search entry. + * + * Returns a pointer to the font or NULL if not found. + */ +MF_EXTERN const struct mf_font_s *mf_find_font(const char *name); + +/* Get the list of included fonts */ +MF_EXTERN const struct mf_font_list_s *mf_get_font_list(); + +#endif \ No newline at end of file diff --git a/src/gdisp/mcufont/mf_justify.c b/src/gdisp/mcufont/mf_justify.c new file mode 100644 index 00000000..1938bb6a --- /dev/null +++ b/src/gdisp/mcufont/mf_justify.c @@ -0,0 +1,321 @@ +#include "mf_justify.h" +#include "mf_kerning.h" + +#if MF_USE_TABS +/* Round the X coordinate up to the nearest tab stop. */ +static int16_t mf_round_to_tab(const struct mf_font_s *font, + int16_t x0, int16_t x) +{ + int16_t tabw, dx; + + tabw = mf_character_width(font, 'm') * MF_TABSIZE; + + /* Always atleast 1 space */ + x += mf_character_width(font, ' '); + + /* Round to next tab stop */ + dx = x - x0 + font->baseline_x; + x += tabw - (dx % tabw); + + return x; +} + +/* Round the X coordinate down to the nearest tab stop. */ +static int16_t mf_round_to_prev_tab(const struct mf_font_s *font, + int16_t x0, int16_t x) +{ + int16_t tabw, dx; + + tabw = mf_character_width(font, 'm') * MF_TABSIZE; + + /* Always atleast 1 space */ + x -= mf_character_width(font, ' '); + + /* Round to previous tab stop */ + dx = x0 - x + font->baseline_x; + x -= tabw - (dx % tabw); + + return x; +} +#endif + +int16_t mf_get_string_width(const struct mf_font_s *font, mf_str text, + uint16_t count, bool kern) +{ + int16_t result = 0; + uint16_t c1 = 0, c2; + + if (!count) + count = 0xFFFF; + + while (count-- && *text) + { + c2 = mf_getchar(&text); + + if (kern && c1 != 0) + result += mf_compute_kerning(font, c1, c2); + + result += mf_character_width(font, c2); + c1 = c2; + } + + return result; +} + +/* Return the length of the string without trailing spaces. */ +static uint16_t strip_spaces(mf_str text, uint16_t count, mf_char *last_char) +{ + uint16_t i = 0, result = 0; + mf_char tmp = 0; + + if (!count) + count = 0xFFFF; + + while (count-- && *text) + { + i++; + tmp = mf_getchar(&text); + if (tmp != ' ' && tmp != 0xA0 && tmp != '\n' && + tmp != '\r' && tmp != '\t') + { + result = i; + } + } + + if (last_char) + { + if (!*text) + *last_char = 0; + else + *last_char = tmp; + } + + return result; +} + +/* Render left-aligned string, left edge at x0. */ +static void render_left(const struct mf_font_s *font, + int16_t x0, int16_t y0, + mf_str text, uint16_t count, + mf_character_callback_t callback, + void *state) +{ + int16_t x; + mf_char c1 = 0, c2; + + x = x0 - font->baseline_x; + while (count--) + { + c2 = mf_getchar(&text); + + if (c2 == '\t') + { +#if MF_USE_TABS + x = mf_round_to_tab(font, x0, x); + c1 = ' '; + continue; +#else + c2 = ' '; +#endif + } + + if (c1 != 0) + x += mf_compute_kerning(font, c1, c2); + + x += callback(x, y0, c2, state); + c1 = c2; + } +} + +#if !MF_USE_ALIGN + +void mf_render_aligned(const struct mf_font_s *font, + int16_t x0, int16_t y0, + enum mf_align_t align, + mf_str text, uint16_t count, + mf_character_callback_t callback, + void *state) +{ + int16_t string_width; + count = strip_spaces(text, count, 0); + render_left(font, x0, y0, text, count, callback, state); +} + +#else + +/* Render right-aligned string, right edge at x0. */ +static void render_right(const struct mf_font_s *font, + int16_t x0, int16_t y0, + mf_str text, uint16_t count, + mf_character_callback_t callback, + void *state) +{ + int16_t x; + uint16_t i; + mf_char c1, c2 = 0; + mf_str tmp; + + /* Go to the end of the line. */ + for (i = 0; i < count; i++) + mf_getchar(&text); + + x = x0 - font->baseline_x; + for (i = 0; i < count; i++) + { + mf_rewind(&text); + tmp = text; + c1 = mf_getchar(&tmp); + + /* Perform tab alignment */ + if (c1 == '\t') + { +#if MF_USE_TABS + x = mf_round_to_prev_tab(font, x0, x); + c2 = ' '; + continue; +#else + c1 = ' '; +#endif + } + + /* Apply the nominal character width */ + x -= mf_character_width(font, c1); + + /* Apply kerning */ + if (c2 != 0) + x -= mf_compute_kerning(font, c1, c2); + + callback(x, y0, c1, state); + c2 = c1; + } +} + +void mf_render_aligned(const struct mf_font_s *font, + int16_t x0, int16_t y0, + enum mf_align_t align, + mf_str text, uint16_t count, + mf_character_callback_t callback, + void *state) +{ + int16_t string_width; + count = strip_spaces(text, count, 0); + + if (align == MF_ALIGN_LEFT) + { + render_left(font, x0, y0, text, count, callback, state); + } + if (align == MF_ALIGN_CENTER) + { + string_width = mf_get_string_width(font, text, count, false); + x0 -= string_width / 2; + render_left(font, x0, y0, text, count, callback, state); + } + else if (align == MF_ALIGN_RIGHT) + { + render_right(font, x0, y0, text, count, callback, state); + } +} + +#endif + + +#if !MF_USE_JUSTIFY + +void mf_render_justified(const struct mf_font_s *font, + int16_t x0, int16_t y0, int16_t width, + mf_str text, uint16_t count, + mf_character_callback_t callback, + void *state) +{ + mf_render_aligned(font, x0, y0, MF_ALIGN_LEFT, text, count, callback, state); +} + +#else + +/* Returns true if the character is a justification point, i.e. expands + * when the text is being justified. */ +static bool is_justify_space(uint16_t c) +{ + return c == ' ' || c == 0xA0; +} + +/* Count the number of space characters in string */ +static uint16_t count_spaces(mf_str text, uint16_t count) +{ + uint16_t spaces = 0; + while (count-- && *text) + { + if (is_justify_space(mf_getchar(&text))) + spaces++; + } + return spaces; +} + +void mf_render_justified(const struct mf_font_s *font, + int16_t x0, int16_t y0, int16_t width, + mf_str text, uint16_t count, + mf_character_callback_t callback, + void *state) +{ + int16_t string_width, adjustment; + uint16_t num_spaces; + mf_char last_char; + + count = strip_spaces(text, count, &last_char); + + if (last_char == '\n' || last_char == 0) + { + /* Line ends in linefeed, do not justify. */ + render_left(font, x0, y0, text, count, callback, state); + return; + } + + string_width = mf_get_string_width(font, text, count, false); + adjustment = width - string_width; + num_spaces = count_spaces(text, count); + + { + int16_t x, tmp; + uint16_t c1 = 0, c2; + + x = x0 - font->baseline_x; + while (count--) + { + c2 = mf_getchar(&text); + + if (c2 == '\t') + { +#if MF_USE_TABS + tmp = x; + x = mf_round_to_tab(font, x0, x); + adjustment -= x - tmp - mf_character_width(font, '\t'); + c1 = c2; + continue; +#else + c2 = ' '; +#endif + } + + if (is_justify_space(c2)) + { + tmp = (adjustment + num_spaces / 2) / num_spaces; + adjustment -= tmp; + num_spaces--; + x += tmp; + } + + if (c1 != 0) + { + tmp = mf_compute_kerning(font, c1, c2); + x += tmp; + adjustment -= tmp; + } + + x += callback(x, y0, c2, state); + c1 = c2; + } + } +} + +#endif + diff --git a/src/gdisp/mcufont/mf_justify.h b/src/gdisp/mcufont/mf_justify.h new file mode 100644 index 00000000..c3e8ba75 --- /dev/null +++ b/src/gdisp/mcufont/mf_justify.h @@ -0,0 +1,74 @@ +/* Text alignment and justification algorithm. Supports left, right, center + * alignment and justify. Supports tab stops and kerning. + */ + +#ifndef _MF_JUSTIFY_H_ +#define _MF_JUSTIFY_H_ + +#include "mf_rlefont.h" +#include + +enum mf_align_t +{ + MF_ALIGN_LEFT = 0, + MF_ALIGN_CENTER, + MF_ALIGN_RIGHT +}; + +/* Callback for rendering a single character. + * x0: Left edge of the target position of character. + * y0: Upper edge of the target position of character. + * character: Character to render. + * state: Free state variable for use by the callback. + * Returns the width of the character. + */ +typedef uint8_t (*mf_character_callback_t) (int16_t x0, int16_t y0, + mf_char character, void *state); + +/* Get width of a string in pixels. + * + * font: Pointer to the font definition. + * text: Pointer to start of the text to measure. + * count: Number of characters on the line or 0 to read until end of string. + * kern: True to consider kerning (slower). + */ +MF_EXTERN int16_t mf_get_string_width(const struct mf_font_s *font, + mf_str text, uint16_t count, bool kern); + +/* Render a single line of aligned text. + * + * font: Pointer to the font definition. + * x0: Depending on aligned, either left, center or right edge of target. + * y0: Upper edge of the target area. + * align: Type of alignment. + * text: Pointer to start of the text to render. + * count: Number of characters on the line or 0 to read until end of string. + * callback: Callback to call for each character. + * state: Free variable for use in the callback. + */ +MF_EXTERN void mf_render_aligned(const struct mf_font_s *font, + int16_t x0, int16_t y0, + enum mf_align_t align, + mf_str text, uint16_t count, + mf_character_callback_t callback, + void *state); + +/* Render a single line of justified text. + * + * font: Pointer to the font definition. + * x0: Left edge of the target area. + * y0: Upper edge of the target area. + * width: Width of the target area. + * text: Pointer to start of the text to render. + * count: Number of characters on the line or 0 to read until end of string. + * callback: Callback to call for each character. + * state: Free variable for use in the callback. + */ +MF_EXTERN void mf_render_justified(const struct mf_font_s *font, + int16_t x0, int16_t y0, int16_t width, + mf_str text, uint16_t count, + mf_character_callback_t callback, + void *state); + + +#endif diff --git a/src/gdisp/mcufont/mf_kerning.c b/src/gdisp/mcufont/mf_kerning.c new file mode 100644 index 00000000..bd5afc1a --- /dev/null +++ b/src/gdisp/mcufont/mf_kerning.c @@ -0,0 +1,118 @@ +#include "mf_kerning.h" +#include + +#if MF_USE_KERNING + +/* Structure for keeping track of the edge of the glyph as it is rendered. */ +struct kerning_state_s +{ + uint8_t edgepos[MF_KERNING_ZONES]; + uint8_t zoneheight; +}; + +/* Pixel callback for analyzing the left edge of a glyph. */ +static void fit_leftedge(int16_t x, int16_t y, uint8_t count, uint8_t alpha, + void *state) +{ + struct kerning_state_s *s = state; + + if (alpha > 7) + { + uint8_t zone = y / s->zoneheight; + if (x < s->edgepos[zone]) + s->edgepos[zone] = x; + } +} + +/* Pixel callback for analyzing the right edge of a glyph. */ +static void fit_rightedge(int16_t x, int16_t y, uint8_t count, uint8_t alpha, + void *state) +{ + struct kerning_state_s *s = state; + + if (alpha > 7) + { + uint8_t zone = y / s->zoneheight; + x += count - 1; + if (x > s->edgepos[zone]) + s->edgepos[zone] = x; + } +} + +/* Should kerning be done against this character? */ +static bool do_kerning(mf_char c) +{ + /* Just a speed optimization, spaces would be ignored anyway. */ + if (c == ' ' || c == '\n' || c == '\r' || c == '\t') + return false; + + /* Do not kern against digits, in order to keep values in tables nicely + * aligned. Most fonts have constant width for digits. */ + if (c >= '0' && c <= '9') + return false; + + return true; +} + +static int16_t min16(int16_t a, int16_t b) { return (a < b) ? a : b; } +static int16_t max16(int16_t a, int16_t b) { return (a > b) ? a : b; } +static int16_t avg16(int16_t a, int16_t b) { return (a + b) / 2; } + +int8_t mf_compute_kerning(const struct mf_font_s *font, + mf_char c1, mf_char c2) +{ + struct kerning_state_s leftedge, rightedge; + uint8_t w1, w2, i, min_space; + int16_t normal_space, adjust, max_adjust; + + if (font->flags & MF_FONT_FLAG_MONOSPACE) + return 0; /* No kerning for monospace fonts */ + + if (!do_kerning(c1) || !do_kerning(c2)) + return 0; + + /* Compute the height of one kerning zone in pixels */ + i = (font->height + MF_KERNING_ZONES - 1) / MF_KERNING_ZONES; + if (i < 1) i = 1; + + /* Initialize structures */ + leftedge.zoneheight = rightedge.zoneheight = i; + for (i = 0; i < MF_KERNING_ZONES; i++) + { + leftedge.edgepos[i] = 255; + rightedge.edgepos[i] = 0; + } + + /* Analyze the edges of both glyphs. */ + w1 = mf_render_character(font, 0, 0, c1, fit_rightedge, &rightedge); + w2 = mf_render_character(font, 0, 0, c2, fit_leftedge, &leftedge); + + /* Find the minimum horizontal space between the glyphs. */ + min_space = 255; + for (i = 0; i < MF_KERNING_ZONES; i++) + { + uint8_t space; + if (leftedge.edgepos[i] == 255 || rightedge.edgepos[i] == 0) + continue; /* Outside glyph area. */ + + space = w1 - rightedge.edgepos[i] + leftedge.edgepos[i]; + if (space < min_space) + min_space = space; + } + + if (min_space == 255) + return 0; /* One of the characters is space, or both are punctuation. */ + + /* Compute the adjustment of the glyph position. */ + normal_space = avg16(w1, w2) * MF_KERNING_SPACE_PERCENT / 100; + normal_space += MF_KERNING_SPACE_PIXELS; + adjust = normal_space - min_space; + max_adjust = -max16(w1, w2) * MF_KERNING_LIMIT / 100; + + if (adjust > 0) adjust = 0; + if (adjust < max_adjust) adjust = max_adjust; + + return adjust; +} + +#endif diff --git a/src/gdisp/mcufont/mf_kerning.h b/src/gdisp/mcufont/mf_kerning.h new file mode 100644 index 00000000..ed885162 --- /dev/null +++ b/src/gdisp/mcufont/mf_kerning.h @@ -0,0 +1,29 @@ +/* Automatic kerning for font rendering. This solves the issue where some + * fonts (especially serif fonts) have too much space between specific + * character pairs, like WA or L'. + */ + +#ifndef _MF_KERNING_H_ +#define _MF_KERNING_H_ + +#include "mf_config.h" +#include "mf_rlefont.h" + +/* Compute the kerning adjustment when c1 is followed by c2. + * + * font: Pointer to the font definition. + * c1: The previous character. + * c2: The next character to render. + * + * Returns the offset to add to the x position for c2. + */ +#if MF_USE_KERNING +MF_EXTERN int8_t mf_compute_kerning(const struct mf_font_s *font, + mf_char c1, mf_char c2); +#else +static int8_t mf_compute_kerning(const struct mf_font_s *font, + mf_char c1, mf_char c2) +{ return 0; } +#endif + +#endif \ No newline at end of file diff --git a/src/gdisp/mcufont/mf_rlefont.c b/src/gdisp/mcufont/mf_rlefont.c new file mode 100644 index 00000000..8afaa9c2 --- /dev/null +++ b/src/gdisp/mcufont/mf_rlefont.c @@ -0,0 +1,282 @@ +#include "mf_rlefont.h" + +/* Number of reserved codes before the dictionary entries. */ +#define DICT_START 24 + +/* Special reference to mean "fill with zeros to the end of the glyph" */ +#define REF_FILLZEROS 16 + +/* RLE codes */ +#define RLE_CODEMASK 0xC0 +#define RLE_VALMASK 0x3F +#define RLE_ZEROS 0x00 +#define RLE_64ZEROS 0x40 +#define RLE_ONES 0x80 +#define RLE_SHADE 0xC0 + +/* Dictionary "fill entries" for encoding bits directly. */ +#define DICT_START7BIT 4 +#define DICT_START6BIT 132 +#define DICT_START5BIT 196 +#define DICT_START4BIT 228 +#define DICT_START3BIT 244 +#define DICT_START2BIT 252 + +/* Find a pointer to the glyph matching a given character by searching + * through the character ranges. If the character is not found, return + * pointer to the default glyph. + */ +static const uint8_t *find_glyph(const struct mf_rlefont_s *font, + uint16_t character) +{ + unsigned i, index; + const struct mf_rlefont_char_range_s *range; + for (i = 0; i < font->char_range_count; i++) + { + range = &font->char_ranges[i]; + index = character - range->first_char; + if (character >= range->first_char && index < range->char_count) + { + uint16_t offset = range->glyph_offsets[index]; + return &range->glyph_data[offset]; + } + } + + return 0; +} + +/* Structure to keep track of coordinates of the next pixel to be written, + * and also the bounds of the character. */ +struct renderstate_r +{ + int16_t x_begin; + int16_t x_end; + int16_t x; + int16_t y; + int16_t y_end; + mf_pixel_callback_t callback; + void *state; +}; + +/* Call the callback to write one pixel to screen, and advance to next + * pixel position. */ +static void write_pixels(struct renderstate_r *rstate, uint16_t count, + uint8_t alpha) +{ + uint8_t rowlen; + + /* Write row-by-row if the run spans multiple rows. */ + while (rstate->x + count >= rstate->x_end) + { + rowlen = rstate->x_end - rstate->x; + rstate->callback(rstate->x, rstate->y, rowlen, alpha, rstate->state); + count -= rowlen; + rstate->x = rstate->x_begin; + rstate->y++; + } + + /* Write the remaining part */ + if (count) + { + rstate->callback(rstate->x, rstate->y, count, alpha, rstate->state); + rstate->x += count; + } +} + +/* Skip the given number of pixels (0 alpha) */ +static void skip_pixels(struct renderstate_r *rstate, uint16_t count) +{ + rstate->x += count; + while (rstate->x >= rstate->x_end) + { + rstate->x -= rstate->x_end - rstate->x_begin; + rstate->y++; + } +} + +/* Decode and write out a RLE-encoded dictionary entry. */ +static void write_rle_dictentry(const struct mf_rlefont_s *font, + struct renderstate_r *rstate, + uint8_t index) +{ + uint16_t offset = font->dictionary_offsets[index]; + uint16_t length = font->dictionary_offsets[index + 1] - offset; + uint16_t i; + + for (i = 0; i < length; i++) + { + uint8_t code = font->dictionary_data[offset + i]; + if ((code & RLE_CODEMASK) == RLE_ZEROS) + { + skip_pixels(rstate, code & RLE_VALMASK); + } + else if ((code & RLE_CODEMASK) == RLE_64ZEROS) + { + skip_pixels(rstate, ((code & RLE_VALMASK) + 1) * 64); + } + else if ((code & RLE_CODEMASK) == RLE_ONES) + { + write_pixels(rstate, (code & RLE_VALMASK) + 1, 255); + } + else if ((code & RLE_CODEMASK) == RLE_SHADE) + { + uint8_t count, alpha; + count = ((code & RLE_VALMASK) >> 4) + 1; + alpha = ((code & RLE_VALMASK) & 0xF) * 0x11; + write_pixels(rstate, count, alpha); + } + } +} + +/* Get bit count for the "fill entries" */ +static uint8_t fillentry_bitcount(uint8_t index) +{ + if (index >= DICT_START2BIT) + return 2; + else if (index >= DICT_START3BIT) + return 3; + else if (index >= DICT_START4BIT) + return 4; + else if (index >= DICT_START5BIT) + return 5; + else if (index >= DICT_START6BIT) + return 6; + else + return 7; +} + +/* Decode and write out a direct binary codeword */ +static void write_bin_codeword(const struct mf_rlefont_s *font, + struct renderstate_r *rstate, + uint8_t code) +{ + uint8_t bitcount = fillentry_bitcount(code); + uint8_t byte = code - DICT_START7BIT; + uint8_t runlen = 0; + + while (bitcount--) + { + if (byte & 1) + { + runlen++; + } + else + { + if (runlen) + { + write_pixels(rstate, runlen, 255); + runlen = 0; + } + + skip_pixels(rstate, 1); + } + + byte >>= 1; + } + + if (runlen) + write_pixels(rstate, runlen, 255); +} + +/* Decode and write out a reference codeword */ +static void write_ref_codeword(const struct mf_rlefont_s *font, + struct renderstate_r *rstate, + uint8_t code) +{ + if (code <= 15) + { + write_pixels(rstate, 1, 0x11 * code); + } + else if (code == REF_FILLZEROS) + { + /* Fill with zeroes to end */ + rstate->y = rstate->y_end; + } + else if (code < DICT_START) + { + /* Reserved */ + } + else if (code < DICT_START + font->rle_entry_count) + { + write_rle_dictentry(font, rstate, code - DICT_START); + } + else + { + write_bin_codeword(font, rstate, code); + } +} + +/* Decode and write out a reference encoded dictionary entry. */ +static void write_ref_dictentry(const struct mf_rlefont_s *font, + struct renderstate_r *rstate, + uint8_t index) +{ + uint16_t offset = font->dictionary_offsets[index]; + uint16_t length = font->dictionary_offsets[index + 1] - offset; + uint16_t i; + + for (i = 0; i < length; i++) + { + uint8_t code = font->dictionary_data[offset + i]; + write_ref_codeword(font, rstate, code); + } +} + +/* Decode and write out an arbitrary glyph codeword */ +static void write_glyph_codeword(const struct mf_rlefont_s *font, + struct renderstate_r *rstate, + uint8_t code) +{ + if (code >= DICT_START + font->rle_entry_count && + code < DICT_START + font->dict_entry_count) + { + write_ref_dictentry(font, rstate, code - DICT_START); + } + else + { + write_ref_codeword(font, rstate, code); + } +} + + +uint8_t mf_rlefont_render_character(const struct mf_font_s *font, + int16_t x0, int16_t y0, + uint16_t character, + mf_pixel_callback_t callback, + void *state) +{ + const uint8_t *p; + uint8_t width; + + struct renderstate_r rstate; + rstate.x_begin = x0; + rstate.x_end = x0 + font->width; + rstate.x = x0; + rstate.y = y0; + rstate.y_end = y0 + font->height; + rstate.callback = callback; + rstate.state = state; + + p = find_glyph((struct mf_rlefont_s*)font, character); + if (!p) + return 0; + + width = *p++; + while (rstate.y < rstate.y_end) + { + write_glyph_codeword((struct mf_rlefont_s*)font, &rstate, *p++); + } + + return width; +} + +uint8_t mf_rlefont_character_width(const struct mf_font_s *font, + uint16_t character) +{ + const uint8_t *p; + p = find_glyph((struct mf_rlefont_s*)font, character); + if (!p) + return 0; + + return *p; +} diff --git a/src/gdisp/mcufont/mf_rlefont.h b/src/gdisp/mcufont/mf_rlefont.h new file mode 100644 index 00000000..d8275d5c --- /dev/null +++ b/src/gdisp/mcufont/mf_rlefont.h @@ -0,0 +1,74 @@ +/* A compressed font format based on run length encoding and dictionary + * compression. + */ + +#ifndef _MF_RLEFONT_H_ +#define _MF_RLEFONT_H_ + +#include "mf_font.h" + +/* Versions of the RLE font format that are supported. */ +#define MF_RLEFONT_VERSION_4_SUPPORTED 1 + +/* Structure for a range of characters. This implements a sparse storage of + * character indices, so that you can e.g. pick a 100 characters in the middle + * of the UTF16 range and just store them. */ +struct mf_rlefont_char_range_s +{ + /* The number of the first character in this range. */ + uint16_t first_char; + + /* The total count of characters in this range. */ + uint16_t char_count; + + /* Lookup table with the start indices into glyph_data. */ + const uint16_t *glyph_offsets; + + /* The encoded glyph data for glyphs in this range. */ + const uint8_t *glyph_data; +}; + +/* Structure for a single encoded font. */ +struct mf_rlefont_s +{ + struct mf_font_s font; + + /* Version of the font definition used. */ + const uint8_t version; + + /* Big array of the data for all the dictionary entries. */ + const uint8_t *dictionary_data; + + /* Lookup table with the start indices into dictionary_data. + * Contains N+1 entries, so that the length of the entry can + * be determined by subtracting from the next offset. */ + const uint16_t *dictionary_offsets; + + /* Number of dictionary entries using the RLE encoding. + * Entries starting at this index use the dictionary encoding. */ + const uint8_t rle_entry_count; + + /* Total number of dictionary entries. + * Entries after this are nonexistent. */ + const uint8_t dict_entry_count; + + /* Number of discontinuous character ranges */ + const uint8_t char_range_count; + + /* Array of the character ranges */ + const struct mf_rlefont_char_range_s *char_ranges; +}; + +#ifdef MF_RLEFONT_INTERNALS +/* Internal functions, don't use these directly. */ +MF_EXTERN uint8_t mf_rlefont_render_character(const struct mf_font_s *font, + int16_t x0, int16_t y0, + mf_char character, + mf_pixel_callback_t callback, + void *state); + +MF_EXTERN uint8_t mf_rlefont_character_width(const struct mf_font_s *font, + mf_char character); +#endif + +#endif diff --git a/src/gdisp/mcufont/mf_scaledfont.c b/src/gdisp/mcufont/mf_scaledfont.c new file mode 100644 index 00000000..da2b31fe --- /dev/null +++ b/src/gdisp/mcufont/mf_scaledfont.c @@ -0,0 +1,83 @@ +#include "mf_scaledfont.h" + +struct scaled_renderstate +{ + mf_pixel_callback_t orig_callback; + void *orig_state; + uint8_t x_scale; + uint8_t y_scale; + int16_t x0; + int16_t y0; +}; + +static void scaled_pixel_callback(int16_t x, int16_t y, uint8_t count, + uint8_t alpha, void *state) +{ + struct scaled_renderstate *rstate = state; + uint8_t dy; + + count *= rstate->x_scale; + x = rstate->x0 + x * rstate->x_scale; + y = rstate->y0 + y * rstate->y_scale; + + for (dy = 0; dy < rstate->y_scale; dy++) + { + rstate->orig_callback(x, y + dy, count, alpha, rstate->orig_state); + } +} + +static uint8_t scaled_character_width(const struct mf_font_s *font, + mf_char character) +{ + struct mf_scaledfont_s *sfont = (struct mf_scaledfont_s*)font; + uint8_t basewidth; + + basewidth = sfont->basefont->character_width(sfont->basefont, character); + + return sfont->x_scale * basewidth; +} + +static uint8_t scaled_render_character(const struct mf_font_s *font, + int16_t x0, int16_t y0, + mf_char character, + mf_pixel_callback_t callback, + void *state) +{ + struct mf_scaledfont_s *sfont = (struct mf_scaledfont_s*)font; + struct scaled_renderstate rstate; + uint8_t basewidth; + + rstate.orig_callback = callback; + rstate.orig_state = state; + rstate.x_scale = sfont->x_scale; + rstate.y_scale = sfont->y_scale; + rstate.x0 = x0; + rstate.y0 = y0; + + basewidth = sfont->basefont->render_character(sfont->basefont, 0, 0, + character, scaled_pixel_callback, &rstate); + + return sfont->x_scale * basewidth; +} + +void mf_scale_font(struct mf_scaledfont_s *newfont, + const struct mf_font_s *basefont, + uint8_t x_scale, uint8_t y_scale) +{ + newfont->font = *basefont; + newfont->basefont = basefont; + + newfont->font.width *= x_scale; + newfont->font.height *= y_scale; + newfont->font.baseline_x *= x_scale; + newfont->font.baseline_y *= y_scale; + newfont->font.min_x_advance *= x_scale; + newfont->font.max_x_advance *= x_scale; + newfont->font.line_height *= y_scale; + newfont->font.character_width = &scaled_character_width; + newfont->font.render_character = &scaled_render_character; + + newfont->x_scale = x_scale; + newfont->y_scale = y_scale; +} + diff --git a/src/gdisp/mcufont/mf_scaledfont.h b/src/gdisp/mcufont/mf_scaledfont.h new file mode 100644 index 00000000..f6607010 --- /dev/null +++ b/src/gdisp/mcufont/mf_scaledfont.h @@ -0,0 +1,23 @@ +/* Generate scaled (nearest-neighbor) fonts. This can be used for displaying + * larger text without spending the memory required for including larger fonts. + */ + +#ifndef _MF_SCALEDFONT_H_ +#define _MF_SCALEDFONT_H_ + +#include "mf_font.h" + +struct mf_scaledfont_s +{ + struct mf_font_s font; + + const struct mf_font_s *basefont; + uint8_t x_scale; + uint8_t y_scale; +}; + +MF_EXTERN void mf_scale_font(struct mf_scaledfont_s *newfont, + const struct mf_font_s *basefont, + uint8_t x_scale, uint8_t y_scale); + +#endif diff --git a/src/gdisp/mcufont/mf_wordwrap.c b/src/gdisp/mcufont/mf_wordwrap.c new file mode 100644 index 00000000..cc735a4e --- /dev/null +++ b/src/gdisp/mcufont/mf_wordwrap.c @@ -0,0 +1,290 @@ +#include "mf_wordwrap.h" + +/* Returns true if the line can be broken at this character. */ +static bool is_wrap_space(uint16_t c) +{ + return c == ' ' || c == '\n' || c == '\t' || c == '\r' || c == '-'; +} + +#if MF_USE_ADVANCED_WORDWRAP + +/* Represents a single word and the whitespace after it. */ +struct wordlen_s +{ + int16_t word; /* Length of the word in pixels. */ + int16_t space; /* Length of the whitespace in pixels. */ + uint16_t chars; /* Number of characters in word + space, combined. */ +}; + +/* Take the next word from the string and compute its width. + * Returns true if the word ends in a linebreak. */ +static bool get_wordlen(const struct mf_font_s *font, mf_str *text, + struct wordlen_s *result) +{ + mf_char c; + mf_str prev; + + result->word = 0; + result->space = 0; + result->chars = 0; + + c = mf_getchar(text); + while (c && !is_wrap_space(c)) + { + result->chars++; + result->word += mf_character_width(font, c); + c = mf_getchar(text); + } + + prev = *text; + while (c && is_wrap_space(c)) + { + result->chars++; + + if (c == ' ') + result->space += mf_character_width(font, c); + else if (c == '\t') + result->space += mf_character_width(font, 'm') * MF_TABSIZE; + else if (c == '\n') + break; + + prev = *text; + c = mf_getchar(text); + } + + /* The last loop reads the first character of next word, put it back. */ + if (c) + *text = prev; + + return (c == '\0' || c == '\n'); +} + +/* Represents the rendered length for a single line. */ +struct linelen_s +{ + mf_str start; /* Start of the text for line. */ + uint16_t chars; /* Total number of characters on the line. */ + int16_t width; /* Total length of all words + whitespace on the line in pixels. */ + bool linebreak; /* True if line ends in a linebreak */ + struct wordlen_s last_word; /* Last word on the line. */ + struct wordlen_s last_word_2; /* Second to last word on the line. */ +}; + +/* Append word onto the line if it fits. If it would overflow, don't add and + * return false. */ +static bool append_word(const struct mf_font_s *font, int16_t width, + struct linelen_s *current, mf_str *text) +{ + mf_str tmp = *text; + struct wordlen_s wordlen; + bool linebreak; + + linebreak = get_wordlen(font, &tmp, &wordlen); + + if (current->width + wordlen.word <= width) + { + *text = tmp; + current->last_word_2 = current->last_word; + current->last_word = wordlen; + current->linebreak = linebreak; + current->chars += wordlen.chars; + current->width += wordlen.word + wordlen.space; + return true; + } + else + { + return false; + } +} + +/* Append a character to the line if it fits. */ +static bool append_char(const struct mf_font_s *font, int16_t width, + struct linelen_s *current, mf_str *text) +{ + mf_str tmp = *text; + mf_char c; + uint16_t w; + + c = mf_getchar(&tmp); + w = mf_character_width(font, c); + + if (current->width + w <= width) + { + *text = tmp; + current->chars++; + current->width += w; + return true; + } + else + { + return false; + } +} + +static int16_t abs16(int16_t x) { return (x > 0) ? x : -x; } +static int32_t sq16(int16_t x) { return (int32_t)x * x; } + +/* Try to balance the lines by potentially moving one word from the previous + * line to the the current one. */ +static void tune_lines(struct linelen_s *current, struct linelen_s *previous, + int16_t max_width) +{ + int16_t curw1, prevw1; + int16_t curw2, prevw2; + int32_t delta1, delta2; + + /* If the lines are rendered as is */ + curw1 = current->width - current->last_word.space; + prevw1 = previous->width - previous->last_word.space; + delta1 = sq16(max_width - prevw1) + sq16(max_width - curw1); + + /* If the last word is moved */ + curw2 = current->width + previous->last_word.word; + prevw2 = previous->width - previous->last_word.word + - previous->last_word.space + - previous->last_word_2.space; + delta2 = sq16(max_width - prevw2) + sq16(max_width - curw2); + + if (delta1 > delta2 && curw2 <= max_width) + { + /* Do the change. */ + uint16_t chars; + + chars = previous->last_word.chars; + previous->chars -= chars; + current->chars += chars; + previous->width -= previous->last_word.word + previous->last_word.space; + current->width += previous->last_word.word + previous->last_word.space; + previous->last_word = previous->last_word_2; + + while (chars--) mf_rewind(¤t->start); + } +} + +void mf_wordwrap(const struct mf_font_s *font, int16_t width, + mf_str text, mf_line_callback_t callback, void *state) +{ + struct linelen_s current = {}; + struct linelen_s previous = {}; + bool full; + + current.start = text; + + while (*text) + { + full = !append_word(font, width, ¤t, &text); + + if (full || current.linebreak) + { + if (!current.chars) + { + /* We have a very long word. We must just cut it off at some + * point. */ + while (append_char(font, width, ¤t, &text)); + } + + if (previous.chars) + { + /* Tune the length and dispatch the previous line. */ + if (!previous.linebreak && !current.linebreak) + tune_lines(¤t, &previous, width); + + if (!callback(previous.start, previous.chars, state)) + return; + } + + previous = current; + current.start = text; + current.chars = 0; + current.width = 0; + current.linebreak = false; + current.last_word.word = 0; + current.last_word.space = 0; + current.last_word.chars = 0; + } + } + + /* Dispatch the last lines. */ + if (previous.chars) + { + if (!callback(previous.start, previous.chars, state)) + return; + } + + if (current.chars) + callback(current.start, current.chars, state); +} + +#else + +void mf_wordwrap(const struct mf_font_s *font, int16_t width, + mf_str text, mf_line_callback_t callback, void *state) +{ + mf_str orig = text; + mf_str linestart; + + /* Current line width and character count */ + int16_t lw_cur = 0, cc_cur = 0; + + /* Previous wrap point */ + int16_t cc_prev; + mf_str ls_prev; + + linestart = text; + + while (*text) + { + cc_prev = 0; + ls_prev = text; + + while (*text) + { + mf_char c; + int16_t new_width; + mf_str tmp; + + tmp = text; + c = mf_getchar(&text); + new_width = lw_cur + mf_character_width(font, c); + + if (c == '\n') + { + cc_prev = cc_cur + 1; + ls_prev = text; + break; + } + + if (new_width > width) + { + text = tmp; + break; + } + + cc_cur++; + lw_cur = new_width; + + if (is_wrap_space(c)) + { + cc_prev = cc_cur; + ls_prev = text; + } + } + + /* Handle unbreakable words */ + if (cc_prev == 0) + { + cc_prev = cc_cur; + ls_prev = text; + } + + if (!callback(linestart, cc_prev, state)) + return; + + linestart = ls_prev; + text = linestart; + lw_cur = 0; + cc_cur = 0; + } +} + +#endif diff --git a/src/gdisp/mcufont/mf_wordwrap.h b/src/gdisp/mcufont/mf_wordwrap.h new file mode 100644 index 00000000..bf3dbcb7 --- /dev/null +++ b/src/gdisp/mcufont/mf_wordwrap.h @@ -0,0 +1,32 @@ +/* Word wrapping algorithm with UTF-8 support. More than just a basic greedy + * word-wrapper: it attempts to balance consecutive lines as pairs. + */ + +#ifndef _MF_WORDWRAP_H_ +#define _MF_WORDWRAP_H_ + +#include "mf_rlefont.h" +#include + +/* Callback function for handling each line. + * + * line: Pointer to the beginning of the string for this line. + * count: Number of characters on the line. + * state: Free variable that was passed to wordwrap(). + * + * Returns: true to continue, false to stop after this line. + */ +typedef bool (*mf_line_callback_t) (mf_str line, uint16_t count, + void *state); + +/* Word wrap a piece of text. Calls the callback function for each line. + * + * font: Font to use for metrics. + * width: Maximum line width in pixels. + * text: Pointer to the start of the text to process. + * state: Free variable for caller to use (can be NULL). + */ +MF_EXTERN void mf_wordwrap(const struct mf_font_s *font, int16_t width, + mf_str text, mf_line_callback_t callback, void *state); + +#endif