Merge branch 'translation'

ugfx_release_2.6
Joel Bodenmann 2016-02-27 14:35:57 +01:00
commit 6d2492aa93
15 changed files with 1156 additions and 0 deletions

View File

@ -0,0 +1,3 @@
DEMODIR = $(GFXLIB)/demos/modules/gtrans/basic
GFXINC += $(DEMODIR)
GFXSRC += $(DEMODIR)/main.c

View File

@ -0,0 +1,51 @@
/*
* Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu <joel@unormal.org>
* Copyright (c) 2012, 2013, Andrew Hannam aka inmarket
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the <organization> nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _GFXCONF_H
#define _GFXCONF_H
/* The operating system to use. One of these must be defined - preferably in your Makefile */
//#define GFX_USE_OS_CHIBIOS FALSE
//#define GFX_USE_OS_WIN32 FALSE
//#define GFX_USE_OS_LINUX FALSE
//#define GFX_USE_OS_OSX FALSE
#define GFX_USE_GTRANS TRUE
#define GFX_USE_GDISP TRUE
#define GDISP_NEED_VALIDATION TRUE
#define GDISP_NEED_CLIP TRUE
#define GDISP_NEED_TEXT TRUE
#define GDISP_NEED_ANTIALIAS TRUE
#define GDISP_NEED_UTF8 TRUE
#define GDISP_NEED_TEXT_KERNING TRUE
#define GDISP_INCLUDE_USER_FONTS TRUE
#endif /* _GFXCONF_H */

View File

