diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 72f5e0e1b5..8ea6574dc3 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -134,6 +134,7 @@ add_sdl_example_executable(renderer-color-mods SOURCES renderer/11-color-mods/co add_sdl_example_executable(renderer-viewport SOURCES renderer/14-viewport/viewport.c DATAFILES ${CMAKE_CURRENT_SOURCE_DIR}/../test/sample.bmp) add_sdl_example_executable(renderer-cliprect SOURCES renderer/15-cliprect/cliprect.c DATAFILES ${CMAKE_CURRENT_SOURCE_DIR}/../test/sample.bmp) add_sdl_example_executable(renderer-read-pixels SOURCES renderer/17-read-pixels/read-pixels.c DATAFILES ${CMAKE_CURRENT_SOURCE_DIR}/../test/sample.bmp) +add_sdl_example_executable(renderer-debug-text SOURCES renderer/18-debug-text/debug-text.c) add_sdl_example_executable(audio-simple-playback SOURCES audio/01-simple-playback/simple-playback.c) add_sdl_example_executable(audio-simple-playback-callback SOURCES audio/02-simple-playback-callback/simple-playback-callback.c) add_sdl_example_executable(audio-load-wav SOURCES audio/03-load-wav/load-wav.c DATAFILES ${CMAKE_CURRENT_SOURCE_DIR}/../test/sample.wav) diff --git a/examples/renderer/18-debug-text/README.txt b/examples/renderer/18-debug-text/README.txt new file mode 100644 index 0000000000..0f0c868df2 --- /dev/null +++ b/examples/renderer/18-debug-text/README.txt @@ -0,0 +1,4 @@ +This example creates an SDL window and renderer, and draws some text +using SDL_RenderDebugText(). This is not quality text rendering, but it can +be helpful for simple apps, debugging, or showing something in a pinch. + diff --git a/examples/renderer/18-debug-text/debug-text.c b/examples/renderer/18-debug-text/debug-text.c new file mode 100644 index 0000000000..280c0b345c --- /dev/null +++ b/examples/renderer/18-debug-text/debug-text.c @@ -0,0 +1,75 @@ +/* + * This example creates an SDL window and renderer, and then draws some text + * using SDL_RenderDebugText() every frame. + * + * This code is public domain. Feel free to use it for any purpose! + */ + +#define SDL_MAIN_USE_CALLBACKS 1 /* use the callbacks instead of main() */ +#include +#include + +/* We will use this renderer to draw into this window every frame. */ +static SDL_Window *window = NULL; +static SDL_Renderer *renderer = NULL; + +#define WINDOW_WIDTH 640 +#define WINDOW_HEIGHT 480 + +/* This function runs once at startup. */ +SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[]) +{ + SDL_SetAppMetadata("Example Renderer Debug Texture", "1.0", "com.example.renderer-debug-text"); + + if (!SDL_Init(SDL_INIT_VIDEO)) { + SDL_Log("Couldn't initialize SDL: %s", SDL_GetError()); + return SDL_APP_FAILURE; + } + + if (!SDL_CreateWindowAndRenderer("examples/renderer/debug-text", WINDOW_WIDTH, WINDOW_HEIGHT, 0, &window, &renderer)) { + SDL_Log("Couldn't create window/renderer: %s", SDL_GetError()); + return SDL_APP_FAILURE; + } + + return SDL_APP_CONTINUE; /* carry on with the program! */ +} + +/* This function runs when a new event (mouse input, keypresses, etc) occurs. */ +SDL_AppResult SDL_AppEvent(void *appstate, SDL_Event *event) +{ + if (event->type == SDL_EVENT_QUIT) { + return SDL_APP_SUCCESS; /* end the program, reporting success to the OS. */ + } + return SDL_APP_CONTINUE; /* carry on with the program! */ +} + +/* This function runs once per frame, and is the heart of the program. */ +SDL_AppResult SDL_AppIterate(void *appstate) +{ + /* as you can see from this, rendering draws over whatever was drawn before it. */ + SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); /* black, full alpha */ + SDL_RenderClear(renderer); /* start with a blank canvas. */ + + SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); /* white, full alpha */ + SDL_RenderDebugText(renderer, 272, 100, "Hello world!"); + SDL_RenderDebugText(renderer, 224, 150, "This is some debug text."); + + SDL_SetRenderDrawColor(renderer, 51, 102, 255, 255); /* light blue, full alpha */ + SDL_RenderDebugText(renderer, 184, 200, "You can do it in different colors."); + SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); /* white, full alpha */ + + SDL_SetRenderScale(renderer, 4.0f, 4.0f); + SDL_RenderDebugText(renderer, 14, 65, "It can be scaled."); + SDL_SetRenderScale(renderer, 1.0f, 1.0f); + SDL_RenderDebugText(renderer, 64, 350, "This only does ASCII chars. So this laughing emoji won't draw: 🤣"); + SDL_RenderPresent(renderer); /* put it all on the screen! */ + + return SDL_APP_CONTINUE; /* carry on with the program! */ +} + +/* This function runs once at shutdown. */ +void SDL_AppQuit(void *appstate, SDL_AppResult result) +{ + /* SDL will clean up the window/renderer for us. */ +} + diff --git a/include/SDL3/SDL_render.h b/include/SDL3/SDL_render.h index 820fa5a43b..9d0e0fa0cf 100644 --- a/include/SDL3/SDL_render.h +++ b/include/SDL3/SDL_render.h @@ -2464,6 +2464,57 @@ extern SDL_DECLSPEC bool SDLCALL SDL_SetRenderVSync(SDL_Renderer *renderer, int */ extern SDL_DECLSPEC bool SDLCALL SDL_GetRenderVSync(SDL_Renderer *renderer, int *vsync); +/** + * The size, in pixels, of a single SDL_RenderDebugText() character. + * + * The font is monospaced and square, so this applies to all characters. + * + * \since This macro is available since SDL 3.1.5. + * + * \sa SDL_RenderDebugText + */ +#define SDL_DEBUG_TEXT_FONT_CHARACTER_SIZE 8 + +/** + * Draw debug text to an SDL_Renderer. + * + * This function will render a string of text to an SDL_Renderer. Note that + * this is a convenience function for debugging, with severe limitations, and + * not intended to be used for production apps and games. + * + * Among these limitations: + * + * - It accepts UTF-8 strings, but will only renders ASCII characters. + * - It has a single, tiny size (8x8 pixels). One can use logical + * presentation or scaling to adjust it, but it will be blurry. + * - It uses a simple, hardcoded bitmap font. It does not allow different + * font selections and it does not support truetype, for proper scaling. + * - It does no word-wrapping and does not treat newline characters as a line + * break. If the text goes out of the window, it's gone. + * + * For serious text rendering, there are several good options, such as + * SDL_ttf, stb_truetype, or other external libraries. + * + * On first use, this will create an internal texture for rendering glyphs. + * This texture will live until the renderer is destroyed. + * + * The text is drawn in the color specified by SDL_SetRenderDrawColor(). + * + * \param renderer the renderer which should draw a line of text. + * \param x the x coordinate where the top-left corner of the text will draw. + * \param y the y coordinate where the top-left corner of the text will draw. + * \param str the string to render. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety You may only call this function from the main thread. + * + * \since This function is available since SDL 3.1.5. + * + * \sa SDL_DEBUG_TEXT_FONT_CHARACTER_SIZE + */ +extern SDL_DECLSPEC bool SDLCALL SDL_RenderDebugText(SDL_Renderer *renderer, float x, float y, const char *str); + /* Ends C function definitions when using C++ */ #ifdef __cplusplus } diff --git a/src/dynapi/SDL_dynapi.sym b/src/dynapi/SDL_dynapi.sym index efa9083bcf..ede5c799fb 100644 --- a/src/dynapi/SDL_dynapi.sym +++ b/src/dynapi/SDL_dynapi.sym @@ -1181,6 +1181,7 @@ SDL3_0.0.0 { SDL_CalculateGPUTextureFormatSize; SDL_SetErrorV; SDL_GetDefaultLogOutputFunction; + SDL_RenderDebugText; # extra symbols go here (don't modify this line) local: *; }; diff --git a/src/dynapi/SDL_dynapi_overrides.h b/src/dynapi/SDL_dynapi_overrides.h index f5a7bb86fe..682714458f 100644 --- a/src/dynapi/SDL_dynapi_overrides.h +++ b/src/dynapi/SDL_dynapi_overrides.h @@ -1206,3 +1206,4 @@ #define SDL_CalculateGPUTextureFormatSize SDL_CalculateGPUTextureFormatSize_REAL #define SDL_SetErrorV SDL_SetErrorV_REAL #define SDL_GetDefaultLogOutputFunction SDL_GetDefaultLogOutputFunction_REAL +#define SDL_RenderDebugText SDL_RenderDebugText_REAL diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h index f5c4e29f21..1dedeeb996 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -1212,3 +1212,4 @@ SDL_DYNAPI_PROC(void,SDL_DelayPrecise,(Uint64 a),(a),) SDL_DYNAPI_PROC(Uint32,SDL_CalculateGPUTextureFormatSize,(SDL_GPUTextureFormat a, Uint32 b, Uint32 c, Uint32 d),(a,b,c,d),return) SDL_DYNAPI_PROC(bool,SDL_SetErrorV,(SDL_PRINTF_FORMAT_STRING const char *a,va_list b),(a,b),return) SDL_DYNAPI_PROC(SDL_LogOutputFunction,SDL_GetDefaultLogOutputFunction,(void),(),return) +SDL_DYNAPI_PROC(bool,SDL_RenderDebugText,(SDL_Renderer *a,float b,float c,const char *d),(a,b,c,d),return) diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c index 992beaeb52..56d56113c5 100644 --- a/src/render/SDL_render.c +++ b/src/render/SDL_render.c @@ -23,6 +23,7 @@ // The SDL 2D rendering system #include "SDL_sysrender.h" +#include "SDL_render_debug_font.h" #include "software/SDL_render_sw_c.h" #include "../video/SDL_pixels_c.h" #include "../video/SDL_video_c.h" @@ -5097,6 +5098,9 @@ void SDL_DestroyRendererWithoutFreeing(SDL_Renderer *renderer) SDL_DiscardAllCommands(renderer); + SDL_DestroyTexture(renderer->debug_char_texture_atlas); + renderer->debug_char_texture_atlas = NULL; + // Free existing textures for this renderer while (renderer->textures) { SDL_Texture *tex = renderer->textures; @@ -5346,3 +5350,119 @@ bool SDL_GetRenderVSync(SDL_Renderer *renderer, int *vsync) } return true; } + + +#define SDL_DEBUG_FONT_GLYPHS_PER_ROW 14 + +static bool CreateDebugTextAtlas(SDL_Renderer *renderer) +{ + SDL_assert(renderer->debug_char_texture_atlas == NULL); // don't double-create it! + + const int charWidth = SDL_DEBUG_TEXT_FONT_CHARACTER_SIZE; + const int charHeight = SDL_DEBUG_TEXT_FONT_CHARACTER_SIZE; + + // actually make each glyph two pixels taller/wider, to prevent scaling artifacts. + const int rows = (SDL_DEBUG_FONT_NUM_GLYPHS / SDL_DEBUG_FONT_GLYPHS_PER_ROW) + 1; + SDL_Surface *atlas = SDL_CreateSurface((charWidth + 2) * SDL_DEBUG_FONT_GLYPHS_PER_ROW, rows * (charHeight + 2), SDL_PIXELFORMAT_RGBA8888); + if (!atlas) { + return false; + } + + const int pitch = atlas->pitch; + SDL_memset(atlas->pixels, '\0', atlas->h * atlas->pitch); + + int column = 0; + int row = 0; + for (int glyph = 0; glyph < SDL_DEBUG_FONT_NUM_GLYPHS; glyph++) { + // find top-left of this glyph in destination surface. The +2's account for glyph padding. + Uint8 *linepos = (((Uint8 *)atlas->pixels) + ((row * (charHeight + 2) + 1) * pitch)) + ((column * (charWidth + 2) + 1) * sizeof (Uint32)); + const Uint8 *charpos = SDL_RenderDebugTextFontData + (glyph * 8); + + // Draw the glyph to the surface... + for (int iy = 0; iy < charHeight; iy++) { + Uint32 *curpos = (Uint32 *)linepos; + for (int ix = 0; ix < charWidth; ix++) { + if ((*charpos) & (1 << ix)) { + *curpos = 0xffffffff; + } else { + *curpos = 0; + } + ++curpos; + } + linepos += pitch; + ++charpos; + } + + // move to next position (and if too far, start the next row). + column++; + if (column >= SDL_DEBUG_FONT_GLYPHS_PER_ROW) { + row++; + column = 0; + } + } + + SDL_assert((row < rows) || ((row == rows) && (column == 0))); // make sure we didn't overflow the surface. + + // Convert temp surface into texture + renderer->debug_char_texture_atlas = SDL_CreateTextureFromSurface(renderer, atlas); + SDL_DestroySurface(atlas); + + return (renderer->debug_char_texture_atlas != NULL); +} + +static bool DrawDebugCharacter(SDL_Renderer *renderer, float x, float y, Uint32 c) +{ + SDL_assert(renderer->debug_char_texture_atlas != NULL); // should have been created by now! + + const int charWidth = SDL_DEBUG_TEXT_FONT_CHARACTER_SIZE; + const int charHeight = SDL_DEBUG_TEXT_FONT_CHARACTER_SIZE; + + // Character index in cache + Uint32 ci = c; + if ((ci <= 32) || ((ci >= 127) && (ci <= 160))) { + return true; // these are just completely blank chars, don't bother doing anything. + } else if (ci >= SDL_DEBUG_FONT_NUM_GLYPHS) { + ci = SDL_DEBUG_FONT_NUM_GLYPHS - 1; // use our "not a valid/supported character" glyph. + } else if (ci < 127) { + ci -= 33; // adjust for the 33 blank glyphs at the start + } else { + ci -= 67; // adjust for the 33 blank glyphs at the start AND the 34 gap in the middle. + } + + const float src_x = (float) (((ci % SDL_DEBUG_FONT_GLYPHS_PER_ROW) * (charWidth + 2)) + 1); + const float src_y = (float) (((ci / SDL_DEBUG_FONT_GLYPHS_PER_ROW) * (charHeight + 2)) + 1); + + // Draw texture onto destination + const SDL_FRect srect = { src_x, src_y, (float) charWidth, (float) charHeight }; + const SDL_FRect drect = { x, y, (float) charWidth, (float) charHeight }; + return SDL_RenderTexture(renderer, renderer->debug_char_texture_atlas, &srect, &drect); +} + +bool SDL_RenderDebugText(SDL_Renderer *renderer, float x, float y, const char *s) +{ + CHECK_RENDERER_MAGIC(renderer, false); + + // Allocate a texture atlas for this renderer if needed. + if (!renderer->debug_char_texture_atlas) { + if (!CreateDebugTextAtlas(renderer)) { + return false; + } + } + + bool result = true; + + Uint8 r, g, b, a; + result &= SDL_GetRenderDrawColor(renderer, &r, &g, &b, &a); + result &= SDL_SetTextureColorMod(renderer->debug_char_texture_atlas, r, g, b); + result &= SDL_SetTextureAlphaMod(renderer->debug_char_texture_atlas, a); + + float curx = x; + Uint32 ch; + + while (result && ((ch = SDL_StepUTF8(&s, NULL)) != 0)) { + result &= DrawDebugCharacter(renderer, curx, y, ch); + curx += SDL_DEBUG_TEXT_FONT_CHARACTER_SIZE; + } + + return result; +} diff --git a/src/render/SDL_render_debug_font.h b/src/render/SDL_render_debug_font.h new file mode 100644 index 0000000000..7da057383b --- /dev/null +++ b/src/render/SDL_render_debug_font.h @@ -0,0 +1,2331 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2024 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_render_debug_font_h_ +#define SDL_render_debug_font_h_ + +/* ---- 8x8 font definition ---- */ + +/* +; Summary: font8_8.asm +; 8x8 monochrome bitmap fonts for rendering +; +; Author: +; Marcel Sondaar +; International Business Machines (public domain VGA fonts) +; +; License: +; Public Domain +; +*/ + +#define SDL_DEBUG_FONT_NUM_GLYPHS 190 + +static const Uint8 SDL_RenderDebugTextFontData[] = { + // there's a gap at the start. + + /* + * 33 0x21 '!' + */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x3c, /* 00111100 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 34 0x22 '"' + */ + 0x36, /* 01101100 */ + 0x36, /* 01101100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 35 0x23 '#' + */ + 0x36, /* 01101100 */ + 0x36, /* 01101100 */ + 0x7f, /* 11111110 */ + 0x36, /* 01101100 */ + 0x7f, /* 11111110 */ + 0x36, /* 01101100 */ + 0x36, /* 01101100 */ + 0x00, /* 00000000 */ + + /* + * 36 0x24 '$' + */ + 0x0c, /* 00110000 */ + 0x3e, /* 01111100 */ + 0x03, /* 11000000 */ + 0x1e, /* 01111000 */ + 0x30, /* 00001100 */ + 0x1f, /* 11111000 */ + 0x0c, /* 00110000 */ + 0x00, /* 00000000 */ + + /* + * 37 0x25 '%' + */ + 0x00, /* 00000000 */ + 0x63, /* 11000110 */ + 0x33, /* 11001100 */ + 0x18, /* 00011000 */ + 0x0c, /* 00110000 */ + 0x66, /* 01100110 */ + 0x63, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 38 0x26 '&' + */ + 0x1c, /* 00111000 */ + 0x36, /* 01101100 */ + 0x1c, /* 00111000 */ + 0x6e, /* 01110110 */ + 0x3b, /* 11011100 */ + 0x33, /* 11001100 */ + 0x6e, /* 01110110 */ + 0x00, /* 00000000 */ + + /* + * 39 0x27 ''' + */ + 0x06, /* 01100000 */ + 0x06, /* 01100000 */ + 0x03, /* 11000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 40 0x28 '(' + */ + 0x18, /* 00011000 */ + 0x0c, /* 00110000 */ + 0x06, /* 01100000 */ + 0x06, /* 01100000 */ + 0x06, /* 01100000 */ + 0x0c, /* 00110000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 41 0x29 ')' + */ + 0x06, /* 01100000 */ + 0x0c, /* 00110000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x0c, /* 00110000 */ + 0x06, /* 01100000 */ + 0x00, /* 00000000 */ + + /* + * 42 0x2a '*' + */ + 0x00, /* 00000000 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0xff, /* 11111111 */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 43 0x2b '+' + */ + 0x00, /* 00000000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x3f, /* 11111100 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 44 0x2c ',' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x06, /* 01100000 */ + + /* + * 45 0x2d '-' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x3f, /* 11111100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 46 0x2e '.' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x00, /* 00000000 */ + + /* + * 47 0x2f '/' + */ + 0x60, /* 00000110 */ + 0x30, /* 00001100 */ + 0x18, /* 00011000 */ + 0x0c, /* 00110000 */ + 0x06, /* 01100000 */ + 0x03, /* 11000000 */ + 0x01, /* 10000000 */ + 0x00, /* 00000000 */ + + /* + * 48 0x30 '0' + */ + 0x3e, /* 01111100 */ + 0x63, /* 11000110 */ + 0x73, /* 11001110 */ + 0x7b, /* 11011110 */ + 0x6f, /* 11110110 */ + 0x67, /* 11100110 */ + 0x3e, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 49 0x31 '1' + */ + 0x0c, /* 00110000 */ + 0x0e, /* 01110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x3f, /* 11111100 */ + 0x00, /* 00000000 */ + + /* + * 50 0x32 '2' + */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x30, /* 00001100 */ + 0x1c, /* 00111000 */ + 0x06, /* 01100000 */ + 0x33, /* 11001100 */ + 0x3f, /* 11111100 */ + 0x00, /* 00000000 */ + + /* + * 51 0x33 '3' + */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x30, /* 00001100 */ + 0x1c, /* 00111000 */ + 0x30, /* 00001100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 52 0x34 '4' + */ + 0x38, /* 00011100 */ + 0x3c, /* 00111100 */ + 0x36, /* 01101100 */ + 0x33, /* 11001100 */ + 0x7f, /* 11111110 */ + 0x30, /* 00001100 */ + 0x78, /* 00011110 */ + 0x00, /* 00000000 */ + + /* + * 53 0x35 '5' + */ + 0x3f, /* 11111100 */ + 0x03, /* 11000000 */ + 0x1f, /* 11111000 */ + 0x30, /* 00001100 */ + 0x30, /* 00001100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 54 0x36 '6' + */ + 0x1c, /* 00111000 */ + 0x06, /* 01100000 */ + 0x03, /* 11000000 */ + 0x1f, /* 11111000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 55 0x37 '7' + */ + 0x3f, /* 11111100 */ + 0x33, /* 11001100 */ + 0x30, /* 00001100 */ + 0x18, /* 00011000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x00, /* 00000000 */ + + /* + * 56 0x38 '8' + */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 57 0x39 '9' + */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x3e, /* 01111100 */ + 0x30, /* 00001100 */ + 0x18, /* 00011000 */ + 0x0e, /* 01110000 */ + 0x00, /* 00000000 */ + + /* + * 58 0x3a ':' + */ + 0x00, /* 00000000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x00, /* 00000000 */ + + /* + * 59 0x3b ';' + */ + 0x00, /* 00000000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x06, /* 01100000 */ + + /* + * 60 0x3c '<' + */ + 0x18, /* 00011000 */ + 0x0c, /* 00110000 */ + 0x06, /* 01100000 */ + 0x03, /* 11000000 */ + 0x06, /* 01100000 */ + 0x0c, /* 00110000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 61 0x3d '=' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x3f, /* 11111100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x3f, /* 11111100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 62 0x3e '>' + */ + 0x06, /* 01100000 */ + 0x0c, /* 00110000 */ + 0x18, /* 00011000 */ + 0x30, /* 00001100 */ + 0x18, /* 00011000 */ + 0x0c, /* 00110000 */ + 0x06, /* 01100000 */ + 0x00, /* 00000000 */ + + /* + * 63 0x3f '?' + */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x30, /* 00001100 */ + 0x18, /* 00011000 */ + 0x0c, /* 00110000 */ + 0x00, /* 00000000 */ + 0x0c, /* 00110000 */ + 0x00, /* 00000000 */ + + /* + * 64 0x40 '@' + */ + 0x3e, /* 01111100 */ + 0x63, /* 11000110 */ + 0x7b, /* 11011110 */ + 0x7b, /* 11011110 */ + 0x7b, /* 11011110 */ + 0x03, /* 11000000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 65 0x41 'A' + */ + 0x0c, /* 00110000 */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x3f, /* 11111100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x00, /* 00000000 */ + + /* + * 66 0x42 'B' + */ + 0x3f, /* 11111100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3e, /* 01111100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3f, /* 11111100 */ + 0x00, /* 00000000 */ + + /* + * 67 0x43 'C' + */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0x03, /* 11000000 */ + 0x03, /* 11000000 */ + 0x03, /* 11000000 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 68 0x44 'D' + */ + 0x1f, /* 11111000 */ + 0x36, /* 01101100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x36, /* 01101100 */ + 0x1f, /* 11111000 */ + 0x00, /* 00000000 */ + + /* + * 69 0x45 'E' + */ + 0x7f, /* 11111110 */ + 0x46, /* 01100010 */ + 0x16, /* 01101000 */ + 0x1e, /* 01111000 */ + 0x16, /* 01101000 */ + 0x46, /* 01100010 */ + 0x7f, /* 11111110 */ + 0x00, /* 00000000 */ + + /* + * 70 0x46 'F' + */ + 0x7f, /* 11111110 */ + 0x46, /* 01100010 */ + 0x16, /* 01101000 */ + 0x1e, /* 01111000 */ + 0x16, /* 01101000 */ + 0x06, /* 01100000 */ + 0x0f, /* 11110000 */ + 0x00, /* 00000000 */ + + /* + * 71 0x47 'G' + */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0x03, /* 11000000 */ + 0x03, /* 11000000 */ + 0x73, /* 11001110 */ + 0x66, /* 01100110 */ + 0x7c, /* 00111110 */ + 0x00, /* 00000000 */ + + /* + * 72 0x48 'H' + */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x3f, /* 11111100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x00, /* 00000000 */ + + /* + * 73 0x49 'I' + */ + 0x1e, /* 01111000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 74 0x4a 'J' + */ + 0x78, /* 00011110 */ + 0x30, /* 00001100 */ + 0x30, /* 00001100 */ + 0x30, /* 00001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 75 0x4b 'K' + */ + 0x67, /* 11100110 */ + 0x66, /* 01100110 */ + 0x36, /* 01101100 */ + 0x1e, /* 01111000 */ + 0x36, /* 01101100 */ + 0x66, /* 01100110 */ + 0x67, /* 11100110 */ + 0x00, /* 00000000 */ + + /* + * 76 0x4c 'L' + */ + 0x0f, /* 11110000 */ + 0x06, /* 01100000 */ + 0x06, /* 01100000 */ + 0x06, /* 01100000 */ + 0x46, /* 01100010 */ + 0x66, /* 01100110 */ + 0x7f, /* 11111110 */ + 0x00, /* 00000000 */ + + /* + * 77 0x4d 'M' + */ + 0x63, /* 11000110 */ + 0x77, /* 11101110 */ + 0x7f, /* 11111110 */ + 0x7f, /* 11111110 */ + 0x6b, /* 11010110 */ + 0x63, /* 11000110 */ + 0x63, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 78 0x4e 'N' + */ + 0x63, /* 11000110 */ + 0x67, /* 11100110 */ + 0x6f, /* 11110110 */ + 0x7b, /* 11011110 */ + 0x73, /* 11001110 */ + 0x63, /* 11000110 */ + 0x63, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 79 0x4f 'O' + */ + 0x1c, /* 00111000 */ + 0x36, /* 01101100 */ + 0x63, /* 11000110 */ + 0x63, /* 11000110 */ + 0x63, /* 11000110 */ + 0x36, /* 01101100 */ + 0x1c, /* 00111000 */ + 0x00, /* 00000000 */ + + /* + * 80 0x50 'P' + */ + 0x3f, /* 11111100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3e, /* 01111100 */ + 0x06, /* 01100000 */ + 0x06, /* 01100000 */ + 0x0f, /* 11110000 */ + 0x00, /* 00000000 */ + + /* + * 81 0x51 'Q' + */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x3b, /* 11011100 */ + 0x1e, /* 01111000 */ + 0x38, /* 00011100 */ + 0x00, /* 00000000 */ + + /* + * 82 0x52 'R' + */ + 0x3f, /* 11111100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3e, /* 01111100 */ + 0x36, /* 01101100 */ + 0x66, /* 01100110 */ + 0x67, /* 11100110 */ + 0x00, /* 00000000 */ + + /* + * 83 0x53 'S' + */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x07, /* 11100000 */ + 0x0e, /* 01110000 */ + 0x38, /* 00011100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 84 0x54 'T' + */ + 0x3f, /* 11111100 */ + 0x2d, /* 10110100 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 85 0x55 'U' + */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x3f, /* 11111100 */ + 0x00, /* 00000000 */ + + /* + * 86 0x56 'V' + */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x0c, /* 00110000 */ + 0x00, /* 00000000 */ + + /* + * 87 0x57 'W' + */ + 0x63, /* 11000110 */ + 0x63, /* 11000110 */ + 0x63, /* 11000110 */ + 0x6b, /* 11010110 */ + 0x7f, /* 11111110 */ + 0x77, /* 11101110 */ + 0x63, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 88 0x58 'X' + */ + 0x63, /* 11000110 */ + 0x63, /* 11000110 */ + 0x36, /* 01101100 */ + 0x1c, /* 00111000 */ + 0x1c, /* 00111000 */ + 0x36, /* 01101100 */ + 0x63, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 89 0x59 'Y' + */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 90 0x5a 'Z' + */ + 0x7f, /* 11111110 */ + 0x63, /* 11000110 */ + 0x31, /* 10001100 */ + 0x18, /* 00011000 */ + 0x4c, /* 00110010 */ + 0x66, /* 01100110 */ + 0x7f, /* 11111110 */ + 0x00, /* 00000000 */ + + /* + * 91 0x5b '[' + */ + 0x1e, /* 01111000 */ + 0x06, /* 01100000 */ + 0x06, /* 01100000 */ + 0x06, /* 01100000 */ + 0x06, /* 01100000 */ + 0x06, /* 01100000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 92 0x5c '\' + */ + 0x03, /* 11000000 */ + 0x06, /* 01100000 */ + 0x0c, /* 00110000 */ + 0x18, /* 00011000 */ + 0x30, /* 00001100 */ + 0x60, /* 00000110 */ + 0x40, /* 00000010 */ + 0x00, /* 00000000 */ + + /* + * 93 0x5d ']' + */ + 0x1e, /* 01111000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 94 0x5e '^' + */ + 0x08, /* 00010000 */ + 0x1c, /* 00111000 */ + 0x36, /* 01101100 */ + 0x63, /* 11000110 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 95 0x5f '_' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xff, /* 11111111 */ + + /* + * 96 0x60 '`' + */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 97 0x61 'a' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x30, /* 00001100 */ + 0x3e, /* 01111100 */ + 0x33, /* 11001100 */ + 0x6e, /* 01110110 */ + 0x00, /* 00000000 */ + + /* + * 98 0x62 'b' + */ + 0x07, /* 11100000 */ + 0x06, /* 01100000 */ + 0x06, /* 01100000 */ + 0x3e, /* 01111100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3b, /* 11011100 */ + 0x00, /* 00000000 */ + + /* + * 99 0x63 'c' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x03, /* 11000000 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 100 0x64 'd' + */ + 0x38, /* 00011100 */ + 0x30, /* 00001100 */ + 0x30, /* 00001100 */ + 0x3e, /* 01111100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x6e, /* 01110110 */ + 0x00, /* 00000000 */ + + /* + * 101 0x65 'e' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x3f, /* 11111100 */ + 0x03, /* 11000000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 102 0x66 'f' + */ + 0x1c, /* 00111000 */ + 0x36, /* 01101100 */ + 0x06, /* 01100000 */ + 0x0f, /* 11110000 */ + 0x06, /* 01100000 */ + 0x06, /* 01100000 */ + 0x0f, /* 11110000 */ + 0x00, /* 00000000 */ + + /* + * 103 0x67 'g' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x6e, /* 01110110 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x3e, /* 01111100 */ + 0x30, /* 00001100 */ + 0x1f, /* 11111000 */ + + /* + * 104 0x68 'h' + */ + 0x07, /* 11100000 */ + 0x06, /* 01100000 */ + 0x36, /* 01101100 */ + 0x6e, /* 01110110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x67, /* 11100110 */ + 0x00, /* 00000000 */ + + /* + * 105 0x69 'i' + */ + 0x0c, /* 00110000 */ + 0x00, /* 00000000 */ + 0x0e, /* 01110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 106 0x6a 'j' + */ + 0x30, /* 00001100 */ + 0x00, /* 00000000 */ + 0x30, /* 00001100 */ + 0x30, /* 00001100 */ + 0x30, /* 00001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + + /* + * 107 0x6b 'k' + */ + 0x07, /* 11100000 */ + 0x06, /* 01100000 */ + 0x66, /* 01100110 */ + 0x36, /* 01101100 */ + 0x1e, /* 01111000 */ + 0x36, /* 01101100 */ + 0x67, /* 11100110 */ + 0x00, /* 00000000 */ + + /* + * 108 0x6c 'l' + */ + 0x0e, /* 01110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 109 0x6d 'm' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x33, /* 11001100 */ + 0x7f, /* 11111110 */ + 0x7f, /* 11111110 */ + 0x6b, /* 11010110 */ + 0x63, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 110 0x6e 'n' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x1f, /* 11111000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x00, /* 00000000 */ + + /* + * 111 0x6f 'o' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 112 0x70 'p' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x3b, /* 11011100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3e, /* 01111100 */ + 0x06, /* 01100000 */ + 0x0f, /* 11110000 */ + + /* + * 113 0x71 'q' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x6e, /* 01110110 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x3e, /* 01111100 */ + 0x30, /* 00001100 */ + 0x78, /* 00011110 */ + + /* + * 114 0x72 'r' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x3b, /* 11011100 */ + 0x6e, /* 01110110 */ + 0x66, /* 01100110 */ + 0x06, /* 01100000 */ + 0x0f, /* 11110000 */ + 0x00, /* 00000000 */ + + /* + * 115 0x73 's' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x3e, /* 01111100 */ + 0x03, /* 11000000 */ + 0x1e, /* 01111000 */ + 0x30, /* 00001100 */ + 0x1f, /* 11111000 */ + 0x00, /* 00000000 */ + + /* + * 116 0x74 't' + */ + 0x08, /* 00010000 */ + 0x0c, /* 00110000 */ + 0x3e, /* 01111100 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x2c, /* 00110100 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 117 0x75 'u' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x6e, /* 01110110 */ + 0x00, /* 00000000 */ + + /* + * 118 0x76 'v' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x0c, /* 00110000 */ + 0x00, /* 00000000 */ + + /* + * 119 0x77 'w' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x63, /* 11000110 */ + 0x6b, /* 11010110 */ + 0x7f, /* 11111110 */ + 0x7f, /* 11111110 */ + 0x36, /* 01101100 */ + 0x00, /* 00000000 */ + + /* + * 120 0x78 'x' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x63, /* 11000110 */ + 0x36, /* 01101100 */ + 0x1c, /* 00111000 */ + 0x36, /* 01101100 */ + 0x63, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 121 0x79 'y' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x3e, /* 01111100 */ + 0x30, /* 00001100 */ + 0x1f, /* 11111000 */ + + /* + * 122 0x7a 'z' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x3f, /* 11111100 */ + 0x19, /* 10011000 */ + 0x0c, /* 00110000 */ + 0x26, /* 01100100 */ + 0x3f, /* 11111100 */ + 0x00, /* 00000000 */ + + /* + * 123 0x7b '{' + */ + 0x38, /* 00011100 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x07, /* 11100000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x38, /* 00011100 */ + 0x00, /* 00000000 */ + + /* + * 124 0x7c '|' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 125 0x7d '}' + */ + 0x07, /* 11100000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x38, /* 00011100 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x07, /* 11100000 */ + 0x00, /* 00000000 */ + + /* + * 126 0x7e '~' + */ + 0x6e, /* 01110110 */ + 0x3b, /* 11011100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + // there's a gap here. + + /* + * 161 0xa1 '¡' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 162 0xa2 '¢' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x7e, /* 01111110 */ + 0x03, /* 11000000 */ + 0x03, /* 11000000 */ + 0x7e, /* 01111110 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + + /* + * 163 0xa3 '£' + */ + 0x1c, /* 00111000 */ + 0x36, /* 01101100 */ + 0x26, /* 01100100 */ + 0x0f, /* 11110000 */ + 0x06, /* 01100000 */ + 0x67, /* 11100110 */ + 0x3f, /* 11111100 */ + 0x00, /* 00000000 */ + + /* + * 164 0xa4 '¤' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x63, /* 11000110 */ + 0x3e, /* 01111100 */ + 0x36, /* 01101100 */ + 0x3e, /* 01111100 */ + 0x63, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 165 0xa5 'Â¥' + */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x3f, /* 11111100 */ + 0x0c, /* 00110000 */ + 0x3f, /* 11111100 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + + /* + * 166 0xa6 '¦' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 167 0xa7 '§' + */ + 0x7c, /* 00111110 */ + 0xc6, /* 01100011 */ + 0x1c, /* 00111000 */ + 0x36, /* 01101100 */ + 0x36, /* 01101100 */ + 0x1c, /* 00111000 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + + /* + * 168 0xa8 '¨' + */ + 0x33, /* 11001100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 169 0xa9 '©' + */ + 0x3c, /* 00111100 */ + 0x42, /* 01000010 */ + 0x99, /* 10011001 */ + 0x85, /* 10100001 */ + 0x85, /* 10100001 */ + 0x99, /* 10011001 */ + 0x42, /* 01000010 */ + 0x3c, /* 00111100 */ + + /* + * 170 0xaa 'ª' + */ + 0x3c, /* 00111100 */ + 0x36, /* 01101100 */ + 0x36, /* 01101100 */ + 0x7c, /* 00111110 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 171 0xab '«' + */ + 0x00, /* 00000000 */ + 0xcc, /* 00110011 */ + 0x66, /* 01100110 */ + 0x33, /* 11001100 */ + 0x66, /* 01100110 */ + 0xcc, /* 00110011 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 172 0xac '¬' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x3f, /* 11111100 */ + 0x30, /* 00001100 */ + 0x30, /* 00001100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 173 0xad '­' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 174 0xae '®' + */ + 0x3c, /* 00111100 */ + 0x42, /* 01000010 */ + 0x9d, /* 10111001 */ + 0xa5, /* 10100101 */ + 0x9d, /* 10111001 */ + 0xa5, /* 10100101 */ + 0x42, /* 01000010 */ + 0x3c, /* 00111100 */ + + /* + * 175 0xaf '¯' + */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 176 0xb0 '°' + */ + 0x1c, /* 00111000 */ + 0x36, /* 01101100 */ + 0x36, /* 01101100 */ + 0x1c, /* 00111000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 177 0xb1 '±' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x7e, /* 01111110 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + + /* + * 178 0xb2 '²' + */ + 0x1c, /* 00111000 */ + 0x30, /* 00001100 */ + 0x18, /* 00011000 */ + 0x0c, /* 00110000 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 179 0xb3 '³' + */ + 0x1c, /* 00111000 */ + 0x30, /* 00001100 */ + 0x18, /* 00011000 */ + 0x30, /* 00001100 */ + 0x1c, /* 00111000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 180 0xb4 '´' + */ + 0x18, /* 00011000 */ + 0x0c, /* 00110000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 181 0xb5 'µ' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3e, /* 01111100 */ + 0x06, /* 01100000 */ + 0x03, /* 11000000 */ + + /* + * 182 0xb6 '¶' + */ + 0xfe, /* 01111111 */ + 0xdb, /* 11011011 */ + 0xdb, /* 11011011 */ + 0xde, /* 01111011 */ + 0xd8, /* 00011011 */ + 0xd8, /* 00011011 */ + 0xd8, /* 00011011 */ + 0x00, /* 00000000 */ + + /* + * 183 0xb7 '·' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 184 0xb8 '¸' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x30, /* 00001100 */ + 0x1e, /* 01111000 */ + + /* + * 185 0xb9 '¹' + */ + 0x08, /* 00010000 */ + 0x0c, /* 00110000 */ + 0x08, /* 00010000 */ + 0x1c, /* 00111000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 186 0xba 'º' + */ + 0x1c, /* 00111000 */ + 0x36, /* 01101100 */ + 0x36, /* 01101100 */ + 0x1c, /* 00111000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 187 0xbb '»' + */ + 0x00, /* 00000000 */ + 0x33, /* 11001100 */ + 0x66, /* 01100110 */ + 0xcc, /* 00110011 */ + 0x66, /* 01100110 */ + 0x33, /* 11001100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 188 0xbc '¼' + */ + 0xc3, /* 11000011 */ + 0x63, /* 11000110 */ + 0x33, /* 11001100 */ + 0xbd, /* 10111101 */ + 0xec, /* 00110111 */ + 0xf6, /* 01101111 */ + 0xf3, /* 11001111 */ + 0x03, /* 11000000 */ + + /* + * 189 0xbd '½' + */ + 0xc3, /* 11000011 */ + 0x63, /* 11000110 */ + 0x33, /* 11001100 */ + 0x7b, /* 11011110 */ + 0xcc, /* 00110011 */ + 0x66, /* 01100110 */ + 0x33, /* 11001100 */ + 0xf0, /* 00001111 */ + + /* + * 190 0xbe '¾' + */ + 0x03, /* 11000000 */ + 0xc4, /* 00100011 */ + 0x63, /* 11000110 */ + 0xb4, /* 00101101 */ + 0xdb, /* 11011011 */ + 0xac, /* 00110101 */ + 0xe6, /* 01100111 */ + 0x80, /* 00000001 */ + + /* + * 191 0xbf '¿' + */ + 0x0c, /* 00110000 */ + 0x00, /* 00000000 */ + 0x0c, /* 00110000 */ + 0x06, /* 01100000 */ + 0x03, /* 11000000 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 192 0xc0 'À' + */ + 0x07, /* 11100000 */ + 0x00, /* 00000000 */ + 0x1c, /* 00111000 */ + 0x36, /* 01101100 */ + 0x63, /* 11000110 */ + 0x7f, /* 11111110 */ + 0x63, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 193 0xc1 'Á' + */ + 0x70, /* 00001110 */ + 0x00, /* 00000000 */ + 0x1c, /* 00111000 */ + 0x36, /* 01101100 */ + 0x63, /* 11000110 */ + 0x7f, /* 11111110 */ + 0x63, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 194 0xc2 'Â' + */ + 0x1c, /* 00111000 */ + 0x36, /* 01101100 */ + 0x00, /* 00000000 */ + 0x3e, /* 01111100 */ + 0x63, /* 11000110 */ + 0x7f, /* 11111110 */ + 0x63, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 195 0xc3 'Ã' + */ + 0x6e, /* 01110110 */ + 0x3b, /* 11011100 */ + 0x00, /* 00000000 */ + 0x3e, /* 01111100 */ + 0x63, /* 11000110 */ + 0x7f, /* 11111110 */ + 0x63, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 196 0xc4 'Ä' + */ + 0x63, /* 11000110 */ + 0x1c, /* 00111000 */ + 0x36, /* 01101100 */ + 0x63, /* 11000110 */ + 0x7f, /* 11111110 */ + 0x63, /* 11000110 */ + 0x63, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 197 0xc5 'Å' + */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x3f, /* 11111100 */ + 0x33, /* 11001100 */ + 0x00, /* 00000000 */ + + /* + * 198 0xc6 'Æ' + */ + 0x7c, /* 00111110 */ + 0x36, /* 01101100 */ + 0x33, /* 11001100 */ + 0x7f, /* 11111110 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x73, /* 11001110 */ + 0x00, /* 00000000 */ + + /* + * 199 0xc7 'Ç' + */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x03, /* 11000000 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x18, /* 00011000 */ + 0x30, /* 00001100 */ + 0x1e, /* 01111000 */ + + /* + * 200 0xc8 'È' + */ + 0x07, /* 11100000 */ + 0x00, /* 00000000 */ + 0x3f, /* 11111100 */ + 0x06, /* 01100000 */ + 0x1e, /* 01111000 */ + 0x06, /* 01100000 */ + 0x3f, /* 11111100 */ + 0x00, /* 00000000 */ + + /* + * 201 0xc9 'É' + */ + 0x38, /* 00011100 */ + 0x00, /* 00000000 */ + 0x3f, /* 11111100 */ + 0x06, /* 01100000 */ + 0x1e, /* 01111000 */ + 0x06, /* 01100000 */ + 0x3f, /* 11111100 */ + 0x00, /* 00000000 */ + + /* + * 202 0xca 'Ê' + */ + 0x0c, /* 00110000 */ + 0x12, /* 01001000 */ + 0x3f, /* 11111100 */ + 0x06, /* 01100000 */ + 0x1e, /* 01111000 */ + 0x06, /* 01100000 */ + 0x3f, /* 11111100 */ + 0x00, /* 00000000 */ + + /* + * 203 0xcb 'Ë' + */ + 0x36, /* 01101100 */ + 0x00, /* 00000000 */ + 0x3f, /* 11111100 */ + 0x06, /* 01100000 */ + 0x1e, /* 01111000 */ + 0x06, /* 01100000 */ + 0x3f, /* 11111100 */ + 0x00, /* 00000000 */ + + /* + * 204 0xcc 'Ì' + */ + 0x07, /* 11100000 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 205 0xcd 'Í' + */ + 0x38, /* 00011100 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 206 0xce 'Î' + */ + 0x0c, /* 00110000 */ + 0x12, /* 01001000 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 207 0xcf 'Ï' + */ + 0x33, /* 11001100 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 208 0xd0 'Ð' + */ + 0x3f, /* 11111100 */ + 0x66, /* 01100110 */ + 0x6f, /* 11110110 */ + 0x6f, /* 11110110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3f, /* 11111100 */ + 0x00, /* 00000000 */ + + /* + * 209 0xd1 'Ñ' + */ + 0x3f, /* 11111100 */ + 0x00, /* 00000000 */ + 0x33, /* 11001100 */ + 0x37, /* 11101100 */ + 0x3f, /* 11111100 */ + 0x3b, /* 11011100 */ + 0x33, /* 11001100 */ + 0x00, /* 00000000 */ + + /* + * 210 0xd2 'Ò' + */ + 0x0e, /* 01110000 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 211 0xd3 'Ó' + */ + 0x70, /* 00001110 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 212 0xd4 'Ô' + */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 213 0xd5 'Õ' + */ + 0x6e, /* 01110110 */ + 0x3b, /* 11011100 */ + 0x00, /* 00000000 */ + 0x3e, /* 01111100 */ + 0x63, /* 11000110 */ + 0x63, /* 11000110 */ + 0x3e, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 214 0xd6 'Ö' + */ + 0xc3, /* 11000011 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 215 0xd7 '×' + */ + 0x00, /* 00000000 */ + 0x36, /* 01101100 */ + 0x1c, /* 00111000 */ + 0x08, /* 00010000 */ + 0x1c, /* 00111000 */ + 0x36, /* 01101100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 216 0xd8 'Ø' + */ + 0x5c, /* 00111010 */ + 0x36, /* 01101100 */ + 0x73, /* 11001110 */ + 0x7b, /* 11011110 */ + 0x6f, /* 11110110 */ + 0x36, /* 01101100 */ + 0x1d, /* 10111000 */ + 0x00, /* 00000000 */ + + /* + * 217 0xd9 'Ù' + */ + 0x0e, /* 01110000 */ + 0x00, /* 00000000 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 218 0xda 'Ú' + */ + 0x70, /* 00001110 */ + 0x00, /* 00000000 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 219 0xdb 'Û' + */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0x00, /* 00000000 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 220 0xdc 'Ü' + */ + 0x33, /* 11001100 */ + 0x00, /* 00000000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 221 0xdd 'Ý' + */ + 0x70, /* 00001110 */ + 0x00, /* 00000000 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 222 0xde 'Þ' + */ + 0x0f, /* 11110000 */ + 0x06, /* 01100000 */ + 0x3e, /* 01111100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3e, /* 01111100 */ + 0x06, /* 01100000 */ + 0x0f, /* 11110000 */ + + /* + * 223 0xdf 'ß' + */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x1f, /* 11111000 */ + 0x33, /* 11001100 */ + 0x1f, /* 11111000 */ + 0x03, /* 11000000 */ + 0x03, /* 11000000 */ + + /* + * 224 0xe0 'à' + */ + 0x07, /* 11100000 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x30, /* 00001100 */ + 0x3e, /* 01111100 */ + 0x33, /* 11001100 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + + /* + * 225 0xe1 'á' + */ + 0x38, /* 00011100 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x30, /* 00001100 */ + 0x3e, /* 01111100 */ + 0x33, /* 11001100 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + + /* + * 226 0xe2 'â' + */ + 0x7e, /* 01111110 */ + 0xc3, /* 11000011 */ + 0x3c, /* 00111100 */ + 0x60, /* 00000110 */ + 0x7c, /* 00111110 */ + 0x66, /* 01100110 */ + 0xfc, /* 00111111 */ + 0x00, /* 00000000 */ + + /* + * 227 0xe3 'ã' + */ + 0x6e, /* 01110110 */ + 0x3b, /* 11011100 */ + 0x1e, /* 01111000 */ + 0x30, /* 00001100 */ + 0x3e, /* 01111100 */ + 0x33, /* 11001100 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + + /* + * 228 0xe4 'ä' + */ + 0x33, /* 11001100 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x30, /* 00001100 */ + 0x3e, /* 01111100 */ + 0x33, /* 11001100 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + + /* + * 229 0xe5 'Ã¥' + */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x1e, /* 01111000 */ + 0x30, /* 00001100 */ + 0x3e, /* 01111100 */ + 0x33, /* 11001100 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + + /* + * 230 0xe6 'æ' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xfe, /* 01111111 */ + 0x30, /* 00001100 */ + 0xfe, /* 01111111 */ + 0x33, /* 11001100 */ + 0xfe, /* 01111111 */ + 0x00, /* 00000000 */ + + /* + * 231 0xe7 'ç' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x03, /* 11000000 */ + 0x03, /* 11000000 */ + 0x1e, /* 01111000 */ + 0x30, /* 00001100 */ + 0x1c, /* 00111000 */ + + /* + * 232 0xe8 'è' + */ + 0x07, /* 11100000 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x3f, /* 11111100 */ + 0x03, /* 11000000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 233 0xe9 'é' + */ + 0x38, /* 00011100 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x3f, /* 11111100 */ + 0x03, /* 11000000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 234 0xea 'ê' + */ + 0x7e, /* 01111110 */ + 0xc3, /* 11000011 */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0x7e, /* 01111110 */ + 0x06, /* 01100000 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 235 0xeb 'ë' + */ + 0x33, /* 11001100 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x3f, /* 11111100 */ + 0x03, /* 11000000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 236 0xec 'ì' + */ + 0x07, /* 11100000 */ + 0x00, /* 00000000 */ + 0x0e, /* 01110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 237 0xed 'í' + */ + 0x1c, /* 00111000 */ + 0x00, /* 00000000 */ + 0x0e, /* 01110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 238 0xee 'î' + */ + 0x3e, /* 01111100 */ + 0x63, /* 11000110 */ + 0x1c, /* 00111000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 239 0xef 'ï' + */ + 0x33, /* 11001100 */ + 0x00, /* 00000000 */ + 0x0e, /* 01110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x0c, /* 00110000 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 240 0xf0 'ð' + */ + 0x1b, /* 11011000 */ + 0x0e, /* 01110000 */ + 0x1b, /* 11011000 */ + 0x30, /* 00001100 */ + 0x3e, /* 01111100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 241 0xf1 'ñ' + */ + 0x00, /* 00000000 */ + 0x1f, /* 11111000 */ + 0x00, /* 00000000 */ + 0x1f, /* 11111000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x00, /* 00000000 */ + + /* + * 242 0xf2 'ò' + */ + 0x00, /* 00000000 */ + 0x07, /* 11100000 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 243 0xf3 'ó' + */ + 0x00, /* 00000000 */ + 0x38, /* 00011100 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 244 0xf4 'ô' + */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 245 0xf5 'õ' + */ + 0x6e, /* 01110110 */ + 0x3b, /* 11011100 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 246 0xf6 'ö' + */ + 0x00, /* 00000000 */ + 0x33, /* 11001100 */ + 0x00, /* 00000000 */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x1e, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 247 0xf7 '÷' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 248 0xf8 'ø' + */ + 0x00, /* 00000000 */ + 0x60, /* 00000110 */ + 0x3c, /* 00111100 */ + 0x76, /* 01101110 */ + 0x7e, /* 01111110 */ + 0x6e, /* 01110110 */ + 0x3c, /* 00111100 */ + 0x06, /* 01100000 */ + + /* + * 249 0xf9 'ù' + */ + 0x00, /* 00000000 */ + 0x07, /* 11100000 */ + 0x00, /* 00000000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + + /* + * 250 0xfa 'ú' + */ + 0x00, /* 00000000 */ + 0x38, /* 00011100 */ + 0x00, /* 00000000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + + /* + * 251 0xfb 'û' + */ + 0x1e, /* 01111000 */ + 0x33, /* 11001100 */ + 0x00, /* 00000000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + + /* + * 252 0xfc 'ü' + */ + 0x00, /* 00000000 */ + 0x33, /* 11001100 */ + 0x00, /* 00000000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + + /* + * 253 0xfd 'ý' + */ + 0x00, /* 00000000 */ + 0x38, /* 00011100 */ + 0x00, /* 00000000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x3e, /* 01111100 */ + 0x30, /* 00001100 */ + 0x1f, /* 11111000 */ + + /* + * 254 0xfe 'þ' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x06, /* 01100000 */ + 0x3e, /* 01111100 */ + 0x66, /* 01100110 */ + 0x3e, /* 01111100 */ + 0x06, /* 01100000 */ + 0x00, /* 00000000 */ + + /* + * 255 0xff 'ÿ' + */ + 0x00, /* 00000000 */ + 0x33, /* 11001100 */ + 0x00, /* 00000000 */ + 0x33, /* 11001100 */ + 0x33, /* 11001100 */ + 0x3e, /* 01111100 */ + 0x30, /* 00001100 */ + 0x1f, /* 11111000 */ + + /* + * 256 0x100 - missing character + */ + 0x55, /* 01010101 */ + 0xAA, /* 10101010 */ + 0x55, /* 01010101 */ + 0xAA, /* 10101010 */ + 0x55, /* 01010101 */ + 0xAA, /* 10101010 */ + 0x55, /* 01010101 */ + 0xAA, /* 10101010 */ +}; + +SDL_COMPILE_TIME_ASSERT(SDL_RenderDebugTextFontDataSize, SDL_arraysize(SDL_RenderDebugTextFontData) == SDL_DEBUG_FONT_NUM_GLYPHS * 8); + +#endif + diff --git a/src/render/SDL_sysrender.h b/src/render/SDL_sysrender.h index 91118b8455..381b516fd9 100644 --- a/src/render/SDL_sysrender.h +++ b/src/render/SDL_sysrender.h @@ -305,6 +305,8 @@ struct SDL_Renderer SDL_PropertiesID props; + SDL_Texture *debug_char_texture_atlas; + bool destroyed; // already destroyed by SDL_DestroyWindow; just free this struct in SDL_DestroyRenderer. void *internal; diff --git a/src/test/SDL_test_font.c b/src/test/SDL_test_font.c index 08d5ff9788..19e6bc9f6b 100644 --- a/src/test/SDL_test_font.c +++ b/src/test/SDL_test_font.c @@ -20,3350 +20,21 @@ */ #include -/* ---- 8x8 font definition ---- */ +#define UTF8_IsTrailingByte(c) ((c) >= 0x80 && (c) <= 0xBF) -/* -; Summary: font8_8.asm -; 8x8 monochrome bitmap fonts for rendering -; -; Author: -; Marcel Sondaar -; International Business Machines (public domain VGA fonts) -; -; License: -; Public Domain -; -*/ - -#define NUM_FONT_GLYPHS 257 - -static unsigned char SDLTest_FontData[] = { - - /* - * 0 0x00 '^@' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 1 0x01 '^A' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 2 0x02 '^B' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 3 0x03 '^C' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 4 0x04 '^D' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 5 0x05 '^E' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 6 0x06 '^F' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 7 0x07 '^G' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 8 0x08 '^H' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 9 0x09 '^I' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 10 0x0a '^J' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 11 0x0b '^K' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 12 0x0c '^L' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 13 0x0d '^M' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 14 0x0e '^N' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 15 0x0f '^O' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 16 0x10 '^P' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 17 0x11 '^Q' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 18 0x12 '^R' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 19 0x13 '^S' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 20 0x14 '^T' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 21 0x15 '^U' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 22 0x16 '^V' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 23 0x17 '^W' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 24 0x18 '^X' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 25 0x19 '^Y' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 26 0x1a '^Z' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 27 0x1b '^[' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 28 0x1c '^\' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 29 0x1d '^]' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 30 0x1e '^^' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 31 0x1f '^_' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 32 0x20 ' ' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 33 0x21 '!' - */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x3c, /* 00111100 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* - * 34 0x22 '"' - */ - 0x36, /* 01101100 */ - 0x36, /* 01101100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 35 0x23 '#' - */ - 0x36, /* 01101100 */ - 0x36, /* 01101100 */ - 0x7f, /* 11111110 */ - 0x36, /* 01101100 */ - 0x7f, /* 11111110 */ - 0x36, /* 01101100 */ - 0x36, /* 01101100 */ - 0x00, /* 00000000 */ - - /* - * 36 0x24 '$' - */ - 0x0c, /* 00110000 */ - 0x3e, /* 01111100 */ - 0x03, /* 11000000 */ - 0x1e, /* 01111000 */ - 0x30, /* 00001100 */ - 0x1f, /* 11111000 */ - 0x0c, /* 00110000 */ - 0x00, /* 00000000 */ - - /* - * 37 0x25 '%' - */ - 0x00, /* 00000000 */ - 0x63, /* 11000110 */ - 0x33, /* 11001100 */ - 0x18, /* 00011000 */ - 0x0c, /* 00110000 */ - 0x66, /* 01100110 */ - 0x63, /* 11000110 */ - 0x00, /* 00000000 */ - - /* - * 38 0x26 '&' - */ - 0x1c, /* 00111000 */ - 0x36, /* 01101100 */ - 0x1c, /* 00111000 */ - 0x6e, /* 01110110 */ - 0x3b, /* 11011100 */ - 0x33, /* 11001100 */ - 0x6e, /* 01110110 */ - 0x00, /* 00000000 */ - - /* - * 39 0x27 ''' - */ - 0x06, /* 01100000 */ - 0x06, /* 01100000 */ - 0x03, /* 11000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 40 0x28 '(' - */ - 0x18, /* 00011000 */ - 0x0c, /* 00110000 */ - 0x06, /* 01100000 */ - 0x06, /* 01100000 */ - 0x06, /* 01100000 */ - 0x0c, /* 00110000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* - * 41 0x29 ')' - */ - 0x06, /* 01100000 */ - 0x0c, /* 00110000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x0c, /* 00110000 */ - 0x06, /* 01100000 */ - 0x00, /* 00000000 */ - - /* - * 42 0x2a '*' - */ - 0x00, /* 00000000 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0xff, /* 11111111 */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 43 0x2b '+' - */ - 0x00, /* 00000000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x3f, /* 11111100 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 44 0x2c ',' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x06, /* 01100000 */ - - /* - * 45 0x2d '-' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x3f, /* 11111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 46 0x2e '.' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x00, /* 00000000 */ - - /* - * 47 0x2f '/' - */ - 0x60, /* 00000110 */ - 0x30, /* 00001100 */ - 0x18, /* 00011000 */ - 0x0c, /* 00110000 */ - 0x06, /* 01100000 */ - 0x03, /* 11000000 */ - 0x01, /* 10000000 */ - 0x00, /* 00000000 */ - - /* - * 48 0x30 '0' - */ - 0x3e, /* 01111100 */ - 0x63, /* 11000110 */ - 0x73, /* 11001110 */ - 0x7b, /* 11011110 */ - 0x6f, /* 11110110 */ - 0x67, /* 11100110 */ - 0x3e, /* 01111100 */ - 0x00, /* 00000000 */ - - /* - * 49 0x31 '1' - */ - 0x0c, /* 00110000 */ - 0x0e, /* 01110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x3f, /* 11111100 */ - 0x00, /* 00000000 */ - - /* - * 50 0x32 '2' - */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x30, /* 00001100 */ - 0x1c, /* 00111000 */ - 0x06, /* 01100000 */ - 0x33, /* 11001100 */ - 0x3f, /* 11111100 */ - 0x00, /* 00000000 */ - - /* - * 51 0x33 '3' - */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x30, /* 00001100 */ - 0x1c, /* 00111000 */ - 0x30, /* 00001100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 52 0x34 '4' - */ - 0x38, /* 00011100 */ - 0x3c, /* 00111100 */ - 0x36, /* 01101100 */ - 0x33, /* 11001100 */ - 0x7f, /* 11111110 */ - 0x30, /* 00001100 */ - 0x78, /* 00011110 */ - 0x00, /* 00000000 */ - - /* - * 53 0x35 '5' - */ - 0x3f, /* 11111100 */ - 0x03, /* 11000000 */ - 0x1f, /* 11111000 */ - 0x30, /* 00001100 */ - 0x30, /* 00001100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 54 0x36 '6' - */ - 0x1c, /* 00111000 */ - 0x06, /* 01100000 */ - 0x03, /* 11000000 */ - 0x1f, /* 11111000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 55 0x37 '7' - */ - 0x3f, /* 11111100 */ - 0x33, /* 11001100 */ - 0x30, /* 00001100 */ - 0x18, /* 00011000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x00, /* 00000000 */ - - /* - * 56 0x38 '8' - */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 57 0x39 '9' - */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x3e, /* 01111100 */ - 0x30, /* 00001100 */ - 0x18, /* 00011000 */ - 0x0e, /* 01110000 */ - 0x00, /* 00000000 */ - - /* - * 58 0x3a ':' - */ - 0x00, /* 00000000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x00, /* 00000000 */ - - /* - * 59 0x3b ';' - */ - 0x00, /* 00000000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x06, /* 01100000 */ - - /* - * 60 0x3c '<' - */ - 0x18, /* 00011000 */ - 0x0c, /* 00110000 */ - 0x06, /* 01100000 */ - 0x03, /* 11000000 */ - 0x06, /* 01100000 */ - 0x0c, /* 00110000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* - * 61 0x3d '=' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x3f, /* 11111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x3f, /* 11111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 62 0x3e '>' - */ - 0x06, /* 01100000 */ - 0x0c, /* 00110000 */ - 0x18, /* 00011000 */ - 0x30, /* 00001100 */ - 0x18, /* 00011000 */ - 0x0c, /* 00110000 */ - 0x06, /* 01100000 */ - 0x00, /* 00000000 */ - - /* - * 63 0x3f '?' - */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x30, /* 00001100 */ - 0x18, /* 00011000 */ - 0x0c, /* 00110000 */ - 0x00, /* 00000000 */ - 0x0c, /* 00110000 */ - 0x00, /* 00000000 */ - - /* - * 64 0x40 '@' - */ - 0x3e, /* 01111100 */ - 0x63, /* 11000110 */ - 0x7b, /* 11011110 */ - 0x7b, /* 11011110 */ - 0x7b, /* 11011110 */ - 0x03, /* 11000000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 65 0x41 'A' - */ - 0x0c, /* 00110000 */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x3f, /* 11111100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x00, /* 00000000 */ - - /* - * 66 0x42 'B' - */ - 0x3f, /* 11111100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3e, /* 01111100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3f, /* 11111100 */ - 0x00, /* 00000000 */ - - /* - * 67 0x43 'C' - */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0x03, /* 11000000 */ - 0x03, /* 11000000 */ - 0x03, /* 11000000 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* - * 68 0x44 'D' - */ - 0x1f, /* 11111000 */ - 0x36, /* 01101100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x36, /* 01101100 */ - 0x1f, /* 11111000 */ - 0x00, /* 00000000 */ - - /* - * 69 0x45 'E' - */ - 0x7f, /* 11111110 */ - 0x46, /* 01100010 */ - 0x16, /* 01101000 */ - 0x1e, /* 01111000 */ - 0x16, /* 01101000 */ - 0x46, /* 01100010 */ - 0x7f, /* 11111110 */ - 0x00, /* 00000000 */ - - /* - * 70 0x46 'F' - */ - 0x7f, /* 11111110 */ - 0x46, /* 01100010 */ - 0x16, /* 01101000 */ - 0x1e, /* 01111000 */ - 0x16, /* 01101000 */ - 0x06, /* 01100000 */ - 0x0f, /* 11110000 */ - 0x00, /* 00000000 */ - - /* - * 71 0x47 'G' - */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0x03, /* 11000000 */ - 0x03, /* 11000000 */ - 0x73, /* 11001110 */ - 0x66, /* 01100110 */ - 0x7c, /* 00111110 */ - 0x00, /* 00000000 */ - - /* - * 72 0x48 'H' - */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x3f, /* 11111100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x00, /* 00000000 */ - - /* - * 73 0x49 'I' - */ - 0x1e, /* 01111000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 74 0x4a 'J' - */ - 0x78, /* 00011110 */ - 0x30, /* 00001100 */ - 0x30, /* 00001100 */ - 0x30, /* 00001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 75 0x4b 'K' - */ - 0x67, /* 11100110 */ - 0x66, /* 01100110 */ - 0x36, /* 01101100 */ - 0x1e, /* 01111000 */ - 0x36, /* 01101100 */ - 0x66, /* 01100110 */ - 0x67, /* 11100110 */ - 0x00, /* 00000000 */ - - /* - * 76 0x4c 'L' - */ - 0x0f, /* 11110000 */ - 0x06, /* 01100000 */ - 0x06, /* 01100000 */ - 0x06, /* 01100000 */ - 0x46, /* 01100010 */ - 0x66, /* 01100110 */ - 0x7f, /* 11111110 */ - 0x00, /* 00000000 */ - - /* - * 77 0x4d 'M' - */ - 0x63, /* 11000110 */ - 0x77, /* 11101110 */ - 0x7f, /* 11111110 */ - 0x7f, /* 11111110 */ - 0x6b, /* 11010110 */ - 0x63, /* 11000110 */ - 0x63, /* 11000110 */ - 0x00, /* 00000000 */ - - /* - * 78 0x4e 'N' - */ - 0x63, /* 11000110 */ - 0x67, /* 11100110 */ - 0x6f, /* 11110110 */ - 0x7b, /* 11011110 */ - 0x73, /* 11001110 */ - 0x63, /* 11000110 */ - 0x63, /* 11000110 */ - 0x00, /* 00000000 */ - - /* - * 79 0x4f 'O' - */ - 0x1c, /* 00111000 */ - 0x36, /* 01101100 */ - 0x63, /* 11000110 */ - 0x63, /* 11000110 */ - 0x63, /* 11000110 */ - 0x36, /* 01101100 */ - 0x1c, /* 00111000 */ - 0x00, /* 00000000 */ - - /* - * 80 0x50 'P' - */ - 0x3f, /* 11111100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3e, /* 01111100 */ - 0x06, /* 01100000 */ - 0x06, /* 01100000 */ - 0x0f, /* 11110000 */ - 0x00, /* 00000000 */ - - /* - * 81 0x51 'Q' - */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x3b, /* 11011100 */ - 0x1e, /* 01111000 */ - 0x38, /* 00011100 */ - 0x00, /* 00000000 */ - - /* - * 82 0x52 'R' - */ - 0x3f, /* 11111100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3e, /* 01111100 */ - 0x36, /* 01101100 */ - 0x66, /* 01100110 */ - 0x67, /* 11100110 */ - 0x00, /* 00000000 */ - - /* - * 83 0x53 'S' - */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x07, /* 11100000 */ - 0x0e, /* 01110000 */ - 0x38, /* 00011100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 84 0x54 'T' - */ - 0x3f, /* 11111100 */ - 0x2d, /* 10110100 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 85 0x55 'U' - */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x3f, /* 11111100 */ - 0x00, /* 00000000 */ - - /* - * 86 0x56 'V' - */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x0c, /* 00110000 */ - 0x00, /* 00000000 */ - - /* - * 87 0x57 'W' - */ - 0x63, /* 11000110 */ - 0x63, /* 11000110 */ - 0x63, /* 11000110 */ - 0x6b, /* 11010110 */ - 0x7f, /* 11111110 */ - 0x77, /* 11101110 */ - 0x63, /* 11000110 */ - 0x00, /* 00000000 */ - - /* - * 88 0x58 'X' - */ - 0x63, /* 11000110 */ - 0x63, /* 11000110 */ - 0x36, /* 01101100 */ - 0x1c, /* 00111000 */ - 0x1c, /* 00111000 */ - 0x36, /* 01101100 */ - 0x63, /* 11000110 */ - 0x00, /* 00000000 */ - - /* - * 89 0x59 'Y' - */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 90 0x5a 'Z' - */ - 0x7f, /* 11111110 */ - 0x63, /* 11000110 */ - 0x31, /* 10001100 */ - 0x18, /* 00011000 */ - 0x4c, /* 00110010 */ - 0x66, /* 01100110 */ - 0x7f, /* 11111110 */ - 0x00, /* 00000000 */ - - /* - * 91 0x5b '[' - */ - 0x1e, /* 01111000 */ - 0x06, /* 01100000 */ - 0x06, /* 01100000 */ - 0x06, /* 01100000 */ - 0x06, /* 01100000 */ - 0x06, /* 01100000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 92 0x5c '\' - */ - 0x03, /* 11000000 */ - 0x06, /* 01100000 */ - 0x0c, /* 00110000 */ - 0x18, /* 00011000 */ - 0x30, /* 00001100 */ - 0x60, /* 00000110 */ - 0x40, /* 00000010 */ - 0x00, /* 00000000 */ - - /* - * 93 0x5d ']' - */ - 0x1e, /* 01111000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 94 0x5e '^' - */ - 0x08, /* 00010000 */ - 0x1c, /* 00111000 */ - 0x36, /* 01101100 */ - 0x63, /* 11000110 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 95 0x5f '_' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xff, /* 11111111 */ - - /* - * 96 0x60 '`' - */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 97 0x61 'a' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x30, /* 00001100 */ - 0x3e, /* 01111100 */ - 0x33, /* 11001100 */ - 0x6e, /* 01110110 */ - 0x00, /* 00000000 */ - - /* - * 98 0x62 'b' - */ - 0x07, /* 11100000 */ - 0x06, /* 01100000 */ - 0x06, /* 01100000 */ - 0x3e, /* 01111100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3b, /* 11011100 */ - 0x00, /* 00000000 */ - - /* - * 99 0x63 'c' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x03, /* 11000000 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 100 0x64 'd' - */ - 0x38, /* 00011100 */ - 0x30, /* 00001100 */ - 0x30, /* 00001100 */ - 0x3e, /* 01111100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x6e, /* 01110110 */ - 0x00, /* 00000000 */ - - /* - * 101 0x65 'e' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x3f, /* 11111100 */ - 0x03, /* 11000000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 102 0x66 'f' - */ - 0x1c, /* 00111000 */ - 0x36, /* 01101100 */ - 0x06, /* 01100000 */ - 0x0f, /* 11110000 */ - 0x06, /* 01100000 */ - 0x06, /* 01100000 */ - 0x0f, /* 11110000 */ - 0x00, /* 00000000 */ - - /* - * 103 0x67 'g' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x6e, /* 01110110 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x3e, /* 01111100 */ - 0x30, /* 00001100 */ - 0x1f, /* 11111000 */ - - /* - * 104 0x68 'h' - */ - 0x07, /* 11100000 */ - 0x06, /* 01100000 */ - 0x36, /* 01101100 */ - 0x6e, /* 01110110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x67, /* 11100110 */ - 0x00, /* 00000000 */ - - /* - * 105 0x69 'i' - */ - 0x0c, /* 00110000 */ - 0x00, /* 00000000 */ - 0x0e, /* 01110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 106 0x6a 'j' - */ - 0x30, /* 00001100 */ - 0x00, /* 00000000 */ - 0x30, /* 00001100 */ - 0x30, /* 00001100 */ - 0x30, /* 00001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - - /* - * 107 0x6b 'k' - */ - 0x07, /* 11100000 */ - 0x06, /* 01100000 */ - 0x66, /* 01100110 */ - 0x36, /* 01101100 */ - 0x1e, /* 01111000 */ - 0x36, /* 01101100 */ - 0x67, /* 11100110 */ - 0x00, /* 00000000 */ - - /* - * 108 0x6c 'l' - */ - 0x0e, /* 01110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 109 0x6d 'm' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x33, /* 11001100 */ - 0x7f, /* 11111110 */ - 0x7f, /* 11111110 */ - 0x6b, /* 11010110 */ - 0x63, /* 11000110 */ - 0x00, /* 00000000 */ - - /* - * 110 0x6e 'n' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x1f, /* 11111000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x00, /* 00000000 */ - - /* - * 111 0x6f 'o' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 112 0x70 'p' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x3b, /* 11011100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3e, /* 01111100 */ - 0x06, /* 01100000 */ - 0x0f, /* 11110000 */ - - /* - * 113 0x71 'q' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x6e, /* 01110110 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x3e, /* 01111100 */ - 0x30, /* 00001100 */ - 0x78, /* 00011110 */ - - /* - * 114 0x72 'r' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x3b, /* 11011100 */ - 0x6e, /* 01110110 */ - 0x66, /* 01100110 */ - 0x06, /* 01100000 */ - 0x0f, /* 11110000 */ - 0x00, /* 00000000 */ - - /* - * 115 0x73 's' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x3e, /* 01111100 */ - 0x03, /* 11000000 */ - 0x1e, /* 01111000 */ - 0x30, /* 00001100 */ - 0x1f, /* 11111000 */ - 0x00, /* 00000000 */ - - /* - * 116 0x74 't' - */ - 0x08, /* 00010000 */ - 0x0c, /* 00110000 */ - 0x3e, /* 01111100 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x2c, /* 00110100 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* - * 117 0x75 'u' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x6e, /* 01110110 */ - 0x00, /* 00000000 */ - - /* - * 118 0x76 'v' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x0c, /* 00110000 */ - 0x00, /* 00000000 */ - - /* - * 119 0x77 'w' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x63, /* 11000110 */ - 0x6b, /* 11010110 */ - 0x7f, /* 11111110 */ - 0x7f, /* 11111110 */ - 0x36, /* 01101100 */ - 0x00, /* 00000000 */ - - /* - * 120 0x78 'x' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x63, /* 11000110 */ - 0x36, /* 01101100 */ - 0x1c, /* 00111000 */ - 0x36, /* 01101100 */ - 0x63, /* 11000110 */ - 0x00, /* 00000000 */ - - /* - * 121 0x79 'y' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x3e, /* 01111100 */ - 0x30, /* 00001100 */ - 0x1f, /* 11111000 */ - - /* - * 122 0x7a 'z' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x3f, /* 11111100 */ - 0x19, /* 10011000 */ - 0x0c, /* 00110000 */ - 0x26, /* 01100100 */ - 0x3f, /* 11111100 */ - 0x00, /* 00000000 */ - - /* - * 123 0x7b '{' - */ - 0x38, /* 00011100 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x07, /* 11100000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x38, /* 00011100 */ - 0x00, /* 00000000 */ - - /* - * 124 0x7c '|' - */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* - * 125 0x7d '}' - */ - 0x07, /* 11100000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x38, /* 00011100 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x07, /* 11100000 */ - 0x00, /* 00000000 */ - - /* - * 126 0x7e '~' - */ - 0x6e, /* 01110110 */ - 0x3b, /* 11011100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 127 0x7f '^?' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 128 0x80 '€' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 129 0x81 '' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 130 0x82 '‚' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 131 0x83 'ƒ' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 132 0x84 '„' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 133 0x85 ' -' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 134 0x86 '†' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 135 0x87 '‡' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 136 0x88 'ˆ' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 137 0x89 '‰' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 138 0x8a 'Š' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 139 0x8b '‹' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 140 0x8c 'Œ' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 141 0x8d '' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 142 0x8e 'Ž' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 143 0x8f '' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 144 0x90 '' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 145 0x91 '‘' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 146 0x92 '’' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 147 0x93 '“' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 148 0x94 '”' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 149 0x95 '•' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 150 0x96 '–' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 151 0x97 '—' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 152 0x98 '˜' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 153 0x99 '™' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 154 0x9a 'š' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 155 0x9b '›' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 156 0x9c 'œ' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 157 0x9d '' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 158 0x9e 'ž' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 159 0x9f 'Ÿ' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 160 0xa0 ' ' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 161 0xa1 '¡' - */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* - * 162 0xa2 '¢' - */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x7e, /* 01111110 */ - 0x03, /* 11000000 */ - 0x03, /* 11000000 */ - 0x7e, /* 01111110 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - - /* - * 163 0xa3 '£' - */ - 0x1c, /* 00111000 */ - 0x36, /* 01101100 */ - 0x26, /* 01100100 */ - 0x0f, /* 11110000 */ - 0x06, /* 01100000 */ - 0x67, /* 11100110 */ - 0x3f, /* 11111100 */ - 0x00, /* 00000000 */ - - /* - * 164 0xa4 '¤' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x63, /* 11000110 */ - 0x3e, /* 01111100 */ - 0x36, /* 01101100 */ - 0x3e, /* 01111100 */ - 0x63, /* 11000110 */ - 0x00, /* 00000000 */ - - /* - * 165 0xa5 '¥' - */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x3f, /* 11111100 */ - 0x0c, /* 00110000 */ - 0x3f, /* 11111100 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - - /* - * 166 0xa6 '¦' - */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* - * 167 0xa7 '§' - */ - 0x7c, /* 00111110 */ - 0xc6, /* 01100011 */ - 0x1c, /* 00111000 */ - 0x36, /* 01101100 */ - 0x36, /* 01101100 */ - 0x1c, /* 00111000 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - - /* - * 168 0xa8 '¨' - */ - 0x33, /* 11001100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 169 0xa9 '©' - */ - 0x3c, /* 00111100 */ - 0x42, /* 01000010 */ - 0x99, /* 10011001 */ - 0x85, /* 10100001 */ - 0x85, /* 10100001 */ - 0x99, /* 10011001 */ - 0x42, /* 01000010 */ - 0x3c, /* 00111100 */ - - /* - * 170 0xaa 'ª' - */ - 0x3c, /* 00111100 */ - 0x36, /* 01101100 */ - 0x36, /* 01101100 */ - 0x7c, /* 00111110 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 171 0xab '«' - */ - 0x00, /* 00000000 */ - 0xcc, /* 00110011 */ - 0x66, /* 01100110 */ - 0x33, /* 11001100 */ - 0x66, /* 01100110 */ - 0xcc, /* 00110011 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 172 0xac '¬' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x3f, /* 11111100 */ - 0x30, /* 00001100 */ - 0x30, /* 00001100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 173 0xad '­' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 174 0xae '®' - */ - 0x3c, /* 00111100 */ - 0x42, /* 01000010 */ - 0x9d, /* 10111001 */ - 0xa5, /* 10100101 */ - 0x9d, /* 10111001 */ - 0xa5, /* 10100101 */ - 0x42, /* 01000010 */ - 0x3c, /* 00111100 */ - - /* - * 175 0xaf '¯' - */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 176 0xb0 '°' - */ - 0x1c, /* 00111000 */ - 0x36, /* 01101100 */ - 0x36, /* 01101100 */ - 0x1c, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 177 0xb1 '±' - */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x7e, /* 01111110 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - - /* - * 178 0xb2 '²' - */ - 0x1c, /* 00111000 */ - 0x30, /* 00001100 */ - 0x18, /* 00011000 */ - 0x0c, /* 00110000 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 179 0xb3 '³' - */ - 0x1c, /* 00111000 */ - 0x30, /* 00001100 */ - 0x18, /* 00011000 */ - 0x30, /* 00001100 */ - 0x1c, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 180 0xb4 '´' - */ - 0x18, /* 00011000 */ - 0x0c, /* 00110000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 181 0xb5 'µ' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3e, /* 01111100 */ - 0x06, /* 01100000 */ - 0x03, /* 11000000 */ - - /* - * 182 0xb6 '¶' - */ - 0xfe, /* 01111111 */ - 0xdb, /* 11011011 */ - 0xdb, /* 11011011 */ - 0xde, /* 01111011 */ - 0xd8, /* 00011011 */ - 0xd8, /* 00011011 */ - 0xd8, /* 00011011 */ - 0x00, /* 00000000 */ - - /* - * 183 0xb7 '·' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 184 0xb8 '¸' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x30, /* 00001100 */ - 0x1e, /* 01111000 */ - - /* - * 185 0xb9 '¹' - */ - 0x08, /* 00010000 */ - 0x0c, /* 00110000 */ - 0x08, /* 00010000 */ - 0x1c, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 186 0xba 'º' - */ - 0x1c, /* 00111000 */ - 0x36, /* 01101100 */ - 0x36, /* 01101100 */ - 0x1c, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 187 0xbb '»' - */ - 0x00, /* 00000000 */ - 0x33, /* 11001100 */ - 0x66, /* 01100110 */ - 0xcc, /* 00110011 */ - 0x66, /* 01100110 */ - 0x33, /* 11001100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 188 0xbc '¼' - */ - 0xc3, /* 11000011 */ - 0x63, /* 11000110 */ - 0x33, /* 11001100 */ - 0xbd, /* 10111101 */ - 0xec, /* 00110111 */ - 0xf6, /* 01101111 */ - 0xf3, /* 11001111 */ - 0x03, /* 11000000 */ - - /* - * 189 0xbd '½' - */ - 0xc3, /* 11000011 */ - 0x63, /* 11000110 */ - 0x33, /* 11001100 */ - 0x7b, /* 11011110 */ - 0xcc, /* 00110011 */ - 0x66, /* 01100110 */ - 0x33, /* 11001100 */ - 0xf0, /* 00001111 */ - - /* - * 190 0xbe '¾' - */ - 0x03, /* 11000000 */ - 0xc4, /* 00100011 */ - 0x63, /* 11000110 */ - 0xb4, /* 00101101 */ - 0xdb, /* 11011011 */ - 0xac, /* 00110101 */ - 0xe6, /* 01100111 */ - 0x80, /* 00000001 */ - - /* - * 191 0xbf '¿' - */ - 0x0c, /* 00110000 */ - 0x00, /* 00000000 */ - 0x0c, /* 00110000 */ - 0x06, /* 01100000 */ - 0x03, /* 11000000 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 192 0xc0 'À' - */ - 0x07, /* 11100000 */ - 0x00, /* 00000000 */ - 0x1c, /* 00111000 */ - 0x36, /* 01101100 */ - 0x63, /* 11000110 */ - 0x7f, /* 11111110 */ - 0x63, /* 11000110 */ - 0x00, /* 00000000 */ - - /* - * 193 0xc1 'Á' - */ - 0x70, /* 00001110 */ - 0x00, /* 00000000 */ - 0x1c, /* 00111000 */ - 0x36, /* 01101100 */ - 0x63, /* 11000110 */ - 0x7f, /* 11111110 */ - 0x63, /* 11000110 */ - 0x00, /* 00000000 */ - - /* - * 194 0xc2 'Â' - */ - 0x1c, /* 00111000 */ - 0x36, /* 01101100 */ - 0x00, /* 00000000 */ - 0x3e, /* 01111100 */ - 0x63, /* 11000110 */ - 0x7f, /* 11111110 */ - 0x63, /* 11000110 */ - 0x00, /* 00000000 */ - - /* - * 195 0xc3 'Ã' - */ - 0x6e, /* 01110110 */ - 0x3b, /* 11011100 */ - 0x00, /* 00000000 */ - 0x3e, /* 01111100 */ - 0x63, /* 11000110 */ - 0x7f, /* 11111110 */ - 0x63, /* 11000110 */ - 0x00, /* 00000000 */ - - /* - * 196 0xc4 'Ä' - */ - 0x63, /* 11000110 */ - 0x1c, /* 00111000 */ - 0x36, /* 01101100 */ - 0x63, /* 11000110 */ - 0x7f, /* 11111110 */ - 0x63, /* 11000110 */ - 0x63, /* 11000110 */ - 0x00, /* 00000000 */ - - /* - * 197 0xc5 'Å' - */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x3f, /* 11111100 */ - 0x33, /* 11001100 */ - 0x00, /* 00000000 */ - - /* - * 198 0xc6 'Æ' - */ - 0x7c, /* 00111110 */ - 0x36, /* 01101100 */ - 0x33, /* 11001100 */ - 0x7f, /* 11111110 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x73, /* 11001110 */ - 0x00, /* 00000000 */ - - /* - * 199 0xc7 'Ç' - */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x03, /* 11000000 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x18, /* 00011000 */ - 0x30, /* 00001100 */ - 0x1e, /* 01111000 */ - - /* - * 200 0xc8 'È' - */ - 0x07, /* 11100000 */ - 0x00, /* 00000000 */ - 0x3f, /* 11111100 */ - 0x06, /* 01100000 */ - 0x1e, /* 01111000 */ - 0x06, /* 01100000 */ - 0x3f, /* 11111100 */ - 0x00, /* 00000000 */ - - /* - * 201 0xc9 'É' - */ - 0x38, /* 00011100 */ - 0x00, /* 00000000 */ - 0x3f, /* 11111100 */ - 0x06, /* 01100000 */ - 0x1e, /* 01111000 */ - 0x06, /* 01100000 */ - 0x3f, /* 11111100 */ - 0x00, /* 00000000 */ - - /* - * 202 0xca 'Ê' - */ - 0x0c, /* 00110000 */ - 0x12, /* 01001000 */ - 0x3f, /* 11111100 */ - 0x06, /* 01100000 */ - 0x1e, /* 01111000 */ - 0x06, /* 01100000 */ - 0x3f, /* 11111100 */ - 0x00, /* 00000000 */ - - /* - * 203 0xcb 'Ë' - */ - 0x36, /* 01101100 */ - 0x00, /* 00000000 */ - 0x3f, /* 11111100 */ - 0x06, /* 01100000 */ - 0x1e, /* 01111000 */ - 0x06, /* 01100000 */ - 0x3f, /* 11111100 */ - 0x00, /* 00000000 */ - - /* - * 204 0xcc 'Ì' - */ - 0x07, /* 11100000 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 205 0xcd 'Í' - */ - 0x38, /* 00011100 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 206 0xce 'Î' - */ - 0x0c, /* 00110000 */ - 0x12, /* 01001000 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 207 0xcf 'Ï' - */ - 0x33, /* 11001100 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 208 0xd0 'Ð' - */ - 0x3f, /* 11111100 */ - 0x66, /* 01100110 */ - 0x6f, /* 11110110 */ - 0x6f, /* 11110110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3f, /* 11111100 */ - 0x00, /* 00000000 */ - - /* - * 209 0xd1 'Ñ' - */ - 0x3f, /* 11111100 */ - 0x00, /* 00000000 */ - 0x33, /* 11001100 */ - 0x37, /* 11101100 */ - 0x3f, /* 11111100 */ - 0x3b, /* 11011100 */ - 0x33, /* 11001100 */ - 0x00, /* 00000000 */ - - /* - * 210 0xd2 'Ò' - */ - 0x0e, /* 01110000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* - * 211 0xd3 'Ó' - */ - 0x70, /* 00001110 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* - * 212 0xd4 'Ô' - */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* - * 213 0xd5 'Õ' - */ - 0x6e, /* 01110110 */ - 0x3b, /* 11011100 */ - 0x00, /* 00000000 */ - 0x3e, /* 01111100 */ - 0x63, /* 11000110 */ - 0x63, /* 11000110 */ - 0x3e, /* 01111100 */ - 0x00, /* 00000000 */ - - /* - * 214 0xd6 'Ö' - */ - 0xc3, /* 11000011 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* - * 215 0xd7 '×' - */ - 0x00, /* 00000000 */ - 0x36, /* 01101100 */ - 0x1c, /* 00111000 */ - 0x08, /* 00010000 */ - 0x1c, /* 00111000 */ - 0x36, /* 01101100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* - * 216 0xd8 'Ø' - */ - 0x5c, /* 00111010 */ - 0x36, /* 01101100 */ - 0x73, /* 11001110 */ - 0x7b, /* 11011110 */ - 0x6f, /* 11110110 */ - 0x36, /* 01101100 */ - 0x1d, /* 10111000 */ - 0x00, /* 00000000 */ - - /* - * 217 0xd9 'Ù' - */ - 0x0e, /* 01110000 */ - 0x00, /* 00000000 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* - * 218 0xda 'Ú' - */ - 0x70, /* 00001110 */ - 0x00, /* 00000000 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* - * 219 0xdb 'Û' - */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0x00, /* 00000000 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* - * 220 0xdc 'Ü' - */ - 0x33, /* 11001100 */ - 0x00, /* 00000000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 221 0xdd 'Ý' - */ - 0x70, /* 00001110 */ - 0x00, /* 00000000 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* - * 222 0xde 'Þ' - */ - 0x0f, /* 11110000 */ - 0x06, /* 01100000 */ - 0x3e, /* 01111100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3e, /* 01111100 */ - 0x06, /* 01100000 */ - 0x0f, /* 11110000 */ - - /* - * 223 0xdf 'ß' - */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x1f, /* 11111000 */ - 0x33, /* 11001100 */ - 0x1f, /* 11111000 */ - 0x03, /* 11000000 */ - 0x03, /* 11000000 */ - - /* - * 224 0xe0 'à' - */ - 0x07, /* 11100000 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x30, /* 00001100 */ - 0x3e, /* 01111100 */ - 0x33, /* 11001100 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - - /* - * 225 0xe1 'á' - */ - 0x38, /* 00011100 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x30, /* 00001100 */ - 0x3e, /* 01111100 */ - 0x33, /* 11001100 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - - /* - * 226 0xe2 'â' - */ - 0x7e, /* 01111110 */ - 0xc3, /* 11000011 */ - 0x3c, /* 00111100 */ - 0x60, /* 00000110 */ - 0x7c, /* 00111110 */ - 0x66, /* 01100110 */ - 0xfc, /* 00111111 */ - 0x00, /* 00000000 */ - - /* - * 227 0xe3 'ã' - */ - 0x6e, /* 01110110 */ - 0x3b, /* 11011100 */ - 0x1e, /* 01111000 */ - 0x30, /* 00001100 */ - 0x3e, /* 01111100 */ - 0x33, /* 11001100 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - - /* - * 228 0xe4 'ä' - */ - 0x33, /* 11001100 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x30, /* 00001100 */ - 0x3e, /* 01111100 */ - 0x33, /* 11001100 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - - /* - * 229 0xe5 'å' - */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x1e, /* 01111000 */ - 0x30, /* 00001100 */ - 0x3e, /* 01111100 */ - 0x33, /* 11001100 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - - /* - * 230 0xe6 'æ' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xfe, /* 01111111 */ - 0x30, /* 00001100 */ - 0xfe, /* 01111111 */ - 0x33, /* 11001100 */ - 0xfe, /* 01111111 */ - 0x00, /* 00000000 */ - - /* - * 231 0xe7 'ç' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x03, /* 11000000 */ - 0x03, /* 11000000 */ - 0x1e, /* 01111000 */ - 0x30, /* 00001100 */ - 0x1c, /* 00111000 */ - - /* - * 232 0xe8 'è' - */ - 0x07, /* 11100000 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x3f, /* 11111100 */ - 0x03, /* 11000000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 233 0xe9 'é' - */ - 0x38, /* 00011100 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x3f, /* 11111100 */ - 0x03, /* 11000000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 234 0xea 'ê' - */ - 0x7e, /* 01111110 */ - 0xc3, /* 11000011 */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0x7e, /* 01111110 */ - 0x06, /* 01100000 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* - * 235 0xeb 'ë' - */ - 0x33, /* 11001100 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x3f, /* 11111100 */ - 0x03, /* 11000000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 236 0xec 'ì' - */ - 0x07, /* 11100000 */ - 0x00, /* 00000000 */ - 0x0e, /* 01110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 237 0xed 'í' - */ - 0x1c, /* 00111000 */ - 0x00, /* 00000000 */ - 0x0e, /* 01110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 238 0xee 'î' - */ - 0x3e, /* 01111100 */ - 0x63, /* 11000110 */ - 0x1c, /* 00111000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* - * 239 0xef 'ï' - */ - 0x33, /* 11001100 */ - 0x00, /* 00000000 */ - 0x0e, /* 01110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x0c, /* 00110000 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 240 0xf0 'ð' - */ - 0x1b, /* 11011000 */ - 0x0e, /* 01110000 */ - 0x1b, /* 11011000 */ - 0x30, /* 00001100 */ - 0x3e, /* 01111100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 241 0xf1 'ñ' - */ - 0x00, /* 00000000 */ - 0x1f, /* 11111000 */ - 0x00, /* 00000000 */ - 0x1f, /* 11111000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x00, /* 00000000 */ - - /* - * 242 0xf2 'ò' - */ - 0x00, /* 00000000 */ - 0x07, /* 11100000 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 243 0xf3 'ó' - */ - 0x00, /* 00000000 */ - 0x38, /* 00011100 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 244 0xf4 'ô' - */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 245 0xf5 'õ' - */ - 0x6e, /* 01110110 */ - 0x3b, /* 11011100 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 246 0xf6 'ö' - */ - 0x00, /* 00000000 */ - 0x33, /* 11001100 */ - 0x00, /* 00000000 */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x1e, /* 01111000 */ - 0x00, /* 00000000 */ - - /* - * 247 0xf7 '÷' - */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* - * 248 0xf8 'ø' - */ - 0x00, /* 00000000 */ - 0x60, /* 00000110 */ - 0x3c, /* 00111100 */ - 0x76, /* 01101110 */ - 0x7e, /* 01111110 */ - 0x6e, /* 01110110 */ - 0x3c, /* 00111100 */ - 0x06, /* 01100000 */ - - /* - * 249 0xf9 'ù' - */ - 0x00, /* 00000000 */ - 0x07, /* 11100000 */ - 0x00, /* 00000000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - - /* - * 250 0xfa 'ú' - */ - 0x00, /* 00000000 */ - 0x38, /* 00011100 */ - 0x00, /* 00000000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - - /* - * 251 0xfb 'û' - */ - 0x1e, /* 01111000 */ - 0x33, /* 11001100 */ - 0x00, /* 00000000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - - /* - * 252 0xfc 'ü' - */ - 0x00, /* 00000000 */ - 0x33, /* 11001100 */ - 0x00, /* 00000000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - - /* - * 253 0xfd 'ý' - */ - 0x00, /* 00000000 */ - 0x38, /* 00011100 */ - 0x00, /* 00000000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x3e, /* 01111100 */ - 0x30, /* 00001100 */ - 0x1f, /* 11111000 */ - - /* - * 254 0xfe 'þ' - */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x06, /* 01100000 */ - 0x3e, /* 01111100 */ - 0x66, /* 01100110 */ - 0x3e, /* 01111100 */ - 0x06, /* 01100000 */ - 0x00, /* 00000000 */ - - /* - * 255 0xff 'ÿ' - */ - 0x00, /* 00000000 */ - 0x33, /* 11001100 */ - 0x00, /* 00000000 */ - 0x33, /* 11001100 */ - 0x33, /* 11001100 */ - 0x3e, /* 01111100 */ - 0x30, /* 00001100 */ - 0x1f, /* 11111000 */ - - /* - * 256 0x100 - missing character - */ - 0x55, /* 01010101 */ - 0xAA, /* 10101010 */ - 0x55, /* 01010101 */ - 0xAA, /* 10101010 */ - 0x55, /* 01010101 */ - 0xAA, /* 10101010 */ - 0x55, /* 01010101 */ - 0xAA, /* 10101010 */ -}; -SDL_COMPILE_TIME_ASSERT(SDLTest_FontDataSize, SDL_arraysize(SDLTest_FontData) == NUM_FONT_GLYPHS * 8); - -/* ---- Character */ - -struct SDLTest_CharTextureCache -{ - SDL_Renderer *renderer; - SDL_Texture *charTextureCache[NUM_FONT_GLYPHS]; - struct SDLTest_CharTextureCache *next; -}; - -/*! -List of per-renderer caches for 8x8 pixel font textures created at runtime. -*/ -static struct SDLTest_CharTextureCache *SDLTest_CharTextureCacheList; - -int FONT_CHARACTER_SIZE = 8; +int FONT_CHARACTER_SIZE = SDL_DEBUG_TEXT_FONT_CHARACTER_SIZE; bool SDLTest_DrawCharacter(SDL_Renderer *renderer, float x, float y, Uint32 c) { - const Uint32 charWidth = FONT_CHARACTER_SIZE; - const Uint32 charHeight = FONT_CHARACTER_SIZE; - SDL_FRect srect; - SDL_FRect drect; - bool result; - Uint32 ix, iy; - const unsigned char *charpos; - Uint32 *curpos; - Uint8 *linepos; - Uint32 pitch; - SDL_Surface *character; - Uint32 ci; - Uint8 r, g, b, a; - struct SDLTest_CharTextureCache *cache; - - /* - * Setup source rectangle - */ - srect.x = 0.0f; - srect.y = 0.0f; - srect.w = 8.0f; - srect.h = 8.0f; - - /* - * Setup destination rectangle - */ - drect.x = x; - drect.y = y; - drect.w = (float)charWidth; - drect.h = (float)charHeight; - - /* Character index in cache */ - ci = c; - if (ci >= NUM_FONT_GLYPHS) { - ci = (NUM_FONT_GLYPHS - 1); - } - - /* Search for this renderer's cache */ - for (cache = SDLTest_CharTextureCacheList; cache; cache = cache->next) { - if (cache->renderer == renderer) { - break; - } - } - - /* Allocate a new cache for this renderer if needed */ - if (!cache) { - cache = (struct SDLTest_CharTextureCache *)SDL_calloc(1, sizeof(struct SDLTest_CharTextureCache)); - cache->renderer = renderer; - cache->next = SDLTest_CharTextureCacheList; - SDLTest_CharTextureCacheList = cache; - } - - /* - * Create new charWidth x charHeight bitmap surface if not already present. - */ - if (cache->charTextureCache[ci] == NULL) { - /* - * Redraw character into surface - */ - character = SDL_CreateSurface(charWidth, charHeight, SDL_PIXELFORMAT_RGBA8888); - if (!character) { - return false; - } - - charpos = SDLTest_FontData + ci * 8; - linepos = (Uint8 *)character->pixels; - pitch = character->pitch; - - /* - * Drawing loop - */ - for (iy = 0; iy < charWidth; iy++) { - curpos = (Uint32 *)linepos; - for (ix = 0; ix < charWidth; ix++) { - if ((*charpos) & (1 << ix)) { - *curpos = 0xffffffff; - } else { - *curpos = 0; - } - ++curpos; - } - linepos += pitch; - ++charpos; - } - - /* Convert temp surface into texture */ - cache->charTextureCache[ci] = SDL_CreateTextureFromSurface(renderer, character); - SDL_DestroySurface(character); - - /* - * Check pointer - */ - if (cache->charTextureCache[ci] == NULL) { - return false; - } - } - - /* - * Set color - */ - result = true; - result &= SDL_GetRenderDrawColor(renderer, &r, &g, &b, &a); - result &= SDL_SetTextureColorMod(cache->charTextureCache[ci], r, g, b); - result &= SDL_SetTextureAlphaMod(cache->charTextureCache[ci], a); - - /* - * Draw texture onto destination - */ - result &= SDL_RenderTexture(renderer, cache->charTextureCache[ci], &srect, &drect); - - return result; + char str[5]; + char *ptr = SDL_UCS4ToUTF8(c, str); + *ptr = '\0'; + return SDL_RenderDebugText(renderer, x, y, str); } -/* Gets a unicode value from a UTF-8 encoded string - * Outputs increment to advance the string */ -#define UNKNOWN_UNICODE 0xFFFD -static Uint32 UTF8_getch(const char *src, size_t srclen, int *inc) -{ - const Uint8 *p = (const Uint8 *)src; - size_t left = 0; - size_t save_srclen = srclen; - bool overlong = false; - bool underflow = false; - Uint32 ch = UNKNOWN_UNICODE; - - if (srclen == 0) { - return UNKNOWN_UNICODE; - } - if (p[0] >= 0xFC) { - if ((p[0] & 0xFE) == 0xFC) { - if (p[0] == 0xFC && (p[1] & 0xFC) == 0x80) { - overlong = true; - } - ch = (Uint32)(p[0] & 0x01); - left = 5; - } - } else if (p[0] >= 0xF8) { - if ((p[0] & 0xFC) == 0xF8) { - if (p[0] == 0xF8 && (p[1] & 0xF8) == 0x80) { - overlong = true; - } - ch = (Uint32)(p[0] & 0x03); - left = 4; - } - } else if (p[0] >= 0xF0) { - if ((p[0] & 0xF8) == 0xF0) { - if (p[0] == 0xF0 && (p[1] & 0xF0) == 0x80) { - overlong = true; - } - ch = (Uint32)(p[0] & 0x07); - left = 3; - } - } else if (p[0] >= 0xE0) { - if ((p[0] & 0xF0) == 0xE0) { - if (p[0] == 0xE0 && (p[1] & 0xE0) == 0x80) { - overlong = true; - } - ch = (Uint32)(p[0] & 0x0F); - left = 2; - } - } else if (p[0] >= 0xC0) { - if ((p[0] & 0xE0) == 0xC0) { - if ((p[0] & 0xDE) == 0xC0) { - overlong = true; - } - ch = (Uint32)(p[0] & 0x1F); - left = 1; - } - } else { - if (!(p[0] & 0x80)) { - ch = (Uint32)p[0]; - } - } - --srclen; - while (left > 0 && srclen > 0) { - ++p; - if ((p[0] & 0xC0) != 0x80) { - ch = UNKNOWN_UNICODE; - break; - } - ch <<= 6; - ch |= (p[0] & 0x3F); - --srclen; - --left; - } - if (left > 0) { - underflow = true; - } - - if (overlong || underflow || - (ch >= 0xD800 && ch <= 0xDFFF) || - (ch == 0xFFFE || ch == 0xFFFF) || ch > 0x10FFFF) { - ch = UNKNOWN_UNICODE; - } - - *inc = (int)(save_srclen - srclen); - - return ch; -} - -#define UTF8_IsTrailingByte(c) ((c) >= 0x80 && (c) <= 0xBF) - bool SDLTest_DrawString(SDL_Renderer *renderer, float x, float y, const char *s) { - const Uint32 charWidth = FONT_CHARACTER_SIZE; - bool result = true; - float curx = x; - float cury = y; - size_t len = SDL_strlen(s); - - while (len > 0 && result) { - int advance = 0; - Uint32 ch = UTF8_getch(s, len, &advance); - result &= SDLTest_DrawCharacter(renderer, curx, cury, ch); - curx += charWidth; - s += advance; - len -= advance; - } - - return result; + return SDL_RenderDebugText(renderer, x, y, s); } SDLTest_TextWindow *SDLTest_TextWindowCreate(float x, float y, float w, float h) @@ -3485,22 +156,4 @@ void SDLTest_TextWindowDestroy(SDLTest_TextWindow *textwin) void SDLTest_CleanupTextDrawing(void) { - unsigned int i; - struct SDLTest_CharTextureCache *cache, *next; - - cache = SDLTest_CharTextureCacheList; - while (cache) { - for (i = 0; i < SDL_arraysize(cache->charTextureCache); ++i) { - if (cache->charTextureCache[i]) { - SDL_DestroyTexture(cache->charTextureCache[i]); - cache->charTextureCache[i] = NULL; - } - } - - next = cache->next; - SDL_free(cache); - cache = next; - } - - SDLTest_CharTextureCacheList = NULL; }