@ -0,0 +1,112 @@
/*
* Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu <joel@unormal.org>
* Copyright (c) 2012, 2013, Andrew Hannam aka inmarket
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the <organization> nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <stdio.h>
#include "gfx.h"
#define COLOR_BACKGROUND Silver
#define COLOR_TEXT Black
font_t font;
// English Translation
static const char* EnglishStrings[] = {
"Welcome",
"The temperature is %d degrees",
"Goodbye",
"This is a translated uGFX application"
};
static const transTable EnglishTranslation = { sizeof(EnglishStrings)/sizeof(EnglishStrings[0]), EnglishStrings };
// German translation
static const char* GermanStrings[] = {
"Herzlich Willkommen",
"Die Temperatur beträgt %d Grad",
"Auf Wiedersehen",
"Das ist eine übersetzte uGFX Anwendung"
};
static const transTable GermanTranslation = { sizeof(GermanStrings)/sizeof(GermanStrings[0]), GermanStrings };
// French translation
static const char* FrenchStrings[] = {
"Bienvenue",
"La température est de %d degrés",
"Au revoir",
"Ceci est une application traduit uGFX"
};
static const transTable FrenchTranslation = { sizeof(FrenchStrings)/sizeof(FrenchStrings[0]), FrenchStrings };
void updateText()
{
coord_t width = 400;
coord_t height = 30;
// Translate some basic strings
gdispFillStringBox(20, 20, width, height, gt("Welcome"), font, COLOR_TEXT, COLOR_BACKGROUND, justifyLeft);
gdispFillStringBox(20, 60, width, height, gt("This is a translated uGFX application"), font, COLOR_TEXT, COLOR_BACKGROUND, justifyLeft);
gdispFillStringBox(20, 100, width, height, gt("Goodbye"), font, COLOR_TEXT, COLOR_BACKGROUND, justifyLeft);
// A more complex example using string formatting
char buffer[128];
sprintf(buffer, gt("The temperature is %d degrees"), 18);
gdispFillStringBox(20, 140, width, height, buffer, font, COLOR_TEXT, COLOR_BACKGROUND, justifyLeft);
}
int main(void)
{
// Initialize the uGFX library
gfxInit();
gdispClear(COLOR_BACKGROUND);
// Take the first font we find
font = gdispOpenFont("*");
// Set the base language of the application
gtransSetBaseLanguage(&EnglishTranslation);
// Loop through the languages
while (TRUE) {
// English
gtransSetLanguage(&EnglishTranslation);
updateText();
gfxSleepMilliseconds(1000);
// German
gtransSetLanguage(&GermanTranslation);
updateText();
gfxSleepMilliseconds(1000);
// French
gtransSetLanguage(&FrenchTranslation);
updateText();
gfxSleepMilliseconds(1000);
}
return 0;
}

View File

@ -0,0 +1,734 @@
/* Start of automatically generated font definition for phpRVS9jE. */
#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_phpRVS9jE_dictionary_data[1423] = {
0x05, 0xc2, 0xce, 0x29, 0x0a, 0x15, 0x0d, 0x07, 0x86, 0x13, 0x85, 0x80, 0x16, 0x80, 0x16, 0x80,
0x08, 0x33, 0xcd, 0xde, 0x80, 0x06, 0x80, 0x0f, 0x80, 0x06, 0x80, 0x01, 0x0f, 0xc3, 0xcb, 0x0e,
0x01, 0x80, 0x01, 0x80, 0x13, 0x82, 0x0c, 0x03, 0xc1, 0x40, 0x0b, 0xcd, 0xc2, 0x04, 0x89, 0x16,
0x14, 0x13, 0x06, 0x04, 0x35, 0x02, 0xce, 0xc2, 0x15, 0xca, 0xcc, 0x16, 0xcb, 0xc9, 0x25, 0x09,
0x03, 0xcc, 0xca, 0x14, 0xc9, 0xcb, 0x80, 0x06, 0x12, 0xce, 0xc9, 0xce, 0xc1, 0x01, 0x11, 0x80,
0x16, 0x80, 0x16, 0x80, 0x16, 0x80, 0x16, 0x80, 0x16, 0x80, 0x05, 0x28, 0x80, 0x0d, 0x80, 0x08,
0x80, 0x0d, 0x80, 0x08, 0x80, 0x08, 0xce, 0xcc, 0x80, 0xc1, 0xc3, 0xcc, 0x10, 0xcb, 0xc5, 0xc4,
0xcc, 0x80, 0xce, 0xc5, 0xcc, 0xc7, 0xc8, 0x02, 0x80, 0x02, 0x40, 0x09, 0xcb, 0x80, 0x80, 0x16,
0x80, 0x0e, 0xcb, 0xc3, 0xcd, 0xc4, 0xc6, 0xcc, 0x40, 0x0a, 0xc6, 0x01, 0xca, 0xc3, 0xc4, 0xc1,
0x16, 0xc6, 0x80, 0xc5, 0xcd, 0x41, 0x0e, 0xc7, 0xc9, 0xcb, 0xc2, 0x01, 0x41, 0x0f, 0xc7, 0xca,
0xc6, 0xc9, 0xc8, 0xc7, 0xce, 0xc2, 0xc7, 0xcb, 0xcd, 0xc8, 0x01, 0xc4, 0xcd, 0xc5, 0xce, 0xc3,
0x0e, 0x80, 0x16, 0x87, 0xc1, 0x80, 0xcd, 0xc2, 0x40, 0x0c, 0xcd, 0xc3, 0xc1, 0xcd, 0xca, 0xcd,
0xcb, 0xc7, 0xca, 0xc4, 0xcc, 0xc3, 0x01, 0x83, 0x01, 0xc3, 0xca, 0xce, 0x80, 0xce, 0x03, 0x80,
0x08, 0x80, 0x02, 0xc3, 0x80, 0x41, 0x21, 0xcd, 0xc1, 0x84, 0x44, 0x18, 0x1c, 0xc9, 0xcd, 0x01,
0xc1, 0xc9, 0xce, 0xce, 0xc1, 0x15, 0xc1, 0xc4, 0xc2, 0x01, 0xc2, 0xc6, 0xce, 0xc5, 0x0d, 0xc2,
0xce, 0xc3, 0x05, 0xc3, 0xce, 0xc2, 0x0c, 0xc9, 0xc7, 0x07, 0xc7, 0xc9, 0x0c, 0xc6, 0xd1, 0x40,
0x0d, 0xc1, 0xc5, 0xc6, 0x15, 0xc8, 0xca, 0x01, 0x80, 0x01, 0xce, 0xc7, 0xc5, 0xc1, 0xcd, 0xc6,
0x0b, 0xc8, 0xc5, 0xc3, 0xce, 0xce, 0xc8, 0x01, 0xc9, 0x80, 0xc2, 0x80, 0xc1, 0xc3, 0xc4, 0xca,
0xc2, 0xc8, 0x80, 0x08, 0x40, 0x38, 0x80, 0x05, 0x1f, 0x08, 0x81, 0xc7, 0x80, 0xc6, 0xc2, 0xc7,
0xcc, 0x01, 0xc2, 0xcd, 0xc7, 0x01, 0x0e, 0x80, 0x02, 0xc4, 0xcd, 0xcc, 0xc7, 0x01, 0xcb, 0xc6,
0x04, 0xc6, 0xcd, 0xce, 0x80, 0xca, 0x80, 0xc9, 0xc8, 0xc5, 0xcb, 0xc4, 0xcb, 0xce, 0xc4, 0xc5,
0xce, 0xca, 0xc8, 0xca, 0xc2, 0xca, 0xcc, 0xcb, 0xce, 0x0c, 0x1c, 0x07, 0x0e, 0x05, 0x30, 0x0d,
0x47, 0x31, 0x05, 0x0a, 0x00, 0x4f, 0x3b, 0x0b, 0x04, 0x00, 0x05, 0x0a, 0x3e, 0x44, 0x38, 0x68,
0x45, 0x09, 0x06, 0x38, 0x4a, 0x25, 0x6b, 0x00, 0x2c, 0x3d, 0x1d, 0x98, 0x20, 0x07, 0x27, 0x2e,
0x9b, 0x0d, 0x1d, 0x05, 0x0a, 0x1e, 0x0b, 0x01, 0x0e, 0x25, 0x09, 0x18, 0x03, 0x0d, 0x25, 0x0f,
0x0c, 0x87, 0x7e, 0x9f, 0x27, 0x03, 0x0f, 0x0c, 0x05, 0x25, 0x9b, 0x0d, 0x07, 0x02, 0x00, 0x03,
0x0a, 0x45, 0xa4, 0x1c, 0x60, 0x1c, 0x43, 0x1c, 0x60, 0x1c, 0xa4, 0x30, 0x9b, 0x0d, 0x07, 0x02,
0x00, 0x03, 0x0a, 0x45, 0x9b, 0x0a, 0xa2, 0x0c, 0x05, 0x45, 0x49, 0x0e, 0x42, 0x04, 0x45, 0x8b,
0x87, 0x82, 0x65, 0x25, 0x0a, 0x06, 0x33, 0x06, 0x0a, 0x25, 0x2e, 0x02, 0x0d, 0x25, 0x3a, 0x0f,
0x25, 0x2e, 0x02, 0x0d, 0x25, 0x0a, 0x06, 0x33, 0x06, 0x0a, 0x25, 0x8b, 0x87, 0x82, 0x0b, 0x04,
0x45, 0xa9, 0x02, 0x7b, 0xa6, 0x45, 0x7d, 0x0c, 0x09, 0x02, 0x31, 0x9b, 0x0a, 0x0e, 0x0d, 0x09,
0x05, 0x30, 0x03, 0x51, 0x09, 0x3b, 0x2c, 0x0e, 0x45, 0x01, 0x0c, 0x08, 0x30, 0x09, 0x0a, 0x22,
0x08, 0x36, 0x33, 0x7c, 0x62, 0x3b, 0x88, 0x01, 0x02, 0xa9, 0x1c, 0x6b, 0x3e, 0x07, 0x0d, 0x0e,
0x2a, 0x45, 0x08, 0x4f, 0x01, 0x4b, 0x27, 0x68, 0x38, 0x8e, 0x45, 0x3d, 0x35, 0x08, 0x0f, 0x45,
0x0a, 0x0a, 0x01, 0x01, 0x07, 0xa3, 0x1d, 0x2c, 0x0a, 0x0e, 0x0e, 0x3f, 0x3e, 0x21, 0x71, 0x6e,
0x25, 0xa1, 0x87, 0x8f, 0xa3, 0x27, 0x03, 0x76, 0x18, 0x07, 0x27, 0x09, 0x83, 0x68, 0x1c, 0x4e,
0x96, 0x68, 0x1c, 0x09, 0x83, 0x03, 0x76, 0x18, 0x07, 0x25, 0xa1, 0x87, 0x8f, 0xa3, 0x45, 0x71,
0x6e, 0x92, 0x41, 0x35, 0x72, 0x41, 0x35, 0x72, 0x0f, 0x1b, 0x72, 0x0f, 0x1d, 0x60, 0x32, 0x19,
0x1d, 0x0a, 0x07, 0x32, 0x5d, 0x2b, 0x9b, 0x62, 0x02, 0x35, 0x91, 0x68, 0x1d, 0x9b, 0x7a, 0x97,
0x0d, 0x09, 0x02, 0x3b, 0x34, 0x03, 0x0d, 0x27, 0xa5, 0x18, 0x09, 0x07, 0x25, 0x6a, 0x2c, 0x3d,
0x27, 0x5a, 0x38, 0x5d, 0x1d, 0x2c, 0x3d, 0x00, 0x6a, 0x3e, 0x09, 0x07, 0x00, 0x49, 0x3b, 0x03,
0x0d, 0x00, 0x46, 0x31, 0x0b, 0x08, 0x0e, 0x30, 0x05, 0x0f, 0x08, 0x30, 0x67, 0x02, 0x45, 0x2c,
0x08, 0x09, 0x31, 0x0f, 0x1d, 0x0f, 0x38, 0x0c, 0x04, 0x72, 0x18, 0x0f, 0x38, 0x03, 0x76, 0x4b,
0x89, 0x0f, 0x33, 0x08, 0x08, 0x4b, 0x89, 0x94, 0x6f, 0x0f, 0x1d, 0x94, 0x44, 0x28, 0x2b, 0x3a,
0x08, 0x54, 0x25, 0x05, 0x86, 0x7f, 0x6a, 0x1e, 0x03, 0x0d, 0x2b, 0x94, 0x2c, 0x0e, 0x2b, 0x94,
0x2c, 0x0e, 0x2b, 0x6a, 0x1e, 0x03, 0x0d, 0x2b, 0x09, 0x07, 0x1e, 0x5a, 0x89, 0x9b, 0x65, 0x18,
0x03, 0x60, 0x1d, 0xa8, 0x99, 0x9b, 0x06, 0x0e, 0x05, 0x25, 0x71, 0x54, 0x0e, 0x6e, 0x45, 0x9a,
0x03, 0x8f, 0xa3, 0x45, 0x2e, 0x08, 0x45, 0x7d, 0x6d, 0x30, 0x9b, 0x0d, 0x0c, 0x8a, 0x02, 0x3b,
0x63, 0x08, 0x0a, 0x0e, 0x0b, 0x70, 0x30, 0x06, 0x0b, 0x30, 0x49, 0x01, 0x31, 0x47, 0x01, 0x3b,
0x63, 0x68, 0x31, 0x03, 0x68, 0x3b, 0x9b, 0x6a, 0x3b, 0x9b, 0x50, 0x45, 0x2c, 0x64, 0x45, 0x2c,
0x0c, 0x06, 0x30, 0x6d, 0x1c, 0x77, 0x77, 0x80, 0x06, 0xa3, 0x25, 0x0a, 0x07, 0x33, 0x98, 0x25,
0x60, 0x33, 0x8e, 0x25, 0x94, 0x67, 0x25, 0x60, 0x33, 0x8e, 0x25, 0x0a, 0x07, 0x33, 0x07, 0x92,
0x3a, 0x0f, 0x25, 0x3d, 0x38, 0x8e, 0x25, 0x0c, 0x04, 0x33, 0x08, 0x0f, 0x25, 0x58, 0x55, 0x91,
0x8d, 0x45, 0xa1, 0x0f, 0x9c, 0x85, 0x22, 0x0e, 0x3c, 0x67, 0x27, 0x9b, 0x86, 0x01, 0x01, 0x07,
0xa3, 0x25, 0x0a, 0x07, 0x33, 0x08, 0x0f, 0x25, 0x60, 0x33, 0x8e, 0x25, 0x94, 0x67, 0x25, 0x60,
0x33, 0x8e, 0x25, 0x0a, 0x07, 0x33, 0x98, 0x25, 0x19, 0x80, 0x06, 0xa3, 0x45, 0x03, 0x0f, 0x88,
0x3e, 0x19, 0x05, 0x8f, 0x50, 0x45, 0x0a, 0x07, 0x38, 0xa5, 0x45, 0x68, 0x38, 0x6b, 0x45, 0x0f,
0x20, 0x45, 0x7d, 0x0a, 0x83, 0x8b, 0x80, 0xa6, 0x3e, 0x03, 0xac, 0x0e, 0x0b, 0x04, 0x95, 0x0e,
0x4f, 0x45, 0x0f, 0x0a, 0x07, 0x01, 0x01, 0x07, 0x60, 0x25, 0x0f, 0x07, 0x33, 0x5d, 0x25, 0x0f,
0x02, 0x33, 0x19, 0x00, 0x0c, 0x0f, 0x2b, 0x9b, 0x68, 0x32, 0x08, 0x1d, 0x09, 0x83, 0x68, 0x1c,
0x0f, 0x56, 0x94, 0x70, 0x2b, 0x2e, 0x72, 0x18, 0x09, 0x07, 0x1e, 0x0f, 0x2b, 0x9b, 0x60, 0x38,
0x72, 0x33, 0x5d, 0x25, 0x0f, 0x0a, 0x80, 0x06, 0x60, 0x25, 0x43, 0x7c, 0x94, 0x67, 0x25, 0x94,
0x9e, 0x25, 0x0f, 0x38, 0x82, 0x88, 0x85, 0x07, 0x0d, 0x0f, 0x88, 0x45, 0x0f, 0xa4, 0x02, 0x7e,
0x64, 0x25, 0x0f, 0x08, 0x33, 0x47, 0x25, 0x0f, 0x02, 0x00, 0x2c, 0x0e, 0x25, 0x24, 0x27, 0x3a,
0x0f, 0x25, 0x24, 0x96, 0x94, 0x73, 0x9d, 0x97, 0x20, 0x25, 0x21, 0x66, 0x25, 0x0f, 0x56, 0x21,
0x5f, 0x1c, 0x19, 0x30, 0xa2, 0x46, 0x02, 0x7b, 0x08, 0x0b, 0x45, 0x90, 0xa2, 0x62, 0x01, 0x00,
0x08, 0x0c, 0x01, 0x1c, 0x0a, 0x06, 0x45, 0x2c, 0x0e, 0x06, 0x3d, 0x3e, 0x0a, 0x07, 0x00, 0x64,
0x00, 0x58, 0x3b, 0x9e, 0x0f, 0x0d, 0x73, 0x94, 0x9d, 0x92, 0x95, 0x38, 0x67, 0x25, 0x0f, 0x02,
0x33, 0x19, 0x25, 0x0f, 0x07, 0x5b, 0x38, 0x6d, 0x2b, 0xa9, 0x01, 0x84, 0x35, 0x49, 0x1d, 0x3d,
0x01, 0x0e, 0x00, 0x7b, 0x50, 0x1d, 0x3d, 0x01, 0x0e, 0x35, 0x08, 0x09, 0x27, 0xa9, 0x01, 0x84,
0x8b, 0x01, 0x1d, 0x9b, 0xac, 0x5b, 0x0c, 0x06, 0x30, 0x31, 0x34, 0x1f, 0x35, 0x9a, 0x30, 0x05,
0x68, 0x3b, 0x63, 0x60, 0x31, 0x03, 0x65, 0x3b, 0x9b, 0xa7, 0x3b, 0x9b, 0x6c, 0x0a, 0x31, 0x09,
0x0a, 0x00, 0xa9, 0x1e, 0x95, 0x65, 0x45, 0x49, 0x0e, 0x42, 0x05, 0x0f, 0x2a, 0x42, 0x06, 0x45,
0x0f, 0x3d, 0x32, 0x37, 0x4b, 0x0f, 0x40, 0x0a, 0x07, 0x18, 0x06, 0x0a, 0x4c, 0x97, 0x3a, 0x84,
0x1d, 0x94, 0x8b, 0x01, 0x27, 0x94, 0x0c, 0x0f, 0x06, 0x0b, 0x32, 0x0f, 0x2b, 0x28, 0xa0, 0x4c,
0x4b, 0x92, 0x34, 0x9b, 0x8c, 0x31, 0x39, 0x3b, 0x57, 0x06, 0x1a, 0x35, 0x9b, 0x68, 0x25, 0x06,
0x0b, 0x38, 0xa0, 0x1d, 0x0c, 0x53, 0x06, 0x0b, 0x3e, 0x9b, 0x65, 0x60, 0x31, 0x98, 0x07, 0x1c,
0x3f, 0x37, 0x81, 0x24, 0x27, 0x04, 0xac, 0x0e, 0x0b, 0x99, 0x01, 0x47, 0x1d, 0x0d, 0x87, 0x02,
0x06, 0xac, 0x0e, 0x0f, 0x9b, 0x76, 0x33, 0x0f, 0x89, 0x4b, 0x5d, 0x27, 0x9b, 0x60, 0x35, 0x09,
0x74, 0x25, 0x6d, 0x35, 0x03, 0x09, 0x28, 0x1d, 0x51, 0x38, 0x0b, 0x01, 0x28, 0x86, 0x02, 0x7b,
0x02, 0x98, 0x25, 0x03, 0x6c, 0x09, 0x09, 0x00, 0xa9, 0x31, 0x6c, 0x0a, 0x04, 0x27, 0x58, 0x99,
0x00, 0x3f, 0x3e, 0x3f, 0x37, 0x97, 0x1c, 0x97, 0x03, 0x0d, 0x31, 0x02, 0xac, 0x9d, 0x35, 0x61,
0x35, 0x9d, 0x9b, 0x60, 0x45, 0x0f, 0x38, 0xab, 0x02, 0x25, 0x9a, 0x0e, 0x42, 0x07, 0x0a, 0x07,
0x00, 0x5d, 0x3b, 0x19, 0x06, 0x3d, 0x07, 0x0e, 0x08, 0x19, 0x3b, 0x60, 0x7c, 0x0e, 0x7b, 0x0e,
0x3b, 0x5e, 0x00, 0x5e, 0x00, 0x47, 0x77, 0x77, 0x1b, 0x72, 0x41, 0x35, 0x72, 0x41, 0x07, 0x0e,
0x08, 0x19, 0x3b, 0x0e, 0x91, 0x86, 0x40, 0x05, 0x2b, 0x0c, 0x04, 0x1e, 0x47, 0x95, 0x02, 0x0c,
0x19, 0x80, 0x06, 0xa3, 0x45, 0x03, 0xac, 0x3c, 0x67, 0x1c, 0x47, 0x45, 0x6e, 0x09, 0x67, 0x68,
0x38, 0x64, 0x30, 0x9f, 0x30, 0x1f, 0x21, 0x9d, 0x35, 0x04, 0x18, 0x00, 0x81, 0x3b, 0x2c, 0x0e,
0x3e, 0x00, 0x5a, 0x1d, 0x0b, 0x04, 0x1b, 0x2c, 0x96, 0x28, 0x29, 0x21, 0x27, 0x5d, 0x89,
};
static const uint16_t mf_rlefont_phpRVS9jE_dictionary_offsets[233] = {
0x0000, 0x0001, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008,
0x000a, 0x000b, 0x0011, 0x0012, 0x0014, 0x001c, 0x001d, 0x001f,
0x0020, 0x0023, 0x0025, 0x0026, 0x0027, 0x0029, 0x002b, 0x002e,
0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x003f,
0x0040, 0x0041, 0x0046, 0x0048, 0x0049, 0x004b, 0x004e, 0x004f,
0x005b, 0x005c, 0x0066, 0x0068, 0x006a, 0x006c, 0x006d, 0x006f,
0x0071, 0x0073, 0x0075, 0x0077, 0x007a, 0x007c, 0x007e, 0x0082,
0x0084, 0x0086, 0x0088, 0x008a, 0x008c, 0x008e, 0x0090, 0x0091,
0x0093, 0x0095, 0x0097, 0x0099, 0x009c, 0x009e, 0x00a0, 0x00a2,
0x00a4, 0x00a6, 0x00a8, 0x00aa, 0x00ac, 0x00ae, 0x00b0, 0x00b4,
0x00b6, 0x00b8, 0x00ba, 0x00bc, 0x00be, 0x00c0, 0x00c2, 0x00c4,
0x00c7, 0x00c9, 0x00ce, 0x00d1, 0x00d3, 0x00d5, 0x00d7, 0x00d9,
0x00da, 0x00dc, 0x00dd, 0x00df, 0x00e1, 0x00e3, 0x00e6, 0x00e8,
0x00fd, 0x00ff, 0x0101, 0x0103, 0x0105, 0x0108, 0x010a, 0x010c,
0x010e, 0x0110, 0x0111, 0x0113, 0x0115, 0x0118, 0x011a, 0x011c,
0x011e, 0x0120, 0x0122, 0x0124, 0x0126, 0x0128, 0x0129, 0x012a,
0x012b, 0x012d, 0x012f, 0x0131, 0x0133, 0x0136, 0x0139, 0x013b,
0x013e, 0x0141, 0x0143, 0x0145, 0x0147, 0x0149, 0x014b, 0x014d,
0x014f, 0x0151, 0x0153, 0x0155, 0x0157, 0x0159, 0x0187, 0x0196,
0x01ba, 0x01de, 0x01f9, 0x01ff, 0x0203, 0x022b, 0x022e, 0x0251,
0x0275, 0x02a3, 0x02c1, 0x02ec, 0x0305, 0x0327, 0x0340, 0x0357,
0x037e, 0x039f, 0x03b4, 0x03d1, 0x03dc, 0x03e6, 0x0403, 0x0407,
0x0410, 0x0415, 0x0420, 0x0425, 0x042f, 0x0436, 0x043b, 0x0445,
0x0469, 0x046b, 0x047c, 0x0485, 0x048b, 0x0491, 0x0493, 0x0497,
0x049c, 0x04a7, 0x04af, 0x04b2, 0x04b7, 0x04bb, 0x04d3, 0x04d5,
0x04e3, 0x04eb, 0x04fd, 0x0505, 0x050c, 0x0511, 0x0515, 0x0518,
0x051b, 0x051d, 0x0527, 0x052e, 0x0536, 0x053d, 0x0544, 0x0546,
0x054e, 0x0557, 0x055e, 0x0560, 0x056d, 0x056f, 0x0571, 0x0576,
0x0579, 0x057b, 0x057d, 0x0581, 0x0584, 0x0589, 0x058b, 0x058d,
0x058f,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_0[2382] = {
0x05, 0x00, 0x10, 0x06, 0x52, 0xfe, 0xfe, 0x0e, 0x56, 0x0d, 0x25, 0x34, 0x4e, 0x10, 0x06, 0x4c,
0x73, 0x94, 0x9d, 0x29, 0xcd, 0x10, 0x0d, 0x56, 0xf9, 0x09, 0x0a, 0x00, 0x67, 0x03, 0x3e, 0x0d,
0x53, 0xa8, 0x3e, 0x8e, 0x02, 0x00, 0x09, 0x0a, 0x27, 0x8e, 0x2a, 0x20, 0x25, 0x0a, 0x09, 0x00,
0x8e, 0x02, 0x3e, 0x0e, 0x05, 0x00, 0xa8, 0x3e, 0x8e, 0x02, 0x00, 0x08, 0x0b, 0x25, 0x2a, 0x20,
0x43, 0x27, 0x0a, 0x09, 0x00, 0x8e, 0x02, 0x3e, 0x0e, 0x05, 0x00, 0xa1, 0x3e, 0x03, 0x43, 0x00,
0x0a, 0x09, 0x10, 0x0a, 0x81, 0x4e, 0x35, 0x2c, 0x7a, 0x48, 0x6e, 0x45, 0x0a, 0xaa, 0x43, 0xa5,
0x45, 0x3d, 0x29, 0x6a, 0x00, 0x29, 0xa8, 0x08, 0x0f, 0x02, 0x3b, 0x9b, 0x98, 0x0d, 0x6f, 0x3e,
0x28, 0x51, 0x31, 0x0f, 0x7b, 0x0e, 0x45, 0x0b, 0x04, 0x67, 0x02, 0x09, 0x0a, 0x45, 0x90, 0xa2,
0x0d, 0x09, 0x01, 0x31, 0x4e, 0x10, 0x0f, 0x4c, 0xe8, 0xcf, 0x51, 0x00, 0xe8, 0x5b, 0x1b, 0x2c,
0x65, 0x00, 0xa9, 0x01, 0x84, 0x1d, 0xa4, 0x35, 0x3d, 0x01, 0x0e, 0x1d, 0x03, 0x76, 0x35, 0x3d,
0x01, 0x0e, 0x1d, 0x0c, 0x05, 0x38, 0xa9, 0x01, 0x84, 0x89, 0x61, 0x33, 0xe8, 0x5b, 0x10, 0x0c,
0x2d, 0x08, 0x0d, 0x0f, 0x0c, 0x05, 0x3e, 0x09, 0xaa, 0x01, 0xa6, 0x3e, 0x7d, 0x6a, 0x1c, 0x9a,
0x01, 0x30, 0xa9, 0x0b, 0x01, 0x3b, 0x08, 0x08, 0x00, 0x44, 0x02, 0x00, 0x7b, 0x0e, 0x1d, 0x68,
0x35, 0x03, 0x50, 0x9b, 0x0d, 0x1d, 0x43, 0x38, 0x8b, 0x05, 0x5d, 0x1d, 0x0c, 0x05, 0x33, 0x8b,
0x60, 0x2b, 0x63, 0x0e, 0x06, 0x01, 0x35, 0x49, 0x0f, 0x07, 0x27, 0x03, 0xac, 0x0e, 0x0d, 0x0a,
0x05, 0x02, 0x9c, 0x10, 0x03, 0x4c, 0xf7, 0x10, 0x06, 0x52, 0x8e, 0x09, 0x30, 0x09, 0x76, 0x31,
0x67, 0x04, 0x30, 0x61, 0x1c, 0x0a, 0x83, 0x68, 0x1c, 0x7d, 0x7d, 0x68, 0x1c, 0x0a, 0x83, 0x06,
0x0b, 0x1c, 0x67, 0x04, 0x1c, 0x09, 0x0c, 0x01, 0x30, 0x8e, 0x09, 0x10, 0x06, 0x4c, 0x8d, 0x02,
0x30, 0x6b, 0x09, 0x30, 0x63, 0x43, 0x1c, 0x0c, 0x83, 0x06, 0x0a, 0x30, 0x9b, 0x0d, 0xfa, 0x00,
0x2c, 0x0e, 0x30, 0x9b, 0x0d, 0x1c, 0x06, 0x0a, 0x1c, 0x0c, 0x06, 0x31, 0x63, 0x43, 0x31, 0x6b,
0x09, 0x30, 0x8d, 0x02, 0x10, 0x08, 0x69, 0x4e, 0x18, 0x0a, 0x06, 0x28, 0x06, 0x0a, 0x3e, 0x06,
0x4d, 0xa0, 0x27, 0x06, 0x4d, 0xa0, 0x1d, 0x0a, 0x06, 0x28, 0x06, 0x0a, 0x31, 0x4e, 0x10, 0x0d,
0x33, 0x5c, 0xf7, 0x27, 0x2a, 0x20, 0x3b, 0xf7, 0x10, 0x05, 0x5c, 0x75, 0x0f, 0xfa, 0x33, 0x5e,
0x1c, 0x6f, 0x10, 0x06, 0x4c, 0x75, 0x70, 0x10, 0x05, 0x5c, 0x75, 0x4e, 0x10, 0x05, 0x2d, 0xe7,
0x35, 0x4a, 0x1c, 0x0c, 0x04, 0x30, 0x19, 0x1c, 0x5e, 0x1c, 0x46, 0x3e, 0x2c, 0x3d, 0x31, 0xa5,
0x1c, 0x09, 0x83, 0x60, 0x31, 0xee, 0x1c, 0x08, 0x08, 0x1c, 0x6a, 0x10, 0x0a, 0x4c, 0x9b, 0x0a,
0x0e, 0x0e, 0xaa, 0x45, 0x6b, 0x07, 0x01, 0x01, 0x07, 0x76, 0x25, 0x5d, 0x33, 0x0a, 0x06, 0x25,
0x0b, 0x04, 0x33, 0xa6, 0x25, 0x3d, 0x2c, 0x0e, 0x25, 0xde, 0x3d, 0x2c, 0x0e, 0x25, 0x0b, 0x04,
0x33, 0xa6, 0x25, 0x5d, 0x33, 0x0a, 0x07, 0x25, 0x6b, 0x07, 0x01, 0x01, 0x07, 0x76, 0x25, 0x9b,
0x0a, 0x0e, 0x0e, 0xaa, 0x10, 0x0a, 0x52, 0x03, 0x7c, 0x29, 0x62, 0x02, 0xb5, 0x27, 0x29, 0x1f,
0x10, 0x0a, 0x4c, 0x90, 0x0e, 0x42, 0x05, 0x3e, 0x0f, 0x4f, 0x01, 0x44, 0x06, 0x45, 0x08, 0x33,
0xe7, 0x35, 0x67, 0x1c, 0x49, 0x3e, 0x2c, 0x50, 0x45, 0x2c, 0x0b, 0x04, 0x31, 0xf2, 0x04, 0x31,
0xf2, 0x04, 0x45, 0x2c, 0x0c, 0x04, 0x30, 0x0c, 0x05, 0x1c, 0x20, 0x43, 0x10, 0x0a, 0x4c, 0x03,
0x7a, 0x48, 0x46, 0x45, 0x0c, 0x99, 0x7b, 0x47, 0x08, 0x1c, 0x19, 0x1c, 0x19, 0x45, 0x2c, 0x47,
0x08, 0x3e, 0x0f, 0x2a, 0x0b, 0x30, 0x82, 0x9c, 0x30, 0x9e, 0x1c, 0x67, 0x30, 0xee, 0x25, 0x0b,
0x87, 0x9b, 0x06, 0x50, 0x25, 0x90, 0x0e, 0x48, 0x54, 0x10, 0x0a, 0x81, 0x6b, 0x0f, 0x30, 0x46,
0x29, 0x5d, 0x28, 0x3e, 0x03, 0x76, 0x28, 0x1d, 0x2c, 0x6f, 0x28, 0x45, 0x09, 0x07, 0x72, 0x96,
0xa5, 0x33, 0x0f, 0x45, 0x2e, 0x0f, 0x45, 0x2a, 0x20, 0x30, 0x21, 0x10, 0x0a, 0x52, 0x20, 0x3e,
0xfe, 0x48, 0x48, 0xaa, 0x3e, 0x6e, 0x9b, 0x07, 0x65, 0x1c, 0x06, 0x0b, 0xfa, 0x00, 0x2c, 0x0e,
0x1c, 0x06, 0x0b, 0x25, 0x0b, 0x87, 0x9b, 0x07, 0x65, 0x25, 0x90, 0xa2, 0x0d, 0xaa, 0x10, 0x0a,
0x2d, 0xa1, 0x0f, 0x0c, 0x05, 0x3e, 0x09, 0x09, 0x02, 0x00, 0x26, 0x45, 0xa6, 0x1c, 0x6e, 0x1c,
0x64, 0xac, 0x0e, 0x4f, 0x45, 0x48, 0x80, 0x06, 0xa7, 0x25, 0x0f, 0x06, 0x33, 0x06, 0x0b, 0x25,
0x3d, 0x2c, 0x0e, 0x25, 0x0b, 0x01, 0x00, 0x2c, 0x0e, 0x25, 0x06, 0x06, 0x33, 0x06, 0x0b, 0x45,
0x0c, 0x80, 0x06, 0xa7, 0x1d, 0x2c, 0x0a, 0xa2, 0x0c, 0x04, 0x10, 0x0a, 0x4c, 0x97, 0x20, 0x1c,
0x5d, 0x1c, 0x6a, 0x30, 0x49, 0x1c, 0x46, 0x30, 0xe7, 0x35, 0x09, 0x07, 0x3e, 0x2c, 0x3d, 0x31,
0x5a, 0x1c, 0x6a, 0x30, 0xa5, 0x1c, 0x0c, 0x04, 0x10, 0x0a, 0x52, 0x51, 0x0e, 0x42, 0x06, 0x45,
0x09, 0x0c, 0x55, 0x01, 0x47, 0x09, 0x25, 0x60, 0x33, 0x19, 0x25, 0x60, 0x33, 0x19, 0x25, 0x9a,
0x55, 0x7e, 0x9f, 0x25, 0xa3, 0x2a, 0x0a, 0x45, 0x07, 0x0d, 0x87, 0x82, 0x9c, 0x27, 0x50, 0x33,
0x9e, 0x25, 0x43, 0x33, 0x67, 0x25, 0x50, 0x33, 0x9e, 0x25, 0xa1, 0x87, 0x82, 0x88, 0x45, 0x49,
0x0e, 0x42, 0x05, 0x10, 0x0a, 0x4c, 0xee, 0x48, 0x0a, 0x01, 0x25, 0x63, 0x0e, 0x80, 0x51, 0x45,
0xa0, 0x06, 0x06, 0x25, 0x3d, 0x2c, 0x0b, 0x25, 0x3d, 0x2c, 0x0e, 0x25, 0xa0, 0x57, 0x27, 0x63,
0x0e, 0x80, 0x06, 0xa2, 0x25, 0x63, 0xac, 0x42, 0x58, 0x1c, 0x90, 0x1c, 0x6e, 0x45, 0x4f, 0x9b,
0x09, 0x09, 0x3e, 0x58, 0x0f, 0x9c, 0x10, 0x05, 0x18, 0x75, 0x4e, 0x56, 0xf9, 0x4e, 0x10, 0x05,
0x18, 0x75, 0x4e, 0x56, 0xf9, 0x0f, 0xfa, 0x33, 0x5e, 0x1c, 0x6f, 0x10, 0x0d, 0x33, 0x5c, 0x2c,
0x51, 0x3b, 0x90, 0x0e, 0x6e, 0x25, 0x91, 0x0d, 0x0c, 0x06, 0x01, 0x25, 0x06, 0xac, 0x08, 0x02,
0x3b, 0x0f, 0x09, 0x01, 0x30, 0x06, 0xac, 0x08, 0x02, 0x30, 0x91, 0x0d, 0x0c, 0x06, 0x01, 0x30,
0x90, 0x0e, 0x6e, 0x3e, 0x2c, 0x51, 0x10, 0x0d, 0x79, 0x75, 0x2a, 0x1f, 0x40, 0x2f, 0x10, 0x0d,
0x5c, 0x0c, 0x06, 0x01, 0x30, 0x90, 0x0e, 0x6e, 0x3e, 0x2c, 0x51, 0x62, 0x02, 0x30, 0x91, 0x0e,
0xa0, 0x1d, 0x2c, 0x8d, 0x3b, 0x91, 0x0e, 0xa0, 0x96, 0x2c, 0x51, 0x62, 0x02, 0x25, 0x90, 0x0e,
0x6e, 0x3b, 0x0c, 0x06, 0x01, 0x10, 0x09, 0x4c, 0x05, 0xac, 0x3c, 0x01, 0x3e, 0x0c, 0x87, 0x01,
0x09, 0x0a, 0xfa, 0x33, 0x07, 0x0d, 0x30, 0x98, 0x07, 0x31, 0x57, 0x09, 0x30, 0x62, 0x1c, 0x4e,
0x95, 0x4e, 0x10, 0x10, 0x4c, 0x2c, 0x9a, 0xa2, 0x0d, 0x09, 0x03, 0x1d, 0x63, 0x3c, 0x55, 0x9b,
0x07, 0x62, 0x2b, 0x05, 0x65, 0x38, 0x2c, 0x0b, 0x09, 0x1e, 0x2c, 0x65, 0xee, 0x48, 0x0b, 0x04,
0x43, 0x50, 0x37, 0x08, 0x09, 0x63, 0x0e, 0x80, 0x06, 0x0e, 0x85, 0x06, 0x0a, 0x37, 0x6f, 0xa0,
0x57, 0x7b, 0x0e, 0x37, 0x3d, 0x3d, 0x2c, 0x73, 0x0f, 0x37, 0x3d, 0x3d, 0x38, 0x67, 0x9b, 0x0d,
0x37, 0x6f, 0xa0, 0x06, 0x85, 0x5e, 0x37, 0x08, 0x09, 0x63, 0x0e, 0x80, 0x06, 0xa2, 0x03, 0x68,
0x32, 0x2c, 0x65, 0xee, 0x48, 0x0b, 0x04, 0x0e, 0xaa, 0x89, 0x05, 0x65, 0x30, 0x63, 0x3c, 0x55,
0x00, 0x7e, 0x09, 0x0a, 0x89, 0x2c, 0x9a, 0xa2, 0x42, 0x08, 0x03, 0x10, 0x0b, 0x4c, 0x2c, 0xad,
0xf1, 0x10, 0x0b, 0x4c, 0x77, 0x42, 0x06, 0x27, 0x28, 0x2c, 0x47, 0x09, 0x27, 0x3a, 0x19, 0x27,
0x3a, 0x19, 0x1d, 0x28, 0x2c, 0x47, 0x09, 0x27, 0x0f, 0x20, 0x0c, 0x01, 0x9d, 0x35, 0x7e, 0x62,
0x27, 0x3a, 0x03, 0x0d, 0x27, 0x3a, 0x67, 0x27, 0x3a, 0x03, 0x0d, 0x9d, 0x35, 0x7e, 0x9c, 0x1d,
0x77, 0x42, 0x05, 0x10, 0x0b, 0x2d, 0xb6, 0x10, 0x0c, 0x4c, 0x2a, 0x48, 0x6d, 0x02, 0x25, 0x0f,
0x38, 0x8f, 0x08, 0x0e, 0x05, 0x27, 0x3a, 0x03, 0x65, 0x1d, 0x3a, 0xfb, 0x3a, 0x9b, 0x0d, 0x1d,
0x3a, 0x7b, 0x0e, 0x1d, 0x3a, 0x7b, 0x0e, 0x1d, 0x3a, 0x9b, 0x0d, 0x1d, 0x3a, 0xfb, 0x3a, 0x03,
0x60, 0x1d, 0x0f, 0x38, 0x8f, 0x08, 0x0e, 0x05, 0x27, 0x2a, 0x48, 0x6d, 0x02, 0x10, 0x0a, 0x4c,
0xc7, 0x66, 0x10, 0x09, 0x4c, 0x20, 0x73, 0x9d, 0x30, 0xfe, 0x20, 0x3e, 0x3f, 0x10, 0x0c, 0x52,
0x9b, 0x7a, 0x97, 0x0d, 0x09, 0xe4, 0x82, 0xc2, 0x32, 0x06, 0xe2, 0x48, 0x62, 0x03, 0x10, 0x0c,
0x4c, 0x92, 0x41, 0x35, 0x72, 0x0f, 0x1b, 0x72, 0x0f, 0x1d, 0xef, 0x10, 0x05, 0x52, 0xe5, 0x10,
0x05, 0x52, 0xe5, 0x1e, 0x19, 0x3e, 0x2c, 0x84, 0x31, 0x0f, 0x5b, 0x10, 0x0a, 0x4c, 0x94, 0x03,
0x9c, 0x1d, 0x0f, 0x33, 0x8b, 0x05, 0x00, 0x9d, 0x63, 0x6a, 0x35, 0x9d, 0x05, 0x68, 0x45, 0x28,
0x9a, 0x01, 0x3b, 0x0f, 0x49, 0x01, 0x31, 0x43, 0x0c, 0x05, 0x31, 0x0f, 0x7b, 0x0c, 0x05, 0x3e,
0x28, 0x7b, 0x0c, 0x06, 0x3e, 0x0f, 0x2c, 0x0c, 0x06, 0x25, 0x28, 0x2c, 0x9f, 0x9d, 0x2c, 0x9f,
0x10, 0x09, 0x4c, 0x4e, 0x96, 0xb5, 0x27, 0x1f, 0x10, 0x0d, 0x4c, 0x0f, 0x0a, 0x1e, 0xa3, 0x2b,
0x0f, 0x68, 0x18, 0xf2, 0x0f, 0x2b, 0x0f, 0x4a, 0x18, 0x09, 0x57, 0x2b, 0x43, 0x3d, 0x35, 0x6b,
0x28, 0x1b, 0x28, 0x09, 0x07, 0x38, 0x4a, 0x28, 0x89, 0x0f, 0x9b, 0x0d, 0x38, 0x68, 0x28, 0x37,
0x4b, 0x46, 0x00, 0x06, 0x0a, 0x4b, 0x37, 0x28, 0xee, 0x00, 0x0c, 0x04, 0x4b, 0x1b, 0x0f, 0x38,
0x62, 0x0c, 0x72, 0x33, 0x0f, 0x38, 0x57, 0x53, 0x4b, 0x1e, 0x72, 0x28, 0x96, 0x72, 0x28, 0x10,
0x0c, 0x4c, 0x0f, 0x60, 0x32, 0x0f, 0x1d, 0xd9, 0x28, 0x2b, 0xe0, 0x33, 0xb9, 0x57, 0x1d, 0x94,
0x7b, 0x0c, 0x0f, 0x10, 0x0d, 0x2d, 0x71, 0xba, 0x10, 0x0a, 0x4c, 0xd4, 0x38, 0x82, 0x88, 0x25,
0x94, 0x9e, 0x25, 0x94, 0x67, 0x25, 0x94, 0x9e, 0x25, 0x0f, 0x2c, 0x58, 0x07, 0x25, 0xd4, 0x56,
0xf7, 0x10, 0x0d, 0x2d, 0x71, 0x54, 0x25, 0x05, 0x86, 0x7f, 0x6a, 0x1e, 0x03, 0x0d, 0x2b, 0x94,
0x2c, 0x0e, 0x2b, 0x94, 0x2c, 0x0e, 0x2b, 0x6a, 0x1e, 0x03, 0x0d, 0x2b, 0x09, 0x07, 0x1e, 0x5a,
0x89, 0x9b, 0x65, 0x18, 0x03, 0xa7, 0x1d, 0xa8, 0x99, 0x9b, 0x06, 0x8c, 0x27, 0x03, 0x6c, 0x2a,
0x08, 0x1c, 0x06, 0x76, 0x1c, 0x9a, 0x01, 0x10, 0x0b, 0x4c, 0xd4, 0x2c, 0x58, 0x07, 0x25, 0x94,
0x03, 0x0d, 0x25, 0xc4, 0x25, 0x20, 0x0c, 0x45, 0x0f, 0x2c, 0xa8, 0x05, 0x25, 0x94, 0x58, 0x25,
0x3a, 0x0c, 0x05, 0x27, 0x3a, 0x58, 0x9d, 0x18, 0x0c, 0x06, 0x10, 0x0a, 0x52, 0x51, 0x0e, 0xbb,
0x01, 0x1c, 0x09, 0x0a, 0x1c, 0xae, 0x7a, 0x0f, 0x42, 0x06, 0x10, 0x09, 0xd0, 0x2a, 0x20, 0x3b,
0x4e, 0x96, 0xb5, 0x10, 0x0c, 0x4c, 0xb7, 0x10, 0x0b, 0x25, 0x34, 0x2c, 0xd5, 0x01, 0x3d, 0x1b,
0x09, 0x07, 0x1e, 0x5a, 0x2b, 0x03, 0x0d, 0x1e, 0x6a, 0x1d, 0x46, 0x18, 0xa5, 0x27, 0xa5, 0x18,
0x0b, 0x04, 0x25, 0x6a, 0x38, 0x03, 0x0d, 0x45, 0x5a, 0x38, 0x09, 0x06, 0x1d, 0x2c, 0x3d, 0x01,
0x3d, 0x45, 0x09, 0x07, 0x00, 0x4a, 0x3e, 0x9b, 0x76, 0x68, 0x31, 0x0b, 0x0a, 0x0a, 0x31, 0x63,
0x0f, 0x04, 0x10, 0x11, 0x4c, 0x0d, 0x18, 0x8e, 0x02, 0x18, 0xd5, 0x09, 0x05, 0x33, 0x06, 0x0e,
0x06, 0x33, 0xa5, 0x96, 0x90, 0x33, 0xa4, 0x0a, 0x33, 0x0a, 0x05, 0x37, 0x76, 0x38, 0x68, 0x0d,
0x2c, 0x3d, 0x96, 0x08, 0x53, 0x7b, 0x0c, 0x00, 0x0c, 0x02, 0x35, 0x5e, 0x1b, 0x26, 0x35, 0x05,
0x08, 0x00, 0x8a, 0x35, 0x0c, 0x04, 0x89, 0x0c, 0x02, 0x00, 0x09, 0x05, 0x00, 0x05, 0x09, 0x9b,
0x0d, 0x2b, 0x07, 0x07, 0x00, 0x0c, 0x01, 0x00, 0x6b, 0x00, 0x4a, 0x2b, 0xf2, 0x01, 0x0c, 0x38,
0x0c, 0x01, 0x6a, 0x1d, 0x0c, 0x5a, 0x38, 0xa4, 0x0c, 0x27, 0x07, 0x0e, 0x05, 0x38, 0x05, 0x0f,
0x07, 0x27, 0x67, 0x02, 0x35, 0x9b, 0x43, 0x10, 0x0b, 0x4c, 0xd7, 0x89, 0x2c, 0x60, 0x2c, 0x68,
0x25, 0x06, 0x0b, 0x38, 0x0a, 0x06, 0x3e, 0x46, 0x00, 0xa5, 0x3e, 0x9b, 0x68, 0x68, 0x31, 0x08,
0x8c, 0x31, 0x0c, 0x08, 0x0c, 0x31, 0x06, 0x0a, 0x00, 0x0a, 0x06, 0x27, 0x2c, 0x68, 0x7b, 0x68,
0x45, 0x5f, 0x38, 0x06, 0x0a, 0x25, 0xf2, 0x18, 0x0c, 0x05, 0x27, 0x0b, 0xf8, 0x03, 0x76, 0x10,
0x09, 0xd0, 0xd7, 0x1d, 0x9b, 0x60, 0xdd, 0x10, 0x0c, 0x4c, 0x20, 0xbc, 0x10, 0x06, 0x4c, 0x2a,
0x30, 0xe5, 0x96, 0x2a, 0x10, 0x05, 0xd0, 0x6a, 0x1c, 0x08, 0x08, 0x30, 0xee, 0x56, 0x60, 0x1c,
0x09, 0x83, 0xa5, 0x3b, 0x2c, 0x7d, 0x46, 0x1c, 0x5e, 0x1c, 0x19, 0x56, 0x0c, 0x04, 0x1c, 0x4a,
0x1c, 0xe7, 0x10, 0x06, 0x52, 0x2a, 0x56, 0xe5, 0x32, 0x2a, 0x10, 0x0d, 0x81, 0x05, 0x97, 0x05,
0x3b, 0x57, 0x09, 0x8d, 0x05, 0x45, 0x57, 0x06, 0x35, 0x57, 0x06, 0x27, 0x07, 0xa7, 0x38, 0x63,
0x86, 0x10, 0x08, 0x4c, 0x78, 0x97, 0x20, 0x10, 0x08, 0x37, 0x1a, 0x08, 0x36, 0x10, 0x09, 0x59,
0x9b, 0xb4, 0xf4, 0x10, 0x0a, 0x4c, 0xfe, 0x43, 0x7c, 0xc1, 0x9d, 0xce, 0xc3, 0x0e, 0x4f, 0x10,
0x09, 0x59, 0x9b, 0x7c, 0xaf, 0x10, 0x0a, 0x35, 0xf9, 0x21, 0x96, 0x26, 0xbf, 0xac, 0x0e, 0xf4,
0x10, 0x09, 0x59, 0xee, 0xc0, 0x10, 0x06, 0x52, 0x58, 0x0f, 0x29, 0x6a, 0x1c, 0x0f, 0x1c, 0x70,
0x31, 0xf7, 0x3b, 0xf7, 0x10, 0x0a, 0x5c, 0x03, 0xac, 0x0e, 0xf4, 0x25, 0x19, 0xbd, 0x1e, 0xf3,
0x01, 0x82, 0x88, 0x45, 0x49, 0x0e, 0x42, 0x05, 0x10, 0x0a, 0x4c, 0xfe, 0xc5, 0x10, 0x03, 0x4c,
0x4e, 0x95, 0xb5, 0x10, 0x03, 0x4c, 0x4e, 0x95, 0xb5, 0x27, 0x0e, 0x30, 0xee, 0x30, 0x0f, 0x6a,
0x10, 0x09, 0x4c, 0xf7, 0x8b, 0x53, 0x9d, 0x63, 0x50, 0x35, 0x9d, 0x51, 0x02, 0x45, 0x28, 0x5d,
0x01, 0x3e, 0x28, 0x3d, 0x3e, 0x28, 0x06, 0x2e, 0x9d, 0x04, 0x50, 0x3e, 0x0f, 0x38, 0x03, 0x64,
0x45, 0x0f, 0x38, 0x9b, 0x9c, 0x10, 0x03, 0x4c, 0xe5, 0x10, 0x0f, 0x59, 0x43, 0x7c, 0x8c, 0x01,
0x7c, 0x3c, 0x89, 0x0f, 0x09, 0x06, 0x01, 0xf2, 0x5a, 0x06, 0x01, 0xf2, 0x06, 0x1b, 0x0f, 0x06,
0x38, 0x8b, 0x06, 0x38, 0x44, 0x1b, 0x0f, 0x02, 0x38, 0x67, 0x02, 0x2c, 0x0e, 0x1b, 0x94, 0x94,
0x0f, 0x1b, 0x94, 0x94, 0x0f, 0x1b, 0x94, 0x94, 0x0f, 0x1b, 0x94, 0x94, 0x0f, 0x1b, 0x94, 0x94,
0x0f, 0x10, 0x0a, 0x59, 0xc5, 0x10, 0x0a, 0x5c, 0xb0, 0xd3, 0x10, 0x0a, 0x59, 0x43, 0x7c, 0xc1,
0x9d, 0xce, 0xc3, 0x0e, 0x4f, 0x45, 0x21, 0x10, 0x0a, 0x5c, 0x26, 0xbf, 0xac, 0x3c, 0x01, 0xf7,
0x10, 0x07, 0x59, 0x43, 0x09, 0xa2, 0x3b, 0x0f, 0x09, 0x87, 0x31, 0x0f, 0x07, 0x1c, 0x0f, 0x02,
0x1c, 0xfe, 0x4e, 0x10, 0x09, 0x59, 0x01, 0x08, 0x23, 0xb1, 0xc9, 0x10, 0x06, 0x3b, 0xf9, 0x4e,
0x1e, 0x77, 0x31, 0xfe, 0xfe, 0x0c, 0x05, 0x1c, 0x9e, 0x97, 0x10, 0x0a, 0x59, 0xde, 0xde, 0xbe,
0x10, 0x09, 0x30, 0x93, 0xf2, 0x1e, 0x50, 0x1d, 0x0a, 0x06, 0x18, 0x51, 0x27, 0x03, 0x0d, 0x18,
0x50, 0x25, 0x6d, 0x38, 0x9a, 0x25, 0x63, 0x3d, 0x01, 0x0e, 0x05, 0x3e, 0x9f, 0x08, 0x0d, 0x3b,
0xa8, 0x19, 0x05, 0x31, 0x0d, 0x0e, 0x0d, 0x35, 0xdc, 0x10, 0x0d, 0x30, 0x93, 0x03, 0x0d, 0x33,
0x6b, 0x18, 0x6a, 0x37, 0x0c, 0x04, 0x38, 0x06, 0x0e, 0x05, 0x35, 0xee, 0x1b, 0x06, 0x0a, 0x38,
0x0c, 0x06, 0x0b, 0x38, 0x0a, 0x06, 0x1e, 0x2c, 0x3d, 0x44, 0x00, 0x0c, 0x02, 0x7b, 0x3d, 0x1b,
0x0a, 0x07, 0x00, 0x5f, 0x00, 0x07, 0x07, 0x00, 0x5a, 0x89, 0xee, 0x00, 0x60, 0x9b, 0x0d, 0x00,
0x6f, 0x2b, 0x62, 0x0b, 0x38, 0x0b, 0x08, 0x0c, 0x27, 0x98, 0x06, 0x38, 0x57, 0x06, 0x27, 0x19,
0x01, 0x2c, 0x3d, 0x10, 0x0a, 0x59, 0xa9, 0x33, 0x84, 0x89, 0x2c, 0x6a, 0x35, 0x8b, 0x01, 0x45,
0x49, 0x35, 0x0c, 0x05, 0x3b, 0x09, 0x07, 0x61, 0x45, 0x2c, 0x0c, 0x68, 0x31, 0x09, 0x05, 0x5e,
0x3b, 0xa6, 0x35, 0x0b, 0x04, 0x1d, 0x2c, 0x68, 0x00, 0x9b, 0x76, 0x25, 0xa9, 0x33, 0x84, 0x10,
0x09, 0x1c, 0x93, 0x0c, 0xf8, 0xb8, 0x48, 0x0a, 0x01, 0x10, 0x09, 0x59, 0xd1, 0xf6, 0x10, 0x0a,
0x69, 0x58, 0x0f, 0x30, 0x64, 0x1c, 0x21, 0x1d, 0x67, 0x1c, 0x9a, 0x30, 0x97, 0x04, 0x1c, 0x51,
0xfa, 0x18, 0xfe, 0x64, 0x1c, 0x58, 0x0f, 0x10, 0x05, 0x52, 0xe5, 0x96, 0xf7, 0x10, 0x0a, 0x52,
0x0f, 0x64, 0x1c, 0x58, 0x56, 0xfe, 0x43, 0x1c, 0x9f, 0x31, 0x63, 0x97, 0x30, 0x0c, 0x83, 0x43,
0x1c, 0x21, 0x1d, 0x58, 0x30, 0x0f, 0x64, 0x10, 0x0d, 0x22, 0x75, 0xdf, 0xfc, 0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_0[95] = {
0x0000, 0x0003, 0x000e, 0x0016, 0x0053, 0x0086, 0x00af, 0x00f4,
0x00f8, 0x011c, 0x0145, 0x015f, 0x0169, 0x0173, 0x0178, 0x017d,
0x019c, 0x01d5, 0x01e1, 0x020d, 0x023a, 0x025c, 0x027f, 0x02bb,
0x02d9, 0x0314, 0x0347, 0x034f, 0x035c, 0x0387, 0x038f, 0x03b6,
0x03d3, 0x043c, 0x0442, 0x0474, 0x0478, 0x04ae, 0x04b3, 0x04be,
0x04cf, 0x04dc, 0x04e0, 0x04ec, 0x0521, 0x0529, 0x0570, 0x0584,
0x0589, 0x05a2, 0x05d8, 0x05fb, 0x060b, 0x0614, 0x0618, 0x0653,
0x06b8, 0x06f0, 0x06f8, 0x06fd, 0x0705, 0x0723, 0x072b, 0x0742,
0x0748, 0x074e, 0x0754, 0x0760, 0x0766, 0x0771, 0x0776, 0x0785,
0x0799, 0x079e, 0x07a4, 0x07b1, 0x07d6, 0x07da, 0x0812, 0x0816,
0x081b, 0x0828, 0x0831, 0x0844, 0x084c, 0x085b, 0x0861, 0x088a,
0x08d4, 0x0900, 0x090a, 0x090f, 0x0928, 0x092e, 0x0948,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_1[1970] = {
0x0a, 0x00, 0x10, 0x06, 0x2d, 0x4e, 0x00, 0x34, 0x0d, 0x56, 0x0e, 0x56, 0x3f, 0x10, 0x0a, 0x56,
0xf9, 0x4e, 0x35, 0x2c, 0x7a, 0x0f, 0x64, 0x25, 0x9b, 0x3c, 0x74, 0x02, 0x09, 0x45, 0xa9, 0x4b,
0x45, 0x60, 0x4b, 0x45, 0x43, 0x4b, 0x45, 0x60, 0x4b, 0x45, 0xa9, 0x4b, 0x25, 0x9b, 0x3c, 0x74,
0x02, 0x0a, 0x45, 0x9b, 0x0a, 0xa2, 0x64, 0x30, 0x4e, 0x10, 0x0a, 0xd0, 0x2c, 0x7c, 0x64, 0x3b,
0x08, 0x0a, 0x01, 0x02, 0x09, 0x3b, 0x68, 0x1c, 0x21, 0x2b, 0x77, 0x29, 0xf7, 0x45, 0x1f, 0x10,
0x0a, 0x59, 0x09, 0x06, 0x18, 0x5e, 0x27, 0x05, 0x0f, 0x6c, 0x0f, 0x0d, 0xa3, 0x05, 0x25, 0x6c,
0x55, 0x9e, 0x0a, 0x45, 0x50, 0x38, 0x9e, 0x45, 0x43, 0x38, 0x67, 0x45, 0x50, 0x38, 0x9e, 0x45,
0x6c, 0x55, 0x9e, 0x0a, 0x25, 0x05, 0x0f, 0x6c, 0x0f, 0x0d, 0x8d, 0x05, 0x27, 0x09, 0x05, 0x18,
0x05, 0x09, 0x10, 0x0a, 0xd0, 0xa0, 0x00, 0x06, 0x0b, 0x1d, 0x9b, 0x76, 0x2c, 0x68, 0x25, 0x5f,
0x38, 0x4a, 0x1d, 0x2c, 0x76, 0x7b, 0x76, 0x3e, 0x06, 0x08, 0x00, 0x08, 0x06, 0x3e, 0x0f, 0x48,
0x8b, 0x97, 0x3b, 0x06, 0x0e, 0x06, 0x3e, 0x2c, 0x43, 0x3b, 0x1f, 0x21, 0x10, 0x05, 0x31, 0xf9,
0x3f, 0x1b, 0x34, 0x3f, 0x10, 0x08, 0x52, 0x44, 0x0e, 0x97, 0x3b, 0x64, 0x1c, 0x0f, 0x03, 0x1c,
0x0d, 0x86, 0x01, 0x3b, 0x06, 0x0e, 0x7c, 0x50, 0x3e, 0x6a, 0x9b, 0x4d, 0x04, 0x45, 0x43, 0x38,
0x08, 0x0c, 0x45, 0x0c, 0x0a, 0x01, 0x35, 0x67, 0x45, 0x8b, 0x50, 0x00, 0x49, 0x45, 0x9b, 0x4d,
0x0c, 0xa7, 0x31, 0x58, 0x0d, 0x1c, 0x8e, 0x1c, 0x51, 0x3b, 0x2a, 0x4f, 0x10, 0x08, 0x52, 0xcd,
0x10, 0x10, 0x81, 0x51, 0x0e, 0x42, 0x06, 0x25, 0xf2, 0x0b, 0x55, 0x7e, 0xab, 0x02, 0x1d, 0x9f,
0x07, 0xa2, 0x85, 0x9a, 0x2b, 0x61, 0x00, 0x51, 0x03, 0x33, 0x0a, 0x07, 0x89, 0x0c, 0x04, 0x00,
0x0c, 0xf8, 0x47, 0x89, 0x3d, 0x3d, 0x00, 0x2c, 0x0e, 0x89, 0x3d, 0x3d, 0x00, 0x2c, 0x0e, 0x89,
0x0c, 0x04, 0x00, 0x0c, 0xf8, 0x47, 0x89, 0x61, 0x00, 0x49, 0x03, 0x33, 0x0a, 0x07, 0x2b, 0x0c,
0x08, 0x00, 0x07, 0xa2, 0x85, 0x9a, 0x1d, 0xf2, 0x0b, 0x55, 0x7e, 0xea, 0x10, 0x08, 0x52, 0x97,
0x42, 0x03, 0x1c, 0x49, 0x3e, 0x03, 0xac, 0x2a, 0x3e, 0x88, 0x01, 0x00, 0x67, 0x3e, 0x0e, 0x05,
0x9b, 0xa3, 0x3e, 0x9e, 0x0f, 0x64, 0x0f, 0x40, 0x09, 0x77, 0x10, 0x0a, 0x1e, 0x75, 0x09, 0x38,
0x09, 0x45, 0xf2, 0x0a, 0x00, 0xf2, 0x0a, 0x25, 0x03, 0x9c, 0x03, 0x9c, 0x25, 0x8c, 0x00, 0x8c,
0x25, 0x63, 0x9c, 0x9e, 0x07, 0x3e, 0xf2, 0x0a, 0x00, 0xf2, 0x0a, 0x3b, 0x09, 0x38, 0x09, 0x10,
0x0d, 0x79, 0x75, 0x2f, 0xf7, 0x10, 0x06, 0x4c, 0x75, 0x70, 0x10, 0x10, 0x81, 0x51, 0x0e, 0x42,
0x06, 0x25, 0xf2, 0x0b, 0x55, 0x7e, 0xab, 0x02, 0x1d, 0x9f, 0x2a, 0x0c, 0x04, 0x9a, 0x2b, 0x61,
0x4b, 0x04, 0x0e, 0x00, 0x0a, 0x07, 0x89, 0x0c, 0x04, 0x4b, 0x04, 0x0e, 0xee, 0x89, 0x3d, 0x00,
0x2a, 0xa7, 0x7b, 0x0e, 0x89, 0x3d, 0x28, 0x57, 0x02, 0x7b, 0x0e, 0x89, 0x0c, 0x04, 0x4b, 0x0b,
0x09, 0xee, 0x89, 0x61, 0x4b, 0x04, 0x0f, 0x03, 0x0a, 0x07, 0x2b, 0x0c, 0x08, 0x28, 0x35, 0x4d,
0x0c, 0x1d, 0xf2, 0x0b, 0x55, 0x7e, 0xea, 0x10, 0x08, 0x52, 0x77, 0x10, 0x08, 0x52, 0xe8, 0x5b,
0x3e, 0x6d, 0x01, 0x61, 0x3b, 0x3d, 0x01, 0x0e, 0x3b, 0x6d, 0x01, 0x61, 0x3b, 0xe8, 0x5b, 0x10,
0x0d, 0x33, 0x93, 0x21, 0x1b, 0x2a, 0x20, 0x3b, 0x21, 0x38, 0x34, 0x2a, 0x20, 0x10, 0x06, 0x4c,
0x2a, 0x6f, 0x30, 0xa1, 0x1c, 0x44, 0x31, 0x9b, 0x50, 0x31, 0x03, 0x64, 0x31, 0xa8, 0x05, 0x30,
0x77, 0x10, 0x06, 0x4c, 0x2a, 0x0c, 0x04, 0x1c, 0xa8, 0x3e, 0x2c, 0x58, 0x31, 0x2a, 0x04, 0x3e,
0x2c, 0x58, 0x3e, 0x2c, 0x58, 0x3b, 0x97, 0x42, 0x04, 0x10, 0x08, 0x34, 0x19, 0x08, 0x30, 0x39,
0x10, 0x0a, 0x59, 0xde, 0xde, 0xde, 0x0f, 0x02, 0x33, 0x74, 0x25, 0x0f, 0x0c, 0x03, 0x01, 0x01,
0x9e, 0x43, 0x27, 0x0f, 0xa1, 0x97, 0x0c, 0x06, 0x0a, 0x0e, 0x27, 0x21, 0x10, 0x0a, 0x52, 0x03,
0xac, 0x2a, 0x45, 0x05, 0x70, 0x0f, 0x45, 0x0d, 0x70, 0x0f, 0x45, 0x77, 0x28, 0x25, 0x0d, 0x70,
0x0f, 0x45, 0x05, 0x70, 0x0f, 0x3e, 0x03, 0x6c, 0x85, 0x29, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd,
0xfd, 0x10, 0x05, 0x79, 0x75, 0x4e, 0x10, 0x08, 0x1e, 0x78, 0xc8, 0x09, 0x10, 0x06, 0x4c, 0x97,
0x3f, 0x25, 0x77, 0x10, 0x08, 0xd0, 0x7b, 0x7c, 0x3c, 0x01, 0x3e, 0x09, 0x0a, 0x01, 0x01, 0x0a,
0x09, 0x3e, 0x3d, 0x7b, 0x0e, 0x3e, 0x3d, 0x7b, 0x0e, 0x3e, 0x09, 0x0a, 0x01, 0x01, 0x0a, 0x09,
0x27, 0x2c, 0x7c, 0x3c, 0x01, 0x40, 0x4d, 0x2a, 0x0b, 0x10, 0x0a, 0x18, 0x75, 0x09, 0x38, 0x09,
0x3b, 0xab, 0x02, 0x00, 0xab, 0x02, 0x3e, 0x07, 0x6a, 0x00, 0x07, 0x6a, 0x3e, 0x08, 0x0e, 0x35,
0x08, 0x0e, 0x45, 0x07, 0x6a, 0x00, 0x07, 0x6a, 0x25, 0xab, 0x02, 0x00, 0xab, 0x02, 0x45, 0x09,
0x38, 0x09, 0x10, 0x10, 0xd8, 0x53, 0xe9, 0x0c, 0x06, 0x35, 0x98, 0x89, 0x77, 0x06, 0x0b, 0x00,
0x7b, 0x4d, 0xe1, 0x37, 0x2c, 0x65, 0x38, 0x77, 0x2b, 0xa9, 0x1e, 0x0f, 0x10, 0x10, 0xd8, 0x53,
0xe9, 0x0c, 0x53, 0x2a, 0x6f, 0x96, 0x77, 0x06, 0x0b, 0x18, 0xa1, 0x2b, 0x9b, 0x60, 0x18, 0x44,
0x1d, 0x6d, 0x33, 0x9b, 0x50, 0x2b, 0x51, 0x18, 0x03, 0x64, 0x37, 0x2c, 0x65, 0x33, 0xa8, 0x05,
0x1d, 0xa9, 0x18, 0x77, 0x10, 0x10, 0x4c, 0x2a, 0x0c, 0x04, 0x33, 0x84, 0x27, 0xa8, 0x38, 0x8b,
0x01, 0x89, 0x2c, 0x58, 0x38, 0x0c, 0x06, 0x27, 0x2a, 0x04, 0x35, 0x61, 0x1d, 0x2c, 0x58, 0x9b,
0x60, 0x1d, 0x2c, 0x58, 0x00, 0x0c, 0x06, 0x35, 0x98, 0x89, 0x97, 0x42, 0x04, 0x06, 0x0b, 0x00,
0x7b, 0x4d, 0xe1, 0x37, 0x2c, 0x65, 0x38, 0x77, 0x2b, 0xa9, 0x1e, 0x0f, 0x10, 0x09, 0x81, 0x4e,
0x95, 0x0f, 0x1c, 0x67, 0x1c, 0x61, 0x30, 0x09, 0x60, 0x31, 0x07, 0xa7, 0x30, 0x6a, 0x1c, 0x7d,
0x0a, 0x09, 0x01, 0x01, 0xa5, 0x27, 0x2c, 0x7c, 0x0e, 0x0b, 0x04, 0x10, 0x0b, 0x32, 0xca, 0x0b,
0x1a, 0x2c, 0xad, 0xf1, 0x10, 0x0b, 0x1e, 0xb2, 0x1a, 0x2c, 0xad, 0xf1, 0x10, 0x0b, 0x1e, 0xd2,
0x00, 0x2c, 0xad, 0xf1, 0x10, 0x0b, 0x18, 0xec, 0x07, 0x40, 0x2c, 0xad, 0xf1, 0x10, 0x0b, 0x32,
0xcd, 0x00, 0x2c, 0xad, 0xf1, 0x10, 0x0b, 0x32, 0x44, 0x42, 0x03, 0x3b, 0x64, 0x00, 0x58, 0x3b,
0x0e, 0x05, 0x00, 0x58, 0x3e, 0x63, 0x0f, 0x8d, 0x04, 0x3b, 0x58, 0x00, 0x64, 0x3b, 0x0a, 0x07,
0x00, 0x06, 0x0a, 0x27, 0x2c, 0x3d, 0x01, 0x3d, 0x25, 0x5a, 0x38, 0x5f, 0x45, 0x6f, 0x35, 0xf2,
0x25, 0x26, 0x18, 0x54, 0x27, 0x8a, 0x18, 0x03, 0x08, 0x27, 0x0e, 0x20, 0x48, 0x1d, 0x58, 0x1e,
0x64, 0x2b, 0x0a, 0x07, 0x1e, 0xff, 0x01, 0xd5, 0x01, 0x3d, 0x10, 0x10, 0x69, 0x05, 0x77, 0x77,
0x2b, 0x0b, 0x04, 0x28, 0x3e, 0xf2, 0x4b, 0x45, 0x08, 0x53, 0x28, 0x3e, 0x76, 0x4b, 0x25, 0x05,
0x09, 0x38, 0x97, 0x20, 0x1b, 0x4f, 0x72, 0x96, 0xf2, 0x33, 0x0f, 0x45, 0x09, 0x20, 0x2b, 0x2c,
0x60, 0x33, 0x0f, 0x25, 0x06, 0x0a, 0x18, 0x0f, 0x25, 0x0c, 0xf8, 0x97, 0x20, 0x10, 0x0b, 0x2d,
0xb6, 0x3b, 0xc8, 0x09, 0x10, 0x0a, 0x32, 0xca, 0x0b, 0x1a, 0xc7, 0x66, 0x10, 0x0a, 0x1e, 0xb2,
0x1a, 0xc7, 0x66, 0x10, 0x0a, 0x1e, 0xd2, 0x00, 0xc7, 0x66, 0x10, 0x0a, 0x32, 0xcd, 0x00, 0xc7,
0x66, 0x10, 0x05, 0x38, 0xca, 0x0b, 0x33, 0x1a, 0xe5, 0x10, 0x05, 0x33, 0xb2, 0x33, 0x1a, 0xe5,
0x10, 0x05, 0x33, 0xd2, 0x18, 0xe5, 0x10, 0x05, 0x38, 0xcd, 0x18, 0xe5, 0x10, 0x0d, 0x52, 0x2a,
0x48, 0x6d, 0x01, 0x25, 0x0f, 0x38, 0x7e, 0x7c, 0x05, 0x27, 0x3a, 0x03, 0x60, 0x1d, 0x3a, 0xfb,
0x3a, 0x9b, 0x0d, 0x89, 0x97, 0x70, 0x2c, 0x0e, 0x1d, 0x3a, 0x7b, 0x0e, 0x1d, 0x0f, 0x1e, 0x03,
0x0d, 0x1d, 0x3a, 0xfb, 0x3a, 0x03, 0x60, 0x1d, 0x0f, 0x38, 0x7e, 0x7c, 0x05, 0x27, 0x2a, 0x48,
0x6d, 0x01, 0x10, 0x0c, 0x32, 0xec, 0x07, 0x96, 0x95, 0x0f, 0x60, 0x32, 0x0f, 0x1d, 0xd9, 0x28,
0x2b, 0xe0, 0x33, 0xb9, 0x57, 0x1d, 0x94, 0x7b, 0x0c, 0x0f, 0x10, 0x0d, 0x1e, 0xca, 0x0b, 0x00,
0x1a, 0x71, 0xba, 0x10, 0x0d, 0x96, 0xb2, 0x00, 0x1a, 0x71, 0xba, 0x10, 0x0d, 0x96, 0xd2, 0x35,
0x71, 0xba, 0x10, 0x0d, 0x32, 0xec, 0x07, 0x1a, 0x71, 0xba, 0x10, 0x0d, 0x1e, 0xcd, 0x35, 0x71,
0xba, 0x10, 0x0d, 0x93, 0xaa, 0x33, 0x9b, 0x0a, 0x27, 0x07, 0xf5, 0x02, 0x9c, 0x27, 0x07, 0x68,
0x9b, 0x9c, 0x45, 0x07, 0x6a, 0x9c, 0x3b, 0x4d, 0x0a, 0x31, 0x07, 0x6a, 0x9c, 0x45, 0x07, 0x68,
0x9b, 0x9c, 0x27, 0x07, 0xf5, 0x02, 0x9c, 0x1d, 0xaa, 0x33, 0x9b, 0x0a, 0x10, 0x0d, 0x33, 0x34,
0x2c, 0x27, 0x91, 0x23, 0x0b, 0x06, 0x44, 0x1d, 0x03, 0x0d, 0x07, 0x02, 0x9b, 0x07, 0xa2, 0x06,
0x37, 0x2c, 0x6a, 0x00, 0x2c, 0x0c, 0x0c, 0x05, 0x2b, 0x5f, 0x18, 0x0b, 0x04, 0x5e, 0x2b, 0x6f,
0x38, 0x0a, 0x53, 0x03, 0x0d, 0x2b, 0x0e, 0x33, 0x5f, 0x35, 0x67, 0x2b, 0x43, 0x35, 0x5a, 0x2c,
0x0e, 0x2b, 0x6a, 0x00, 0x05, 0x0a, 0x33, 0x44, 0x2b, 0x08, 0x06, 0xa6, 0x18, 0x4a, 0x89, 0xee,
0x0c, 0x01, 0x33, 0x03, 0x76, 0x2b, 0x57, 0x86, 0x02, 0x9b, 0x06, 0x50, 0x1d, 0x0c, 0x03, 0x06,
0x0b, 0xa2, 0x62, 0x02, 0x89, 0x2c, 0x10, 0x0c, 0x1e, 0xca, 0x0b, 0x40, 0xb7, 0x10, 0x0c, 0x96,
0xb2, 0x40, 0xb7, 0x10, 0x0c, 0x96, 0xd2, 0xb7, 0x10, 0x0c, 0x1e, 0xcd, 0xb7, 0x10, 0x09, 0x1e,
0xb2, 0x40, 0xd7, 0x1d, 0x9b, 0x60, 0xdd, 0x10, 0x0a, 0x4c, 0x4e, 0x96, 0xd4, 0x38, 0x82, 0x88,
0x25, 0x94, 0x9e, 0x25, 0xc4, 0x25, 0xd4, 0x56, 0x4e, 0x10, 0x0a, 0x52, 0x07, 0x0d, 0x0e, 0x9c,
0x45, 0x08, 0x4f, 0x9b, 0x6d, 0x45, 0xf5, 0x03, 0x0d, 0x25, 0x28, 0x9b, 0x0b, 0x0b, 0x08, 0x35,
0x9d, 0x46, 0x33, 0x9d, 0x60, 0x33, 0x9d, 0x0c, 0x86, 0x01, 0x25, 0x28, 0x63, 0xa2, 0x68, 0x25,
0x0f, 0x33, 0x49, 0x0c, 0x00, 0x9d, 0x2c, 0x0e, 0x27, 0x28, 0x2c, 0x61, 0x27, 0x28, 0x2a, 0x0d,
0x09, 0x01, 0x10, 0x09, 0xb3, 0x9b, 0xb4, 0xf4, 0x10, 0x09, 0xdb, 0x1a, 0x9b, 0xb4, 0xf4, 0x10,
0x09, 0x34, 0x57, 0xcb, 0xff, 0x79, 0x9b, 0xb4, 0xf4, 0x10, 0x09, 0x52, 0xf0, 0x9b, 0xb4, 0xf4,
0x10, 0x09, 0xda, 0xd6, 0x9b, 0xb4, 0xf4, 0x10, 0x09, 0x00, 0x79, 0x9e, 0x50, 0x31, 0x6a, 0xe7,
0x6a, 0xe7, 0x9e, 0x50, 0x40, 0x9b, 0xb4, 0xf4, 0x10, 0x10, 0x5c, 0x91, 0x0e, 0x0e, 0x4f, 0x9a,
0x0e, 0x0e, 0x0b, 0x04, 0x89, 0x88, 0x01, 0x02, 0x0a, 0x97, 0x08, 0x02, 0x82, 0xa7, 0x27, 0x67,
0x08, 0x33, 0xa5, 0x1b, 0x07, 0x0d, 0x0e, 0x2a, 0x02, 0x00, 0x2c, 0x0e, 0x37, 0x08, 0x4f, 0x01,
0x35, 0x97, 0x20, 0x37, 0xf5, 0x67, 0x02, 0x25, 0x3d, 0x35, 0x57, 0x07, 0x25, 0x0a, 0x0a, 0x01,
0x01, 0x06, 0x64, 0x86, 0x02, 0x7b, 0xa5, 0x32, 0x2c, 0x7c, 0x0e, 0x5b, 0x02, 0x6c, 0x48, 0x54,
0x10, 0x09, 0x59, 0x9b, 0x7c, 0xaf, 0x38, 0xc8, 0x09, 0x10, 0x09, 0xb3, 0xee, 0xc0, 0x10, 0x09,
0xdb, 0x1a, 0xee, 0xc0, 0x10, 0x09, 0x34, 0x57, 0xcb, 0xff, 0x79, 0xee, 0xc0, 0x10, 0x09, 0xda,
0xd6, 0xee, 0xc0, 0x10, 0x03, 0x1e, 0x1a, 0x08, 0x36, 0x1e, 0xb5, 0x10, 0x03, 0x22, 0x19, 0x08,
0x30, 0x39, 0x38, 0x1a, 0xb5, 0x10, 0x03, 0x37, 0x1a, 0x57, 0xcb, 0xff, 0x95, 0xb5, 0x10, 0x03,
0xd0, 0xcd, 0x33, 0xb5, 0x10, 0x0a, 0x52, 0x08, 0x64, 0x09, 0x64, 0x45, 0x82, 0xa2, 0xaa, 0x3e,
0xa4, 0x02, 0x02, 0x0a, 0xaa, 0x45, 0xee, 0x2a, 0x76, 0x25, 0x8b, 0x99, 0x9b, 0x9f, 0x27, 0x0a,
0x07, 0x33, 0x49, 0x25, 0x2e, 0x19, 0x25, 0x3a, 0x0f, 0x25, 0xf5, 0x9b, 0x0d, 0x25, 0x0a, 0x06,
0x33, 0x06, 0x0a, 0x25, 0x8b, 0x87, 0x82, 0x65, 0x25, 0xee, 0x0e, 0x42, 0x04, 0x10, 0x0a, 0x52,
0xf0, 0xc5, 0x10, 0x0a, 0xb3, 0x00, 0xb0, 0xd3, 0x10, 0x0a, 0xdb, 0x00, 0x1a, 0xb0, 0xd3, 0x10,
0x0a, 0x34, 0x57, 0xcb, 0x5d, 0x40, 0xb0, 0xd3, 0x10, 0x0a, 0x52, 0xf0, 0x00, 0xb0, 0xd3, 0x10,
0x0a, 0x2d, 0xcd, 0x35, 0xb0, 0xd3, 0x10, 0x0d, 0x37, 0x75, 0xe6, 0x40, 0x2f, 0x3b, 0xe6, 0x10,
0x0a, 0x32, 0x93, 0x03, 0x45, 0xa6, 0xa2, 0x62, 0x0c, 0x01, 0x27, 0x19, 0x87, 0x63, 0x0f, 0x07,
0x25, 0x0a, 0x06, 0x38, 0x09, 0xa4, 0x25, 0x68, 0x35, 0x5f, 0x6b, 0x00, 0x9d, 0x4a, 0x4b, 0x1d,
0x76, 0x5e, 0x00, 0x9b, 0x0d, 0x25, 0xa4, 0x09, 0x38, 0x06, 0x0a, 0x25, 0x98, 0x04, 0x00, 0x82,
0x60, 0x89, 0x2c, 0x0c, 0x9a, 0x48, 0x0b, 0x04, 0x25, 0x8f, 0x10, 0x0a, 0xb3, 0xde, 0xde, 0xbe,
0x10, 0x0a, 0xdb, 0x1a, 0xde, 0xde, 0xbe, 0x10, 0x0a, 0x34, 0x57, 0xcb, 0xff, 0x79, 0xde, 0xde,
0xbe, 0x10, 0x0a, 0xda, 0xd6, 0xde, 0xde, 0xbe, 0x10, 0x09, 0xdb, 0x40, 0x0c, 0xf8, 0xb8, 0x48,
0x0a, 0x01, 0x10, 0x0a, 0x4c, 0xfe, 0x43, 0x7c, 0xc1, 0x9d, 0xce, 0xc3, 0x0e, 0x4f, 0x45, 0x21,
0x10, 0x09, 0x2d, 0xcd, 0x0c, 0xf8, 0xb8, 0x48, 0x0a, 0x01, 0x10, 0x00, 0x0b, 0x96, 0xb2, 0x00,
0x1a, 0xb6, 0x10, 0x09, 0xdb, 0x1a, 0x9b, 0x7c, 0xaf, 0x10, 0x0b, 0x1e, 0xe3, 0x1a, 0xb6, 0x10,
0x09, 0x00, 0x22, 0xeb, 0xdc, 0x02, 0x7c, 0xaf, 0x10, 0x0a, 0x35, 0xf9, 0x29, 0x77, 0x1c, 0x0f,
0x45, 0x26, 0xbf, 0xac, 0x0e, 0xf4, 0x10, 0x0c, 0x1e, 0xcc, 0x04, 0x40, 0x02, 0x7a, 0x97, 0x0d,
0x09, 0xe4, 0x82, 0xc2, 0x32, 0x06, 0xe2, 0x48, 0x62, 0x03, 0x10, 0x0a, 0x2d, 0xcc, 0x04, 0x40,
0x03, 0xac, 0x0e, 0xf4, 0x25, 0x19, 0xbd, 0x1e, 0xf3, 0x01, 0x82, 0x88, 0x45, 0x49, 0x0e, 0x42,
0x05, 0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_1[128] = {
0x0000, 0x0003, 0x000e, 0x003a, 0x0050, 0x0083, 0x00ad, 0x00b5,
0x00ed, 0x00f1, 0x013d, 0x015b, 0x0180, 0x0186, 0x018b, 0x01d8,
0x01dc, 0x01f0, 0x01fe, 0x0212, 0x022a, 0x0231, 0x024d, 0x0272,
0x0277, 0x027d, 0x0284, 0x02aa, 0x02d3, 0x02ed, 0x0315, 0x034d,
0x036c, 0x0375, 0x037d, 0x0385, 0x038e, 0x0396, 0x03db, 0x040e,
0x0415, 0x041d, 0x0424, 0x042b, 0x0432, 0x043a, 0x0441, 0x0447,
0x044d, 0x0483, 0x049b, 0x04a4, 0x04ac, 0x04b3, 0x04bb, 0x04c2,
0x04ed, 0x0547, 0x054e, 0x0554, 0x0559, 0x055e, 0x0568, 0x057a,
0x05b3, 0x05b9, 0x05c0, 0x05ca, 0x05d1, 0x05d8, 0x05e9, 0x0631,
0x063a, 0x063f, 0x0645, 0x064e, 0x0654, 0x065c, 0x0666, 0x066f,
0x0675, 0x06ae, 0x06b3, 0x06b9, 0x06c0, 0x06c9, 0x06d0, 0x06d7,
0x06e0, 0x071b, 0x0721, 0x0728, 0x0732, 0x0739, 0x0743, 0x0751,
0x075b, 0x075b, 0x075b, 0x075b, 0x075b, 0x075b, 0x075c, 0x0763,
0x075b, 0x075b, 0x075b, 0x075b, 0x076a, 0x0770, 0x075b, 0x075b,
0x075b, 0x0779, 0x075b, 0x075b, 0x075b, 0x075b, 0x075b, 0x075b,
0x075b, 0x075b, 0x075b, 0x075b, 0x075b, 0x075b, 0x0787, 0x079b,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_2[11] = {
0x05, 0x33, 0xe6, 0x33, 0x1a, 0xe5, 0x10, 0x03, 0x59, 0xb5, 0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_2[2] = {
0x0000, 0x0007,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_3[43] = {
0x09, 0x52, 0xfe, 0x0f, 0x9b, 0x06, 0x31, 0x0f, 0x04, 0x3c, 0x31, 0x48, 0x05, 0x31, 0x05, 0x0f,
0x02, 0x31, 0x0a, 0xa2, 0x30, 0x55, 0xfe, 0x1f, 0x10, 0x04, 0x4c, 0xf7, 0x3b, 0x0f, 0x6e, 0x31,
0x8e, 0x07, 0x3b, 0x63, 0xa2, 0x30, 0x03, 0x8e, 0x56, 0xf7, 0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_3[2] = {
0x0000, 0x0019,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_4[183] = {
0x11, 0x52, 0x9b, 0x7a, 0x0e, 0x2a, 0x20, 0x37, 0x05, 0x86, 0x02, 0x4b, 0x1d, 0x03, 0x60, 0x33,
0x0f, 0x25, 0x09, 0x07, 0x18, 0x0f, 0x25, 0x2e, 0x28, 0x27, 0x3a, 0x0f, 0x20, 0x92, 0x3a, 0x0f,
0x25, 0x2e, 0x28, 0x27, 0x09, 0x07, 0x18, 0x0f, 0x25, 0x03, 0x60, 0x33, 0x0f, 0x45, 0x06, 0x86,
0x02, 0x4b, 0x27, 0x9b, 0x7a, 0x0e, 0x2a, 0x20, 0x10, 0x0f, 0x5c, 0x49, 0x0f, 0x0c, 0x04, 0x00,
0x44, 0x0f, 0x64, 0x89, 0x8b, 0x55, 0xa8, 0x06, 0x0e, 0x05, 0x8f, 0x50, 0x1b, 0x0a, 0x06, 0x38,
0x57, 0x07, 0x38, 0xa5, 0x1b, 0xf5, 0x8e, 0x02, 0x38, 0x6b, 0x1b, 0x94, 0x0f, 0x20, 0x1b, 0xf5,
0x02, 0x43, 0x25, 0x0a, 0x06, 0x38, 0x57, 0x06, 0x25, 0x03, 0xa7, 0x7e, 0x0e, 0x58, 0x87, 0x01,
0xa6, 0x89, 0x49, 0x0f, 0x50, 0x00, 0x03, 0xac, 0x0e, 0x0b, 0x04, 0x10, 0x00, 0x0a, 0x52, 0x51,
0x0e, 0xbb, 0x01, 0x1c, 0x09, 0x0a, 0x1c, 0xae, 0x7a, 0x0f, 0x42, 0x06, 0x31, 0xc8, 0x09, 0x10,
0x09, 0x59, 0x01, 0x08, 0x23, 0xb1, 0xc9, 0x3e, 0xc8, 0x09, 0x10, 0x0a, 0x32, 0xe3, 0x1a, 0x51,
0x0e, 0xbb, 0x01, 0x1c, 0x09, 0x0a, 0x1c, 0xae, 0x7a, 0x0f, 0x42, 0x06, 0x10, 0x09, 0x22, 0xeb,
0xdc, 0x01, 0x08, 0x23, 0xb1, 0xc9, 0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_4[16] = {
0x0000, 0x0039, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c,
0x007c, 0x007c, 0x007c, 0x007c, 0x007d, 0x0090, 0x009b, 0x00ad,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_5[24] = {
0x09, 0x32, 0xcd, 0xd7, 0x1d, 0x9b, 0x60, 0xdd, 0x10, 0x00, 0x0c, 0x32, 0xe3, 0x40, 0x20, 0xbc,
0x10, 0x09, 0x22, 0xeb, 0xdc, 0xd1, 0xf6, 0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_5[7] = {
0x0000, 0x0009, 0x0009, 0x0009, 0x0009, 0x000a, 0x0011,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_6[40] = {
0x0a, 0xf9, 0xa1, 0x97, 0x3e, 0x63, 0x0f, 0x06, 0x30, 0x0a, 0x83, 0x76, 0x3e, 0x2c, 0x0c, 0x31,
0x06, 0x2a, 0x48, 0x31, 0x8a, 0x1c, 0x4f, 0x1c, 0x76, 0x30, 0x6b, 0x1c, 0xa6, 0x1c, 0x5a, 0x1c,
0x46, 0x30, 0xa8, 0x01, 0x3b, 0x97, 0x50, 0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_6[1] = {
0x0000,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_7[12] = {
0x08, 0x00, 0x22, 0x57, 0xcb, 0x5d, 0x10, 0x08, 0x22, 0xeb, 0xdc, 0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_7[2] = {
0x0000, 0x0007,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_8[51] = {
0x08, 0x52, 0xcc, 0x04, 0x10, 0x08, 0x2d, 0xe6, 0x10, 0x08, 0x79, 0x9e, 0x50, 0x31, 0x6a, 0xe7,
0x6a, 0xe7, 0x9e, 0x50, 0x10, 0x08, 0x1e, 0x78, 0x4a, 0x1c, 0x65, 0x1c, 0x7c, 0x0e, 0x10, 0x08,
0x4c, 0xf0, 0x10, 0x08, 0x00, 0x22, 0x84, 0x0c, 0x0a, 0x45, 0x9b, 0x60, 0x04, 0x3d, 0x45, 0x6d,
0x00, 0xa0, 0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_8[6] = {
0x0000, 0x0005, 0x0009, 0x0015, 0x001f, 0x0023,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_9[63] = {
0x0c, 0x2d, 0x71, 0xaa, 0x25, 0x58, 0x99, 0x9b, 0x06, 0x64, 0x2b, 0x9b, 0x2e, 0x9b, 0x68, 0x2b,
0x09, 0x06, 0x1e, 0x5e, 0x2b, 0x68, 0x32, 0x9b, 0x0d, 0x37, 0x72, 0x28, 0x89, 0xd5, 0x19, 0x2b,
0x0c, 0x06, 0x1e, 0x51, 0x2b, 0x08, 0x76, 0x35, 0x2c, 0x62, 0x37, 0x2c, 0x0e, 0x0b, 0x01, 0x2c,
0x4d, 0x02, 0x1d, 0x57, 0x50, 0x00, 0x9e, 0x0f, 0x06, 0x2b, 0x74, 0x70, 0x77, 0x02, 0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_9[1] = {
0x0000,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_10[49] = {
0x09, 0x38, 0x75, 0x44, 0x0e, 0x20, 0x0d, 0x1d, 0x0c, 0x06, 0x98, 0x02, 0x00, 0x05, 0x43, 0x45,
0xac, 0x35, 0x9a, 0x3e, 0x0e, 0x0a, 0x35, 0xa4, 0x25, 0x63, 0x0f, 0x06, 0x35, 0x0c, 0x05, 0x45,
0x98, 0x02, 0x35, 0x3d, 0x25, 0x0b, 0x0d, 0x38, 0x0f, 0x02, 0x45, 0x0e, 0x0a, 0x38, 0x8d, 0x09,
0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_10[1] = {
0x0000,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_11[235] = {
0x08, 0xd0, 0x75, 0x97, 0x20, 0x10, 0x10, 0xd0, 0x75, 0x20, 0x2f, 0x10, 0x00, 0x05, 0x4c, 0x44,
0x1c, 0x09, 0x83, 0x7d, 0x0f, 0x10, 0x05, 0x52, 0x97, 0x30, 0x67, 0x0c, 0x30, 0x07, 0x60, 0x30,
0x0c, 0x06, 0x10, 0x05, 0x5c, 0x75, 0x0f, 0xfa, 0x33, 0x5e, 0x1c, 0x6f, 0x10, 0x08, 0x4c, 0x44,
0x00, 0x44, 0x3b, 0x09, 0x53, 0x09, 0x06, 0x3b, 0x3d, 0xd5, 0xd6, 0x10, 0x08, 0xd0, 0x4b, 0x0f,
0x25, 0x2c, 0xed, 0x3b, 0x6f, 0x6f, 0x10, 0x08, 0x5c, 0x75, 0x73, 0x0f, 0x25, 0x2c, 0xed, 0x3b,
0x6f, 0x6f, 0x10, 0x08, 0x2d, 0x21, 0x89, 0x1f, 0xb5, 0x9d, 0x10, 0x08, 0x2d, 0x21, 0x89, 0x1f,
0x3f, 0x27, 0x1f, 0x21, 0x10, 0x09, 0x18, 0x75, 0xe8, 0x5b, 0x3e, 0x0b, 0x2a, 0x0b, 0x3b, 0x0e,
0x97, 0x48, 0x3b, 0x0b, 0x2a, 0x0b, 0x3b, 0xe8, 0x5b, 0x10, 0x10, 0x5c, 0x75, 0x73, 0x4b, 0x4b,
0x96, 0x4b, 0x4b, 0x4b, 0x10, 0x15, 0x4c, 0xe8, 0xcf, 0x51, 0x00, 0xe8, 0x5b, 0xe8, 0x5b, 0x33,
0x2c, 0x65, 0x00, 0xa9, 0x01, 0x84, 0xa9, 0x01, 0x84, 0x1e, 0xa4, 0x35, 0x3d, 0x01, 0x0e, 0x00,
0x3d, 0x01, 0x0e, 0x1e, 0x03, 0x76, 0x35, 0x3d, 0x01, 0x0e, 0x00, 0x3d, 0x01, 0x0e, 0x1e, 0x0c,
0x05, 0x38, 0xa9, 0x01, 0x84, 0xa9, 0x01, 0x84, 0x18, 0x61, 0x33, 0xe8, 0x5b, 0xe8, 0x5b, 0x10,
0x06, 0x1e, 0x75, 0x09, 0x30, 0xf2, 0x0a, 0x31, 0x03, 0x9c, 0x31, 0x8c, 0x30, 0x9e, 0x07, 0x1c,
0xf2, 0x0a, 0x56, 0x09, 0x10, 0x06, 0x18, 0x75, 0x09, 0x56, 0xab, 0x02, 0x1c, 0x07, 0x6a, 0x1c,
0x08, 0x0e, 0x30, 0x07, 0x6a, 0x31, 0xab, 0x02, 0x30, 0x09, 0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_11[40] = {
0x0000, 0x0006, 0x000c, 0x000c, 0x000c, 0x000d, 0x0016, 0x0023,
0x000c, 0x002d, 0x003c, 0x0047, 0x000c, 0x0053, 0x005b, 0x0065,
0x000c, 0x000c, 0x000c, 0x007a, 0x000c, 0x000c, 0x000c, 0x000c,
0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0085, 0x000c, 0x000c,
0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x00c0, 0x00d5,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_12[46] = {
0x0a, 0x69, 0x51, 0x48, 0x0b, 0x04, 0x45, 0x0a, 0x4f, 0x01, 0x02, 0x8d, 0x25, 0x51, 0x18, 0x07,
0x25, 0x46, 0x31, 0x0b, 0x20, 0x0c, 0x3e, 0x4e, 0x32, 0x0b, 0x77, 0x0b, 0x3b, 0x46, 0x1c, 0x51,
0x18, 0x07, 0x45, 0x0a, 0x4f, 0x01, 0x91, 0x0f, 0x3e, 0x9a, 0x48, 0x0b, 0x04, 0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_12[1] = {
0x0000,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_13[26] = {
0x10, 0x52, 0x20, 0x08, 0x00, 0x07, 0x85, 0x9d, 0x0f, 0x0b, 0x01, 0x0a, 0x85, 0x9d, 0x0f, 0x49,
0x05, 0x85, 0x9d, 0x85, 0x0c, 0x28, 0x9d, 0x73, 0x28, 0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_13[1] = {
0x0000,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_14[360] = {
0x08, 0x40, 0xf9, 0xee, 0x0f, 0x64, 0x3b, 0x61, 0x55, 0x6f, 0x30, 0x61, 0x1c, 0xa1, 0x3e, 0x07,
0x0d, 0x0e, 0x08, 0x98, 0x45, 0x07, 0x6a, 0x01, 0xa1, 0x0d, 0x45, 0x50, 0x35, 0x67, 0x0a, 0x45,
0x3d, 0x63, 0x0f, 0x04, 0x45, 0x0a, 0x06, 0x8f, 0x0d, 0x0a, 0x27, 0x2c, 0x0a, 0x0e, 0x8c, 0x10,
0x00, 0x0b, 0x69, 0x8d, 0x09, 0x45, 0x2c, 0x0e, 0x06, 0x3d, 0x3e, 0x06, 0x0b, 0x00, 0x0c, 0x06,
0x3b, 0x0c, 0x05, 0x00, 0x49, 0x3e, 0x9e, 0x38, 0x6a, 0x45, 0x0a, 0x07, 0x38, 0x5a, 0x2b, 0x2c,
0x0e, 0x01, 0x2c, 0x3d, 0x1d, 0x5a, 0x18, 0x09, 0x06, 0x27, 0x6a, 0x18, 0xf2, 0x1d, 0xa6, 0x1e,
0x4f, 0x2b, 0x0a, 0x05, 0x1e, 0x90, 0x89, 0x67, 0x2a, 0x20, 0x43, 0x10, 0x0c, 0x4c, 0xef, 0x35,
0x72, 0x41, 0x35, 0x72, 0x41, 0x35, 0x72, 0x0f, 0x1b, 0x72, 0x0f, 0x10, 0x0b, 0xd0, 0x0c, 0x97,
0x20, 0x0c, 0x1d, 0xa0, 0x45, 0x63, 0x0e, 0x05, 0x30, 0x63, 0x0e, 0x05, 0x30, 0x63, 0x0e, 0x05,
0x30, 0x63, 0x0e, 0x05, 0x30, 0x63, 0x0e, 0x05, 0x1c, 0x57, 0x02, 0x3b, 0x9b, 0x9c, 0x3e, 0x9b,
0x9c, 0x3e, 0x9b, 0x9c, 0x3b, 0x03, 0x86, 0x31, 0x03, 0x86, 0x30, 0x86, 0x1c, 0x2f, 0x10, 0x0d,
0x52, 0x75, 0x2f, 0x10, 0x03, 0x69, 0x84, 0x31, 0x8b, 0x01, 0x30, 0x0c, 0x06, 0x30, 0x61, 0x31,
0x9b, 0x60, 0x30, 0x0c, 0x06, 0x30, 0x06, 0x0b, 0x31, 0x9b, 0x60, 0x30, 0x6d, 0x30, 0x51, 0x3e,
0x2c, 0x65, 0x30, 0xa9, 0x10, 0x05, 0x79, 0x75, 0x4e, 0x10, 0x0a, 0x33, 0x34, 0x4d, 0x30, 0x6b,
0x1c, 0x07, 0x07, 0x1c, 0x0c, 0x01, 0x30, 0x03, 0x0a, 0x45, 0x03, 0x02, 0x38, 0x09, 0x04, 0x25,
0x7a, 0x0a, 0x00, 0x7b, 0x0c, 0x3e, 0x06, 0x3d, 0x05, 0x07, 0x27, 0x2c, 0x0e, 0x53, 0x5b, 0x3e,
0x09, 0x0c, 0x02, 0x0a, 0x31, 0x74, 0x6e, 0x30, 0x0c, 0x0d, 0x1c, 0x07, 0x07, 0x10, 0x0d, 0x18,
0x75, 0xe8, 0x0a, 0x01, 0xf2, 0x0e, 0x0b, 0x01, 0x1d, 0x0a, 0x09, 0x7e, 0x09, 0x0c, 0x07, 0xfb,
0x3d, 0x00, 0x09, 0x0c, 0x00, 0x7b, 0x0e, 0x1d, 0x3d, 0x00, 0x0d, 0x09, 0x35, 0x19, 0x1d, 0xa4,
0x01, 0x09, 0x0c, 0x09, 0x99, 0x0a, 0x0a, 0x1b, 0x2c, 0x0a, 0x0e, 0x0b, 0x01, 0x00, 0x7c, 0x5b,
0x10, 0x08, 0x69, 0x07, 0x0e, 0x0b, 0x3b, 0x9b, 0x09, 0x1c, 0x07, 0x05, 0x1c, 0x54, 0x1c, 0x0c,
0x02, 0x1c, 0x7d, 0x43, 0x1c, 0x4e, 0x33, 0x2c, 0x0e, 0x1c, 0x6b, 0x30, 0x9b, 0x0b, 0x30, 0x63,
0x08, 0x1c, 0x08, 0x03, 0x31, 0x0b, 0x86, 0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_14[42] = {
0x0000, 0x0030, 0x0030, 0x0030, 0x0031, 0x0030, 0x0030, 0x0030,
0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x006c, 0x0030, 0x007c,
0x00af, 0x0030, 0x0030, 0x00b4, 0x0030, 0x0030, 0x0030, 0x00d5,
0x00da, 0x0030, 0x0030, 0x0030, 0x010e, 0x0030, 0x0030, 0x0030,
0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
0x0030, 0x0141,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_15[23] = {
0x0d, 0x18, 0x75, 0xdf, 0xfc, 0x01, 0x2b, 0x63, 0xac, 0x0e, 0x0b, 0x99, 0x01, 0x58, 0x1d, 0x0d,
0x55, 0x02, 0x06, 0xac, 0x0e, 0xfc, 0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_15[1] = {
0x0000,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_16[106] = {
0x0d, 0x1e, 0x5c, 0x5a, 0x30, 0x07, 0x65, 0x27, 0x77, 0x77, 0x3e, 0x98, 0x03, 0x31, 0x74, 0x06,
0x3e, 0x77, 0x77, 0x27, 0x03, 0x86, 0x30, 0x0a, 0x07, 0x10, 0x00, 0x0d, 0x32, 0x5c, 0x7e, 0x7a,
0x25, 0x9b, 0x07, 0xac, 0x6d, 0x03, 0x2b, 0x63, 0x7a, 0x0d, 0x09, 0x87, 0x45, 0x0f, 0x64, 0x31,
0x63, 0x7a, 0x0d, 0x09, 0x87, 0x3b, 0x9b, 0x07, 0xac, 0x6d, 0x03, 0x31, 0x7e, 0x7a, 0x18, 0x95,
0x2f, 0x10, 0x0d, 0x5c, 0x0d, 0x09, 0x55, 0x31, 0x03, 0x07, 0xac, 0x6d, 0x02, 0x31, 0x82, 0x7a,
0x0d, 0x09, 0x04, 0x30, 0x58, 0x0f, 0x45, 0x82, 0x7a, 0x0d, 0x09, 0x05, 0x1d, 0x03, 0x07, 0xac,
0x6d, 0x02, 0x45, 0x0d, 0x09, 0x55, 0x00, 0x1a, 0x2f, 0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_16[6] = {
0x0000, 0x001a, 0x001a, 0x001a, 0x001b, 0x0042,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_17[72] = {
0x08, 0x22, 0x63, 0x04, 0x1c, 0x0b, 0x0b, 0x30, 0x26, 0x4f, 0x31, 0x6e, 0x90, 0x3e, 0x9b, 0x0b,
0x35, 0x5b, 0x45, 0x09, 0x04, 0x35, 0x05, 0x09, 0x1d, 0x2c, 0x0c, 0x33, 0x0c, 0x01, 0x25, 0x8a,
0x33, 0x05, 0x08, 0x25, 0x76, 0x33, 0x6b, 0x25, 0x5f, 0x33, 0x4a, 0x25, 0x6b, 0x33, 0x76, 0x45,
0x09, 0x06, 0x35, 0x5e, 0x3e, 0xf2, 0x35, 0x0c, 0x02, 0x3b, 0x0a, 0x05, 0x05, 0x0a, 0x31, 0x44,
0x6f, 0x31, 0x0b, 0x0b, 0x30, 0x63, 0x04, 0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_17[1] = {
0x0000,
};
static const uint8_t mf_rlefont_phpRVS9jE_glyph_data_18[47] = {
0x0a, 0x52, 0x44, 0x97, 0x4b, 0x27, 0x0c, 0x05, 0x35, 0x4b, 0x9d, 0x31, 0x0f, 0x20, 0x92, 0xc6,
0x72, 0xc6, 0x72, 0xc6, 0x72, 0xc6, 0x72, 0x10, 0x0a, 0x52, 0x58, 0x77, 0x45, 0x6a, 0x35, 0x4b,
0x9d, 0x72, 0x1e, 0x0f, 0x2a, 0x72, 0xc6, 0x72, 0xc6, 0x72, 0xc6, 0x72, 0xc6, 0x72, 0x10,
};
static const uint16_t mf_rlefont_phpRVS9jE_glyph_offsets_18[2] = {
0x0000, 0x0018,
};
static const struct mf_rlefont_char_range_s mf_rlefont_phpRVS9jE_char_ranges[] = {
{32, 95, mf_rlefont_phpRVS9jE_glyph_offsets_0, mf_rlefont_phpRVS9jE_glyph_data_0},
{160, 128, mf_rlefont_phpRVS9jE_glyph_offsets_1, mf_rlefont_phpRVS9jE_glyph_data_1},
{304, 2, mf_rlefont_phpRVS9jE_glyph_offsets_2, mf_rlefont_phpRVS9jE_glyph_data_2},
{321, 2, mf_rlefont_phpRVS9jE_glyph_offsets_3, mf_rlefont_phpRVS9jE_glyph_data_3},
{338, 16, mf_rlefont_phpRVS9jE_glyph_offsets_4, mf_rlefont_phpRVS9jE_glyph_data_4},
{376, 7, mf_rlefont_phpRVS9jE_glyph_offsets_5, mf_rlefont_phpRVS9jE_glyph_data_5},
{402, 1, mf_rlefont_phpRVS9jE_glyph_offsets_6, mf_rlefont_phpRVS9jE_glyph_data_6},
{710, 2, mf_rlefont_phpRVS9jE_glyph_offsets_7, mf_rlefont_phpRVS9jE_glyph_data_7},
{728, 6, mf_rlefont_phpRVS9jE_glyph_offsets_8, mf_rlefont_phpRVS9jE_glyph_data_8},
{937, 1, mf_rlefont_phpRVS9jE_glyph_offsets_9, mf_rlefont_phpRVS9jE_glyph_data_9},
{960, 1, mf_rlefont_phpRVS9jE_glyph_offsets_10, mf_rlefont_phpRVS9jE_glyph_data_10},
{8211, 40, mf_rlefont_phpRVS9jE_glyph_offsets_11, mf_rlefont_phpRVS9jE_glyph_data_11},
{8364, 1, mf_rlefont_phpRVS9jE_glyph_offsets_12, mf_rlefont_phpRVS9jE_glyph_data_12},
{8482, 1, mf_rlefont_phpRVS9jE_glyph_offsets_13, mf_rlefont_phpRVS9jE_glyph_data_13},
{8706, 42, mf_rlefont_phpRVS9jE_glyph_offsets_14, mf_rlefont_phpRVS9jE_glyph_data_14},
{8776, 1, mf_rlefont_phpRVS9jE_glyph_offsets_15, mf_rlefont_phpRVS9jE_glyph_data_15},
{8800, 6, mf_rlefont_phpRVS9jE_glyph_offsets_16, mf_rlefont_phpRVS9jE_glyph_data_16},
{9674, 1, mf_rlefont_phpRVS9jE_glyph_offsets_17, mf_rlefont_phpRVS9jE_glyph_data_17},
{64257, 2, mf_rlefont_phpRVS9jE_glyph_offsets_18, mf_rlefont_phpRVS9jE_glyph_data_18},
};
const struct mf_rlefont_s mf_rlefont_phpRVS9jE = {
{
"Bitstream Vera Sans Roman 16",
"phpRVS9jE",
23, /* width */
19, /* height */
3, /* min x advance */
21, /* max x advance */
3, /* baseline x */
15, /* baseline y */
19, /* line height */
0, /* flags */
63, /* fallback character */
&mf_rlefont_character_width,
&mf_rlefont_render_character,
},
4, /* version */
mf_rlefont_phpRVS9jE_dictionary_data,
mf_rlefont_phpRVS9jE_dictionary_offsets,
149, /* rle dict count */
232, /* total dict count */
19, /* char range count */
mf_rlefont_phpRVS9jE_char_ranges,
};
#ifdef MF_INCLUDED_FONTS
/* List entry for searching fonts by name. */
static const struct mf_font_list_s mf_rlefont_phpRVS9jE_listentry = {
MF_INCLUDED_FONTS,
(struct mf_font_s*)&mf_rlefont_phpRVS9jE
};
#undef MF_INCLUDED_FONTS
#define MF_INCLUDED_FONTS (&mf_rlefont_phpRVS9jE_listentry)
#endif
/* End of automatically generated font definition for phpRVS9jE. */

10
gfx.h
View File

@ -145,6 +145,13 @@
#ifndef GFX_USE_GFILE #ifndef GFX_USE_GFILE
#define GFX_USE_GFILE FALSE #define GFX_USE_GFILE FALSE
#endif #endif
/**
* @brief GFX Translation Support API
* @details Defaults to FALSE
*/
#ifndef GFX_USE_GTRANS
#define GFX_USE_GTRANS FALSE
#endif
/** @} */ /** @} */
/** /**
@ -155,6 +162,7 @@
#include "src/gdriver/gdriver_options.h" #include "src/gdriver/gdriver_options.h"
#include "src/gfile/gfile_options.h" #include "src/gfile/gfile_options.h"
#include "src/gmisc/gmisc_options.h" #include "src/gmisc/gmisc_options.h"
#include "src/gtrans/gtrans_options.h"
#include "src/gqueue/gqueue_options.h" #include "src/gqueue/gqueue_options.h"
#include "src/gevent/gevent_options.h" #include "src/gevent/gevent_options.h"
#include "src/gtimer/gtimer_options.h" #include "src/gtimer/gtimer_options.h"
@ -181,6 +189,7 @@
#include "src/gtimer/gtimer_rules.h" #include "src/gtimer/gtimer_rules.h"
#include "src/gqueue/gqueue_rules.h" #include "src/gqueue/gqueue_rules.h"
#include "src/gmisc/gmisc_rules.h" #include "src/gmisc/gmisc_rules.h"
#include "src/gtrans/gtrans_rules.h"
#include "src/gfile/gfile_rules.h" #include "src/gfile/gfile_rules.h"
#include "src/gdriver/gdriver_rules.h" #include "src/gdriver/gdriver_rules.h"
#include "src/gos/gos_rules.h" #include "src/gos/gos_rules.h"
@ -192,6 +201,7 @@
//#include "src/gdriver/gdriver.h" // This module is only included by source that needs it. //#include "src/gdriver/gdriver.h" // This module is only included by source that needs it.
#include "src/gfile/gfile.h" #include "src/gfile/gfile.h"
#include "src/gmisc/gmisc.h" #include "src/gmisc/gmisc.h"
#include "src/gtrans/gtrans.h"
#include "src/gqueue/gqueue.h" #include "src/gqueue/gqueue.h"
#include "src/gevent/gevent.h" #include "src/gevent/gevent.h"
#include "src/gtimer/gtimer.h" #include "src/gtimer/gtimer.h"

1
gfx.mk
View File

@ -21,6 +21,7 @@ else
include $(GFXLIB)/src/gaudio/gaudio.mk include $(GFXLIB)/src/gaudio/gaudio.mk
include $(GFXLIB)/src/gmisc/gmisc.mk include $(GFXLIB)/src/gmisc/gmisc.mk
include $(GFXLIB)/src/gfile/gfile.mk include $(GFXLIB)/src/gfile/gfile.mk
include $(GFXLIB)/src/gtrans/gtrans.mk
endif endif
# Include the boards and drivers # Include the boards and drivers

View File

@ -223,6 +223,12 @@
// #define GWIN_TABSET_TABHEIGHT 18 // #define GWIN_TABSET_TABHEIGHT 18
///////////////////////////////////////////////////////////////////////////
// GTRANS //
///////////////////////////////////////////////////////////////////////////
//#define GFX_USE_GTRANS FALSE
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// GEVENT // // GEVENT //
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////

View File

@ -73,6 +73,10 @@ extern void _gosDeinit(void);
extern void _gmiscInit(void); extern void _gmiscInit(void);
extern void _gmiscDeinit(void); extern void _gmiscDeinit(void);
#endif #endif
#if GFX_USE_GTRANS
extern void _gtransInit(void);
extern void _gtransDeinit(void);
#endif
void gfxInit(void) void gfxInit(void)
{ {
@ -96,6 +100,9 @@ void gfxInit(void)
#if GFX_USE_GMISC #if GFX_USE_GMISC
_gmiscInit(); _gmiscInit();
#endif #endif
#if GFX_USE_GTRANS
_gtransInit();
#endif
#if GFX_USE_GEVENT #if GFX_USE_GEVENT
_geventInit(); _geventInit();
#endif #endif
@ -159,6 +166,9 @@ void gfxDeinit(void)
#if GFX_USE_GEVENT #if GFX_USE_GEVENT
_geventDeinit(); _geventDeinit();
#endif #endif
#if GFX_USE_GTRANS
_gtransDeinit();
#endif
#if GFX_USE_GMISC #if GFX_USE_GMISC
_gmiscDeinit(); _gmiscDeinit();
#endif #endif

View File

@ -18,3 +18,4 @@
#include "gaudio/gaudio_mk.c" #include "gaudio/gaudio_mk.c"
#include "gmisc/gmisc_mk.c" #include "gmisc/gmisc_mk.c"
#include "gfile/gfile_mk.c" #include "gfile/gfile_mk.c"
#include "gtrans/gtrans_mk.c"

View File

@ -0,0 +1,77 @@
/*
* This file is subject to the terms of the GFX License. If a copy of
* the license was not distributed with this file, you can obtain one at:
*
* http://ugfx.org/license.html
*/
#include <string.h>
#include "../../gfx.h"
#if GFX_USE_GTRANS
static const transTable* _languageBase;
static const transTable* _languageCurrent;
void _gtransInit(void)
{
_languageBase = 0;
_languageCurrent = 0;
}
void _gtransDeinit(void)
{
}
const char* gtransString(const char* string)
{
// Find the index of the specified string in the base language table
size_t i = 0;
while (1) {
// Prevent overflow
if (i >= _languageBase->numEntries) {
return string;
}
// Check if we found the string
if (strcmp(string, _languageBase->strings[i]) == 0) {
break;
}
// Otherwise keep going
i++;
}
// Make sure that the index exists in the current language table
if (i >= _languageCurrent->numEntries) {
return string;
}
// Return the translated string
return _languageCurrent->strings[i];
}
const char* gtransIndex(unsigned index)
{
if (!_languageCurrent) {
return 0;
}
if (index >= _languageCurrent->numEntries) {
return 0;
}
return _languageCurrent->strings[index];
}
void gtransSetBaseLanguage(const transTable* const translation)
{
_languageBase = translation;
}
void gtransSetLanguage(const transTable* const translation)
{
_languageCurrent = translation;
}
#endif /* GFX_USE_GTRANS */

View File

@ -0,0 +1,94 @@
/*
* 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 src/gtrans/gtrans.h
*
* @addtogroup GTRANS
*
* @brief Module that allows changing the language of an application dynamically during run-time.
*
* @{
*/
#ifndef _TRANS_H
#define _TRANS_H
#include "../../gfx.h"
#if GFX_USE_GTRANS || defined(__DOXYGEN__)
/**
* @struct transTable
* @brief A table containing translated strings.
*/
typedef struct transTable {
unsigned numEntries; /**< The number of strings that this table contains */
const char** strings; /**< The translated strings */
} transTable;
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief A wrapper macro to make writing and reading translatable applications easier.
*/
#define gt(str) gtransString(str)
/**
* @brief Get the string of the current language specified by the string of the base language.
*
* @details This function will return the string of the current language that corresponds to
* the specified string in the base language.
* @details This function uses strcmp() internally to compare strings.
*
* @param[in] string The string to translate.
*
* @return The corresponding string of the current language or the string passed as a parameter if it doesn't exist.
*/
const char* gtransString(const char* string);
/**
* @brief Get the string at the specified index position of the current language.
*
* @details Getting translation strings is a lot faster using the index as an accessor rather
* than the string in the base language.
*
* @param[in] index The index of the string in the current language translation table.
*
* @return The string at the given index of the current language or 0 if it doesn't exist.
*/
const char* gtransIndex(unsigned index);
/**
* @brief Set the base language.
*
* @details A translatable application needs to have a base language. All translations will
* be relative to this base language.
*
* @param[in] translation The translation table
*/
void gtransSetBaseLanguage(const transTable* const translation);
/**
* @brief Set the current language.
*
* @details All translations will refer to the current language set by calling this function.
*
* @param[in] translation The translation table
*/
void gtransSetLanguage(const transTable* const translation);
#ifdef __cplusplus
}
#endif
#endif /* GFX_USE_GTRANS */
#endif /* _TRANS_H */
/** @} */

View File

@ -0,0 +1,6 @@
# 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
GFXSRC += $(GFXLIB)/src/gtrans/gtrans.c

View File

@ -0,0 +1,8 @@
/*
* This file is subject to the terms of the GFX License. If a copy of
* the license was not distributed with this file, you can obtain one at:
*
* http://ugfx.org/license.html
*/
#include "gtrans.c"

View File

@ -0,0 +1,21 @@
/*
* 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 src/gtrans/gtrans_options.h
*
* @addtogroup GTRANS
* @{
*/
#ifndef _GTRANS_OPTIONS_H
#define _GTRANS_OPTIONS_H
#endif /* _GTRANS_OPTIONS_H */
/** @} */

View File

@ -0,0 +1,22 @@
/*
* 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 src/gtrans/gtrans_rules.h
*
* @addtogroup GTRANS
* @{
*/
#ifndef _GTRANS_RULES_H
#define _GTRANS_RULES_H
#if GFX_USE_GTRANS
#endif
#endif /* _GTRANS_RULES_H */
/** @} */