From ac89e880a7046fffed88397f16d63dc0d394bb44 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Mon, 22 Apr 2019 05:21:35 +0200 Subject: [PATCH 01/29] font: start to rework --- src/lv_draw/lv_draw_basic.c | 2 +- src/lv_fonts/lv_font_dejavu_20.c | 9122 +----------------------------- src/lv_misc/lv_font.c | 111 +- src/lv_misc/lv_font.h | 39 +- 4 files changed, 92 insertions(+), 9182 deletions(-) diff --git a/src/lv_draw/lv_draw_basic.c b/src/lv_draw/lv_draw_basic.c index 144fc4733..958fcac55 100644 --- a/src/lv_draw/lv_draw_basic.c +++ b/src/lv_draw/lv_draw_basic.c @@ -273,7 +273,7 @@ void lv_draw_letter(const lv_point_t * pos_p, const lv_area_t * mask_p, const lv default: return; /*Invalid bpp. Can't render the letter*/ } - const uint8_t * map_p = lv_font_get_bitmap(font_p, letter); + const uint8_t * map_p = lv_font_get_glyph_bitmap(font_p, letter); if(map_p == NULL) return; diff --git a/src/lv_fonts/lv_font_dejavu_20.c b/src/lv_fonts/lv_font_dejavu_20.c index de3f09ad5..597d0417d 100644 --- a/src/lv_fonts/lv_font_dejavu_20.c +++ b/src/lv_fonts/lv_font_dejavu_20.c @@ -1,7 +1,7 @@ #include "../lv_misc/lv_font.h" -#if LV_USE_FONT_DEJAVU_20 != 0 /*Can be enabled in lv_conf.h*/ +#if USE_LV_FONT_DEJAVU_20 != 0 /*Can be enabled in lv_conf.h*/ /*********************************************************************************** * DejaVuSans.ttf 20 px Font in U+0020 ( ) .. U+007e (~) range with 1 bpp @@ -9,402 +9,11 @@ /*Store the image of the letters (glyph)*/ static const uint8_t lv_font_dejavu_20_glyph_bitmap[] = { -#if LV_USE_FONT_DEJAVU_20 == 1 /*Unicode: U+0020 ( ) , Width: 6 */ - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - - - /*Unicode: U+0021 (!) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0x00, //.. - 0x00, //.. - 0xc0, //@@ - 0xc0, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+0022 (") , Width: 6 */ - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0xcc, //@@..@@ - 0xcc, //@@..@@ - 0xcc, //@@..@@ - 0xcc, //@@..@@ - 0xcc, //@@..@@ - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - - - /*Unicode: U+0023 (#) , Width: 12 */ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x04, 0x40, //.....@..+@.. - 0x04, 0x40, //....+@..+@.. - 0x0c, 0xc0, //....%@..%%.. - 0x0c, 0x80, //....@%..@+.. - 0x7f, 0xf0, //.@@@@@@@@@@@ - 0x7f, 0xf0, //.@@@@@@@@@@@ - 0x09, 0x80, //...+@..%@... - 0x19, 0x00, //...@%..@+... - 0xff, 0xe0, //@@@@@@@@@@@. - 0xff, 0xe0, //@@@@@@@@@@@. - 0x13, 0x00, //..+@..%@.... - 0x33, 0x00, //..%%..%%.... - 0x32, 0x00, //..@%..@+.... - 0x22, 0x00, //..@+..@..... - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - - - /*Unicode: U+0024 ($) , Width: 9 */ - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x08, 0x00, //....@.... - 0x08, 0x00, //....@.... - 0x3e, 0x00, //.+%@@@%.. - 0x7f, 0x00, //+@@@@@@@. - 0xe9, 0x00, //@@%.@.+@. - 0xc8, 0x00, //@@..@.... - 0xf8, 0x00, //%@@%@.... - 0x7e, 0x00, //.@@@@@@+. - 0x0f, 0x00, //...+@@@@+ - 0x09, 0x80, //....@.+@@ - 0x09, 0x80, //....@..@@ - 0x8b, 0x80, //@+..@.%@@ - 0xff, 0x00, //@@@@@@@@+ - 0x7e, 0x00, //.%@@@@%+. - 0x08, 0x00, //....@.... - 0x08, 0x00, //....@.... - 0x08, 0x00, //....@.... - 0x00, 0x00, //......... - - - /*Unicode: U+0025 (%) , Width: 15 */ - 0x00, 0x00, //............... - 0x00, 0x00, //............... - 0x00, 0x00, //............... - 0x78, 0x10, //.%@@%.....+@... - 0x48, 0x20, //+@++@+....@.... - 0xcc, 0x60, //@@..@@...%%.... - 0xcc, 0x40, //@@..@@...@..... - 0xcc, 0x80, //@@..@@..@+..... - 0xc8, 0x80, //+@++@+.+%...... - 0x79, 0x3c, //.%@@%..@..%@@%. - 0x02, 0x24, //......%+.+@++@+ - 0x02, 0x66, //.....+@..@@..@@ - 0x04, 0x66, //.....@...@@..@@ - 0x0c, 0x66, //....%%...@@..@@ - 0x08, 0x24, //....@....+@++@+ - 0x10, 0x3c, //...@+.....%@@%. - 0x00, 0x00, //............... - 0x00, 0x00, //............... - 0x00, 0x00, //............... - 0x00, 0x00, //............... - - - /*Unicode: U+0026 (&) , Width: 12 */ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x0f, 0x00, //...+@@@%+... - 0x1f, 0x80, //..+@@@@@@... - 0x30, 0x80, //..@@+..+%... - 0x30, 0x00, //..@@........ - 0x38, 0x00, //..%@%....... - 0x3c, 0x00, //..%@@%...... - 0x7e, 0x60, //.%@%@@%..@@. - 0xc7, 0x60, //%@+.+@@%+@%. - 0xc3, 0xc0, //@@...+@@@@.. - 0xc1, 0x80, //@@+...+@@+.. - 0xe1, 0xc0, //%@@+..+@@%.. - 0x7f, 0xe0, //.@@@@@@@@@%. - 0x3e, 0x70, //..%@@@%.+@@% - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - - - /*Unicode: U+0027 (') , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+0028 (() , Width: 4 */ - 0x00, //.... - 0x00, //.... - 0x30, //..%@ - 0x20, //..@+ - 0x60, //.%@. - 0x60, //.@%. - 0x40, //+@+. - 0xc0, //%@.. - 0xc0, //@@.. - 0xc0, //@@.. - 0xc0, //@@.. - 0xc0, //@@.. - 0xc0, //%@.. - 0x40, //+@+. - 0x60, //.@%. - 0x60, //.%@. - 0x20, //..@+ - 0x30, //..%@ - 0x00, //.... - 0x00, //.... - - - /*Unicode: U+0029 ()) , Width: 4 */ - 0x00, //.... - 0x00, //.... - 0xc0, //@%.. - 0x40, //+@.. - 0x60, //.@%. - 0x60, //.%@. - 0x20, //.+@+ - 0x30, //..@% - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@% - 0x20, //.+@+ - 0x60, //.%@. - 0x60, //.@%. - 0x40, //+@.. - 0xc0, //@%.. - 0x00, //.... - 0x00, //.... - - - /*Unicode: U+002a (*) , Width: 7 */ - 0x00, //....... - 0x00, //....... - 0x00, //....... - 0x10, //...@... - 0x92, //%..@..% - 0x54, //+@+@+@+ - 0x38, //..@@@.. - 0x38, //..@@@.. - 0x54, //+@+@+@+ - 0x92, //%..@..% - 0x10, //...@... - 0x00, //....... - 0x00, //....... - 0x00, //....... - 0x00, //....... - 0x00, //....... - 0x00, //....... - 0x00, //....... - 0x00, //....... - 0x00, //....... - - - /*Unicode: U+002b (+) , Width: 12 */ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0xff, 0xf0, //@@@@@@@@@@@@ - 0xff, 0xf0, //@@@@@@@@@@@@ - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - - - /*Unicode: U+002c (,) , Width: 3 */ - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x60, //.@@ - 0x60, //.@@ - 0x40, //+@. - 0x80, //@+. - 0x00, //... - 0x00, //... - - - /*Unicode: U+002d (-) , Width: 5 */ - 0x00, //..... - 0x00, //..... - 0x00, //..... - 0x00, //..... - 0x00, //..... - 0x00, //..... - 0x00, //..... - 0x00, //..... - 0x00, //..... - 0x00, //..... - 0xf8, //@@@@@ - 0xf8, //@@@@@ - 0x00, //..... - 0x00, //..... - 0x00, //..... - 0x00, //..... - 0x00, //..... - 0x00, //..... - 0x00, //..... - 0x00, //..... - - - /*Unicode: U+002e (.) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0xc0, //@@ - 0xc0, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+002f (/) , Width: 6 */ - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x0c, //....@@ - 0x0c, //...+@% - 0x18, //...%@+ - 0x18, //...@@. - 0x18, //...@@. - 0x38, //..+@%. - 0x30, //..@@+. - 0x30, //..@@.. - 0x30, //.+@@.. - 0x70, //.%@%.. - 0x60, //.@@+.. - 0x60, //.@@... - 0x60, //+@%... - 0xc0, //%@+... - 0xc0, //@@.... - 0x00, //...... - 0x00, //...... - - - /*Unicode: U+0030 (0) , Width: 9 */ - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x1c, 0x00, //..+@@@+.. - 0x7f, 0x00, //.%@@@@@%. - 0x63, 0x00, //+@@+.+@@+ - 0xc1, 0x80, //%@+...+@% - 0xc1, 0x80, //@@.....@@ - 0xc1, 0x80, //@@.....@@ - 0xc1, 0x80, //@@.....@@ - 0xc1, 0x80, //@@.....@@ - 0xc1, 0x80, //@@.....@@ - 0xc1, 0x80, //%@+...+@% - 0x63, 0x00, //+@@+.+@@+ - 0x7f, 0x00, //.%@@@@@%. - 0x3e, 0x00, //..+@@@+.. - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - /*Unicode: U+0031 (1) , Width: 8 */ - 0x00, //........ - 0x00, //........ - 0x00, //........ + + /*3 rows*/ 0x38, //.+@@@... 0xf8, //@@@@@... 0x98, //@+.@@... @@ -418,39 +27,11 @@ static const uint8_t lv_font_dejavu_20_glyph_bitmap[] = { 0x18, //...@@... 0xff, //@@@@@@@@ 0xff, //@@@@@@@@ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - - - /*Unicode: U+0032 (2) , Width: 9 */ - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x7c, 0x00, //.%@@@%... - 0xfe, 0x00, //@@@@@@@+. - 0x87, 0x00, //@+...@@@. - 0x03, 0x00, //......@@. - 0x03, 0x00, //......@@. - 0x06, 0x00, //.....%@+. - 0x06, 0x00, //....+@@.. - 0x0c, 0x00, //...+@@... - 0x18, 0x00, //..+@@+... - 0x30, 0x00, //.+@@+.... - 0x60, 0x00, //+@@+..... - 0xff, 0x00, //@@@@@@@@. - 0xff, 0x00, //@@@@@@@@. - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... + /*4 rows*/ /*Unicode: U+0033 (3) , Width: 9 */ - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... + /*3 rows*/ 0x7e, 0x00, //.%@@@@%.. 0xff, 0x00, //@@@@@@@@+ 0x83, 0x80, //@+....%@@ @@ -464,315 +45,11 @@ static const uint8_t lv_font_dejavu_20_glyph_bitmap[] = { 0x83, 0x80, //%+...+@@% 0xff, 0x00, //@@@@@@@@. 0x7e, 0x00, //.%@@@@%.. - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - - - /*Unicode: U+0034 (4) , Width: 10 */ - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x07, 0x00, //.....%@@.. - 0x07, 0x00, //....+@@@.. - 0x0b, 0x00, //....@+@@.. - 0x1b, 0x00, //...%@.@@.. - 0x13, 0x00, //..+@..@@.. - 0x23, 0x00, //..@+..@@.. - 0x63, 0x00, //.@@...@@.. - 0x43, 0x00, //+@....@@.. - 0xff, 0xc0, //@@@@@@@@@@ - 0xff, 0xc0, //@@@@@@@@@@ - 0x03, 0x00, //......@@.. - 0x03, 0x00, //......@@.. - 0x03, 0x00, //......@@.. - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - - - /*Unicode: U+0035 (5) , Width: 8 */ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x7e, //.@@@@@@. - 0x7e, //.@@@@@@. - 0x60, //.@@..... - 0x60, //.@@..... - 0x7c, //.@@@@@.. - 0x7e, //.@@@@@@. - 0x47, //.%...@@% - 0x03, //......@@ - 0x03, //......@@ - 0x03, //......@@ - 0x87, //%...+@@% - 0xfe, //@@@@@@@. - 0x7c, //.%@@@%.. - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - - - /*Unicode: U+0036 (6) , Width: 9 */ - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x1e, 0x00, //...%@@@+. - 0x3f, 0x00, //.+@@@@@@. - 0x71, 0x00, //.@@%...%. - 0xe0, 0x00, //+@@...... - 0xc0, 0x00, //@@+...... - 0xde, 0x00, //@@.%@@%.. - 0xff, 0x00, //@@%@@@@@. - 0xe3, 0x80, //@@%...%@% - 0xc1, 0x80, //@@.....@@ - 0xc1, 0x80, //%@.....@@ - 0x63, 0x80, //+@%...%@% - 0x7f, 0x00, //.%@@@@@@. - 0x1e, 0x00, //..+@@@%.. - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - - - /*Unicode: U+0037 (7) , Width: 8 */ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0xff, //@@@@@@@@ - 0xff, //@@@@@@@@ - 0x06, //.....%@+ - 0x06, //.....@@. - 0x06, //....+@@. - 0x0c, //....%@+. - 0x0c, //....@@.. - 0x0c, //....@@.. - 0x1c, //...%@%.. - 0x18, //...@@... - 0x18, //...@@... - 0x38, //..%@%... - 0x30, //..@@+... - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - - - /*Unicode: U+0038 (8) , Width: 9 */ - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x3e, 0x00, //.+%@@@%+. - 0x7f, 0x00, //+@@@@@@@+ - 0xe3, 0x80, //@@%...%@@ - 0xc1, 0x80, //@@.....@@ - 0xe3, 0x80, //%@%...%@% - 0x3e, 0x00, //.+@@@@@+. - 0x7f, 0x00, //.%@@@@@%. - 0xe3, 0x80, //%@%...%@% - 0xc1, 0x80, //@@.....@@ - 0xc1, 0x80, //@@.....@@ - 0xe3, 0x80, //@@%...%@@ - 0x7f, 0x00, //+@@@@@@@+ - 0x3e, 0x00, //..%@@@%.. - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - - - /*Unicode: U+0039 (9) , Width: 9 */ - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x3c, 0x00, //..%@@@+.. - 0x7f, 0x00, //.@@@@@@%. - 0xe3, 0x00, //%@%...%@. - 0xc1, 0x80, //@@.....@% - 0xc1, 0x80, //@@.....@@ - 0xe3, 0x80, //%@%...%@@ - 0x7f, 0x80, //.@@@@@%@@ - 0x3d, 0x80, //..%@@%.@@ - 0x01, 0x80, //......+@@ - 0x03, 0x00, //......@@+ - 0x47, 0x00, //.%...%@@. - 0x7e, 0x00, //.@@@@@@+. - 0x3c, 0x00, //.+@@@%... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - - - /*Unicode: U+003a (:) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0xc0, //@@ - 0xc0, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0xc0, //@@ - 0xc0, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+003b (;) , Width: 3 */ - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x60, //.@@ - 0x60, //.@@ - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x60, //.@@ - 0x60, //.@@ - 0x40, //+@. - 0x80, //@+. - 0x00, //... - 0x00, //... - - - /*Unicode: U+003c (<) , Width: 11 */ - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x20, //.........+@ - 0x01, 0xe0, //.......%@@@ - 0x07, 0xc0, //....+@@@@%+ - 0x3e, 0x00, //.+%@@@@+... - 0xf8, 0x00, //@@@@%+..... - 0xf8, 0x00, //@@@@%+..... - 0x3e, 0x00, //.+%@@@@+... - 0x07, 0xc0, //....+@@@@%+ - 0x01, 0xe0, //......+%@@@ - 0x00, 0x20, //.........+@ - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - - - /*Unicode: U+003d (=) , Width: 11 */ - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0xff, 0xe0, //@@@@@@@@@@@ - 0xff, 0xe0, //@@@@@@@@@@@ - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0xff, 0xe0, //@@@@@@@@@@@ - 0xff, 0xe0, //@@@@@@@@@@@ - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - - - /*Unicode: U+003e (>) , Width: 11 */ - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x80, 0x00, //@+......... - 0xf0, 0x00, //@@@%....... - 0x7c, 0x00, //+%@@@@+.... - 0x0f, 0x80, //...+@@@@%+. - 0x03, 0xe0, //.....+%@@@@ - 0x03, 0xe0, //.....+%@@@@ - 0x0f, 0x80, //...+@@@@%+. - 0x7c, 0x00, //+%@@@@+.... - 0xf0, 0x00, //@@@%+...... - 0x80, 0x00, //@+......... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - - - /*Unicode: U+003f (?) , Width: 7 */ - 0x00, //....... - 0x00, //....... - 0x00, //....... - 0x78, //.%@@@+. - 0xfc, //@@@@@@+ - 0x8e, //@+..%@@ - 0x06, //.....@@ - 0x06, //....+@% - 0x0c, //....@@. - 0x18, //...@@.. - 0x30, //..@@... - 0x30, //..@@... - 0x30, //..@@... - 0x00, //....... - 0x30, //..@@... - 0x30, //..@@... - 0x00, //....... - 0x00, //....... - 0x00, //....... - 0x00, //....... - - - /*Unicode: U+0040 (@) , Width: 16 */ - 0x00, 0x00, //................ - 0x00, 0x00, //................ - 0x00, 0x00, //................ - 0x07, 0xe0, //.....%@@@@%+.... - 0x1f, 0xf8, //...%@@@@@@@@@+.. - 0x3c, 0x1c, //..%@@%....+%@@+. - 0x70, 0x06, //.%@@........+@@. - 0x60, 0x03, //.@@..........+@% - 0xe3, 0x63, //%@%...@@.@@...@@ - 0xc7, 0xe3, //@@...%@@@@@...@@ - 0xc6, 0x63, //@@...@@..@@..+@@ - 0xc6, 0x66, //@@...@@..@@.+@@+ - 0xc7, 0xfc, //@@...%@@@@@@@@+. - 0xe3, 0x70, //%@%...@@.@@%+... - 0x60, 0x00, //.@@............. - 0x70, 0x00, //.%@@............ - 0x3c, 0x30, //..@@@+....+@.... - 0x1f, 0xf0, //...%@@@@@@@@.... - 0x07, 0xc0, //....+%@@@%+..... - 0x00, 0x00, //................ + /*4 rows*/ /*Unicode: U+0041 (A) , Width: 12 */ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ + /*3 rows*/ 0x06, 0x00, //.....@@..... 0x06, 0x00, //....+@@+.... 0x0f, 0x00, //....@@@@.... @@ -786,732 +63,11 @@ static const uint8_t lv_font_dejavu_20_glyph_bitmap[] = { 0x60, 0x60, //.@@......@@. 0x60, 0x60, //+@%......%@+ 0xc0, 0x30, //@@+......+@@ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - - - /*Unicode: U+0042 (B) , Width: 9 */ - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0xfc, 0x00, //@@@@@@+.. - 0xff, 0x00, //@@@@@@@%. - 0xc3, 0x00, //@@...+@@. - 0xc3, 0x00, //@@....@@. - 0xc3, 0x00, //@@...+@%. - 0xfe, 0x00, //@@@@@@%.. - 0xfe, 0x00, //@@@@@@@+. - 0xc3, 0x00, //@@....%@+ - 0xc1, 0x80, //@@.....@@ - 0xc1, 0x80, //@@.....@@ - 0xc3, 0x80, //@@....%@@ - 0xff, 0x00, //@@@@@@@@+ - 0xfe, 0x00, //@@@@@@%.. - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - - - /*Unicode: U+0043 (C) , Width: 11 */ - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x0f, 0xc0, //...+%@@@@%. - 0x3f, 0xe0, //..@@@@@@@@@ - 0x70, 0x20, //.@@@+....+@ - 0x60, 0x00, //+@@........ - 0xc0, 0x00, //%@+........ - 0xc0, 0x00, //@@......... - 0xc0, 0x00, //@@......... - 0xc0, 0x00, //@@......... - 0xc0, 0x00, //%@+........ - 0x60, 0x00, //+@@........ - 0x70, 0x20, //.@@@+....+@ - 0x3f, 0xe0, //..@@@@@@@@@ - 0x0f, 0xc0, //...+%@@@@%. - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - - - /*Unicode: U+0044 (D) , Width: 11 */ - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0xfe, 0x00, //@@@@@@%+... - 0xff, 0x80, //@@@@@@@@@.. - 0xc1, 0xc0, //@@....+@@@. - 0xc0, 0xc0, //@@......@@+ - 0xc0, 0x60, //@@......+@@ - 0xc0, 0x60, //@@.......@@ - 0xc0, 0x60, //@@.......@@ - 0xc0, 0x60, //@@.......@@ - 0xc0, 0x60, //@@......+@@ - 0xc0, 0xc0, //@@......@@+ - 0xc1, 0xc0, //@@....+@@@. - 0xff, 0x80, //@@@@@@@@@.. - 0xfe, 0x00, //@@@@@@%+... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - - - /*Unicode: U+0045 (E) , Width: 8 */ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0xff, //@@@@@@@@ - 0xff, //@@@@@@@@ - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xff, //@@@@@@@@ - 0xff, //@@@@@@@@ - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xff, //@@@@@@@@ - 0xff, //@@@@@@@@ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - - - /*Unicode: U+0046 (F) , Width: 8 */ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0xff, //@@@@@@@@ - 0xff, //@@@@@@@@ - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xfe, //@@@@@@@. - 0xfe, //@@@@@@@. - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - - - /*Unicode: U+0047 (G) , Width: 11 */ - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x0f, 0xc0, //...+%@@@@%. - 0x3f, 0xe0, //..@@@@@@@@@ - 0x70, 0x20, //.@@@+....+@ - 0x60, 0x00, //+@@........ - 0xc0, 0x00, //%@+........ - 0xc3, 0xe0, //@@....@@@@@ - 0xc3, 0xe0, //@@....@@@@@ - 0xc0, 0x60, //@@.......@@ - 0xc0, 0x60, //@@+......@@ - 0x60, 0x60, //+@@......@@ - 0x70, 0x60, //.@@@+...+@@ - 0x3f, 0xc0, //..@@@@@@@@+ - 0x0f, 0x80, //...+@@@@%.. - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - - - /*Unicode: U+0048 (H) , Width: 10 */ - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@......@@ - 0xff, 0xc0, //@@@@@@@@@@ - 0xff, 0xc0, //@@@@@@@@@@ - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@......@@ - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - - - /*Unicode: U+0049 (I) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+004a (J) , Width: 4 */ - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x70, //.%@% - 0xe0, //@@@. - 0xc0, //@%.. - - - /*Unicode: U+004b (K) , Width: 11 */ - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0xc1, 0x80, //@@.....@@+. - 0xc3, 0x00, //@@....@@+.. - 0xc6, 0x00, //@@...@@+... - 0xcc, 0x00, //@@..@@+.... - 0xd8, 0x00, //@@.@@+..... - 0xf0, 0x00, //@@@@+...... - 0xf0, 0x00, //@@@@....... - 0xd8, 0x00, //@@+@@...... - 0xcc, 0x00, //@@.+@@..... - 0xc6, 0x00, //@@..+@@.... - 0xc3, 0x00, //@@...+@@... - 0xc1, 0x80, //@@....+@@.. - 0xc0, 0xc0, //@@.....+@@+ - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - - - /*Unicode: U+004c (L) , Width: 8 */ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xff, //@@@@@@@@ - 0xff, //@@@@@@@@ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - - - /*Unicode: U+004d (M) , Width: 12 */ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0xe0, 0x70, //@@@+....+@@@ - 0xf0, 0xf0, //@@@%....%@@@ - 0xf0, 0xf0, //@@%@....@%@@ - 0xd8, 0xb0, //@@.@+..+@.@@ - 0xd9, 0xb0, //@@.@@..@@.@@ - 0xd9, 0xb0, //@@.%@..@+.@@ - 0xcf, 0x30, //@@..@%%@..@@ - 0xcf, 0x30, //@@..@@@@..@@ - 0xc6, 0x30, //@@..+@@+..@@ - 0xc6, 0x30, //@@...@@...@@ - 0xc0, 0x30, //@@........@@ - 0xc0, 0x30, //@@........@@ - 0xc0, 0x30, //@@........@@ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - - - /*Unicode: U+004e (N) , Width: 10 */ - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0xe0, 0xc0, //@@%.....@@ - 0xe0, 0xc0, //@@@.....@@ - 0xf0, 0xc0, //@@@%....@@ - 0xf0, 0xc0, //@@%@+...@@ - 0xd8, 0xc0, //@@.@@...@@ - 0xd8, 0xc0, //@@.%@+..@@ - 0xcc, 0xc0, //@@..@@..@@ - 0xc6, 0xc0, //@@..+@%.@@ - 0xc6, 0xc0, //@@...@@.@@ - 0xc3, 0xc0, //@@...+@@@@ - 0xc3, 0xc0, //@@....%@@@ - 0xc1, 0xc0, //@@.....@@@ - 0xc1, 0xc0, //@@.....%@@ - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - - - /*Unicode: U+004f (O) , Width: 12 */ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x0f, 0x80, //...+@@@@+... - 0x3f, 0xc0, //..@@@@@@@@.. - 0x70, 0xe0, //.@@@+..+@@@. - 0x60, 0x60, //+@@......@@+ - 0xc0, 0x30, //%@+......+@% - 0xc0, 0x30, //@@........@@ - 0xc0, 0x30, //@@........@@ - 0xc0, 0x30, //@@........@@ - 0xc0, 0x30, //%@+......+@% - 0x60, 0x60, //+@@......@@+ - 0x70, 0xe0, //.@@@+..+@@@. - 0x3f, 0xc0, //..@@@@@@@@.. - 0x1f, 0x80, //...+@@@@+... - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - - - /*Unicode: U+0050 (P) , Width: 8 */ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0xfc, //@@@@@%+. - 0xfe, //@@@@@@@+ - 0xc7, //@@...%@@ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0xc7, //@@...%@@ - 0xfe, //@@@@@@@+ - 0xfc, //@@@@@@+. - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - - - /*Unicode: U+0051 (Q) , Width: 12 */ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x0f, 0x80, //...+@@@@%... - 0x3f, 0xc0, //..@@@@@@@@.. - 0x70, 0xe0, //.@@@+..+@@@. - 0x60, 0x60, //+@@......@@+ - 0xc0, 0x30, //%@+......+@@ - 0xc0, 0x30, //@@........@@ - 0xc0, 0x30, //@@........@@ - 0xc0, 0x30, //@@........@@ - 0xc0, 0x30, //%@+......+@% - 0x60, 0x60, //+@@......@@+ - 0x70, 0xe0, //.@@@+..+@@%. - 0x3f, 0xc0, //..@@@@@@@%.. - 0x1f, 0x80, //...%@@@@%... - 0x01, 0x80, //......+@@+.. - 0x00, 0xc0, //.......+@@+. - 0x00, 0x00, //............ - 0x00, 0x00, //............ - - - /*Unicode: U+0052 (R) , Width: 10 */ - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0xfc, 0x00, //@@@@@@+... - 0xfe, 0x00, //@@@@@@@+.. - 0xc7, 0x00, //@@...%@@.. - 0xc3, 0x00, //@@....@@.. - 0xc3, 0x00, //@@....@@.. - 0xc7, 0x00, //@@...%@%.. - 0xfe, 0x00, //@@@@@@@... - 0xfc, 0x00, //@@@@@@+... - 0xc6, 0x00, //@@..+@@... - 0xc3, 0x00, //@@...+@@.. - 0xc3, 0x00, //@@....@@+. - 0xc1, 0x80, //@@....+@@. - 0xc1, 0xc0, //@@.....%@% - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - - - /*Unicode: U+0053 (S) , Width: 9 */ - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x3e, 0x00, //..%@@@%.. - 0x7f, 0x00, //+@@@@@@@. - 0xe1, 0x00, //@@%...+%. - 0xc0, 0x00, //@@....... - 0xc0, 0x00, //@@+...... - 0x7c, 0x00, //+@@@@%+.. - 0x3f, 0x00, //..%@@@@@. - 0x03, 0x80, //.....+@@% - 0x01, 0x80, //.......@@ - 0x01, 0x80, //.......@@ - 0x83, 0x80, //@+....%@@ - 0xff, 0x00, //@@@@@@@@+ - 0x7e, 0x00, //.%@@@@%.. - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - - - /*Unicode: U+0054 (T) , Width: 12 */ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0xff, 0xf0, //@@@@@@@@@@@@ - 0xff, 0xf0, //@@@@@@@@@@@@ - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - - - /*Unicode: U+0055 (U) , Width: 10 */ - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@+....+@@ - 0x61, 0x80, //+@@+..+@@+ - 0x7f, 0x80, //.@@@@@@@@. - 0x1e, 0x00, //..+@@@@+.. - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - - - /*Unicode: U+0056 (V) , Width: 12 */ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0xc0, 0x30, //@@+......+@@ - 0x60, 0x60, //+@%......%@+ - 0x60, 0x60, //.@@......@@. - 0x60, 0x60, //.%@+....+@%. - 0x30, 0xc0, //..@@....@@.. - 0x30, 0xc0, //..@@....@@.. - 0x19, 0x80, //..+@%..%@+.. - 0x19, 0x80, //...@@..@@... - 0x19, 0x80, //...%@++@%... - 0x0f, 0x00, //....@@@@+... - 0x0f, 0x00, //....@@@@.... - 0x06, 0x00, //....+@@+.... - 0x06, 0x00, //.....@@..... - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - - - /*Unicode: U+0057 (W) , Width: 17 */ - 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, //................. - 0xc1, 0xc1, 0x80, //@@.....@@@.....@@ - 0xc1, 0xc1, 0x80, //%@+...+@@@+...+@% - 0x63, 0xe3, 0x00, //+@%...%@%@%...%@+ - 0x63, 0x63, 0x00, //.@@...@@.@@...@@. - 0x63, 0x63, 0x00, //.@@...@@.@@...@@. - 0x63, 0x63, 0x00, //.%@+.+@%.%@+.+@%. - 0x36, 0x36, 0x00, //.+@%.%@+.+@%.%@+. - 0x36, 0x36, 0x00, //..@@.@@...@@.@@.. - 0x36, 0x36, 0x00, //..@@+@@...@@+@@.. - 0x3e, 0x3e, 0x00, //..%@@@%...%@@@%.. - 0x1c, 0x1c, 0x00, //..+@@@+...+@@@+.. - 0x1c, 0x1c, 0x00, //...@@@.....@@@... - 0x1c, 0x1c, 0x00, //...@@@.....@@%... - 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, //................. - - - /*Unicode: U+0058 (X) , Width: 11 */ - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x70, 0xe0, //.%@%....%@% - 0x30, 0xc0, //..@@+..+@@. - 0x39, 0x80, //..%@@..@@+. - 0x1b, 0x80, //...@@+%@%.. - 0x0f, 0x00, //...+@@@@... - 0x0e, 0x00, //....%@@+... - 0x0e, 0x00, //....%@@.... - 0x0f, 0x00, //...+@@@@... - 0x1b, 0x00, //...@@+@@+.. - 0x39, 0x80, //..%@%.+@@.. - 0x31, 0xc0, //.+@@...@@%. - 0x60, 0xc0, //.@@+....@@. - 0xe0, 0xe0, //%@@.....%@% - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - - - /*Unicode: U+0059 (Y) , Width: 12 */ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0xe0, 0x70, //%@@......@@% - 0x60, 0x60, //.@@+....+@@. - 0x30, 0xc0, //..@@....@@.. - 0x19, 0x80, //..+@%..%@+.. - 0x19, 0x80, //...%@++@%... - 0x0f, 0x00, //....@@@@.... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //.....@@..... - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - - - /*Unicode: U+005a (Z) , Width: 11 */ - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0xff, 0xe0, //@@@@@@@@@@@ - 0xff, 0xe0, //@@@@@@@@@@@ - 0x01, 0xc0, //.......%@@. - 0x03, 0x80, //......%@@.. - 0x03, 0x00, //.....+@@+.. - 0x07, 0x00, //.....@@%... - 0x0e, 0x00, //....@@%.... - 0x1c, 0x00, //...%@@..... - 0x18, 0x00, //..+@@...... - 0x30, 0x00, //.+@@+...... - 0x70, 0x00, //.@@%....... - 0xff, 0xe0, //@@@@@@@@@@@ - 0xff, 0xe0, //@@@@@@@@@@@ - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - - - /*Unicode: U+005b ([) , Width: 4 */ - 0x00, //.... - 0x00, //.... - 0xf0, //@@@@ - 0xf0, //@@@@ - 0xc0, //@@.. - 0xc0, //@@.. - 0xc0, //@@.. - 0xc0, //@@.. - 0xc0, //@@.. - 0xc0, //@@.. - 0xc0, //@@.. - 0xc0, //@@.. - 0xc0, //@@.. - 0xc0, //@@.. - 0xc0, //@@.. - 0xc0, //@@.. - 0xf0, //@@@@ - 0xf0, //@@@@ - 0x00, //.... - 0x00, //.... - - - /*Unicode: U+005c (\) , Width: 6 */ - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0xc0, //@@.... - 0xc0, //%@+... - 0x60, //+@%... - 0x60, //.@@... - 0x60, //.@@+.. - 0x70, //.%@%.. - 0x30, //.+@@.. - 0x30, //..@@.. - 0x30, //..@@+. - 0x38, //..+@%. - 0x18, //...@@. - 0x18, //...@@. - 0x18, //...%@+ - 0x0c, //...+@% - 0x0c, //....@@ - 0x00, //...... - 0x00, //...... - - - /*Unicode: U+005d (]) , Width: 4 */ - 0x00, //.... - 0x00, //.... - 0xf0, //@@@@ - 0xf0, //@@@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0xf0, //@@@@ - 0xf0, //@@@@ - 0x00, //.... - 0x00, //.... - - - /*Unicode: U+005e (^) , Width: 11 */ - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x0e, 0x00, //....@@@.... - 0x1f, 0x00, //...%@%@%... - 0x31, 0x80, //..%@+.+@%.. - 0x60, 0xc0, //.%@+...+@%. - 0xc0, 0x60, //%@+.....+@% - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - - - /*Unicode: U+005f (_) , Width: 9 */ - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0xff, 0x80, //@@@@@@@@@ - 0xff, 0x80, //@@@@@@@@@ - - - /*Unicode: U+0060 (`) , Width: 4 */ - 0x00, //.... - 0x00, //.... - 0xc0, //%@.. - 0x60, //.%@. - 0x30, //..%% - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... + /*4 rows*/ /*Unicode: U+0061 (a) , Width: 8 */ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ + /*6 rows*/ 0x3c, //.+%@@@+. 0x7e, //.@@@@@@. 0x47, //.%...%@% @@ -1522,7636 +78,32 @@ static const uint8_t lv_font_dejavu_20_glyph_bitmap[] = { 0xc7, //@@+..%@@ 0xff, //%@@@@%@@ 0x7b, //.%@@%.@@ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - - - /*Unicode: U+0062 (b) , Width: 9 */ - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0xc0, 0x00, //@@....... - 0xc0, 0x00, //@@....... - 0xc0, 0x00, //@@....... - 0xc0, 0x00, //@@....... - 0xde, 0x00, //@@.%@@%.. - 0xff, 0x00, //@@%@@@@@. - 0xe3, 0x80, //@@@...@@% - 0xc1, 0x80, //@@+...+@@ - 0xc1, 0x80, //@@.....@@ - 0xc1, 0x80, //@@.....@@ - 0xc1, 0x80, //@@+...+@@ - 0xe3, 0x80, //@@@...@@% - 0xff, 0x00, //@@%@@@@@. - 0xde, 0x00, //@@.%@@%.. - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - - - /*Unicode: U+0063 (c) , Width: 8 */ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x1e, //..+@@@%+ - 0x7f, //.%@@@@@@ - 0x61, //+@@+...% - 0xc0, //@@+..... - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@+..... - 0x61, //+@@+...% - 0x7f, //.%@@@@@@ - 0x1e, //..+@@@%+ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - - - /*Unicode: U+0064 (d) , Width: 9 */ - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x01, 0x80, //.......@@ - 0x01, 0x80, //.......@@ - 0x01, 0x80, //.......@@ - 0x01, 0x80, //.......@@ - 0x3d, 0x80, //..%@@%.@@ - 0x7f, 0x80, //.@@@@@%@@ - 0xe3, 0x80, //%@@...@@@ - 0xc1, 0x80, //@@+...+@@ - 0xc1, 0x80, //@@.....@@ - 0xc1, 0x80, //@@.....@@ - 0xc1, 0x80, //@@+...+@@ - 0xe3, 0x80, //%@@...@@@ - 0x7f, 0x80, //.@@@@@%@@ - 0x3d, 0x80, //..%@@%.@@ - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - - - /*Unicode: U+0065 (e) , Width: 10 */ - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x1f, 0x00, //..+%@@@%.. - 0x7f, 0x80, //.%@@@@@@@. - 0x61, 0xc0, //+@@+...@@% - 0xc0, 0xc0, //@@......@@ - 0xff, 0xc0, //@@@@@@@@@@ - 0xff, 0xc0, //@@@@@@@@@@ - 0xc0, 0x00, //@@........ - 0x60, 0x40, //+@@+....+@ - 0x7f, 0xc0, //.%@@@@@@@@ - 0x1f, 0x80, //..+%@@@@%. - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - - - /*Unicode: U+0066 (f) , Width: 7 */ - 0x00, //....... - 0x00, //....... - 0x1e, //...%@@@ - 0x3e, //..%@@@@ - 0x30, //..@@+.. - 0x30, //..@@... - 0xfe, //@@@@@@@ - 0xfe, //@@@@@@@ - 0x30, //..@@... - 0x30, //..@@... - 0x30, //..@@... - 0x30, //..@@... - 0x30, //..@@... - 0x30, //..@@... - 0x30, //..@@... - 0x30, //..@@... - 0x00, //....... - 0x00, //....... - 0x00, //....... - 0x00, //....... - - - /*Unicode: U+0067 (g) , Width: 9 */ - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x3d, 0x80, //..%@@%.@@ - 0x7f, 0x80, //.@@@@@%@@ - 0xe3, 0x80, //%@@...@@@ - 0xc1, 0x80, //@@+...+@@ - 0xc1, 0x80, //@@.....@@ - 0xc1, 0x80, //@@.....@@ - 0xc1, 0x80, //@@+...+@@ - 0xe3, 0x80, //%@@...@@@ - 0x7f, 0x80, //.@@@@@%@@ - 0x3d, 0x80, //..%@@%.@@ - 0x01, 0x80, //......+@% - 0x43, 0x00, //.%...+@@+ - 0x7f, 0x00, //.@@@@@@@. - 0x3e, 0x00, //.+%@@@%.. - - - /*Unicode: U+0068 (h) , Width: 8 */ - 0x00, //........ - 0x00, //........ - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xc0, //@@...... - 0xde, //@@.%@@%. - 0xfe, //@@%@@@@+ - 0xe7, //@@@..%@@ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - - - /*Unicode: U+0069 (i) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0xc0, //@@ - 0xc0, //@@ - 0x00, //.. - 0x00, //.. - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+006a (j) , Width: 4 */ - 0x00, //.... - 0x00, //.... - 0x30, //..@@ - 0x30, //..@@ - 0x00, //.... - 0x00, //.... - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //..@@ - 0x30, //.+@@ - 0xe0, //@@@+ - 0xc0, //@@+. - - - /*Unicode: U+006b (k) , Width: 9 */ - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0xc0, 0x00, //@@....... - 0xc0, 0x00, //@@....... - 0xc0, 0x00, //@@....... - 0xc0, 0x00, //@@....... - 0xc3, 0x00, //@@....@@+ - 0xc6, 0x00, //@@..+@@+. - 0xcc, 0x00, //@@.+@@+.. - 0xd8, 0x00, //@@+@@+... - 0xf0, 0x00, //@@@@..... - 0xf0, 0x00, //@@@@+.... - 0xd8, 0x00, //@@+@@+... - 0xcc, 0x00, //@@.+@@+.. - 0xc6, 0x00, //@@..+@@+. - 0xc3, 0x00, //@@...+@@+ - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - - - /*Unicode: U+006c (l) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+006d (m) , Width: 14 */ - 0x00, 0x00, //.............. - 0x00, 0x00, //.............. - 0x00, 0x00, //.............. - 0x00, 0x00, //.............. - 0x00, 0x00, //.............. - 0x00, 0x00, //.............. - 0xdc, 0x78, //@@.%@@+..%@@%. - 0xfe, 0xf8, //@@%@@@@+@@@@@+ - 0xe7, 0x9c, //@@@..%@@@..%@@ - 0xc3, 0x0c, //@@....@@....@@ - 0xc3, 0x0c, //@@....@@....@@ - 0xc3, 0x0c, //@@....@@....@@ - 0xc3, 0x0c, //@@....@@....@@ - 0xc3, 0x0c, //@@....@@....@@ - 0xc3, 0x0c, //@@....@@....@@ - 0xc3, 0x0c, //@@....@@....@@ - 0x00, 0x00, //.............. - 0x00, 0x00, //.............. - 0x00, 0x00, //.............. - 0x00, 0x00, //.............. - - - /*Unicode: U+006e (n) , Width: 8 */ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0xde, //@@.%@@%. - 0xfe, //@@%@@@@+ - 0xe7, //@@@..%@@ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - - - /*Unicode: U+006f (o) , Width: 10 */ - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x1e, 0x00, //..+@@@@+.. - 0x7f, 0x80, //.%@@@@@@%. - 0x61, 0x80, //+@@+..+@@+ - 0xc0, 0xc0, //@@+....+@@ - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@......@@ - 0xc0, 0xc0, //@@+....+@@ - 0x61, 0x80, //+@@+..+@@+ - 0x7f, 0x80, //.%@@@@@@%. - 0x1e, 0x00, //..+@@@@+.. - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - - - /*Unicode: U+0070 (p) , Width: 9 */ - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0xde, 0x00, //@@.%@@%.. - 0xff, 0x00, //@@%@@@@@. - 0xe3, 0x80, //@@@...@@% - 0xc1, 0x80, //@@+...+@@ - 0xc1, 0x80, //@@.....@@ - 0xc1, 0x80, //@@.....@@ - 0xc1, 0x80, //@@+...+@@ - 0xe3, 0x80, //@@@...@@% - 0xff, 0x00, //@@%@@@@@. - 0xde, 0x00, //@@.%@@%.. - 0xc0, 0x00, //@@....... - 0xc0, 0x00, //@@....... - 0xc0, 0x00, //@@....... - 0xc0, 0x00, //@@....... - - - /*Unicode: U+0071 (q) , Width: 9 */ - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x00, 0x00, //......... - 0x3d, 0x80, //..%@@%.@@ - 0x7f, 0x80, //.@@@@@%@@ - 0xe3, 0x80, //%@@...@@@ - 0xc1, 0x80, //@@+...+@@ - 0xc1, 0x80, //@@.....@@ - 0xc1, 0x80, //@@.....@@ - 0xc1, 0x80, //@@+...+@@ - 0xe3, 0x80, //%@@...@@@ - 0x7f, 0x80, //.@@@@@%@@ - 0x3d, 0x80, //..%@@%.@@ - 0x01, 0x80, //.......@@ - 0x01, 0x80, //.......@@ - 0x01, 0x80, //.......@@ - 0x01, 0x80, //.......@@ - - - /*Unicode: U+0072 (r) , Width: 6 */ - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0xdc, //@@.%@@ - 0xfc, //@@%@@@ - 0xe0, //@@@+.. - 0xc0, //@@+... - 0xc0, //@@.... - 0xc0, //@@.... - 0xc0, //@@.... - 0xc0, //@@.... - 0xc0, //@@.... - 0xc0, //@@.... - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - - - /*Unicode: U+0073 (s) , Width: 7 */ - 0x00, //....... - 0x00, //....... - 0x00, //....... - 0x00, //....... - 0x00, //....... - 0x00, //....... - 0x7c, //.+@@@%+ - 0xfe, //%@@@@@@ - 0xc2, //@@+...% - 0xe0, //@@%+... - 0x7c, //+@@@@@. - 0x1e, //..+%@@% - 0x06, //.....@@ - 0x86, //%+..+@@ - 0xfe, //@@@@@@% - 0x78, //.%@@@+. - 0x00, //....... - 0x00, //....... - 0x00, //....... - 0x00, //....... - - - /*Unicode: U+0074 (t) , Width: 6 */ - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x60, //.@@... - 0x60, //.@@... - 0x60, //.@@... - 0xfc, //@@@@@@ - 0xfc, //@@@@@@ - 0x60, //.@@... - 0x60, //.@@... - 0x60, //.@@... - 0x60, //.@@... - 0x60, //.@@... - 0x60, //.@@+.. - 0x7c, //.%@@@@ - 0x3c, //..%@@@ - 0x00, //...... - 0x00, //...... - 0x00, //...... - 0x00, //...... - - - /*Unicode: U+0075 (u) , Width: 8 */ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0xc3, //@@....@@ - 0xe7, //@@%..@@@ - 0x7f, //+@@@@%@@ - 0x7b, //.%@@%.@@ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - - - /*Unicode: U+0076 (v) , Width: 12 */ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x60, 0x60, //.@@......@@. - 0x60, 0x60, //.%@+....+@%. - 0x30, 0xc0, //..@@....@@.. - 0x30, 0xc0, //..@@....@@.. - 0x19, 0x80, //..+@%..%@+.. - 0x19, 0x80, //...@@..@@... - 0x19, 0x80, //...%@.+@%... - 0x0f, 0x00, //...+@%@@.... - 0x0f, 0x00, //....@@@@.... - 0x06, 0x00, //....+@@+.... - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - - - /*Unicode: U+0077 (w) , Width: 15 */ - 0x00, 0x00, //............... - 0x00, 0x00, //............... - 0x00, 0x00, //............... - 0x00, 0x00, //............... - 0x00, 0x00, //............... - 0x00, 0x00, //............... - 0x63, 0x8c, //.@@...@@@...@@. - 0x63, 0x8c, //.@@...@@@...@@. - 0x63, 0x8c, //.%@+.+@@@+.+@%. - 0x36, 0xd8, //.+@%.%@+@%.%@+. - 0x36, 0xd8, //..@@.@@.@@.@@.. - 0x36, 0xd8, //..@@.@%.%@.@@.. - 0x3c, 0x78, //..%@%@+.+@%@%.. - 0x1c, 0x70, //..+@@@...@@@+.. - 0x1c, 0x70, //...@@@...@@@... - 0x1c, 0x70, //...@@%...%@@... - 0x00, 0x00, //............... - 0x00, 0x00, //............... - 0x00, 0x00, //............... - 0x00, 0x00, //............... - - - /*Unicode: U+0078 (x) , Width: 10 */ - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0xe1, 0xc0, //%@@....@@% - 0x61, 0x80, //.@@+..+@@. - 0x33, 0x00, //.+@@..@@.. - 0x33, 0x00, //..%@++@%.. - 0x1e, 0x00, //...@@@@... - 0x1e, 0x00, //...@@@@... - 0x33, 0x00, //..%@++@%.. - 0x33, 0x00, //.+@@..@@+. - 0x61, 0x80, //.@@+..+@@. - 0xe1, 0xc0, //%@@....@@% - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - 0x00, 0x00, //.......... - - - /*Unicode: U+0079 (y) , Width: 12 */ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x00, 0x00, //............ - 0x60, 0x60, //.@@......@@. - 0x60, 0x60, //.%@+....+@%. - 0x30, 0xc0, //..@@....@@.. - 0x30, 0xc0, //..%@+..+@@.. - 0x19, 0x80, //...@@..@@+.. - 0x19, 0x80, //...@@+.@@... - 0x0f, 0x00, //...+@%%@+... - 0x0f, 0x00, //....@@@@.... - 0x06, 0x00, //....+@@+.... - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //....+@%..... - 0x0c, 0x00, //....%@...... - 0x3c, 0x00, //..@@@%...... - 0x38, 0x00, //..@@%....... - - - /*Unicode: U+007a (z) , Width: 8 */ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0xff, //@@@@@@@@ - 0xff, //@@@@@@@@ - 0x06, //....+@@. - 0x0c, //....@@+. - 0x1c, //...@@@.. - 0x38, //..%@@... - 0x30, //.+@@+... - 0x70, //.@@%.... - 0xff, //@@@@@@@@ - 0xff, //@@@@@@@@ - 0x00, //........ - 0x00, //........ - 0x00, //........ - 0x00, //........ - - - /*Unicode: U+007b ({) , Width: 8 */ - 0x00, //........ - 0x00, //........ - 0x0f, //....%@@@ - 0x1f, //...%@@@@ - 0x18, //...@@+.. - 0x18, //...@@... - 0x18, //...@@... - 0x18, //...@@... - 0x38, //..%@@... - 0xf0, //@@@@.... - 0xf0, //@@@@.... - 0x38, //..%@%... - 0x18, //...@@... - 0x18, //...@@... - 0x18, //...@@... - 0x18, //...@@... - 0x18, //...@@+.. - 0x1f, //...%@@@@ - 0x0f, //....%@@@ - 0x00, //........ - - - /*Unicode: U+007c (|) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - 0xc0, //@@ - - - /*Unicode: U+007d (}) , Width: 8 */ - 0x00, //........ - 0x00, //........ - 0xf0, //@@@%.... - 0xf8, //@@@@%... - 0x18, //..+@@... - 0x18, //...@@... - 0x18, //...@@... - 0x18, //...@@... - 0x1c, //...@@%.. - 0x0f, //....@@@@ - 0x0f, //....@@@@ - 0x1c, //...%@%.. - 0x18, //...@@... - 0x18, //...@@... - 0x18, //...@@... - 0x18, //...@@... - 0x18, //..+@@... - 0xf8, //@@@@%... - 0xf0, //@@@%.... - 0x00, //........ - - - /*Unicode: U+007e (~) , Width: 11 */ - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x7c, 0x20, //.%@@@%...+@ - 0xff, 0xe0, //@@@@@@@@@@@ - 0x87, 0xc0, //@+...%@@@%. - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - 0x00, 0x00, //........... - - - -#elif LV_USE_FONT_DEJAVU_20 == 2 - /*Unicode: U+0020 ( ) , Width: 6 */ - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - - - /*Unicode: U+0021 (!) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0x00, //.. - 0x00, //.. - 0xf0, //@@ - 0xf0, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+0022 (") , Width: 6 */ - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0xf0, 0xf0, //@@..@@ - 0xf0, 0xf0, //@@..@@ - 0xf0, 0xf0, //@@..@@ - 0xf0, 0xf0, //@@..@@ - 0xf0, 0xf0, //@@..@@ - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - - - /*Unicode: U+0023 (#) , Width: 12 */ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x30, 0x70, //.....@..+@.. - 0x00, 0x70, 0x70, //....+@..+@.. - 0x00, 0xb0, 0xa0, //....%@..%%.. - 0x00, 0xe0, 0xd0, //....@%..@+.. - 0x3f, 0xff, 0xff, //.@@@@@@@@@@@ - 0x3f, 0xff, 0xff, //.@@@@@@@@@@@ - 0x01, 0xc2, 0xc0, //...+@..%@... - 0x03, 0x83, 0x40, //...@%..@+... - 0xff, 0xff, 0xfc, //@@@@@@@@@@@. - 0xff, 0xff, 0xfc, //@@@@@@@@@@@. - 0x07, 0x0b, 0x00, //..+@..%@.... - 0x0a, 0x0a, 0x00, //..%%..%%.... - 0x0e, 0x0d, 0x00, //..@%..@+.... - 0x0d, 0x0c, 0x00, //..@+..@..... - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0024 ($) , Width: 9 */ - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0xc0, 0x00, //....@.... - 0x00, 0xc0, 0x00, //....@.... - 0x1b, 0xf8, 0x00, //.+%@@@%.. - 0x7f, 0xff, 0x00, //+@@@@@@@. - 0xf8, 0xc7, 0x00, //@@%.@.+@. - 0xf0, 0xc0, 0x00, //@@..@.... - 0xbe, 0xc0, 0x00, //%@@%@.... - 0x3f, 0xfd, 0x00, //.@@@@@@+. - 0x01, 0xff, 0x40, //...+@@@@+ - 0x00, 0xc7, 0xc0, //....@.+@@ - 0x00, 0xc3, 0xc0, //....@..@@ - 0xd0, 0xcb, 0xc0, //@+..@.%@@ - 0xff, 0xff, 0x40, //@@@@@@@@+ - 0x2f, 0xf9, 0x00, //.%@@@@%+. - 0x00, 0xc0, 0x00, //....@.... - 0x00, 0xc0, 0x00, //....@.... - 0x00, 0xc0, 0x00, //....@.... - 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0025 (%) , Width: 15 */ - 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, //............... - 0x2f, 0x80, 0x07, 0x00, //.%@@%.....+@... - 0x75, 0xd0, 0x0c, 0x00, //+@++@+....@.... - 0xf0, 0xf0, 0x28, 0x00, //@@..@@...%%.... - 0xf0, 0xf0, 0x30, 0x00, //@@..@@...@..... - 0xf0, 0xf0, 0xd0, 0x00, //@@..@@..@+..... - 0xb5, 0xd1, 0x80, 0x00, //+@++@+.+%...... - 0x2f, 0x83, 0x0b, 0xe0, //.%@@%..@..%@@%. - 0x00, 0x09, 0x1d, 0x74, //......%+.+@++@+ - 0x00, 0x1c, 0x3c, 0x3c, //.....+@..@@..@@ - 0x00, 0x30, 0x3c, 0x3c, //.....@...@@..@@ - 0x00, 0xa0, 0x3c, 0x3c, //....%%...@@..@@ - 0x00, 0xc0, 0x1d, 0x74, //....@....+@++@+ - 0x03, 0x40, 0x0b, 0xe0, //...@+.....%@@%. - 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, //............... - - - /*Unicode: U+0026 (&) , Width: 12 */ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x01, 0xfe, 0x40, //...+@@@%+... - 0x07, 0xff, 0xc0, //..+@@@@@@... - 0x0f, 0x41, 0xc0, //..@@+..+%... - 0x0f, 0x00, 0x00, //..@@........ - 0x0b, 0x80, 0x00, //..%@%....... - 0x0b, 0xe0, 0x00, //..%@@%...... - 0x2e, 0xf8, 0x3c, //.%@%@@%..@@. - 0xb4, 0x7e, 0x78, //%@+.+@@%+@%. - 0xf0, 0x1f, 0xf0, //@@...+@@@@.. - 0xf4, 0x07, 0xd0, //@@+...+@@+.. - 0xbd, 0x07, 0xe0, //%@@+..+@@%.. - 0x3f, 0xff, 0xf8, //.@@@@@@@@@%. - 0x0b, 0xf8, 0x7e, //..%@@@%.+@@% - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0027 (') , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+0028 (() , Width: 4 */ - 0x00, //.... - 0x00, //.... - 0x0b, //..%@ - 0x0d, //..@+ - 0x2c, //.%@. - 0x38, //.@%. - 0x74, //+@+. - 0xb0, //%@.. - 0xf0, //@@.. - 0xf0, //@@.. - 0xf0, //@@.. - 0xf0, //@@.. - 0xb0, //%@.. - 0x74, //+@+. - 0x38, //.@%. - 0x2c, //.%@. - 0x0d, //..@+ - 0x0b, //..%@ - 0x00, //.... - 0x00, //.... - - - /*Unicode: U+0029 ()) , Width: 4 */ - 0x00, //.... - 0x00, //.... - 0xe0, //@%.. - 0x70, //+@.. - 0x38, //.@%. - 0x2c, //.%@. - 0x1d, //.+@+ - 0x0e, //..@% - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0e, //..@% - 0x1d, //.+@+ - 0x2c, //.%@. - 0x38, //.@%. - 0x70, //+@.. - 0xe0, //@%.. - 0x00, //.... - 0x00, //.... - - - /*Unicode: U+002a (*) , Width: 7 */ - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x03, 0x00, //...@... - 0x83, 0x08, //%..@..% - 0x77, 0x74, //+@+@+@+ - 0x0f, 0xc0, //..@@@.. - 0x0f, 0xc0, //..@@@.. - 0x77, 0x74, //+@+@+@+ - 0x83, 0x08, //%..@..% - 0x03, 0x00, //...@... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - - - /*Unicode: U+002b (+) , Width: 12 */ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0xff, 0xff, 0xff, //@@@@@@@@@@@@ - 0xff, 0xff, 0xff, //@@@@@@@@@@@@ - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+002c (,) , Width: 3 */ - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x3c, //.@@ - 0x3c, //.@@ - 0x70, //+@. - 0xd0, //@+. - 0x00, //... - 0x00, //... - - - /*Unicode: U+002d (-) , Width: 5 */ - 0x00, 0x00, //..... - 0x00, 0x00, //..... - 0x00, 0x00, //..... - 0x00, 0x00, //..... - 0x00, 0x00, //..... - 0x00, 0x00, //..... - 0x00, 0x00, //..... - 0x00, 0x00, //..... - 0x00, 0x00, //..... - 0x00, 0x00, //..... - 0xff, 0xc0, //@@@@@ - 0xff, 0xc0, //@@@@@ - 0x00, 0x00, //..... - 0x00, 0x00, //..... - 0x00, 0x00, //..... - 0x00, 0x00, //..... - 0x00, 0x00, //..... - 0x00, 0x00, //..... - 0x00, 0x00, //..... - 0x00, 0x00, //..... - - - /*Unicode: U+002e (.) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0xf0, //@@ - 0xf0, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+002f (/) , Width: 6 */ - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0xf0, //....@@ - 0x01, 0xe0, //...+@% - 0x02, 0xd0, //...%@+ - 0x03, 0xc0, //...@@. - 0x03, 0xc0, //...@@. - 0x0b, 0x80, //..+@%. - 0x0f, 0x40, //..@@+. - 0x0f, 0x00, //..@@.. - 0x1f, 0x00, //.+@@.. - 0x2e, 0x00, //.%@%.. - 0x3d, 0x00, //.@@+.. - 0x3c, 0x00, //.@@... - 0x78, 0x00, //+@%... - 0xb4, 0x00, //%@+... - 0xf0, 0x00, //@@.... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - - - /*Unicode: U+0030 (0) , Width: 9 */ - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x07, 0xf4, 0x00, //..+@@@+.. - 0x2f, 0xfe, 0x00, //.%@@@@@%. - 0x7d, 0x1f, 0x40, //+@@+.+@@+ - 0xb4, 0x07, 0x80, //%@+...+@% - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xb4, 0x07, 0x80, //%@+...+@% - 0x7d, 0x1f, 0x40, //+@@+.+@@+ - 0x2f, 0xfe, 0x00, //.%@@@@@%. - 0x0b, 0xf8, 0x00, //..+@@@+.. - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0031 (1) , Width: 8 */ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x1f, 0xc0, //.+@@@... - 0xff, 0xc0, //@@@@@... - 0xd3, 0xc0, //@+.@@... - 0x03, 0xc0, //...@@... - 0x03, 0xc0, //...@@... - 0x03, 0xc0, //...@@... - 0x03, 0xc0, //...@@... - 0x03, 0xc0, //...@@... - 0x03, 0xc0, //...@@... - 0x03, 0xc0, //...@@... - 0x03, 0xc0, //...@@... - 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, //@@@@@@@@ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - - - /*Unicode: U+0032 (2) , Width: 9 */ - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x2f, 0xe0, 0x00, //.%@@@%... - 0xff, 0xfd, 0x00, //@@@@@@@+. - 0xd0, 0x3f, 0x00, //@+...@@@. - 0x00, 0x0f, 0x00, //......@@. - 0x00, 0x0f, 0x00, //......@@. - 0x00, 0x2d, 0x00, //.....%@+. - 0x00, 0x7c, 0x00, //....+@@.. - 0x01, 0xf0, 0x00, //...+@@... - 0x07, 0xd0, 0x00, //..+@@+... - 0x1f, 0x40, 0x00, //.+@@+.... - 0x7d, 0x00, 0x00, //+@@+..... - 0xff, 0xff, 0x00, //@@@@@@@@. - 0xff, 0xff, 0x00, //@@@@@@@@. - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0033 (3) , Width: 9 */ - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x2f, 0xf8, 0x00, //.%@@@@%.. - 0xff, 0xff, 0x40, //@@@@@@@@+ - 0xd0, 0x0b, 0xc0, //@+....%@@ - 0x00, 0x03, 0xc0, //.......@@ - 0x00, 0x0b, 0x80, //......%@% - 0x0f, 0xfd, 0x00, //..@@@@@+. - 0x0f, 0xfe, 0x00, //..@@@@@%. - 0x00, 0x1f, 0x80, //.....+@@% - 0x00, 0x03, 0xc0, //.......@@ - 0x00, 0x03, 0xc0, //.......@@ - 0x90, 0x1f, 0x80, //%+...+@@% - 0xff, 0xff, 0x00, //@@@@@@@@. - 0x2f, 0xf8, 0x00, //.%@@@@%.. - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0034 (4) , Width: 10 */ - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x2f, 0x00, //.....%@@.. - 0x00, 0x7f, 0x00, //....+@@@.. - 0x00, 0xdf, 0x00, //....@+@@.. - 0x02, 0xcf, 0x00, //...%@.@@.. - 0x07, 0x0f, 0x00, //..+@..@@.. - 0x0d, 0x0f, 0x00, //..@+..@@.. - 0x3c, 0x0f, 0x00, //.@@...@@.. - 0x70, 0x0f, 0x00, //+@....@@.. - 0xff, 0xff, 0xf0, //@@@@@@@@@@ - 0xff, 0xff, 0xf0, //@@@@@@@@@@ - 0x00, 0x0f, 0x00, //......@@.. - 0x00, 0x0f, 0x00, //......@@.. - 0x00, 0x0f, 0x00, //......@@.. - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0035 (5) , Width: 8 */ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x3f, 0xfc, //.@@@@@@. - 0x3f, 0xfc, //.@@@@@@. - 0x3c, 0x00, //.@@..... - 0x3c, 0x00, //.@@..... - 0x3f, 0xf0, //.@@@@@.. - 0x3f, 0xfc, //.@@@@@@. - 0x20, 0x3e, //.%...@@% - 0x00, 0x0f, //......@@ - 0x00, 0x0f, //......@@ - 0x00, 0x0f, //......@@ - 0x90, 0x7e, //%...+@@% - 0xff, 0xfc, //@@@@@@@. - 0x6f, 0xe0, //.%@@@%.. - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - - - /*Unicode: U+0036 (6) , Width: 9 */ - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x02, 0xfd, 0x00, //...%@@@+. - 0x1f, 0xff, 0x00, //.+@@@@@@. - 0x3e, 0x02, 0x00, //.@@%...%. - 0xbc, 0x00, 0x00, //+@@...... - 0xf4, 0x00, 0x00, //@@+...... - 0xf2, 0xf8, 0x00, //@@.%@@%.. - 0xfb, 0xff, 0x00, //@@%@@@@@. - 0xf8, 0x0b, 0x80, //@@%...%@% - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xb0, 0x03, 0xc0, //%@.....@@ - 0x78, 0x0b, 0x80, //+@%...%@% - 0x2f, 0xff, 0x00, //.%@@@@@@. - 0x07, 0xf8, 0x00, //..+@@@%.. - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0037 (7) , Width: 8 */ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, //@@@@@@@@ - 0x00, 0x2d, //.....%@+ - 0x00, 0x3c, //.....@@. - 0x00, 0x7c, //....+@@. - 0x00, 0xb4, //....%@+. - 0x00, 0xf0, //....@@.. - 0x00, 0xf0, //....@@.. - 0x02, 0xe0, //...%@%.. - 0x03, 0xc0, //...@@... - 0x03, 0xc0, //...@@... - 0x0b, 0x80, //..%@%... - 0x0f, 0x40, //..@@+... - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - - - /*Unicode: U+0038 (8) , Width: 9 */ - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x1b, 0xf9, 0x00, //.+%@@@%+. - 0x7f, 0xff, 0x40, //+@@@@@@@+ - 0xf8, 0x0b, 0xc0, //@@%...%@@ - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xb8, 0x0b, 0x80, //%@%...%@% - 0x1f, 0xfd, 0x00, //.+@@@@@+. - 0x2f, 0xfe, 0x00, //.%@@@@@%. - 0xb8, 0x0b, 0x80, //%@%...%@% - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf8, 0x0b, 0xc0, //@@%...%@@ - 0x7f, 0xff, 0x40, //+@@@@@@@+ - 0x0b, 0xf8, 0x00, //..%@@@%.. - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0039 (9) , Width: 9 */ - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x0b, 0xf4, 0x00, //..%@@@+.. - 0x3f, 0xfe, 0x00, //.@@@@@@%. - 0xb8, 0x0b, 0x00, //%@%...%@. - 0xf0, 0x03, 0x80, //@@.....@% - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf8, 0x0b, 0xc0, //%@%...%@@ - 0x7f, 0xfb, 0xc0, //.@@@@@%@@ - 0x0b, 0xe3, 0xc0, //..%@@%.@@ - 0x00, 0x07, 0xc0, //......+@@ - 0x00, 0x0f, 0x40, //......@@+ - 0x20, 0x2f, 0x00, //.%...%@@. - 0x3f, 0xfd, 0x00, //.@@@@@@+. - 0x1f, 0xe0, 0x00, //.+@@@%... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+003a (:) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0xf0, //@@ - 0xf0, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0xf0, //@@ - 0xf0, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+003b (;) , Width: 3 */ - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x3c, //.@@ - 0x3c, //.@@ - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x00, //... - 0x3c, //.@@ - 0x3c, //.@@ - 0x70, //+@. - 0xd0, //@+. - 0x00, //... - 0x00, //... - - - /*Unicode: U+003c (<) , Width: 11 */ - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x1c, //.........+@ - 0x00, 0x06, 0xfc, //.......%@@@ - 0x00, 0x7f, 0xe4, //....+@@@@%+ - 0x1b, 0xfd, 0x00, //.+%@@@@+... - 0xff, 0x90, 0x00, //@@@@%+..... - 0xff, 0x90, 0x00, //@@@@%+..... - 0x1b, 0xfd, 0x00, //.+%@@@@+... - 0x00, 0x7f, 0xe4, //....+@@@@%+ - 0x00, 0x06, 0xfc, //......+%@@@ - 0x00, 0x00, 0x1c, //.........+@ - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+003d (=) , Width: 11 */ - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0xff, 0xff, 0xfc, //@@@@@@@@@@@ - 0xff, 0xff, 0xfc, //@@@@@@@@@@@ - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0xff, 0xff, 0xfc, //@@@@@@@@@@@ - 0xff, 0xff, 0xfc, //@@@@@@@@@@@ - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+003e (>) , Width: 11 */ - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0xd0, 0x00, 0x00, //@+......... - 0xfe, 0x40, 0x00, //@@@%....... - 0x6f, 0xf4, 0x00, //+%@@@@+.... - 0x01, 0xff, 0x90, //...+@@@@%+. - 0x00, 0x1b, 0xfc, //.....+%@@@@ - 0x00, 0x1b, 0xfc, //.....+%@@@@ - 0x01, 0xff, 0x90, //...+@@@@%+. - 0x6f, 0xf4, 0x00, //+%@@@@+.... - 0xfe, 0x40, 0x00, //@@@%+...... - 0xd0, 0x00, 0x00, //@+......... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+003f (?) , Width: 7 */ - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x6f, 0xd0, //.%@@@+. - 0xff, 0xf4, //@@@@@@+ - 0xd0, 0xbc, //@+..%@@ - 0x00, 0x3c, //.....@@ - 0x00, 0x78, //....+@% - 0x00, 0xf0, //....@@. - 0x03, 0xc0, //...@@.. - 0x0f, 0x00, //..@@... - 0x0f, 0x00, //..@@... - 0x0f, 0x00, //..@@... - 0x00, 0x00, //....... - 0x0f, 0x00, //..@@... - 0x0f, 0x00, //..@@... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - - - /*Unicode: U+0040 (@) , Width: 16 */ - 0x00, 0x00, 0x00, 0x00, //................ - 0x00, 0x00, 0x00, 0x00, //................ - 0x00, 0x00, 0x00, 0x00, //................ - 0x00, 0x2f, 0xf9, 0x00, //.....%@@@@%+.... - 0x02, 0xff, 0xff, 0xd0, //...%@@@@@@@@@+.. - 0x0b, 0xe0, 0x06, 0xf4, //..%@@%....+%@@+. - 0x2f, 0x00, 0x00, 0x7c, //.%@@........+@@. - 0x3c, 0x00, 0x00, 0x1e, //.@@..........+@% - 0xb8, 0x0f, 0x3c, 0x0f, //%@%...@@.@@...@@ - 0xf0, 0x2f, 0xfc, 0x0f, //@@...%@@@@@...@@ - 0xf0, 0x3c, 0x3c, 0x1f, //@@...@@..@@..+@@ - 0xf0, 0x3c, 0x3c, 0x7d, //@@...@@..@@.+@@+ - 0xf0, 0x2f, 0xff, 0xf4, //@@...%@@@@@@@@+. - 0xb8, 0x0f, 0x3e, 0x40, //%@%...@@.@@%+... - 0x7c, 0x00, 0x00, 0x00, //.@@............. - 0x2f, 0x00, 0x00, 0x00, //.%@@............ - 0x0f, 0xe0, 0x0b, 0x00, //..@@@+....+@.... - 0x02, 0xff, 0xff, 0x00, //...%@@@@@@@@.... - 0x00, 0x6f, 0xe4, 0x00, //....+%@@@%+..... - 0x00, 0x00, 0x00, 0x00, //................ - - - /*Unicode: U+0041 (A) , Width: 12 */ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x7d, 0x00, //....+@@+.... - 0x00, 0xff, 0x00, //....@@@@.... - 0x00, 0xff, 0x00, //....@@@@.... - 0x02, 0xd7, 0x80, //...%@++@%... - 0x03, 0xc3, 0xc0, //...@@..@@... - 0x07, 0x82, 0xd0, //..+@%..%@+.. - 0x0f, 0x00, 0xf0, //..@@....@@.. - 0x0f, 0xff, 0xf0, //..@@@@@@@@.. - 0x2f, 0xff, 0xf8, //.%@@@@@@@@%. - 0x3c, 0x00, 0x3c, //.@@......@@. - 0x78, 0x00, 0x2d, //+@%......%@+ - 0xf4, 0x00, 0x1f, //@@+......+@@ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0042 (B) , Width: 9 */ - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0xff, 0xf4, 0x00, //@@@@@@+.. - 0xff, 0xfe, 0x00, //@@@@@@@%. - 0xf0, 0x1f, 0x00, //@@...+@@. - 0xf0, 0x0f, 0x00, //@@....@@. - 0xf0, 0x1e, 0x00, //@@...+@%. - 0xff, 0xf8, 0x00, //@@@@@@%.. - 0xff, 0xfd, 0x00, //@@@@@@@+. - 0xf0, 0x0b, 0x40, //@@....%@+ - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf0, 0x0b, 0xc0, //@@....%@@ - 0xff, 0xff, 0x40, //@@@@@@@@+ - 0xff, 0xf8, 0x00, //@@@@@@%.. - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0043 (C) , Width: 11 */ - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x01, 0xbf, 0xe0, //...+%@@@@%. - 0x0f, 0xff, 0xfc, //..@@@@@@@@@ - 0x3f, 0x40, 0x1c, //.@@@+....+@ - 0x7c, 0x00, 0x00, //+@@........ - 0xb4, 0x00, 0x00, //%@+........ - 0xf0, 0x00, 0x00, //@@......... - 0xf0, 0x00, 0x00, //@@......... - 0xf0, 0x00, 0x00, //@@......... - 0xb4, 0x00, 0x00, //%@+........ - 0x7c, 0x00, 0x00, //+@@........ - 0x3f, 0x40, 0x1c, //.@@@+....+@ - 0x0f, 0xff, 0xfc, //..@@@@@@@@@ - 0x01, 0xbf, 0xe0, //...+%@@@@%. - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+0044 (D) , Width: 11 */ - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0xff, 0xf9, 0x00, //@@@@@@%+... - 0xff, 0xff, 0xc0, //@@@@@@@@@.. - 0xf0, 0x07, 0xf0, //@@....+@@@. - 0xf0, 0x00, 0xf4, //@@......@@+ - 0xf0, 0x00, 0x7c, //@@......+@@ - 0xf0, 0x00, 0x3c, //@@.......@@ - 0xf0, 0x00, 0x3c, //@@.......@@ - 0xf0, 0x00, 0x3c, //@@.......@@ - 0xf0, 0x00, 0x7c, //@@......+@@ - 0xf0, 0x00, 0xf4, //@@......@@+ - 0xf0, 0x07, 0xf0, //@@....+@@@. - 0xff, 0xff, 0xc0, //@@@@@@@@@.. - 0xff, 0xf9, 0x00, //@@@@@@%+... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+0045 (E) , Width: 8 */ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, //@@@@@@@@ - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, //@@@@@@@@ - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, //@@@@@@@@ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - - - /*Unicode: U+0046 (F) , Width: 8 */ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, //@@@@@@@@ - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xff, 0xfc, //@@@@@@@. - 0xff, 0xfc, //@@@@@@@. - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - - - /*Unicode: U+0047 (G) , Width: 11 */ - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x01, 0xbf, 0xe0, //...+%@@@@%. - 0x0f, 0xff, 0xfc, //..@@@@@@@@@ - 0x3f, 0x40, 0x1c, //.@@@+....+@ - 0x7c, 0x00, 0x00, //+@@........ - 0xf4, 0x00, 0x00, //%@+........ - 0xf0, 0x0f, 0xfc, //@@....@@@@@ - 0xf0, 0x0f, 0xfc, //@@....@@@@@ - 0xf0, 0x00, 0x3c, //@@.......@@ - 0xf4, 0x00, 0x3c, //@@+......@@ - 0x7c, 0x00, 0x3c, //+@@......@@ - 0x3f, 0x40, 0x7c, //.@@@+...+@@ - 0x0f, 0xff, 0xf4, //..@@@@@@@@+ - 0x01, 0xff, 0x80, //...+@@@@%.. - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+0048 (H) , Width: 10 */ - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xff, 0xff, 0xf0, //@@@@@@@@@@ - 0xff, 0xff, 0xf0, //@@@@@@@@@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0049 (I) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+004a (J) , Width: 4 */ - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x2e, //.%@% - 0xfc, //@@@. - 0xe0, //@%.. - - - /*Unicode: U+004b (K) , Width: 11 */ - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0xf0, 0x03, 0xd0, //@@.....@@+. - 0xf0, 0x0f, 0x40, //@@....@@+.. - 0xf0, 0x3d, 0x00, //@@...@@+... - 0xf0, 0xf4, 0x00, //@@..@@+.... - 0xf3, 0xd0, 0x00, //@@.@@+..... - 0xff, 0x40, 0x00, //@@@@+...... - 0xff, 0x00, 0x00, //@@@@....... - 0xf7, 0xc0, 0x00, //@@+@@...... - 0xf1, 0xf0, 0x00, //@@.+@@..... - 0xf0, 0x7c, 0x00, //@@..+@@.... - 0xf0, 0x1f, 0x00, //@@...+@@... - 0xf0, 0x07, 0xd0, //@@....+@@.. - 0xf0, 0x01, 0xf4, //@@.....+@@+ - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+004c (L) , Width: 8 */ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, //@@@@@@@@ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - - - /*Unicode: U+004d (M) , Width: 12 */ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0xfd, 0x00, 0x7f, //@@@+....+@@@ - 0xff, 0x00, 0xbf, //@@@%....%@@@ - 0xfb, 0x00, 0xef, //@@%@....@%@@ - 0xf7, 0x81, 0xdf, //@@.@+..+@.@@ - 0xf3, 0xc3, 0xcf, //@@.@@..@@.@@ - 0xf2, 0xc3, 0x8f, //@@.%@..@+.@@ - 0xf0, 0xeb, 0x0f, //@@..@%%@..@@ - 0xf0, 0xff, 0x0f, //@@..@@@@..@@ - 0xf0, 0x7d, 0x0f, //@@..+@@+..@@ - 0xf0, 0x3c, 0x0f, //@@...@@...@@ - 0xf0, 0x00, 0x0f, //@@........@@ - 0xf0, 0x00, 0x0f, //@@........@@ - 0xf0, 0x00, 0x0f, //@@........@@ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+004e (N) , Width: 10 */ - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0xf8, 0x00, 0xf0, //@@%.....@@ - 0xfc, 0x00, 0xf0, //@@@.....@@ - 0xfe, 0x00, 0xf0, //@@@%....@@ - 0xfb, 0x40, 0xf0, //@@%@+...@@ - 0xf3, 0xc0, 0xf0, //@@.@@...@@ - 0xf2, 0xd0, 0xf0, //@@.%@+..@@ - 0xf0, 0xf0, 0xf0, //@@..@@..@@ - 0xf0, 0x78, 0xf0, //@@..+@%.@@ - 0xf0, 0x3d, 0xf0, //@@...@@.@@ - 0xf0, 0x1f, 0xf0, //@@...+@@@@ - 0xf0, 0x0b, 0xf0, //@@....%@@@ - 0xf0, 0x03, 0xf0, //@@.....@@@ - 0xf0, 0x02, 0xf0, //@@.....%@@ - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+004f (O) , Width: 12 */ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x01, 0xff, 0x80, //...+@@@@+... - 0x0f, 0xff, 0xf0, //..@@@@@@@@.. - 0x3f, 0x41, 0xfc, //.@@@+..+@@@. - 0x7c, 0x00, 0x3d, //+@@......@@+ - 0xf4, 0x00, 0x1e, //%@+......+@% - 0xf0, 0x00, 0x0f, //@@........@@ - 0xf0, 0x00, 0x0f, //@@........@@ - 0xf0, 0x00, 0x0f, //@@........@@ - 0xf4, 0x00, 0x1e, //%@+......+@% - 0x7c, 0x00, 0x3d, //+@@......@@+ - 0x3f, 0x41, 0xfc, //.@@@+..+@@@. - 0x0f, 0xff, 0xf0, //..@@@@@@@@.. - 0x02, 0xff, 0x80, //...+@@@@+... - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0050 (P) , Width: 8 */ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0xff, 0xf4, //@@@@@%+. - 0xff, 0xfd, //@@@@@@@+ - 0xf0, 0x2f, //@@...%@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x2f, //@@...%@@ - 0xff, 0xfd, //@@@@@@@+ - 0xff, 0xf4, //@@@@@@+. - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - - - /*Unicode: U+0051 (Q) , Width: 12 */ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x01, 0xff, 0x80, //...+@@@@%... - 0x0f, 0xff, 0xf0, //..@@@@@@@@.. - 0x3f, 0x41, 0xfc, //.@@@+..+@@@. - 0x7c, 0x00, 0x3d, //+@@......@@+ - 0xf4, 0x00, 0x1f, //%@+......+@@ - 0xf0, 0x00, 0x0f, //@@........@@ - 0xf0, 0x00, 0x0f, //@@........@@ - 0xf0, 0x00, 0x0f, //@@........@@ - 0xf4, 0x00, 0x1e, //%@+......+@% - 0x7c, 0x00, 0x3d, //+@@......@@+ - 0x3f, 0x41, 0xf8, //.@@@+..+@@%. - 0x0f, 0xff, 0xe0, //..@@@@@@@%.. - 0x02, 0xff, 0x80, //...%@@@@%... - 0x00, 0x07, 0xd0, //......+@@+.. - 0x00, 0x01, 0xf4, //.......+@@+. - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0052 (R) , Width: 10 */ - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0xff, 0xf4, 0x00, //@@@@@@+... - 0xff, 0xfd, 0x00, //@@@@@@@+.. - 0xf0, 0x2f, 0x00, //@@...%@@.. - 0xf0, 0x0f, 0x00, //@@....@@.. - 0xf0, 0x0f, 0x00, //@@....@@.. - 0xf0, 0x2e, 0x00, //@@...%@%.. - 0xff, 0xfc, 0x00, //@@@@@@@... - 0xff, 0xf4, 0x00, //@@@@@@+... - 0xf0, 0x7c, 0x00, //@@..+@@... - 0xf0, 0x1f, 0x00, //@@...+@@.. - 0xf0, 0x0f, 0x40, //@@....@@+. - 0xf0, 0x07, 0xc0, //@@....+@@. - 0xf0, 0x02, 0xe0, //@@.....%@% - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0053 (S) , Width: 9 */ - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x0b, 0xf8, 0x00, //..%@@@%.. - 0x7f, 0xff, 0x00, //+@@@@@@@. - 0xf8, 0x06, 0x00, //@@%...+%. - 0xf0, 0x00, 0x00, //@@....... - 0xf4, 0x00, 0x00, //@@+...... - 0x7f, 0xe4, 0x00, //+@@@@%+.. - 0x1b, 0xff, 0x00, //..%@@@@@. - 0x00, 0x1f, 0x80, //.....+@@% - 0x00, 0x03, 0xc0, //.......@@ - 0x00, 0x03, 0xc0, //.......@@ - 0xd0, 0x0f, 0xc0, //@+....%@@ - 0xff, 0xff, 0x40, //@@@@@@@@+ - 0x2f, 0xf8, 0x00, //.%@@@@%.. - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0054 (T) , Width: 12 */ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0xff, 0xff, 0xff, //@@@@@@@@@@@@ - 0xff, 0xff, 0xff, //@@@@@@@@@@@@ - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0055 (U) , Width: 10 */ - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf4, 0x01, 0xf0, //@@+....+@@ - 0x7d, 0x07, 0xd0, //+@@+..+@@+ - 0x3f, 0xff, 0xc0, //.@@@@@@@@. - 0x07, 0xfd, 0x00, //..+@@@@+.. - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0056 (V) , Width: 12 */ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0xf4, 0x00, 0x1f, //@@+......+@@ - 0x78, 0x00, 0x2d, //+@%......%@+ - 0x3c, 0x00, 0x3c, //.@@......@@. - 0x2d, 0x00, 0x78, //.%@+....+@%. - 0x0f, 0x00, 0xf0, //..@@....@@.. - 0x0f, 0x01, 0xf0, //..@@....@@.. - 0x07, 0x82, 0xd0, //..+@%..%@+.. - 0x03, 0xc3, 0xc0, //...@@..@@... - 0x02, 0xd7, 0x80, //...%@++@%... - 0x01, 0xff, 0x40, //....@@@@+... - 0x00, 0xff, 0x00, //....@@@@.... - 0x00, 0x7d, 0x00, //....+@@+.... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0057 (W) , Width: 17 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, 0x00, 0x00, //................. - 0xf0, 0x03, 0xf0, 0x03, 0xc0, //@@.....@@@.....@@ - 0xb4, 0x07, 0xf4, 0x07, 0x80, //%@+...+@@@+...+@% - 0x78, 0x0b, 0xb8, 0x0b, 0x40, //+@%...%@%@%...%@+ - 0x3c, 0x0f, 0x3c, 0x0f, 0x00, //.@@...@@.@@...@@. - 0x3c, 0x0f, 0x3c, 0x0f, 0x00, //.@@...@@.@@...@@. - 0x2d, 0x1e, 0x2d, 0x1e, 0x00, //.%@+.+@%.%@+.+@%. - 0x1e, 0x2d, 0x1e, 0x2d, 0x00, //.+@%.%@+.+@%.%@+. - 0x0f, 0x3c, 0x0f, 0x3c, 0x00, //..@@.@@...@@.@@.. - 0x0f, 0x7c, 0x0f, 0x7c, 0x00, //..@@+@@...@@+@@.. - 0x0b, 0xf8, 0x0b, 0xf8, 0x00, //..%@@@%...%@@@%.. - 0x07, 0xf4, 0x07, 0xf4, 0x00, //..+@@@+...+@@@+.. - 0x03, 0xf0, 0x03, 0xf0, 0x00, //...@@@.....@@@... - 0x03, 0xf0, 0x03, 0xf0, 0x00, //...@@@.....@@%... - 0x00, 0x00, 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, 0x00, 0x00, //................. - - - /*Unicode: U+0058 (X) , Width: 11 */ - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x2e, 0x00, 0xb8, //.%@%....%@% - 0x0f, 0x41, 0xf0, //..@@+..+@@. - 0x0b, 0xc3, 0xd0, //..%@@..@@+. - 0x03, 0xdb, 0x80, //...@@+%@%.. - 0x01, 0xff, 0x00, //...+@@@@... - 0x00, 0xfd, 0x00, //....%@@+... - 0x00, 0xbc, 0x00, //....%@@.... - 0x01, 0xff, 0x00, //...+@@@@... - 0x03, 0xdf, 0x40, //...@@+@@+.. - 0x0b, 0x87, 0xc0, //..%@%.+@@.. - 0x1f, 0x03, 0xe0, //.+@@...@@%. - 0x3d, 0x00, 0xf0, //.@@+....@@. - 0xbc, 0x00, 0xb8, //%@@.....%@% - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+0059 (Y) , Width: 12 */ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0xbc, 0x00, 0x3e, //%@@......@@% - 0x3d, 0x00, 0x7c, //.@@+....+@@. - 0x0f, 0x00, 0xf0, //..@@....@@.. - 0x07, 0x82, 0xd0, //..+@%..%@+.. - 0x02, 0xd7, 0x80, //...%@++@%... - 0x00, 0xff, 0x00, //....@@@@.... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+005a (Z) , Width: 11 */ - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0xff, 0xff, 0xfc, //@@@@@@@@@@@ - 0xff, 0xff, 0xfc, //@@@@@@@@@@@ - 0x00, 0x02, 0xf0, //.......%@@. - 0x00, 0x0b, 0xc0, //......%@@.. - 0x00, 0x1f, 0x40, //.....+@@+.. - 0x00, 0x3e, 0x00, //.....@@%... - 0x00, 0xf8, 0x00, //....@@%.... - 0x02, 0xf0, 0x00, //...%@@..... - 0x07, 0xc0, 0x00, //..+@@...... - 0x1f, 0x40, 0x00, //.+@@+...... - 0x3e, 0x00, 0x00, //.@@%....... - 0xff, 0xff, 0xfc, //@@@@@@@@@@@ - 0xff, 0xff, 0xfc, //@@@@@@@@@@@ - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+005b ([) , Width: 4 */ - 0x00, //.... - 0x00, //.... - 0xff, //@@@@ - 0xff, //@@@@ - 0xf0, //@@.. - 0xf0, //@@.. - 0xf0, //@@.. - 0xf0, //@@.. - 0xf0, //@@.. - 0xf0, //@@.. - 0xf0, //@@.. - 0xf0, //@@.. - 0xf0, //@@.. - 0xf0, //@@.. - 0xf0, //@@.. - 0xf0, //@@.. - 0xff, //@@@@ - 0xff, //@@@@ - 0x00, //.... - 0x00, //.... - - - /*Unicode: U+005c (\) , Width: 6 */ - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0xf0, 0x00, //@@.... - 0xb4, 0x00, //%@+... - 0x78, 0x00, //+@%... - 0x3c, 0x00, //.@@... - 0x3d, 0x00, //.@@+.. - 0x2e, 0x00, //.%@%.. - 0x1f, 0x00, //.+@@.. - 0x0f, 0x00, //..@@.. - 0x0f, 0x40, //..@@+. - 0x0b, 0x80, //..+@%. - 0x03, 0xc0, //...@@. - 0x03, 0xc0, //...@@. - 0x02, 0xd0, //...%@+ - 0x01, 0xe0, //...+@% - 0x00, 0xf0, //....@@ - 0x00, 0x00, //...... - 0x00, 0x00, //...... - - - /*Unicode: U+005d (]) , Width: 4 */ - 0x00, //.... - 0x00, //.... - 0xff, //@@@@ - 0xff, //@@@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0xff, //@@@@ - 0xff, //@@@@ - 0x00, //.... - 0x00, //.... - - - /*Unicode: U+005e (^) , Width: 11 */ - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0xfc, 0x00, //....@@@.... - 0x02, 0xee, 0x00, //...%@%@%... - 0x0b, 0x47, 0x80, //..%@+.+@%.. - 0x2d, 0x01, 0xe0, //.%@+...+@%. - 0xb4, 0x00, 0x78, //%@+.....+@% - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+005f (_) , Width: 9 */ - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0xff, 0xff, 0xc0, //@@@@@@@@@ - 0xff, 0xff, 0xc0, //@@@@@@@@@ - - - /*Unicode: U+0060 (`) , Width: 4 */ - 0x00, //.... - 0x00, //.... - 0xb0, //%@.. - 0x2c, //.%@. - 0x0a, //..%% - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - 0x00, //.... - - - /*Unicode: U+0061 (a) , Width: 8 */ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x1b, 0xf4, //.+%@@@+. - 0x3f, 0xfc, //.@@@@@@. - 0x20, 0x2e, //.%...%@% - 0x00, 0x0f, //......@@ - 0x1f, 0xff, //.+@@@@@@ - 0xbf, 0xff, //%@@@@@@@ - 0xf4, 0x0f, //@@+...@@ - 0xf4, 0x2f, //@@+..%@@ - 0xbf, 0xef, //%@@@@%@@ - 0x2f, 0x8f, //.%@@%.@@ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - - - /*Unicode: U+0062 (b) , Width: 9 */ - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0xf0, 0x00, 0x00, //@@....... - 0xf0, 0x00, 0x00, //@@....... - 0xf0, 0x00, 0x00, //@@....... - 0xf0, 0x00, 0x00, //@@....... - 0xf2, 0xf8, 0x00, //@@.%@@%.. - 0xfb, 0xff, 0x00, //@@%@@@@@. - 0xfc, 0x0f, 0x80, //@@@...@@% - 0xf4, 0x07, 0xc0, //@@+...+@@ - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf4, 0x07, 0xc0, //@@+...+@@ - 0xfc, 0x0f, 0x80, //@@@...@@% - 0xfb, 0xff, 0x00, //@@%@@@@@. - 0xf2, 0xf8, 0x00, //@@.%@@%.. - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0063 (c) , Width: 8 */ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x07, 0xf9, //..+@@@%+ - 0x2f, 0xff, //.%@@@@@@ - 0x7d, 0x02, //+@@+...% - 0xf4, 0x00, //@@+..... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf4, 0x00, //@@+..... - 0x7d, 0x02, //+@@+...% - 0x2f, 0xff, //.%@@@@@@ - 0x07, 0xf9, //..+@@@%+ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - - - /*Unicode: U+0064 (d) , Width: 9 */ - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x03, 0xc0, //.......@@ - 0x00, 0x03, 0xc0, //.......@@ - 0x00, 0x03, 0xc0, //.......@@ - 0x00, 0x03, 0xc0, //.......@@ - 0x0b, 0xe3, 0xc0, //..%@@%.@@ - 0x3f, 0xfb, 0xc0, //.@@@@@%@@ - 0xbc, 0x0f, 0xc0, //%@@...@@@ - 0xf4, 0x07, 0xc0, //@@+...+@@ - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf4, 0x07, 0xc0, //@@+...+@@ - 0xbc, 0x0f, 0xc0, //%@@...@@@ - 0x3f, 0xfb, 0xc0, //.@@@@@%@@ - 0x0b, 0xe3, 0xc0, //..%@@%.@@ - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0065 (e) , Width: 10 */ - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x06, 0xfe, 0x00, //..+%@@@%.. - 0x2f, 0xff, 0xc0, //.%@@@@@@@. - 0x7d, 0x03, 0xe0, //+@@+...@@% - 0xf0, 0x00, 0xf0, //@@......@@ - 0xff, 0xff, 0xf0, //@@@@@@@@@@ - 0xff, 0xff, 0xf0, //@@@@@@@@@@ - 0xf0, 0x00, 0x00, //@@........ - 0x7d, 0x00, 0x70, //+@@+....+@ - 0x2f, 0xff, 0xf0, //.%@@@@@@@@ - 0x06, 0xff, 0x80, //..+%@@@@%. - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0066 (f) , Width: 7 */ - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x02, 0xfc, //...%@@@ - 0x0b, 0xfc, //..%@@@@ - 0x0f, 0x40, //..@@+.. - 0x0f, 0x00, //..@@... - 0xff, 0xfc, //@@@@@@@ - 0xff, 0xfc, //@@@@@@@ - 0x0f, 0x00, //..@@... - 0x0f, 0x00, //..@@... - 0x0f, 0x00, //..@@... - 0x0f, 0x00, //..@@... - 0x0f, 0x00, //..@@... - 0x0f, 0x00, //..@@... - 0x0f, 0x00, //..@@... - 0x0f, 0x00, //..@@... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - - - /*Unicode: U+0067 (g) , Width: 9 */ - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x0b, 0xe3, 0xc0, //..%@@%.@@ - 0x3f, 0xfb, 0xc0, //.@@@@@%@@ - 0xbc, 0x0f, 0xc0, //%@@...@@@ - 0xf4, 0x07, 0xc0, //@@+...+@@ - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf4, 0x07, 0xc0, //@@+...+@@ - 0xbc, 0x0f, 0xc0, //%@@...@@@ - 0x3f, 0xfb, 0xc0, //.@@@@@%@@ - 0x0b, 0xe3, 0xc0, //..%@@%.@@ - 0x00, 0x07, 0x80, //......+@% - 0x20, 0x1f, 0x40, //.%...+@@+ - 0x3f, 0xff, 0x00, //.@@@@@@@. - 0x1b, 0xf8, 0x00, //.+%@@@%.. - - - /*Unicode: U+0068 (h) , Width: 8 */ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf0, 0x00, //@@...... - 0xf2, 0xf8, //@@.%@@%. - 0xfb, 0xfd, //@@%@@@@+ - 0xfc, 0x2f, //@@@..%@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - - - /*Unicode: U+0069 (i) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0xf0, //@@ - 0xf0, //@@ - 0x00, //.. - 0x00, //.. - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+006a (j) , Width: 4 */ - 0x00, //.... - 0x00, //.... - 0x0f, //..@@ - 0x0f, //..@@ - 0x00, //.... - 0x00, //.... - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x0f, //..@@ - 0x1f, //.+@@ - 0xfd, //@@@+ - 0xf4, //@@+. - - - /*Unicode: U+006b (k) , Width: 9 */ - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0xf0, 0x00, 0x00, //@@....... - 0xf0, 0x00, 0x00, //@@....... - 0xf0, 0x00, 0x00, //@@....... - 0xf0, 0x00, 0x00, //@@....... - 0xf0, 0x0f, 0x40, //@@....@@+ - 0xf0, 0x7d, 0x00, //@@..+@@+. - 0xf1, 0xf4, 0x00, //@@.+@@+.. - 0xf7, 0xd0, 0x00, //@@+@@+... - 0xff, 0x00, 0x00, //@@@@..... - 0xff, 0x40, 0x00, //@@@@+.... - 0xf7, 0xd0, 0x00, //@@+@@+... - 0xf1, 0xf4, 0x00, //@@.+@@+.. - 0xf0, 0x7d, 0x00, //@@..+@@+. - 0xf0, 0x1f, 0x40, //@@...+@@+ - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+006c (l) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+006d (m) , Width: 14 */ - 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, //.............. - 0xf2, 0xf4, 0x2f, 0x80, //@@.%@@+..%@@%. - 0xfb, 0xfd, 0xff, 0xd0, //@@%@@@@+@@@@@+ - 0xfc, 0x2f, 0xc2, 0xf0, //@@@..%@@@..%@@ - 0xf0, 0x0f, 0x00, 0xf0, //@@....@@....@@ - 0xf0, 0x0f, 0x00, 0xf0, //@@....@@....@@ - 0xf0, 0x0f, 0x00, 0xf0, //@@....@@....@@ - 0xf0, 0x0f, 0x00, 0xf0, //@@....@@....@@ - 0xf0, 0x0f, 0x00, 0xf0, //@@....@@....@@ - 0xf0, 0x0f, 0x00, 0xf0, //@@....@@....@@ - 0xf0, 0x0f, 0x00, 0xf0, //@@....@@....@@ - 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, //.............. - - - /*Unicode: U+006e (n) , Width: 8 */ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0xf2, 0xf8, //@@.%@@%. - 0xfb, 0xfd, //@@%@@@@+ - 0xfc, 0x2f, //@@@..%@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - - - /*Unicode: U+006f (o) , Width: 10 */ - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x07, 0xfd, 0x00, //..+@@@@+.. - 0x3f, 0xff, 0x80, //.%@@@@@@%. - 0x7d, 0x07, 0xd0, //+@@+..+@@+ - 0xf4, 0x01, 0xf0, //@@+....+@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf0, 0x00, 0xf0, //@@......@@ - 0xf4, 0x01, 0xf0, //@@+....+@@ - 0x7d, 0x07, 0xd0, //+@@+..+@@+ - 0x3f, 0xff, 0x80, //.%@@@@@@%. - 0x07, 0xfd, 0x00, //..+@@@@+.. - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0070 (p) , Width: 9 */ - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0xf2, 0xf8, 0x00, //@@.%@@%.. - 0xfb, 0xff, 0x00, //@@%@@@@@. - 0xfc, 0x0f, 0x80, //@@@...@@% - 0xf4, 0x07, 0xc0, //@@+...+@@ - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf4, 0x07, 0xc0, //@@+...+@@ - 0xfc, 0x0f, 0x80, //@@@...@@% - 0xfb, 0xff, 0x00, //@@%@@@@@. - 0xf2, 0xf8, 0x00, //@@.%@@%.. - 0xf0, 0x00, 0x00, //@@....... - 0xf0, 0x00, 0x00, //@@....... - 0xf0, 0x00, 0x00, //@@....... - 0xf0, 0x00, 0x00, //@@....... - - - /*Unicode: U+0071 (q) , Width: 9 */ - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, //......... - 0x0b, 0xe3, 0xc0, //..%@@%.@@ - 0x3f, 0xfb, 0xc0, //.@@@@@%@@ - 0xbc, 0x0f, 0xc0, //%@@...@@@ - 0xf4, 0x07, 0xc0, //@@+...+@@ - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf0, 0x03, 0xc0, //@@.....@@ - 0xf4, 0x07, 0xc0, //@@+...+@@ - 0xbc, 0x0f, 0xc0, //%@@...@@@ - 0x3f, 0xfb, 0xc0, //.@@@@@%@@ - 0x0b, 0xe3, 0xc0, //..%@@%.@@ - 0x00, 0x03, 0xc0, //.......@@ - 0x00, 0x03, 0xc0, //.......@@ - 0x00, 0x03, 0xc0, //.......@@ - 0x00, 0x03, 0xc0, //.......@@ - - - /*Unicode: U+0072 (r) , Width: 6 */ - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0xf2, 0xf0, //@@.%@@ - 0xfb, 0xf0, //@@%@@@ - 0xfd, 0x00, //@@@+.. - 0xf4, 0x00, //@@+... - 0xf0, 0x00, //@@.... - 0xf0, 0x00, //@@.... - 0xf0, 0x00, //@@.... - 0xf0, 0x00, //@@.... - 0xf0, 0x00, //@@.... - 0xf0, 0x00, //@@.... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - - - /*Unicode: U+0073 (s) , Width: 7 */ - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x2f, 0xe4, //.+@@@%+ - 0xbf, 0xfc, //%@@@@@@ - 0xf4, 0x08, //@@+...% - 0xf9, 0x00, //@@%+... - 0x7f, 0xf0, //+@@@@@. - 0x06, 0xfc, //..+%@@% - 0x00, 0x3c, //.....@@ - 0x90, 0x7c, //%+..+@@ - 0xff, 0xf8, //@@@@@@% - 0x2f, 0xd0, //.%@@@+. - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - 0x00, 0x00, //....... - - - /*Unicode: U+0074 (t) , Width: 6 */ - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x3c, 0x00, //.@@... - 0x3c, 0x00, //.@@... - 0x3c, 0x00, //.@@... - 0xff, 0xf0, //@@@@@@ - 0xff, 0xf0, //@@@@@@ - 0x3c, 0x00, //.@@... - 0x3c, 0x00, //.@@... - 0x3c, 0x00, //.@@... - 0x3c, 0x00, //.@@... - 0x3c, 0x00, //.@@... - 0x3d, 0x00, //.@@+.. - 0x2f, 0xf0, //.%@@@@ - 0x0b, 0xf0, //..%@@@ - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - 0x00, 0x00, //...... - - - /*Unicode: U+0075 (u) , Width: 8 */ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0xf0, 0x0f, //@@....@@ - 0xf8, 0x3f, //@@%..@@@ - 0x7f, 0xef, //+@@@@%@@ - 0x2f, 0x8f, //.%@@%.@@ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - - - /*Unicode: U+0076 (v) , Width: 12 */ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x3c, 0x00, 0x3c, //.@@......@@. - 0x2d, 0x00, 0x78, //.%@+....+@%. - 0x1f, 0x00, 0xf0, //..@@....@@.. - 0x0f, 0x00, 0xf0, //..@@....@@.. - 0x07, 0x82, 0xd0, //..+@%..%@+.. - 0x03, 0xc3, 0xc0, //...@@..@@... - 0x02, 0xc7, 0x80, //...%@.+@%... - 0x01, 0xef, 0x00, //...+@%@@.... - 0x00, 0xff, 0x00, //....@@@@.... - 0x00, 0x7d, 0x00, //....+@@+.... - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0077 (w) , Width: 15 */ - 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, //............... - 0x3c, 0x0f, 0xc0, 0xf0, //.@@...@@@...@@. - 0x3c, 0x0f, 0xc0, 0xf0, //.@@...@@@...@@. - 0x2d, 0x1f, 0xd1, 0xe0, //.%@+.+@@@+.+@%. - 0x1e, 0x2d, 0xe2, 0xd0, //.+@%.%@+@%.%@+. - 0x0f, 0x3c, 0xf3, 0xc0, //..@@.@@.@@.@@.. - 0x0f, 0x38, 0xb3, 0xc0, //..@@.@%.%@.@@.. - 0x0b, 0xb4, 0x7b, 0x80, //..%@%@+.+@%@%.. - 0x07, 0xf0, 0x3f, 0x40, //..+@@@...@@@+.. - 0x03, 0xf0, 0x3f, 0x00, //...@@@...@@@... - 0x03, 0xe0, 0x2f, 0x00, //...@@%...%@@... - 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, //............... - - - /*Unicode: U+0078 (x) , Width: 10 */ - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0xbc, 0x03, 0xe0, //%@@....@@% - 0x3d, 0x07, 0xc0, //.@@+..+@@. - 0x1f, 0x0f, 0x00, //.+@@..@@.. - 0x0b, 0x5e, 0x00, //..%@++@%.. - 0x03, 0xfc, 0x00, //...@@@@... - 0x03, 0xfc, 0x00, //...@@@@... - 0x0b, 0x5e, 0x00, //..%@++@%.. - 0x1f, 0x0f, 0x40, //.+@@..@@+. - 0x3d, 0x07, 0xc0, //.@@+..+@@. - 0xbc, 0x03, 0xe0, //%@@....@@% - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0079 (y) , Width: 12 */ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, //............ - 0x3c, 0x00, 0x3c, //.@@......@@. - 0x2d, 0x00, 0x78, //.%@+....+@%. - 0x0f, 0x00, 0xf0, //..@@....@@.. - 0x0b, 0x41, 0xf0, //..%@+..+@@.. - 0x03, 0xc3, 0xd0, //...@@..@@+.. - 0x03, 0xd3, 0xc0, //...@@+.@@... - 0x01, 0xeb, 0x40, //...+@%%@+... - 0x00, 0xff, 0x00, //....@@@@.... - 0x00, 0x7d, 0x00, //....+@@+.... - 0x00, 0x3c, 0x00, //.....@@..... - 0x00, 0x78, 0x00, //....+@%..... - 0x00, 0xb0, 0x00, //....%@...... - 0x0f, 0xe0, 0x00, //..@@@%...... - 0x0f, 0x80, 0x00, //..@@%....... - - - /*Unicode: U+007a (z) , Width: 8 */ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, //@@@@@@@@ - 0x00, 0x7c, //....+@@. - 0x00, 0xf4, //....@@+. - 0x03, 0xf0, //...@@@.. - 0x0b, 0xc0, //..%@@... - 0x1f, 0x40, //.+@@+... - 0x3e, 0x00, //.@@%.... - 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, //@@@@@@@@ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - - - /*Unicode: U+007b ({) , Width: 8 */ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0x00, 0xbf, //....%@@@ - 0x02, 0xff, //...%@@@@ - 0x03, 0xd0, //...@@+.. - 0x03, 0xc0, //...@@... - 0x03, 0xc0, //...@@... - 0x03, 0xc0, //...@@... - 0x0b, 0xc0, //..%@@... - 0xff, 0x00, //@@@@.... - 0xff, 0x00, //@@@@.... - 0x0b, 0x80, //..%@%... - 0x03, 0xc0, //...@@... - 0x03, 0xc0, //...@@... - 0x03, 0xc0, //...@@... - 0x03, 0xc0, //...@@... - 0x03, 0xd0, //...@@+.. - 0x02, 0xff, //...%@@@@ - 0x00, 0xbf, //....%@@@ - 0x00, 0x00, //........ - - - /*Unicode: U+007c (|) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - 0xf0, //@@ - - - /*Unicode: U+007d (}) , Width: 8 */ - 0x00, 0x00, //........ - 0x00, 0x00, //........ - 0xfe, 0x00, //@@@%.... - 0xff, 0x80, //@@@@%... - 0x07, 0xc0, //..+@@... - 0x03, 0xc0, //...@@... - 0x03, 0xc0, //...@@... - 0x03, 0xc0, //...@@... - 0x03, 0xe0, //...@@%.. - 0x00, 0xff, //....@@@@ - 0x00, 0xff, //....@@@@ - 0x02, 0xe0, //...%@%.. - 0x03, 0xc0, //...@@... - 0x03, 0xc0, //...@@... - 0x03, 0xc0, //...@@... - 0x03, 0xc0, //...@@... - 0x07, 0xc0, //..+@@... - 0xff, 0x80, //@@@@%... - 0xfe, 0x00, //@@@%.... - 0x00, 0x00, //........ - - - /*Unicode: U+007e (~) , Width: 11 */ - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x2f, 0xe0, 0x1c, //.%@@@%...+@ - 0xff, 0xff, 0xfc, //@@@@@@@@@@@ - 0xd0, 0x6f, 0xe0, //@+...%@@@%. - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, //........... - - - -#elif LV_USE_FONT_DEJAVU_20 == 4 - /*Unicode: U+0020 ( ) , Width: 6 */ - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - - - /*Unicode: U+0021 (!) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xee, //@@ - 0xdd, //@@ - 0x00, //.. - 0x00, //.. - 0xff, //@@ - 0xff, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+0022 (") , Width: 6 */ - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0xff, 0x00, 0xff, //@@..@@ - 0xff, 0x00, 0xff, //@@..@@ - 0xff, 0x00, 0xff, //@@..@@ - 0xff, 0x00, 0xff, //@@..@@ - 0xff, 0x00, 0xff, //@@..@@ - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - - - /*Unicode: U+0023 (#) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x2f, 0x30, 0x4f, 0x10, //.....@..+@.. - 0x00, 0x00, 0x6f, 0x00, 0x7d, 0x00, //....+@..+@.. - 0x00, 0x00, 0x9c, 0x00, 0xba, 0x00, //....%@..%%.. - 0x00, 0x00, 0xd8, 0x00, 0xe6, 0x00, //....@%..@+.. - 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, //.@@@@@@@@@@@ - 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, //.@@@@@@@@@@@ - 0x00, 0x07, 0xe0, 0x09, 0xd0, 0x00, //...+@..%@... - 0x00, 0x0c, 0x90, 0x0e, 0x70, 0x00, //...@%..@+... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, //@@@@@@@@@@@. - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, //@@@@@@@@@@@. - 0x00, 0x6f, 0x00, 0x8d, 0x00, 0x00, //..+@..%@.... - 0x00, 0xab, 0x00, 0xb9, 0x00, 0x00, //..%%..%%.... - 0x00, 0xd8, 0x00, 0xf6, 0x00, 0x00, //..@%..@+.... - 0x01, 0xf4, 0x02, 0xf2, 0x00, 0x00, //..@+..@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0024 ($) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0xf0, 0x00, 0x00, //....@.... - 0x00, 0x00, 0xf0, 0x00, 0x00, //....@.... - 0x04, 0xbe, 0xfe, 0xa3, 0x00, //.+%@@@%.. - 0x6f, 0xff, 0xff, 0xff, 0x00, //+@@@@@@@. - 0xef, 0x91, 0xf1, 0x5c, 0x00, //@@%.@.+@. - 0xff, 0x10, 0xf0, 0x00, 0x00, //@@..@.... - 0xbf, 0xd8, 0xf2, 0x00, 0x00, //%@@%@.... - 0x1c, 0xff, 0xff, 0xd6, 0x00, //.@@@@@@+. - 0x00, 0x37, 0xfe, 0xff, 0x60, //...+@@@@+ - 0x00, 0x00, 0xf0, 0x6f, 0xd0, //....@.+@@ - 0x00, 0x00, 0xf0, 0x0f, 0xf0, //....@..@@ - 0xc6, 0x10, 0xf1, 0x9f, 0xe0, //@+..@.%@@ - 0xff, 0xff, 0xff, 0xff, 0x60, //@@@@@@@@+ - 0x28, 0xce, 0xfe, 0xb4, 0x00, //.%@@@@%+. - 0x00, 0x00, 0xf0, 0x00, 0x00, //....@.... - 0x00, 0x00, 0xf0, 0x00, 0x00, //....@.... - 0x00, 0x00, 0xf0, 0x00, 0x00, //....@.... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0025 (%) , Width: 15 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x08, 0xee, 0x80, 0x00, 0x00, 0x4d, 0x00, 0x00, //.%@@%.....+@... - 0x7f, 0x66, 0xf7, 0x00, 0x00, 0xe3, 0x00, 0x00, //+@++@+....@.... - 0xdf, 0x11, 0xfd, 0x00, 0x09, 0x90, 0x00, 0x00, //@@..@@...%%.... - 0xff, 0x00, 0xff, 0x00, 0x3e, 0x00, 0x00, 0x00, //@@..@@...@..... - 0xdf, 0x11, 0xfd, 0x00, 0xc5, 0x00, 0x00, 0x00, //@@..@@..@+..... - 0x8f, 0x66, 0xf7, 0x07, 0xb0, 0x00, 0x00, 0x00, //+@++@+.+%...... - 0x08, 0xee, 0x80, 0x1e, 0x10, 0x8e, 0xe8, 0x00, //.%@@%..@..%@@%. - 0x00, 0x00, 0x00, 0xb7, 0x07, 0xf6, 0x6f, 0x70, //......%+.+@++@+ - 0x00, 0x00, 0x05, 0xc0, 0x0d, 0xf1, 0x1f, 0xd0, //.....+@..@@..@@ - 0x00, 0x00, 0x0e, 0x30, 0x0f, 0xf0, 0x0f, 0xf0, //.....@...@@..@@ - 0x00, 0x00, 0x99, 0x00, 0x0d, 0xf1, 0x1f, 0xd0, //....%%...@@..@@ - 0x00, 0x03, 0xe0, 0x00, 0x07, 0xf6, 0x6f, 0x70, //....@....+@++@+ - 0x00, 0x0d, 0x40, 0x00, 0x00, 0x8e, 0xe8, 0x00, //...@+.....%@@%. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - - - /*Unicode: U+0026 (&) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x04, 0xcf, 0xeb, 0x40, 0x00, //...+@@@%+... - 0x00, 0x5f, 0xff, 0xff, 0xf0, 0x00, //..+@@@@@@... - 0x00, 0xdf, 0x70, 0x04, 0xc0, 0x00, //..@@+..+%... - 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, //..@@........ - 0x00, 0xbf, 0x80, 0x00, 0x00, 0x00, //..%@%....... - 0x00, 0x9f, 0xf9, 0x00, 0x00, 0x00, //..%@@%...... - 0x0b, 0xf8, 0xff, 0x90, 0x1f, 0xe0, //.%@%@@%..@@. - 0x8f, 0x50, 0x5f, 0xf9, 0x5f, 0x90, //%@+.+@@%+@%. - 0xef, 0x00, 0x04, 0xff, 0xef, 0x10, //@@...+@@@@.. - 0xff, 0x40, 0x00, 0x6f, 0xf5, 0x00, //@@+...+@@+.. - 0xaf, 0xe5, 0x10, 0x6f, 0xf9, 0x00, //%@@+..+@@%.. - 0x1e, 0xff, 0xff, 0xfc, 0xff, 0x80, //.@@@@@@@@@%. - 0x01, 0x8d, 0xfe, 0x90, 0x5f, 0xf8, //..%@@@%.+@@% - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0027 (') , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+0028 (() , Width: 4 */ - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x00, 0x8c, //..%@ - 0x02, 0xf5, //..@+ - 0x0a, 0xe0, //.%@. - 0x1f, 0xa0, //.@%. - 0x6f, 0x60, //+@+. - 0xbf, 0x30, //%@.. - 0xdf, 0x10, //@@.. - 0xff, 0x00, //@@.. - 0xff, 0x00, //@@.. - 0xdf, 0x10, //@@.. - 0xbf, 0x30, //%@.. - 0x6f, 0x60, //+@+. - 0x1f, 0xa0, //.@%. - 0x0a, 0xf0, //.%@. - 0x02, 0xf5, //..@+ - 0x00, 0x8c, //..%@ - 0x00, 0x00, //.... - 0x00, 0x00, //.... - - - /*Unicode: U+0029 ()) , Width: 4 */ - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0xc8, 0x00, //@%.. - 0x5f, 0x20, //+@.. - 0x0f, 0xa0, //.@%. - 0x0a, 0xf1, //.%@. - 0x06, 0xf6, //.+@+ - 0x03, 0xfa, //..@% - 0x01, 0xfd, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x01, 0xfd, //..@@ - 0x03, 0xfa, //..@% - 0x06, 0xf6, //.+@+ - 0x0a, 0xf1, //.%@. - 0x0f, 0xa0, //.@%. - 0x5f, 0x20, //+@.. - 0xc8, 0x00, //@%.. - 0x00, 0x00, //.... - 0x00, 0x00, //.... - - - /*Unicode: U+002a (*) , Width: 7 */ - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x0f, 0x00, 0x00, //...@... - 0xa2, 0x0f, 0x02, 0xa0, //%..@..% - 0x5e, 0x5f, 0x5e, 0x50, //+@+@+@+ - 0x02, 0xcf, 0xc2, 0x00, //..@@@.. - 0x02, 0xcf, 0xc2, 0x00, //..@@@.. - 0x5e, 0x5f, 0x5e, 0x50, //+@+@+@+ - 0xa2, 0x0f, 0x02, 0xa0, //%..@..% - 0x00, 0x0f, 0x00, 0x00, //...@... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - - - /*Unicode: U+002b (+) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@@@ - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+002c (,) , Width: 3 */ - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x0f, 0xf0, //.@@ - 0x1f, 0xd0, //.@@ - 0x6f, 0x20, //+@. - 0xc6, 0x00, //@+. - 0x00, 0x00, //... - 0x00, 0x00, //... - - - /*Unicode: U+002d (-) , Width: 5 */ - 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, //..... - 0xff, 0xff, 0xf0, //@@@@@ - 0xff, 0xff, 0xf0, //@@@@@ - 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, //..... - - - /*Unicode: U+002e (.) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0xff, //@@ - 0xff, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+002f (/) , Width: 6 */ - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x03, 0xfd, //....@@ - 0x00, 0x07, 0xf9, //...+@% - 0x00, 0x0b, 0xf5, //...%@+ - 0x00, 0x0f, 0xf1, //...@@. - 0x00, 0x3f, 0xd0, //...@@. - 0x00, 0x8f, 0x90, //..+@%. - 0x00, 0xcf, 0x40, //..@@+. - 0x00, 0xff, 0x00, //..@@.. - 0x04, 0xfc, 0x00, //.+@@.. - 0x08, 0xf8, 0x00, //.%@%.. - 0x0d, 0xf4, 0x00, //.@@+.. - 0x1f, 0xf0, 0x00, //.@@... - 0x5f, 0xb0, 0x00, //+@%... - 0x9f, 0x70, 0x00, //%@+... - 0xdf, 0x30, 0x00, //@@.... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - - - /*Unicode: U+0030 (0) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x7d, 0xfd, 0x70, 0x00, //..+@@@+.. - 0x0a, 0xff, 0xff, 0xfa, 0x00, //.%@@@@@%. - 0x4f, 0xf4, 0x04, 0xff, 0x40, //+@@+.+@@+ - 0xaf, 0x70, 0x00, 0x7f, 0xa0, //%@+...+@% - 0xdf, 0x20, 0x00, 0x2f, 0xd0, //@@.....@@ - 0xff, 0x00, 0x00, 0x0f, 0xf0, //@@.....@@ - 0xff, 0x00, 0x00, 0x0f, 0xf0, //@@.....@@ - 0xff, 0x00, 0x00, 0x0f, 0xf0, //@@.....@@ - 0xdf, 0x20, 0x00, 0x2f, 0xd0, //@@.....@@ - 0xaf, 0x70, 0x00, 0x7f, 0xa0, //%@+...+@% - 0x4f, 0xf4, 0x04, 0xff, 0x40, //+@@+.+@@+ - 0x0a, 0xff, 0xff, 0xfa, 0x00, //.%@@@@@%. - 0x00, 0x8d, 0xfd, 0x80, 0x00, //..+@@@+.. - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0031 (1) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x27, 0xcf, 0xf0, 0x00, //.+@@@... - 0xff, 0xff, 0xf0, 0x00, //@@@@@... - 0xd7, 0x2f, 0xf0, 0x00, //@+.@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0032 (2) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x39, 0xdf, 0xea, 0x30, 0x00, //.%@@@%... - 0xff, 0xff, 0xff, 0xf5, 0x00, //@@@@@@@+. - 0xc5, 0x10, 0x2c, 0xfd, 0x00, //@+...@@@. - 0x00, 0x00, 0x02, 0xff, 0x00, //......@@. - 0x00, 0x00, 0x01, 0xfd, 0x00, //......@@. - 0x00, 0x00, 0x08, 0xf7, 0x00, //.....%@+. - 0x00, 0x00, 0x5f, 0xd0, 0x00, //....+@@.. - 0x00, 0x05, 0xff, 0x20, 0x00, //...+@@... - 0x00, 0x6f, 0xf4, 0x00, 0x00, //..+@@+... - 0x06, 0xff, 0x60, 0x00, 0x00, //.+@@+.... - 0x7f, 0xf6, 0x00, 0x00, 0x00, //+@@+..... - 0xff, 0xff, 0xff, 0xff, 0x10, //@@@@@@@@. - 0xff, 0xff, 0xff, 0xff, 0x10, //@@@@@@@@. - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0033 (3) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x38, 0xdf, 0xfd, 0x92, 0x00, //.%@@@@%.. - 0xff, 0xff, 0xff, 0xff, 0x50, //@@@@@@@@+ - 0xc6, 0x20, 0x03, 0xaf, 0xd0, //@+....%@@ - 0x00, 0x00, 0x00, 0x1f, 0xe0, //.......@@ - 0x00, 0x00, 0x02, 0xaf, 0x90, //......%@% - 0x00, 0xff, 0xff, 0xd7, 0x00, //..@@@@@+. - 0x00, 0xff, 0xff, 0xf8, 0x00, //..@@@@@%. - 0x00, 0x00, 0x14, 0xcf, 0x80, //.....+@@% - 0x00, 0x00, 0x00, 0x1f, 0xe0, //.......@@ - 0x00, 0x00, 0x00, 0x2f, 0xf0, //.......@@ - 0xb4, 0x10, 0x14, 0xdf, 0xb0, //%+...+@@% - 0xff, 0xff, 0xff, 0xfe, 0x20, //@@@@@@@@. - 0x39, 0xdf, 0xfd, 0x81, 0x00, //.%@@@@%.. - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0034 (4) , Width: 10 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x0a, 0xff, 0x00, //.....%@@.. - 0x00, 0x00, 0x5f, 0xff, 0x00, //....+@@@.. - 0x00, 0x01, 0xe7, 0xff, 0x00, //....@+@@.. - 0x00, 0x0b, 0xc0, 0xff, 0x00, //...%@.@@.. - 0x00, 0x6f, 0x20, 0xff, 0x00, //..+@..@@.. - 0x02, 0xf7, 0x00, 0xff, 0x00, //..@+..@@.. - 0x0c, 0xc0, 0x00, 0xff, 0x00, //.@@...@@.. - 0x7f, 0x20, 0x00, 0xff, 0x00, //+@....@@.. - 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@ - 0x00, 0x00, 0x00, 0xff, 0x00, //......@@.. - 0x00, 0x00, 0x00, 0xff, 0x00, //......@@.. - 0x00, 0x00, 0x00, 0xff, 0x00, //......@@.. - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0035 (5) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x0f, 0xff, 0xff, 0xf0, //.@@@@@@. - 0x0f, 0xff, 0xff, 0xf0, //.@@@@@@. - 0x0f, 0xf0, 0x00, 0x00, //.@@..... - 0x0f, 0xf0, 0x00, 0x00, //.@@..... - 0x0f, 0xfd, 0xfc, 0x30, //.@@@@@.. - 0x0f, 0xff, 0xff, 0xf2, //.@@@@@@. - 0x0a, 0x20, 0x3d, 0xfa, //.%...@@% - 0x00, 0x00, 0x03, 0xfe, //......@@ - 0x00, 0x00, 0x00, 0xff, //......@@ - 0x00, 0x00, 0x03, 0xfe, //......@@ - 0xb4, 0x00, 0x4e, 0xf9, //%...+@@% - 0xff, 0xff, 0xff, 0xe1, //@@@@@@@. - 0x4a, 0xef, 0xd9, 0x10, //.%@@@%.. - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0036 (6) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x3a, 0xef, 0xc4, 0x00, //...%@@@+. - 0x04, 0xff, 0xff, 0xff, 0x00, //.+@@@@@@. - 0x1e, 0xfb, 0x20, 0x3b, 0x00, //.@@%...%. - 0x8f, 0xd0, 0x00, 0x00, 0x00, //+@@...... - 0xcf, 0x60, 0x00, 0x00, 0x00, //@@+...... - 0xef, 0x39, 0xef, 0xb3, 0x00, //@@.%@@%.. - 0xff, 0xaf, 0xff, 0xff, 0x30, //@@%@@@@@. - 0xff, 0xb2, 0x02, 0xbf, 0xb0, //@@%...%@% - 0xdf, 0x10, 0x00, 0x1f, 0xf0, //@@.....@@ - 0xaf, 0x10, 0x00, 0x1f, 0xf0, //%@.....@@ - 0x4f, 0xb2, 0x02, 0xbf, 0xb0, //+@%...%@% - 0x0a, 0xff, 0xff, 0xff, 0x30, //.%@@@@@@. - 0x00, 0x7d, 0xfe, 0xa2, 0x00, //..+@@@%.. - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0037 (7) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0xff, 0xfc, //@@@@@@@@ - 0x00, 0x00, 0x0a, 0xf7, //.....%@+ - 0x00, 0x00, 0x0f, 0xf2, //.....@@. - 0x00, 0x00, 0x4f, 0xd0, //....+@@. - 0x00, 0x00, 0x9f, 0x70, //....%@+. - 0x00, 0x00, 0xef, 0x20, //....@@.. - 0x00, 0x03, 0xfd, 0x00, //....@@.. - 0x00, 0x09, 0xf8, 0x00, //...%@%.. - 0x00, 0x0e, 0xf3, 0x00, //...@@... - 0x00, 0x3f, 0xe0, 0x00, //...@@... - 0x00, 0x8f, 0x90, 0x00, //..%@%... - 0x00, 0xdf, 0x40, 0x00, //..@@+... - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0038 (8) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x04, 0xbe, 0xfe, 0xb4, 0x00, //.+%@@@%+. - 0x6f, 0xff, 0xff, 0xff, 0x60, //+@@@@@@@+ - 0xef, 0x91, 0x01, 0x9f, 0xe0, //@@%...%@@ - 0xef, 0x00, 0x00, 0x1f, 0xe0, //@@.....@@ - 0x9f, 0x91, 0x01, 0x9f, 0x90, //%@%...%@% - 0x07, 0xef, 0xff, 0xe7, 0x00, //.+@@@@@+. - 0x08, 0xff, 0xff, 0xf8, 0x00, //.%@@@@@%. - 0x8f, 0xb2, 0x02, 0xbf, 0x80, //%@%...%@% - 0xef, 0x10, 0x00, 0x1f, 0xe0, //@@.....@@ - 0xff, 0x10, 0x00, 0x1f, 0xf0, //@@.....@@ - 0xcf, 0xb2, 0x02, 0xbf, 0xc0, //@@%...%@@ - 0x4f, 0xff, 0xff, 0xff, 0x40, //+@@@@@@@+ - 0x02, 0xad, 0xfe, 0xb3, 0x00, //..%@@@%.. - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0039 (9) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x02, 0xae, 0xfd, 0x70, 0x00, //..%@@@+.. - 0x3f, 0xff, 0xff, 0xf9, 0x00, //.@@@@@@%. - 0xbf, 0xb2, 0x02, 0xbf, 0x30, //%@%...%@. - 0xff, 0x10, 0x00, 0x1f, 0x90, //@@.....@% - 0xff, 0x10, 0x00, 0x1f, 0xd0, //@@.....@@ - 0xcf, 0xb2, 0x02, 0xbf, 0xf0, //%@%...%@@ - 0x4f, 0xff, 0xff, 0xaf, 0xf0, //.@@@@@%@@ - 0x03, 0xbf, 0xe9, 0x3f, 0xe0, //..%@@%.@@ - 0x00, 0x00, 0x00, 0x6f, 0xc0, //......+@@ - 0x00, 0x00, 0x00, 0xdf, 0x70, //......@@+ - 0x0b, 0x30, 0x2b, 0xfe, 0x10, //.%...%@@. - 0x0f, 0xff, 0xff, 0xf4, 0x00, //.@@@@@@+. - 0x04, 0xcf, 0xea, 0x30, 0x00, //.+@@@%... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+003a (:) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0xff, //@@ - 0xff, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0xff, //@@ - 0xff, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+003b (;) , Width: 3 */ - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x0f, 0xf0, //.@@ - 0x0f, 0xf0, //.@@ - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x00, 0x00, //... - 0x0f, 0xf0, //.@@ - 0x1f, 0xd0, //.@@ - 0x6f, 0x20, //+@. - 0xc6, 0x00, //@+. - 0x00, 0x00, //... - 0x00, 0x00, //... - - - /*Unicode: U+003c (<) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x16, 0xc0, //.........+@ - 0x00, 0x00, 0x00, 0x4a, 0xff, 0xf0, //.......%@@@ - 0x00, 0x01, 0x7d, 0xff, 0xfb, 0x50, //....+@@@@%+ - 0x05, 0xbf, 0xff, 0xd7, 0x10, 0x00, //.+%@@@@+... - 0xef, 0xff, 0xa4, 0x00, 0x00, 0x00, //@@@@%+..... - 0xef, 0xff, 0xa4, 0x00, 0x00, 0x00, //@@@@%+..... - 0x05, 0xbf, 0xff, 0xd7, 0x10, 0x00, //.+%@@@@+... - 0x00, 0x01, 0x7d, 0xff, 0xfb, 0x50, //....+@@@@%+ - 0x00, 0x00, 0x00, 0x4a, 0xff, 0xf0, //......+%@@@ - 0x00, 0x00, 0x00, 0x00, 0x16, 0xc0, //.........+@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+003d (=) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, //@@@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, //@@@@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, //@@@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, //@@@@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+003e (>) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, //@+......... - 0xff, 0xfa, 0x40, 0x00, 0x00, 0x00, //@@@%....... - 0x5b, 0xff, 0xfd, 0x71, 0x00, 0x00, //+%@@@@+.... - 0x00, 0x17, 0xdf, 0xff, 0xb5, 0x00, //...+@@@@%+. - 0x00, 0x00, 0x04, 0xaf, 0xff, 0xe0, //.....+%@@@@ - 0x00, 0x00, 0x04, 0xaf, 0xff, 0xe0, //.....+%@@@@ - 0x00, 0x17, 0xdf, 0xff, 0xb5, 0x00, //...+@@@@%+. - 0x5b, 0xff, 0xfd, 0x71, 0x00, 0x00, //+%@@@@+.... - 0xff, 0xfa, 0x40, 0x00, 0x00, 0x00, //@@@%+...... - 0xc6, 0x10, 0x00, 0x00, 0x00, 0x00, //@+......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+003f (?) , Width: 7 */ - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x4a, 0xef, 0xd6, 0x00, //.%@@@+. - 0xff, 0xff, 0xff, 0x70, //@@@@@@+ - 0xc4, 0x01, 0x9f, 0xd0, //@+..%@@ - 0x00, 0x00, 0x0f, 0xf0, //.....@@ - 0x00, 0x00, 0x4f, 0xa0, //....+@% - 0x00, 0x02, 0xed, 0x10, //....@@. - 0x00, 0x2e, 0xd1, 0x00, //...@@.. - 0x00, 0xcf, 0x30, 0x00, //..@@... - 0x00, 0xff, 0x00, 0x00, //..@@... - 0x00, 0xff, 0x00, 0x00, //..@@... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0xff, 0x00, 0x00, //..@@... - 0x00, 0xff, 0x00, 0x00, //..@@... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - - - /*Unicode: U+0040 (@) , Width: 16 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................ - 0x00, 0x00, 0x18, 0xce, 0xfe, 0xb6, 0x00, 0x00, //.....%@@@@%+.... - 0x00, 0x08, 0xff, 0xff, 0xff, 0xff, 0xe4, 0x00, //...%@@@@@@@@@+.. - 0x00, 0xbf, 0xf9, 0x30, 0x01, 0x5b, 0xff, 0x60, //..%@@%....+%@@+. - 0x09, 0xfe, 0x30, 0x00, 0x00, 0x00, 0x6f, 0xf2, //.%@@........+@@. - 0x2f, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfa, //.@@..........+@% - 0x9f, 0x90, 0x02, 0xce, 0x3f, 0xf0, 0x01, 0xfe, //%@%...@@.@@...@@ - 0xdf, 0x30, 0x0b, 0xff, 0xcf, 0xf0, 0x00, 0xff, //@@...%@@@@@...@@ - 0xff, 0x00, 0x0e, 0xf3, 0x3f, 0xf0, 0x05, 0xfc, //@@...@@..@@..+@@ - 0xff, 0x00, 0x0e, 0xf3, 0x3f, 0xf1, 0x7f, 0xf5, //@@...@@..@@.+@@+ - 0xdf, 0x20, 0x0b, 0xff, 0xcf, 0xff, 0xff, 0x60, //@@...%@@@@@@@@+. - 0x9f, 0x80, 0x02, 0xce, 0x3f, 0xeb, 0x71, 0x00, //%@%...@@.@@%+... - 0x4f, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.@@............. - 0x0b, 0xfd, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, //.%@@............ - 0x01, 0xdf, 0xf8, 0x20, 0x02, 0x8d, 0x20, 0x00, //..@@@+....+@.... - 0x00, 0x1b, 0xff, 0xff, 0xff, 0xfc, 0x10, 0x00, //...%@@@@@@@@.... - 0x00, 0x00, 0x4a, 0xef, 0xeb, 0x50, 0x00, 0x00, //....+%@@@%+..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................ - - - /*Unicode: U+0041 (A) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x0e, 0xe0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x5f, 0xf5, 0x00, 0x00, //....+@@+.... - 0x00, 0x00, 0xcf, 0xfc, 0x00, 0x00, //....@@@@.... - 0x00, 0x02, 0xfc, 0xcf, 0x20, 0x00, //....@@@@.... - 0x00, 0x09, 0xf6, 0x5f, 0x90, 0x00, //...%@++@%... - 0x00, 0x0e, 0xf0, 0x0e, 0xe0, 0x00, //...@@..@@... - 0x00, 0x5f, 0xa0, 0x08, 0xf6, 0x00, //..+@%..%@+.. - 0x00, 0xcf, 0x30, 0x02, 0xfc, 0x00, //..@@....@@.. - 0x02, 0xff, 0xff, 0xff, 0xff, 0x20, //..@@@@@@@@.. - 0x09, 0xff, 0xff, 0xff, 0xff, 0x90, //.%@@@@@@@@%. - 0x0f, 0xf1, 0x00, 0x00, 0x1f, 0xf0, //.@@......@@. - 0x6f, 0xb0, 0x00, 0x00, 0x0b, 0xf6, //+@%......%@+ - 0xcf, 0x50, 0x00, 0x00, 0x05, 0xfc, //@@+......+@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0042 (B) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0xff, 0xff, 0xfc, 0x60, 0x00, //@@@@@@+.. - 0xff, 0xff, 0xff, 0xf8, 0x00, //@@@@@@@%. - 0xff, 0x00, 0x07, 0xfe, 0x00, //@@...+@@. - 0xff, 0x00, 0x00, 0xff, 0x00, //@@....@@. - 0xff, 0x00, 0x07, 0xfa, 0x00, //@@...+@%. - 0xff, 0xff, 0xff, 0x91, 0x00, //@@@@@@%.. - 0xff, 0xff, 0xff, 0xd6, 0x00, //@@@@@@@+. - 0xff, 0x00, 0x02, 0xbf, 0x60, //@@....%@+ - 0xff, 0x00, 0x00, 0x1f, 0xd0, //@@.....@@ - 0xff, 0x00, 0x00, 0x1f, 0xf0, //@@.....@@ - 0xff, 0x00, 0x02, 0xbf, 0xc0, //@@....%@@ - 0xff, 0xff, 0xff, 0xff, 0x40, //@@@@@@@@+ - 0xff, 0xff, 0xfe, 0xa3, 0x00, //@@@@@@%.. - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0043 (C) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x05, 0xbe, 0xff, 0xd9, 0x30, //...+%@@@@%. - 0x01, 0xcf, 0xff, 0xff, 0xff, 0xf0, //..@@@@@@@@@ - 0x0c, 0xfe, 0x61, 0x00, 0x26, 0xc0, //.@@@+....+@ - 0x6f, 0xd1, 0x00, 0x00, 0x00, 0x00, //+@@........ - 0xbf, 0x50, 0x00, 0x00, 0x00, 0x00, //%@+........ - 0xef, 0x10, 0x00, 0x00, 0x00, 0x00, //@@......... - 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //@@......... - 0xef, 0x10, 0x00, 0x00, 0x00, 0x00, //@@......... - 0xbf, 0x50, 0x00, 0x00, 0x00, 0x00, //%@+........ - 0x6f, 0xd1, 0x00, 0x00, 0x00, 0x00, //+@@........ - 0x0c, 0xfe, 0x61, 0x00, 0x26, 0xc0, //.@@@+....+@ - 0x01, 0xcf, 0xff, 0xff, 0xff, 0xf0, //..@@@@@@@@@ - 0x00, 0x06, 0xbe, 0xff, 0xd9, 0x30, //...+%@@@@%. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+0044 (D) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0xff, 0xff, 0xfe, 0xb6, 0x00, 0x00, //@@@@@@%+... - 0xff, 0xff, 0xff, 0xff, 0xe3, 0x00, //@@@@@@@@@.. - 0xff, 0x00, 0x01, 0x5d, 0xfe, 0x10, //@@....+@@@. - 0xff, 0x00, 0x00, 0x00, 0xdf, 0x70, //@@......@@+ - 0xff, 0x00, 0x00, 0x00, 0x5f, 0xc0, //@@......+@@ - 0xff, 0x00, 0x00, 0x00, 0x1f, 0xe0, //@@.......@@ - 0xff, 0x00, 0x00, 0x00, 0x0f, 0xf0, //@@.......@@ - 0xff, 0x00, 0x00, 0x00, 0x1f, 0xe0, //@@.......@@ - 0xff, 0x00, 0x00, 0x00, 0x5f, 0xc0, //@@......+@@ - 0xff, 0x00, 0x00, 0x00, 0xdf, 0x70, //@@......@@+ - 0xff, 0x00, 0x01, 0x5d, 0xfe, 0x10, //@@....+@@@. - 0xff, 0xff, 0xff, 0xff, 0xe3, 0x00, //@@@@@@@@@.. - 0xff, 0xff, 0xfe, 0xb6, 0x00, 0x00, //@@@@@@%+... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+0045 (E) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0046 (F) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0xff, 0xf0, //@@@@@@@. - 0xff, 0xff, 0xff, 0xf0, //@@@@@@@. - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0047 (G) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x06, 0xbe, 0xff, 0xc9, 0x30, //...+%@@@@%. - 0x02, 0xdf, 0xff, 0xff, 0xff, 0xf0, //..@@@@@@@@@ - 0x0d, 0xfd, 0x51, 0x00, 0x26, 0xc0, //.@@@+....+@ - 0x6f, 0xd0, 0x00, 0x00, 0x00, 0x00, //+@@........ - 0xcf, 0x50, 0x00, 0x00, 0x00, 0x00, //%@+........ - 0xef, 0x10, 0x00, 0xff, 0xff, 0xf0, //@@....@@@@@ - 0xff, 0x00, 0x00, 0xff, 0xff, 0xf0, //@@....@@@@@ - 0xef, 0x10, 0x00, 0x00, 0x0f, 0xf0, //@@.......@@ - 0xcf, 0x40, 0x00, 0x00, 0x0f, 0xf0, //@@+......@@ - 0x7f, 0xc0, 0x00, 0x00, 0x0f, 0xf0, //+@@......@@ - 0x0d, 0xfc, 0x40, 0x01, 0x6f, 0xf0, //.@@@+...+@@ - 0x02, 0xef, 0xff, 0xff, 0xff, 0x60, //..@@@@@@@@+ - 0x00, 0x07, 0xcf, 0xfd, 0x92, 0x00, //...+@@@@%.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+0048 (H) , Width: 10 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@ - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0049 (I) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+004a (J) , Width: 4 */ - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x02, 0xfe, //..@@ - 0x2b, 0xfa, //.%@% - 0xff, 0xf3, //@@@. - 0xfb, 0x30, //@%.. - - - /*Unicode: U+004b (K) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0xff, 0x00, 0x00, 0x2e, 0xf7, 0x00, //@@.....@@+. - 0xff, 0x00, 0x02, 0xef, 0x60, 0x00, //@@....@@+.. - 0xff, 0x00, 0x2e, 0xf6, 0x00, 0x00, //@@...@@+... - 0xff, 0x02, 0xef, 0x50, 0x00, 0x00, //@@..@@+.... - 0xff, 0x3e, 0xf4, 0x00, 0x00, 0x00, //@@.@@+..... - 0xff, 0xef, 0x40, 0x00, 0x00, 0x00, //@@@@+...... - 0xff, 0xfe, 0x20, 0x00, 0x00, 0x00, //@@@@....... - 0xff, 0x4f, 0xe2, 0x00, 0x00, 0x00, //@@+@@...... - 0xff, 0x05, 0xfe, 0x30, 0x00, 0x00, //@@.+@@..... - 0xff, 0x00, 0x5f, 0xe3, 0x00, 0x00, //@@..+@@.... - 0xff, 0x00, 0x06, 0xff, 0x30, 0x00, //@@...+@@... - 0xff, 0x00, 0x00, 0x6f, 0xf4, 0x00, //@@....+@@.. - 0xff, 0x00, 0x00, 0x07, 0xff, 0x40, //@@.....+@@+ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+004c (L) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+004d (M) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0xff, 0xf6, 0x00, 0x00, 0x4f, 0xff, //@@@+....+@@@ - 0xff, 0xfc, 0x00, 0x00, 0xaf, 0xff, //@@@%....%@@@ - 0xff, 0xaf, 0x20, 0x01, 0xfa, 0xff, //@@%@....@%@@ - 0xff, 0x4f, 0x80, 0x07, 0xf4, 0xff, //@@.@+..+@.@@ - 0xff, 0x0e, 0xd0, 0x0d, 0xd0, 0xff, //@@.@@..@@.@@ - 0xff, 0x08, 0xf3, 0x3f, 0x80, 0xff, //@@.%@..@+.@@ - 0xff, 0x02, 0xf9, 0x9f, 0x20, 0xff, //@@..@%%@..@@ - 0xff, 0x00, 0xcf, 0xfc, 0x00, 0xff, //@@..@@@@..@@ - 0xff, 0x00, 0x6f, 0xf6, 0x00, 0xff, //@@..+@@+..@@ - 0xff, 0x00, 0x0f, 0xf0, 0x00, 0xff, //@@...@@...@@ - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, //@@........@@ - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, //@@........@@ - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, //@@........@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+004e (N) , Width: 10 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0xff, 0x80, 0x00, 0x00, 0xff, //@@%.....@@ - 0xff, 0xf2, 0x00, 0x00, 0xff, //@@@.....@@ - 0xff, 0xfb, 0x00, 0x00, 0xff, //@@@%....@@ - 0xff, 0xbf, 0x40, 0x00, 0xff, //@@%@+...@@ - 0xff, 0x2f, 0xd0, 0x00, 0xff, //@@.@@...@@ - 0xff, 0x08, 0xf7, 0x00, 0xff, //@@.%@+..@@ - 0xff, 0x01, 0xef, 0x10, 0xff, //@@..@@..@@ - 0xff, 0x00, 0x6f, 0xa0, 0xff, //@@..+@%.@@ - 0xff, 0x00, 0x0d, 0xf4, 0xff, //@@...@@.@@ - 0xff, 0x00, 0x04, 0xfd, 0xff, //@@...+@@@@ - 0xff, 0x00, 0x00, 0xaf, 0xff, //@@....%@@@ - 0xff, 0x00, 0x00, 0x2f, 0xff, //@@.....@@@ - 0xff, 0x00, 0x00, 0x08, 0xff, //@@.....%@@ - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+004f (O) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x07, 0xdf, 0xfd, 0x80, 0x00, //...+@@@@+... - 0x02, 0xef, 0xff, 0xff, 0xfe, 0x20, //..@@@@@@@@.. - 0x0d, 0xfc, 0x40, 0x04, 0xcf, 0xd0, //.@@@+..+@@@. - 0x6f, 0xd0, 0x00, 0x00, 0x0d, 0xf6, //+@@......@@+ - 0xcf, 0x50, 0x00, 0x00, 0x05, 0xfb, //%@+......+@% - 0xef, 0x10, 0x00, 0x00, 0x01, 0xfe, //@@........@@ - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, //@@........@@ - 0xef, 0x10, 0x00, 0x00, 0x01, 0xfe, //@@........@@ - 0xcf, 0x50, 0x00, 0x00, 0x05, 0xfb, //%@+......+@% - 0x6f, 0xd0, 0x00, 0x00, 0x0d, 0xf6, //+@@......@@+ - 0x0d, 0xfc, 0x40, 0x04, 0xcf, 0xd0, //.@@@+..+@@@. - 0x02, 0xef, 0xff, 0xff, 0xfe, 0x20, //..@@@@@@@@.. - 0x00, 0x08, 0xdf, 0xfd, 0x80, 0x00, //...+@@@@+... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0050 (P) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0xff, 0xfc, 0x40, //@@@@@%+. - 0xff, 0xff, 0xff, 0xf4, //@@@@@@@+ - 0xff, 0x00, 0x1a, 0xfc, //@@...%@@ - 0xff, 0x00, 0x01, 0xff, //@@....@@ - 0xff, 0x00, 0x01, 0xff, //@@....@@ - 0xff, 0x00, 0x1a, 0xfc, //@@...%@@ - 0xff, 0xff, 0xff, 0xf4, //@@@@@@@+ - 0xff, 0xff, 0xfc, 0x40, //@@@@@@+. - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0051 (Q) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x07, 0xdf, 0xfd, 0x81, 0x00, //...+@@@@%... - 0x02, 0xef, 0xff, 0xff, 0xfe, 0x20, //..@@@@@@@@.. - 0x0d, 0xfc, 0x40, 0x04, 0xcf, 0xd0, //.@@@+..+@@@. - 0x6f, 0xd0, 0x00, 0x00, 0x0d, 0xf7, //+@@......@@+ - 0xcf, 0x50, 0x00, 0x00, 0x05, 0xfc, //%@+......+@@ - 0xef, 0x10, 0x00, 0x00, 0x01, 0xfe, //@@........@@ - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, //@@........@@ - 0xef, 0x10, 0x00, 0x00, 0x01, 0xfd, //@@........@@ - 0xcf, 0x50, 0x00, 0x00, 0x05, 0xfb, //%@+......+@% - 0x6f, 0xd0, 0x00, 0x00, 0x0d, 0xf4, //+@@......@@+ - 0x0d, 0xfc, 0x40, 0x04, 0xcf, 0xa0, //.@@@+..+@@%. - 0x02, 0xef, 0xff, 0xff, 0xfa, 0x00, //..@@@@@@@%.. - 0x00, 0x18, 0xdf, 0xff, 0xa0, 0x00, //...%@@@@%... - 0x00, 0x00, 0x00, 0x4f, 0xf6, 0x00, //......+@@+.. - 0x00, 0x00, 0x00, 0x06, 0xff, 0x40, //.......+@@+. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0052 (R) , Width: 10 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0xff, 0xff, 0xfc, 0x50, 0x00, //@@@@@@+... - 0xff, 0xff, 0xff, 0xf5, 0x00, //@@@@@@@+.. - 0xff, 0x00, 0x1a, 0xfc, 0x00, //@@...%@@.. - 0xff, 0x00, 0x01, 0xff, 0x00, //@@....@@.. - 0xff, 0x00, 0x01, 0xfe, 0x00, //@@....@@.. - 0xff, 0x00, 0x1a, 0xfa, 0x00, //@@...%@%.. - 0xff, 0xff, 0xff, 0xc1, 0x00, //@@@@@@@... - 0xff, 0xff, 0xff, 0x40, 0x00, //@@@@@@+... - 0xff, 0x00, 0x5f, 0xf3, 0x00, //@@..+@@... - 0xff, 0x00, 0x07, 0xfc, 0x00, //@@...+@@.. - 0xff, 0x00, 0x00, 0xdf, 0x60, //@@....@@+. - 0xff, 0x00, 0x00, 0x4f, 0xe1, //@@....+@@. - 0xff, 0x00, 0x00, 0x0a, 0xfa, //@@.....%@% - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0053 (S) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x03, 0xbe, 0xfd, 0x93, 0x00, //..%@@@%.. - 0x5f, 0xff, 0xff, 0xff, 0x00, //+@@@@@@@. - 0xdf, 0xb2, 0x01, 0x5b, 0x00, //@@%...+%. - 0xff, 0x10, 0x00, 0x00, 0x00, //@@....... - 0xdf, 0x71, 0x00, 0x00, 0x00, //@@+...... - 0x5f, 0xff, 0xda, 0x50, 0x00, //+@@@@%+.. - 0x04, 0xbf, 0xff, 0xfc, 0x10, //..%@@@@@. - 0x00, 0x00, 0x26, 0xdf, 0x90, //.....+@@% - 0x00, 0x00, 0x00, 0x2f, 0xe0, //.......@@ - 0x00, 0x00, 0x00, 0x1f, 0xf0, //.......@@ - 0xc6, 0x20, 0x03, 0xcf, 0xd0, //@+....%@@ - 0xff, 0xff, 0xff, 0xff, 0x50, //@@@@@@@@+ - 0x38, 0xdf, 0xfe, 0xa3, 0x00, //.%@@@@%.. - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0054 (T) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@@@ - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0055 (U) , Width: 10 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0xff, 0x00, 0x00, 0x00, 0xff, //@@......@@ - 0xef, 0x10, 0x00, 0x01, 0xfe, //@@......@@ - 0xcf, 0x50, 0x00, 0x05, 0xfc, //@@+....+@@ - 0x6f, 0xe5, 0x11, 0x5e, 0xf6, //+@@+..+@@+ - 0x0c, 0xff, 0xff, 0xff, 0xc0, //.@@@@@@@@. - 0x00, 0x7d, 0xff, 0xd7, 0x00, //..+@@@@+.. - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0056 (V) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0xcf, 0x50, 0x00, 0x00, 0x05, 0xfc, //@@+......+@@ - 0x6f, 0xb0, 0x00, 0x00, 0x0b, 0xf6, //+@%......%@+ - 0x0f, 0xf1, 0x00, 0x00, 0x1f, 0xf0, //.@@......@@. - 0x09, 0xf7, 0x00, 0x00, 0x7f, 0x90, //.%@+....+@%. - 0x03, 0xfd, 0x00, 0x00, 0xdf, 0x30, //..@@....@@.. - 0x00, 0xdf, 0x30, 0x04, 0xfd, 0x00, //..@@....@@.. - 0x00, 0x6f, 0xa0, 0x0a, 0xf7, 0x00, //..+@%..%@+.. - 0x00, 0x1f, 0xf0, 0x0f, 0xf1, 0x00, //...@@..@@... - 0x00, 0x0a, 0xf6, 0x6f, 0xa0, 0x00, //...%@++@%... - 0x00, 0x04, 0xfc, 0xcf, 0x40, 0x00, //....@@@@+... - 0x00, 0x00, 0xdf, 0xfd, 0x00, 0x00, //....@@@@.... - 0x00, 0x00, 0x7f, 0xf7, 0x00, 0x00, //....+@@+.... - 0x00, 0x00, 0x1f, 0xf1, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0057 (W) , Width: 17 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................. - 0xdf, 0x20, 0x00, 0x3f, 0xff, 0x20, 0x00, 0x2f, 0xd0, //@@.....@@@.....@@ - 0x9f, 0x60, 0x00, 0x7f, 0xff, 0x60, 0x00, 0x6f, 0x90, //%@+...+@@@+...+@% - 0x5f, 0xb0, 0x00, 0xbf, 0x9f, 0xa0, 0x00, 0xaf, 0x50, //+@%...%@%@%...%@+ - 0x1f, 0xe0, 0x00, 0xff, 0x1f, 0xe0, 0x00, 0xef, 0x10, //.@@...@@.@@...@@. - 0x0d, 0xf3, 0x03, 0xfc, 0x0c, 0xf2, 0x02, 0xfd, 0x00, //.@@...@@.@@...@@. - 0x09, 0xf7, 0x07, 0xf8, 0x08, 0xf6, 0x06, 0xf9, 0x00, //.%@+.+@%.%@+.+@%. - 0x05, 0xfb, 0x0b, 0xf4, 0x04, 0xfa, 0x0a, 0xf4, 0x00, //.+@%.%@+.+@%.%@+. - 0x01, 0xfe, 0x0f, 0xf0, 0x00, 0xfe, 0x0e, 0xf0, 0x00, //..@@.@@...@@.@@.. - 0x00, 0xcf, 0x6f, 0xc0, 0x00, 0xcf, 0x5f, 0xc0, 0x00, //..@@+@@...@@+@@.. - 0x00, 0x8f, 0xef, 0x80, 0x00, 0x8f, 0xdf, 0x80, 0x00, //..%@@@%...%@@@%.. - 0x00, 0x4f, 0xff, 0x40, 0x00, 0x4f, 0xff, 0x40, 0x00, //..+@@@+...+@@@+.. - 0x00, 0x0f, 0xff, 0x00, 0x00, 0x0f, 0xff, 0x00, 0x00, //...@@@.....@@@... - 0x00, 0x0c, 0xfc, 0x00, 0x00, 0x0c, 0xfc, 0x00, 0x00, //...@@@.....@@%... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................. - - - /*Unicode: U+0058 (X) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x0b, 0xfb, 0x00, 0x00, 0xbf, 0xa0, //.%@%....%@% - 0x02, 0xff, 0x40, 0x06, 0xfe, 0x10, //..@@+..+@@. - 0x00, 0x8f, 0xd0, 0x1f, 0xf5, 0x00, //..%@@..@@+. - 0x00, 0x0e, 0xf7, 0xbf, 0xb0, 0x00, //...@@+%@%.. - 0x00, 0x05, 0xff, 0xfe, 0x10, 0x00, //...+@@@@... - 0x00, 0x00, 0xcf, 0xf6, 0x00, 0x00, //....%@@+... - 0x00, 0x00, 0xbf, 0xf3, 0x00, 0x00, //....%@@.... - 0x00, 0x05, 0xff, 0xfc, 0x00, 0x00, //...+@@@@... - 0x00, 0x1e, 0xf7, 0xef, 0x50, 0x00, //...@@+@@+.. - 0x00, 0xaf, 0xb0, 0x6f, 0xe0, 0x00, //..%@%.+@@.. - 0x05, 0xff, 0x20, 0x0d, 0xf8, 0x00, //.+@@...@@%. - 0x1e, 0xf7, 0x00, 0x03, 0xff, 0x20, //.@@+....@@. - 0xaf, 0xc0, 0x00, 0x00, 0xaf, 0xb0, //%@@.....%@% - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+0059 (Y) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0xaf, 0xc0, 0x00, 0x00, 0x0c, 0xfa, //%@@......@@% - 0x0d, 0xf7, 0x00, 0x00, 0x7f, 0xd0, //.@@+....+@@. - 0x03, 0xff, 0x20, 0x02, 0xff, 0x30, //..@@....@@.. - 0x00, 0x6f, 0xb0, 0x0b, 0xf6, 0x00, //..+@%..%@+.. - 0x00, 0x0b, 0xf6, 0x6f, 0xb0, 0x00, //...%@++@%... - 0x00, 0x01, 0xef, 0xfe, 0x10, 0x00, //....@@@@.... - 0x00, 0x00, 0x3f, 0xf3, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+005a (Z) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, //@@@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, //@@@@@@@@@@@ - 0x00, 0x00, 0x00, 0x0b, 0xfe, 0x10, //.......%@@. - 0x00, 0x00, 0x00, 0x8f, 0xf3, 0x00, //......%@@.. - 0x00, 0x00, 0x05, 0xff, 0x60, 0x00, //.....+@@+.. - 0x00, 0x00, 0x2f, 0xf9, 0x00, 0x00, //.....@@%... - 0x00, 0x00, 0xdf, 0xb0, 0x00, 0x00, //....@@%.... - 0x00, 0x0a, 0xfd, 0x10, 0x00, 0x00, //...%@@..... - 0x00, 0x7f, 0xf2, 0x00, 0x00, 0x00, //..+@@...... - 0x04, 0xff, 0x50, 0x00, 0x00, 0x00, //.+@@+...... - 0x1e, 0xf8, 0x00, 0x00, 0x00, 0x00, //.@@%....... - 0xcf, 0xff, 0xff, 0xff, 0xff, 0xf0, //@@@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, //@@@@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+005b ([) , Width: 4 */ - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0xff, 0xff, //@@@@ - 0xff, 0xff, //@@@@ - 0xff, 0x00, //@@.. - 0xff, 0x00, //@@.. - 0xff, 0x00, //@@.. - 0xff, 0x00, //@@.. - 0xff, 0x00, //@@.. - 0xff, 0x00, //@@.. - 0xff, 0x00, //@@.. - 0xff, 0x00, //@@.. - 0xff, 0x00, //@@.. - 0xff, 0x00, //@@.. - 0xff, 0x00, //@@.. - 0xff, 0x00, //@@.. - 0xff, 0xff, //@@@@ - 0xff, 0xff, //@@@@ - 0x00, 0x00, //.... - 0x00, 0x00, //.... - - - /*Unicode: U+005c (\) , Width: 6 */ - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0xdf, 0x30, 0x00, //@@.... - 0x9f, 0x70, 0x00, //%@+... - 0x5f, 0xb0, 0x00, //+@%... - 0x1f, 0xf0, 0x00, //.@@... - 0x0d, 0xf4, 0x00, //.@@+.. - 0x08, 0xf8, 0x00, //.%@%.. - 0x04, 0xfc, 0x00, //.+@@.. - 0x00, 0xff, 0x00, //..@@.. - 0x00, 0xcf, 0x40, //..@@+. - 0x00, 0x8f, 0x90, //..+@%. - 0x00, 0x3f, 0xd0, //...@@. - 0x00, 0x0f, 0xf1, //...@@. - 0x00, 0x0b, 0xf5, //...%@+ - 0x00, 0x07, 0xf9, //...+@% - 0x00, 0x03, 0xfd, //....@@ - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - - - /*Unicode: U+005d (]) , Width: 4 */ - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0xff, 0xff, //@@@@ - 0xff, 0xff, //@@@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0xff, 0xff, //@@@@ - 0xff, 0xff, //@@@@ - 0x00, 0x00, //.... - 0x00, 0x00, //.... - - - /*Unicode: U+005e (^) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, //....@@@.... - 0x00, 0x0b, 0xfa, 0xfb, 0x00, 0x00, //...%@%@%... - 0x00, 0xaf, 0x60, 0x6f, 0xa0, 0x00, //..%@+.+@%.. - 0x09, 0xf5, 0x00, 0x05, 0xf9, 0x00, //.%@+...+@%. - 0x8f, 0x40, 0x00, 0x00, 0x4f, 0x80, //%@+.....+@% - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+005f (_) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0xff, 0xff, 0xff, 0xff, 0xf0, //@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xf0, //@@@@@@@@@ - - - /*Unicode: U+0060 (`) , Width: 4 */ - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x8e, 0x10, //%@.. - 0x0a, 0xc0, //.%@. - 0x00, 0xb9, //..%% - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x00, 0x00, //.... - - - /*Unicode: U+0061 (a) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x04, 0xbe, 0xfc, 0x40, //.+%@@@+. - 0x0f, 0xff, 0xff, 0xf3, //.@@@@@@. - 0x0a, 0x30, 0x2a, 0xfa, //.%...%@% - 0x00, 0x00, 0x01, 0xfe, //......@@ - 0x07, 0xcf, 0xff, 0xff, //.+@@@@@@ - 0x8f, 0xff, 0xff, 0xff, //%@@@@@@@ - 0xef, 0x51, 0x01, 0xff, //@@+...@@ - 0xef, 0x40, 0x2a, 0xff, //@@+..%@@ - 0xaf, 0xff, 0xfa, 0xff, //%@@@@%@@ - 0x1a, 0xee, 0x90, 0xff, //.%@@%.@@ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0062 (b) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0xff, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0x09, 0xef, 0xa1, 0x00, //@@.%@@%.. - 0xff, 0xaf, 0xff, 0xfe, 0x10, //@@%@@@@@. - 0xff, 0xd3, 0x03, 0xef, 0x80, //@@@...@@% - 0xff, 0x40, 0x00, 0x4f, 0xd0, //@@+...+@@ - 0xff, 0x00, 0x00, 0x1f, 0xf0, //@@.....@@ - 0xff, 0x00, 0x00, 0x1f, 0xf0, //@@.....@@ - 0xff, 0x40, 0x00, 0x4f, 0xd0, //@@+...+@@ - 0xff, 0xd3, 0x03, 0xef, 0x80, //@@@...@@% - 0xff, 0xaf, 0xff, 0xfe, 0x10, //@@%@@@@@. - 0xff, 0x09, 0xef, 0xa2, 0x00, //@@.%@@%.. - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0063 (c) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x6c, 0xff, 0xb4, //..+@@@%+ - 0x0b, 0xff, 0xff, 0xff, //.%@@@@@@ - 0x7f, 0xf6, 0x10, 0x3a, //+@@+...% - 0xcf, 0x60, 0x00, 0x00, //@@+..... - 0xff, 0x10, 0x00, 0x00, //@@...... - 0xff, 0x10, 0x00, 0x00, //@@...... - 0xcf, 0x60, 0x00, 0x00, //@@+..... - 0x7f, 0xf6, 0x10, 0x3a, //+@@+...% - 0x0b, 0xff, 0xff, 0xff, //.%@@@@@@ - 0x00, 0x7d, 0xff, 0xb4, //..+@@@%+ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0064 (d) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x0f, 0xf0, //.......@@ - 0x00, 0x00, 0x00, 0x0f, 0xf0, //.......@@ - 0x00, 0x00, 0x00, 0x0f, 0xf0, //.......@@ - 0x00, 0x00, 0x00, 0x0f, 0xf0, //.......@@ - 0x02, 0xaf, 0xe9, 0x0f, 0xf0, //..%@@%.@@ - 0x1e, 0xff, 0xff, 0xaf, 0xf0, //.@@@@@%@@ - 0x8f, 0xd3, 0x03, 0xef, 0xf0, //%@@...@@@ - 0xdf, 0x40, 0x00, 0x4f, 0xf0, //@@+...+@@ - 0xff, 0x00, 0x00, 0x1f, 0xf0, //@@.....@@ - 0xff, 0x00, 0x00, 0x1f, 0xf0, //@@.....@@ - 0xdf, 0x40, 0x00, 0x4f, 0xf0, //@@+...+@@ - 0x8f, 0xd3, 0x03, 0xef, 0xf0, //%@@...@@@ - 0x1e, 0xff, 0xff, 0xaf, 0xf0, //.@@@@@%@@ - 0x02, 0xbf, 0xe9, 0x0f, 0xf0, //..%@@%.@@ - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0065 (e) , Width: 10 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x5b, 0xef, 0xd8, 0x00, //..+%@@@%.. - 0x0a, 0xff, 0xff, 0xff, 0xd0, //.%@@@@@@@. - 0x6f, 0xe5, 0x10, 0x3c, 0xf8, //+@@+...@@% - 0xcf, 0x30, 0x00, 0x02, 0xfd, //@@......@@ - 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@ - 0xcf, 0x30, 0x00, 0x00, 0x00, //@@........ - 0x6f, 0xe6, 0x10, 0x02, 0x6c, //+@@+....+@ - 0x09, 0xff, 0xff, 0xff, 0xff, //.%@@@@@@@@ - 0x00, 0x4a, 0xef, 0xfd, 0x82, //..+%@@@@%. - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0066 (f) , Width: 7 */ - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x08, 0xdf, 0xf0, //...%@@@ - 0x00, 0x8f, 0xff, 0xf0, //..%@@@@ - 0x00, 0xdf, 0x50, 0x00, //..@@+.. - 0x00, 0xff, 0x00, 0x00, //..@@... - 0xff, 0xff, 0xff, 0xf0, //@@@@@@@ - 0xff, 0xff, 0xff, 0xf0, //@@@@@@@ - 0x00, 0xff, 0x00, 0x00, //..@@... - 0x00, 0xff, 0x00, 0x00, //..@@... - 0x00, 0xff, 0x00, 0x00, //..@@... - 0x00, 0xff, 0x00, 0x00, //..@@... - 0x00, 0xff, 0x00, 0x00, //..@@... - 0x00, 0xff, 0x00, 0x00, //..@@... - 0x00, 0xff, 0x00, 0x00, //..@@... - 0x00, 0xff, 0x00, 0x00, //..@@... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - - - /*Unicode: U+0067 (g) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x02, 0xbf, 0xe9, 0x0f, 0xf0, //..%@@%.@@ - 0x1e, 0xff, 0xff, 0xaf, 0xf0, //.@@@@@%@@ - 0x8f, 0xd3, 0x03, 0xdf, 0xf0, //%@@...@@@ - 0xdf, 0x40, 0x00, 0x4f, 0xf0, //@@+...+@@ - 0xff, 0x00, 0x00, 0x1f, 0xf0, //@@.....@@ - 0xff, 0x00, 0x00, 0x1f, 0xf0, //@@.....@@ - 0xdf, 0x40, 0x00, 0x4f, 0xf0, //@@+...+@@ - 0x8f, 0xd3, 0x03, 0xdf, 0xf0, //%@@...@@@ - 0x1e, 0xff, 0xff, 0xaf, 0xf0, //.@@@@@%@@ - 0x02, 0xbf, 0xe9, 0x2f, 0xe0, //..%@@%.@@ - 0x00, 0x00, 0x00, 0x6f, 0xb0, //......+@% - 0x0a, 0x30, 0x16, 0xff, 0x60, //.%...+@@+ - 0x0f, 0xff, 0xff, 0xfc, 0x00, //.@@@@@@@. - 0x04, 0xbe, 0xfd, 0x80, 0x00, //.+%@@@%.. - - - /*Unicode: U+0068 (h) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x00, 0x00, 0x00, //@@...... - 0xff, 0x09, 0xfe, 0x80, //@@.%@@%. - 0xff, 0xaf, 0xff, 0xf6, //@@%@@@@+ - 0xff, 0xc2, 0x09, 0xfc, //@@@..%@@ - 0xff, 0x30, 0x01, 0xff, //@@....@@ - 0xff, 0x00, 0x00, 0xff, //@@....@@ - 0xff, 0x00, 0x00, 0xff, //@@....@@ - 0xff, 0x00, 0x00, 0xff, //@@....@@ - 0xff, 0x00, 0x00, 0xff, //@@....@@ - 0xff, 0x00, 0x00, 0xff, //@@....@@ - 0xff, 0x00, 0x00, 0xff, //@@....@@ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0069 (i) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0xff, //@@ - 0xff, //@@ - 0x00, //.. - 0x00, //.. - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+006a (j) , Width: 4 */ - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0x00, //.... - 0x00, 0x00, //.... - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x00, 0xff, //..@@ - 0x07, 0xfd, //.+@@ - 0xff, 0xf7, //@@@+ - 0xfd, 0x70, //@@+. - - - /*Unicode: U+006b (k) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0xff, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0x00, 0x03, 0xef, 0x70, //@@....@@+ - 0xff, 0x00, 0x4f, 0xf6, 0x00, //@@..+@@+. - 0xff, 0x04, 0xff, 0x50, 0x00, //@@.+@@+.. - 0xff, 0x5f, 0xf4, 0x00, 0x00, //@@+@@+... - 0xff, 0xfe, 0x30, 0x00, 0x00, //@@@@..... - 0xff, 0xff, 0x50, 0x00, 0x00, //@@@@+.... - 0xff, 0x6f, 0xf5, 0x00, 0x00, //@@+@@+... - 0xff, 0x06, 0xff, 0x60, 0x00, //@@.+@@+.. - 0xff, 0x00, 0x7f, 0xf6, 0x00, //@@..+@@+. - 0xff, 0x00, 0x07, 0xff, 0x70, //@@...+@@+ - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+006c (l) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0x00, //.. - 0x00, //.. - 0x00, //.. - 0x00, //.. - - - /*Unicode: U+006d (m) , Width: 14 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - 0xff, 0x09, 0xfe, 0x60, 0x1a, 0xee, 0x80, //@@.%@@+..%@@%. - 0xff, 0xaf, 0xff, 0xf4, 0xcf, 0xff, 0xf5, //@@%@@@@+@@@@@+ - 0xff, 0xc2, 0x09, 0xfe, 0xc2, 0x09, 0xfc, //@@@..%@@@..%@@ - 0xff, 0x30, 0x01, 0xff, 0x30, 0x01, 0xfe, //@@....@@....@@ - 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, //@@....@@....@@ - 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, //@@....@@....@@ - 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, //@@....@@....@@ - 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, //@@....@@....@@ - 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, //@@....@@....@@ - 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, //@@....@@....@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - - - /*Unicode: U+006e (n) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0x09, 0xfe, 0x80, //@@.%@@%. - 0xff, 0xaf, 0xff, 0xf6, //@@%@@@@+ - 0xff, 0xc2, 0x09, 0xfc, //@@@..%@@ - 0xff, 0x30, 0x01, 0xff, //@@....@@ - 0xff, 0x00, 0x00, 0xff, //@@....@@ - 0xff, 0x00, 0x00, 0xff, //@@....@@ - 0xff, 0x00, 0x00, 0xff, //@@....@@ - 0xff, 0x00, 0x00, 0xff, //@@....@@ - 0xff, 0x00, 0x00, 0xff, //@@....@@ - 0xff, 0x00, 0x00, 0xff, //@@....@@ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+006f (o) , Width: 10 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x7c, 0xff, 0xc7, 0x00, //..+@@@@+.. - 0x0c, 0xff, 0xff, 0xff, 0xb0, //.%@@@@@@%. - 0x7f, 0xe6, 0x11, 0x6f, 0xf7, //+@@+..+@@+ - 0xdf, 0x50, 0x00, 0x06, 0xfc, //@@+....+@@ - 0xff, 0x10, 0x00, 0x01, 0xff, //@@......@@ - 0xff, 0x10, 0x00, 0x01, 0xff, //@@......@@ - 0xdf, 0x50, 0x00, 0x06, 0xfc, //@@+....+@@ - 0x7f, 0xe5, 0x11, 0x5e, 0xf7, //+@@+..+@@+ - 0x0c, 0xff, 0xff, 0xff, 0xb0, //.%@@@@@@%. - 0x00, 0x7d, 0xff, 0xd7, 0x00, //..+@@@@+.. - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0070 (p) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0xff, 0x09, 0xef, 0xa1, 0x00, //@@.%@@%.. - 0xff, 0xaf, 0xff, 0xfe, 0x10, //@@%@@@@@. - 0xff, 0xd3, 0x03, 0xef, 0x80, //@@@...@@% - 0xff, 0x40, 0x00, 0x4f, 0xd0, //@@+...+@@ - 0xff, 0x00, 0x00, 0x1f, 0xf0, //@@.....@@ - 0xff, 0x00, 0x00, 0x1f, 0xf0, //@@.....@@ - 0xff, 0x40, 0x00, 0x4f, 0xd0, //@@+...+@@ - 0xff, 0xd3, 0x03, 0xef, 0x80, //@@@...@@% - 0xff, 0xaf, 0xff, 0xfe, 0x10, //@@%@@@@@. - 0xff, 0x09, 0xef, 0xa2, 0x00, //@@.%@@%.. - 0xff, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0x00, 0x00, 0x00, 0x00, //@@....... - - - /*Unicode: U+0071 (q) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x02, 0xaf, 0xe9, 0x0f, 0xf0, //..%@@%.@@ - 0x1e, 0xff, 0xff, 0xaf, 0xf0, //.@@@@@%@@ - 0x8f, 0xd3, 0x03, 0xef, 0xf0, //%@@...@@@ - 0xdf, 0x40, 0x00, 0x4f, 0xf0, //@@+...+@@ - 0xff, 0x00, 0x00, 0x1f, 0xf0, //@@.....@@ - 0xff, 0x00, 0x00, 0x1f, 0xf0, //@@.....@@ - 0xdf, 0x40, 0x00, 0x4f, 0xf0, //@@+...+@@ - 0x8f, 0xd3, 0x03, 0xef, 0xf0, //%@@...@@@ - 0x1e, 0xff, 0xff, 0xaf, 0xf0, //.@@@@@%@@ - 0x02, 0xbf, 0xe9, 0x0f, 0xf0, //..%@@%.@@ - 0x00, 0x00, 0x00, 0x0f, 0xf0, //.......@@ - 0x00, 0x00, 0x00, 0x0f, 0xf0, //.......@@ - 0x00, 0x00, 0x00, 0x0f, 0xf0, //.......@@ - 0x00, 0x00, 0x00, 0x0f, 0xf0, //.......@@ - - - /*Unicode: U+0072 (r) , Width: 6 */ - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0xff, 0x09, 0xef, //@@.%@@ - 0xff, 0xaf, 0xff, //@@%@@@ - 0xff, 0xe4, 0x00, //@@@+.. - 0xff, 0x50, 0x00, //@@+... - 0xff, 0x10, 0x00, //@@.... - 0xff, 0x00, 0x00, //@@.... - 0xff, 0x00, 0x00, //@@.... - 0xff, 0x00, 0x00, //@@.... - 0xff, 0x00, 0x00, //@@.... - 0xff, 0x00, 0x00, //@@.... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - - - /*Unicode: U+0073 (s) , Width: 7 */ - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x08, 0xdf, 0xfb, 0x40, //.+@@@%+ - 0x9f, 0xff, 0xff, 0xf0, //%@@@@@@ - 0xef, 0x71, 0x03, 0xa0, //@@+...% - 0xdf, 0xb7, 0x30, 0x00, //@@%+... - 0x4e, 0xff, 0xfd, 0x20, //+@@@@@. - 0x00, 0x48, 0xef, 0xc0, //..+%@@% - 0x00, 0x00, 0x1f, 0xf0, //.....@@ - 0xb4, 0x00, 0x6f, 0xf0, //%+..+@@ - 0xff, 0xff, 0xff, 0xa0, //@@@@@@% - 0x3a, 0xef, 0xd7, 0x00, //.%@@@+. - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, //....... - - - /*Unicode: U+0074 (t) , Width: 6 */ - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x0f, 0xf0, 0x00, //.@@... - 0x0f, 0xf0, 0x00, //.@@... - 0x0f, 0xf0, 0x00, //.@@... - 0xff, 0xff, 0xff, //@@@@@@ - 0xff, 0xff, 0xff, //@@@@@@ - 0x0f, 0xf0, 0x00, //.@@... - 0x0f, 0xf0, 0x00, //.@@... - 0x0f, 0xf0, 0x00, //.@@... - 0x0f, 0xf0, 0x00, //.@@... - 0x0f, 0xf0, 0x00, //.@@... - 0x0e, 0xf4, 0x00, //.@@+.. - 0x0a, 0xff, 0xff, //.%@@@@ - 0x01, 0xae, 0xff, //..%@@@ - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, //...... - - - /*Unicode: U+0075 (u) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0x00, 0x00, 0xff, //@@....@@ - 0xff, 0x00, 0x00, 0xff, //@@....@@ - 0xff, 0x00, 0x00, 0xff, //@@....@@ - 0xff, 0x00, 0x00, 0xff, //@@....@@ - 0xff, 0x00, 0x00, 0xff, //@@....@@ - 0xff, 0x00, 0x00, 0xff, //@@....@@ - 0xef, 0x10, 0x03, 0xff, //@@....@@ - 0xcf, 0x90, 0x2c, 0xff, //@@%..@@@ - 0x6f, 0xff, 0xfa, 0xff, //+@@@@%@@ - 0x08, 0xef, 0xa0, 0xff, //.%@@%.@@ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0076 (v) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x1f, 0xf1, 0x00, 0x00, 0x0e, 0xe0, //.@@......@@. - 0x0a, 0xf7, 0x00, 0x00, 0x6f, 0x80, //.%@+....+@%. - 0x04, 0xfc, 0x00, 0x00, 0xcf, 0x20, //..@@....@@.. - 0x00, 0xdf, 0x20, 0x03, 0xfc, 0x00, //..@@....@@.. - 0x00, 0x7f, 0x80, 0x09, 0xf6, 0x00, //..+@%..%@+.. - 0x00, 0x1f, 0xd0, 0x0f, 0xf0, 0x00, //...@@..@@... - 0x00, 0x0a, 0xf3, 0x6f, 0x90, 0x00, //...%@.+@%... - 0x00, 0x04, 0xf9, 0xcf, 0x30, 0x00, //...+@%@@.... - 0x00, 0x00, 0xdf, 0xfd, 0x00, 0x00, //....@@@@.... - 0x00, 0x00, 0x7f, 0xf7, 0x00, 0x00, //....+@@+.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0077 (w) , Width: 15 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x0f, 0xf0, 0x00, 0xcf, 0xc0, 0x00, 0xff, 0x00, //.@@...@@@...@@. - 0x0c, 0xf3, 0x01, 0xff, 0xf0, 0x03, 0xfc, 0x00, //.@@...@@@...@@. - 0x08, 0xf7, 0x04, 0xfd, 0xf4, 0x07, 0xf8, 0x00, //.%@+.+@@@+.+@%. - 0x04, 0xfa, 0x08, 0xf5, 0xf8, 0x0a, 0xf4, 0x00, //.+@%.%@+@%.%@+. - 0x00, 0xfd, 0x0c, 0xe0, 0xec, 0x0d, 0xf0, 0x00, //..@@.@@.@@.@@.. - 0x00, 0xcf, 0x2f, 0x90, 0xaf, 0x1f, 0xc0, 0x00, //..@@.@%.%@.@@.. - 0x00, 0x8f, 0x9f, 0x50, 0x5f, 0x8f, 0x80, 0x00, //..%@%@+.+@%@%.. - 0x00, 0x5f, 0xff, 0x10, 0x1f, 0xef, 0x50, 0x00, //..+@@@...@@@+.. - 0x00, 0x1f, 0xfc, 0x00, 0x0d, 0xff, 0x10, 0x00, //...@@@...@@@... - 0x00, 0x0d, 0xf8, 0x00, 0x08, 0xfd, 0x00, 0x00, //...@@%...%@@... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - - - /*Unicode: U+0078 (x) , Width: 10 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0xaf, 0xd0, 0x00, 0x0d, 0xfa, //%@@....@@% - 0x1e, 0xf5, 0x00, 0x5f, 0xd0, //.@@+..+@@. - 0x04, 0xfd, 0x00, 0xdf, 0x30, //.+@@..@@.. - 0x00, 0x9f, 0x55, 0xf8, 0x00, //..%@++@%.. - 0x00, 0x0d, 0xdd, 0xc0, 0x00, //...@@@@... - 0x00, 0x1e, 0xef, 0xe1, 0x00, //...@@@@... - 0x00, 0xaf, 0x57, 0xfa, 0x00, //..%@++@%.. - 0x05, 0xfd, 0x00, 0xef, 0x50, //.+@@..@@+. - 0x1e, 0xf4, 0x00, 0x5f, 0xe1, //.@@+..+@@. - 0xaf, 0xc0, 0x00, 0x0c, 0xfa, //%@@....@@% - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0079 (y) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x2f, 0xf1, 0x00, 0x00, 0x0f, 0xf2, //.@@......@@. - 0x0a, 0xf7, 0x00, 0x00, 0x7f, 0xa0, //.%@+....+@%. - 0x03, 0xfe, 0x00, 0x00, 0xef, 0x30, //..@@....@@.. - 0x00, 0xbf, 0x50, 0x05, 0xfc, 0x00, //..%@+..+@@.. - 0x00, 0x3f, 0xd0, 0x0c, 0xf4, 0x00, //...@@..@@+.. - 0x00, 0x0c, 0xf4, 0x3f, 0xd0, 0x00, //...@@+.@@... - 0x00, 0x04, 0xfb, 0xaf, 0x60, 0x00, //...+@%%@+... - 0x00, 0x00, 0xdf, 0xfe, 0x00, 0x00, //....@@@@.... - 0x00, 0x00, 0x5f, 0xf7, 0x00, 0x00, //....+@@+.... - 0x00, 0x00, 0x2f, 0xe0, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x6f, 0x80, 0x00, 0x00, //....+@%..... - 0x00, 0x01, 0xbf, 0x20, 0x00, 0x00, //....%@...... - 0x00, 0xff, 0xfb, 0x00, 0x00, 0x00, //..@@@%...... - 0x00, 0xff, 0xb1, 0x00, 0x00, 0x00, //..@@%....... - - - /*Unicode: U+007a (z) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0xff, 0xfd, //@@@@@@@@ - 0x00, 0x00, 0x4f, 0xf3, //....+@@. - 0x00, 0x01, 0xef, 0x70, //....@@+. - 0x00, 0x0c, 0xfc, 0x00, //...@@@.. - 0x00, 0x9f, 0xe1, 0x00, //..%@@... - 0x05, 0xff, 0x50, 0x00, //.+@@+... - 0x2f, 0xfa, 0x00, 0x00, //.@@%.... - 0xdf, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+007b ({) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x01, 0x9d, 0xff, //....%@@@ - 0x00, 0x0a, 0xff, 0xff, //...%@@@@ - 0x00, 0x0e, 0xf6, 0x00, //...@@+.. - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x01, 0x8f, 0xc0, 0x00, //..%@@... - 0xff, 0xfc, 0x30, 0x00, //@@@@.... - 0xff, 0xfc, 0x20, 0x00, //@@@@.... - 0x01, 0xaf, 0xb0, 0x00, //..%@%... - 0x00, 0x1f, 0xf0, 0x00, //...@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x00, 0x0e, 0xf7, 0x00, //...@@+.. - 0x00, 0x09, 0xff, 0xff, //...%@@@@ - 0x00, 0x00, 0x9d, 0xff, //....%@@@ - 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+007c (|) , Width: 2 */ - 0x00, //.. - 0x00, //.. - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - 0xff, //@@ - - - /*Unicode: U+007d (}) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0xd9, 0x10, 0x00, //@@@%.... - 0xff, 0xff, 0xa0, 0x00, //@@@@%... - 0x00, 0x6f, 0xe0, 0x00, //..+@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x00, 0x0c, 0xf8, 0x10, //...@@%.. - 0x00, 0x03, 0xcf, 0xff, //....@@@@ - 0x00, 0x02, 0xcf, 0xff, //....@@@@ - 0x00, 0x0b, 0xfa, 0x10, //...%@%.. - 0x00, 0x0f, 0xf1, 0x00, //...@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x00, 0x0f, 0xf0, 0x00, //...@@... - 0x00, 0x7f, 0xe0, 0x00, //..+@@... - 0xff, 0xff, 0x90, 0x00, //@@@@%... - 0xff, 0xd9, 0x00, 0x00, //@@@%.... - 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+007e (~) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x18, 0xef, 0xd8, 0x30, 0x05, 0xd0, //.%@@@%...+@ - 0xef, 0xff, 0xff, 0xff, 0xff, 0xe0, //@@@@@@@@@@@ - 0xe6, 0x10, 0x48, 0xdf, 0xe9, 0x10, //@+...%@@@%. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - -#elif LV_USE_FONT_DEJAVU_20 == 8 - /*Unicode: U+0020 ( ) , Width: 6 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - - - /*Unicode: U+0021 (!) , Width: 2 */ - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xf4, 0xf2, //@@ - 0xe4, 0xe2, //@@ - 0xd2, 0xd2, //@@ - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - - - /*Unicode: U+0022 (") , Width: 6 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, //@@..@@ - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, //@@..@@ - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, //@@..@@ - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, //@@..@@ - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, //@@..@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - - - /*Unicode: U+0023 (#) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x2a, 0xff, 0x36, 0x00, 0x44, 0xff, 0x16, 0x00, //.....@..+@.. - 0x00, 0x00, 0x00, 0x00, 0x62, 0xf6, 0x04, 0x00, 0x7e, 0xde, 0x00, 0x00, //....+@..+@.. - 0x00, 0x00, 0x00, 0x00, 0x9a, 0xc4, 0x00, 0x00, 0xb8, 0xa6, 0x00, 0x00, //....%@..%%.. - 0x00, 0x00, 0x00, 0x00, 0xd2, 0x8a, 0x00, 0x00, 0xee, 0x6e, 0x00, 0x00, //....@%..@+.. - 0x06, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //.@@@@@@@@@@@ - 0x06, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //.@@@@@@@@@@@ - 0x00, 0x00, 0x00, 0x70, 0xea, 0x04, 0x00, 0x90, 0xd2, 0x00, 0x00, 0x00, //...+@..%@... - 0x00, 0x00, 0x00, 0xcc, 0x94, 0x00, 0x02, 0xe6, 0x78, 0x00, 0x00, 0x00, //...@%..@+... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, //@@@@@@@@@@@. - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, //@@@@@@@@@@@. - 0x00, 0x00, 0x66, 0xf0, 0x00, 0x00, 0x86, 0xd6, 0x00, 0x00, 0x00, 0x00, //..+@..%@.... - 0x00, 0x00, 0xa0, 0xba, 0x00, 0x00, 0xbe, 0x9c, 0x00, 0x00, 0x00, 0x00, //..%%..%%.... - 0x00, 0x00, 0xd8, 0x82, 0x00, 0x02, 0xf2, 0x64, 0x00, 0x00, 0x00, 0x00, //..@%..@+.... - 0x00, 0x12, 0xff, 0x4a, 0x00, 0x2e, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x00, //..@+..@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0024 ($) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, //....@.... - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, //....@.... - 0x00, 0x42, 0xb4, 0xe6, 0xff, 0xea, 0xac, 0x3c, 0x00, //.+%@@@%.. - 0x66, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, //+@@@@@@@. - 0xe0, 0xff, 0x9c, 0x18, 0xff, 0x18, 0x50, 0xc2, 0x00, //@@%.@.+@. - 0xf2, 0xff, 0x12, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, //@@..@.... - 0xb6, 0xff, 0xd4, 0x86, 0xff, 0x28, 0x00, 0x00, 0x00, //%@@%@.... - 0x1c, 0xce, 0xff, 0xff, 0xff, 0xff, 0xde, 0x64, 0x00, //.@@@@@@+. - 0x00, 0x00, 0x3c, 0x7c, 0xff, 0xe0, 0xff, 0xff, 0x64, //...+@@@@+ - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x68, 0xff, 0xd6, //....@.+@@ - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x0c, 0xff, 0xf6, //....@..@@ - 0xca, 0x62, 0x16, 0x00, 0xff, 0x1c, 0x9c, 0xff, 0xe0, //@+..@.%@@ - 0xff, 0xff, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xff, 0x66, //@@@@@@@@+ - 0x2e, 0x8c, 0xcc, 0xee, 0xff, 0xe4, 0xb2, 0x42, 0x00, //.%@@@@%+. - 0x00, 0x00, 0x00, 0x02, 0xff, 0x00, 0x00, 0x00, 0x00, //....@.... - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, //....@.... - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, //....@.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0025 (%) , Width: 15 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x04, 0x8a, 0xe6, 0xe4, 0x88, 0x04, 0x00, 0x00, 0x00, 0x00, 0x4e, 0xd4, 0x04, 0x00, 0x00, //.%@@%.....+@... - 0x7c, 0xff, 0x6a, 0x6c, 0xff, 0x78, 0x00, 0x00, 0x00, 0x0c, 0xe0, 0x3a, 0x00, 0x00, 0x00, //+@++@+....@.... - 0xda, 0xff, 0x14, 0x16, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x90, 0x98, 0x00, 0x00, 0x00, 0x00, //@@..@@...%%.... - 0xf6, 0xff, 0x02, 0x02, 0xff, 0xf4, 0x00, 0x00, 0x34, 0xe4, 0x0e, 0x00, 0x00, 0x00, 0x00, //@@..@@...@..... - 0xda, 0xff, 0x14, 0x14, 0xff, 0xda, 0x00, 0x02, 0xce, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, //@@..@@..@+..... - 0x80, 0xff, 0x68, 0x68, 0xff, 0x7c, 0x00, 0x74, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //+@++@+.+%...... - 0x06, 0x8e, 0xe6, 0xe6, 0x8c, 0x04, 0x1e, 0xe8, 0x1e, 0x04, 0x8a, 0xe4, 0xe6, 0x8a, 0x04, //.%@@%..@..%@@%. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x72, 0x00, 0x7c, 0xff, 0x6a, 0x6a, 0xff, 0x7a, //......%+.+@++@+ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xce, 0x02, 0x00, 0xda, 0xff, 0x14, 0x14, 0xff, 0xda, //.....+@..@@..@@ - 0x00, 0x00, 0x00, 0x00, 0x0e, 0xe4, 0x34, 0x00, 0x00, 0xf6, 0xff, 0x02, 0x02, 0xff, 0xf4, //.....@...@@..@@ - 0x00, 0x00, 0x00, 0x00, 0x98, 0x90, 0x00, 0x00, 0x00, 0xda, 0xff, 0x14, 0x14, 0xff, 0xda, //....%%...@@..@@ - 0x00, 0x00, 0x00, 0x3a, 0xe0, 0x0c, 0x00, 0x00, 0x00, 0x7e, 0xff, 0x68, 0x68, 0xff, 0x7c, //....@....+@++@+ - 0x00, 0x00, 0x04, 0xd4, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x8c, 0xe6, 0xe6, 0x8c, 0x04, //...@+.....%@@%. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - - - /*Unicode: U+0026 (&) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x4a, 0xc8, 0xf6, 0xee, 0xb0, 0x42, 0x00, 0x00, 0x00, //...+@@@%+... - 0x00, 0x00, 0x54, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, //..+@@@@@@... - 0x00, 0x00, 0xde, 0xff, 0x72, 0x0e, 0x08, 0x4a, 0xc0, 0x00, 0x00, 0x00, //..@@+..+%... - 0x00, 0x00, 0xfa, 0xff, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //..@@........ - 0x00, 0x00, 0xb0, 0xff, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //..%@%....... - 0x00, 0x04, 0x9a, 0xff, 0xff, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //..%@@%...... - 0x08, 0xbc, 0xf0, 0x8e, 0xfc, 0xff, 0x96, 0x00, 0x1c, 0xff, 0xe2, 0x00, //.%@%@@%..@@. - 0x8c, 0xff, 0x58, 0x00, 0x54, 0xf8, 0xff, 0x9a, 0x54, 0xff, 0x92, 0x00, //%@+.+@@%+@%. - 0xe8, 0xff, 0x0e, 0x00, 0x00, 0x46, 0xf4, 0xff, 0xe6, 0xf0, 0x18, 0x00, //@@...+@@@@.. - 0xf0, 0xff, 0x4c, 0x00, 0x00, 0x00, 0x66, 0xff, 0xff, 0x50, 0x00, 0x00, //@@+...+@@+.. - 0xaa, 0xff, 0xe8, 0x5a, 0x14, 0x08, 0x6e, 0xff, 0xff, 0x98, 0x00, 0x00, //%@@+..+@@%.. - 0x1c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0xff, 0xff, 0x8e, 0x00, //.@@@@@@@@@%. - 0x00, 0x10, 0x88, 0xd8, 0xf8, 0xec, 0x92, 0x02, 0x56, 0xf2, 0xff, 0x84, //..%@@@%.+@@% - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0027 (') , Width: 2 */ - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - - - /*Unicode: U+0028 (() , Width: 4 */ - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x84, 0xc6, //..%@ - 0x00, 0x24, 0xf8, 0x54, //..@+ - 0x00, 0xa4, 0xee, 0x04, //.%@. - 0x18, 0xf8, 0xa2, 0x00, //.@%. - 0x6c, 0xff, 0x62, 0x00, //+@+. - 0xb0, 0xff, 0x34, 0x00, //%@.. - 0xdc, 0xff, 0x14, 0x00, //@@.. - 0xf4, 0xff, 0x06, 0x00, //@@.. - 0xf4, 0xff, 0x06, 0x00, //@@.. - 0xdc, 0xff, 0x16, 0x00, //@@.. - 0xb0, 0xff, 0x36, 0x00, //%@.. - 0x6c, 0xff, 0x66, 0x00, //+@+. - 0x18, 0xf8, 0xa6, 0x00, //.@%. - 0x00, 0xa2, 0xf0, 0x04, //.%@. - 0x00, 0x22, 0xf6, 0x56, //..@+ - 0x00, 0x00, 0x82, 0xc6, //..%@ - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - - - /*Unicode: U+0029 ()) , Width: 4 */ - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0xc6, 0x82, 0x00, 0x00, //@%.. - 0x58, 0xf6, 0x22, 0x00, //+@.. - 0x04, 0xf0, 0xa0, 0x00, //.@%. - 0x00, 0xa6, 0xf6, 0x14, //.%@. - 0x00, 0x66, 0xff, 0x68, //.+@+ - 0x00, 0x36, 0xff, 0xae, //..@% - 0x00, 0x16, 0xff, 0xdc, //..@@ - 0x00, 0x06, 0xff, 0xf2, //..@@ - 0x00, 0x08, 0xff, 0xf2, //..@@ - 0x00, 0x16, 0xff, 0xdc, //..@@ - 0x00, 0x36, 0xff, 0xac, //..@% - 0x00, 0x66, 0xff, 0x68, //.+@+ - 0x00, 0xa6, 0xf6, 0x14, //.%@. - 0x04, 0xf0, 0xa0, 0x00, //.@%. - 0x58, 0xf6, 0x22, 0x00, //+@.. - 0xc6, 0x82, 0x00, 0x00, //@%.. - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - - - /*Unicode: U+002a (*) , Width: 7 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, //...@... - 0xa4, 0x2c, 0x00, 0xff, 0x00, 0x2c, 0xa4, //%..@..% - 0x5e, 0xe6, 0x52, 0xff, 0x52, 0xe6, 0x5e, //+@+@+@+ - 0x00, 0x24, 0xcc, 0xff, 0xcc, 0x24, 0x00, //..@@@.. - 0x00, 0x24, 0xca, 0xff, 0xca, 0x24, 0x00, //..@@@.. - 0x5c, 0xe6, 0x52, 0xff, 0x54, 0xe6, 0x5c, //+@+@+@+ - 0xa6, 0x2c, 0x00, 0xff, 0x00, 0x2e, 0xa6, //%..@..% - 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, //...@... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - - - /*Unicode: U+002b (+) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+002c (,) , Width: 3 */ - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0xff, 0xff, //.@@ - 0x10, 0xff, 0xda, //.@@ - 0x6c, 0xf4, 0x2e, //+@. - 0xce, 0x60, 0x00, //@+. - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - - - /*Unicode: U+002d (-) , Width: 5 */ - 0x00, 0x00, 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, 0x00, 0x00, //..... - 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, 0x00, 0x00, //..... - 0x00, 0x00, 0x00, 0x00, 0x00, //..... - - - /*Unicode: U+002e (.) , Width: 2 */ - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - - - /*Unicode: U+002f (/) , Width: 6 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x30, 0xff, 0xdc, //....@@ - 0x00, 0x00, 0x00, 0x74, 0xff, 0x9a, //...+@% - 0x00, 0x00, 0x00, 0xb6, 0xff, 0x58, //...%@+ - 0x00, 0x00, 0x04, 0xf4, 0xff, 0x16, //...@@. - 0x00, 0x00, 0x3c, 0xff, 0xd2, 0x00, //...@@. - 0x00, 0x00, 0x80, 0xff, 0x90, 0x00, //..+@%. - 0x00, 0x00, 0xc4, 0xff, 0x4c, 0x00, //..@@+. - 0x00, 0x0c, 0xfa, 0xfa, 0x0e, 0x00, //..@@.. - 0x00, 0x4a, 0xff, 0xc8, 0x00, 0x00, //.+@@.. - 0x00, 0x8c, 0xff, 0x84, 0x00, 0x00, //.%@%.. - 0x00, 0xd0, 0xff, 0x42, 0x00, 0x00, //.@@+.. - 0x14, 0xfc, 0xf6, 0x06, 0x00, 0x00, //.@@... - 0x56, 0xff, 0xbc, 0x00, 0x00, 0x00, //+@%... - 0x9a, 0xff, 0x7a, 0x00, 0x00, 0x00, //%@+... - 0xdc, 0xff, 0x38, 0x00, 0x00, 0x00, //@@.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - - - /*Unicode: U+0030 (0) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x06, 0x7e, 0xdc, 0xf8, 0xdc, 0x7e, 0x04, 0x00, //..+@@@+.. - 0x00, 0xac, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x00, //.%@@@@@%. - 0x46, 0xff, 0xf0, 0x46, 0x06, 0x46, 0xf0, 0xff, 0x44, //+@@+.+@@+ - 0xa2, 0xff, 0x76, 0x00, 0x00, 0x00, 0x76, 0xff, 0xa0, //%@+...+@% - 0xd6, 0xff, 0x2c, 0x00, 0x00, 0x00, 0x2c, 0xff, 0xd6, //@@.....@@ - 0xf2, 0xff, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0xff, 0xf0, //@@.....@@ - 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfa, //@@.....@@ - 0xf2, 0xff, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0xff, 0xf0, //@@.....@@ - 0xd6, 0xff, 0x2c, 0x00, 0x00, 0x00, 0x2c, 0xff, 0xd6, //@@.....@@ - 0xa2, 0xff, 0x76, 0x00, 0x00, 0x00, 0x76, 0xff, 0xa2, //%@+...+@% - 0x48, 0xff, 0xf0, 0x44, 0x06, 0x44, 0xf0, 0xff, 0x46, //+@@+.+@@+ - 0x00, 0xae, 0xff, 0xff, 0xff, 0xff, 0xff, 0xac, 0x00, //.%@@@@@%. - 0x00, 0x06, 0x80, 0xde, 0xf8, 0xde, 0x80, 0x06, 0x00, //..+@@@+.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0031 (1) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x26, 0x76, 0xc6, 0xfc, 0xff, 0x00, 0x00, 0x00, //.+@@@... - 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, //@@@@@... - 0xd4, 0x7e, 0x2a, 0xff, 0xff, 0x00, 0x00, 0x00, //@+.@@... - 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //...@@... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0032 (2) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x36, 0x98, 0xdc, 0xf8, 0xe0, 0xae, 0x34, 0x00, 0x00, //.%@@@%... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x50, 0x00, //@@@@@@@+. - 0xc4, 0x5e, 0x1c, 0x06, 0x2e, 0xc4, 0xff, 0xd6, 0x00, //@+...@@@. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xff, 0xf6, 0x00, //......@@. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xff, 0xd2, 0x00, //......@@. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xff, 0x7a, 0x00, //.....%@+. - 0x00, 0x00, 0x00, 0x00, 0x58, 0xfc, 0xd8, 0x08, 0x00, //....+@@.. - 0x00, 0x00, 0x00, 0x58, 0xfa, 0xf2, 0x2c, 0x00, 0x00, //...+@@... - 0x00, 0x00, 0x64, 0xfc, 0xfa, 0x4e, 0x00, 0x00, 0x00, //..+@@+... - 0x00, 0x6e, 0xff, 0xfc, 0x60, 0x00, 0x00, 0x00, 0x00, //.+@@+.... - 0x7a, 0xff, 0xfc, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, //+@@+..... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x12, //@@@@@@@@. - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x12, //@@@@@@@@. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0033 (3) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x30, 0x8c, 0xd0, 0xf4, 0xf0, 0xd6, 0x9a, 0x2c, 0x00, //.%@@@@%.. - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x56, //@@@@@@@@+ - 0xc8, 0x6a, 0x26, 0x04, 0x0c, 0x32, 0xa8, 0xff, 0xde, //@+....%@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xff, 0xee, //.......@@ - 0x00, 0x00, 0x00, 0x00, 0x0a, 0x2c, 0xa2, 0xff, 0x92, //......%@% - 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xdc, 0x74, 0x02, //..@@@@@+. - 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf2, 0x8e, 0x04, //..@@@@@%. - 0x00, 0x00, 0x00, 0x00, 0x10, 0x44, 0xcc, 0xff, 0x8c, //.....+@@% - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0xe6, //.......@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0xf2, //.......@@ - 0xb8, 0x4e, 0x14, 0x02, 0x14, 0x4a, 0xd2, 0xff, 0xb6, //%+...+@@% - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0x28, //@@@@@@@@. - 0x38, 0x9e, 0xde, 0xfa, 0xf2, 0xd0, 0x8a, 0x18, 0x00, //.%@@@@%.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0034 (4) , Width: 10 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xff, 0xff, 0x00, 0x00, //.....%@@.. - 0x00, 0x00, 0x00, 0x00, 0x5a, 0xf8, 0xff, 0xff, 0x00, 0x00, //....+@@@.. - 0x00, 0x00, 0x00, 0x1a, 0xee, 0x7a, 0xff, 0xff, 0x00, 0x00, //....@+@@.. - 0x00, 0x00, 0x00, 0xb6, 0xcc, 0x02, 0xff, 0xff, 0x00, 0x00, //...%@.@@.. - 0x00, 0x00, 0x66, 0xf8, 0x2c, 0x00, 0xff, 0xff, 0x00, 0x00, //..+@..@@.. - 0x00, 0x22, 0xf2, 0x7a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, //..@+..@@.. - 0x00, 0xc2, 0xca, 0x02, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, //.@@...@@.. - 0x74, 0xf8, 0x2a, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, //+@....@@.. - 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, //......@@.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, //......@@.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, //......@@.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0035 (5) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, //.@@@@@@. - 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, //.@@@@@@. - 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.@@..... - 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.@@..... - 0x00, 0xff, 0xff, 0xd4, 0xf6, 0xc4, 0x3c, 0x00, //.@@@@@.. - 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0x2e, //.@@@@@@. - 0x00, 0xa2, 0x26, 0x08, 0x3e, 0xd8, 0xff, 0xaa, //.%...@@% - 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xff, 0xe8, //......@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xff, 0xfa, //......@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xff, 0xe4, //......@@ - 0xb2, 0x40, 0x0a, 0x0e, 0x4c, 0xe0, 0xff, 0x9c, //%...+@@% - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe4, 0x1a, //@@@@@@@. - 0x40, 0xac, 0xea, 0xf8, 0xde, 0x96, 0x18, 0x00, //.%@@@%.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0036 (6) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x30, 0xac, 0xea, 0xf6, 0xc2, 0x4c, 0x00, //...%@@@+. - 0x00, 0x4c, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, //.+@@@@@@. - 0x16, 0xee, 0xff, 0xb6, 0x2a, 0x06, 0x32, 0xb4, 0x00, //.@@%...%. - 0x80, 0xff, 0xd8, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, //+@@...... - 0xc8, 0xff, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@+...... - 0xee, 0xff, 0x34, 0x90, 0xee, 0xf2, 0xba, 0x3a, 0x00, //@@.%@@%.. - 0xfa, 0xff, 0xa8, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x3a, //@@%@@@@@. - 0xf2, 0xff, 0xb8, 0x2a, 0x06, 0x2a, 0xba, 0xff, 0xbe, //@@%...%@% - 0xd6, 0xff, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0xff, 0xf4, //@@.....@@ - 0xa0, 0xff, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0xff, 0xf2, //%@.....@@ - 0x42, 0xff, 0xba, 0x28, 0x06, 0x28, 0xba, 0xff, 0xb8, //+@%...%@% - 0x00, 0xa4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf2, 0x30, //.%@@@@@@. - 0x00, 0x02, 0x76, 0xd8, 0xf8, 0xec, 0xaa, 0x2a, 0x00, //..+@@@%.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0037 (7) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, //@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc2, //@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xff, 0x70, //.....%@+ - 0x00, 0x00, 0x00, 0x00, 0x06, 0xf0, 0xff, 0x20, //.....@@. - 0x00, 0x00, 0x00, 0x00, 0x4a, 0xff, 0xd0, 0x00, //....+@@. - 0x00, 0x00, 0x00, 0x00, 0x9c, 0xff, 0x7e, 0x00, //....%@+. - 0x00, 0x00, 0x00, 0x02, 0xea, 0xff, 0x2e, 0x00, //....@@.. - 0x00, 0x00, 0x00, 0x3e, 0xff, 0xdc, 0x00, 0x00, //....@@.. - 0x00, 0x00, 0x00, 0x90, 0xff, 0x8c, 0x00, 0x00, //...%@%.. - 0x00, 0x00, 0x00, 0xe0, 0xff, 0x3c, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x34, 0xff, 0xe8, 0x00, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x84, 0xff, 0x9a, 0x00, 0x00, 0x00, //..%@%... - 0x00, 0x00, 0xd6, 0xff, 0x4a, 0x00, 0x00, 0x00, //..@@+... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0038 (8) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x42, 0xb2, 0xe0, 0xf6, 0xe0, 0xb2, 0x42, 0x00, //.+%@@@%+. - 0x6a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, //+@@@@@@@+ - 0xe4, 0xff, 0x96, 0x1e, 0x04, 0x1e, 0x98, 0xff, 0xe4, //@@%...%@@ - 0xee, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x10, 0xff, 0xec, //@@.....@@ - 0x92, 0xff, 0x94, 0x1c, 0x04, 0x1e, 0x96, 0xff, 0x92, //%@%...%@% - 0x02, 0x76, 0xe0, 0xff, 0xff, 0xff, 0xe0, 0x76, 0x02, //.+@@@@@+. - 0x02, 0x8c, 0xf2, 0xff, 0xff, 0xff, 0xf2, 0x8c, 0x02, //.%@@@@@%. - 0x86, 0xff, 0xb8, 0x28, 0x06, 0x2a, 0xba, 0xff, 0x86, //%@%...%@% - 0xe4, 0xff, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0xff, 0xe4, //@@.....@@ - 0xf6, 0xff, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0xff, 0xf6, //@@.....@@ - 0xc8, 0xff, 0xb8, 0x28, 0x06, 0x28, 0xba, 0xff, 0xc6, //@@%...%@@ - 0x46, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x44, //+@@@@@@@+ - 0x00, 0x2e, 0xaa, 0xde, 0xf8, 0xea, 0xb2, 0x38, 0x00, //..%@@@%.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0039 (9) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x2a, 0xaa, 0xea, 0xf8, 0xd6, 0x72, 0x02, 0x00, //..%@@@+.. - 0x30, 0xf2, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9c, 0x00, //.@@@@@@%. - 0xb8, 0xff, 0xbc, 0x2a, 0x06, 0x2a, 0xbc, 0xff, 0x3e, //%@%...%@. - 0xf2, 0xff, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0xff, 0x9c, //@@.....@% - 0xf4, 0xff, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0xff, 0xd4, //@@.....@@ - 0xc0, 0xff, 0xba, 0x28, 0x06, 0x28, 0xb8, 0xff, 0xf0, //%@%...%@@ - 0x40, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xff, 0xfa, //.@@@@@%@@ - 0x00, 0x3e, 0xbc, 0xf2, 0xee, 0x90, 0x34, 0xff, 0xee, //..%@@%.@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xff, 0xc6, //......+@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xd6, 0xff, 0x7e, //......@@+ - 0x00, 0xb2, 0x30, 0x04, 0x28, 0xb4, 0xff, 0xee, 0x16, //.%...%@@. - 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x4c, 0x00, //.@@@@@@+. - 0x00, 0x4c, 0xc2, 0xf6, 0xea, 0xac, 0x30, 0x00, 0x00, //.+@@@%... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+003a (:) , Width: 2 */ - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - - - /*Unicode: U+003b (;) , Width: 3 */ - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0xff, 0xff, //.@@ - 0x00, 0xff, 0xff, //.@@ - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - 0x00, 0xff, 0xff, //.@@ - 0x10, 0xff, 0xda, //.@@ - 0x6c, 0xf4, 0x2e, //+@. - 0xce, 0x60, 0x00, //@+. - 0x00, 0x00, 0x00, //... - 0x00, 0x00, 0x00, //... - - - /*Unicode: U+003c (<) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x6a, 0xcc, //.........+@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xa4, 0xf6, 0xff, 0xff, //.......%@@@ - 0x00, 0x00, 0x00, 0x1a, 0x7a, 0xdc, 0xff, 0xff, 0xfc, 0xb6, 0x54, //....+@@@@%+ - 0x04, 0x52, 0xb4, 0xfc, 0xff, 0xff, 0xde, 0x7c, 0x1c, 0x00, 0x00, //.+%@@@@+... - 0xea, 0xff, 0xff, 0xf6, 0xa4, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, //@@@@%+..... - 0xea, 0xff, 0xff, 0xf6, 0xa4, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, //@@@@%+..... - 0x04, 0x54, 0xb6, 0xfc, 0xff, 0xff, 0xdc, 0x7c, 0x1c, 0x00, 0x00, //.+%@@@@+... - 0x00, 0x00, 0x00, 0x1c, 0x7c, 0xdc, 0xff, 0xff, 0xfc, 0xb6, 0x54, //....+@@@@%+ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xa4, 0xf6, 0xff, 0xff, //......+%@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x6a, 0xce, //.........+@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+003d (=) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+003e (>) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0xcc, 0x6a, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@+......... - 0xff, 0xff, 0xf6, 0xa4, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@@%....... - 0x54, 0xb8, 0xfc, 0xff, 0xff, 0xdc, 0x7a, 0x1a, 0x00, 0x00, 0x00, //+%@@@@+.... - 0x00, 0x00, 0x1c, 0x7e, 0xde, 0xff, 0xff, 0xfc, 0xb4, 0x52, 0x04, //...+@@@@%+. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xa6, 0xf6, 0xff, 0xff, 0xea, //.....+%@@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xa6, 0xf6, 0xff, 0xff, 0xea, //.....+%@@@@ - 0x00, 0x00, 0x1c, 0x7c, 0xde, 0xff, 0xff, 0xfc, 0xb6, 0x52, 0x04, //...+@@@@%+. - 0x54, 0xb6, 0xfc, 0xff, 0xff, 0xdc, 0x7c, 0x1a, 0x00, 0x00, 0x00, //+%@@@@+.... - 0xff, 0xff, 0xf6, 0xa4, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@@%+...... - 0xce, 0x6a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@+......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+003f (?) , Width: 7 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x40, 0xac, 0xe8, 0xf6, 0xd2, 0x68, 0x00, //.%@@@+. - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x70, //@@@@@@+ - 0xc2, 0x4e, 0x0c, 0x12, 0x94, 0xff, 0xda, //@+..%@@ - 0x00, 0x00, 0x00, 0x00, 0x0c, 0xff, 0xf2, //.....@@ - 0x00, 0x00, 0x00, 0x00, 0x46, 0xff, 0xa4, //....+@% - 0x00, 0x00, 0x00, 0x20, 0xe4, 0xd0, 0x10, //....@@. - 0x00, 0x00, 0x26, 0xe2, 0xd6, 0x14, 0x00, //...@@.. - 0x00, 0x00, 0xc4, 0xff, 0x38, 0x00, 0x00, //..@@... - 0x00, 0x00, 0xf8, 0xff, 0x02, 0x00, 0x00, //..@@... - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //..@@... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //..@@... - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //..@@... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - - - /*Unicode: U+0040 (@) , Width: 16 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................ - 0x00, 0x00, 0x00, 0x00, 0x1e, 0x82, 0xca, 0xec, 0xf6, 0xe0, 0xb4, 0x66, 0x08, 0x00, 0x00, 0x00, //.....%@@@@%+.... - 0x00, 0x00, 0x02, 0x8a, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe2, 0x4c, 0x00, 0x00, //...%@@@@@@@@@+.. - 0x00, 0x04, 0xb8, 0xff, 0xfa, 0x9a, 0x3e, 0x0e, 0x04, 0x1a, 0x56, 0xbc, 0xff, 0xfc, 0x60, 0x00, //..%@@%....+%@@+. - 0x00, 0x94, 0xff, 0xe6, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xfa, 0xf8, 0x2a, //.%@@........+@@. - 0x2c, 0xfc, 0xf8, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xff, 0xa2, //.@@..........+@% - 0x90, 0xff, 0x94, 0x00, 0x00, 0x20, 0xca, 0xe6, 0x34, 0xff, 0xff, 0x00, 0x00, 0x1a, 0xff, 0xe6, //%@%...@@.@@...@@ - 0xd4, 0xff, 0x36, 0x00, 0x00, 0xb2, 0xff, 0xff, 0xc8, 0xff, 0xff, 0x00, 0x00, 0x0e, 0xff, 0xf6, //@@...%@@@@@...@@ - 0xf2, 0xff, 0x0e, 0x00, 0x00, 0xee, 0xff, 0x32, 0x36, 0xff, 0xff, 0x00, 0x00, 0x5e, 0xff, 0xce, //@@...@@..@@..+@@ - 0xf4, 0xff, 0x0a, 0x00, 0x00, 0xee, 0xff, 0x32, 0x32, 0xff, 0xff, 0x1c, 0x72, 0xf2, 0xff, 0x56, //@@...@@..@@.+@@+ - 0xda, 0xff, 0x2e, 0x00, 0x00, 0xb2, 0xff, 0xff, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x6a, 0x00, //@@...%@@@@@@@@+. - 0x9e, 0xff, 0x84, 0x00, 0x00, 0x22, 0xcc, 0xe6, 0x36, 0xf6, 0xe2, 0xba, 0x76, 0x18, 0x00, 0x00, //%@%...@@.@@%+... - 0x40, 0xff, 0xf2, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.@@............. - 0x00, 0xb4, 0xff, 0xd6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.%@@............ - 0x00, 0x12, 0xd8, 0xff, 0xf0, 0x80, 0x2c, 0x08, 0x08, 0x2c, 0x80, 0xd6, 0x2a, 0x00, 0x00, 0x00, //..@@@+....+@.... - 0x00, 0x00, 0x12, 0xba, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc4, 0x1c, 0x00, 0x00, 0x00, //...%@@@@@@@@.... - 0x00, 0x00, 0x00, 0x00, 0x4a, 0xa8, 0xe2, 0xf8, 0xe8, 0xb4, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, //....+%@@@%+..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................ - - - /*Unicode: U+0041 (A) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x06, 0xea, 0xec, 0x06, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x5a, 0xff, 0xff, 0x5c, 0x00, 0x00, 0x00, 0x00, //....+@@+.... - 0x00, 0x00, 0x00, 0x00, 0xc2, 0xff, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, //....@@@@.... - 0x00, 0x00, 0x00, 0x28, 0xff, 0xc6, 0xc4, 0xff, 0x2a, 0x00, 0x00, 0x00, //....@@@@.... - 0x00, 0x00, 0x00, 0x90, 0xff, 0x64, 0x5c, 0xff, 0x92, 0x00, 0x00, 0x00, //...%@++@%... - 0x00, 0x00, 0x08, 0xee, 0xf4, 0x0c, 0x06, 0xea, 0xee, 0x08, 0x00, 0x00, //...@@..@@... - 0x00, 0x00, 0x5e, 0xff, 0xa0, 0x00, 0x00, 0x8c, 0xff, 0x60, 0x00, 0x00, //..+@%..%@+.. - 0x00, 0x00, 0xc6, 0xff, 0x3e, 0x00, 0x00, 0x24, 0xfc, 0xc6, 0x00, 0x00, //..@@....@@.. - 0x00, 0x2e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, //..@@@@@@@@.. - 0x00, 0x94, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x94, 0x00, //.%@@@@@@@@%. - 0x0a, 0xf0, 0xfc, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xfc, 0xf0, 0x0a, //.@@......@@. - 0x64, 0xff, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0xff, 0x62, //+@%......%@+ - 0xca, 0xff, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xff, 0xca, //@@+......+@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0042 (B) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0xff, 0xff, 0xff, 0xff, 0xf2, 0xce, 0x68, 0x00, 0x00, //@@@@@@+.. - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x00, //@@@@@@@%. - 0xff, 0xff, 0x00, 0x00, 0x0c, 0x7a, 0xff, 0xea, 0x00, //@@...+@@. - 0xff, 0xff, 0x00, 0x00, 0x00, 0x0a, 0xff, 0xf0, 0x00, //@@....@@. - 0xff, 0xff, 0x00, 0x00, 0x0c, 0x76, 0xff, 0xac, 0x00, //@@...+@%. - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0x98, 0x10, 0x00, //@@@@@@%.. - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0x60, 0x00, //@@@@@@@+. - 0xff, 0xff, 0x00, 0x00, 0x06, 0x2c, 0xb4, 0xff, 0x66, //@@....%@+ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x18, 0xff, 0xda, //@@.....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x18, 0xff, 0xf6, //@@.....@@ - 0xff, 0xff, 0x00, 0x00, 0x06, 0x2c, 0xb4, 0xff, 0xcc, //@@....%@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x46, //@@@@@@@@+ - 0xff, 0xff, 0xff, 0xff, 0xfa, 0xe4, 0xaa, 0x36, 0x00, //@@@@@@%.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0043 (C) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x02, 0x5e, 0xb6, 0xe6, 0xf8, 0xf2, 0xd2, 0x96, 0x36, //...+%@@@@%. - 0x00, 0x18, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //..@@@@@@@@@ - 0x04, 0xca, 0xff, 0xe2, 0x66, 0x1e, 0x04, 0x08, 0x28, 0x64, 0xc4, //.@@@+....+@ - 0x64, 0xff, 0xde, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //+@@........ - 0xbc, 0xff, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //%@+........ - 0xea, 0xff, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@......... - 0xfa, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@......... - 0xea, 0xff, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@......... - 0xbc, 0xff, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //%@+........ - 0x64, 0xff, 0xdc, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //+@@........ - 0x04, 0xcc, 0xff, 0xe0, 0x64, 0x1e, 0x04, 0x08, 0x26, 0x64, 0xc4, //.@@@+....+@ - 0x00, 0x1a, 0xca, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //..@@@@@@@@@ - 0x00, 0x00, 0x04, 0x60, 0xb8, 0xe8, 0xfa, 0xf2, 0xd2, 0x94, 0x36, //...+%@@@@%. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+0044 (D) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0xff, 0xff, 0xff, 0xff, 0xf2, 0xe0, 0xb2, 0x68, 0x0a, 0x00, 0x00, //@@@@@@%+... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x32, 0x00, //@@@@@@@@@.. - 0xff, 0xff, 0x00, 0x00, 0x06, 0x1e, 0x5e, 0xd6, 0xff, 0xe8, 0x12, //@@....+@@@. - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xd0, 0xff, 0x7e, //@@......@@+ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xc6, //@@......+@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xff, 0xec, //@@.......@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xfa, //@@.......@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xff, 0xec, //@@.......@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xff, 0xc6, //@@......+@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xd0, 0xff, 0x7c, //@@......@@+ - 0xff, 0xff, 0x00, 0x00, 0x04, 0x1e, 0x5c, 0xd6, 0xff, 0xe8, 0x12, //@@....+@@@. - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x32, 0x00, //@@@@@@@@@.. - 0xff, 0xff, 0xff, 0xff, 0xf4, 0xe2, 0xb4, 0x68, 0x0a, 0x00, 0x00, //@@@@@@%+... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+0045 (E) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0046 (F) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, //@@@@@@@. - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, //@@@@@@@. - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0047 (G) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x08, 0x6c, 0xbe, 0xea, 0xfa, 0xf0, 0xce, 0x92, 0x36, //...+%@@@@%. - 0x00, 0x22, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //..@@@@@@@@@ - 0x08, 0xd6, 0xff, 0xd8, 0x5c, 0x1a, 0x04, 0x0a, 0x2a, 0x68, 0xc6, //.@@@+....+@ - 0x6c, 0xff, 0xd4, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //+@@........ - 0xc0, 0xff, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //%@+........ - 0xec, 0xff, 0x14, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, //@@....@@@@@ - 0xfa, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, //@@....@@@@@ - 0xec, 0xff, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@.......@@ - 0xc2, 0xff, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@+......@@ - 0x72, 0xff, 0xc8, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //+@@......@@ - 0x0c, 0xde, 0xff, 0xc4, 0x46, 0x0e, 0x04, 0x1e, 0x6e, 0xff, 0xff, //.@@@+...+@@ - 0x00, 0x2c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x66, //..@@@@@@@@+ - 0x00, 0x00, 0x0e, 0x7a, 0xca, 0xf0, 0xf8, 0xdc, 0x96, 0x24, 0x00, //...+@@@@%.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+0048 (H) , Width: 10 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@......@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@......@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@......@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@......@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@......@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@......@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@......@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@......@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@......@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@......@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@......@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0049 (I) , Width: 2 */ - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - - - /*Unicode: U+004a (J) , Width: 4 */ - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x04, 0xff, 0xf8, //..@@ - 0x00, 0x2a, 0xff, 0xe0, //..@@ - 0x24, 0xb8, 0xff, 0xa6, //.%@% - 0xff, 0xff, 0xf8, 0x32, //@@@. - 0xf0, 0xbc, 0x3e, 0x00, //@%.. - - - /*Unicode: U+004b (K) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x22, 0xe0, 0xff, 0x78, 0x00, //@@.....@@+. - 0xff, 0xff, 0x00, 0x00, 0x00, 0x26, 0xe4, 0xfc, 0x6c, 0x00, 0x00, //@@....@@+.. - 0xff, 0xff, 0x00, 0x00, 0x28, 0xe6, 0xfc, 0x60, 0x00, 0x00, 0x00, //@@...@@+... - 0xff, 0xff, 0x00, 0x2c, 0xe8, 0xf8, 0x54, 0x00, 0x00, 0x00, 0x00, //@@..@@+.... - 0xff, 0xff, 0x30, 0xea, 0xf6, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, //@@.@@+..... - 0xff, 0xff, 0xee, 0xf2, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@@@+...... - 0xff, 0xff, 0xf6, 0xe6, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@@@....... - 0xff, 0xff, 0x4c, 0xf8, 0xe8, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, //@@+@@...... - 0xff, 0xff, 0x00, 0x52, 0xfa, 0xec, 0x30, 0x00, 0x00, 0x00, 0x00, //@@.+@@..... - 0xff, 0xff, 0x00, 0x00, 0x5a, 0xfc, 0xee, 0x36, 0x00, 0x00, 0x00, //@@..+@@.... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x62, 0xfc, 0xf0, 0x3a, 0x00, 0x00, //@@...+@@... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xf2, 0x40, 0x00, //@@....+@@.. - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xff, 0xf4, 0x44, //@@.....+@@+ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+004c (L) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+004d (M) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0xff, 0xff, 0xff, 0x62, 0x00, 0x00, 0x00, 0x00, 0x44, 0xff, 0xff, 0xff, //@@@+....+@@@ - 0xff, 0xff, 0xf2, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xf2, 0xff, 0xff, //@@@%....%@@@ - 0xff, 0xff, 0xa0, 0xfc, 0x20, 0x00, 0x00, 0x12, 0xf8, 0xa0, 0xff, 0xff, //@@%@....@%@@ - 0xff, 0xff, 0x40, 0xff, 0x80, 0x00, 0x00, 0x70, 0xff, 0x40, 0xff, 0xff, //@@.@+..+@.@@ - 0xff, 0xff, 0x00, 0xe0, 0xde, 0x00, 0x00, 0xd2, 0xde, 0x00, 0xff, 0xff, //@@.@@..@@.@@ - 0xff, 0xff, 0x00, 0x82, 0xff, 0x3e, 0x38, 0xff, 0x80, 0x00, 0xff, 0xff, //@@.%@..@+.@@ - 0xff, 0xff, 0x00, 0x22, 0xff, 0x9e, 0x9c, 0xff, 0x22, 0x00, 0xff, 0xff, //@@..@%%@..@@ - 0xff, 0xff, 0x00, 0x00, 0xc2, 0xf2, 0xf2, 0xc2, 0x00, 0x00, 0xff, 0xff, //@@..@@@@..@@ - 0xff, 0xff, 0x00, 0x00, 0x62, 0xff, 0xff, 0x62, 0x00, 0x00, 0xff, 0xff, //@@..+@@+..@@ - 0xff, 0xff, 0x00, 0x00, 0x0c, 0xf4, 0xf4, 0x0c, 0x00, 0x00, 0xff, 0xff, //@@...@@...@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@........@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@........@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@........@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+004e (N) , Width: 10 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0xff, 0xff, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@%.....@@ - 0xff, 0xff, 0xf8, 0x26, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@@.....@@ - 0xff, 0xff, 0xff, 0xb6, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@@%....@@ - 0xff, 0xff, 0xb4, 0xff, 0x4e, 0x00, 0x00, 0x00, 0xff, 0xff, //@@%@+...@@ - 0xff, 0xff, 0x26, 0xfa, 0xdc, 0x06, 0x00, 0x00, 0xff, 0xff, //@@.@@...@@ - 0xff, 0xff, 0x00, 0x8e, 0xff, 0x7c, 0x00, 0x00, 0xff, 0xff, //@@.%@+..@@ - 0xff, 0xff, 0x00, 0x10, 0xea, 0xf4, 0x1c, 0x00, 0xff, 0xff, //@@..@@..@@ - 0xff, 0xff, 0x00, 0x00, 0x68, 0xff, 0xaa, 0x00, 0xff, 0xff, //@@..+@%.@@ - 0xff, 0xff, 0x00, 0x00, 0x02, 0xd2, 0xff, 0x40, 0xff, 0xff, //@@...@@.@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x42, 0xff, 0xd4, 0xff, 0xff, //@@...+@@@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xae, 0xff, 0xff, 0xff, //@@....%@@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x22, 0xf8, 0xff, 0xff, //@@.....@@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xff, 0xff, //@@.....%@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+004f (O) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x0e, 0x7e, 0xd0, 0xf2, 0xf2, 0xd0, 0x80, 0x0e, 0x00, 0x00, //...+@@@@+... - 0x00, 0x28, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x28, 0x00, //..@@@@@@@@.. - 0x08, 0xd8, 0xff, 0xce, 0x46, 0x0a, 0x0a, 0x44, 0xce, 0xff, 0xd8, 0x08, //.@@@+..+@@@. - 0x6e, 0xff, 0xd4, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xd6, 0xff, 0x6c, //+@@......@@+ - 0xc0, 0xff, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xff, 0xbe, //%@+......+@% - 0xec, 0xff, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0xff, 0xea, //@@........@@ - 0xfa, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0xfa, //@@........@@ - 0xec, 0xff, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0xff, 0xea, //@@........@@ - 0xc0, 0xff, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xff, 0xbe, //%@+......+@% - 0x6e, 0xff, 0xd4, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xd4, 0xff, 0x6c, //+@@......@@+ - 0x0a, 0xda, 0xff, 0xcc, 0x44, 0x0a, 0x08, 0x42, 0xcc, 0xff, 0xd8, 0x08, //.@@@+..+@@@. - 0x00, 0x28, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x28, 0x00, //..@@@@@@@@.. - 0x00, 0x00, 0x0e, 0x80, 0xd0, 0xf4, 0xf4, 0xd2, 0x80, 0x0e, 0x00, 0x00, //...+@@@@+... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0050 (P) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0xff, 0xff, 0xff, 0xf2, 0xc0, 0x4a, 0x00, //@@@@@%+. - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4c, //@@@@@@@+ - 0xff, 0xff, 0x00, 0x00, 0x1a, 0xa8, 0xff, 0xc6, //@@...%@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x14, 0xff, 0xf4, //@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x14, 0xff, 0xf4, //@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x18, 0xa6, 0xff, 0xc6, //@@...%@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4e, //@@@@@@@+ - 0xff, 0xff, 0xff, 0xff, 0xf2, 0xc2, 0x4a, 0x00, //@@@@@@+. - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0051 (Q) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x0e, 0x7e, 0xd0, 0xf2, 0xf4, 0xd2, 0x82, 0x10, 0x00, 0x00, //...+@@@@%... - 0x00, 0x28, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe2, 0x2c, 0x00, //..@@@@@@@@.. - 0x08, 0xd8, 0xff, 0xce, 0x46, 0x0a, 0x0a, 0x44, 0xce, 0xff, 0xde, 0x0c, //.@@@+..+@@@. - 0x6e, 0xff, 0xd4, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xd6, 0xff, 0x74, //+@@......@@+ - 0xc0, 0xff, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xff, 0xc2, //%@+......+@@ - 0xec, 0xff, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0xff, 0xec, //@@........@@ - 0xfa, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0xf6, //@@........@@ - 0xec, 0xff, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0xff, 0xdc, //@@........@@ - 0xc0, 0xff, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xff, 0xb0, //%@+......+@% - 0x6e, 0xff, 0xd4, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xd4, 0xff, 0x4a, //+@@......@@+ - 0x0a, 0xdc, 0xff, 0xcc, 0x44, 0x0a, 0x08, 0x42, 0xcc, 0xff, 0xac, 0x00, //.@@@+..+@@%. - 0x00, 0x2a, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa2, 0x08, 0x00, //..@@@@@@@%.. - 0x00, 0x00, 0x10, 0x82, 0xd2, 0xf4, 0xff, 0xff, 0xa6, 0x00, 0x00, 0x00, //...%@@@@%... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xfa, 0xff, 0x62, 0x00, 0x00, //......+@@+.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xff, 0xf8, 0x42, 0x00, //.......+@@+. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0052 (R) , Width: 10 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0xff, 0xff, 0xff, 0xff, 0xf2, 0xc6, 0x58, 0x00, 0x00, 0x00, //@@@@@@+... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5c, 0x00, 0x00, //@@@@@@@+.. - 0xff, 0xff, 0x00, 0x00, 0x18, 0xa0, 0xff, 0xce, 0x00, 0x00, //@@...%@@.. - 0xff, 0xff, 0x00, 0x00, 0x00, 0x14, 0xff, 0xf6, 0x00, 0x00, //@@....@@.. - 0xff, 0xff, 0x00, 0x00, 0x00, 0x14, 0xff, 0xea, 0x00, 0x00, //@@....@@.. - 0xff, 0xff, 0x00, 0x00, 0x16, 0xa0, 0xff, 0xa4, 0x00, 0x00, //@@...%@%.. - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc4, 0x14, 0x00, 0x00, //@@@@@@@... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf2, 0x48, 0x00, 0x00, 0x00, //@@@@@@+... - 0xff, 0xff, 0x00, 0x06, 0x58, 0xf6, 0xf8, 0x30, 0x00, 0x00, //@@..+@@... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x74, 0xff, 0xc6, 0x00, 0x00, //@@...+@@.. - 0xff, 0xff, 0x00, 0x00, 0x00, 0x04, 0xd4, 0xff, 0x66, 0x00, //@@....@@+. - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x42, 0xff, 0xee, 0x18, //@@....+@@. - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xff, 0xac, //@@.....%@% - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0053 (S) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x34, 0xb0, 0xe0, 0xf8, 0xde, 0x9e, 0x3a, 0x00, //..%@@@%.. - 0x50, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, //+@@@@@@@. - 0xd2, 0xff, 0xb6, 0x2e, 0x06, 0x14, 0x54, 0xbe, 0x00, //@@%...+%. - 0xf6, 0xff, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xd4, 0xff, 0x7c, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, //@@+...... - 0x56, 0xff, 0xff, 0xff, 0xda, 0xa6, 0x5a, 0x04, 0x00, //+@@@@%+.. - 0x00, 0x40, 0xb0, 0xf2, 0xff, 0xff, 0xff, 0xce, 0x12, //..%@@@@@. - 0x00, 0x00, 0x00, 0x02, 0x28, 0x68, 0xde, 0xff, 0x96, //.....+@@% - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xff, 0xe0, //.......@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xff, 0xf8, //.......@@ - 0xc8, 0x68, 0x26, 0x06, 0x0a, 0x38, 0xc0, 0xff, 0xd4, //@+....%@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x52, //@@@@@@@@+ - 0x32, 0x8e, 0xd0, 0xf4, 0xf8, 0xe2, 0xaa, 0x3a, 0x00, //.%@@@@%.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0054 (T) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0055 (U) , Width: 10 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@......@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@......@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@......@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@......@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@......@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@......@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@......@@ - 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, //@@......@@ - 0xee, 0xff, 0x14, 0x00, 0x00, 0x00, 0x00, 0x16, 0xff, 0xee, //@@......@@ - 0xc4, 0xff, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x5c, 0xff, 0xc4, //@@+....+@@ - 0x6e, 0xff, 0xe8, 0x54, 0x12, 0x12, 0x56, 0xea, 0xff, 0x6c, //+@@+..+@@+ - 0x04, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc2, 0x04, //.@@@@@@@@. - 0x00, 0x08, 0x7a, 0xd2, 0xf6, 0xf4, 0xd2, 0x7a, 0x08, 0x00, //..+@@@@+.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0056 (V) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0xcc, 0xff, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xff, 0xcc, //@@+......+@@ - 0x68, 0xff, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0xff, 0x66, //+@%......%@+ - 0x0e, 0xf4, 0xfc, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xfc, 0xf4, 0x0c, //.@@......@@. - 0x00, 0x9e, 0xff, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xff, 0x9e, 0x00, //.%@+....+@%. - 0x00, 0x38, 0xff, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdc, 0xff, 0x38, 0x00, //..@@....@@.. - 0x00, 0x00, 0xd4, 0xff, 0x3e, 0x00, 0x00, 0x40, 0xff, 0xd4, 0x00, 0x00, //..@@....@@.. - 0x00, 0x00, 0x6e, 0xff, 0xa2, 0x00, 0x00, 0xa2, 0xff, 0x70, 0x00, 0x00, //..+@%..%@+.. - 0x00, 0x00, 0x12, 0xf6, 0xf4, 0x0c, 0x0e, 0xf4, 0xf8, 0x12, 0x00, 0x00, //...@@..@@... - 0x00, 0x00, 0x00, 0xa4, 0xff, 0x66, 0x66, 0xff, 0xa6, 0x00, 0x00, 0x00, //...%@++@%... - 0x00, 0x00, 0x00, 0x40, 0xff, 0xc8, 0xca, 0xff, 0x42, 0x00, 0x00, 0x00, //....@@@@+... - 0x00, 0x00, 0x00, 0x00, 0xda, 0xff, 0xff, 0xdc, 0x00, 0x00, 0x00, 0x00, //....@@@@.... - 0x00, 0x00, 0x00, 0x00, 0x76, 0xff, 0xff, 0x78, 0x00, 0x00, 0x00, 0x00, //....+@@+.... - 0x00, 0x00, 0x00, 0x00, 0x16, 0xf8, 0xfa, 0x18, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0057 (W) , Width: 17 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................. - 0xde, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x3a, 0xff, 0xff, 0xff, 0x22, 0x00, 0x00, 0x00, 0x2e, 0xff, 0xdc, //@@.....@@@.....@@ - 0x9c, 0xff, 0x6e, 0x00, 0x00, 0x00, 0x7a, 0xff, 0xf8, 0xff, 0x64, 0x00, 0x00, 0x00, 0x6e, 0xff, 0x9a, //%@+...+@@@+...+@% - 0x5a, 0xff, 0xb0, 0x00, 0x00, 0x00, 0xba, 0xff, 0x98, 0xff, 0xa4, 0x00, 0x00, 0x00, 0xae, 0xff, 0x58, //+@%...%@%@%...%@+ - 0x18, 0xff, 0xec, 0x00, 0x00, 0x04, 0xf4, 0xfc, 0x1e, 0xfa, 0xe4, 0x00, 0x00, 0x00, 0xec, 0xff, 0x16, //.@@...@@.@@...@@. - 0x00, 0xd6, 0xff, 0x30, 0x00, 0x38, 0xff, 0xce, 0x00, 0xc8, 0xff, 0x28, 0x00, 0x2e, 0xff, 0xd2, 0x00, //.@@...@@.@@...@@. - 0x00, 0x94, 0xff, 0x72, 0x00, 0x78, 0xff, 0x8c, 0x00, 0x88, 0xff, 0x68, 0x00, 0x6e, 0xff, 0x90, 0x00, //.%@+.+@%.%@+.+@%. - 0x00, 0x50, 0xff, 0xb2, 0x00, 0xb6, 0xff, 0x4c, 0x00, 0x48, 0xff, 0xaa, 0x00, 0xae, 0xff, 0x4e, 0x00, //.+@%.%@+.+@%.%@+. - 0x00, 0x10, 0xfc, 0xee, 0x06, 0xf2, 0xfa, 0x0e, 0x00, 0x0c, 0xfa, 0xea, 0x02, 0xec, 0xfa, 0x0e, 0x00, //..@@.@@...@@.@@.. - 0x00, 0x00, 0xcc, 0xff, 0x6a, 0xff, 0xca, 0x00, 0x00, 0x00, 0xc8, 0xff, 0x5c, 0xff, 0xc8, 0x00, 0x00, //..@@+@@...@@+@@.. - 0x00, 0x00, 0x8a, 0xff, 0xe2, 0xff, 0x88, 0x00, 0x00, 0x00, 0x88, 0xff, 0xda, 0xff, 0x86, 0x00, 0x00, //..%@@@%...%@@@%.. - 0x00, 0x00, 0x48, 0xff, 0xff, 0xff, 0x48, 0x00, 0x00, 0x00, 0x48, 0xff, 0xff, 0xff, 0x44, 0x00, 0x00, //..+@@@+...+@@@+.. - 0x00, 0x00, 0x0a, 0xfa, 0xff, 0xfa, 0x0a, 0x00, 0x00, 0x00, 0x0c, 0xfa, 0xff, 0xf8, 0x08, 0x00, 0x00, //...@@@.....@@@... - 0x00, 0x00, 0x00, 0xc4, 0xff, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xff, 0xc0, 0x00, 0x00, 0x00, //...@@@.....@@%... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //................. - - - /*Unicode: U+0058 (X) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0xb4, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0xba, 0xff, 0xaa, //.%@%....%@% - 0x00, 0x24, 0xf8, 0xff, 0x46, 0x00, 0x00, 0x64, 0xff, 0xec, 0x16, //..@@+..+@@. - 0x00, 0x00, 0x86, 0xff, 0xd6, 0x04, 0x1a, 0xf0, 0xff, 0x5a, 0x00, //..%@@..@@+. - 0x00, 0x00, 0x0a, 0xe4, 0xff, 0x72, 0xb4, 0xff, 0xb2, 0x00, 0x00, //...@@+%@%.. - 0x00, 0x00, 0x00, 0x58, 0xff, 0xfa, 0xff, 0xee, 0x1a, 0x00, 0x00, //...+@@@@... - 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x62, 0x00, 0x00, 0x00, //....%@@+... - 0x00, 0x00, 0x00, 0x00, 0xb2, 0xff, 0xff, 0x34, 0x00, 0x00, 0x00, //....%@@.... - 0x00, 0x00, 0x00, 0x5c, 0xff, 0xff, 0xff, 0xc6, 0x00, 0x00, 0x00, //...+@@@@... - 0x00, 0x00, 0x16, 0xec, 0xff, 0x7a, 0xec, 0xff, 0x5c, 0x00, 0x00, //...@@+@@+.. - 0x00, 0x00, 0xae, 0xff, 0xbe, 0x00, 0x6a, 0xff, 0xe4, 0x0c, 0x00, //..%@%.+@@.. - 0x00, 0x58, 0xff, 0xf4, 0x22, 0x00, 0x02, 0xd0, 0xff, 0x88, 0x00, //.+@@...@@%. - 0x14, 0xea, 0xff, 0x70, 0x00, 0x00, 0x00, 0x3e, 0xff, 0xf8, 0x24, //.@@+....@@. - 0xaa, 0xff, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xff, 0xb4, //%@@.....%@% - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+0059 (Y) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0xa0, 0xff, 0xca, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0xca, 0xff, 0xa0, //%@@......@@% - 0x0a, 0xd8, 0xff, 0x72, 0x00, 0x00, 0x00, 0x00, 0x74, 0xff, 0xd8, 0x0a, //.@@+....+@@. - 0x00, 0x30, 0xf8, 0xf4, 0x22, 0x00, 0x00, 0x22, 0xf4, 0xf6, 0x30, 0x00, //..@@....@@.. - 0x00, 0x00, 0x6e, 0xff, 0xbc, 0x00, 0x00, 0xbe, 0xff, 0x6c, 0x00, 0x00, //..+@%..%@+.. - 0x00, 0x00, 0x00, 0xb0, 0xff, 0x64, 0x66, 0xff, 0xb0, 0x00, 0x00, 0x00, //...%@++@%... - 0x00, 0x00, 0x00, 0x12, 0xe2, 0xf0, 0xf0, 0xe2, 0x10, 0x00, 0x00, 0x00, //....@@@@.... - 0x00, 0x00, 0x00, 0x00, 0x3c, 0xff, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+005a (Z) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, //@@@@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xbc, 0xff, 0xe6, 0x1a, //.......%@@. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xff, 0xf8, 0x38, 0x00, //......%@@.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xff, 0xff, 0x60, 0x00, 0x00, //.....+@@+.. - 0x00, 0x00, 0x00, 0x00, 0x28, 0xf2, 0xff, 0x92, 0x00, 0x00, 0x00, //.....@@%... - 0x00, 0x00, 0x00, 0x0c, 0xd6, 0xff, 0xbc, 0x02, 0x00, 0x00, 0x00, //....@@%.... - 0x00, 0x00, 0x00, 0xac, 0xff, 0xde, 0x12, 0x00, 0x00, 0x00, 0x00, //...%@@..... - 0x00, 0x00, 0x76, 0xff, 0xf2, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, //..+@@...... - 0x00, 0x42, 0xfa, 0xfc, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.+@@+...... - 0x1e, 0xea, 0xff, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.@@%....... - 0xca, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+005b ([) , Width: 4 */ - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0xff, 0xff, 0xff, 0xff, //@@@@ - 0xff, 0xff, 0xff, 0xff, //@@@@ - 0xff, 0xff, 0x00, 0x00, //@@.. - 0xff, 0xff, 0x00, 0x00, //@@.. - 0xff, 0xff, 0x00, 0x00, //@@.. - 0xff, 0xff, 0x00, 0x00, //@@.. - 0xff, 0xff, 0x00, 0x00, //@@.. - 0xff, 0xff, 0x00, 0x00, //@@.. - 0xff, 0xff, 0x00, 0x00, //@@.. - 0xff, 0xff, 0x00, 0x00, //@@.. - 0xff, 0xff, 0x00, 0x00, //@@.. - 0xff, 0xff, 0x00, 0x00, //@@.. - 0xff, 0xff, 0x00, 0x00, //@@.. - 0xff, 0xff, 0x00, 0x00, //@@.. - 0xff, 0xff, 0xff, 0xff, //@@@@ - 0xff, 0xff, 0xff, 0xff, //@@@@ - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - - - /*Unicode: U+005c (\) , Width: 6 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0xdc, 0xff, 0x38, 0x00, 0x00, 0x00, //@@.... - 0x9a, 0xff, 0x7a, 0x00, 0x00, 0x00, //%@+... - 0x56, 0xff, 0xbc, 0x00, 0x00, 0x00, //+@%... - 0x14, 0xfc, 0xf6, 0x06, 0x00, 0x00, //.@@... - 0x00, 0xd0, 0xff, 0x42, 0x00, 0x00, //.@@+.. - 0x00, 0x8c, 0xff, 0x84, 0x00, 0x00, //.%@%.. - 0x00, 0x4a, 0xff, 0xc8, 0x00, 0x00, //.+@@.. - 0x00, 0x0c, 0xfa, 0xfa, 0x0e, 0x00, //..@@.. - 0x00, 0x00, 0xc4, 0xff, 0x4c, 0x00, //..@@+. - 0x00, 0x00, 0x80, 0xff, 0x90, 0x00, //..+@%. - 0x00, 0x00, 0x3c, 0xff, 0xd2, 0x00, //...@@. - 0x00, 0x00, 0x04, 0xf4, 0xff, 0x16, //...@@. - 0x00, 0x00, 0x00, 0xb6, 0xff, 0x58, //...%@+ - 0x00, 0x00, 0x00, 0x74, 0xff, 0x9a, //...+@% - 0x00, 0x00, 0x00, 0x30, 0xff, 0xdc, //....@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - - - /*Unicode: U+005d (]) , Width: 4 */ - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0xff, 0xff, 0xff, 0xff, //@@@@ - 0xff, 0xff, 0xff, 0xff, //@@@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0xff, 0xff, 0xff, 0xff, //@@@@ - 0xff, 0xff, 0xff, 0xff, //@@@@ - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - - - /*Unicode: U+005e (^) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x08, 0xc2, 0xff, 0xc2, 0x08, 0x00, 0x00, 0x00, //....@@@.... - 0x00, 0x00, 0x04, 0xb6, 0xff, 0xae, 0xff, 0xb4, 0x04, 0x00, 0x00, //...%@%@%... - 0x00, 0x00, 0xa8, 0xfc, 0x62, 0x00, 0x64, 0xfc, 0xa6, 0x00, 0x00, //..%@+.+@%.. - 0x00, 0x98, 0xf8, 0x54, 0x00, 0x00, 0x00, 0x56, 0xf8, 0x98, 0x00, //.%@+...+@%. - 0x88, 0xf4, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xf4, 0x86, //%@+.....+@% - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - /*Unicode: U+005f (_) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@ - - - /*Unicode: U+0060 (`) , Width: 4 */ - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x8a, 0xe8, 0x1c, 0x00, //%@.. - 0x00, 0xa0, 0xc8, 0x06, //.%@. - 0x00, 0x02, 0xb6, 0x9a, //..%% - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - - - /*Unicode: U+0061 (a) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x44, 0xb2, 0xee, 0xf4, 0xc4, 0x42, 0x00, //.+%@@@+. - 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x32, //.@@@@@@. - 0x00, 0xaa, 0x30, 0x06, 0x20, 0xac, 0xff, 0xa6, //.%...%@% - 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xff, 0xe0, //......@@ - 0x02, 0x72, 0xce, 0xf4, 0xff, 0xff, 0xff, 0xf8, //.+@@@@@@ - 0x8c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //%@@@@@@@ - 0xec, 0xff, 0x5c, 0x10, 0x02, 0x10, 0xff, 0xff, //@@+...@@ - 0xec, 0xff, 0x4e, 0x06, 0x20, 0xaa, 0xff, 0xff, //@@+..%@@ - 0xa4, 0xff, 0xff, 0xff, 0xff, 0xae, 0xff, 0xff, //%@@@@%@@ - 0x10, 0xa2, 0xec, 0xee, 0x9c, 0x0a, 0xff, 0xff, //.%@@%.@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0062 (b) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0xff, 0x08, 0x98, 0xea, 0xf2, 0xae, 0x1e, 0x00, //@@.%@@%.. - 0xff, 0xff, 0xac, 0xff, 0xff, 0xff, 0xff, 0xe2, 0x10, //@@%@@@@@. - 0xff, 0xff, 0xde, 0x3e, 0x0a, 0x3e, 0xe0, 0xff, 0x88, //@@@...@@% - 0xff, 0xff, 0x4c, 0x00, 0x00, 0x00, 0x4e, 0xff, 0xd4, //@@+...+@@ - 0xff, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x10, 0xff, 0xf6, //@@.....@@ - 0xff, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x10, 0xff, 0xf6, //@@.....@@ - 0xff, 0xff, 0x4c, 0x00, 0x00, 0x00, 0x4e, 0xff, 0xd4, //@@+...+@@ - 0xff, 0xff, 0xde, 0x3e, 0x0a, 0x3e, 0xe0, 0xff, 0x88, //@@@...@@% - 0xff, 0xff, 0xac, 0xff, 0xff, 0xff, 0xff, 0xe2, 0x10, //@@%@@@@@. - 0xff, 0xff, 0x0a, 0x9a, 0xec, 0xf2, 0xae, 0x20, 0x00, //@@.%@@%.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0063 (c) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x02, 0x6e, 0xca, 0xf2, 0xf4, 0xbe, 0x4c, //..+@@@%+ - 0x04, 0xb8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //.%@@@@@@ - 0x72, 0xff, 0xf2, 0x6c, 0x1a, 0x06, 0x38, 0xae, //+@@+...% - 0xce, 0xff, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, //@@+..... - 0xf4, 0xff, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xf4, 0xff, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xce, 0xff, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, //@@+..... - 0x70, 0xff, 0xf0, 0x6a, 0x1a, 0x06, 0x36, 0xae, //+@@+...% - 0x04, 0xba, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //.%@@@@@@ - 0x00, 0x04, 0x72, 0xd0, 0xf6, 0xf2, 0xbe, 0x4c, //..+@@@%+ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0064 (d) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //.......@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //.......@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //.......@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //.......@@ - 0x00, 0x20, 0xae, 0xf2, 0xea, 0x96, 0x08, 0xff, 0xff, //..%@@%.@@ - 0x12, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xac, 0xff, 0xff, //.@@@@@%@@ - 0x88, 0xff, 0xde, 0x3e, 0x0a, 0x3e, 0xe0, 0xff, 0xff, //%@@...@@@ - 0xd6, 0xff, 0x4c, 0x00, 0x00, 0x00, 0x4e, 0xff, 0xff, //@@+...+@@ - 0xf6, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, //@@.....@@ - 0xf6, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, //@@.....@@ - 0xd6, 0xff, 0x4c, 0x00, 0x00, 0x00, 0x4e, 0xff, 0xff, //@@+...+@@ - 0x88, 0xff, 0xde, 0x3e, 0x0a, 0x3e, 0xe0, 0xff, 0xff, //%@@...@@@ - 0x12, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xac, 0xff, 0xff, //.@@@@@%@@ - 0x00, 0x20, 0xb0, 0xf2, 0xec, 0x98, 0x08, 0xff, 0xff, //..%@@%.@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+0065 (e) , Width: 10 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x5a, 0xbe, 0xee, 0xf8, 0xda, 0x88, 0x0e, 0x00, //..+%@@@%.. - 0x00, 0xa4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd2, 0x0c, //.%@@@@@@@. - 0x62, 0xff, 0xe2, 0x54, 0x12, 0x08, 0x38, 0xc8, 0xff, 0x86, //+@@+...@@% - 0xc6, 0xff, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x20, 0xff, 0xd8, //@@......@@ - 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, //@@@@@@@@@@ - 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@@@ - 0xca, 0xff, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@........ - 0x60, 0xff, 0xe6, 0x62, 0x1e, 0x08, 0x06, 0x24, 0x64, 0xc4, //+@@+....+@ - 0x00, 0x90, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //.%@@@@@@@@ - 0x00, 0x00, 0x42, 0xaa, 0xe2, 0xf8, 0xf4, 0xd2, 0x8c, 0x2e, //..+%@@@@%. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0066 (f) , Width: 7 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x06, 0x88, 0xde, 0xfa, 0xff, //...%@@@ - 0x00, 0x00, 0x82, 0xff, 0xff, 0xff, 0xff, //..%@@@@ - 0x00, 0x00, 0xdc, 0xff, 0x50, 0x04, 0x00, //..@@+.. - 0x00, 0x00, 0xfa, 0xff, 0x00, 0x00, 0x00, //..@@... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@ - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //..@@... - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //..@@... - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //..@@... - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //..@@... - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //..@@... - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //..@@... - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //..@@... - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //..@@... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - - - /*Unicode: U+0067 (g) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x22, 0xb0, 0xf2, 0xea, 0x96, 0x08, 0xff, 0xff, //..%@@%.@@ - 0x12, 0xe4, 0xff, 0xff, 0xff, 0xff, 0xac, 0xff, 0xff, //.@@@@@%@@ - 0x8a, 0xff, 0xde, 0x3e, 0x0a, 0x3e, 0xde, 0xff, 0xff, //%@@...@@@ - 0xd6, 0xff, 0x4a, 0x00, 0x00, 0x00, 0x4c, 0xff, 0xff, //@@+...+@@ - 0xf6, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, //@@.....@@ - 0xf6, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, //@@.....@@ - 0xd6, 0xff, 0x4a, 0x00, 0x00, 0x00, 0x4a, 0xff, 0xff, //@@+...+@@ - 0x8a, 0xff, 0xdc, 0x3c, 0x0a, 0x3c, 0xdc, 0xff, 0xff, //%@@...@@@ - 0x14, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xae, 0xff, 0xfa, //.@@@@@%@@ - 0x00, 0x24, 0xb2, 0xf4, 0xec, 0x98, 0x28, 0xff, 0xe8, //..%@@%.@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xbe, //......+@% - 0x00, 0xae, 0x3c, 0x0c, 0x18, 0x64, 0xf0, 0xff, 0x6a, //.%...+@@+ - 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xca, 0x04, //.@@@@@@@. - 0x00, 0x48, 0xb6, 0xe4, 0xf8, 0xda, 0x88, 0x0c, 0x00, //.+%@@@%.. - - - /*Unicode: U+0068 (h) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@...... - 0xff, 0xff, 0x08, 0x9c, 0xf0, 0xea, 0x86, 0x00, //@@.%@@%. - 0xff, 0xff, 0xaa, 0xff, 0xff, 0xff, 0xff, 0x6a, //@@%@@@@+ - 0xff, 0xff, 0xcc, 0x2a, 0x0e, 0x98, 0xff, 0xca, //@@@..%@@ - 0xff, 0xff, 0x36, 0x00, 0x00, 0x18, 0xff, 0xf2, //@@....@@ - 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0069 (i) , Width: 2 */ - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - - - /*Unicode: U+006a (j) , Width: 4 */ - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0x00, 0x00, //.... - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x00, 0xff, 0xff, //..@@ - 0x00, 0x0e, 0xff, 0xf6, //..@@ - 0x08, 0x76, 0xff, 0xd2, //.+@@ - 0xff, 0xff, 0xff, 0x7a, //@@@+ - 0xfa, 0xda, 0x7e, 0x02, //@@+. - - - /*Unicode: U+006b (k) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x3a, 0xee, 0xff, 0x76, //@@....@@+ - 0xff, 0xff, 0x00, 0x00, 0x44, 0xf4, 0xfc, 0x62, 0x00, //@@..+@@+. - 0xff, 0xff, 0x00, 0x4e, 0xf6, 0xf8, 0x54, 0x00, 0x00, //@@.+@@+.. - 0xff, 0xff, 0x5a, 0xfa, 0xf2, 0x44, 0x00, 0x00, 0x00, //@@+@@+... - 0xff, 0xff, 0xfc, 0xee, 0x38, 0x00, 0x00, 0x00, 0x00, //@@@@..... - 0xff, 0xff, 0xff, 0xf8, 0x52, 0x00, 0x00, 0x00, 0x00, //@@@@+.... - 0xff, 0xff, 0x6c, 0xff, 0xfa, 0x5a, 0x00, 0x00, 0x00, //@@+@@+... - 0xff, 0xff, 0x00, 0x6e, 0xff, 0xfc, 0x64, 0x00, 0x00, //@@.+@@+.. - 0xff, 0xff, 0x00, 0x00, 0x70, 0xff, 0xfc, 0x6e, 0x00, //@@..+@@+. - 0xff, 0xff, 0x00, 0x00, 0x00, 0x72, 0xff, 0xff, 0x78, //@@...+@@+ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - - - /*Unicode: U+006c (l) , Width: 2 */ - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0x00, 0x00, //.. - - - /*Unicode: U+006d (m) , Width: 14 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - 0xff, 0xff, 0x0a, 0x9e, 0xf0, 0xe6, 0x6e, 0x00, 0x10, 0xa2, 0xee, 0xea, 0x84, 0x00, //@@.%@@+..%@@%. - 0xff, 0xff, 0xac, 0xff, 0xff, 0xff, 0xff, 0x4c, 0xc8, 0xff, 0xff, 0xff, 0xff, 0x5c, //@@%@@@@+@@@@@+ - 0xff, 0xff, 0xce, 0x2c, 0x0c, 0x94, 0xff, 0xee, 0xce, 0x2c, 0x0c, 0x94, 0xff, 0xc2, //@@@..%@@@..%@@ - 0xff, 0xff, 0x36, 0x00, 0x00, 0x18, 0xff, 0xff, 0x36, 0x00, 0x00, 0x18, 0xff, 0xe8, //@@....@@....@@ - 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0xff, 0xfc, //@@....@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@....@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.............. - - - /*Unicode: U+006e (n) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0xff, 0x08, 0x9c, 0xf0, 0xea, 0x86, 0x00, //@@.%@@%. - 0xff, 0xff, 0xaa, 0xff, 0xff, 0xff, 0xff, 0x6a, //@@%@@@@+ - 0xff, 0xff, 0xcc, 0x2a, 0x0e, 0x98, 0xff, 0xca, //@@@..%@@ - 0xff, 0xff, 0x36, 0x00, 0x00, 0x18, 0xff, 0xf2, //@@....@@ - 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+006f (o) , Width: 10 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x04, 0x76, 0xce, 0xf4, 0xf4, 0xce, 0x74, 0x04, 0x00, //..+@@@@+.. - 0x06, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbc, 0x04, //.%@@@@@@%. - 0x76, 0xff, 0xee, 0x60, 0x14, 0x14, 0x60, 0xf0, 0xff, 0x74, //+@@+..+@@+ - 0xd0, 0xff, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x62, 0xff, 0xce, //@@+....+@@ - 0xf6, 0xff, 0x12, 0x00, 0x00, 0x00, 0x00, 0x14, 0xff, 0xf4, //@@......@@ - 0xf6, 0xff, 0x12, 0x00, 0x00, 0x00, 0x00, 0x14, 0xff, 0xf4, //@@......@@ - 0xd0, 0xff, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x60, 0xff, 0xce, //@@+....+@@ - 0x76, 0xff, 0xec, 0x5c, 0x12, 0x12, 0x5e, 0xee, 0xff, 0x74, //+@@+..+@@+ - 0x06, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbe, 0x04, //.%@@@@@@%. - 0x00, 0x06, 0x76, 0xd0, 0xf6, 0xf4, 0xd0, 0x74, 0x04, 0x00, //..+@@@@+.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0070 (p) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0xff, 0xff, 0x08, 0x98, 0xea, 0xf2, 0xae, 0x1e, 0x00, //@@.%@@%.. - 0xff, 0xff, 0xac, 0xff, 0xff, 0xff, 0xff, 0xe2, 0x10, //@@%@@@@@. - 0xff, 0xff, 0xde, 0x3e, 0x0a, 0x3e, 0xe0, 0xff, 0x88, //@@@...@@% - 0xff, 0xff, 0x4c, 0x00, 0x00, 0x00, 0x4e, 0xff, 0xd4, //@@+...+@@ - 0xff, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x10, 0xff, 0xf6, //@@.....@@ - 0xff, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x10, 0xff, 0xf6, //@@.....@@ - 0xff, 0xff, 0x4c, 0x00, 0x00, 0x00, 0x4e, 0xff, 0xd4, //@@+...+@@ - 0xff, 0xff, 0xde, 0x3e, 0x0a, 0x3e, 0xe0, 0xff, 0x88, //@@@...@@% - 0xff, 0xff, 0xac, 0xff, 0xff, 0xff, 0xff, 0xe2, 0x10, //@@%@@@@@. - 0xff, 0xff, 0x0a, 0x9a, 0xec, 0xf2, 0xae, 0x20, 0x00, //@@.%@@%.. - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@....... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //@@....... - - - /*Unicode: U+0071 (q) , Width: 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //......... - 0x00, 0x20, 0xae, 0xf2, 0xea, 0x96, 0x08, 0xff, 0xff, //..%@@%.@@ - 0x12, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xac, 0xff, 0xff, //.@@@@@%@@ - 0x88, 0xff, 0xde, 0x3e, 0x0a, 0x3e, 0xe0, 0xff, 0xff, //%@@...@@@ - 0xd6, 0xff, 0x4c, 0x00, 0x00, 0x00, 0x4e, 0xff, 0xff, //@@+...+@@ - 0xf6, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, //@@.....@@ - 0xf6, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, //@@.....@@ - 0xd6, 0xff, 0x4c, 0x00, 0x00, 0x00, 0x4e, 0xff, 0xff, //@@+...+@@ - 0x88, 0xff, 0xde, 0x3e, 0x0a, 0x3e, 0xe0, 0xff, 0xff, //%@@...@@@ - 0x12, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xac, 0xff, 0xff, //.@@@@@%@@ - 0x00, 0x20, 0xb0, 0xf2, 0xec, 0x98, 0x08, 0xff, 0xff, //..%@@%.@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //.......@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //.......@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //.......@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //.......@@ - - - /*Unicode: U+0072 (r) , Width: 6 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0xff, 0xff, 0x08, 0x92, 0xe8, 0xfa, //@@.%@@ - 0xff, 0xff, 0xaa, 0xff, 0xff, 0xff, //@@%@@@ - 0xff, 0xff, 0xe2, 0x48, 0x0a, 0x00, //@@@+.. - 0xff, 0xff, 0x50, 0x00, 0x00, 0x00, //@@+... - 0xff, 0xff, 0x10, 0x00, 0x00, 0x00, //@@.... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, //@@.... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, //@@.... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, //@@.... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, //@@.... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, //@@.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - - - /*Unicode: U+0073 (s) , Width: 7 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x08, 0x80, 0xd6, 0xf4, 0xf0, 0xba, 0x4a, //.+@@@%+ - 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //%@@@@@@ - 0xee, 0xff, 0x70, 0x10, 0x04, 0x34, 0xac, //@@+...% - 0xd8, 0xff, 0xb2, 0x7e, 0x3c, 0x00, 0x00, //@@%+... - 0x42, 0xe8, 0xff, 0xff, 0xff, 0xda, 0x2e, //+@@@@@. - 0x00, 0x08, 0x48, 0x8e, 0xe4, 0xff, 0xc0, //..+%@@% - 0x00, 0x00, 0x00, 0x00, 0x18, 0xff, 0xf4, //.....@@ - 0xb6, 0x44, 0x0a, 0x0a, 0x68, 0xff, 0xf6, //%+..+@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa4, //@@@@@@% - 0x3e, 0xaa, 0xea, 0xf4, 0xd6, 0x7c, 0x08, //.%@@@+. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //....... - - - /*Unicode: U+0074 (t) , Width: 6 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //.@@... - 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //.@@... - 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //.@@... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@ - 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //.@@... - 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //.@@... - 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //.@@... - 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //.@@... - 0x00, 0xfc, 0xff, 0x02, 0x00, 0x00, //.@@... - 0x00, 0xea, 0xff, 0x46, 0x00, 0x00, //.@@+.. - 0x00, 0xaa, 0xff, 0xff, 0xff, 0xff, //.%@@@@ - 0x00, 0x18, 0xaa, 0xec, 0xfc, 0xff, //..%@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //...... - - - /*Unicode: U+0075 (u) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //@@....@@ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x06, 0xff, 0xff, //@@....@@ - 0xea, 0xff, 0x1a, 0x00, 0x00, 0x36, 0xff, 0xff, //@@....@@ - 0xc4, 0xff, 0x96, 0x0c, 0x2a, 0xcc, 0xff, 0xff, //@@%..@@@ - 0x60, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xff, 0xff, //+@@@@%@@ - 0x00, 0x86, 0xea, 0xf0, 0xa0, 0x0a, 0xff, 0xff, //.%@@%.@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+0076 (v) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x12, 0xf6, 0xfa, 0x16, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xee, 0xe8, 0x04, //.@@......@@. - 0x00, 0xa6, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x62, 0xff, 0x8a, 0x00, //.%@+....+@%. - 0x00, 0x40, 0xff, 0xcc, 0x00, 0x00, 0x00, 0x00, 0xca, 0xff, 0x26, 0x00, //..@@....@@.. - 0x00, 0x00, 0xd8, 0xff, 0x28, 0x00, 0x00, 0x30, 0xff, 0xc4, 0x00, 0x00, //..@@....@@.. - 0x00, 0x00, 0x74, 0xff, 0x82, 0x00, 0x00, 0x98, 0xff, 0x62, 0x00, 0x00, //..+@%..%@+.. - 0x00, 0x00, 0x14, 0xf8, 0xdc, 0x00, 0x0c, 0xf2, 0xf2, 0x0a, 0x00, 0x00, //...@@..@@... - 0x00, 0x00, 0x00, 0xa8, 0xff, 0x3a, 0x66, 0xff, 0x9c, 0x00, 0x00, 0x00, //...%@.+@%... - 0x00, 0x00, 0x00, 0x42, 0xff, 0x96, 0xce, 0xff, 0x38, 0x00, 0x00, 0x00, //...+@%@@.... - 0x00, 0x00, 0x00, 0x00, 0xda, 0xf6, 0xff, 0xd6, 0x00, 0x00, 0x00, 0x00, //....@@@@.... - 0x00, 0x00, 0x00, 0x00, 0x76, 0xff, 0xff, 0x74, 0x00, 0x00, 0x00, 0x00, //....+@@+.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - - - /*Unicode: U+0077 (w) , Width: 15 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x06, 0xf8, 0xfc, 0x0a, 0x00, 0x00, 0xce, 0xff, 0xce, 0x00, 0x00, 0x0a, 0xfc, 0xf6, 0x06, //.@@...@@@...@@. - 0x00, 0xc2, 0xff, 0x3e, 0x00, 0x10, 0xfc, 0xff, 0xfc, 0x0e, 0x00, 0x3e, 0xff, 0xc2, 0x00, //.@@...@@@...@@. - 0x00, 0x84, 0xff, 0x74, 0x00, 0x4c, 0xff, 0xdc, 0xff, 0x4a, 0x00, 0x72, 0xff, 0x84, 0x00, //.%@+.+@@@+.+@%. - 0x00, 0x48, 0xff, 0xaa, 0x00, 0x8c, 0xff, 0x58, 0xff, 0x88, 0x00, 0xa8, 0xff, 0x46, 0x00, //.+@%.%@+@%.%@+. - 0x00, 0x0c, 0xfa, 0xde, 0x00, 0xcc, 0xe4, 0x00, 0xe4, 0xc6, 0x00, 0xdc, 0xfa, 0x0c, 0x00, //..@@.@@.@@.@@.. - 0x00, 0x00, 0xcc, 0xff, 0x24, 0xfc, 0x9e, 0x00, 0xa0, 0xf8, 0x1c, 0xff, 0xcc, 0x00, 0x00, //..@@.@%.%@.@@.. - 0x00, 0x00, 0x8e, 0xff, 0x96, 0xff, 0x5a, 0x00, 0x5a, 0xff, 0x8a, 0xff, 0x8e, 0x00, 0x00, //..%@%@+.+@%@%.. - 0x00, 0x00, 0x50, 0xff, 0xf6, 0xfc, 0x14, 0x00, 0x16, 0xfc, 0xee, 0xff, 0x50, 0x00, 0x00, //..+@@@...@@@+.. - 0x00, 0x00, 0x14, 0xff, 0xff, 0xce, 0x00, 0x00, 0x00, 0xd0, 0xff, 0xff, 0x14, 0x00, 0x00, //...@@@...@@@... - 0x00, 0x00, 0x00, 0xd6, 0xff, 0x88, 0x00, 0x00, 0x00, 0x8a, 0xff, 0xd4, 0x00, 0x00, 0x00, //...@@%...%@@... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............... - - - /*Unicode: U+0078 (x) , Width: 10 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0xa6, 0xff, 0xd2, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xff, 0xa4, //%@@....@@% - 0x10, 0xe4, 0xff, 0x56, 0x00, 0x00, 0x56, 0xff, 0xde, 0x0e, //.@@+..+@@. - 0x00, 0x46, 0xff, 0xd6, 0x00, 0x02, 0xd6, 0xfc, 0x3c, 0x00, //.+@@..@@.. - 0x00, 0x00, 0x94, 0xff, 0x5c, 0x5c, 0xff, 0x84, 0x00, 0x00, //..%@++@%.. - 0x00, 0x00, 0x08, 0xda, 0xda, 0xda, 0xce, 0x04, 0x00, 0x00, //...@@@@... - 0x00, 0x00, 0x16, 0xec, 0xe0, 0xf0, 0xe8, 0x12, 0x00, 0x00, //...@@@@... - 0x00, 0x00, 0xae, 0xff, 0x5c, 0x76, 0xff, 0xa6, 0x00, 0x00, //..%@++@%.. - 0x00, 0x58, 0xff, 0xd2, 0x00, 0x06, 0xe0, 0xff, 0x52, 0x00, //.+@@..@@+. - 0x14, 0xea, 0xff, 0x4a, 0x00, 0x00, 0x58, 0xff, 0xe8, 0x12, //.@@+..+@@. - 0xaa, 0xff, 0xc2, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xff, 0xa8, //%@@....@@% - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //.......... - - - /*Unicode: U+0079 (y) , Width: 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //............ - 0x24, 0xfc, 0xf4, 0x12, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xf2, 0xfc, 0x26, //.@@......@@. - 0x00, 0xa8, 0xff, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x74, 0xff, 0xae, 0x00, //.%@+....+@%. - 0x00, 0x30, 0xff, 0xe4, 0x04, 0x00, 0x00, 0x02, 0xe0, 0xff, 0x38, 0x00, //..@@....@@.. - 0x00, 0x00, 0xb6, 0xff, 0x5e, 0x00, 0x00, 0x56, 0xff, 0xc2, 0x00, 0x00, //..%@+..+@@.. - 0x00, 0x00, 0x3e, 0xff, 0xd0, 0x00, 0x00, 0xc6, 0xff, 0x4c, 0x00, 0x00, //...@@..@@+.. - 0x00, 0x00, 0x00, 0xc4, 0xff, 0x42, 0x36, 0xff, 0xd4, 0x00, 0x00, 0x00, //...@@+.@@... - 0x00, 0x00, 0x00, 0x4a, 0xff, 0xb6, 0xa8, 0xff, 0x60, 0x00, 0x00, 0x00, //...+@%%@+... - 0x00, 0x00, 0x00, 0x00, 0xd0, 0xfc, 0xfa, 0xe2, 0x04, 0x00, 0x00, 0x00, //....@@@@.... - 0x00, 0x00, 0x00, 0x00, 0x58, 0xff, 0xff, 0x74, 0x00, 0x00, 0x00, 0x00, //....+@@+.... - 0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0xee, 0x0c, 0x00, 0x00, 0x00, 0x00, //.....@@..... - 0x00, 0x00, 0x00, 0x00, 0x62, 0xff, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, //....+@%..... - 0x00, 0x00, 0x00, 0x10, 0xba, 0xff, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, //....%@...... - 0x00, 0x00, 0xff, 0xff, 0xff, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //..@@@%...... - 0x00, 0x00, 0xff, 0xf6, 0xb6, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //..@@%....... - - - /*Unicode: U+007a (z) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xda, //@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, 0x4a, 0xfc, 0xfa, 0x36, //....+@@. - 0x00, 0x00, 0x00, 0x1e, 0xec, 0xff, 0x7a, 0x00, //....@@+. - 0x00, 0x00, 0x06, 0xca, 0xff, 0xc2, 0x02, 0x00, //...@@@.. - 0x00, 0x00, 0x98, 0xff, 0xee, 0x1e, 0x00, 0x00, //..%@@... - 0x00, 0x5c, 0xff, 0xff, 0x58, 0x00, 0x00, 0x00, //.+@@+... - 0x2a, 0xf4, 0xff, 0xa2, 0x00, 0x00, 0x00, 0x00, //.@@%.... - 0xd8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //@@@@@@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+007b ({) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x10, 0x96, 0xda, 0xf4, 0xff, //....%@@@ - 0x00, 0x00, 0x00, 0xa4, 0xff, 0xff, 0xff, 0xff, //...%@@@@ - 0x00, 0x00, 0x00, 0xe8, 0xff, 0x66, 0x0c, 0x00, //...@@+.. - 0x00, 0x00, 0x00, 0xfc, 0xff, 0x04, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x0c, 0xff, 0xf6, 0x00, 0x00, 0x00, //...@@... - 0x00, 0x14, 0x86, 0xff, 0xcc, 0x00, 0x00, 0x00, //..%@@... - 0xff, 0xff, 0xff, 0xca, 0x32, 0x00, 0x00, 0x00, //@@@@.... - 0xff, 0xff, 0xfc, 0xc2, 0x26, 0x00, 0x00, 0x00, //@@@@.... - 0x00, 0x1e, 0xaa, 0xff, 0xbe, 0x00, 0x00, 0x00, //..%@%... - 0x00, 0x00, 0x1e, 0xff, 0xf0, 0x00, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x02, 0xff, 0xff, 0x00, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x00, 0xfa, 0xff, 0x08, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x00, 0xe2, 0xff, 0x74, 0x0e, 0x00, //...@@+.. - 0x00, 0x00, 0x00, 0x96, 0xff, 0xff, 0xff, 0xff, //...%@@@@ - 0x00, 0x00, 0x00, 0x0c, 0x90, 0xd8, 0xf6, 0xff, //....%@@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+007c (|) , Width: 2 */ - 0x00, 0x00, //.. - 0x00, 0x00, //.. - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - 0xff, 0xff, //@@ - - - /*Unicode: U+007d (}) , Width: 8 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - 0xff, 0xf4, 0xda, 0x96, 0x10, 0x00, 0x00, 0x00, //@@@%.... - 0xff, 0xff, 0xff, 0xff, 0xa4, 0x00, 0x00, 0x00, //@@@@%... - 0x00, 0x0c, 0x64, 0xff, 0xe8, 0x00, 0x00, 0x00, //..+@@... - 0x00, 0x00, 0x04, 0xff, 0xfc, 0x00, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x00, 0xf8, 0xff, 0x0a, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x00, 0xcc, 0xff, 0x86, 0x14, 0x00, //...@@%.. - 0x00, 0x00, 0x00, 0x32, 0xca, 0xff, 0xff, 0xff, //....@@@@ - 0x00, 0x00, 0x00, 0x26, 0xc2, 0xfc, 0xff, 0xff, //....@@@@ - 0x00, 0x00, 0x00, 0xbe, 0xff, 0xa8, 0x1e, 0x00, //...%@%.. - 0x00, 0x00, 0x00, 0xf0, 0xff, 0x1e, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //...@@... - 0x00, 0x00, 0x0a, 0xff, 0xf8, 0x00, 0x00, 0x00, //...@@... - 0x00, 0x0c, 0x70, 0xff, 0xe0, 0x00, 0x00, 0x00, //..+@@... - 0xff, 0xff, 0xff, 0xff, 0x96, 0x00, 0x00, 0x00, //@@@@%... - 0xff, 0xf6, 0xd8, 0x90, 0x0c, 0x00, 0x00, 0x00, //@@@%.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........ - - - /*Unicode: U+007e (~) , Width: 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, //........... - 0x10, 0x8e, 0xe4, 0xf6, 0xd0, 0x8a, 0x3e, 0x0a, 0x0e, 0x58, 0xda, //.%@@@%...+@ - 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe2, //@@@@@@@@@@@ - 0xea, 0x68, 0x12, 0x0c, 0x40, 0x8a, 0xd2, 0xf6, 0xe4, 0x90, 0x10, //@+...%@@@%. - 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //........... - - - -#endif + /*4 rows*/ }; +uint32_t advance_w :8; /*The glyph need this space. Draw the next glyph after this width */ +uint32_t advance_w_fract :4; /*Fractional part of `advance_width` in 1/16 unit*/ +uint32_t box_w :8; /*Width of the glyph's bounding box*/ +uint32_t box_h :8; /*Height of the glyph's bounding box*/ +uint32_t ofs_x :8; /*x offset of the bounding box*/ +uint32_t ofs_y :8; /*y offset of the bounding box*/ +uint32_t glyph_index : 20; /* Start index of the bitmap. A font can be max 1 MB. */ /*Store the glyph descriptions*/ static const lv_font_glyph_dsc_t lv_font_dejavu_20_glyph_dsc[] = { -#if LV_USE_FONT_DEJAVU_20 == 1 - {.w_px = 6, .glyph_index = 0}, /*Unicode: U+0020 ( )*/ - {.w_px = 2, .glyph_index = 20}, /*Unicode: U+0021 (!)*/ - {.w_px = 6, .glyph_index = 40}, /*Unicode: U+0022 (")*/ - {.w_px = 12, .glyph_index = 60}, /*Unicode: U+0023 (#)*/ - {.w_px = 9, .glyph_index = 100}, /*Unicode: U+0024 ($)*/ - {.w_px = 15, .glyph_index = 140}, /*Unicode: U+0025 (%)*/ - {.w_px = 12, .glyph_index = 180}, /*Unicode: U+0026 (&)*/ - {.w_px = 2, .glyph_index = 220}, /*Unicode: U+0027 (')*/ - {.w_px = 4, .glyph_index = 240}, /*Unicode: U+0028 (()*/ - {.w_px = 4, .glyph_index = 260}, /*Unicode: U+0029 ())*/ - {.w_px = 7, .glyph_index = 280}, /*Unicode: U+002a (*)*/ - {.w_px = 12, .glyph_index = 300}, /*Unicode: U+002b (+)*/ - {.w_px = 3, .glyph_index = 340}, /*Unicode: U+002c (,)*/ - {.w_px = 5, .glyph_index = 360}, /*Unicode: U+002d (-)*/ - {.w_px = 2, .glyph_index = 380}, /*Unicode: U+002e (.)*/ - {.w_px = 6, .glyph_index = 400}, /*Unicode: U+002f (/)*/ - {.w_px = 9, .glyph_index = 420}, /*Unicode: U+0030 (0)*/ - {.w_px = 8, .glyph_index = 460}, /*Unicode: U+0031 (1)*/ - {.w_px = 9, .glyph_index = 480}, /*Unicode: U+0032 (2)*/ - {.w_px = 9, .glyph_index = 520}, /*Unicode: U+0033 (3)*/ - {.w_px = 10, .glyph_index = 560}, /*Unicode: U+0034 (4)*/ - {.w_px = 8, .glyph_index = 600}, /*Unicode: U+0035 (5)*/ - {.w_px = 9, .glyph_index = 620}, /*Unicode: U+0036 (6)*/ - {.w_px = 8, .glyph_index = 660}, /*Unicode: U+0037 (7)*/ - {.w_px = 9, .glyph_index = 680}, /*Unicode: U+0038 (8)*/ - {.w_px = 9, .glyph_index = 720}, /*Unicode: U+0039 (9)*/ - {.w_px = 2, .glyph_index = 760}, /*Unicode: U+003a (:)*/ - {.w_px = 3, .glyph_index = 780}, /*Unicode: U+003b (;)*/ - {.w_px = 11, .glyph_index = 800}, /*Unicode: U+003c (<)*/ - {.w_px = 11, .glyph_index = 840}, /*Unicode: U+003d (=)*/ - {.w_px = 11, .glyph_index = 880}, /*Unicode: U+003e (>)*/ - {.w_px = 7, .glyph_index = 920}, /*Unicode: U+003f (?)*/ - {.w_px = 16, .glyph_index = 940}, /*Unicode: U+0040 (@)*/ - {.w_px = 12, .glyph_index = 980}, /*Unicode: U+0041 (A)*/ - {.w_px = 9, .glyph_index = 1020}, /*Unicode: U+0042 (B)*/ - {.w_px = 11, .glyph_index = 1060}, /*Unicode: U+0043 (C)*/ - {.w_px = 11, .glyph_index = 1100}, /*Unicode: U+0044 (D)*/ - {.w_px = 8, .glyph_index = 1140}, /*Unicode: U+0045 (E)*/ - {.w_px = 8, .glyph_index = 1160}, /*Unicode: U+0046 (F)*/ - {.w_px = 11, .glyph_index = 1180}, /*Unicode: U+0047 (G)*/ - {.w_px = 10, .glyph_index = 1220}, /*Unicode: U+0048 (H)*/ - {.w_px = 2, .glyph_index = 1260}, /*Unicode: U+0049 (I)*/ - {.w_px = 4, .glyph_index = 1280}, /*Unicode: U+004a (J)*/ - {.w_px = 11, .glyph_index = 1300}, /*Unicode: U+004b (K)*/ - {.w_px = 8, .glyph_index = 1340}, /*Unicode: U+004c (L)*/ - {.w_px = 12, .glyph_index = 1360}, /*Unicode: U+004d (M)*/ - {.w_px = 10, .glyph_index = 1400}, /*Unicode: U+004e (N)*/ - {.w_px = 12, .glyph_index = 1440}, /*Unicode: U+004f (O)*/ - {.w_px = 8, .glyph_index = 1480}, /*Unicode: U+0050 (P)*/ - {.w_px = 12, .glyph_index = 1500}, /*Unicode: U+0051 (Q)*/ - {.w_px = 10, .glyph_index = 1540}, /*Unicode: U+0052 (R)*/ - {.w_px = 9, .glyph_index = 1580}, /*Unicode: U+0053 (S)*/ - {.w_px = 12, .glyph_index = 1620}, /*Unicode: U+0054 (T)*/ - {.w_px = 10, .glyph_index = 1660}, /*Unicode: U+0055 (U)*/ - {.w_px = 12, .glyph_index = 1700}, /*Unicode: U+0056 (V)*/ - {.w_px = 17, .glyph_index = 1740}, /*Unicode: U+0057 (W)*/ - {.w_px = 11, .glyph_index = 1800}, /*Unicode: U+0058 (X)*/ - {.w_px = 12, .glyph_index = 1840}, /*Unicode: U+0059 (Y)*/ - {.w_px = 11, .glyph_index = 1880}, /*Unicode: U+005a (Z)*/ - {.w_px = 4, .glyph_index = 1920}, /*Unicode: U+005b ([)*/ - {.w_px = 6, .glyph_index = 1940}, /*Unicode: U+005c (\)*/ - {.w_px = 4, .glyph_index = 1960}, /*Unicode: U+005d (])*/ - {.w_px = 11, .glyph_index = 1980}, /*Unicode: U+005e (^)*/ - {.w_px = 9, .glyph_index = 2020}, /*Unicode: U+005f (_)*/ - {.w_px = 4, .glyph_index = 2060}, /*Unicode: U+0060 (`)*/ - {.w_px = 8, .glyph_index = 2080}, /*Unicode: U+0061 (a)*/ - {.w_px = 9, .glyph_index = 2100}, /*Unicode: U+0062 (b)*/ - {.w_px = 8, .glyph_index = 2140}, /*Unicode: U+0063 (c)*/ - {.w_px = 9, .glyph_index = 2160}, /*Unicode: U+0064 (d)*/ - {.w_px = 10, .glyph_index = 2200}, /*Unicode: U+0065 (e)*/ - {.w_px = 7, .glyph_index = 2240}, /*Unicode: U+0066 (f)*/ - {.w_px = 9, .glyph_index = 2260}, /*Unicode: U+0067 (g)*/ - {.w_px = 8, .glyph_index = 2300}, /*Unicode: U+0068 (h)*/ - {.w_px = 2, .glyph_index = 2320}, /*Unicode: U+0069 (i)*/ - {.w_px = 4, .glyph_index = 2340}, /*Unicode: U+006a (j)*/ - {.w_px = 9, .glyph_index = 2360}, /*Unicode: U+006b (k)*/ - {.w_px = 2, .glyph_index = 2400}, /*Unicode: U+006c (l)*/ - {.w_px = 14, .glyph_index = 2420}, /*Unicode: U+006d (m)*/ - {.w_px = 8, .glyph_index = 2460}, /*Unicode: U+006e (n)*/ - {.w_px = 10, .glyph_index = 2480}, /*Unicode: U+006f (o)*/ - {.w_px = 9, .glyph_index = 2520}, /*Unicode: U+0070 (p)*/ - {.w_px = 9, .glyph_index = 2560}, /*Unicode: U+0071 (q)*/ - {.w_px = 6, .glyph_index = 2600}, /*Unicode: U+0072 (r)*/ - {.w_px = 7, .glyph_index = 2620}, /*Unicode: U+0073 (s)*/ - {.w_px = 6, .glyph_index = 2640}, /*Unicode: U+0074 (t)*/ - {.w_px = 8, .glyph_index = 2660}, /*Unicode: U+0075 (u)*/ - {.w_px = 12, .glyph_index = 2680}, /*Unicode: U+0076 (v)*/ - {.w_px = 15, .glyph_index = 2720}, /*Unicode: U+0077 (w)*/ - {.w_px = 10, .glyph_index = 2760}, /*Unicode: U+0078 (x)*/ - {.w_px = 12, .glyph_index = 2800}, /*Unicode: U+0079 (y)*/ - {.w_px = 8, .glyph_index = 2840}, /*Unicode: U+007a (z)*/ - {.w_px = 8, .glyph_index = 2860}, /*Unicode: U+007b ({)*/ - {.w_px = 2, .glyph_index = 2880}, /*Unicode: U+007c (|)*/ - {.w_px = 8, .glyph_index = 2900}, /*Unicode: U+007d (})*/ - {.w_px = 11, .glyph_index = 2920}, /*Unicode: U+007e (~)*/ + {.adv_w = 6, .adv_w_fract = 0, .box_w = 6, .box_h = 0, .ofs_x = 0, .ofs_y = 0, .glyph_index = 0}, /*Unicode: U+0020 ( )*/ + {.adv_w = 8, .adv_w_fract = 0, .box_w = 8, .box_h = 13,.ofs_x = 0, .ofs_y = 3, .glyph_index = 0}, /*Unicode: U+0031 (1)*/ + {.adv_w = 9, .adv_w_fract = 0, .box_w = 9, .box_h = 13,.ofs_x = 0, .ofs_y = 3, .glyph_index = 13}, /*Unicode: U+0033 (3)*/ + {.adv_w = 12, .adv_w_fract = 0, .box_w = 12,.box_h = 13,.ofs_x = 0, .ofs_y = 3, .glyph_index = 26}, /*Unicode: U+0041 (A)*/ + {.adv_w = 8, .adv_w_fract = 0, .box_w = 8, .box_h = 10,.ofs_x = 0, .ofs_y = 6, .glyph_index = 39}, /*Unicode: U+0061 (a)*/ +}; -#elif LV_USE_FONT_DEJAVU_20 == 2 - {.w_px = 6, .glyph_index = 0}, /*Unicode: U+0020 ( )*/ - {.w_px = 2, .glyph_index = 40}, /*Unicode: U+0021 (!)*/ - {.w_px = 6, .glyph_index = 60}, /*Unicode: U+0022 (")*/ - {.w_px = 12, .glyph_index = 100}, /*Unicode: U+0023 (#)*/ - {.w_px = 9, .glyph_index = 160}, /*Unicode: U+0024 ($)*/ - {.w_px = 15, .glyph_index = 220}, /*Unicode: U+0025 (%)*/ - {.w_px = 12, .glyph_index = 300}, /*Unicode: U+0026 (&)*/ - {.w_px = 2, .glyph_index = 360}, /*Unicode: U+0027 (')*/ - {.w_px = 4, .glyph_index = 380}, /*Unicode: U+0028 (()*/ - {.w_px = 4, .glyph_index = 400}, /*Unicode: U+0029 ())*/ - {.w_px = 7, .glyph_index = 420}, /*Unicode: U+002a (*)*/ - {.w_px = 12, .glyph_index = 460}, /*Unicode: U+002b (+)*/ - {.w_px = 3, .glyph_index = 520}, /*Unicode: U+002c (,)*/ - {.w_px = 5, .glyph_index = 540}, /*Unicode: U+002d (-)*/ - {.w_px = 2, .glyph_index = 580}, /*Unicode: U+002e (.)*/ - {.w_px = 6, .glyph_index = 600}, /*Unicode: U+002f (/)*/ - {.w_px = 9, .glyph_index = 640}, /*Unicode: U+0030 (0)*/ - {.w_px = 8, .glyph_index = 700}, /*Unicode: U+0031 (1)*/ - {.w_px = 9, .glyph_index = 740}, /*Unicode: U+0032 (2)*/ - {.w_px = 9, .glyph_index = 800}, /*Unicode: U+0033 (3)*/ - {.w_px = 10, .glyph_index = 860}, /*Unicode: U+0034 (4)*/ - {.w_px = 8, .glyph_index = 920}, /*Unicode: U+0035 (5)*/ - {.w_px = 9, .glyph_index = 960}, /*Unicode: U+0036 (6)*/ - {.w_px = 8, .glyph_index = 1020}, /*Unicode: U+0037 (7)*/ - {.w_px = 9, .glyph_index = 1060}, /*Unicode: U+0038 (8)*/ - {.w_px = 9, .glyph_index = 1120}, /*Unicode: U+0039 (9)*/ - {.w_px = 2, .glyph_index = 1180}, /*Unicode: U+003a (:)*/ - {.w_px = 3, .glyph_index = 1200}, /*Unicode: U+003b (;)*/ - {.w_px = 11, .glyph_index = 1220}, /*Unicode: U+003c (<)*/ - {.w_px = 11, .glyph_index = 1280}, /*Unicode: U+003d (=)*/ - {.w_px = 11, .glyph_index = 1340}, /*Unicode: U+003e (>)*/ - {.w_px = 7, .glyph_index = 1400}, /*Unicode: U+003f (?)*/ - {.w_px = 16, .glyph_index = 1440}, /*Unicode: U+0040 (@)*/ - {.w_px = 12, .glyph_index = 1520}, /*Unicode: U+0041 (A)*/ - {.w_px = 9, .glyph_index = 1580}, /*Unicode: U+0042 (B)*/ - {.w_px = 11, .glyph_index = 1640}, /*Unicode: U+0043 (C)*/ - {.w_px = 11, .glyph_index = 1700}, /*Unicode: U+0044 (D)*/ - {.w_px = 8, .glyph_index = 1760}, /*Unicode: U+0045 (E)*/ - {.w_px = 8, .glyph_index = 1800}, /*Unicode: U+0046 (F)*/ - {.w_px = 11, .glyph_index = 1840}, /*Unicode: U+0047 (G)*/ - {.w_px = 10, .glyph_index = 1900}, /*Unicode: U+0048 (H)*/ - {.w_px = 2, .glyph_index = 1960}, /*Unicode: U+0049 (I)*/ - {.w_px = 4, .glyph_index = 1980}, /*Unicode: U+004a (J)*/ - {.w_px = 11, .glyph_index = 2000}, /*Unicode: U+004b (K)*/ - {.w_px = 8, .glyph_index = 2060}, /*Unicode: U+004c (L)*/ - {.w_px = 12, .glyph_index = 2100}, /*Unicode: U+004d (M)*/ - {.w_px = 10, .glyph_index = 2160}, /*Unicode: U+004e (N)*/ - {.w_px = 12, .glyph_index = 2220}, /*Unicode: U+004f (O)*/ - {.w_px = 8, .glyph_index = 2280}, /*Unicode: U+0050 (P)*/ - {.w_px = 12, .glyph_index = 2320}, /*Unicode: U+0051 (Q)*/ - {.w_px = 10, .glyph_index = 2380}, /*Unicode: U+0052 (R)*/ - {.w_px = 9, .glyph_index = 2440}, /*Unicode: U+0053 (S)*/ - {.w_px = 12, .glyph_index = 2500}, /*Unicode: U+0054 (T)*/ - {.w_px = 10, .glyph_index = 2560}, /*Unicode: U+0055 (U)*/ - {.w_px = 12, .glyph_index = 2620}, /*Unicode: U+0056 (V)*/ - {.w_px = 17, .glyph_index = 2680}, /*Unicode: U+0057 (W)*/ - {.w_px = 11, .glyph_index = 2780}, /*Unicode: U+0058 (X)*/ - {.w_px = 12, .glyph_index = 2840}, /*Unicode: U+0059 (Y)*/ - {.w_px = 11, .glyph_index = 2900}, /*Unicode: U+005a (Z)*/ - {.w_px = 4, .glyph_index = 2960}, /*Unicode: U+005b ([)*/ - {.w_px = 6, .glyph_index = 2980}, /*Unicode: U+005c (\)*/ - {.w_px = 4, .glyph_index = 3020}, /*Unicode: U+005d (])*/ - {.w_px = 11, .glyph_index = 3040}, /*Unicode: U+005e (^)*/ - {.w_px = 9, .glyph_index = 3100}, /*Unicode: U+005f (_)*/ - {.w_px = 4, .glyph_index = 3160}, /*Unicode: U+0060 (`)*/ - {.w_px = 8, .glyph_index = 3180}, /*Unicode: U+0061 (a)*/ - {.w_px = 9, .glyph_index = 3220}, /*Unicode: U+0062 (b)*/ - {.w_px = 8, .glyph_index = 3280}, /*Unicode: U+0063 (c)*/ - {.w_px = 9, .glyph_index = 3320}, /*Unicode: U+0064 (d)*/ - {.w_px = 10, .glyph_index = 3380}, /*Unicode: U+0065 (e)*/ - {.w_px = 7, .glyph_index = 3440}, /*Unicode: U+0066 (f)*/ - {.w_px = 9, .glyph_index = 3480}, /*Unicode: U+0067 (g)*/ - {.w_px = 8, .glyph_index = 3540}, /*Unicode: U+0068 (h)*/ - {.w_px = 2, .glyph_index = 3580}, /*Unicode: U+0069 (i)*/ - {.w_px = 4, .glyph_index = 3600}, /*Unicode: U+006a (j)*/ - {.w_px = 9, .glyph_index = 3620}, /*Unicode: U+006b (k)*/ - {.w_px = 2, .glyph_index = 3680}, /*Unicode: U+006c (l)*/ - {.w_px = 14, .glyph_index = 3700}, /*Unicode: U+006d (m)*/ - {.w_px = 8, .glyph_index = 3780}, /*Unicode: U+006e (n)*/ - {.w_px = 10, .glyph_index = 3820}, /*Unicode: U+006f (o)*/ - {.w_px = 9, .glyph_index = 3880}, /*Unicode: U+0070 (p)*/ - {.w_px = 9, .glyph_index = 3940}, /*Unicode: U+0071 (q)*/ - {.w_px = 6, .glyph_index = 4000}, /*Unicode: U+0072 (r)*/ - {.w_px = 7, .glyph_index = 4040}, /*Unicode: U+0073 (s)*/ - {.w_px = 6, .glyph_index = 4080}, /*Unicode: U+0074 (t)*/ - {.w_px = 8, .glyph_index = 4120}, /*Unicode: U+0075 (u)*/ - {.w_px = 12, .glyph_index = 4160}, /*Unicode: U+0076 (v)*/ - {.w_px = 15, .glyph_index = 4220}, /*Unicode: U+0077 (w)*/ - {.w_px = 10, .glyph_index = 4300}, /*Unicode: U+0078 (x)*/ - {.w_px = 12, .glyph_index = 4360}, /*Unicode: U+0079 (y)*/ - {.w_px = 8, .glyph_index = 4420}, /*Unicode: U+007a (z)*/ - {.w_px = 8, .glyph_index = 4460}, /*Unicode: U+007b ({)*/ - {.w_px = 2, .glyph_index = 4500}, /*Unicode: U+007c (|)*/ - {.w_px = 8, .glyph_index = 4520}, /*Unicode: U+007d (})*/ - {.w_px = 11, .glyph_index = 4560}, /*Unicode: U+007e (~)*/ - -#elif LV_USE_FONT_DEJAVU_20 == 4 - {.w_px = 6, .glyph_index = 0}, /*Unicode: U+0020 ( )*/ - {.w_px = 2, .glyph_index = 60}, /*Unicode: U+0021 (!)*/ - {.w_px = 6, .glyph_index = 80}, /*Unicode: U+0022 (")*/ - {.w_px = 12, .glyph_index = 140}, /*Unicode: U+0023 (#)*/ - {.w_px = 9, .glyph_index = 260}, /*Unicode: U+0024 ($)*/ - {.w_px = 15, .glyph_index = 360}, /*Unicode: U+0025 (%)*/ - {.w_px = 12, .glyph_index = 520}, /*Unicode: U+0026 (&)*/ - {.w_px = 2, .glyph_index = 640}, /*Unicode: U+0027 (')*/ - {.w_px = 4, .glyph_index = 660}, /*Unicode: U+0028 (()*/ - {.w_px = 4, .glyph_index = 700}, /*Unicode: U+0029 ())*/ - {.w_px = 7, .glyph_index = 740}, /*Unicode: U+002a (*)*/ - {.w_px = 12, .glyph_index = 820}, /*Unicode: U+002b (+)*/ - {.w_px = 3, .glyph_index = 940}, /*Unicode: U+002c (,)*/ - {.w_px = 5, .glyph_index = 980}, /*Unicode: U+002d (-)*/ - {.w_px = 2, .glyph_index = 1040}, /*Unicode: U+002e (.)*/ - {.w_px = 6, .glyph_index = 1060}, /*Unicode: U+002f (/)*/ - {.w_px = 9, .glyph_index = 1120}, /*Unicode: U+0030 (0)*/ - {.w_px = 8, .glyph_index = 1220}, /*Unicode: U+0031 (1)*/ - {.w_px = 9, .glyph_index = 1300}, /*Unicode: U+0032 (2)*/ - {.w_px = 9, .glyph_index = 1400}, /*Unicode: U+0033 (3)*/ - {.w_px = 10, .glyph_index = 1500}, /*Unicode: U+0034 (4)*/ - {.w_px = 8, .glyph_index = 1600}, /*Unicode: U+0035 (5)*/ - {.w_px = 9, .glyph_index = 1680}, /*Unicode: U+0036 (6)*/ - {.w_px = 8, .glyph_index = 1780}, /*Unicode: U+0037 (7)*/ - {.w_px = 9, .glyph_index = 1860}, /*Unicode: U+0038 (8)*/ - {.w_px = 9, .glyph_index = 1960}, /*Unicode: U+0039 (9)*/ - {.w_px = 2, .glyph_index = 2060}, /*Unicode: U+003a (:)*/ - {.w_px = 3, .glyph_index = 2080}, /*Unicode: U+003b (;)*/ - {.w_px = 11, .glyph_index = 2120}, /*Unicode: U+003c (<)*/ - {.w_px = 11, .glyph_index = 2240}, /*Unicode: U+003d (=)*/ - {.w_px = 11, .glyph_index = 2360}, /*Unicode: U+003e (>)*/ - {.w_px = 7, .glyph_index = 2480}, /*Unicode: U+003f (?)*/ - {.w_px = 16, .glyph_index = 2560}, /*Unicode: U+0040 (@)*/ - {.w_px = 12, .glyph_index = 2720}, /*Unicode: U+0041 (A)*/ - {.w_px = 9, .glyph_index = 2840}, /*Unicode: U+0042 (B)*/ - {.w_px = 11, .glyph_index = 2940}, /*Unicode: U+0043 (C)*/ - {.w_px = 11, .glyph_index = 3060}, /*Unicode: U+0044 (D)*/ - {.w_px = 8, .glyph_index = 3180}, /*Unicode: U+0045 (E)*/ - {.w_px = 8, .glyph_index = 3260}, /*Unicode: U+0046 (F)*/ - {.w_px = 11, .glyph_index = 3340}, /*Unicode: U+0047 (G)*/ - {.w_px = 10, .glyph_index = 3460}, /*Unicode: U+0048 (H)*/ - {.w_px = 2, .glyph_index = 3560}, /*Unicode: U+0049 (I)*/ - {.w_px = 4, .glyph_index = 3580}, /*Unicode: U+004a (J)*/ - {.w_px = 11, .glyph_index = 3620}, /*Unicode: U+004b (K)*/ - {.w_px = 8, .glyph_index = 3740}, /*Unicode: U+004c (L)*/ - {.w_px = 12, .glyph_index = 3820}, /*Unicode: U+004d (M)*/ - {.w_px = 10, .glyph_index = 3940}, /*Unicode: U+004e (N)*/ - {.w_px = 12, .glyph_index = 4040}, /*Unicode: U+004f (O)*/ - {.w_px = 8, .glyph_index = 4160}, /*Unicode: U+0050 (P)*/ - {.w_px = 12, .glyph_index = 4240}, /*Unicode: U+0051 (Q)*/ - {.w_px = 10, .glyph_index = 4360}, /*Unicode: U+0052 (R)*/ - {.w_px = 9, .glyph_index = 4460}, /*Unicode: U+0053 (S)*/ - {.w_px = 12, .glyph_index = 4560}, /*Unicode: U+0054 (T)*/ - {.w_px = 10, .glyph_index = 4680}, /*Unicode: U+0055 (U)*/ - {.w_px = 12, .glyph_index = 4780}, /*Unicode: U+0056 (V)*/ - {.w_px = 17, .glyph_index = 4900}, /*Unicode: U+0057 (W)*/ - {.w_px = 11, .glyph_index = 5080}, /*Unicode: U+0058 (X)*/ - {.w_px = 12, .glyph_index = 5200}, /*Unicode: U+0059 (Y)*/ - {.w_px = 11, .glyph_index = 5320}, /*Unicode: U+005a (Z)*/ - {.w_px = 4, .glyph_index = 5440}, /*Unicode: U+005b ([)*/ - {.w_px = 6, .glyph_index = 5480}, /*Unicode: U+005c (\)*/ - {.w_px = 4, .glyph_index = 5540}, /*Unicode: U+005d (])*/ - {.w_px = 11, .glyph_index = 5580}, /*Unicode: U+005e (^)*/ - {.w_px = 9, .glyph_index = 5700}, /*Unicode: U+005f (_)*/ - {.w_px = 4, .glyph_index = 5800}, /*Unicode: U+0060 (`)*/ - {.w_px = 8, .glyph_index = 5840}, /*Unicode: U+0061 (a)*/ - {.w_px = 9, .glyph_index = 5920}, /*Unicode: U+0062 (b)*/ - {.w_px = 8, .glyph_index = 6020}, /*Unicode: U+0063 (c)*/ - {.w_px = 9, .glyph_index = 6100}, /*Unicode: U+0064 (d)*/ - {.w_px = 10, .glyph_index = 6200}, /*Unicode: U+0065 (e)*/ - {.w_px = 7, .glyph_index = 6300}, /*Unicode: U+0066 (f)*/ - {.w_px = 9, .glyph_index = 6380}, /*Unicode: U+0067 (g)*/ - {.w_px = 8, .glyph_index = 6480}, /*Unicode: U+0068 (h)*/ - {.w_px = 2, .glyph_index = 6560}, /*Unicode: U+0069 (i)*/ - {.w_px = 4, .glyph_index = 6580}, /*Unicode: U+006a (j)*/ - {.w_px = 9, .glyph_index = 6620}, /*Unicode: U+006b (k)*/ - {.w_px = 2, .glyph_index = 6720}, /*Unicode: U+006c (l)*/ - {.w_px = 14, .glyph_index = 6740}, /*Unicode: U+006d (m)*/ - {.w_px = 8, .glyph_index = 6880}, /*Unicode: U+006e (n)*/ - {.w_px = 10, .glyph_index = 6960}, /*Unicode: U+006f (o)*/ - {.w_px = 9, .glyph_index = 7060}, /*Unicode: U+0070 (p)*/ - {.w_px = 9, .glyph_index = 7160}, /*Unicode: U+0071 (q)*/ - {.w_px = 6, .glyph_index = 7260}, /*Unicode: U+0072 (r)*/ - {.w_px = 7, .glyph_index = 7320}, /*Unicode: U+0073 (s)*/ - {.w_px = 6, .glyph_index = 7400}, /*Unicode: U+0074 (t)*/ - {.w_px = 8, .glyph_index = 7460}, /*Unicode: U+0075 (u)*/ - {.w_px = 12, .glyph_index = 7540}, /*Unicode: U+0076 (v)*/ - {.w_px = 15, .glyph_index = 7660}, /*Unicode: U+0077 (w)*/ - {.w_px = 10, .glyph_index = 7820}, /*Unicode: U+0078 (x)*/ - {.w_px = 12, .glyph_index = 7920}, /*Unicode: U+0079 (y)*/ - {.w_px = 8, .glyph_index = 8040}, /*Unicode: U+007a (z)*/ - {.w_px = 8, .glyph_index = 8120}, /*Unicode: U+007b ({)*/ - {.w_px = 2, .glyph_index = 8200}, /*Unicode: U+007c (|)*/ - {.w_px = 8, .glyph_index = 8220}, /*Unicode: U+007d (})*/ - {.w_px = 11, .glyph_index = 8300}, /*Unicode: U+007e (~)*/ - -#elif LV_USE_FONT_DEJAVU_20 == 8 - {.w_px = 6, .glyph_index = 0}, /*Unicode: U+0020 ( )*/ - {.w_px = 2, .glyph_index = 120}, /*Unicode: U+0021 (!)*/ - {.w_px = 6, .glyph_index = 160}, /*Unicode: U+0022 (")*/ - {.w_px = 12, .glyph_index = 280}, /*Unicode: U+0023 (#)*/ - {.w_px = 9, .glyph_index = 520}, /*Unicode: U+0024 ($)*/ - {.w_px = 15, .glyph_index = 700}, /*Unicode: U+0025 (%)*/ - {.w_px = 12, .glyph_index = 1000}, /*Unicode: U+0026 (&)*/ - {.w_px = 2, .glyph_index = 1240}, /*Unicode: U+0027 (')*/ - {.w_px = 4, .glyph_index = 1280}, /*Unicode: U+0028 (()*/ - {.w_px = 4, .glyph_index = 1360}, /*Unicode: U+0029 ())*/ - {.w_px = 7, .glyph_index = 1440}, /*Unicode: U+002a (*)*/ - {.w_px = 12, .glyph_index = 1580}, /*Unicode: U+002b (+)*/ - {.w_px = 3, .glyph_index = 1820}, /*Unicode: U+002c (,)*/ - {.w_px = 5, .glyph_index = 1880}, /*Unicode: U+002d (-)*/ - {.w_px = 2, .glyph_index = 1980}, /*Unicode: U+002e (.)*/ - {.w_px = 6, .glyph_index = 2020}, /*Unicode: U+002f (/)*/ - {.w_px = 9, .glyph_index = 2140}, /*Unicode: U+0030 (0)*/ - {.w_px = 8, .glyph_index = 2320}, /*Unicode: U+0031 (1)*/ - {.w_px = 9, .glyph_index = 2480}, /*Unicode: U+0032 (2)*/ - {.w_px = 9, .glyph_index = 2660}, /*Unicode: U+0033 (3)*/ - {.w_px = 10, .glyph_index = 2840}, /*Unicode: U+0034 (4)*/ - {.w_px = 8, .glyph_index = 3040}, /*Unicode: U+0035 (5)*/ - {.w_px = 9, .glyph_index = 3200}, /*Unicode: U+0036 (6)*/ - {.w_px = 8, .glyph_index = 3380}, /*Unicode: U+0037 (7)*/ - {.w_px = 9, .glyph_index = 3540}, /*Unicode: U+0038 (8)*/ - {.w_px = 9, .glyph_index = 3720}, /*Unicode: U+0039 (9)*/ - {.w_px = 2, .glyph_index = 3900}, /*Unicode: U+003a (:)*/ - {.w_px = 3, .glyph_index = 3940}, /*Unicode: U+003b (;)*/ - {.w_px = 11, .glyph_index = 4000}, /*Unicode: U+003c (<)*/ - {.w_px = 11, .glyph_index = 4220}, /*Unicode: U+003d (=)*/ - {.w_px = 11, .glyph_index = 4440}, /*Unicode: U+003e (>)*/ - {.w_px = 7, .glyph_index = 4660}, /*Unicode: U+003f (?)*/ - {.w_px = 16, .glyph_index = 4800}, /*Unicode: U+0040 (@)*/ - {.w_px = 12, .glyph_index = 5120}, /*Unicode: U+0041 (A)*/ - {.w_px = 9, .glyph_index = 5360}, /*Unicode: U+0042 (B)*/ - {.w_px = 11, .glyph_index = 5540}, /*Unicode: U+0043 (C)*/ - {.w_px = 11, .glyph_index = 5760}, /*Unicode: U+0044 (D)*/ - {.w_px = 8, .glyph_index = 5980}, /*Unicode: U+0045 (E)*/ - {.w_px = 8, .glyph_index = 6140}, /*Unicode: U+0046 (F)*/ - {.w_px = 11, .glyph_index = 6300}, /*Unicode: U+0047 (G)*/ - {.w_px = 10, .glyph_index = 6520}, /*Unicode: U+0048 (H)*/ - {.w_px = 2, .glyph_index = 6720}, /*Unicode: U+0049 (I)*/ - {.w_px = 4, .glyph_index = 6760}, /*Unicode: U+004a (J)*/ - {.w_px = 11, .glyph_index = 6840}, /*Unicode: U+004b (K)*/ - {.w_px = 8, .glyph_index = 7060}, /*Unicode: U+004c (L)*/ - {.w_px = 12, .glyph_index = 7220}, /*Unicode: U+004d (M)*/ - {.w_px = 10, .glyph_index = 7460}, /*Unicode: U+004e (N)*/ - {.w_px = 12, .glyph_index = 7660}, /*Unicode: U+004f (O)*/ - {.w_px = 8, .glyph_index = 7900}, /*Unicode: U+0050 (P)*/ - {.w_px = 12, .glyph_index = 8060}, /*Unicode: U+0051 (Q)*/ - {.w_px = 10, .glyph_index = 8300}, /*Unicode: U+0052 (R)*/ - {.w_px = 9, .glyph_index = 8500}, /*Unicode: U+0053 (S)*/ - {.w_px = 12, .glyph_index = 8680}, /*Unicode: U+0054 (T)*/ - {.w_px = 10, .glyph_index = 8920}, /*Unicode: U+0055 (U)*/ - {.w_px = 12, .glyph_index = 9120}, /*Unicode: U+0056 (V)*/ - {.w_px = 17, .glyph_index = 9360}, /*Unicode: U+0057 (W)*/ - {.w_px = 11, .glyph_index = 9700}, /*Unicode: U+0058 (X)*/ - {.w_px = 12, .glyph_index = 9920}, /*Unicode: U+0059 (Y)*/ - {.w_px = 11, .glyph_index = 10160}, /*Unicode: U+005a (Z)*/ - {.w_px = 4, .glyph_index = 10380}, /*Unicode: U+005b ([)*/ - {.w_px = 6, .glyph_index = 10460}, /*Unicode: U+005c (\)*/ - {.w_px = 4, .glyph_index = 10580}, /*Unicode: U+005d (])*/ - {.w_px = 11, .glyph_index = 10660}, /*Unicode: U+005e (^)*/ - {.w_px = 9, .glyph_index = 10880}, /*Unicode: U+005f (_)*/ - {.w_px = 4, .glyph_index = 11060}, /*Unicode: U+0060 (`)*/ - {.w_px = 8, .glyph_index = 11140}, /*Unicode: U+0061 (a)*/ - {.w_px = 9, .glyph_index = 11300}, /*Unicode: U+0062 (b)*/ - {.w_px = 8, .glyph_index = 11480}, /*Unicode: U+0063 (c)*/ - {.w_px = 9, .glyph_index = 11640}, /*Unicode: U+0064 (d)*/ - {.w_px = 10, .glyph_index = 11820}, /*Unicode: U+0065 (e)*/ - {.w_px = 7, .glyph_index = 12020}, /*Unicode: U+0066 (f)*/ - {.w_px = 9, .glyph_index = 12160}, /*Unicode: U+0067 (g)*/ - {.w_px = 8, .glyph_index = 12340}, /*Unicode: U+0068 (h)*/ - {.w_px = 2, .glyph_index = 12500}, /*Unicode: U+0069 (i)*/ - {.w_px = 4, .glyph_index = 12540}, /*Unicode: U+006a (j)*/ - {.w_px = 9, .glyph_index = 12620}, /*Unicode: U+006b (k)*/ - {.w_px = 2, .glyph_index = 12800}, /*Unicode: U+006c (l)*/ - {.w_px = 14, .glyph_index = 12840}, /*Unicode: U+006d (m)*/ - {.w_px = 8, .glyph_index = 13120}, /*Unicode: U+006e (n)*/ - {.w_px = 10, .glyph_index = 13280}, /*Unicode: U+006f (o)*/ - {.w_px = 9, .glyph_index = 13480}, /*Unicode: U+0070 (p)*/ - {.w_px = 9, .glyph_index = 13660}, /*Unicode: U+0071 (q)*/ - {.w_px = 6, .glyph_index = 13840}, /*Unicode: U+0072 (r)*/ - {.w_px = 7, .glyph_index = 13960}, /*Unicode: U+0073 (s)*/ - {.w_px = 6, .glyph_index = 14100}, /*Unicode: U+0074 (t)*/ - {.w_px = 8, .glyph_index = 14220}, /*Unicode: U+0075 (u)*/ - {.w_px = 12, .glyph_index = 14380}, /*Unicode: U+0076 (v)*/ - {.w_px = 15, .glyph_index = 14620}, /*Unicode: U+0077 (w)*/ - {.w_px = 10, .glyph_index = 14920}, /*Unicode: U+0078 (x)*/ - {.w_px = 12, .glyph_index = 15120}, /*Unicode: U+0079 (y)*/ - {.w_px = 8, .glyph_index = 15360}, /*Unicode: U+007a (z)*/ - {.w_px = 8, .glyph_index = 15520}, /*Unicode: U+007b ({)*/ - {.w_px = 2, .glyph_index = 15680}, /*Unicode: U+007c (|)*/ - {.w_px = 8, .glyph_index = 15720}, /*Unicode: U+007d (})*/ - {.w_px = 11, .glyph_index = 15880}, /*Unicode: U+007e (~)*/ - -#endif +static const uint16_t lv_font_dejavu_20_unicode_map[] = { + 32, /*Unicode: U+0020 ( )*/ + 49, /*Unicode: U+0031 (1)*/ + 51, /*Unicode: U+0033 (3)*/ + 65, /*Unicode: U+0041 (A)*/ + 97, /*Unicode: U+0061 (a)*/ }; lv_font_t lv_font_dejavu_20 = { @@ -9160,21 +112,13 @@ lv_font_t lv_font_dejavu_20 = { .h_px = 20, /*Font height in pixels*/ .glyph_bitmap = lv_font_dejavu_20_glyph_bitmap, /*Bitmap of glyphs*/ .glyph_dsc = lv_font_dejavu_20_glyph_dsc, /*Description of glyphs*/ - .glyph_cnt = 95, /*Number of glyphs in the font*/ + .glyph_cnt = 5, /*Number of glyphs in the font*/ .unicode_list = NULL, /*Every character in the font from 'unicode_first' to 'unicode_last'*/ - .get_bitmap = lv_font_get_bitmap_continuous, /*Function pointer to get glyph's bitmap*/ - .get_width = lv_font_get_width_continuous, /*Function pointer to get glyph's width*/ -#if LV_USE_FONT_DEJAVU_20 == 1 + .get_bitmap = lv_font_get_glyph_bitmap_plain, /*Function pointer to get glyph's bitmap*/ + .get_dsc = lv_font_get_glyph_dsc_plain, /*Function pointer to get glyph's width*/ .bpp = 1, /*Bit per pixel*/ -#elif LV_USE_FONT_DEJAVU_20 == 2 - .bpp = 2, /*Bit per pixel*/ -#elif LV_USE_FONT_DEJAVU_20 == 4 - .bpp = 4, /*Bit per pixel*/ -#elif LV_USE_FONT_DEJAVU_20 == 8 - .bpp = 8, /*Bit per pixel*/ -#endif .monospace = 0, .next_page = NULL, /*Pointer to a font extension*/ }; -#endif /*LV_USE_FONT_DEJAVU_20*/ +#endif /*USE_LV_FONT_DEJAVU_20*/ diff --git a/src/lv_misc/lv_font.c b/src/lv_misc/lv_font.c index df89aea99..d7c4ddad9 100644 --- a/src/lv_misc/lv_font.c +++ b/src/lv_misc/lv_font.c @@ -112,7 +112,7 @@ bool lv_font_is_monospace(const lv_font_t * font_p, uint32_t letter) * @param letter an UNICODE character code * @return pointer to the bitmap of the letter */ -const uint8_t * lv_font_get_bitmap(const lv_font_t * font_p, uint32_t letter) +const uint8_t * lv_font_get_glyph_bitmap(const lv_font_t * font_p, uint32_t letter) { const lv_font_t * font_i = font_p; while(font_i != NULL) { @@ -131,12 +131,12 @@ const uint8_t * lv_font_get_bitmap(const lv_font_t * font_p, uint32_t letter) * @param letter an UNICODE character code * @return the width of a letter */ -uint8_t lv_font_get_width(const lv_font_t * font_p, uint32_t letter) +uint8_t lv_font_get_glyph_dsc(const lv_font_t * font_p, uint32_t letter, lv_font_glyph_dsc_t * dsc) { const lv_font_t * font_i = font_p; int16_t w; while(font_i != NULL) { - w = font_i->get_width(font_i, letter); + w = font_i->get_dsc(font_i, letter, dsc); if(w >= 0) { /*Glyph found*/ uint8_t m = font_i->monospace; @@ -150,26 +150,6 @@ uint8_t lv_font_get_width(const lv_font_t * font_p, uint32_t letter) return 0; } -/** - * Get the width of the letter without overwriting it with the `monospace` attribute - * @param font_p pointer to a font - * @param letter an UNICODE character code - * @return the width of a letter - */ -uint8_t lv_font_get_real_width(const lv_font_t * font_p, uint32_t letter) -{ - const lv_font_t * font_i = font_p; - int16_t w; - while(font_i != NULL) { - w = font_i->get_width(font_i, letter); - if(w >= 0) return w; - - font_i = font_i->next_page; - } - - return 0; -} - /** * Get the bit-per-pixel of font * @param font pointer to font @@ -196,37 +176,28 @@ uint8_t lv_font_get_bpp(const lv_font_t * font, uint32_t letter) * @param unicode_letter an unicode letter which bitmap should be get * @return pointer to the bitmap or NULL if not found */ -const uint8_t * lv_font_get_bitmap_continuous(const lv_font_t * font, uint32_t unicode_letter) +const uint8_t * lv_font_get_glyph_bitmap_plain(const lv_font_t * font, uint32_t unicode_letter) { /*Check the range*/ if(unicode_letter < font->unicode_first || unicode_letter > font->unicode_last) return NULL; - uint32_t index = (unicode_letter - font->unicode_first); - return &font->glyph_bitmap[font->glyph_dsc[index].glyph_index]; -} - -/** - * Generic bitmap get function used in 'font->get_bitmap' when the font NOT contains all characters - * in the range (sparse) - * @param font pointer to font - * @param unicode_letter an unicode letter which bitmap should be get - * @return pointer to the bitmap or NULL if not found - */ -const uint8_t * lv_font_get_bitmap_sparse(const lv_font_t * font, uint32_t unicode_letter) -{ - /*Check the range*/ - if(unicode_letter < font->unicode_first || unicode_letter > font->unicode_last) return NULL; - - uint32_t * pUnicode; - - pUnicode = lv_utils_bsearch(&unicode_letter, (uint32_t *)font->unicode_list, font->glyph_cnt, - sizeof(uint32_t), lv_font_codeCompare); - - if(pUnicode != NULL) { - uint32_t idx = (uint32_t)(pUnicode - font->unicode_list); - return &font->glyph_bitmap[font->glyph_dsc[idx].glyph_index]; + /*No Unicode list -> Continuous font*/ + if(font->unicode_list == NULL) { + uint32_t index = (unicode_letter - font->unicode_first); + return &font->glyph_bitmap[font->glyph_dsc[index].bitmap_index]; + } + /*Has Unicode list -> Sparse font */ + else { + uint32_t * pUnicode; + pUnicode = lv_utils_bsearch(&unicode_letter, (uint32_t *)font->unicode_list, font->glyph_cnt, + sizeof(uint32_t), lv_font_codeCompare); + if(pUnicode != NULL) { + uint32_t idx = (uint32_t)(pUnicode - font->unicode_list); + return &font->glyph_bitmap[font->glyph_dsc[idx].bitmap_index]; + } } + /*If not returned earlier then the letter is not found in this font*/ return NULL; } @@ -237,40 +208,32 @@ const uint8_t * lv_font_get_bitmap_sparse(const lv_font_t * font, uint32_t unico * @param unicode_letter an unicode letter which width should be get * @return width of the gylph or -1 if not found */ -int16_t lv_font_get_width_continuous(const lv_font_t * font, uint32_t unicode_letter) +const lv_font_glyph_dsc_t * lv_font_get_glyph_dsc_plain(const lv_font_t * font, uint32_t unicode_letter) { /*Check the range*/ if(unicode_letter < font->unicode_first || unicode_letter > font->unicode_last) { - return -1; + return NULL; } - uint32_t index = (unicode_letter - font->unicode_first); - return font->glyph_dsc[index].w_px; -} + /*No Unicode list -> Continuous font*/ + if(font->unicode_list == NULL) { + uint32_t index = (unicode_letter - font->unicode_first); + return &font->glyph_dsc[index]; + } + /*Has Unicode list -> Sparse font */ + else { + uint32_t * pUnicode; + pUnicode = lv_utils_bsearch(&unicode_letter, (uint32_t *)font->unicode_list, font->glyph_cnt, + sizeof(uint32_t), lv_font_codeCompare); -/** - * Generic glyph width get function used in 'font->get_bitmap' when the font NOT contains all - * characters in the range (sparse) - * @param font pointer to font - * @param unicode_letter an unicode letter which width should be get - * @return width of the glyph or -1 if not found - */ -int16_t lv_font_get_width_sparse(const lv_font_t * font, uint32_t unicode_letter) -{ - /*Check the range*/ - if(unicode_letter < font->unicode_first || unicode_letter > font->unicode_last) return -1; - - uint32_t * pUnicode; - - pUnicode = lv_utils_bsearch(&unicode_letter, (uint32_t *)font->unicode_list, font->glyph_cnt, - sizeof(uint32_t), lv_font_codeCompare); - - if(pUnicode != NULL) { - uint32_t idx = (uint32_t)(pUnicode - font->unicode_list); - return font->glyph_dsc[idx].w_px; + if(pUnicode != NULL) { + uint32_t idx = (uint32_t)(pUnicode - font->unicode_list); + return &font->glyph_dsc[idx]; + } } - return -1; + /*If not returned earlier then the letter is not found in this font*/ + return NULL; } /********************** diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index ec7b5ba1b..a6b376dfd 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -35,16 +35,15 @@ extern "C" { typedef struct { - uint32_t w_px : 8; - uint32_t glyph_index : 24; + uint32_t adv_w :8; /*The glyph need this space. Draw the next glyph after this width */ + uint32_t adv_w_fract :4; /*Fractional part of `advance_width` in 1/16 unit*/ + uint32_t box_w :8; /*Width of the glyph's bounding box*/ + uint32_t box_h :8; /*Height of the glyph's bounding box*/ + uint32_t ofs_x :8; /*x offset of the bounding box*/ + uint32_t ofs_y :8; /*y offset of the bounding box*/ + uint32_t bitmap_index : 20; /* Start index of the bitmap. A font can be max 1 MB. */ } lv_font_glyph_dsc_t; -typedef struct -{ - uint32_t unicode : 21; - uint32_t glyph_dsc_index : 11; -} lv_font_unicode_map_t; - typedef struct _lv_font_struct { uint32_t unicode_first; @@ -52,15 +51,19 @@ typedef struct _lv_font_struct const uint8_t * glyph_bitmap; const lv_font_glyph_dsc_t * glyph_dsc; const uint32_t * unicode_list; - const uint8_t * (*get_bitmap)(const struct _lv_font_struct *, - uint32_t); /*Get a glyph's bitmap from a font*/ - int16_t (*get_width)(const struct _lv_font_struct *, - uint32_t); /*Get a glyph's with with a given font*/ - struct _lv_font_struct * next_page; /*Pointer to a font extension*/ - uint32_t h_px : 8; - uint32_t bpp : 4; /*Bit per pixel: 1, 2 or 4*/ - uint32_t monospace : 8; /*Fix width (0: normal width)*/ - uint16_t glyph_cnt; /*Number of glyphs (letters) in the font*/ + + /*Get a glyph's descriptor from a font*/ + const uint8_t * (*get_dsc)(const struct _lv_font_struct *, lv_font_glyph_dsc_t * dsc); + + /*Get a glyph's bitmap from a font*/ + const uint8_t * (*get_bitmap)(const struct _lv_font_struct *, uint32_t); + + /*Pointer to a font extension*/ + struct _lv_font_struct * next_page; + uint32_t line_height :8; + uint32_t monospace :8; /*Fix width (0: normal width)*/ + uint32_t bpp :4; /*Bit per pixel: 1, 2, 4 or 8*/ + uint16_t glyph_cnt :11; /*Number of glyphs in the font. Max. 2048*/ } lv_font_t; /********************** @@ -100,7 +103,7 @@ bool lv_font_is_monospace(const lv_font_t * font_p, uint32_t letter); * @param letter an UNICODE character code * @return pointer to the bitmap of the letter */ -const uint8_t * lv_font_get_bitmap(const lv_font_t * font_p, uint32_t letter); +const uint8_t * lv_font_get_glyph_bitmap(const lv_font_t * font_p, uint32_t letter); /** * Get the width of a letter in a font. If `monospace` is set then return with it. From 4e6aac2157e1a42a6ad106b0ba0e62c183ffc122 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Tue, 23 Apr 2019 15:56:59 +0200 Subject: [PATCH 02/29] font rework --- src/lv_draw/lv_draw_basic.c | 2 +- src/lv_draw/lv_draw_label.c | 2 +- src/lv_misc/lv_font.c | 46 ++++++++++++++++++------------------- src/lv_misc/lv_font.h | 27 ++++++++++++---------- src/lv_misc/lv_txt.c | 2 +- src/lv_objx/lv_calendar.c | 16 ++++++------- src/lv_objx/lv_cb.c | 4 ++-- src/lv_objx/lv_ddlist.c | 10 ++++---- src/lv_objx/lv_label.c | 14 +++++------ src/lv_objx/lv_mbox.c | 2 +- src/lv_objx/lv_roller.c | 12 +++++----- src/lv_objx/lv_ta.c | 14 +++++------ src/lv_objx/lv_table.c | 4 ++-- src/lv_objx/lv_tabview.c | 2 +- 14 files changed, 80 insertions(+), 77 deletions(-) diff --git a/src/lv_draw/lv_draw_basic.c b/src/lv_draw/lv_draw_basic.c index 958fcac55..fb45a9149 100644 --- a/src/lv_draw/lv_draw_basic.c +++ b/src/lv_draw/lv_draw_basic.c @@ -243,7 +243,7 @@ void lv_draw_letter(const lv_point_t * pos_p, const lv_area_t * mask_p, const lv lv_coord_t pos_x = pos_p->x; lv_coord_t pos_y = pos_p->y; uint8_t letter_w = lv_font_get_real_width(font_p, letter); - uint8_t letter_h = lv_font_get_height(font_p); + uint8_t letter_h = lv_font_get_line_height(font_p); uint8_t bpp = lv_font_get_bpp(font_p, letter); /*Bit per pixel (1,2, 4 or 8)*/ const uint8_t * bpp_opa_table; uint8_t mask_init; diff --git a/src/lv_draw/lv_draw_label.c b/src/lv_draw/lv_draw_label.c index bb0f2c4d2..2f9db67b3 100644 --- a/src/lv_draw/lv_draw_label.c +++ b/src/lv_draw/lv_draw_label.c @@ -70,7 +70,7 @@ void lv_draw_label(const lv_area_t * coords, const lv_area_t * mask, const lv_st w = p.x; } - lv_coord_t line_height = lv_font_get_height(font) + style->text.line_space; + lv_coord_t line_height = lv_font_get_line_height(font) + style->text.line_space; /*Init variables for the first line*/ lv_coord_t line_width = 0; diff --git a/src/lv_misc/lv_font.c b/src/lv_misc/lv_font.c index d7c4ddad9..6fd58ce41 100644 --- a/src/lv_misc/lv_font.c +++ b/src/lv_misc/lv_font.c @@ -90,20 +90,22 @@ void lv_font_remove(lv_font_t * child, lv_font_t * parent) */ bool lv_font_is_monospace(const lv_font_t * font_p, uint32_t letter) { - const lv_font_t * font_i = font_p; - int16_t w; - while(font_i != NULL) { - w = font_i->get_width(font_i, letter); - if(w >= 0) { - /*Glyph found*/ - if(font_i->monospace) return true; - return false; - } +// const lv_font_t * font_i = font_p; +// int16_t w; +// while(font_i != NULL) { +// w = font_i->get_width(font_i, letter); +// if(w >= 0) { +// /*Glyph found*/ +// if(font_i->monospace) return true; +// return false; +// } +// +// font_i = font_i->next_page; +// } +// +// return 0; - font_i = font_i->next_page; - } - - return 0; + return false; } /** @@ -126,28 +128,26 @@ const uint8_t * lv_font_get_glyph_bitmap(const lv_font_t * font_p, uint32_t lett } /** - * Get the width of a letter in a font. If `monospace` is set then return with it. + * Get the description of a glyph in a font. * @param font_p pointer to a font * @param letter an UNICODE character code - * @return the width of a letter + * @return pointer to a glyph descriptor */ -uint8_t lv_font_get_glyph_dsc(const lv_font_t * font_p, uint32_t letter, lv_font_glyph_dsc_t * dsc) +lv_font_glyph_dsc_t * lv_font_get_glyph_dsc(const lv_font_t * font_p, uint32_t letter) { const lv_font_t * font_i = font_p; - int16_t w; + lv_font_glyph_dsc_t * dsc; while(font_i != NULL) { - w = font_i->get_dsc(font_i, letter, dsc); - if(w >= 0) { + dsc = font_i->get_dsc(font_i, letter); + if(dsc) { /*Glyph found*/ - uint8_t m = font_i->monospace; - if(m) w = m; - return w; + return dsc; } font_i = font_i->next_page; } - return 0; + return NULL; } /** diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index a6b376dfd..3c2af9330 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -35,13 +35,14 @@ extern "C" { typedef struct { + uint32_t bitmap_index : 20; /* Start index of the bitmap. A font can be max 1 MB. */ uint32_t adv_w :8; /*The glyph need this space. Draw the next glyph after this width */ uint32_t adv_w_fract :4; /*Fractional part of `advance_width` in 1/16 unit*/ - uint32_t box_w :8; /*Width of the glyph's bounding box*/ - uint32_t box_h :8; /*Height of the glyph's bounding box*/ - uint32_t ofs_x :8; /*x offset of the bounding box*/ - uint32_t ofs_y :8; /*y offset of the bounding box*/ - uint32_t bitmap_index : 20; /* Start index of the bitmap. A font can be max 1 MB. */ + + uint8_t box_w; /*Width of the glyph's bounding box*/ + uint8_t box_h; /*Height of the glyph's bounding box*/ + uint8_t ofs_x; /*x offset of the bounding box*/ + int8_t ofs_y; /*y offset of the bounding box*/ } lv_font_glyph_dsc_t; typedef struct _lv_font_struct @@ -60,10 +61,12 @@ typedef struct _lv_font_struct /*Pointer to a font extension*/ struct _lv_font_struct * next_page; - uint32_t line_height :8; - uint32_t monospace :8; /*Fix width (0: normal width)*/ - uint32_t bpp :4; /*Bit per pixel: 1, 2, 4 or 8*/ - uint16_t glyph_cnt :11; /*Number of glyphs in the font. Max. 2048*/ + uint8_t size; + uint8_t ascent; + int8_t descent; + uint8_t monospace; /*Fix width (0: normal width)*/ + uint8_t bpp; /*Bit per pixel: 1, 2, 4 or 8*/ + uint16_t glyph_cnt; /*Number of glyphs in the font. Max. 2048*/ } lv_font_t; /********************** @@ -122,13 +125,13 @@ uint8_t lv_font_get_width(const lv_font_t * font_p, uint32_t letter); uint8_t lv_font_get_real_width(const lv_font_t * font_p, uint32_t letter); /** - * Get the height of a font + * Get the line height of a font. All characters fit into this height * @param font_p pointer to a font * @return the height of a font */ -static inline uint8_t lv_font_get_height(const lv_font_t * font_p) +static inline uint8_t lv_font_get_line_height(const lv_font_t * font_p) { - return font_p->h_px; + return (uint8_t)((int16_t)font_p->ascent - font_p->descent); } /** diff --git a/src/lv_misc/lv_txt.c b/src/lv_misc/lv_txt.c index 00564135e..375c220d4 100644 --- a/src/lv_misc/lv_txt.c +++ b/src/lv_misc/lv_txt.c @@ -97,7 +97,7 @@ void lv_txt_get_size(lv_point_t * size_res, const char * text, const lv_font_t * uint32_t line_start = 0; uint32_t new_line_start = 0; lv_coord_t act_line_length; - uint8_t letter_height = lv_font_get_height(font); + uint8_t letter_height = lv_font_get_line_height(font); /*Calc. the height and longest line*/ while(text[line_start] != '\0') { diff --git a/src/lv_objx/lv_calendar.c b/src/lv_objx/lv_calendar.c index bef7f7b99..978fcc805 100644 --- a/src/lv_objx/lv_calendar.c +++ b/src/lv_objx/lv_calendar.c @@ -624,7 +624,7 @@ static lv_coord_t get_header_height(lv_obj_t * calendar) { lv_calendar_ext_t * ext = lv_obj_get_ext_attr(calendar); - return lv_font_get_height(ext->style_header->text.font) + ext->style_header->body.padding.top + + return lv_font_get_line_height(ext->style_header->text.font) + ext->style_header->body.padding.top + ext->style_header->body.padding.bottom; } @@ -637,7 +637,7 @@ static lv_coord_t get_day_names_height(lv_obj_t * calendar) { lv_calendar_ext_t * ext = lv_obj_get_ext_attr(calendar); - return lv_font_get_height(ext->style_day_names->text.font) + + return lv_font_get_line_height(ext->style_day_names->text.font) + ext->style_day_names->body.padding.top + ext->style_day_names->body.padding.bottom; } @@ -702,7 +702,7 @@ static void draw_day_names(lv_obj_t * calendar, const lv_area_t * mask) lv_area_t label_area; label_area.y1 = calendar->coords.y1 + get_header_height(calendar) + ext->style_day_names->body.padding.top; - label_area.y2 = label_area.y1 + lv_font_get_height(ext->style_day_names->text.font); + label_area.y2 = label_area.y1 + lv_font_get_line_height(ext->style_day_names->text.font); uint32_t i; for(i = 0; i < 7; i++) { label_area.x1 = calendar->coords.x1 + (w * i) / 7 + l_pad; @@ -725,15 +725,15 @@ static void draw_days(lv_obj_t * calendar, const lv_area_t * mask) lv_opa_t opa_scale = lv_obj_get_opa_scale(calendar); label_area.y1 = calendar->coords.y1 + get_header_height(calendar) + ext->style_day_names->body.padding.top + - lv_font_get_height(ext->style_day_names->text.font) + + lv_font_get_line_height(ext->style_day_names->text.font) + ext->style_day_names->body.padding.bottom; - label_area.y2 = label_area.y1 + lv_font_get_height(style_bg->text.font); + label_area.y2 = label_area.y1 + lv_font_get_line_height(style_bg->text.font); lv_coord_t w = lv_obj_get_width(calendar) - style_bg->body.padding.left - style_bg->body.padding.right; lv_coord_t h = calendar->coords.y2 - label_area.y1 - style_bg->body.padding.bottom; lv_coord_t box_w = w / 7; - lv_coord_t vert_space = (h - (6 * lv_font_get_height(style_bg->text.font))) / 5; + lv_coord_t vert_space = (h - (6 * lv_font_get_line_height(style_bg->text.font))) / 5; uint32_t week; uint8_t day_cnt; @@ -854,8 +854,8 @@ static void draw_days(lv_obj_t * calendar, const lv_area_t * mask) } /*Got to the next weeks row*/ - label_area.y1 += vert_space + lv_font_get_height(style_bg->text.font); - label_area.y2 += vert_space + lv_font_get_height(style_bg->text.font); + label_area.y1 += vert_space + lv_font_get_line_height(style_bg->text.font); + label_area.y2 += vert_space + lv_font_get_line_height(style_bg->text.font); } } diff --git a/src/lv_objx/lv_cb.c b/src/lv_objx/lv_cb.c index 8e3073e78..ee4195911 100644 --- a/src/lv_objx/lv_cb.c +++ b/src/lv_objx/lv_cb.c @@ -314,8 +314,8 @@ static lv_res_t lv_cb_signal(lv_obj_t * cb, lv_signal_t sign, void * param) if(sign == LV_SIGNAL_STYLE_CHG) { const lv_style_t * label_style = lv_label_get_style(ext->label); - lv_obj_set_size(ext->bullet, lv_font_get_height(label_style->text.font), - lv_font_get_height(label_style->text.font)); + lv_obj_set_size(ext->bullet, lv_font_get_line_height(label_style->text.font), + lv_font_get_line_height(label_style->text.font)); lv_btn_set_state(ext->bullet, lv_btn_get_state(cb)); } else if(sign == LV_SIGNAL_PRESSED || sign == LV_SIGNAL_RELEASED || sign == LV_SIGNAL_PRESS_LOST) { diff --git a/src/lv_objx/lv_ddlist.c b/src/lv_objx/lv_ddlist.c index a1b565ed4..5d8919a09 100644 --- a/src/lv_objx/lv_ddlist.c +++ b/src/lv_objx/lv_ddlist.c @@ -544,7 +544,7 @@ static bool lv_ddlist_design(lv_obj_t * ddlist, const lv_area_t * mask, lv_desig if(ext->opened != 0 || ext->force_sel) { const lv_style_t * style = lv_ddlist_get_style(ddlist, LV_DDLIST_STYLE_BG); const lv_font_t * font = style->text.font; - lv_coord_t font_h = lv_font_get_height(font); + lv_coord_t font_h = lv_font_get_line_height(font); /*Draw the selected*/ lv_area_t rect_area; @@ -569,7 +569,7 @@ static bool lv_ddlist_design(lv_obj_t * ddlist, const lv_area_t * mask, lv_desig if(ext->opened || ext->force_sel) { const lv_style_t * style = lv_ddlist_get_style(ddlist, LV_DDLIST_STYLE_BG); const lv_font_t * font = style->text.font; - lv_coord_t font_h = lv_font_get_height(font); + lv_coord_t font_h = lv_font_get_line_height(font); lv_area_t area_sel; area_sel.y1 = ext->label->coords.y1; @@ -601,7 +601,7 @@ static bool lv_ddlist_design(lv_obj_t * ddlist, const lv_area_t * mask, lv_desig const lv_style_t * style = lv_ddlist_get_style(ddlist, LV_DDLIST_STYLE_BG); const lv_font_t * font = style->text.font; const lv_style_t * sel_style = lv_ddlist_get_style(ddlist, LV_DDLIST_STYLE_BG); - lv_coord_t font_h = lv_font_get_height(font); + lv_coord_t font_h = lv_font_get_line_height(font); lv_style_t new_style; lv_style_copy(&new_style, style); new_style.text.color = sel_style->text.color; @@ -861,7 +861,7 @@ static void lv_ddlist_refr_size(lv_obj_t * ddlist, bool anim_en) } else { /*Close the list*/ const lv_font_t * font = style->text.font; const lv_style_t * label_style = lv_obj_get_style(ext->label); - lv_coord_t font_h = lv_font_get_height(font); + lv_coord_t font_h = lv_font_get_line_height(font); new_height = font_h + 2 * label_style->text.line_space; lv_page_set_sb_mode(ddlist, LV_SB_MODE_HIDE); @@ -933,7 +933,7 @@ static void lv_ddlist_pos_current_option(lv_obj_t * ddlist) lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist); const lv_style_t * style = lv_obj_get_style(ddlist); const lv_font_t * font = style->text.font; - lv_coord_t font_h = lv_font_get_height(font); + lv_coord_t font_h = lv_font_get_line_height(font); const lv_style_t * label_style = lv_obj_get_style(ext->label); lv_obj_t * scrl = lv_page_get_scrl(ddlist); diff --git a/src/lv_objx/lv_label.c b/src/lv_objx/lv_label.c index 5cdad6147..91357e869 100644 --- a/src/lv_objx/lv_label.c +++ b/src/lv_objx/lv_label.c @@ -457,7 +457,7 @@ void lv_label_get_letter_pos(const lv_obj_t * label, uint16_t index, lv_point_t lv_coord_t max_w = lv_obj_get_width(label); const lv_style_t * style = lv_obj_get_style(label); const lv_font_t * font = style->text.font; - uint8_t letter_height = lv_font_get_height(font); + uint8_t letter_height = lv_font_get_line_height(font); lv_coord_t y = 0; lv_txt_flag_t flag = LV_TXT_FLAG_NONE; @@ -530,7 +530,7 @@ uint16_t lv_label_get_letter_on(const lv_obj_t * label, lv_point_t * pos) lv_coord_t max_w = lv_obj_get_width(label); const lv_style_t * style = lv_obj_get_style(label); const lv_font_t * font = style->text.font; - uint8_t letter_height = lv_font_get_height(font); + uint8_t letter_height = lv_font_get_line_height(font); lv_coord_t y = 0; lv_txt_flag_t flag = LV_TXT_FLAG_NONE; @@ -635,7 +635,7 @@ bool lv_label_is_char_under_pos(const lv_obj_t * label, lv_point_t * pos) lv_coord_t max_w = lv_obj_get_width(label); const lv_style_t * style = lv_obj_get_style(label); const lv_font_t * font = style->text.font; - uint8_t letter_height = lv_font_get_height(font); + uint8_t letter_height = lv_font_get_line_height(font); lv_coord_t y = 0; lv_txt_flag_t flag = LV_TXT_FLAG_NONE; @@ -846,7 +846,7 @@ static bool lv_label_design(lv_obj_t * label, const lv_area_t * mask, lv_design_ /*Draw the text again below the original to make an circular effect */ if(size.y > lv_obj_get_height(label)) { ofs.x = ext->offset.x; - ofs.y = ext->offset.y + size.y + lv_font_get_height(style->text.font); + ofs.y = ext->offset.y + size.y + lv_font_get_line_height(style->text.font); lv_draw_label(&coords, mask, style, opa_scale, ext->text, flag, &ofs, lv_label_get_text_sel_start(label), lv_label_get_text_sel_end(label)); } @@ -970,7 +970,7 @@ static void lv_label_refr_text(lv_obj_t * label) } if(size.y > lv_obj_get_height(label) && hor_anim == false) { - anim.end = lv_obj_get_height(label) - size.y - (lv_font_get_height(font)); + anim.end = lv_obj_get_height(label) - size.y - (lv_font_get_line_height(font)); anim.fp = (lv_anim_fp_t)lv_label_set_offset_y; anim.time = lv_anim_speed_to_time(ext->anim_speed, anim.start, anim.end); lv_anim_create(&anim); @@ -1011,7 +1011,7 @@ static void lv_label_refr_text(lv_obj_t * label) } if(size.y > lv_obj_get_height(label) && hor_anim == false) { - anim.end = -size.y - (lv_font_get_height(font)); + anim.end = -size.y - (lv_font_get_line_height(font)); anim.fp = (lv_anim_fp_t)lv_label_set_offset_y; anim.time = lv_anim_speed_to_time(ext->anim_speed, anim.start, anim.end); lv_anim_create(&anim); @@ -1033,7 +1033,7 @@ static void lv_label_refr_text(lv_obj_t * label) (lv_font_get_width(style->text.font, '.') + style->text.letter_space) * LV_LABEL_DOT_NUM; /*Shrink with dots*/ p.y = lv_obj_get_height(label); - p.y -= p.y % (lv_font_get_height(style->text.font) + + p.y -= p.y % (lv_font_get_line_height(style->text.font) + style->text.line_space); /*Round down to the last line*/ p.y -= style->text.line_space; /*Trim the last line space*/ uint32_t letter_id = lv_label_get_letter_on(label, &p); diff --git a/src/lv_objx/lv_mbox.c b/src/lv_objx/lv_mbox.c index 40c409099..87798e894 100644 --- a/src/lv_objx/lv_mbox.c +++ b/src/lv_objx/lv_mbox.c @@ -483,7 +483,7 @@ static void mbox_realign(lv_obj_t * mbox) if(ext->btnm) { const lv_style_t * btn_bg_style = lv_mbox_get_style(mbox, LV_MBOX_STYLE_BTN_BG); const lv_style_t * btn_rel_style = lv_mbox_get_style(mbox, LV_MBOX_STYLE_BTN_REL); - lv_coord_t font_h = lv_font_get_height(btn_rel_style->text.font); + lv_coord_t font_h = lv_font_get_line_height(btn_rel_style->text.font); lv_obj_set_size(ext->btnm, w, font_h + btn_rel_style->body.padding.top + btn_rel_style->body.padding.bottom + btn_bg_style->body.padding.top + diff --git a/src/lv_objx/lv_roller.c b/src/lv_objx/lv_roller.c index f27730b21..fd5be93a6 100644 --- a/src/lv_objx/lv_roller.c +++ b/src/lv_objx/lv_roller.c @@ -202,7 +202,7 @@ void lv_roller_set_visible_row_count(lv_obj_t * roller, uint8_t row_cnt) lv_roller_ext_t * ext = lv_obj_get_ext_attr(roller); const lv_style_t * style_label = lv_obj_get_style(ext->ddlist.label); uint8_t n_line_space = (row_cnt > 1) ? row_cnt - 1 : 1; - lv_ddlist_set_fix_height(roller, lv_font_get_height(style_label->text.font) * row_cnt + + lv_ddlist_set_fix_height(roller, lv_font_get_line_height(style_label->text.font) * row_cnt + style_label->text.line_space * n_line_space); } @@ -309,7 +309,7 @@ static bool lv_roller_design(lv_obj_t * roller, const lv_area_t * mask, lv_desig lv_opa_t opa_scale = lv_obj_get_opa_scale(roller); const lv_font_t * font = style->text.font; lv_roller_ext_t * ext = lv_obj_get_ext_attr(roller); - lv_coord_t font_h = lv_font_get_height(font); + lv_coord_t font_h = lv_font_get_line_height(font); lv_area_t rect_area; rect_area.y1 = roller->coords.y1 + lv_obj_get_height(roller) / 2 - font_h / 2 - style->text.line_space / 2; @@ -326,7 +326,7 @@ static bool lv_roller_design(lv_obj_t * roller, const lv_area_t * mask, lv_desig const lv_style_t * style = lv_roller_get_style(roller, LV_ROLLER_STYLE_BG); lv_roller_ext_t * ext = lv_obj_get_ext_attr(roller); const lv_font_t * font = style->text.font; - lv_coord_t font_h = lv_font_get_height(font); + lv_coord_t font_h = lv_font_get_line_height(font); lv_opa_t opa_scale = lv_obj_get_opa_scale(roller); /*Redraw the text on the selected area with a different color*/ @@ -505,7 +505,7 @@ static lv_res_t lv_roller_scrl_signal(lv_obj_t * roller_scrl, lv_signal_t sign, const lv_style_t * style_label = lv_obj_get_style(ext->ddlist.label); const lv_font_t * font = style_label->text.font; - lv_coord_t font_h = lv_font_get_height(font); + lv_coord_t font_h = lv_font_get_line_height(font); if(sign == LV_SIGNAL_DRAG_END) { /*If dragged then align the list to there be an element in the middle*/ @@ -610,7 +610,7 @@ static void refr_position(lv_obj_t * roller, bool anim_en) lv_roller_ext_t * ext = lv_obj_get_ext_attr(roller); const lv_style_t * style_label = lv_obj_get_style(ext->ddlist.label); const lv_font_t * font = style_label->text.font; - lv_coord_t font_h = lv_font_get_height(font); + lv_coord_t font_h = lv_font_get_line_height(font); lv_coord_t h = lv_obj_get_height(roller); /* Normally the animtaion's `end_cb` sets correct position of the roller is infinite. @@ -667,7 +667,7 @@ static void inf_normalize(void * scrl) /*Move to the new id*/ const lv_style_t * style_label = lv_obj_get_style(ext->ddlist.label); const lv_font_t * font = style_label->text.font; - lv_coord_t font_h = lv_font_get_height(font); + lv_coord_t font_h = lv_font_get_line_height(font); lv_coord_t h = lv_obj_get_height(roller); lv_coord_t line_y1 = ext->ddlist.sel_opt_id * (font_h + style_label->text.line_space) + diff --git a/src/lv_objx/lv_ta.c b/src/lv_objx/lv_ta.c index b6a912ba0..0c46a59bb 100644 --- a/src/lv_objx/lv_ta.c +++ b/src/lv_objx/lv_ta.c @@ -547,7 +547,7 @@ void lv_ta_set_cursor_pos(lv_obj_t * ta, int16_t pos) lv_obj_get_coords(ext->label, &label_cords); /*Check the top*/ - lv_coord_t font_h = lv_font_get_height(font_p); + lv_coord_t font_h = lv_font_get_line_height(font_p); if(lv_obj_get_y(label_par) + cur_pos.y < 0) { lv_obj_set_y(label_par, -cur_pos.y + style->body.padding.top); } @@ -663,7 +663,7 @@ void lv_ta_set_one_line(lv_obj_t * ta, bool en) const lv_style_t * style_ta = lv_obj_get_style(ta); const lv_style_t * style_scrl = lv_obj_get_style(lv_page_get_scrl(ta)); const lv_style_t * style_label = lv_obj_get_style(ext->label); - lv_coord_t font_h = lv_font_get_height(style_label->text.font); + lv_coord_t font_h = lv_font_get_line_height(style_label->text.font); ext->one_line = 1; lv_page_set_scrl_fit2(ta, LV_FIT_TIGHT, LV_FIT_FLOOD); @@ -1049,7 +1049,7 @@ void lv_ta_cursor_down(lv_obj_t * ta) /*Increment the y with one line and keep the valid x*/ const lv_style_t * label_style = lv_obj_get_style(ext->label); const lv_font_t * font_p = label_style->text.font; - lv_coord_t font_h = lv_font_get_height(font_p); + lv_coord_t font_h = lv_font_get_line_height(font_p); pos.y += font_h + label_style->text.line_space + 1; pos.x = ext->cursor.valid_x; @@ -1080,7 +1080,7 @@ void lv_ta_cursor_up(lv_obj_t * ta) /*Decrement the y with one line and keep the valid x*/ const lv_style_t * label_style = lv_obj_get_style(ext->label); const lv_font_t * font = label_style->text.font; - lv_coord_t font_h = lv_font_get_height(font); + lv_coord_t font_h = lv_font_get_line_height(font); pos.y -= font_h + label_style->text.line_space - 1; pos.x = ext->cursor.valid_x; @@ -1222,7 +1222,7 @@ static lv_res_t lv_ta_signal(lv_obj_t * ta, lv_signal_t sign, void * param) if(ext->one_line) { /*In one line mode refresh the Text Area height because 'vpad' can modify it*/ const lv_style_t * style_label = lv_obj_get_style(ext->label); - lv_coord_t font_h = lv_font_get_height(style_label->text.font); + lv_coord_t font_h = lv_font_get_line_height(style_label->text.font); lv_obj_set_height( ta, font_h + style_ta->body.padding.top + style_ta->body.padding.bottom + style_scrl->body.padding.top + style_scrl->body.padding.bottom); @@ -1352,7 +1352,7 @@ static lv_res_t lv_ta_scrollable_signal(lv_obj_t * scrl, lv_signal_t sign, void if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) { /*Set ext. size because the cursor might be out of this object*/ const lv_style_t * style_label = lv_obj_get_style(ext->label); - lv_coord_t font_h = lv_font_get_height(style_label->text.font); + lv_coord_t font_h = lv_font_get_line_height(style_label->text.font); scrl->ext_draw_pad = LV_MATH_MAX(scrl->ext_draw_pad, style_label->text.line_space + font_h); } else if(sign == LV_SIGNAL_CORD_CHG) { /*Set the label width according to the text area width*/ @@ -1520,7 +1520,7 @@ static void refr_cursor_area(lv_obj_t * ta) uint32_t letter = lv_txt_encoded_next(&txt[byte_pos], NULL); - lv_coord_t letter_h = lv_font_get_height(label_style->text.font); + lv_coord_t letter_h = lv_font_get_line_height(label_style->text.font); /*Set letter_w (set not 0 on non printable but valid chars)*/ lv_coord_t letter_w; if(letter == '\0' || letter == '\n' || letter == '\r') { diff --git a/src/lv_objx/lv_table.c b/src/lv_objx/lv_table.c index c830cc58c..a20d45b7a 100644 --- a/src/lv_objx/lv_table.c +++ b/src/lv_objx/lv_table.c @@ -804,7 +804,7 @@ static lv_coord_t get_row_height(lv_obj_t * table, uint16_t row_id) uint16_t row_start = row_id * ext->col_cnt; uint16_t cell; uint16_t col; - lv_coord_t h_max = lv_font_get_height(ext->cell_style[0]->text.font) + + lv_coord_t h_max = lv_font_get_line_height(ext->cell_style[0]->text.font) + ext->cell_style[0]->body.padding.top + ext->cell_style[0]->body.padding.bottom; @@ -834,7 +834,7 @@ static lv_coord_t get_row_height(lv_obj_t * table, uint16_t row_id) /*With text crop assume 1 line*/ if(format.s.crop) { h_max = - LV_MATH_MAX(lv_font_get_height(cell_style->text.font) + + LV_MATH_MAX(lv_font_get_line_height(cell_style->text.font) + cell_style->body.padding.top + cell_style->body.padding.bottom, h_max); } diff --git a/src/lv_objx/lv_tabview.c b/src/lv_objx/lv_tabview.c index 2fe913f8d..71b65c169 100644 --- a/src/lv_objx/lv_tabview.c +++ b/src/lv_objx/lv_tabview.c @@ -867,7 +867,7 @@ static void tabview_realign(lv_obj_t * tabview) lv_obj_set_width(ext->indic, indic_width); /*Set the tabs height*/ - lv_coord_t btns_height = lv_font_get_height(style_btn_rel->text.font) + + lv_coord_t btns_height = lv_font_get_line_height(style_btn_rel->text.font) + style_btn_rel->body.padding.top + style_btn_rel->body.padding.bottom + style_btn_bg->body.padding.top + style_btn_bg->body.padding.bottom; From 2edf8f4aabdb0a3258d5b8cf602d359784c77be7 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Wed, 24 Apr 2019 05:44:15 +0200 Subject: [PATCH 03/29] font rework --- src/lv_fonts/lv_font_dejavu_20.c | 20 ++++++-------------- src/lv_misc/lv_font.h | 22 +++------------------- 2 files changed, 9 insertions(+), 33 deletions(-) diff --git a/src/lv_fonts/lv_font_dejavu_20.c b/src/lv_fonts/lv_font_dejavu_20.c index 597d0417d..4b74ef393 100644 --- a/src/lv_fonts/lv_font_dejavu_20.c +++ b/src/lv_fonts/lv_font_dejavu_20.c @@ -1,7 +1,7 @@ #include "../lv_misc/lv_font.h" -#if USE_LV_FONT_DEJAVU_20 != 0 /*Can be enabled in lv_conf.h*/ +#if LV_USE_FONT_DEJAVU_20 != 0 /*Can be enabled in lv_conf.h*/ /*********************************************************************************** * DejaVuSans.ttf 20 px Font in U+0020 ( ) .. U+007e (~) range with 1 bpp @@ -81,21 +81,13 @@ static const uint8_t lv_font_dejavu_20_glyph_bitmap[] = { /*4 rows*/ }; -uint32_t advance_w :8; /*The glyph need this space. Draw the next glyph after this width */ -uint32_t advance_w_fract :4; /*Fractional part of `advance_width` in 1/16 unit*/ -uint32_t box_w :8; /*Width of the glyph's bounding box*/ -uint32_t box_h :8; /*Height of the glyph's bounding box*/ -uint32_t ofs_x :8; /*x offset of the bounding box*/ -uint32_t ofs_y :8; /*y offset of the bounding box*/ -uint32_t glyph_index : 20; /* Start index of the bitmap. A font can be max 1 MB. */ - /*Store the glyph descriptions*/ static const lv_font_glyph_dsc_t lv_font_dejavu_20_glyph_dsc[] = { - {.adv_w = 6, .adv_w_fract = 0, .box_w = 6, .box_h = 0, .ofs_x = 0, .ofs_y = 0, .glyph_index = 0}, /*Unicode: U+0020 ( )*/ - {.adv_w = 8, .adv_w_fract = 0, .box_w = 8, .box_h = 13,.ofs_x = 0, .ofs_y = 3, .glyph_index = 0}, /*Unicode: U+0031 (1)*/ - {.adv_w = 9, .adv_w_fract = 0, .box_w = 9, .box_h = 13,.ofs_x = 0, .ofs_y = 3, .glyph_index = 13}, /*Unicode: U+0033 (3)*/ - {.adv_w = 12, .adv_w_fract = 0, .box_w = 12,.box_h = 13,.ofs_x = 0, .ofs_y = 3, .glyph_index = 26}, /*Unicode: U+0041 (A)*/ - {.adv_w = 8, .adv_w_fract = 0, .box_w = 8, .box_h = 10,.ofs_x = 0, .ofs_y = 6, .glyph_index = 39}, /*Unicode: U+0061 (a)*/ + {.adv_w = 6, .adv_w_fract = 0, .box_w = 6, .box_h = 0, .ofs_x = 0, .ofs_y = 0, .bitmap_index = 0}, /*Unicode: U+0020 ( )*/ + {.adv_w = 8, .adv_w_fract = 0, .box_w = 8, .box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 0}, /*Unicode: U+0031 (1)*/ + {.adv_w = 9, .adv_w_fract = 0, .box_w = 9, .box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 13}, /*Unicode: U+0033 (3)*/ + {.adv_w = 12, .adv_w_fract = 0, .box_w = 12,.box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 26}, /*Unicode: U+0041 (A)*/ + {.adv_w = 8, .adv_w_fract = 0, .box_w = 8, .box_h = 10,.ofs_x = 0, .ofs_y = 6, .bitmap_index = 39}, /*Unicode: U+0061 (a)*/ }; static const uint16_t lv_font_dejavu_20_unicode_map[] = { diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index 3c2af9330..e4cea7797 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -142,6 +142,7 @@ static inline uint8_t lv_font_get_line_height(const lv_font_t * font_p) */ uint8_t lv_font_get_bpp(const lv_font_t * font, uint32_t letter); + /** * Generic bitmap get function used in 'font->get_bitmap' when the font contains all characters in * the range @@ -149,16 +150,8 @@ uint8_t lv_font_get_bpp(const lv_font_t * font, uint32_t letter); * @param unicode_letter an unicode letter which bitmap should be get * @return pointer to the bitmap or NULL if not found */ -const uint8_t * lv_font_get_bitmap_continuous(const lv_font_t * font, uint32_t unicode_letter); +const uint8_t * lv_font_get_glyph_bitmap_plain(const lv_font_t * font, uint32_t unicode_letter); -/** - * Generic bitmap get function used in 'font->get_bitmap' when the font NOT contains all characters - * in the range (sparse) - * @param font pointer to font - * @param unicode_letter an unicode letter which bitmap should be get - * @return pointer to the bitmap or NULL if not found - */ -const uint8_t * lv_font_get_bitmap_sparse(const lv_font_t * font, uint32_t unicode_letter); /** * Generic glyph width get function used in 'font->get_width' when the font contains all characters * in the range @@ -166,16 +159,7 @@ const uint8_t * lv_font_get_bitmap_sparse(const lv_font_t * font, uint32_t unico * @param unicode_letter an unicode letter which width should be get * @return width of the gylph or -1 if not found */ -int16_t lv_font_get_width_continuous(const lv_font_t * font, uint32_t unicode_letter); - -/** - * Generic glyph width get function used in 'font->get_bitmap' when the font NOT contains all - * characters in the range (sparse) - * @param font pointer to font - * @param unicode_letter an unicode letter which width should be get - * @return width of the glyph or -1 if not found - */ -int16_t lv_font_get_width_sparse(const lv_font_t * font, uint32_t unicode_letter); +const lv_font_glyph_dsc_t * lv_font_get_glyph_dsc_plain(const lv_font_t * font, uint32_t unicode_letter); /********************** * MACROS From 5321b9b62e32f80410ff3d6cd6e31d8437bdb0ce Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Wed, 24 Apr 2019 17:28:38 +0200 Subject: [PATCH 04/29] make the basics of the new font system work --- src/lv_draw/lv_draw_basic.c | 58 ++++++++++++++++++-------------- src/lv_fonts/lv_font_dejavu_20.c | 24 +++++++------ src/lv_misc/lv_font.c | 52 ++++++++++++++++------------ src/lv_misc/lv_font.h | 40 +++++++++++++++------- src/lv_objx/lv_tabview.c | 2 +- 5 files changed, 105 insertions(+), 71 deletions(-) diff --git a/src/lv_draw/lv_draw_basic.c b/src/lv_draw/lv_draw_basic.c index 6cfc222a5..5a911d2a6 100644 --- a/src/lv_draw/lv_draw_basic.c +++ b/src/lv_draw/lv_draw_basic.c @@ -227,11 +227,15 @@ void lv_draw_fill(const lv_area_t * cords_p, const lv_area_t * mask_p, lv_color_ void lv_draw_letter(const lv_point_t * pos_p, const lv_area_t * mask_p, const lv_font_t * font_p, uint32_t letter, lv_color_t color, lv_opa_t opa) { - const uint8_t bpp1_opa_table[2] = { - 0, 255}; /*Opacity mapping with bpp = 1 (Just for compatibility)*/ + /*clang-format off*/ + const uint8_t bpp1_opa_table[2] = { 0, 255}; /*Opacity mapping with bpp = 1 (Just for compatibility)*/ const uint8_t bpp2_opa_table[4] = {0, 85, 170, 255}; /*Opacity mapping with bpp = 2*/ const uint8_t bpp4_opa_table[16] = {0, 17, 34, 51, /*Opacity mapping with bpp = 4*/ - 68, 85, 102, 119, 136, 153, 170, 187, 204, 221, 238, 255}; + 68, 85, 102, 119, + 136, 153, 170, 187, + 204, 221, 238, 255}; + /*clang-format on*/ + if(opa < LV_OPA_MIN) return; if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; @@ -240,35 +244,38 @@ void lv_draw_letter(const lv_point_t * pos_p, const lv_area_t * mask_p, const lv return; } - lv_coord_t pos_x = pos_p->x; - lv_coord_t pos_y = pos_p->y; - uint8_t letter_w = lv_font_get_real_width(font_p, letter); - uint8_t letter_h = lv_font_get_line_height(font_p); + const lv_font_glyph_dsc_t * g = lv_font_get_glyph_dsc(font_p, letter); + + lv_coord_t pos_x = pos_p->x + g->ofs_x; + lv_coord_t pos_y = pos_p->y + g->ofs_y; + uint8_t bpp = lv_font_get_bpp(font_p, letter); /*Bit per pixel (1,2, 4 or 8)*/ + + const uint8_t * bpp_opa_table; - uint8_t mask_init; - uint8_t mask; + uint8_t bitmask_init; + uint8_t bitmask; if(lv_font_is_monospace(font_p, letter)) { - pos_x += (lv_font_get_width(font_p, letter) - letter_w) / 2; + pos_x += (lv_font_get_width(font_p, letter) - g->box_w) / 2; } switch(bpp) { case 1: bpp_opa_table = bpp1_opa_table; - mask_init = 0x80; + bitmask_init = 0x80; break; case 2: bpp_opa_table = bpp2_opa_table; - mask_init = 0xC0; + bitmask_init = 0xC0; break; case 4: bpp_opa_table = bpp4_opa_table; - mask_init = 0xF0; + bitmask_init = 0xF0; break; case 8: bpp_opa_table = NULL; - mask_init = 0xFF; + bitmask_init = 0xFF; break; /*No opa table, pixel value will be used directly*/ default: return; /*Invalid bpp. Can't render the letter*/ } @@ -278,7 +285,7 @@ void lv_draw_letter(const lv_point_t * pos_p, const lv_area_t * mask_p, const lv if(map_p == NULL) return; /*If the letter is completely out of mask don't draw it */ - if(pos_x + letter_w < mask_p->x1 || pos_x > mask_p->x2 || pos_y + letter_h < mask_p->y1 || + if(pos_x + g->box_w < mask_p->x1 || pos_x > mask_p->x2 || pos_y + g->box_h < mask_p->y1 || pos_y > mask_p->y2) return; @@ -290,17 +297,16 @@ void lv_draw_letter(const lv_point_t * pos_p, const lv_area_t * mask_p, const lv lv_coord_t col, row; uint8_t col_bit; uint8_t col_byte_cnt; - uint8_t width_byte_scr = - letter_w >> 3; /*Width in bytes (on the screen finally) (e.g. w = 11 -> 2 bytes wide)*/ - if(letter_w & 0x7) width_byte_scr++; - uint8_t width_byte_bpp = (letter_w * bpp) >> 3; /*Letter width in byte. Real width in the font*/ - if((letter_w * bpp) & 0x7) width_byte_bpp++; + uint8_t width_byte_scr = g->box_w >> 3; /*Width in bytes (on the screen finally) (e.g. w = 11 -> 2 bytes wide)*/ + if(g->box_w & 0x7) width_byte_scr++; + uint8_t width_byte_bpp = (g->box_w * bpp) >> 3; /*Letter width in byte. Real width in the font*/ + if((g->box_w * bpp) & 0x7) width_byte_bpp++; /* Calculate the col/row start/end on the map*/ lv_coord_t col_start = pos_x >= mask_p->x1 ? 0 : mask_p->x1 - pos_x; - lv_coord_t col_end = pos_x + letter_w <= mask_p->x2 ? letter_w : mask_p->x2 - pos_x + 1; + lv_coord_t col_end = pos_x + g->box_w <= mask_p->x2 ? g->box_w : mask_p->x2 - pos_x + 1; lv_coord_t row_start = pos_y >= mask_p->y1 ? 0 : mask_p->y1 - pos_y; - lv_coord_t row_end = pos_y + letter_h <= mask_p->y2 ? letter_h : mask_p->y2 - pos_y + 1; + lv_coord_t row_end = pos_y + g->box_h <= mask_p->y2 ? g->box_h : mask_p->y2 - pos_y + 1; /*Set a pointer on VDB to the first pixel of the letter*/ vdb_buf_tmp += ((pos_y - vdb->area.y1) * vdb_width) + pos_x - vdb->area.x1; @@ -316,9 +322,9 @@ void lv_draw_letter(const lv_point_t * pos_p, const lv_area_t * mask_p, const lv for(row = row_start; row < row_end; row++) { col_byte_cnt = 0; col_bit = (col_start * bpp) % 8; - mask = mask_init >> col_bit; + bitmask = bitmask_init >> col_bit; for(col = col_start; col < col_end; col++) { - letter_px = (*map_p & mask) >> (8 - col_bit - bpp); + letter_px = (*map_p & bitmask) >> (8 - col_bit - bpp); if(letter_px != 0) { if(opa == LV_OPA_COVER) { px_opa = bpp == 8 ? letter_px : bpp_opa_table[letter_px]; @@ -345,11 +351,11 @@ void lv_draw_letter(const lv_point_t * pos_p, const lv_area_t * mask_p, const lv if(col_bit < 8 - bpp) { col_bit += bpp; - mask = mask >> bpp; + bitmask = bitmask >> bpp; } else { col_bit = 0; col_byte_cnt++; - mask = mask_init; + bitmask = bitmask_init; map_p++; } } diff --git a/src/lv_fonts/lv_font_dejavu_20.c b/src/lv_fonts/lv_font_dejavu_20.c index 4b74ef393..22ed3c36a 100644 --- a/src/lv_fonts/lv_font_dejavu_20.c +++ b/src/lv_fonts/lv_font_dejavu_20.c @@ -86,11 +86,11 @@ static const lv_font_glyph_dsc_t lv_font_dejavu_20_glyph_dsc[] = { {.adv_w = 6, .adv_w_fract = 0, .box_w = 6, .box_h = 0, .ofs_x = 0, .ofs_y = 0, .bitmap_index = 0}, /*Unicode: U+0020 ( )*/ {.adv_w = 8, .adv_w_fract = 0, .box_w = 8, .box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 0}, /*Unicode: U+0031 (1)*/ {.adv_w = 9, .adv_w_fract = 0, .box_w = 9, .box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 13}, /*Unicode: U+0033 (3)*/ - {.adv_w = 12, .adv_w_fract = 0, .box_w = 12,.box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 26}, /*Unicode: U+0041 (A)*/ - {.adv_w = 8, .adv_w_fract = 0, .box_w = 8, .box_h = 10,.ofs_x = 0, .ofs_y = 6, .bitmap_index = 39}, /*Unicode: U+0061 (a)*/ + {.adv_w = 12, .adv_w_fract = 0, .box_w = 12,.box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 39}, /*Unicode: U+0041 (A)*/ + {.adv_w = 8, .adv_w_fract = 0, .box_w = 8, .box_h = 10,.ofs_x = 0, .ofs_y = 6, .bitmap_index = 65}, /*Unicode: U+0061 (a)*/ }; -static const uint16_t lv_font_dejavu_20_unicode_map[] = { +static const uint16_t lv_font_dejavu_20_unicode_list[] = { 32, /*Unicode: U+0020 ( )*/ 49, /*Unicode: U+0031 (1)*/ 51, /*Unicode: U+0033 (3)*/ @@ -98,17 +98,21 @@ static const uint16_t lv_font_dejavu_20_unicode_map[] = { 97, /*Unicode: U+0061 (a)*/ }; +static lv_font_dsc_built_in_t lv_font_dejavu_20_dsc = { + .glyph_cnt = 5, /*Number of glyphs in the font*/ + .glyph_bitmap = lv_font_dejavu_20_glyph_bitmap, /*Bitmap of glyphs*/ + .glyph_dsc = lv_font_dejavu_20_glyph_dsc, /*Description of glyphs*/ + .unicode_list = lv_font_dejavu_20_unicode_list, /*Every character in the font from 'unicode_first' to 'unicode_last'*/ +}; + lv_font_t lv_font_dejavu_20 = { .unicode_first = 32, /*First Unicode letter in this font*/ .unicode_last = 126, /*Last Unicode letter in this font*/ - .h_px = 20, /*Font height in pixels*/ - .glyph_bitmap = lv_font_dejavu_20_glyph_bitmap, /*Bitmap of glyphs*/ - .glyph_dsc = lv_font_dejavu_20_glyph_dsc, /*Description of glyphs*/ - .glyph_cnt = 5, /*Number of glyphs in the font*/ - .unicode_list = NULL, /*Every character in the font from 'unicode_first' to 'unicode_last'*/ - .get_bitmap = lv_font_get_glyph_bitmap_plain, /*Function pointer to get glyph's bitmap*/ - .get_dsc = lv_font_get_glyph_dsc_plain, /*Function pointer to get glyph's width*/ + .dsc = &lv_font_dejavu_20_dsc, + .get_glyph_bitmap = lv_font_get_glyph_bitmap_plain, /*Function pointer to get glyph's bitmap*/ + .get_glyph_dsc = lv_font_get_glyph_dsc_plain, /*Function pointer to get glyph's width*/ .bpp = 1, /*Bit per pixel*/ + .line_height = 20, /*Font height in pixels*/ .monospace = 0, .next_page = NULL, /*Pointer to a font extension*/ }; diff --git a/src/lv_misc/lv_font.c b/src/lv_misc/lv_font.c index 6fd58ce41..cd3d0c10c 100644 --- a/src/lv_misc/lv_font.c +++ b/src/lv_misc/lv_font.c @@ -118,7 +118,7 @@ const uint8_t * lv_font_get_glyph_bitmap(const lv_font_t * font_p, uint32_t lett { const lv_font_t * font_i = font_p; while(font_i != NULL) { - const uint8_t * bitmap = font_i->get_bitmap(font_i, letter); + const uint8_t * bitmap = font_i->get_glyph_bitmap(font_i, letter); if(bitmap) return bitmap; font_i = font_i->next_page; @@ -133,12 +133,12 @@ const uint8_t * lv_font_get_glyph_bitmap(const lv_font_t * font_p, uint32_t lett * @param letter an UNICODE character code * @return pointer to a glyph descriptor */ -lv_font_glyph_dsc_t * lv_font_get_glyph_dsc(const lv_font_t * font_p, uint32_t letter) +const lv_font_glyph_dsc_t * lv_font_get_glyph_dsc(const lv_font_t * font_p, uint32_t letter) { const lv_font_t * font_i = font_p; - lv_font_glyph_dsc_t * dsc; + const lv_font_glyph_dsc_t * dsc; while(font_i != NULL) { - dsc = font_i->get_dsc(font_i, letter); + dsc = font_i->get_glyph_dsc(font_i, letter); if(dsc) { /*Glyph found*/ return dsc; @@ -150,6 +150,12 @@ lv_font_glyph_dsc_t * lv_font_get_glyph_dsc(const lv_font_t * font_p, uint32_t l return NULL; } +uint8_t lv_font_get_width(const lv_font_t * font, uint32_t letter) +{ + const lv_font_glyph_dsc_t * dsc = lv_font_get_glyph_dsc(font, letter); + return dsc ? dsc->adv_w : 0; +} + /** * Get the bit-per-pixel of font * @param font pointer to font @@ -181,19 +187,21 @@ const uint8_t * lv_font_get_glyph_bitmap_plain(const lv_font_t * font, uint32_t /*Check the range*/ if(unicode_letter < font->unicode_first || unicode_letter > font->unicode_last) return NULL; + lv_font_dsc_built_in_t * font_dsc = (lv_font_dsc_built_in_t *) font->dsc; + /*No Unicode list -> Continuous font*/ - if(font->unicode_list == NULL) { + if(font_dsc->unicode_list == NULL) { uint32_t index = (unicode_letter - font->unicode_first); - return &font->glyph_bitmap[font->glyph_dsc[index].bitmap_index]; + return &font_dsc->glyph_bitmap[font_dsc->glyph_dsc[index].bitmap_index]; } /*Has Unicode list -> Sparse font */ else { - uint32_t * pUnicode; - pUnicode = lv_utils_bsearch(&unicode_letter, (uint32_t *)font->unicode_list, font->glyph_cnt, - sizeof(uint32_t), lv_font_codeCompare); + uint16_t * pUnicode; + pUnicode = lv_utils_bsearch(&unicode_letter, font_dsc->unicode_list, font_dsc->glyph_cnt, + sizeof(font_dsc->unicode_list[0]), lv_font_codeCompare); if(pUnicode != NULL) { - uint32_t idx = (uint32_t)(pUnicode - font->unicode_list); - return &font->glyph_bitmap[font->glyph_dsc[idx].bitmap_index]; + uint32_t idx = (uint32_t)(pUnicode - font_dsc->unicode_list); + return &font_dsc->glyph_bitmap[font_dsc->glyph_dsc[idx].bitmap_index]; } } @@ -211,24 +219,24 @@ const uint8_t * lv_font_get_glyph_bitmap_plain(const lv_font_t * font, uint32_t const lv_font_glyph_dsc_t * lv_font_get_glyph_dsc_plain(const lv_font_t * font, uint32_t unicode_letter) { /*Check the range*/ - if(unicode_letter < font->unicode_first || unicode_letter > font->unicode_last) { - return NULL; - } + if(unicode_letter < font->unicode_first || unicode_letter > font->unicode_last) return NULL; + + lv_font_dsc_built_in_t * font_dsc = (lv_font_dsc_built_in_t *) font->dsc; /*No Unicode list -> Continuous font*/ - if(font->unicode_list == NULL) { + if(font_dsc->unicode_list == NULL) { uint32_t index = (unicode_letter - font->unicode_first); - return &font->glyph_dsc[index]; + return &font_dsc->glyph_dsc[index]; } /*Has Unicode list -> Sparse font */ else { - uint32_t * pUnicode; - pUnicode = lv_utils_bsearch(&unicode_letter, (uint32_t *)font->unicode_list, font->glyph_cnt, - sizeof(uint32_t), lv_font_codeCompare); + uint16_t * pUnicode; + pUnicode = lv_utils_bsearch(&unicode_letter, font_dsc->unicode_list, font_dsc->glyph_cnt, + sizeof(font_dsc->unicode_list[0]), lv_font_codeCompare); if(pUnicode != NULL) { - uint32_t idx = (uint32_t)(pUnicode - font->unicode_list); - return &font->glyph_dsc[idx]; + uint32_t idx = (uint16_t)(pUnicode - font_dsc->unicode_list); + return &font_dsc->glyph_dsc[idx]; } } @@ -255,5 +263,5 @@ const lv_font_glyph_dsc_t * lv_font_get_glyph_dsc_plain(const lv_font_t * font, */ static int32_t lv_font_codeCompare(const void * pRef, const void * pElement) { - return (*(uint32_t *)pRef) - (*(uint32_t *)pElement); + return (*(uint16_t *)pRef) - (*(uint16_t *)pElement); } diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index e4cea7797..2bfd052d3 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -45,28 +45,34 @@ typedef struct int8_t ofs_y; /*y offset of the bounding box*/ } lv_font_glyph_dsc_t; +typedef struct { + const uint8_t * glyph_bitmap; + const lv_font_glyph_dsc_t * glyph_dsc; + const uint16_t * unicode_list; + uint16_t glyph_cnt; /*Number of glyphs in the font. */ +}lv_font_dsc_built_in_t; + + typedef struct _lv_font_struct { uint32_t unicode_first; uint32_t unicode_last; - const uint8_t * glyph_bitmap; - const lv_font_glyph_dsc_t * glyph_dsc; - const uint32_t * unicode_list; /*Get a glyph's descriptor from a font*/ - const uint8_t * (*get_dsc)(const struct _lv_font_struct *, lv_font_glyph_dsc_t * dsc); + const lv_font_glyph_dsc_t * (*get_glyph_dsc)(const struct _lv_font_struct *, uint32_t letter); /*Get a glyph's bitmap from a font*/ - const uint8_t * (*get_bitmap)(const struct _lv_font_struct *, uint32_t); + const uint8_t * (*get_glyph_bitmap)(const struct _lv_font_struct *, uint32_t); - /*Pointer to a font extension*/ + /*Pointer to the font in a font pack (must have the same line height)*/ struct _lv_font_struct * next_page; - uint8_t size; - uint8_t ascent; - int8_t descent; - uint8_t monospace; /*Fix width (0: normal width)*/ + uint8_t size; /*The original size*/ + uint8_t line_height; /*The real line height where any text fits*/ + uint8_t base_line; /*Base line measured from the top of the line*/ + uint8_t monospace; /*Overwrite the glyph's width (0: normal width)*/ uint8_t bpp; /*Bit per pixel: 1, 2, 4 or 8*/ - uint16_t glyph_cnt; /*Number of glyphs in the font. Max. 2048*/ + + void * dsc; /*Store implementation specific data here*/ } lv_font_t; /********************** @@ -100,6 +106,7 @@ void lv_font_remove(lv_font_t * child, lv_font_t * parent); */ bool lv_font_is_monospace(const lv_font_t * font_p, uint32_t letter); + /** * Return with the bitmap of a font. * @param font_p pointer to a font @@ -108,6 +115,15 @@ bool lv_font_is_monospace(const lv_font_t * font_p, uint32_t letter); */ const uint8_t * lv_font_get_glyph_bitmap(const lv_font_t * font_p, uint32_t letter); +/** + * Get the description of a glyph in a font. + * @param font_p pointer to a font + * @param letter an UNICODE character code + * @return pointer to a glyph descriptor + */ +const lv_font_glyph_dsc_t * lv_font_get_glyph_dsc(const lv_font_t * font_p, uint32_t letter); + +uint8_t lv_font_get_width(const lv_font_t * font, uint32_t letter); /** * Get the width of a letter in a font. If `monospace` is set then return with it. * @param font_p pointer to a font @@ -131,7 +147,7 @@ uint8_t lv_font_get_real_width(const lv_font_t * font_p, uint32_t letter); */ static inline uint8_t lv_font_get_line_height(const lv_font_t * font_p) { - return (uint8_t)((int16_t)font_p->ascent - font_p->descent); + return font_p->line_height;//(uint8_t)((int16_t)font_p->ascent - font_p->descent); } /** diff --git a/src/lv_objx/lv_tabview.c b/src/lv_objx/lv_tabview.c index d5d106683..cdf0395b2 100644 --- a/src/lv_objx/lv_tabview.c +++ b/src/lv_objx/lv_tabview.c @@ -1023,7 +1023,7 @@ static void tabview_realign(lv_obj_t * tabview) switch(ext->btns_pos) { case LV_TABVIEW_BTNS_POS_TOP: case LV_TABVIEW_BTNS_POS_BOTTOM: - btns_size = lv_font_get_height(style_btn_rel->text.font) + + btns_size = lv_font_get_line_height(style_btn_rel->text.font) + style_btn_rel->body.padding.top + style_btn_rel->body.padding.bottom + style_btn_bg->body.padding.top + style_btn_bg->body.padding.bottom; From b623eabb0abf8528a9628e008dfa8ed2b8c8e532 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Sat, 27 Apr 2019 10:58:34 +0200 Subject: [PATCH 05/29] font: ignore glyphs with NULL dsc --- src/lv_draw/lv_draw_basic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lv_draw/lv_draw_basic.c b/src/lv_draw/lv_draw_basic.c index 5a911d2a6..8ec2b44e2 100644 --- a/src/lv_draw/lv_draw_basic.c +++ b/src/lv_draw/lv_draw_basic.c @@ -245,7 +245,7 @@ void lv_draw_letter(const lv_point_t * pos_p, const lv_area_t * mask_p, const lv } const lv_font_glyph_dsc_t * g = lv_font_get_glyph_dsc(font_p, letter); - + if(g == NULL) return; lv_coord_t pos_x = pos_p->x + g->ofs_x; lv_coord_t pos_y = pos_p->y + g->ofs_y; From cc48391333d91fc5387a70cc320e34af66397522 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Sat, 27 Apr 2019 19:37:19 +0200 Subject: [PATCH 06/29] font: remove monospace --- src/lv_fonts/lv_font_dejavu_20.c | 11 +++++------ src/lv_misc/lv_font.c | 26 -------------------------- src/lv_misc/lv_font.h | 12 ++++++++---- 3 files changed, 13 insertions(+), 36 deletions(-) diff --git a/src/lv_fonts/lv_font_dejavu_20.c b/src/lv_fonts/lv_font_dejavu_20.c index 22ed3c36a..45851ff9e 100644 --- a/src/lv_fonts/lv_font_dejavu_20.c +++ b/src/lv_fonts/lv_font_dejavu_20.c @@ -83,11 +83,11 @@ static const uint8_t lv_font_dejavu_20_glyph_bitmap[] = { /*Store the glyph descriptions*/ static const lv_font_glyph_dsc_t lv_font_dejavu_20_glyph_dsc[] = { - {.adv_w = 6, .adv_w_fract = 0, .box_w = 6, .box_h = 0, .ofs_x = 0, .ofs_y = 0, .bitmap_index = 0}, /*Unicode: U+0020 ( )*/ - {.adv_w = 8, .adv_w_fract = 0, .box_w = 8, .box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 0}, /*Unicode: U+0031 (1)*/ - {.adv_w = 9, .adv_w_fract = 0, .box_w = 9, .box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 13}, /*Unicode: U+0033 (3)*/ - {.adv_w = 12, .adv_w_fract = 0, .box_w = 12,.box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 39}, /*Unicode: U+0041 (A)*/ - {.adv_w = 8, .adv_w_fract = 0, .box_w = 8, .box_h = 10,.ofs_x = 0, .ofs_y = 6, .bitmap_index = 65}, /*Unicode: U+0061 (a)*/ + {.adv_w = LV_FONT_SET_ADV_W(6, 0), .box_w = 6, .box_h = 0, .ofs_x = 0, .ofs_y = 0, .bitmap_index = 0}, /*Unicode: U+0020 ( )*/ + {.adv_w = LV_FONT_SET_ADV_W(8, 0), .box_w = 8, .box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 0}, /*Unicode: U+0031 (1)*/ + {.adv_w = LV_FONT_SET_ADV_W(9, 0), .box_w = 9, .box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 13}, /*Unicode: U+0033 (3)*/ + {.adv_w = LV_FONT_SET_ADV_W(12, 0), .box_w = 12,.box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 39}, /*Unicode: U+0041 (A)*/ + {.adv_w = LV_FONT_SET_ADV_W(8, 0), .box_w = 8, .box_h = 10,.ofs_x = 0, .ofs_y = 6, .bitmap_index = 65}, /*Unicode: U+0061 (a)*/ }; static const uint16_t lv_font_dejavu_20_unicode_list[] = { @@ -113,7 +113,6 @@ lv_font_t lv_font_dejavu_20 = { .get_glyph_dsc = lv_font_get_glyph_dsc_plain, /*Function pointer to get glyph's width*/ .bpp = 1, /*Bit per pixel*/ .line_height = 20, /*Font height in pixels*/ - .monospace = 0, .next_page = NULL, /*Pointer to a font extension*/ }; diff --git a/src/lv_misc/lv_font.c b/src/lv_misc/lv_font.c index cd3d0c10c..62426363f 100644 --- a/src/lv_misc/lv_font.c +++ b/src/lv_misc/lv_font.c @@ -82,32 +82,6 @@ void lv_font_remove(lv_font_t * child, lv_font_t * parent) parent->next_page = child->next_page; } -/** - * Tells if font which contains `letter` is monospace or not - * @param font_p point to font - * @param letter an UNICODE character code - * @return true: the letter is monospace; false not monospace - */ -bool lv_font_is_monospace(const lv_font_t * font_p, uint32_t letter) -{ -// const lv_font_t * font_i = font_p; -// int16_t w; -// while(font_i != NULL) { -// w = font_i->get_width(font_i, letter); -// if(w >= 0) { -// /*Glyph found*/ -// if(font_i->monospace) return true; -// return false; -// } -// -// font_i = font_i->next_page; -// } -// -// return 0; - - return false; -} - /** * Return with the bitmap of a font. * @param font_p pointer to a font diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index 2bfd052d3..c79b31640 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -28,6 +28,8 @@ extern "C" { /********************* * DEFINES *********************/ +/*Number of fractional digits in the advanced width (`adv_w`) field of `lv_font_glyph_dsc_t`*/ +#define LV_FONT_ADV_W_FRACT_DIGIT 4 /********************** * TYPEDEFS @@ -36,9 +38,7 @@ extern "C" { typedef struct { uint32_t bitmap_index : 20; /* Start index of the bitmap. A font can be max 1 MB. */ - uint32_t adv_w :8; /*The glyph need this space. Draw the next glyph after this width */ - uint32_t adv_w_fract :4; /*Fractional part of `advance_width` in 1/16 unit*/ - + uint32_t adv_w :12; /*The glyph needs this space. Draw the next glyph after this width. 8 bit integer, 4 bit fractional */ uint8_t box_w; /*Width of the glyph's bounding box*/ uint8_t box_h; /*Height of the glyph's bounding box*/ uint8_t ofs_x; /*x offset of the bounding box*/ @@ -69,7 +69,6 @@ typedef struct _lv_font_struct uint8_t size; /*The original size*/ uint8_t line_height; /*The real line height where any text fits*/ uint8_t base_line; /*Base line measured from the top of the line*/ - uint8_t monospace; /*Overwrite the glyph's width (0: normal width)*/ uint8_t bpp; /*Bit per pixel: 1, 2, 4 or 8*/ void * dsc; /*Store implementation specific data here*/ @@ -183,6 +182,11 @@ const lv_font_glyph_dsc_t * lv_font_get_glyph_dsc_plain(const lv_font_t * font, #define LV_FONT_DECLARE(font_name) extern lv_font_t font_name; +#define LV_FONT_SET_ADV_W(_integer, _fract) ((_integer << LV_FONT_ADV_W_FRACT_DIGIT) + _fract) +#define LV_FONT_GET_ADV_W_INT(_adv_w) (_adw_v >> LV_FONT_ADV_W_FRACT_DIGIT) +#define LV_FONT_GET_ADV_W_FRACT(_adv_w) (_adw_v & ((1 << LV_FONT_ADV_W_FRACT_DIGIT) -1)) + + /********************** * ADD BUILT IN FONTS **********************/ From d8a17c483a57616dcd5b918ee63ad32260e898e8 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Sat, 27 Apr 2019 19:43:10 +0200 Subject: [PATCH 07/29] font: separate int. and fract. advanced width --- src/lv_draw/lv_draw_basic.c | 4 ---- src/lv_draw/lv_draw_label.c | 2 +- src/lv_misc/lv_font.c | 10 ++++++++-- src/lv_misc/lv_font.h | 16 ++++------------ src/lv_misc/lv_txt.c | 6 +++--- src/lv_objx/lv_label.c | 16 ++++++++-------- src/lv_objx/lv_ta.c | 10 +++++----- src/lv_objx/lv_tabview.c | 2 +- 8 files changed, 30 insertions(+), 36 deletions(-) diff --git a/src/lv_draw/lv_draw_basic.c b/src/lv_draw/lv_draw_basic.c index 8ec2b44e2..5699a9145 100644 --- a/src/lv_draw/lv_draw_basic.c +++ b/src/lv_draw/lv_draw_basic.c @@ -256,10 +256,6 @@ void lv_draw_letter(const lv_point_t * pos_p, const lv_area_t * mask_p, const lv uint8_t bitmask_init; uint8_t bitmask; - if(lv_font_is_monospace(font_p, letter)) { - pos_x += (lv_font_get_width(font_p, letter) - g->box_w) / 2; - } - switch(bpp) { case 1: bpp_opa_table = bpp1_opa_table; diff --git a/src/lv_draw/lv_draw_label.c b/src/lv_draw/lv_draw_label.c index 2f9db67b3..786c48de6 100644 --- a/src/lv_draw/lv_draw_label.c +++ b/src/lv_draw/lv_draw_label.c @@ -181,7 +181,7 @@ void lv_draw_label(const lv_area_t * coords, const lv_area_t * mask, const lv_st if(cmd_state == CMD_STATE_IN) color = recolor; - letter_w = lv_font_get_width(font, letter); + letter_w = lv_font_get_width_int(font, letter); if(sel_start != 0xFFFF && sel_end != 0xFFFF) { int char_ind = lv_encoded_get_char_id(txt, i); diff --git a/src/lv_misc/lv_font.c b/src/lv_misc/lv_font.c index 62426363f..fa7c58de1 100644 --- a/src/lv_misc/lv_font.c +++ b/src/lv_misc/lv_font.c @@ -124,10 +124,16 @@ const lv_font_glyph_dsc_t * lv_font_get_glyph_dsc(const lv_font_t * font_p, uint return NULL; } -uint8_t lv_font_get_width(const lv_font_t * font, uint32_t letter) +uint8_t lv_font_get_width_int(const lv_font_t * font, uint32_t letter) { const lv_font_glyph_dsc_t * dsc = lv_font_get_glyph_dsc(font, letter); - return dsc ? dsc->adv_w : 0; + return dsc ? LV_FONT_GET_ADV_W_INT(dsc->adv_w) : 0; +} + +uint8_t lv_font_get_width_fract(const lv_font_t * font, uint32_t letter) +{ + const lv_font_glyph_dsc_t * dsc = lv_font_get_glyph_dsc(font, letter); + return dsc ? LV_FONT_GET_ADV_W_FRACT(dsc->adv_w) : 0; } /** diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index c79b31640..389678a5e 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -122,22 +122,14 @@ const uint8_t * lv_font_get_glyph_bitmap(const lv_font_t * font_p, uint32_t lett */ const lv_font_glyph_dsc_t * lv_font_get_glyph_dsc(const lv_font_t * font_p, uint32_t letter); -uint8_t lv_font_get_width(const lv_font_t * font, uint32_t letter); +uint8_t lv_font_get_width_int(const lv_font_t * font, uint32_t letter); /** * Get the width of a letter in a font. If `monospace` is set then return with it. * @param font_p pointer to a font * @param letter an UNICODE character code * @return the width of a letter */ -uint8_t lv_font_get_width(const lv_font_t * font_p, uint32_t letter); - -/** - * Get the width of the letter without overwriting it with the `monospace` attribute - * @param font_p pointer to a font - * @param letter an UNICODE character code - * @return the width of a letter - */ -uint8_t lv_font_get_real_width(const lv_font_t * font_p, uint32_t letter); +uint8_t lv_font_get_width_int(const lv_font_t * font_p, uint32_t letter); /** * Get the line height of a font. All characters fit into this height @@ -183,8 +175,8 @@ const lv_font_glyph_dsc_t * lv_font_get_glyph_dsc_plain(const lv_font_t * font, #define LV_FONT_DECLARE(font_name) extern lv_font_t font_name; #define LV_FONT_SET_ADV_W(_integer, _fract) ((_integer << LV_FONT_ADV_W_FRACT_DIGIT) + _fract) -#define LV_FONT_GET_ADV_W_INT(_adv_w) (_adw_v >> LV_FONT_ADV_W_FRACT_DIGIT) -#define LV_FONT_GET_ADV_W_FRACT(_adv_w) (_adw_v & ((1 << LV_FONT_ADV_W_FRACT_DIGIT) -1)) +#define LV_FONT_GET_ADV_W_INT(_adv_w) (_adv_w >> LV_FONT_ADV_W_FRACT_DIGIT) +#define LV_FONT_GET_ADV_W_FRACT(_adv_w) (_adv_w & ((1 << LV_FONT_ADV_W_FRACT_DIGIT) -1)) /********************** diff --git a/src/lv_misc/lv_txt.c b/src/lv_misc/lv_txt.c index 0b1df19de..52526c02a 100644 --- a/src/lv_misc/lv_txt.c +++ b/src/lv_misc/lv_txt.c @@ -196,7 +196,7 @@ uint16_t lv_txt_get_next_line(const char * txt, const lv_font_t * font, lv_coord } else { /*Check the actual length*/ n_char_since_last_break++; - letter_width = lv_font_get_width(font, letter); + letter_width = lv_font_get_width_int(font, letter); cur_w += letter_width; /* Get the length of the current work and determine best place @@ -242,7 +242,7 @@ uint16_t lv_txt_get_next_line(const char * txt, const lv_font_t * font, lv_coord break; } n_char_since_last_break++; - lv_coord_t letter_width2 = lv_font_get_width(font, letter); + lv_coord_t letter_width2 = lv_font_get_width_int(font, letter); cur_w += letter_width2; if(cur_w > max_width) { /* Current letter already exceeds, return previous */ @@ -333,7 +333,7 @@ lv_coord_t lv_txt_get_width(const char * txt, uint16_t length, const lv_font_t * } } - lv_coord_t char_width = lv_font_get_width(font, letter); + lv_coord_t char_width = lv_font_get_width_int(font, letter); if(char_width > 0) { width += char_width; width += letter_space; diff --git a/src/lv_objx/lv_label.c b/src/lv_objx/lv_label.c index e6456eab4..d541c5857 100644 --- a/src/lv_objx/lv_label.c +++ b/src/lv_objx/lv_label.c @@ -577,7 +577,7 @@ uint16_t lv_label_get_letter_on(const lv_obj_t * label, lv_point_t * pos) } } - x += lv_font_get_width(font, letter); + x += lv_font_get_width_int(font, letter); if(pos->x < x) { i = i_current; break; @@ -683,7 +683,7 @@ bool lv_label_is_char_under_pos(const lv_obj_t * label, lv_point_t * pos) } } last_x = x; - x += lv_font_get_width(font, letter); + x += lv_font_get_width_int(font, letter); if(pos->x < x) { i = i_current; break; @@ -692,7 +692,7 @@ bool lv_label_is_char_under_pos(const lv_obj_t * label, lv_point_t * pos) i_current = i; } - int max_diff = lv_font_get_width(font, letter) + style->text.letter_space + 1; + int max_diff = lv_font_get_width_int(font, letter) + style->text.letter_space + 1; return (pos->x >= (last_x - style->text.letter_space) && pos->x <= (last_x + max_diff)); } @@ -836,7 +836,7 @@ static bool lv_label_design(lv_obj_t * label, const lv_area_t * mask, lv_design_ /*Draw the text again next to the original to make an circular effect */ if(size.x > lv_obj_get_width(label)) { ofs.x = ext->offset.x + size.x + - lv_font_get_width(style->text.font, ' ') * LV_LABEL_WAIT_CHAR_COUNT; + lv_font_get_width_int(style->text.font, ' ') * LV_LABEL_WAIT_CHAR_COUNT; ofs.y = ext->offset.y; lv_draw_label(&coords, mask, style, opa_scale, ext->text, flag, &ofs, @@ -951,7 +951,7 @@ static void lv_label_refr_text(lv_obj_t * label) anim.ready_cb = NULL; anim.path_cb = lv_anim_path_linear; anim.playback_pause = - (((lv_font_get_width(style->text.font, ' ') + style->text.letter_space) * 1000) / + (((lv_font_get_width_int(style->text.font, ' ') + style->text.letter_space) * 1000) / ext->anim_speed) * LV_LABEL_WAIT_CHAR_COUNT; anim.repeat_pause = anim.playback_pause; anim.act_time = -anim.playback_pause; @@ -991,7 +991,7 @@ static void lv_label_refr_text(lv_obj_t * label) anim.playback = 0; anim.start = 0; anim.act_time = - -(((lv_font_get_width(style->text.font, ' ') + style->text.letter_space) * 1000) / + -(((lv_font_get_width_int(style->text.font, ' ') + style->text.letter_space) * 1000) / ext->anim_speed) * LV_LABEL_WAIT_CHAR_COUNT; anim.ready_cb = NULL; anim.path_cb = lv_anim_path_linear; @@ -1000,7 +1000,7 @@ static void lv_label_refr_text(lv_obj_t * label) bool hor_anim = false; if(size.x > lv_obj_get_width(label)) { - anim.end = -size.x - lv_font_get_width(font, ' ') * LV_LABEL_WAIT_CHAR_COUNT; + anim.end = -size.x - lv_font_get_width_int(font, ' ') * LV_LABEL_WAIT_CHAR_COUNT; anim.exec_cb = (lv_anim_exec_cb_t)lv_label_set_offset_x; anim.time = lv_anim_speed_to_time(ext->anim_speed, anim.start, anim.end); lv_anim_create(&anim); @@ -1031,7 +1031,7 @@ static void lv_label_refr_text(lv_obj_t * label) } else { lv_point_t p; p.x = lv_obj_get_width(label) - - (lv_font_get_width(style->text.font, '.') + style->text.letter_space) * + (lv_font_get_width_int(style->text.font, '.') + style->text.letter_space) * LV_LABEL_DOT_NUM; /*Shrink with dots*/ p.y = lv_obj_get_height(label); p.y -= p.y % (lv_font_get_line_height(style->text.font) + diff --git a/src/lv_objx/lv_ta.c b/src/lv_objx/lv_ta.c index a179b83d5..e78da1456 100644 --- a/src/lv_objx/lv_ta.c +++ b/src/lv_objx/lv_ta.c @@ -455,7 +455,7 @@ void lv_ta_set_text(lv_obj_t * ta, const char * txt) /*Don't let 'width == 0' because the cursor will not be visible*/ if(lv_obj_get_width(ext->label) == 0) { const lv_style_t * style = lv_obj_get_style(ext->label); - lv_obj_set_width(ext->label, lv_font_get_width(style->text.font, ' ')); + lv_obj_set_width(ext->label, lv_font_get_width_int(style->text.font, ' ')); } if(ext->pwd_mode != 0) { @@ -1524,9 +1524,9 @@ static void refr_cursor_area(lv_obj_t * ta) /*Set letter_w (set not 0 on non printable but valid chars)*/ lv_coord_t letter_w; if(letter == '\0' || letter == '\n' || letter == '\r') { - letter_w = lv_font_get_width(label_style->text.font, ' '); + letter_w = lv_font_get_width_int(label_style->text.font, ' '); } else { - letter_w = lv_font_get_width(label_style->text.font, letter); + letter_w = lv_font_get_width_int(label_style->text.font, letter); } lv_point_t letter_pos; @@ -1544,9 +1544,9 @@ static void refr_cursor_area(lv_obj_t * ta) } if(letter == '\0' || letter == '\n' || letter == '\r') { - letter_w = lv_font_get_width(label_style->text.font, ' '); + letter_w = lv_font_get_width_int(label_style->text.font, ' '); } else { - letter_w = lv_font_get_width(label_style->text.font, letter); + letter_w = lv_font_get_width_int(label_style->text.font, letter); } } diff --git a/src/lv_objx/lv_tabview.c b/src/lv_objx/lv_tabview.c index cdf0395b2..f707e2c5b 100644 --- a/src/lv_objx/lv_tabview.c +++ b/src/lv_objx/lv_tabview.c @@ -1031,7 +1031,7 @@ static void tabview_realign(lv_obj_t * tabview) break; case LV_TABVIEW_BTNS_POS_LEFT: case LV_TABVIEW_BTNS_POS_RIGHT: - btns_size = lv_font_get_width(style_btn_rel->text.font, 0x0041) + // 'A' + btns_size = lv_font_get_width_int(style_btn_rel->text.font, 0x0041) + // 'A' style_btn_rel->body.padding.left + style_btn_rel->body.padding.right + style_btn_bg->body.padding.left + style_btn_bg->body.padding.right; From 864c970ba35e17933c95caf4c4a864e778251cb9 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Wed, 1 May 2019 16:43:32 +0200 Subject: [PATCH 08/29] font: add kerning support --- src/lv_draw/lv_draw_basic.c | 43 +++++------ src/lv_draw/lv_draw_label.c | 4 +- src/lv_fonts/lv_font_dejavu_20.c | 24 +++--- src/lv_misc/lv_font.c | 107 ++++++++++++++------------ src/lv_misc/lv_font.h | 128 ++++++++++++++++--------------- src/lv_misc/lv_txt.c | 18 +++-- src/lv_objx/lv_label.c | 45 +++++++---- src/lv_objx/lv_ta.c | 12 +-- src/lv_objx/lv_tabview.c | 2 +- 9 files changed, 210 insertions(+), 173 deletions(-) diff --git a/src/lv_draw/lv_draw_basic.c b/src/lv_draw/lv_draw_basic.c index 5699a9145..156cb3f22 100644 --- a/src/lv_draw/lv_draw_basic.c +++ b/src/lv_draw/lv_draw_basic.c @@ -244,19 +244,18 @@ void lv_draw_letter(const lv_point_t * pos_p, const lv_area_t * mask_p, const lv return; } - const lv_font_glyph_dsc_t * g = lv_font_get_glyph_dsc(font_p, letter); - if(g == NULL) return; - lv_coord_t pos_x = pos_p->x + g->ofs_x; - lv_coord_t pos_y = pos_p->y + g->ofs_y; - - uint8_t bpp = lv_font_get_bpp(font_p, letter); /*Bit per pixel (1,2, 4 or 8)*/ + lv_font_glyph_dsc_t g; + bool g_ret = lv_font_get_glyph_dsc(font_p, &g, letter); + if(g_ret == false) return; + lv_coord_t pos_x = pos_p->x + g.ofs_x; + lv_coord_t pos_y = pos_p->y + g.ofs_y; const uint8_t * bpp_opa_table; uint8_t bitmask_init; uint8_t bitmask; - switch(bpp) { + switch(g.bpp) { case 1: bpp_opa_table = bpp1_opa_table; bitmask_init = 0x80; @@ -281,7 +280,7 @@ void lv_draw_letter(const lv_point_t * pos_p, const lv_area_t * mask_p, const lv if(map_p == NULL) return; /*If the letter is completely out of mask don't draw it */ - if(pos_x + g->box_w < mask_p->x1 || pos_x > mask_p->x2 || pos_y + g->box_h < mask_p->y1 || + if(pos_x + g.box_w < mask_p->x1 || pos_x > mask_p->x2 || pos_y + g.box_h < mask_p->y1 || pos_y > mask_p->y2) return; @@ -293,16 +292,16 @@ void lv_draw_letter(const lv_point_t * pos_p, const lv_area_t * mask_p, const lv lv_coord_t col, row; uint8_t col_bit; uint8_t col_byte_cnt; - uint8_t width_byte_scr = g->box_w >> 3; /*Width in bytes (on the screen finally) (e.g. w = 11 -> 2 bytes wide)*/ - if(g->box_w & 0x7) width_byte_scr++; - uint8_t width_byte_bpp = (g->box_w * bpp) >> 3; /*Letter width in byte. Real width in the font*/ - if((g->box_w * bpp) & 0x7) width_byte_bpp++; + uint8_t width_byte_scr = g.box_w >> 3; /*Width in bytes (on the screen finally) (e.g. w = 11 -> 2 bytes wide)*/ + if(g.box_w & 0x7) width_byte_scr++; + uint8_t width_byte_bpp = (g.box_w * g.bpp) >> 3; /*Letter width in byte. Real width in the font*/ + if((g.box_w * g.bpp) & 0x7) width_byte_bpp++; /* Calculate the col/row start/end on the map*/ lv_coord_t col_start = pos_x >= mask_p->x1 ? 0 : mask_p->x1 - pos_x; - lv_coord_t col_end = pos_x + g->box_w <= mask_p->x2 ? g->box_w : mask_p->x2 - pos_x + 1; + lv_coord_t col_end = pos_x + g.box_w <= mask_p->x2 ? g.box_w : mask_p->x2 - pos_x + 1; lv_coord_t row_start = pos_y >= mask_p->y1 ? 0 : mask_p->y1 - pos_y; - lv_coord_t row_end = pos_y + g->box_h <= mask_p->y2 ? g->box_h : mask_p->y2 - pos_y + 1; + lv_coord_t row_end = pos_y + g.box_h <= mask_p->y2 ? g.box_h : mask_p->y2 - pos_y + 1; /*Set a pointer on VDB to the first pixel of the letter*/ vdb_buf_tmp += ((pos_y - vdb->area.y1) * vdb_width) + pos_x - vdb->area.x1; @@ -311,21 +310,21 @@ void lv_draw_letter(const lv_point_t * pos_p, const lv_area_t * mask_p, const lv vdb_buf_tmp += (row_start * vdb_width) + col_start; /*Move on the map too*/ - map_p += (row_start * width_byte_bpp) + ((col_start * bpp) >> 3); + map_p += (row_start * width_byte_bpp) + ((col_start * g.bpp) >> 3); uint8_t letter_px; lv_opa_t px_opa; for(row = row_start; row < row_end; row++) { col_byte_cnt = 0; - col_bit = (col_start * bpp) % 8; + col_bit = (col_start * g.bpp) % 8; bitmask = bitmask_init >> col_bit; for(col = col_start; col < col_end; col++) { - letter_px = (*map_p & bitmask) >> (8 - col_bit - bpp); + letter_px = (*map_p & bitmask) >> (8 - col_bit - g.bpp); if(letter_px != 0) { if(opa == LV_OPA_COVER) { - px_opa = bpp == 8 ? letter_px : bpp_opa_table[letter_px]; + px_opa = g.bpp == 8 ? letter_px : bpp_opa_table[letter_px]; } else { - px_opa = bpp == 8 ? (uint16_t)((uint16_t)letter_px * opa) >> 8 + px_opa = g.bpp == 8 ? (uint16_t)((uint16_t)letter_px * opa) >> 8 : (uint16_t)((uint16_t)bpp_opa_table[letter_px] * opa) >> 8; } @@ -345,9 +344,9 @@ void lv_draw_letter(const lv_point_t * pos_p, const lv_area_t * mask_p, const lv vdb_buf_tmp++; - if(col_bit < 8 - bpp) { - col_bit += bpp; - bitmask = bitmask >> bpp; + if(col_bit < 8 - g.bpp) { + col_bit += g.bpp; + bitmask = bitmask >> g.bpp; } else { col_bit = 0; col_byte_cnt++; diff --git a/src/lv_draw/lv_draw_label.c b/src/lv_draw/lv_draw_label.c index 786c48de6..947dd7035 100644 --- a/src/lv_draw/lv_draw_label.c +++ b/src/lv_draw/lv_draw_label.c @@ -136,8 +136,10 @@ void lv_draw_label(const lv_area_t * coords, const lv_area_t * mask, const lv_st cmd_state = CMD_STATE_WAIT; i = line_start; uint32_t letter; + uint32_t letter_next; while(i < line_end) { letter = lv_txt_encoded_next(txt, &i); + letter_next = lv_txt_encoded_next(&txt[i], NULL); /*Handle the re-color command*/ if((flag & LV_TXT_FLAG_RECOLOR) != 0) { @@ -181,7 +183,7 @@ void lv_draw_label(const lv_area_t * coords, const lv_area_t * mask, const lv_st if(cmd_state == CMD_STATE_IN) color = recolor; - letter_w = lv_font_get_width_int(font, letter); + letter_w = lv_font_get_glyph_width(font, letter, letter_next); if(sel_start != 0xFFFF && sel_end != 0xFFFF) { int char_ind = lv_encoded_get_char_id(txt, i); diff --git a/src/lv_fonts/lv_font_dejavu_20.c b/src/lv_fonts/lv_font_dejavu_20.c index 45851ff9e..786e152cf 100644 --- a/src/lv_fonts/lv_font_dejavu_20.c +++ b/src/lv_fonts/lv_font_dejavu_20.c @@ -81,13 +81,19 @@ static const uint8_t lv_font_dejavu_20_glyph_bitmap[] = { /*4 rows*/ }; + +static const lv_font_kern_t kern_0031[] = { + {.next_unicode = 0x0033, .space = 3 << 4}, + {.next_unicode = 0x0000} /*Trailing*/ +}; + /*Store the glyph descriptions*/ -static const lv_font_glyph_dsc_t lv_font_dejavu_20_glyph_dsc[] = { - {.adv_w = LV_FONT_SET_ADV_W(6, 0), .box_w = 6, .box_h = 0, .ofs_x = 0, .ofs_y = 0, .bitmap_index = 0}, /*Unicode: U+0020 ( )*/ - {.adv_w = LV_FONT_SET_ADV_W(8, 0), .box_w = 8, .box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 0}, /*Unicode: U+0031 (1)*/ - {.adv_w = LV_FONT_SET_ADV_W(9, 0), .box_w = 9, .box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 13}, /*Unicode: U+0033 (3)*/ - {.adv_w = LV_FONT_SET_ADV_W(12, 0), .box_w = 12,.box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 39}, /*Unicode: U+0041 (A)*/ - {.adv_w = LV_FONT_SET_ADV_W(8, 0), .box_w = 8, .box_h = 10,.ofs_x = 0, .ofs_y = 6, .bitmap_index = 65}, /*Unicode: U+0061 (a)*/ +static const lv_font_glyph_dsc_built_in_t lv_font_dejavu_20_glyph_dsc[] = { + {.adv_w = LV_FONT_SET_WIDTH(6, 0), .box_w = 6, .box_h = 0, .ofs_x = 0, .ofs_y = 0, .bitmap_index = 0, }, /*Unicode: U+0020 ( )*/ + {.adv_w = LV_FONT_SET_WIDTH(8, 0), .box_w = 8, .box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 0, .kern_table = kern_0031}, /*Unicode: U+0031 (1)*/ + {.adv_w = LV_FONT_SET_WIDTH(9, 0), .box_w = 9, .box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 13}, /*Unicode: U+0033 (3)*/ + {.adv_w = LV_FONT_SET_WIDTH(12, 0), .box_w = 12,.box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 39}, /*Unicode: U+0041 (A)*/ + {.adv_w = LV_FONT_SET_WIDTH(8, 0), .box_w = 8, .box_h = 10,.ofs_x = 0, .ofs_y = 6, .bitmap_index = 65}, /*Unicode: U+0061 (a)*/ }; static const uint16_t lv_font_dejavu_20_unicode_list[] = { @@ -99,10 +105,11 @@ static const uint16_t lv_font_dejavu_20_unicode_list[] = { }; static lv_font_dsc_built_in_t lv_font_dejavu_20_dsc = { - .glyph_cnt = 5, /*Number of glyphs in the font*/ + .glyph_cnt = 5, /*Number of glyphs in the font*/ .glyph_bitmap = lv_font_dejavu_20_glyph_bitmap, /*Bitmap of glyphs*/ .glyph_dsc = lv_font_dejavu_20_glyph_dsc, /*Description of glyphs*/ - .unicode_list = lv_font_dejavu_20_unicode_list, /*Every character in the font from 'unicode_first' to 'unicode_last'*/ + .unicode_list = lv_font_dejavu_20_unicode_list, /*Every character in the font from 'unicode_first' to 'unicode_last'*/ + .bpp = 1, /*Bit per pixel*/ }; lv_font_t lv_font_dejavu_20 = { @@ -111,7 +118,6 @@ lv_font_t lv_font_dejavu_20 = { .dsc = &lv_font_dejavu_20_dsc, .get_glyph_bitmap = lv_font_get_glyph_bitmap_plain, /*Function pointer to get glyph's bitmap*/ .get_glyph_dsc = lv_font_get_glyph_dsc_plain, /*Function pointer to get glyph's width*/ - .bpp = 1, /*Bit per pixel*/ .line_height = 20, /*Font height in pixels*/ .next_page = NULL, /*Pointer to a font extension*/ }; diff --git a/src/lv_misc/lv_font.c b/src/lv_misc/lv_font.c index fa7c58de1..b72c87216 100644 --- a/src/lv_misc/lv_font.c +++ b/src/lv_misc/lv_font.c @@ -102,62 +102,60 @@ const uint8_t * lv_font_get_glyph_bitmap(const lv_font_t * font_p, uint32_t lett } /** - * Get the description of a glyph in a font. - * @param font_p pointer to a font - * @param letter an UNICODE character code - * @return pointer to a glyph descriptor + * Get the descriptor of a glyph + * @param font_p pointer to font + * @param dsc_out store the result descriptor here + * @param letter an UNICODE letter code + * @return true: descriptor is successfully loaded into `dsc_out`. + * false: the letter was not found, no data is loaded to `dsc_out` */ -const lv_font_glyph_dsc_t * lv_font_get_glyph_dsc(const lv_font_t * font_p, uint32_t letter) +bool lv_font_get_glyph_dsc(const lv_font_t * font_p, lv_font_glyph_dsc_t * dsc_out, uint32_t letter) { const lv_font_t * font_i = font_p; - const lv_font_glyph_dsc_t * dsc; + bool ret; while(font_i != NULL) { - dsc = font_i->get_glyph_dsc(font_i, letter); - if(dsc) { - /*Glyph found*/ - return dsc; - } + ret = font_i->get_glyph_dsc(font_i, dsc_out, letter); + if(ret) return ret; font_i = font_i->next_page; } - return NULL; -} - -uint8_t lv_font_get_width_int(const lv_font_t * font, uint32_t letter) -{ - const lv_font_glyph_dsc_t * dsc = lv_font_get_glyph_dsc(font, letter); - return dsc ? LV_FONT_GET_ADV_W_INT(dsc->adv_w) : 0; -} - -uint8_t lv_font_get_width_fract(const lv_font_t * font, uint32_t letter) -{ - const lv_font_glyph_dsc_t * dsc = lv_font_get_glyph_dsc(font, letter); - return dsc ? LV_FONT_GET_ADV_W_FRACT(dsc->adv_w) : 0; + return false; } /** - * Get the bit-per-pixel of font - * @param font pointer to font - * @param letter a letter from font (font extensions can have different bpp) - * @return bpp of the font (or font extension) + * Get the width of a glyph with kerning + * @param font pointer to a font + * @param letter an UNICODE letter + * @param letter_next the next letter after `letter`. Used for kerning + * @return the width of the glyph */ -uint8_t lv_font_get_bpp(const lv_font_t * font, uint32_t letter) +uint8_t lv_font_get_glyph_width(const lv_font_t * font, uint32_t letter, uint32_t letter_next) { - const lv_font_t * font_i = font; - while(font_i != NULL) { - if(letter >= font_i->unicode_first && letter <= font_i->unicode_last) { - return font_i->bpp; + lv_font_glyph_dsc_t dsc; + bool ret = lv_font_get_glyph_dsc(font, &dsc, letter); + if(ret == false) return 0; + + int32_t w = dsc.adv_w; + + /*Apply kerning is required*/ + if(dsc.kern_table && letter_next != 0) { + uint32_t i; + for(i = 0; dsc.kern_table[i].next_unicode != 0; i++) { + if((uint32_t)dsc.kern_table[i].next_unicode == letter_next) { + w += dsc.kern_table[i].space; + break; + } } - font_i = font_i->next_page; } - return 0; + if(w < 0) w = 0; + + return w <= 0 ? 0 : LV_FONT_GET_WIDTH_INT(w); } /** - * Generic bitmap get function used in 'font->get_bitmap' when the font contains all characters in - * the range + * Used as `get_glyph_bitmap` callback in LittelvGL's native font format if the font is uncompressed. * @param font pointer to font * @param unicode_letter an unicode letter which bitmap should be get * @return pointer to the bitmap or NULL if not found @@ -190,23 +188,23 @@ const uint8_t * lv_font_get_glyph_bitmap_plain(const lv_font_t * font, uint32_t } /** - * Generic glyph width get function used in 'font->get_width' when the font contains all characters - * in the range - * @param font pointer to font - * @param unicode_letter an unicode letter which width should be get - * @return width of the gylph or -1 if not found + * Used as `get_glyph_dsc` callback in LittelvGL's native font format if the font is uncompressed. + * @param font_p pointer to font + * @param dsc_out store the result descriptor here + * @param letter an UNICODE letter code + * @return true: descriptor is successfully loaded into `dsc_out`. + * false: the letter was not found, no data is loaded to `dsc_out` */ -const lv_font_glyph_dsc_t * lv_font_get_glyph_dsc_plain(const lv_font_t * font, uint32_t unicode_letter) +bool lv_font_get_glyph_dsc_plain(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter) { /*Check the range*/ if(unicode_letter < font->unicode_first || unicode_letter > font->unicode_last) return NULL; lv_font_dsc_built_in_t * font_dsc = (lv_font_dsc_built_in_t *) font->dsc; - + int32_t index = -1; /*No Unicode list -> Continuous font*/ if(font_dsc->unicode_list == NULL) { - uint32_t index = (unicode_letter - font->unicode_first); - return &font_dsc->glyph_dsc[index]; + index = (unicode_letter - font->unicode_first); } /*Has Unicode list -> Sparse font */ else { @@ -215,13 +213,22 @@ const lv_font_glyph_dsc_t * lv_font_get_glyph_dsc_plain(const lv_font_t * font, sizeof(font_dsc->unicode_list[0]), lv_font_codeCompare); if(pUnicode != NULL) { - uint32_t idx = (uint16_t)(pUnicode - font_dsc->unicode_list); - return &font_dsc->glyph_dsc[idx]; + index = (uint16_t)(pUnicode - font_dsc->unicode_list); } } - /*If not returned earlier then the letter is not found in this font*/ - return NULL; + if(index > 0) { + dsc_out->adv_w = font_dsc->glyph_dsc[index].adv_w; + dsc_out->box_h = font_dsc->glyph_dsc[index].box_h; + dsc_out->box_w = font_dsc->glyph_dsc[index].box_w; + dsc_out->ofs_x = font_dsc->glyph_dsc[index].ofs_x; + dsc_out->ofs_y = font_dsc->glyph_dsc[index].ofs_y; + dsc_out->kern_table = font_dsc->glyph_dsc[index].kern_table; + dsc_out->bpp = font_dsc->bpp; + return true; + } else { + return false; + } } /********************** diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index 389678a5e..d40eaa5c6 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -29,29 +29,27 @@ extern "C" { * DEFINES *********************/ /*Number of fractional digits in the advanced width (`adv_w`) field of `lv_font_glyph_dsc_t`*/ -#define LV_FONT_ADV_W_FRACT_DIGIT 4 +#define LV_FONT_WIDTH_FRACT_DIGIT 4 /********************** * TYPEDEFS **********************/ +typedef struct { + int32_t next_unicode :23; + int32_t space :9; /*5 integer, 4 fractional*/ +}lv_font_kern_t; + typedef struct { - uint32_t bitmap_index : 20; /* Start index of the bitmap. A font can be max 1 MB. */ - uint32_t adv_w :12; /*The glyph needs this space. Draw the next glyph after this width. 8 bit integer, 4 bit fractional */ - uint8_t box_w; /*Width of the glyph's bounding box*/ - uint8_t box_h; /*Height of the glyph's bounding box*/ - uint8_t ofs_x; /*x offset of the bounding box*/ - int8_t ofs_y; /*y offset of the bounding box*/ -} lv_font_glyph_dsc_t; - -typedef struct { - const uint8_t * glyph_bitmap; - const lv_font_glyph_dsc_t * glyph_dsc; - const uint16_t * unicode_list; - uint16_t glyph_cnt; /*Number of glyphs in the font. */ -}lv_font_dsc_built_in_t; - + uint16_t adv_w; /*The glyph needs this space. Draw the next glyph after this width. 8 bit integer, 4 bit fractional */ + uint8_t box_w; /*Width of the glyph's bounding box*/ + uint8_t box_h; /*Height of the glyph's bounding box*/ + int8_t ofs_x; /*x offset of the bounding box*/ + int8_t ofs_y; /*y offset of the bounding box*/ + uint8_t bpp; /*Bit-per-pixel: 1, 2, 4, 8*/ + const lv_font_kern_t * kern_table; +}lv_font_glyph_dsc_t; typedef struct _lv_font_struct { @@ -59,21 +57,41 @@ typedef struct _lv_font_struct uint32_t unicode_last; /*Get a glyph's descriptor from a font*/ - const lv_font_glyph_dsc_t * (*get_glyph_dsc)(const struct _lv_font_struct *, uint32_t letter); + bool (*get_glyph_dsc)(const struct _lv_font_struct *, lv_font_glyph_dsc_t *, uint32_t letter); /*Get a glyph's bitmap from a font*/ const uint8_t * (*get_glyph_bitmap)(const struct _lv_font_struct *, uint32_t); /*Pointer to the font in a font pack (must have the same line height)*/ struct _lv_font_struct * next_page; - uint8_t size; /*The original size*/ + uint8_t size; /*The original size (height)*/ uint8_t line_height; /*The real line height where any text fits*/ - uint8_t base_line; /*Base line measured from the top of the line*/ - uint8_t bpp; /*Bit per pixel: 1, 2, 4 or 8*/ - + uint8_t base_line; /*Base line measured from the top of the line_height*/ void * dsc; /*Store implementation specific data here*/ } lv_font_t; +typedef struct +{ + uint32_t bitmap_index : 20; /* Start index of the bitmap. A font can be max 1 MB. */ + uint32_t adv_w :12; /*The glyph needs this space. Draw the next glyph after this width. 8 bit integer, 4 bit fractional */ + + uint8_t box_w; /*Width of the glyph's bounding box*/ + uint8_t box_h; /*Height of the glyph's bounding box*/ + int8_t ofs_x; /*x offset of the bounding box*/ + int8_t ofs_y; /*y offset of the bounding box*/ + + const lv_font_kern_t * kern_table; +}lv_font_glyph_dsc_built_in_t; + + +typedef struct { + const uint8_t * glyph_bitmap; + const lv_font_glyph_dsc_built_in_t * glyph_dsc; + const uint16_t * unicode_list; + uint16_t glyph_cnt; /*Number of glyphs in the font. */ + uint8_t bpp; /*Bit per pixel: 1, 2, 4 or 8*/ +}lv_font_dsc_built_in_t; + /********************** * GLOBAL PROTOTYPES **********************/ @@ -97,15 +115,6 @@ void lv_font_add(lv_font_t * child, lv_font_t * parent); */ void lv_font_remove(lv_font_t * child, lv_font_t * parent); -/** - * Tells if font which contains `letter` is monospace or not - * @param font_p point to font - * @param letter an UNICODE character code - * @return true: the letter is monospace; false not monospace - */ -bool lv_font_is_monospace(const lv_font_t * font_p, uint32_t letter); - - /** * Return with the bitmap of a font. * @param font_p pointer to a font @@ -115,21 +124,23 @@ bool lv_font_is_monospace(const lv_font_t * font_p, uint32_t letter); const uint8_t * lv_font_get_glyph_bitmap(const lv_font_t * font_p, uint32_t letter); /** - * Get the description of a glyph in a font. - * @param font_p pointer to a font - * @param letter an UNICODE character code - * @return pointer to a glyph descriptor + * Get the descriptor of a glyph + * @param font_p pointer to font + * @param dsc_out store the result descriptor here + * @param letter an UNICODE letter code + * @return true: descriptor is successfully loaded into `dsc_out`. + * false: the letter was not found, no data is loaded to `dsc_out` */ -const lv_font_glyph_dsc_t * lv_font_get_glyph_dsc(const lv_font_t * font_p, uint32_t letter); +bool lv_font_get_glyph_dsc(const lv_font_t * font_p, lv_font_glyph_dsc_t * dsc_out, uint32_t letter); -uint8_t lv_font_get_width_int(const lv_font_t * font, uint32_t letter); /** - * Get the width of a letter in a font. If `monospace` is set then return with it. - * @param font_p pointer to a font - * @param letter an UNICODE character code - * @return the width of a letter + * Get the width of a glyph with kerning + * @param font pointer to a font + * @param letter an UNICODE letter + * @param letter_next the next letter after `letter`. Used for kerning + * @return the width of the glyph */ -uint8_t lv_font_get_width_int(const lv_font_t * font_p, uint32_t letter); +uint8_t lv_font_get_glyph_width(const lv_font_t * font, uint32_t letter, uint32_t letter_next); /** * Get the line height of a font. All characters fit into this height @@ -138,35 +149,26 @@ uint8_t lv_font_get_width_int(const lv_font_t * font_p, uint32_t letter); */ static inline uint8_t lv_font_get_line_height(const lv_font_t * font_p) { - return font_p->line_height;//(uint8_t)((int16_t)font_p->ascent - font_p->descent); + return font_p->line_height; } /** - * Get the bit-per-pixel of font - * @param font pointer to font - * @param letter a letter from font (font extensions can have different bpp) - * @return bpp of the font (or font extension) - */ -uint8_t lv_font_get_bpp(const lv_font_t * font, uint32_t letter); - - -/** - * Generic bitmap get function used in 'font->get_bitmap' when the font contains all characters in - * the range + * Used as `get_glyph_bitmap` callback in LittelvGL's native font format if the font is uncompressed. * @param font pointer to font * @param unicode_letter an unicode letter which bitmap should be get * @return pointer to the bitmap or NULL if not found */ -const uint8_t * lv_font_get_glyph_bitmap_plain(const lv_font_t * font, uint32_t unicode_letter); +const uint8_t * lv_font_get_glyph_bitmap_plain(const lv_font_t * font, uint32_t letter); /** - * Generic glyph width get function used in 'font->get_width' when the font contains all characters - * in the range - * @param font pointer to font - * @param unicode_letter an unicode letter which width should be get - * @return width of the gylph or -1 if not found + * Used as `get_glyph_dsc` callback in LittelvGL's native font format if the font is uncompressed. + * @param font_p pointer to font + * @param dsc_out store the result descriptor here + * @param letter an UNICODE letter code + * @return true: descriptor is successfully loaded into `dsc_out`. + * false: the letter was not found, no data is loaded to `dsc_out` */ -const lv_font_glyph_dsc_t * lv_font_get_glyph_dsc_plain(const lv_font_t * font, uint32_t unicode_letter); +bool lv_font_get_glyph_dsc_plain(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter); /********************** * MACROS @@ -174,9 +176,9 @@ const lv_font_glyph_dsc_t * lv_font_get_glyph_dsc_plain(const lv_font_t * font, #define LV_FONT_DECLARE(font_name) extern lv_font_t font_name; -#define LV_FONT_SET_ADV_W(_integer, _fract) ((_integer << LV_FONT_ADV_W_FRACT_DIGIT) + _fract) -#define LV_FONT_GET_ADV_W_INT(_adv_w) (_adv_w >> LV_FONT_ADV_W_FRACT_DIGIT) -#define LV_FONT_GET_ADV_W_FRACT(_adv_w) (_adv_w & ((1 << LV_FONT_ADV_W_FRACT_DIGIT) -1)) +#define LV_FONT_SET_WIDTH(_integer, _fract) ((_integer << LV_FONT_WIDTH_FRACT_DIGIT) + _fract) +#define LV_FONT_GET_WIDTH_INT(_w) (_w >> LV_FONT_WIDTH_FRACT_DIGIT) +#define LV_FONT_GET_WIDTH_FRACT(_w) (_w & ((1 << LV_FONT_WIDTH_FRACT_DIGIT) -1)) /********************** diff --git a/src/lv_misc/lv_txt.c b/src/lv_misc/lv_txt.c index 52526c02a..85799d05f 100644 --- a/src/lv_misc/lv_txt.c +++ b/src/lv_misc/lv_txt.c @@ -173,11 +173,13 @@ uint16_t lv_txt_get_next_line(const char * txt, const lv_font_t * font, lv_coord uint32_t n_char_since_last_break = 0; /* Used count word length of long words */ uint32_t last_break = NO_BREAK_FOUND; lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; - uint32_t letter = 0; + uint32_t letter; + uint32_t letter_next; while(txt[i] != '\0') { lv_coord_t letter_width; letter = lv_txt_encoded_next(txt, &i); + letter_next = lv_txt_encoded_next(&txt[i], NULL); /*Handle the recolor command*/ if((flag & LV_TXT_FLAG_RECOLOR) != 0) { @@ -196,7 +198,7 @@ uint16_t lv_txt_get_next_line(const char * txt, const lv_font_t * font, lv_coord } else { /*Check the actual length*/ n_char_since_last_break++; - letter_width = lv_font_get_width_int(font, letter); + letter_width = lv_font_get_glyph_width(font, letter, letter_next); cur_w += letter_width; /* Get the length of the current work and determine best place @@ -210,12 +212,12 @@ uint16_t lv_txt_get_next_line(const char * txt, const lv_font_t * font, lv_coord i = last_break; } else { uint32_t i_tmp = i; - cur_w -= - w_at_last_break + - letter_space; /*ignore the first letter_space after the break char */ + /*ignore the first letter_space after the break char */ + cur_w -= w_at_last_break + letter_space; bool other = true; while(txt[i_tmp] != '\0') { letter = lv_txt_encoded_next(txt, &i_tmp); + letter_next = lv_txt_encoded_next(&txt[i_tmp], NULL); /*Handle the recolor command*/ if((flag & LV_TXT_FLAG_RECOLOR) != 0) { @@ -242,7 +244,7 @@ uint16_t lv_txt_get_next_line(const char * txt, const lv_font_t * font, lv_coord break; } n_char_since_last_break++; - lv_coord_t letter_width2 = lv_font_get_width_int(font, letter); + lv_coord_t letter_width2 = lv_font_get_glyph_width(font, letter, letter_next); cur_w += letter_width2; if(cur_w > max_width) { /* Current letter already exceeds, return previous */ @@ -323,17 +325,19 @@ lv_coord_t lv_txt_get_width(const char * txt, uint16_t length, const lv_font_t * lv_coord_t width = 0; lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; uint32_t letter; + uint32_t letter_next; if(length != 0) { while(i < length) { letter = lv_txt_encoded_next(txt, &i); + letter_next = lv_txt_encoded_next(&txt[i], NULL); if((flag & LV_TXT_FLAG_RECOLOR) != 0) { if(lv_txt_is_cmd(&cmd_state, letter) != false) { continue; } } - lv_coord_t char_width = lv_font_get_width_int(font, letter); + lv_coord_t char_width = lv_font_get_glyph_width(font, letter, letter_next); if(char_width > 0) { width += char_width; width += letter_space; diff --git a/src/lv_objx/lv_label.c b/src/lv_objx/lv_label.c index d541c5857..eb419bd8a 100644 --- a/src/lv_objx/lv_label.c +++ b/src/lv_objx/lv_label.c @@ -564,12 +564,20 @@ uint16_t lv_label_get_letter_on(const lv_obj_t * label, lv_point_t * pos) } lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; + uint32_t i = line_start; uint32_t i_current = i; uint32_t letter; + uint32_t letter_next; + while(i <= new_line_start - 1) { - letter = - lv_txt_encoded_next(txt, &i); /*Be careful 'i' already points to the next character*/ + /* Get the current letter. + * Be careful 'i' already points to the next character*/ + letter = lv_txt_encoded_next(txt, &i); + + /*Get the next letter too for kerning*/ + letter_next = lv_txt_encoded_next(&txt[i], NULL); + /*Handle the recolor command*/ if((flag & LV_TXT_FLAG_RECOLOR) != 0) { if(lv_txt_is_cmd(&cmd_state, txt[i]) != false) { @@ -577,7 +585,7 @@ uint16_t lv_label_get_letter_on(const lv_obj_t * label, lv_point_t * pos) } } - x += lv_font_get_width_int(font, letter); + x += lv_font_get_glyph_width(font, letter, letter_next); if(pos->x < x) { i = i_current; break; @@ -670,12 +678,20 @@ bool lv_label_is_char_under_pos(const lv_obj_t * label, lv_point_t * pos) } lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; + uint32_t i = line_start; uint32_t i_current = i; - uint32_t letter = 0; + uint32_t letter; + uint32_t letter_next; + while(i <= new_line_start - 1) { - letter = - lv_txt_encoded_next(txt, &i); /*Be careful 'i' already points to the next character*/ + /* Get the current letter + * Be careful 'i' already points to the next character */ + letter = lv_txt_encoded_next(txt, &i); + + /*Get the next letter for kerning*/ + letter_next = lv_txt_encoded_next(&txt[i], NULL); + /*Handle the recolor command*/ if((flag & LV_TXT_FLAG_RECOLOR) != 0) { if(lv_txt_is_cmd(&cmd_state, txt[i]) != false) { @@ -683,7 +699,7 @@ bool lv_label_is_char_under_pos(const lv_obj_t * label, lv_point_t * pos) } } last_x = x; - x += lv_font_get_width_int(font, letter); + x += lv_font_get_glyph_width(font, letter, letter_next); if(pos->x < x) { i = i_current; break; @@ -692,7 +708,7 @@ bool lv_label_is_char_under_pos(const lv_obj_t * label, lv_point_t * pos) i_current = i; } - int max_diff = lv_font_get_width_int(font, letter) + style->text.letter_space + 1; + int32_t max_diff = lv_font_get_glyph_width(font, letter, letter_next) + style->text.letter_space + 1; return (pos->x >= (last_x - style->text.letter_space) && pos->x <= (last_x + max_diff)); } @@ -833,10 +849,11 @@ static bool lv_label_design(lv_obj_t * label, const lv_area_t * mask, lv_design_ style->text.line_space, LV_COORD_MAX, flag); lv_point_t ofs; + /*Draw the text again next to the original to make an circular effect */ if(size.x > lv_obj_get_width(label)) { ofs.x = ext->offset.x + size.x + - lv_font_get_width_int(style->text.font, ' ') * LV_LABEL_WAIT_CHAR_COUNT; + lv_font_get_glyph_width(style->text.font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT; ofs.y = ext->offset.y; lv_draw_label(&coords, mask, style, opa_scale, ext->text, flag, &ofs, @@ -950,8 +967,7 @@ static void lv_label_refr_text(lv_obj_t * label) anim.start = 0; anim.ready_cb = NULL; anim.path_cb = lv_anim_path_linear; - anim.playback_pause = - (((lv_font_get_width_int(style->text.font, ' ') + style->text.letter_space) * 1000) / + anim.playback_pause = (((lv_font_get_glyph_width(style->text.font, ' ', ' ') + style->text.letter_space) * 1000) / ext->anim_speed) * LV_LABEL_WAIT_CHAR_COUNT; anim.repeat_pause = anim.playback_pause; anim.act_time = -anim.playback_pause; @@ -990,8 +1006,7 @@ static void lv_label_refr_text(lv_obj_t * label) anim.repeat = 1; anim.playback = 0; anim.start = 0; - anim.act_time = - -(((lv_font_get_width_int(style->text.font, ' ') + style->text.letter_space) * 1000) / + anim.act_time = -(((lv_font_get_glyph_width(style->text.font, ' ', ' ') + style->text.letter_space) * 1000) / ext->anim_speed) * LV_LABEL_WAIT_CHAR_COUNT; anim.ready_cb = NULL; anim.path_cb = lv_anim_path_linear; @@ -1000,7 +1015,7 @@ static void lv_label_refr_text(lv_obj_t * label) bool hor_anim = false; if(size.x > lv_obj_get_width(label)) { - anim.end = -size.x - lv_font_get_width_int(font, ' ') * LV_LABEL_WAIT_CHAR_COUNT; + anim.end = -size.x - lv_font_get_glyph_width(font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT; anim.exec_cb = (lv_anim_exec_cb_t)lv_label_set_offset_x; anim.time = lv_anim_speed_to_time(ext->anim_speed, anim.start, anim.end); lv_anim_create(&anim); @@ -1031,7 +1046,7 @@ static void lv_label_refr_text(lv_obj_t * label) } else { lv_point_t p; p.x = lv_obj_get_width(label) - - (lv_font_get_width_int(style->text.font, '.') + style->text.letter_space) * + (lv_font_get_glyph_width(style->text.font, '.', '.') + style->text.letter_space) * LV_LABEL_DOT_NUM; /*Shrink with dots*/ p.y = lv_obj_get_height(label); p.y -= p.y % (lv_font_get_line_height(style->text.font) + diff --git a/src/lv_objx/lv_ta.c b/src/lv_objx/lv_ta.c index 66151328c..9b20fee8a 100644 --- a/src/lv_objx/lv_ta.c +++ b/src/lv_objx/lv_ta.c @@ -456,7 +456,7 @@ void lv_ta_set_text(lv_obj_t * ta, const char * txt) /*Don't let 'width == 0' because the cursor will not be visible*/ if(lv_obj_get_width(ext->label) == 0) { const lv_style_t * style = lv_obj_get_style(ext->label); - lv_obj_set_width(ext->label, lv_font_get_width_int(style->text.font, ' ')); + lv_obj_set_width(ext->label, lv_font_get_glyph_width(style->text.font, ' ', '\0')); } if(ext->pwd_mode != 0) { @@ -1522,12 +1522,14 @@ static void refr_cursor_area(lv_obj_t * ta) uint32_t letter = lv_txt_encoded_next(&txt[byte_pos], NULL); lv_coord_t letter_h = lv_font_get_line_height(label_style->text.font); + /*Set letter_w (set not 0 on non printable but valid chars)*/ lv_coord_t letter_w; if(letter == '\0' || letter == '\n' || letter == '\r') { - letter_w = lv_font_get_width_int(label_style->text.font, ' '); + letter_w = lv_font_get_glyph_width(label_style->text.font, ' ', '\0'); } else { - letter_w = lv_font_get_width_int(label_style->text.font, letter); + /*`letter_next` parameter is '\0' to ignore kerning*/ + letter_w = lv_font_get_glyph_width(label_style->text.font, letter, '\0'); } lv_point_t letter_pos; @@ -1545,9 +1547,9 @@ static void refr_cursor_area(lv_obj_t * ta) } if(letter == '\0' || letter == '\n' || letter == '\r') { - letter_w = lv_font_get_width_int(label_style->text.font, ' '); + letter_w = lv_font_get_glyph_width(label_style->text.font, ' ', '\0'); } else { - letter_w = lv_font_get_width_int(label_style->text.font, letter); + letter_w = lv_font_get_glyph_width(label_style->text.font, letter, '\0'); } } diff --git a/src/lv_objx/lv_tabview.c b/src/lv_objx/lv_tabview.c index f707e2c5b..9cdf2cac5 100644 --- a/src/lv_objx/lv_tabview.c +++ b/src/lv_objx/lv_tabview.c @@ -1031,7 +1031,7 @@ static void tabview_realign(lv_obj_t * tabview) break; case LV_TABVIEW_BTNS_POS_LEFT: case LV_TABVIEW_BTNS_POS_RIGHT: - btns_size = lv_font_get_width_int(style_btn_rel->text.font, 0x0041) + // 'A' + btns_size = lv_font_get_glyph_width(style_btn_rel->text.font, 'A', '\0') + style_btn_rel->body.padding.left + style_btn_rel->body.padding.right + style_btn_bg->body.padding.left + style_btn_bg->body.padding.right; From cc97e114c2272753fb78e77879f391a6b9322884 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Wed, 1 May 2019 17:44:22 +0200 Subject: [PATCH 09/29] font: add comments --- src/lv_misc/lv_font.h | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index d40eaa5c6..63325c881 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -35,11 +35,17 @@ extern "C" { * TYPEDEFS **********************/ +/*------------------ + * General types + *-----------------*/ + +/*One element of a kerning table*/ typedef struct { int32_t next_unicode :23; int32_t space :9; /*5 integer, 4 fractional*/ }lv_font_kern_t; +/*Describe the properties of a glyph*/ typedef struct { uint16_t adv_w; /*The glyph needs this space. Draw the next glyph after this width. 8 bit integer, 4 bit fractional */ @@ -51,6 +57,7 @@ typedef struct const lv_font_kern_t * kern_table; }lv_font_glyph_dsc_t; +/*Describe the properties of a font*/ typedef struct _lv_font_struct { uint32_t unicode_first; @@ -70,6 +77,12 @@ typedef struct _lv_font_struct void * dsc; /*Store implementation specific data here*/ } lv_font_t; + +/*--------------------------------------------- + * Types for LittlevGL's internal font format + *---------------------------------------------*/ + +/*Describe a glyph in internal font format */ typedef struct { uint32_t bitmap_index : 20; /* Start index of the bitmap. A font can be max 1 MB. */ @@ -84,6 +97,7 @@ typedef struct }lv_font_glyph_dsc_built_in_t; +/*Describe store additional data for fonts */ typedef struct { const uint8_t * glyph_bitmap; const lv_font_glyph_dsc_built_in_t * glyph_dsc; @@ -96,8 +110,12 @@ typedef struct { * GLOBAL PROTOTYPES **********************/ +/*---------------- + * General API + *---------------*/ + /** - * Initialize the fonts + * Initialize the font module */ void lv_font_init(void); @@ -152,6 +170,10 @@ static inline uint8_t lv_font_get_line_height(const lv_font_t * font_p) return font_p->line_height; } +/*---------------------------------- + * LittlevGL's internal font format + *----------------------------------*/ + /** * Used as `get_glyph_bitmap` callback in LittelvGL's native font format if the font is uncompressed. * @param font pointer to font From 469157ebd931606c23ab133cee174d11ebf3415a Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Wed, 1 May 2019 18:08:56 +0200 Subject: [PATCH 10/29] font: update kern space format --- src/lv_fonts/lv_font_dejavu_20.c | 4 ++-- src/lv_misc/lv_font.c | 8 ++++++-- src/lv_misc/lv_font.h | 9 +++++++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/lv_fonts/lv_font_dejavu_20.c b/src/lv_fonts/lv_font_dejavu_20.c index 786e152cf..c7a77ca49 100644 --- a/src/lv_fonts/lv_font_dejavu_20.c +++ b/src/lv_fonts/lv_font_dejavu_20.c @@ -83,8 +83,8 @@ static const uint8_t lv_font_dejavu_20_glyph_bitmap[] = { static const lv_font_kern_t kern_0031[] = { - {.next_unicode = 0x0033, .space = 3 << 4}, - {.next_unicode = 0x0000} /*Trailing*/ + {.next_unicode = 0x0033, .space = LV_FONT_SET_WIDTH(8, 0), .space_sign = LV_FONT_KERN_POSITIVE}, + {.next_unicode = 0x0000} /*Trailing*/ }; /*Store the glyph descriptions*/ diff --git a/src/lv_misc/lv_font.c b/src/lv_misc/lv_font.c index b72c87216..9de3fa9ba 100644 --- a/src/lv_misc/lv_font.c +++ b/src/lv_misc/lv_font.c @@ -42,7 +42,7 @@ static int32_t lv_font_codeCompare(const void * pRef, const void * pElement); **********************/ /** - * Initialize the fonts + * Initialize the font module */ void lv_font_init(void) { @@ -143,7 +143,11 @@ uint8_t lv_font_get_glyph_width(const lv_font_t * font, uint32_t letter, uint32_ uint32_t i; for(i = 0; dsc.kern_table[i].next_unicode != 0; i++) { if((uint32_t)dsc.kern_table[i].next_unicode == letter_next) { - w += dsc.kern_table[i].space; + if(dsc.kern_table[i].space_sign == LV_FONT_KERN_POSITIVE) { + w += dsc.kern_table[i].space; + } else { + w -= dsc.kern_table[i].space; + } break; } } diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index 63325c881..3c04ae404 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -41,8 +41,10 @@ extern "C" { /*One element of a kerning table*/ typedef struct { - int32_t next_unicode :23; - int32_t space :9; /*5 integer, 4 fractional*/ + uint32_t next_unicode :23; + + uint32_t space :8; /*5 integer, 4 fractional*/ + uint32_t space_sign :1; /*0: space positive; 1: space negative*/ }lv_font_kern_t; /*Describe the properties of a glyph*/ @@ -202,6 +204,9 @@ bool lv_font_get_glyph_dsc_plain(const lv_font_t * font, lv_font_glyph_dsc_t * d #define LV_FONT_GET_WIDTH_INT(_w) (_w >> LV_FONT_WIDTH_FRACT_DIGIT) #define LV_FONT_GET_WIDTH_FRACT(_w) (_w & ((1 << LV_FONT_WIDTH_FRACT_DIGIT) -1)) +#define LV_FONT_KERN_POSITIVE 0 +#define LV_FONT_KERN_NEGATIVE 1 + /********************** * ADD BUILT IN FONTS From 0c7d9b96f7baf71b92e0824a87f52a32356f6198 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Wed, 1 May 2019 18:10:44 +0200 Subject: [PATCH 11/29] font: minor formatting --- src/lv_misc/lv_font.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index 3c04ae404..653d76ea7 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -31,6 +31,9 @@ extern "C" { /*Number of fractional digits in the advanced width (`adv_w`) field of `lv_font_glyph_dsc_t`*/ #define LV_FONT_WIDTH_FRACT_DIGIT 4 +#define LV_FONT_KERN_POSITIVE 0 +#define LV_FONT_KERN_NEGATIVE 1 + /********************** * TYPEDEFS **********************/ @@ -204,10 +207,6 @@ bool lv_font_get_glyph_dsc_plain(const lv_font_t * font, lv_font_glyph_dsc_t * d #define LV_FONT_GET_WIDTH_INT(_w) (_w >> LV_FONT_WIDTH_FRACT_DIGIT) #define LV_FONT_GET_WIDTH_FRACT(_w) (_w & ((1 << LV_FONT_WIDTH_FRACT_DIGIT) -1)) -#define LV_FONT_KERN_POSITIVE 0 -#define LV_FONT_KERN_NEGATIVE 1 - - /********************** * ADD BUILT IN FONTS **********************/ From 18d59bef0106c4b2ff0f80c9aaa1da3180eb51af Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Fri, 3 May 2019 17:03:37 +0200 Subject: [PATCH 12/29] add lv_font_dummy.h to comment on it --- src/lv_misc/lv_font_dummy.h | 224 ++++++++++++++++++++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 src/lv_misc/lv_font_dummy.h diff --git a/src/lv_misc/lv_font_dummy.h b/src/lv_misc/lv_font_dummy.h new file mode 100644 index 000000000..653d76ea7 --- /dev/null +++ b/src/lv_misc/lv_font_dummy.h @@ -0,0 +1,224 @@ +/** + * @file lv_font.h + * + */ + +#ifndef LV_FONT_H +#define LV_FONT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/********************* + * INCLUDES + *********************/ +#ifdef LV_CONF_INCLUDE_SIMPLE +#include "lv_conf.h" +#else +#include "../../../lv_conf.h" +#endif + +#include +#include +#include + +#include "lv_symbol_def.h" + +/********************* + * DEFINES + *********************/ +/*Number of fractional digits in the advanced width (`adv_w`) field of `lv_font_glyph_dsc_t`*/ +#define LV_FONT_WIDTH_FRACT_DIGIT 4 + +#define LV_FONT_KERN_POSITIVE 0 +#define LV_FONT_KERN_NEGATIVE 1 + +/********************** + * TYPEDEFS + **********************/ + +/*------------------ + * General types + *-----------------*/ + +/*One element of a kerning table*/ +typedef struct { + uint32_t next_unicode :23; + + uint32_t space :8; /*5 integer, 4 fractional*/ + uint32_t space_sign :1; /*0: space positive; 1: space negative*/ +}lv_font_kern_t; + +/*Describe the properties of a glyph*/ +typedef struct +{ + uint16_t adv_w; /*The glyph needs this space. Draw the next glyph after this width. 8 bit integer, 4 bit fractional */ + uint8_t box_w; /*Width of the glyph's bounding box*/ + uint8_t box_h; /*Height of the glyph's bounding box*/ + int8_t ofs_x; /*x offset of the bounding box*/ + int8_t ofs_y; /*y offset of the bounding box*/ + uint8_t bpp; /*Bit-per-pixel: 1, 2, 4, 8*/ + const lv_font_kern_t * kern_table; +}lv_font_glyph_dsc_t; + +/*Describe the properties of a font*/ +typedef struct _lv_font_struct +{ + uint32_t unicode_first; + uint32_t unicode_last; + + /*Get a glyph's descriptor from a font*/ + bool (*get_glyph_dsc)(const struct _lv_font_struct *, lv_font_glyph_dsc_t *, uint32_t letter); + + /*Get a glyph's bitmap from a font*/ + const uint8_t * (*get_glyph_bitmap)(const struct _lv_font_struct *, uint32_t); + + /*Pointer to the font in a font pack (must have the same line height)*/ + struct _lv_font_struct * next_page; + uint8_t size; /*The original size (height)*/ + uint8_t line_height; /*The real line height where any text fits*/ + uint8_t base_line; /*Base line measured from the top of the line_height*/ + void * dsc; /*Store implementation specific data here*/ +} lv_font_t; + + +/*--------------------------------------------- + * Types for LittlevGL's internal font format + *---------------------------------------------*/ + +/*Describe a glyph in internal font format */ +typedef struct +{ + uint32_t bitmap_index : 20; /* Start index of the bitmap. A font can be max 1 MB. */ + uint32_t adv_w :12; /*The glyph needs this space. Draw the next glyph after this width. 8 bit integer, 4 bit fractional */ + + uint8_t box_w; /*Width of the glyph's bounding box*/ + uint8_t box_h; /*Height of the glyph's bounding box*/ + int8_t ofs_x; /*x offset of the bounding box*/ + int8_t ofs_y; /*y offset of the bounding box*/ + + const lv_font_kern_t * kern_table; +}lv_font_glyph_dsc_built_in_t; + + +/*Describe store additional data for fonts */ +typedef struct { + const uint8_t * glyph_bitmap; + const lv_font_glyph_dsc_built_in_t * glyph_dsc; + const uint16_t * unicode_list; + uint16_t glyph_cnt; /*Number of glyphs in the font. */ + uint8_t bpp; /*Bit per pixel: 1, 2, 4 or 8*/ +}lv_font_dsc_built_in_t; + +/********************** + * GLOBAL PROTOTYPES + **********************/ + +/*---------------- + * General API + *---------------*/ + +/** + * Initialize the font module + */ +void lv_font_init(void); + +/** + * Add a font to an other to extend the character set. + * @param child the font to add + * @param parent this font will be extended. Using it later will contain the characters from `child` + */ +void lv_font_add(lv_font_t * child, lv_font_t * parent); + +/** + * Remove a font from a character set. + * @param child the font to remove + * @param parent remove `child` from here + */ +void lv_font_remove(lv_font_t * child, lv_font_t * parent); + +/** + * Return with the bitmap of a font. + * @param font_p pointer to a font + * @param letter an UNICODE character code + * @return pointer to the bitmap of the letter + */ +const uint8_t * lv_font_get_glyph_bitmap(const lv_font_t * font_p, uint32_t letter); + +/** + * Get the descriptor of a glyph + * @param font_p pointer to font + * @param dsc_out store the result descriptor here + * @param letter an UNICODE letter code + * @return true: descriptor is successfully loaded into `dsc_out`. + * false: the letter was not found, no data is loaded to `dsc_out` + */ +bool lv_font_get_glyph_dsc(const lv_font_t * font_p, lv_font_glyph_dsc_t * dsc_out, uint32_t letter); + +/** + * Get the width of a glyph with kerning + * @param font pointer to a font + * @param letter an UNICODE letter + * @param letter_next the next letter after `letter`. Used for kerning + * @return the width of the glyph + */ +uint8_t lv_font_get_glyph_width(const lv_font_t * font, uint32_t letter, uint32_t letter_next); + +/** + * Get the line height of a font. All characters fit into this height + * @param font_p pointer to a font + * @return the height of a font + */ +static inline uint8_t lv_font_get_line_height(const lv_font_t * font_p) +{ + return font_p->line_height; +} + +/*---------------------------------- + * LittlevGL's internal font format + *----------------------------------*/ + +/** + * Used as `get_glyph_bitmap` callback in LittelvGL's native font format if the font is uncompressed. + * @param font pointer to font + * @param unicode_letter an unicode letter which bitmap should be get + * @return pointer to the bitmap or NULL if not found + */ +const uint8_t * lv_font_get_glyph_bitmap_plain(const lv_font_t * font, uint32_t letter); + +/** + * Used as `get_glyph_dsc` callback in LittelvGL's native font format if the font is uncompressed. + * @param font_p pointer to font + * @param dsc_out store the result descriptor here + * @param letter an UNICODE letter code + * @return true: descriptor is successfully loaded into `dsc_out`. + * false: the letter was not found, no data is loaded to `dsc_out` + */ +bool lv_font_get_glyph_dsc_plain(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter); + +/********************** + * MACROS + **********************/ + +#define LV_FONT_DECLARE(font_name) extern lv_font_t font_name; + +#define LV_FONT_SET_WIDTH(_integer, _fract) ((_integer << LV_FONT_WIDTH_FRACT_DIGIT) + _fract) +#define LV_FONT_GET_WIDTH_INT(_w) (_w >> LV_FONT_WIDTH_FRACT_DIGIT) +#define LV_FONT_GET_WIDTH_FRACT(_w) (_w & ((1 << LV_FONT_WIDTH_FRACT_DIGIT) -1)) + +/********************** + * ADD BUILT IN FONTS + **********************/ +#include "../lv_fonts/lv_font_builtin.h" + +/*Declare the custom (user defined) fonts*/ +#ifdef LV_FONT_CUSTOM_DECLARE +LV_FONT_CUSTOM_DECLARE +#endif + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /*USE_FONT*/ From 7f30fb0058b0cd2dbbb83d3c42dea086893f0b9b Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Sat, 11 May 2019 07:58:37 +0200 Subject: [PATCH 13/29] font update --- src/lv_misc/lv_font.h | 28 +++++++++++++++++++++++++--- src/lv_misc/lv_font_dummy.h | 28 +++++++++++++++++++++++++--- 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index 653d76ea7..c2733e33d 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -101,14 +101,36 @@ typedef struct const lv_font_kern_t * kern_table; }lv_font_glyph_dsc_built_in_t; +typedef struct { + /* First Unicode character for this range */ + uint32_t range_start; + + /* Number of Unicode characters related to this range. + * Last Unicode character = range_start + range_length - 1*/ + uint16_t range_length; + + /* First glyph ID (array index of `glyph_dsc`) for this range */ + uint16_t glyph_id_start; + + /* NULL: the range is mapped continuously from `glyph_id_start` + * Else map the Unicode characters from `glyph_id_start` (relative to `range_start`)*/ + uint16_t * unicode_list; +}lv_font_cmap_built_in_t; /*Describe store additional data for fonts */ typedef struct { const uint8_t * glyph_bitmap; const lv_font_glyph_dsc_built_in_t * glyph_dsc; - const uint16_t * unicode_list; - uint16_t glyph_cnt; /*Number of glyphs in the font. */ - uint8_t bpp; /*Bit per pixel: 1, 2, 4 or 8*/ + + /* Map the glyphs to Unicode characters. + * Array of `lv_font_cmap_built_in_t` variables*/ + const lv_font_cmap_built_in_t * cmaps; + + /*Number of cmap tables*/ + uint8_t cmap_num; + + /*Bit per pixel: 1, 2, 4 or 8*/ + uint8_t bpp; }lv_font_dsc_built_in_t; /********************** diff --git a/src/lv_misc/lv_font_dummy.h b/src/lv_misc/lv_font_dummy.h index 653d76ea7..c2733e33d 100644 --- a/src/lv_misc/lv_font_dummy.h +++ b/src/lv_misc/lv_font_dummy.h @@ -101,14 +101,36 @@ typedef struct const lv_font_kern_t * kern_table; }lv_font_glyph_dsc_built_in_t; +typedef struct { + /* First Unicode character for this range */ + uint32_t range_start; + + /* Number of Unicode characters related to this range. + * Last Unicode character = range_start + range_length - 1*/ + uint16_t range_length; + + /* First glyph ID (array index of `glyph_dsc`) for this range */ + uint16_t glyph_id_start; + + /* NULL: the range is mapped continuously from `glyph_id_start` + * Else map the Unicode characters from `glyph_id_start` (relative to `range_start`)*/ + uint16_t * unicode_list; +}lv_font_cmap_built_in_t; /*Describe store additional data for fonts */ typedef struct { const uint8_t * glyph_bitmap; const lv_font_glyph_dsc_built_in_t * glyph_dsc; - const uint16_t * unicode_list; - uint16_t glyph_cnt; /*Number of glyphs in the font. */ - uint8_t bpp; /*Bit per pixel: 1, 2, 4 or 8*/ + + /* Map the glyphs to Unicode characters. + * Array of `lv_font_cmap_built_in_t` variables*/ + const lv_font_cmap_built_in_t * cmaps; + + /*Number of cmap tables*/ + uint8_t cmap_num; + + /*Bit per pixel: 1, 2, 4 or 8*/ + uint8_t bpp; }lv_font_dsc_built_in_t; /********************** From 077a645a92048c3042d1ae2447a9a09c28d5f692 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Sat, 18 May 2019 13:39:41 +0200 Subject: [PATCH 14/29] font: add kerning tables --- src/lv_misc/lv_font.h | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index c2733e33d..e2fd43a2c 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -42,14 +42,6 @@ extern "C" { * General types *-----------------*/ -/*One element of a kerning table*/ -typedef struct { - uint32_t next_unicode :23; - - uint32_t space :8; /*5 integer, 4 fractional*/ - uint32_t space_sign :1; /*0: space positive; 1: space negative*/ -}lv_font_kern_t; - /*Describe the properties of a glyph*/ typedef struct { @@ -59,7 +51,6 @@ typedef struct int8_t ofs_x; /*x offset of the bounding box*/ int8_t ofs_y; /*y offset of the bounding box*/ uint8_t bpp; /*Bit-per-pixel: 1, 2, 4, 8*/ - const lv_font_kern_t * kern_table; }lv_font_glyph_dsc_t; /*Describe the properties of a font*/ @@ -98,7 +89,6 @@ typedef struct int8_t ofs_x; /*x offset of the bounding box*/ int8_t ofs_y; /*y offset of the bounding box*/ - const lv_font_kern_t * kern_table; }lv_font_glyph_dsc_built_in_t; typedef struct { @@ -117,6 +107,21 @@ typedef struct { uint16_t * unicode_list; }lv_font_cmap_built_in_t; +typedef struct { + uint16_t * left_gylph_ids; + uint16_t * right_gylph_ids; + uint8_t * values; + uint16_t pair_num; +}lv_font_kern_pair_t; + +typedef struct { + uint8_t left_class_num; + uint8_t right_class_num; + uint8_t * class_pair_values; /*left_class_num * right_class_num value*/ + uint8_t * left_class_mapping; /*Map the glyph_ids to classes: index -> glyph_id -> class_id*/ + uint8_t * right_class_mapping; /*Map the glyph_ids to classes: index -> glyph_id -> class_id*/ +}lv_font_kern_classes_t; + /*Describe store additional data for fonts */ typedef struct { const uint8_t * glyph_bitmap; @@ -129,6 +134,12 @@ typedef struct { /*Number of cmap tables*/ uint8_t cmap_num; + /* Sotore kerning values. Only one oft hese pointer can have a valid values. + * to other should be `NULL` */ + const lv_font_kern_pair_t * kern_table; + const lv_font_kern_classes_t * kern_classes; + + /*Bit per pixel: 1, 2, 4 or 8*/ uint8_t bpp; }lv_font_dsc_built_in_t; From b6d24040bfbe38fa27f20c00afd742071f002abd Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Sun, 19 May 2019 10:51:20 +0200 Subject: [PATCH 15/29] font thinking --- src/lv_misc/lv_font.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index e2fd43a2c..ef992a08f 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -102,6 +102,23 @@ typedef struct { /* First glyph ID (array index of `glyph_dsc`) for this range */ uint16_t glyph_id_start; + /* Format 0 tiny + * glyph_id = glyph_id_start + (codepoint - range_start) */ + + /* Format 0 full + * glyph_id = glyph_id_start + glyph_id_list[codepoint - range_start] */ + + /* Sparse tiny + * glyph_id = glyph_id_start + search(unicode_list, codepoint - range_start) */ + + /* Sparse full + * glyph_id = glyph_id_start + glyph_id_list[search(unicode_list, codepoint - range_start)] */ + + uint16_t * unicode_list; + + + + /* NULL: the range is mapped continuously from `glyph_id_start` * Else map the Unicode characters from `glyph_id_start` (relative to `range_start`)*/ uint16_t * unicode_list; From e8605a52ed1b0c9cb21ff8761dcbbab72ec4faee Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Mon, 20 May 2019 06:40:00 +0200 Subject: [PATCH 16/29] font: update fmt_txt --- src/lv_misc/lv_font.c | 130 ------------ src/lv_misc/lv_font.h | 114 ---------- src/lv_misc/lv_font_dummy.h | 246 ---------------------- src/lv_misc/lv_font_fmt/lv_font_fmt_txt.c | 141 +++++++++++++ src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h | 193 +++++++++++++++++ 5 files changed, 334 insertions(+), 490 deletions(-) delete mode 100644 src/lv_misc/lv_font_dummy.h create mode 100644 src/lv_misc/lv_font_fmt/lv_font_fmt_txt.c create mode 100644 src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h diff --git a/src/lv_misc/lv_font.c b/src/lv_misc/lv_font.c index 9de3fa9ba..1b0997500 100644 --- a/src/lv_misc/lv_font.c +++ b/src/lv_misc/lv_font.c @@ -123,136 +123,6 @@ bool lv_font_get_glyph_dsc(const lv_font_t * font_p, lv_font_glyph_dsc_t * dsc_o return false; } -/** - * Get the width of a glyph with kerning - * @param font pointer to a font - * @param letter an UNICODE letter - * @param letter_next the next letter after `letter`. Used for kerning - * @return the width of the glyph - */ -uint8_t lv_font_get_glyph_width(const lv_font_t * font, uint32_t letter, uint32_t letter_next) -{ - lv_font_glyph_dsc_t dsc; - bool ret = lv_font_get_glyph_dsc(font, &dsc, letter); - if(ret == false) return 0; - - int32_t w = dsc.adv_w; - - /*Apply kerning is required*/ - if(dsc.kern_table && letter_next != 0) { - uint32_t i; - for(i = 0; dsc.kern_table[i].next_unicode != 0; i++) { - if((uint32_t)dsc.kern_table[i].next_unicode == letter_next) { - if(dsc.kern_table[i].space_sign == LV_FONT_KERN_POSITIVE) { - w += dsc.kern_table[i].space; - } else { - w -= dsc.kern_table[i].space; - } - break; - } - } - } - - if(w < 0) w = 0; - - return w <= 0 ? 0 : LV_FONT_GET_WIDTH_INT(w); -} - -/** - * Used as `get_glyph_bitmap` callback in LittelvGL's native font format if the font is uncompressed. - * @param font pointer to font - * @param unicode_letter an unicode letter which bitmap should be get - * @return pointer to the bitmap or NULL if not found - */ -const uint8_t * lv_font_get_glyph_bitmap_plain(const lv_font_t * font, uint32_t unicode_letter) -{ - /*Check the range*/ - if(unicode_letter < font->unicode_first || unicode_letter > font->unicode_last) return NULL; - - lv_font_dsc_built_in_t * font_dsc = (lv_font_dsc_built_in_t *) font->dsc; - - /*No Unicode list -> Continuous font*/ - if(font_dsc->unicode_list == NULL) { - uint32_t index = (unicode_letter - font->unicode_first); - return &font_dsc->glyph_bitmap[font_dsc->glyph_dsc[index].bitmap_index]; - } - /*Has Unicode list -> Sparse font */ - else { - uint16_t * pUnicode; - pUnicode = lv_utils_bsearch(&unicode_letter, font_dsc->unicode_list, font_dsc->glyph_cnt, - sizeof(font_dsc->unicode_list[0]), lv_font_codeCompare); - if(pUnicode != NULL) { - uint32_t idx = (uint32_t)(pUnicode - font_dsc->unicode_list); - return &font_dsc->glyph_bitmap[font_dsc->glyph_dsc[idx].bitmap_index]; - } - } - - /*If not returned earlier then the letter is not found in this font*/ - return NULL; -} - -/** - * Used as `get_glyph_dsc` callback in LittelvGL's native font format if the font is uncompressed. - * @param font_p pointer to font - * @param dsc_out store the result descriptor here - * @param letter an UNICODE letter code - * @return true: descriptor is successfully loaded into `dsc_out`. - * false: the letter was not found, no data is loaded to `dsc_out` - */ -bool lv_font_get_glyph_dsc_plain(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter) -{ - /*Check the range*/ - if(unicode_letter < font->unicode_first || unicode_letter > font->unicode_last) return NULL; - - lv_font_dsc_built_in_t * font_dsc = (lv_font_dsc_built_in_t *) font->dsc; - int32_t index = -1; - /*No Unicode list -> Continuous font*/ - if(font_dsc->unicode_list == NULL) { - index = (unicode_letter - font->unicode_first); - } - /*Has Unicode list -> Sparse font */ - else { - uint16_t * pUnicode; - pUnicode = lv_utils_bsearch(&unicode_letter, font_dsc->unicode_list, font_dsc->glyph_cnt, - sizeof(font_dsc->unicode_list[0]), lv_font_codeCompare); - - if(pUnicode != NULL) { - index = (uint16_t)(pUnicode - font_dsc->unicode_list); - } - } - - if(index > 0) { - dsc_out->adv_w = font_dsc->glyph_dsc[index].adv_w; - dsc_out->box_h = font_dsc->glyph_dsc[index].box_h; - dsc_out->box_w = font_dsc->glyph_dsc[index].box_w; - dsc_out->ofs_x = font_dsc->glyph_dsc[index].ofs_x; - dsc_out->ofs_y = font_dsc->glyph_dsc[index].ofs_y; - dsc_out->kern_table = font_dsc->glyph_dsc[index].kern_table; - dsc_out->bpp = font_dsc->bpp; - return true; - } else { - return false; - } -} - /********************** * STATIC FUNCTIONS **********************/ - -/** Code Comparator. - * - * Compares the value of both input arguments. - * - * @param[in] pRef Pointer to the reference. - * @param[in] pElement Pointer to the element to compare. - * - * @return Result of comparison. - * @retval < 0 Reference is greater than element. - * @retval = 0 Reference is equal to element. - * @retval > 0 Reference is less than element. - * - */ -static int32_t lv_font_codeCompare(const void * pRef, const void * pElement) -{ - return (*(uint16_t *)pRef) - (*(uint16_t *)pElement); -} diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index ef992a08f..43a137c63 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -73,102 +73,10 @@ typedef struct _lv_font_struct void * dsc; /*Store implementation specific data here*/ } lv_font_t; - -/*--------------------------------------------- - * Types for LittlevGL's internal font format - *---------------------------------------------*/ - -/*Describe a glyph in internal font format */ -typedef struct -{ - uint32_t bitmap_index : 20; /* Start index of the bitmap. A font can be max 1 MB. */ - uint32_t adv_w :12; /*The glyph needs this space. Draw the next glyph after this width. 8 bit integer, 4 bit fractional */ - - uint8_t box_w; /*Width of the glyph's bounding box*/ - uint8_t box_h; /*Height of the glyph's bounding box*/ - int8_t ofs_x; /*x offset of the bounding box*/ - int8_t ofs_y; /*y offset of the bounding box*/ - -}lv_font_glyph_dsc_built_in_t; - -typedef struct { - /* First Unicode character for this range */ - uint32_t range_start; - - /* Number of Unicode characters related to this range. - * Last Unicode character = range_start + range_length - 1*/ - uint16_t range_length; - - /* First glyph ID (array index of `glyph_dsc`) for this range */ - uint16_t glyph_id_start; - - /* Format 0 tiny - * glyph_id = glyph_id_start + (codepoint - range_start) */ - - /* Format 0 full - * glyph_id = glyph_id_start + glyph_id_list[codepoint - range_start] */ - - /* Sparse tiny - * glyph_id = glyph_id_start + search(unicode_list, codepoint - range_start) */ - - /* Sparse full - * glyph_id = glyph_id_start + glyph_id_list[search(unicode_list, codepoint - range_start)] */ - - uint16_t * unicode_list; - - - - - /* NULL: the range is mapped continuously from `glyph_id_start` - * Else map the Unicode characters from `glyph_id_start` (relative to `range_start`)*/ - uint16_t * unicode_list; -}lv_font_cmap_built_in_t; - -typedef struct { - uint16_t * left_gylph_ids; - uint16_t * right_gylph_ids; - uint8_t * values; - uint16_t pair_num; -}lv_font_kern_pair_t; - -typedef struct { - uint8_t left_class_num; - uint8_t right_class_num; - uint8_t * class_pair_values; /*left_class_num * right_class_num value*/ - uint8_t * left_class_mapping; /*Map the glyph_ids to classes: index -> glyph_id -> class_id*/ - uint8_t * right_class_mapping; /*Map the glyph_ids to classes: index -> glyph_id -> class_id*/ -}lv_font_kern_classes_t; - -/*Describe store additional data for fonts */ -typedef struct { - const uint8_t * glyph_bitmap; - const lv_font_glyph_dsc_built_in_t * glyph_dsc; - - /* Map the glyphs to Unicode characters. - * Array of `lv_font_cmap_built_in_t` variables*/ - const lv_font_cmap_built_in_t * cmaps; - - /*Number of cmap tables*/ - uint8_t cmap_num; - - /* Sotore kerning values. Only one oft hese pointer can have a valid values. - * to other should be `NULL` */ - const lv_font_kern_pair_t * kern_table; - const lv_font_kern_classes_t * kern_classes; - - - /*Bit per pixel: 1, 2, 4 or 8*/ - uint8_t bpp; -}lv_font_dsc_built_in_t; - /********************** * GLOBAL PROTOTYPES **********************/ -/*---------------- - * General API - *---------------*/ - /** * Initialize the font module */ @@ -225,28 +133,6 @@ static inline uint8_t lv_font_get_line_height(const lv_font_t * font_p) return font_p->line_height; } -/*---------------------------------- - * LittlevGL's internal font format - *----------------------------------*/ - -/** - * Used as `get_glyph_bitmap` callback in LittelvGL's native font format if the font is uncompressed. - * @param font pointer to font - * @param unicode_letter an unicode letter which bitmap should be get - * @return pointer to the bitmap or NULL if not found - */ -const uint8_t * lv_font_get_glyph_bitmap_plain(const lv_font_t * font, uint32_t letter); - -/** - * Used as `get_glyph_dsc` callback in LittelvGL's native font format if the font is uncompressed. - * @param font_p pointer to font - * @param dsc_out store the result descriptor here - * @param letter an UNICODE letter code - * @return true: descriptor is successfully loaded into `dsc_out`. - * false: the letter was not found, no data is loaded to `dsc_out` - */ -bool lv_font_get_glyph_dsc_plain(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter); - /********************** * MACROS **********************/ diff --git a/src/lv_misc/lv_font_dummy.h b/src/lv_misc/lv_font_dummy.h deleted file mode 100644 index c2733e33d..000000000 --- a/src/lv_misc/lv_font_dummy.h +++ /dev/null @@ -1,246 +0,0 @@ -/** - * @file lv_font.h - * - */ - -#ifndef LV_FONT_H -#define LV_FONT_H - -#ifdef __cplusplus -extern "C" { -#endif - -/********************* - * INCLUDES - *********************/ -#ifdef LV_CONF_INCLUDE_SIMPLE -#include "lv_conf.h" -#else -#include "../../../lv_conf.h" -#endif - -#include -#include -#include - -#include "lv_symbol_def.h" - -/********************* - * DEFINES - *********************/ -/*Number of fractional digits in the advanced width (`adv_w`) field of `lv_font_glyph_dsc_t`*/ -#define LV_FONT_WIDTH_FRACT_DIGIT 4 - -#define LV_FONT_KERN_POSITIVE 0 -#define LV_FONT_KERN_NEGATIVE 1 - -/********************** - * TYPEDEFS - **********************/ - -/*------------------ - * General types - *-----------------*/ - -/*One element of a kerning table*/ -typedef struct { - uint32_t next_unicode :23; - - uint32_t space :8; /*5 integer, 4 fractional*/ - uint32_t space_sign :1; /*0: space positive; 1: space negative*/ -}lv_font_kern_t; - -/*Describe the properties of a glyph*/ -typedef struct -{ - uint16_t adv_w; /*The glyph needs this space. Draw the next glyph after this width. 8 bit integer, 4 bit fractional */ - uint8_t box_w; /*Width of the glyph's bounding box*/ - uint8_t box_h; /*Height of the glyph's bounding box*/ - int8_t ofs_x; /*x offset of the bounding box*/ - int8_t ofs_y; /*y offset of the bounding box*/ - uint8_t bpp; /*Bit-per-pixel: 1, 2, 4, 8*/ - const lv_font_kern_t * kern_table; -}lv_font_glyph_dsc_t; - -/*Describe the properties of a font*/ -typedef struct _lv_font_struct -{ - uint32_t unicode_first; - uint32_t unicode_last; - - /*Get a glyph's descriptor from a font*/ - bool (*get_glyph_dsc)(const struct _lv_font_struct *, lv_font_glyph_dsc_t *, uint32_t letter); - - /*Get a glyph's bitmap from a font*/ - const uint8_t * (*get_glyph_bitmap)(const struct _lv_font_struct *, uint32_t); - - /*Pointer to the font in a font pack (must have the same line height)*/ - struct _lv_font_struct * next_page; - uint8_t size; /*The original size (height)*/ - uint8_t line_height; /*The real line height where any text fits*/ - uint8_t base_line; /*Base line measured from the top of the line_height*/ - void * dsc; /*Store implementation specific data here*/ -} lv_font_t; - - -/*--------------------------------------------- - * Types for LittlevGL's internal font format - *---------------------------------------------*/ - -/*Describe a glyph in internal font format */ -typedef struct -{ - uint32_t bitmap_index : 20; /* Start index of the bitmap. A font can be max 1 MB. */ - uint32_t adv_w :12; /*The glyph needs this space. Draw the next glyph after this width. 8 bit integer, 4 bit fractional */ - - uint8_t box_w; /*Width of the glyph's bounding box*/ - uint8_t box_h; /*Height of the glyph's bounding box*/ - int8_t ofs_x; /*x offset of the bounding box*/ - int8_t ofs_y; /*y offset of the bounding box*/ - - const lv_font_kern_t * kern_table; -}lv_font_glyph_dsc_built_in_t; - -typedef struct { - /* First Unicode character for this range */ - uint32_t range_start; - - /* Number of Unicode characters related to this range. - * Last Unicode character = range_start + range_length - 1*/ - uint16_t range_length; - - /* First glyph ID (array index of `glyph_dsc`) for this range */ - uint16_t glyph_id_start; - - /* NULL: the range is mapped continuously from `glyph_id_start` - * Else map the Unicode characters from `glyph_id_start` (relative to `range_start`)*/ - uint16_t * unicode_list; -}lv_font_cmap_built_in_t; - -/*Describe store additional data for fonts */ -typedef struct { - const uint8_t * glyph_bitmap; - const lv_font_glyph_dsc_built_in_t * glyph_dsc; - - /* Map the glyphs to Unicode characters. - * Array of `lv_font_cmap_built_in_t` variables*/ - const lv_font_cmap_built_in_t * cmaps; - - /*Number of cmap tables*/ - uint8_t cmap_num; - - /*Bit per pixel: 1, 2, 4 or 8*/ - uint8_t bpp; -}lv_font_dsc_built_in_t; - -/********************** - * GLOBAL PROTOTYPES - **********************/ - -/*---------------- - * General API - *---------------*/ - -/** - * Initialize the font module - */ -void lv_font_init(void); - -/** - * Add a font to an other to extend the character set. - * @param child the font to add - * @param parent this font will be extended. Using it later will contain the characters from `child` - */ -void lv_font_add(lv_font_t * child, lv_font_t * parent); - -/** - * Remove a font from a character set. - * @param child the font to remove - * @param parent remove `child` from here - */ -void lv_font_remove(lv_font_t * child, lv_font_t * parent); - -/** - * Return with the bitmap of a font. - * @param font_p pointer to a font - * @param letter an UNICODE character code - * @return pointer to the bitmap of the letter - */ -const uint8_t * lv_font_get_glyph_bitmap(const lv_font_t * font_p, uint32_t letter); - -/** - * Get the descriptor of a glyph - * @param font_p pointer to font - * @param dsc_out store the result descriptor here - * @param letter an UNICODE letter code - * @return true: descriptor is successfully loaded into `dsc_out`. - * false: the letter was not found, no data is loaded to `dsc_out` - */ -bool lv_font_get_glyph_dsc(const lv_font_t * font_p, lv_font_glyph_dsc_t * dsc_out, uint32_t letter); - -/** - * Get the width of a glyph with kerning - * @param font pointer to a font - * @param letter an UNICODE letter - * @param letter_next the next letter after `letter`. Used for kerning - * @return the width of the glyph - */ -uint8_t lv_font_get_glyph_width(const lv_font_t * font, uint32_t letter, uint32_t letter_next); - -/** - * Get the line height of a font. All characters fit into this height - * @param font_p pointer to a font - * @return the height of a font - */ -static inline uint8_t lv_font_get_line_height(const lv_font_t * font_p) -{ - return font_p->line_height; -} - -/*---------------------------------- - * LittlevGL's internal font format - *----------------------------------*/ - -/** - * Used as `get_glyph_bitmap` callback in LittelvGL's native font format if the font is uncompressed. - * @param font pointer to font - * @param unicode_letter an unicode letter which bitmap should be get - * @return pointer to the bitmap or NULL if not found - */ -const uint8_t * lv_font_get_glyph_bitmap_plain(const lv_font_t * font, uint32_t letter); - -/** - * Used as `get_glyph_dsc` callback in LittelvGL's native font format if the font is uncompressed. - * @param font_p pointer to font - * @param dsc_out store the result descriptor here - * @param letter an UNICODE letter code - * @return true: descriptor is successfully loaded into `dsc_out`. - * false: the letter was not found, no data is loaded to `dsc_out` - */ -bool lv_font_get_glyph_dsc_plain(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter); - -/********************** - * MACROS - **********************/ - -#define LV_FONT_DECLARE(font_name) extern lv_font_t font_name; - -#define LV_FONT_SET_WIDTH(_integer, _fract) ((_integer << LV_FONT_WIDTH_FRACT_DIGIT) + _fract) -#define LV_FONT_GET_WIDTH_INT(_w) (_w >> LV_FONT_WIDTH_FRACT_DIGIT) -#define LV_FONT_GET_WIDTH_FRACT(_w) (_w & ((1 << LV_FONT_WIDTH_FRACT_DIGIT) -1)) - -/********************** - * ADD BUILT IN FONTS - **********************/ -#include "../lv_fonts/lv_font_builtin.h" - -/*Declare the custom (user defined) fonts*/ -#ifdef LV_FONT_CUSTOM_DECLARE -LV_FONT_CUSTOM_DECLARE -#endif - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /*USE_FONT*/ diff --git a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.c b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.c new file mode 100644 index 000000000..a1266c457 --- /dev/null +++ b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.c @@ -0,0 +1,141 @@ +/** + * @file lv_font.c + * + */ + +/********************* + * INCLUDES + *********************/ + +#include "lv_font.h" +#include "lv_log.h" +#include "lv_utils.h" + +/********************* + * DEFINES + *********************/ + +/********************** + * TYPEDEFS + **********************/ + +/********************** + * STATIC PROTOTYPES + **********************/ + +static int32_t lv_font_codeCompare(const void * pRef, const void * pElement); + +/********************** + * STATIC VARIABLES + **********************/ + +/********************** + * GLOBAL PROTOTYPES + **********************/ + +/********************** + * MACROS + **********************/ + +/********************** + * GLOBAL FUNCTIONS + **********************/ + +/** + * Used as `get_glyph_bitmap` callback in LittelvGL's native font format if the font is uncompressed. + * @param font pointer to font + * @param unicode_letter an unicode letter which bitmap should be get + * @return pointer to the bitmap or NULL if not found + */ +const uint8_t * lv_font_get_bitmap_format_text_plain(const lv_font_t * font, uint32_t unicode_letter) +{ + /*Check the range*/ + if(unicode_letter < font->unicode_first || unicode_letter > font->unicode_last) return NULL; + + lv_font_dsc_built_in_t * font_dsc = (lv_font_dsc_built_in_t *) font->dsc; + + /*No Unicode list -> Continuous font*/ + if(font_dsc->unicode_list == NULL) { + uint32_t index = (unicode_letter - font->unicode_first); + return &font_dsc->glyph_bitmap[font_dsc->glyph_dsc[index].bitmap_index]; + } + /*Has Unicode list -> Sparse font */ + else { + uint16_t * pUnicode; + pUnicode = lv_utils_bsearch(&unicode_letter, font_dsc->unicode_list, font_dsc->glyph_cnt, + sizeof(font_dsc->unicode_list[0]), lv_font_codeCompare); + if(pUnicode != NULL) { + uint32_t idx = (uint32_t)(pUnicode - font_dsc->unicode_list); + return &font_dsc->glyph_bitmap[font_dsc->glyph_dsc[idx].bitmap_index]; + } + } + + /*If not returned earlier then the letter is not found in this font*/ + return NULL; +} + +/** + * Used as `get_glyph_dsc` callback in LittelvGL's native font format if the font is uncompressed. + * @param font_p pointer to font + * @param dsc_out store the result descriptor here + * @param letter an UNICODE letter code + * @return true: descriptor is successfully loaded into `dsc_out`. + * false: the letter was not found, no data is loaded to `dsc_out` + */ +bool lv_font_get_glyph_dsc_format_text_plain(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter) +{ + /*Check the range*/ + if(unicode_letter < font->unicode_first || unicode_letter > font->unicode_last) return NULL; + + lv_font_dsc_built_in_t * font_dsc = (lv_font_dsc_built_in_t *) font->dsc; + int32_t index = -1; + /*No Unicode list -> Continuous font*/ + if(font_dsc->unicode_list == NULL) { + index = (unicode_letter - font->unicode_first); + } + /*Has Unicode list -> Sparse font */ + else { + uint16_t * pUnicode; + pUnicode = lv_utils_bsearch(&unicode_letter, font_dsc->unicode_list, font_dsc->glyph_cnt, + sizeof(font_dsc->unicode_list[0]), lv_font_codeCompare); + + if(pUnicode != NULL) { + index = (uint16_t)(pUnicode - font_dsc->unicode_list); + } + } + + if(index > 0) { + dsc_out->adv_w = font_dsc->glyph_dsc[index].adv_w; + dsc_out->box_h = font_dsc->glyph_dsc[index].box_h; + dsc_out->box_w = font_dsc->glyph_dsc[index].box_w; + dsc_out->ofs_x = font_dsc->glyph_dsc[index].ofs_x; + dsc_out->ofs_y = font_dsc->glyph_dsc[index].ofs_y; + dsc_out->kern_table = font_dsc->glyph_dsc[index].kern_table; + dsc_out->bpp = font_dsc->bpp; + return true; + } else { + return false; + } +} + +/********************** + * STATIC FUNCTIONS + **********************/ + +/** Code Comparator. + * + * Compares the value of both input arguments. + * + * @param[in] pRef Pointer to the reference. + * @param[in] pElement Pointer to the element to compare. + * + * @return Result of comparison. + * @retval < 0 Reference is greater than element. + * @retval = 0 Reference is equal to element. + * @retval > 0 Reference is less than element. + * + */ +static int32_t lv_font_codeCompare(const void * pRef, const void * pElement) +{ + return (*(uint16_t *)pRef) - (*(uint16_t *)pElement); +} diff --git a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h new file mode 100644 index 000000000..0c3809f7d --- /dev/null +++ b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h @@ -0,0 +1,193 @@ +/** + * @file lv_font.h + * + */ + +#ifndef LV_FONT_H +#define LV_FONT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/********************* + * INCLUDES + *********************/ +#ifdef LV_CONF_INCLUDE_SIMPLE +#include "lv_conf.h" +#else +#include "../../../lv_conf.h" +#endif + +#include +#include +#include + +#include "../lv_font.h" + +/********************* + * DEFINES + *********************/ + +/********************** + * TYPEDEFS + **********************/ + +/*Describe a glyph*/ +typedef struct +{ + uint32_t bitmap_index : 20; /* Start index of the bitmap. A font can be max 1 MB. */ + uint32_t adv_w :12; /*The glyph needs this space. Draw the next glyph after this width. 8.4 format. */ + + uint8_t box_w; /*Width of the glyph's bounding box*/ + uint8_t box_h; /*Height of the glyph's bounding box*/ + int8_t ofs_x; /*x offset of the bounding box*/ + uint8_t ofs_y; /*y offset of the bounding box. Measured from the top of the line*/ +}lv_font_glyph_dsc_fmt_txt_t; + +/* Map codepoints to a `glyph_dsc`s + * Several formats are supported to optimize memory usage + * See https://github.com/littlevgl/lv_font_conv/blob/master/doc/font_spec.md + */ +typedef struct { + /* First Unicode character for this range */ + uint32_t range_start; + + /* Number of Unicode characters related to this range. + * Last Unicode character = range_start + range_length - 1*/ + uint16_t range_length; + + /* First glyph ID (array index of `glyph_dsc`) for this range */ + uint16_t glyph_id_start; + + /* + According the specification there are 4 formats: + https://github.com/littlevgl/lv_font_conv/blob/master/doc/font_spec.md + + For simplicity introduce "relative code point": + rcp = codepoint - range_start + + and a search function: + search a "value" in an "array" and returns the index of "value". + + Format 0 tiny + unicode_list == NULL && glyph_id_list == NULL + glyph_id = glyph_id_start + rcp + + Format 0 full + unicode_list == NULL && glyph_id_list != NULL + glyph_id = glyph_id_start + glyph_id_list[rcp] + + Sparse tiny + unicode_list != NULL && glyph_id_list == NULL + glyph_id = glyph_id_start + search(unicode_list, rcp) + + Sparse full + unicode_list != NULL && glyph_id_list != NULL + glyph_id = glyph_id_start + glyph_id_list[search(unicode_list, rcp)] + */ + + uint16_t * unicode_list; + + /* if unicode_list == NULL uint8_t * + * else uint16_t * + */ + const void * glyph_id_list; +}lv_font_cmap_fmt_txt_t; + +/*A simple mapping of kern values from pairs*/ +typedef struct { + /*To get a kern value of two code points: + 1. Get the `glyph_id_left` and `glyph_id_right` from `lv_font_cmap_built_in_t + 2 for(i = 0; i < pair_cnt; i++) + if(left_gylph_ids[i] == glyph_id_left && + right_gylph_ids[i] == glyph_id_right) + return values[i]; + */ + uint16_t * left_gylph_ids; + uint16_t * right_gylph_ids; + uint8_t * values; + uint16_t pair_cnt; +}lv_font_kern_pair_fmt_txt_t; + +/*More complex but more optimal class based kern value storage*/ +typedef struct { + /*To get a kern value of two code points: + 1. Get the `glyph_id_left` and `glyph_id_right` from `lv_font_cmap_built_in_t + 2 Get the class of the left and right glyphs as `left_class` and `right_class` + for(i = 0; i < left_class_num; i++) + if(left_class_mapping[i] == glyph_id_left) + return i; + 3. value = class_pair_values[(left_class-1)*right_class_cnt + (righ_class-1)] + */ + + uint8_t * class_pair_values; /*left_class_num * right_class_num value*/ + uint8_t * left_class_mapping; /*Map the glyph_ids to classes: index -> glyph_id -> class_id*/ + uint8_t * right_class_mapping; /*Map the glyph_ids to classes: index -> glyph_id -> class_id*/ + uint8_t left_class_cnt; + uint8_t right_class_cnt; +}lv_font_kern_classes_fmt_txt_t; + +/*Describe store additional data for fonts */ +typedef struct { + /*The bitmaps os all glyphs*/ + const uint8_t * glyph_bitmap; + + /*Describe the glyphs*/ + const lv_font_glyph_dsc_fmt_txt_t * glyph_dsc; + + /* Map the glyphs to Unicode characters. + * Array of `lv_font_cmap_fmt_txt_t` variables*/ + const lv_font_cmap_fmt_txt_t * cmaps; + + /* Sotore kerning values. + * Can be `lv_font_kern_pair_fmt_txt_t * or `lv_font_kern_classes_fmt_txt_t *` + * depending on `kern_classes` + * */ + const void * kern_dsc; + + /*Number of cmap tables*/ + uint16_t cmap_num :12; + + /*Bit per pixel: 1, 2, 4 or 8*/ + uint16_t bpp :3; + + /*Type of `kern_dsc`*/ + uint16_t kern_classes :1; +}lv_font_dsc_fmt_txt_t; + +/********************** + * GLOBAL PROTOTYPES + **********************/ + +/** + * Used as `get_glyph_bitmap` callback in LittelvGL's native font format if the font is uncompressed. + * @param font pointer to font + * @param unicode_letter an unicode letter which bitmap should be get + * @return pointer to the bitmap or NULL if not found + */ +const uint8_t * lv_font_get_bitmap_format_text_plain(const lv_font_t * font, uint32_t letter); + +/** + * Used as `get_glyph_dsc` callback in LittelvGL's native font format if the font is uncompressed. + * @param font_p pointer to font + * @param dsc_out store the result descriptor here + * @param letter an UNICODE letter code + * @return true: descriptor is successfully loaded into `dsc_out`. + * false: the letter was not found, no data is loaded to `dsc_out` + */ +bool lv_font_get_glyph_dsc_format_text_plain(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter); + +/********************** + * MACROS + **********************/ + +/********************** + * ADD BUILT IN FONTS + **********************/ + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /*USE_FONT*/ From 225c2f727c212a32586b59b546314006d592b00f Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Fri, 24 May 2019 06:24:31 +0200 Subject: [PATCH 17/29] improve font template --- src/lv_fonts/lv_font_dejavu_20.c | 116 ++++++++++++++++------ src/lv_misc/lv_font.h | 2 - src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h | 20 ++-- 3 files changed, 95 insertions(+), 43 deletions(-) diff --git a/src/lv_fonts/lv_font_dejavu_20.c b/src/lv_fonts/lv_font_dejavu_20.c index c7a77ca49..a2e61b57e 100644 --- a/src/lv_fonts/lv_font_dejavu_20.c +++ b/src/lv_fonts/lv_font_dejavu_20.c @@ -1,5 +1,5 @@ -#include "../lv_misc/lv_font.h" +#include "../lv_misc/lv_font_fmt/lv_font_fmt_txt.h" #if LV_USE_FONT_DEJAVU_20 != 0 /*Can be enabled in lv_conf.h*/ @@ -8,7 +8,7 @@ ***********************************************************************************/ /*Store the image of the letters (glyph)*/ -static const uint8_t lv_font_dejavu_20_glyph_bitmap[] = { +static const uint8_t gylph_bitmap[] = { /*Unicode: U+0020 ( ) , Width: 6 */ /*Unicode: U+0031 (1) , Width: 8 */ @@ -81,45 +81,99 @@ static const uint8_t lv_font_dejavu_20_glyph_bitmap[] = { /*4 rows*/ }; - -static const lv_font_kern_t kern_0031[] = { - {.next_unicode = 0x0033, .space = LV_FONT_SET_WIDTH(8, 0), .space_sign = LV_FONT_KERN_POSITIVE}, - {.next_unicode = 0x0000} /*Trailing*/ +static uint16_t kern_left_gylph_ids[] = +{ + 1, 2, 3 }; +static uint16_t kern_right_gylph_ids[] = +{ + 1, 2, 3 +}; +static uint8_t kern_pair_values[] = +{ + 15, 52, 73 +}; + +static lv_font_kern_pair_fmt_txt_t kern_pairs = +{ + .left_gylph_ids = kern_left_gylph_ids, + .right_gylph_ids = kern_right_gylph_ids, + .values = kern_pair_values, + .pair_cnt = 3, +}; + +static uint8_t kern_left_class_mapping[] = +{ + 1, 2, 1, 1, 1, 1, 1, 1 +}; + +static uint8_t kern_right_class_mapping[] = +{ + 1, 2, 3, 2, 2, 3, 3, 1 +}; + +static uint8_t kern_class_values = +{ + 32, 33, 22, 11, 55, 33, 22, 44 +}; + + +static lv_font_kern_classes_fmt_txt_t kern_classes = +{ + .class_pair_values = kern_class_values, + .left_class_mapping = kern_left_class_mapping, + .right_class_mapping = kern_right_class_mapping, + .left_class_cnt = 2, + .right_class_cnt = 3, +}; + + +static uint16_t uniocde_list_1 = {0x234, 0x295, 0x456}; +static uint16_t glyph_id_ofs_list_1 = {232, 545, 1466}; + +static uint8_t glyph_id_ofs_list_3 = {32, 45, 66}; + + /*Store the glyph descriptions*/ -static const lv_font_glyph_dsc_built_in_t lv_font_dejavu_20_glyph_dsc[] = { - {.adv_w = LV_FONT_SET_WIDTH(6, 0), .box_w = 6, .box_h = 0, .ofs_x = 0, .ofs_y = 0, .bitmap_index = 0, }, /*Unicode: U+0020 ( )*/ - {.adv_w = LV_FONT_SET_WIDTH(8, 0), .box_w = 8, .box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 0, .kern_table = kern_0031}, /*Unicode: U+0031 (1)*/ - {.adv_w = LV_FONT_SET_WIDTH(9, 0), .box_w = 9, .box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 13}, /*Unicode: U+0033 (3)*/ - {.adv_w = LV_FONT_SET_WIDTH(12, 0), .box_w = 12,.box_h = 13,.ofs_x = 0, .ofs_y = 3, .bitmap_index = 39}, /*Unicode: U+0041 (A)*/ - {.adv_w = LV_FONT_SET_WIDTH(8, 0), .box_w = 8, .box_h = 10,.ofs_x = 0, .ofs_y = 6, .bitmap_index = 65}, /*Unicode: U+0061 (a)*/ +static const lv_font_cmap_fmt_txt_t cmaps[] = { + { .range_start = 0x280, .range_length = 124, .glyph_id_start = 223, .unicode_list = uniocde_list_1, .glyph_id_ofs_list = glyph_id_ofs_list_1}, + { .range_start = 0x20, .range_length = 112, .glyph_id_start = 456, .unicode_list = NULL, .glyph_id_ofs_list = NULL}, + { .range_start = 0x560, .range_length = 7654, .glyph_id_start = 756, .unicode_list = NULL, .glyph_id_ofs_list = glyph_id_ofs_list_3}, + }; -static const uint16_t lv_font_dejavu_20_unicode_list[] = { - 32, /*Unicode: U+0020 ( )*/ - 49, /*Unicode: U+0031 (1)*/ - 51, /*Unicode: U+0033 (3)*/ - 65, /*Unicode: U+0041 (A)*/ - 97, /*Unicode: U+0061 (a)*/ +static lv_font_glyph_dsc_fmt_txt_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 123, .box_h = 13, .box_w = 9, .ofs_x = 2, .ofs_y = 5}, + {.bitmap_index = 32, .adv_w = 234, .box_h = 12, .box_w = 7, .ofs_x = 1, .ofs_y = 3}, + {.bitmap_index = 55, .adv_w = 98, .box_h = 11, .box_w = 8, .ofs_x = 0, .ofs_y = 4}, }; -static lv_font_dsc_built_in_t lv_font_dejavu_20_dsc = { - .glyph_cnt = 5, /*Number of glyphs in the font*/ - .glyph_bitmap = lv_font_dejavu_20_glyph_bitmap, /*Bitmap of glyphs*/ - .glyph_dsc = lv_font_dejavu_20_glyph_dsc, /*Description of glyphs*/ - .unicode_list = lv_font_dejavu_20_unicode_list, /*Every character in the font from 'unicode_first' to 'unicode_last'*/ - .bpp = 1, /*Bit per pixel*/ +static lv_font_dsc_fmt_txt_t font_dsc = { + .glyph_bitmap = gylph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .cmap_num = 3, + .bpp = 4, + + .kern_dsc = kern_classes, + .kern_classes = 1, + /*or*/ + .kern_dsc = kern_pairs, + .kern_classes = 0, + + }; + lv_font_t lv_font_dejavu_20 = { - .unicode_first = 32, /*First Unicode letter in this font*/ - .unicode_last = 126, /*Last Unicode letter in this font*/ - .dsc = &lv_font_dejavu_20_dsc, - .get_glyph_bitmap = lv_font_get_glyph_bitmap_plain, /*Function pointer to get glyph's bitmap*/ - .get_glyph_dsc = lv_font_get_glyph_dsc_plain, /*Function pointer to get glyph's width*/ - .line_height = 20, /*Font height in pixels*/ - .next_page = NULL, /*Pointer to a font extension*/ + .unicode_first = 0x20, /*First Unicode letter in this font*/ + .unicode_last = 0x3F45, /*Last Unicode letter in this font*/ + .dsc = &font_dsc, + .get_glyph_bitmap = lv_font_get_bitmap_format_text_plain, /*Function pointer to get glyph's bitmap*/ + .get_glyph_dsc = lv_font_get_glyph_dsc_format_text_plain, /*Function pointer to get glyph's data*/ + .line_height = 20, /*The maximum line height required by the font*/ + .base_line = 9, /*Baseline measured from the bottom of the line*/ }; #endif /*USE_LV_FONT_DEJAVU_20*/ diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index 43a137c63..7022104b7 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -66,8 +66,6 @@ typedef struct _lv_font_struct const uint8_t * (*get_glyph_bitmap)(const struct _lv_font_struct *, uint32_t); /*Pointer to the font in a font pack (must have the same line height)*/ - struct _lv_font_struct * next_page; - uint8_t size; /*The original size (height)*/ uint8_t line_height; /*The real line height where any text fits*/ uint8_t base_line; /*Base line measured from the top of the line_height*/ void * dsc; /*Store implementation specific data here*/ diff --git a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h index 0c3809f7d..29ef130d8 100644 --- a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h +++ b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h @@ -3,8 +3,8 @@ * */ -#ifndef LV_FONT_H -#define LV_FONT_H +#ifndef LV_FONT_FMT_TXT_H +#define LV_FONT_FMT_TXT_H #ifdef __cplusplus extern "C" { @@ -71,20 +71,20 @@ typedef struct { search a "value" in an "array" and returns the index of "value". Format 0 tiny - unicode_list == NULL && glyph_id_list == NULL + unicode_list == NULL && glyph_id_ofs_list == NULL glyph_id = glyph_id_start + rcp Format 0 full - unicode_list == NULL && glyph_id_list != NULL - glyph_id = glyph_id_start + glyph_id_list[rcp] + unicode_list == NULL && glyph_id_ofs_list != NULL + glyph_id = glyph_id_start + glyph_id_ofs_list[rcp] Sparse tiny - unicode_list != NULL && glyph_id_list == NULL + unicode_list != NULL && glyph_id_ofs_list == NULL glyph_id = glyph_id_start + search(unicode_list, rcp) Sparse full - unicode_list != NULL && glyph_id_list != NULL - glyph_id = glyph_id_start + glyph_id_list[search(unicode_list, rcp)] + unicode_list != NULL && glyph_id_ofs_list != NULL + glyph_id = glyph_id_start + glyph_id_ofs_list[search(unicode_list, rcp)] */ uint16_t * unicode_list; @@ -92,7 +92,7 @@ typedef struct { /* if unicode_list == NULL uint8_t * * else uint16_t * */ - const void * glyph_id_list; + const void * glyph_id_ofs_list; }lv_font_cmap_fmt_txt_t; /*A simple mapping of kern values from pairs*/ @@ -190,4 +190,4 @@ bool lv_font_get_glyph_dsc_format_text_plain(const lv_font_t * font, lv_font_gly } /* extern "C" */ #endif -#endif /*USE_FONT*/ +#endif /*LV_FONT_FMT_TXT_H*/ From 5ef94e395d4af83783c8d04a7ca5f2d31d7adcb2 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Fri, 24 May 2019 14:31:20 +0200 Subject: [PATCH 18/29] add font template --- src/lv_fonts/lv_font_template.c | 201 ++++++++++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 src/lv_fonts/lv_font_template.c diff --git a/src/lv_fonts/lv_font_template.c b/src/lv_fonts/lv_font_template.c new file mode 100644 index 000000000..9ce3c1bb6 --- /dev/null +++ b/src/lv_fonts/lv_font_template.c @@ -0,0 +1,201 @@ + +#include "lvgl/lvgl.h" + +/*********************************************************************************** + * Size: 20 px + * Bpp: 1 (or 2/4/8/compressed) + * Fonts: + * DejaVuSans.ttf: U+0020 ( ) .. U+007e (~) range + * FoneAwesome.ttf: U+1e20 (?) .. U+1f22 (?), U+1f33 (?), U+1f66 (?) + **********************************************************************************/ + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static const uint8_t gylph_bitmap[] = { + /*Unicode: U+0031 (1) , Width: 8 */ + 0x38, //.+@@@... + 0xf8, //@@@@@... + 0x98, //@+.@@... + 0x18, //...@@... + 0x18, //...@@... + 0x18, //...@@... + 0x18, //...@@... + 0x18, //...@@... + 0x18, //...@@... + 0x18, //...@@... + 0x18, //...@@... + 0xff, //@@@@@@@@ + 0xff, //@@@@@@@@ + + /*Unicode: U+0033 (3) , Width: 9 */ + 0x7e, 0x00, //.%@@@@%.. + 0xff, 0x00, //@@@@@@@@+ + 0x83, 0x80, //@+....%@@ + 0x01, 0x80, //.......@@ + 0x03, 0x80, //......%@% + 0x3e, 0x00, //..@@@@@+. + 0x3f, 0x00, //..@@@@@%. + 0x03, 0x80, //.....+@@% + 0x01, 0x80, //.......@@ + 0x01, 0x80, //.......@@ + 0x83, 0x80, //%+...+@@% + 0xff, 0x00, //@@@@@@@@. + 0x7e, 0x00, //.%@@@@%.. + + /*Unicode: U+0041 (A) , Width: 12 */ + 0x06, 0x00, //.....@@..... + 0x06, 0x00, //....+@@+.... + 0x0f, 0x00, //....@@@@.... + 0x0f, 0x00, //....@@@@.... + 0x19, 0x80, //...%@++@%... + 0x19, 0x80, //...@@..@@... + 0x19, 0x80, //..+@%..%@+.. + 0x30, 0xc0, //..@@....@@.. + 0x3f, 0xc0, //..@@@@@@@@.. + 0x7f, 0xe0, //.%@@@@@@@@%. + 0x60, 0x60, //.@@......@@. + 0x60, 0x60, //+@%......%@+ + 0xc0, 0x30, //@@+......+@@ + + /*Unicode: U+0061 (a) , Width: 8 */ + 0x3c, //.+%@@@+. + 0x7e, //.@@@@@@. + 0x47, //.%...%@% + 0x03, //......@@ + 0x3f, //.+@@@@@@ + 0xff, //%@@@@@@@ + 0xc3, //@@+...@@ + 0xc7, //@@+..%@@ + 0xff, //%@@@@%@@ + 0x7b, //.%@@%.@@ +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static lv_font_glyph_dsc_fmt_txt_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 123, .box_h = 13, .box_w = 9, .ofs_x = 2, .ofs_y = 5}, + {.bitmap_index = 32, .adv_w = 234, .box_h = 12, .box_w = 7, .ofs_x = 1, .ofs_y = 3}, + {.bitmap_index = 55, .adv_w = 98, .box_h = 11, .box_w = 8, .ofs_x = 0, .ofs_y = 4}, +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static uint16_t unicode_list_1 = {0x234, 0x295, 0x456}; +static uint16_t glyph_id_ofs_list_1 = {232, 545, 1466}; + +static uint8_t glyph_id_ofs_list_3 = {32, 45, 66}; + + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_cmap_fmt_txt_t cmaps[] = { + { .range_start = 0x280, .range_length = 124, .glyph_id_start = 223, .unicode_list = unicode_list_1, .glyph_id_ofs_list = glyph_id_ofs_list_1}, + { .range_start = 0x20, .range_length = 112, .glyph_id_start = 456, .unicode_list = NULL, .glyph_id_ofs_list = NULL}, + { .range_start = 0x560, .range_length = 7654, .glyph_id_start = 756, .unicode_list = NULL, .glyph_id_ofs_list = glyph_id_ofs_list_3}, + +}; + +/*----------------- + * KERNING + *----------------*/ + +/*Left glyphs for kering*/ +static uint16_t kern_left_gylph_ids[] = +{ + 0x21, 0x42, 0x53 +}; + +/*Left glyphs for kering*/ +static uint16_t kern_right_gylph_ids[] = +{ + 0x41, 0x342, 0x333 +}; + +/*Kerning between the respective left and right glyphs*/ +static uint8_t kern_pair_values[] = +{ + 15, 52, 73 +}; + +/*Collect the kern pair's data in one place*/ +static lv_font_kern_pair_fmt_txt_t kern_pairs = +{ + .left_gylph_ids = kern_left_gylph_ids, + .right_gylph_ids = kern_right_gylph_ids, + .values = kern_pair_values, + .pair_cnt = 3, +}; + +/***** OR ******/ + +/*Map glyph_ids to kern left classes*/ +static uint8_t kern_left_class_mapping[] = +{ + 1, 2, 1, 1, 1, 1, 1, 1 +}; + +/*Map glyph_ids to kern right classes*/ +static uint8_t kern_right_class_mapping[] = +{ + 1, 2, 3, 2, 2, 3, 3, 1 +}; + +/*Kern values between classes*/ +static uint8_t kern_class_values = +{ + 32, 33, 22, 11, 55, 33, 22, 44 +}; + + +/*Collect the kern class' data in one place*/ +static lv_font_kern_classes_fmt_txt_t kern_classes = +{ + .class_pair_values = kern_class_values, + .left_class_mapping = kern_left_class_mapping, + .right_class_mapping = kern_right_class_mapping, + .left_class_cnt = 2, + .right_class_cnt = 3, +}; + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +/*Store all the custom data of the font*/ +static lv_font_dsc_fmt_txt_t font_dsc = { + .glyph_bitmap = gylph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .cmap_num = 3, + .bpp = 4, + + .kern_dsc = kern_classes, + .kern_classes = 1, + /*** OR ***/ + .kern_dsc = kern_pairs, + .kern_classes = 0, +}; + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +lv_font_t font_name = { + .unicode_first = 0x20, /*First Unicode letter in this font*/ + .unicode_last = 0x3F45, /*Last Unicode letter in this font*/ + .dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ + .get_glyph_bitmap = lv_font_get_bitmap_format_text_plain, /*Function pointer to get glyph's bitmap*/ + .get_glyph_dsc = lv_font_get_glyph_dsc_format_text_plain, /*Function pointer to get glyph's data*/ + .line_height = 20, /*The maximum line height required by the font*/ + .base_line = 9, /*Baseline measured from the bottom of the line*/ +}; From ceff78476b7dd438db0ce026b95a1fe8f936a0bb Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Sat, 25 May 2019 19:32:21 +0200 Subject: [PATCH 19/29] font: improve templates --- src/lv_fonts/lv_font_template.c | 69 ++++++----------------- src/lv_misc/lv_font.h | 38 +++++++++++++ src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h | 18 +++++- 3 files changed, 69 insertions(+), 56 deletions(-) diff --git a/src/lv_fonts/lv_font_template.c b/src/lv_fonts/lv_font_template.c index 9ce3c1bb6..4092009c5 100644 --- a/src/lv_fonts/lv_font_template.c +++ b/src/lv_fonts/lv_font_template.c @@ -15,62 +15,25 @@ /*Store the image of the glyphs*/ static const uint8_t gylph_bitmap[] = { - /*Unicode: U+0031 (1) , Width: 8 */ - 0x38, //.+@@@... - 0xf8, //@@@@@... - 0x98, //@+.@@... - 0x18, //...@@... - 0x18, //...@@... - 0x18, //...@@... - 0x18, //...@@... - 0x18, //...@@... - 0x18, //...@@... - 0x18, //...@@... - 0x18, //...@@... - 0xff, //@@@@@@@@ - 0xff, //@@@@@@@@ + /*Unicode: U+0031 (1) */ + 0x38, 0xf8, 0x98, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0xff, 0xff, - /*Unicode: U+0033 (3) , Width: 9 */ - 0x7e, 0x00, //.%@@@@%.. - 0xff, 0x00, //@@@@@@@@+ - 0x83, 0x80, //@+....%@@ - 0x01, 0x80, //.......@@ - 0x03, 0x80, //......%@% - 0x3e, 0x00, //..@@@@@+. - 0x3f, 0x00, //..@@@@@%. - 0x03, 0x80, //.....+@@% - 0x01, 0x80, //.......@@ - 0x01, 0x80, //.......@@ - 0x83, 0x80, //%+...+@@% - 0xff, 0x00, //@@@@@@@@. - 0x7e, 0x00, //.%@@@@%.. + /*Unicode: U+0033 (3) */ + 0x7e, 0x00, 0xff, 0x00, 0x83, 0x80, 0x01, 0x80, + 0x03, 0x80, 0x3e, 0x00, 0x3f, 0x00, 0x03, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x83, 0x80, 0xff, 0x00, + 0x7e, 0x00, - /*Unicode: U+0041 (A) , Width: 12 */ - 0x06, 0x00, //.....@@..... - 0x06, 0x00, //....+@@+.... - 0x0f, 0x00, //....@@@@.... - 0x0f, 0x00, //....@@@@.... - 0x19, 0x80, //...%@++@%... - 0x19, 0x80, //...@@..@@... - 0x19, 0x80, //..+@%..%@+.. - 0x30, 0xc0, //..@@....@@.. - 0x3f, 0xc0, //..@@@@@@@@.. - 0x7f, 0xe0, //.%@@@@@@@@%. - 0x60, 0x60, //.@@......@@. - 0x60, 0x60, //+@%......%@+ - 0xc0, 0x30, //@@+......+@@ + /*Unicode: U+0041 (A) */ + 0x06, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x19, 0x80, 0x19, 0x80, 0x19, 0x80, 0x30, 0xc0, + 0x3f, 0xc0, 0x7f, 0xe0, 0x60, 0x60, 0x60, 0x60, + 0xc0, 0x30, - /*Unicode: U+0061 (a) , Width: 8 */ - 0x3c, //.+%@@@+. - 0x7e, //.@@@@@@. - 0x47, //.%...%@% - 0x03, //......@@ - 0x3f, //.+@@@@@@ - 0xff, //%@@@@@@@ - 0xc3, //@@+...@@ - 0xc7, //@@+..%@@ - 0xff, //%@@@@%@@ - 0x7b, //.%@@%.@@ + /*Unicode: U+0061 (a) */ + 0x3c, 0x7e, 0x47, 0x03, 0x3f, 0xff, 0xc3, 0xc7, + 0xff, 0x7b, }; diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index 7022104b7..14a07098a 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -69,6 +69,44 @@ typedef struct _lv_font_struct uint8_t line_height; /*The real line height where any text fits*/ uint8_t base_line; /*Base line measured from the top of the line_height*/ void * dsc; /*Store implementation specific data here*/ + + + +/* + - Font size: + not required for calculations + + - Ascent + - Descent + - typoAscent + - typoDescent + - typographic descent: + Better to skip them to avoid confusion. Only line height and baseline matter for rendering. + - typoLineGap + Will be overwritten by the style. + + - min Y (used to quick check line intersections with other objects) + - max Y + BBoxMinXofs and BBoxMaxXofs would be useful to handle + if the the lines first and last character is out of the object. + Y is not important becasue all glyphs will fit in line_height. + + - default advanceWidth + Not supported in text format. glyph->advacedWidth is always present + + - glyphIdFormat + Has foxed size on text format + + - advanceWidthFormat + Fix 8.4 format + + - Glyph BBox x/y bits length (signed value) + - Glyph BBox w/h bits length (unsigned) + Has fixed size + + - Glyph advanceWidth bits length (unsigned, may be FP4) + Fix 8.4 format + */ } lv_font_t; /********************** diff --git a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h index 29ef130d8..a173f4565 100644 --- a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h +++ b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h @@ -140,20 +140,32 @@ typedef struct { * Array of `lv_font_cmap_fmt_txt_t` variables*/ const lv_font_cmap_fmt_txt_t * cmaps; - /* Sotore kerning values. + /* Store kerning values. * Can be `lv_font_kern_pair_fmt_txt_t * or `lv_font_kern_classes_fmt_txt_t *` * depending on `kern_classes` - * */ + */ const void * kern_dsc; + /*Scale kern values in 12.4 format*/ + uint16_t kern_scale; + /*Number of cmap tables*/ - uint16_t cmap_num :12; + uint16_t cmap_num :10; /*Bit per pixel: 1, 2, 4 or 8*/ uint16_t bpp :3; /*Type of `kern_dsc`*/ uint16_t kern_classes :1; + + /* + * storage format of the bitmap + * 0: plain + * 1: compressed: RLE with XOR pre-filter + * 2: reserved + * 3: reserved + */ + uint16_t bitmap_format :2; }lv_font_dsc_fmt_txt_t; /********************** From 1ed8207b5c18574e755083581ae8d82b0efb29b4 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Sat, 25 May 2019 19:46:04 +0200 Subject: [PATCH 20/29] font: add LV_FONT_X4_SET --- src/lv_fonts/lv_font_template.c | 9 +++++---- src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h | 3 +++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/lv_fonts/lv_font_template.c b/src/lv_fonts/lv_font_template.c index 4092009c5..6da3f643b 100644 --- a/src/lv_fonts/lv_font_template.c +++ b/src/lv_fonts/lv_font_template.c @@ -42,9 +42,9 @@ static const uint8_t gylph_bitmap[] = { *--------------------*/ static lv_font_glyph_dsc_fmt_txt_t glyph_dsc[] = { - {.bitmap_index = 0, .adv_w = 123, .box_h = 13, .box_w = 9, .ofs_x = 2, .ofs_y = 5}, - {.bitmap_index = 32, .adv_w = 234, .box_h = 12, .box_w = 7, .ofs_x = 1, .ofs_y = 3}, - {.bitmap_index = 55, .adv_w = 98, .box_h = 11, .box_w = 8, .ofs_x = 0, .ofs_y = 4}, + {.bitmap_index = 0, .adv_w = LV_FONT_X4_SET(12, 3), .box_h = 13, .box_w = 9, .ofs_x = 2, .ofs_y = 5}, + {.bitmap_index = 32, .adv_w = LV_FONT_X4_SET(8, 7), .box_h = 12, .box_w = 7, .ofs_x = 1, .ofs_y = 3}, + {.bitmap_index = 55, .adv_w = LV_FONT_X4_SET(4, 11), .box_h = 11, .box_w = 8, .ofs_x = 0, .ofs_y = 4}, }; /*--------------------- @@ -113,7 +113,7 @@ static uint8_t kern_right_class_mapping[] = /*Kern values between classes*/ static uint8_t kern_class_values = { - 32, 33, 22, 11, 55, 33, 22, 44 + LV_FONT_X4_SET(2, 7), LV_FONT_X4_SET(-1, 3), LV_FONT_X4_SET(0, 13), LV_FONT_X4_SET(5, 7) }; @@ -140,6 +140,7 @@ static lv_font_dsc_fmt_txt_t font_dsc = { .cmap_num = 3, .bpp = 4, + .kerning_scale = 324, .kern_dsc = kern_classes, .kern_classes = 1, /*** OR ***/ diff --git a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h index a173f4565..e8f49e65c 100644 --- a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h +++ b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h @@ -193,6 +193,9 @@ bool lv_font_get_glyph_dsc_format_text_plain(const lv_font_t * font, lv_font_gly /********************** * MACROS **********************/ +#define LV_FONT_X4_SET(_int, _fract) ((_int << 4) + _fract) +#define LV_FONT_X4_INT(_num) (_num >> 4) +#define LV_FONT_X4_FRACT(_num) (_num & 0xF) /********************** * ADD BUILT IN FONTS From 72347d4bc16a7d8be30e037287f923f63ef3d477 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Sun, 26 May 2019 19:31:01 +0200 Subject: [PATCH 21/29] remove LV_FONT_X4_SET --- src/lv_fonts/lv_font_dejavu_20.c | 2 +- src/lv_fonts/lv_font_template.c | 21 ++++++++++++--------- src/lv_misc/lv_font.h | 10 ++-------- src/lv_misc/lv_font_fmt/lv_font_fmt_txt.c | 4 ++-- src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h | 9 +++------ 5 files changed, 20 insertions(+), 26 deletions(-) diff --git a/src/lv_fonts/lv_font_dejavu_20.c b/src/lv_fonts/lv_font_dejavu_20.c index a2e61b57e..264df6dd8 100644 --- a/src/lv_fonts/lv_font_dejavu_20.c +++ b/src/lv_fonts/lv_font_dejavu_20.c @@ -170,7 +170,7 @@ lv_font_t lv_font_dejavu_20 = { .unicode_first = 0x20, /*First Unicode letter in this font*/ .unicode_last = 0x3F45, /*Last Unicode letter in this font*/ .dsc = &font_dsc, - .get_glyph_bitmap = lv_font_get_bitmap_format_text_plain, /*Function pointer to get glyph's bitmap*/ + .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ .get_glyph_dsc = lv_font_get_glyph_dsc_format_text_plain, /*Function pointer to get glyph's data*/ .line_height = 20, /*The maximum line height required by the font*/ .base_line = 9, /*Baseline measured from the bottom of the line*/ diff --git a/src/lv_fonts/lv_font_template.c b/src/lv_fonts/lv_font_template.c index 6da3f643b..e04a6b6c3 100644 --- a/src/lv_fonts/lv_font_template.c +++ b/src/lv_fonts/lv_font_template.c @@ -42,9 +42,9 @@ static const uint8_t gylph_bitmap[] = { *--------------------*/ static lv_font_glyph_dsc_fmt_txt_t glyph_dsc[] = { - {.bitmap_index = 0, .adv_w = LV_FONT_X4_SET(12, 3), .box_h = 13, .box_w = 9, .ofs_x = 2, .ofs_y = 5}, - {.bitmap_index = 32, .adv_w = LV_FONT_X4_SET(8, 7), .box_h = 12, .box_w = 7, .ofs_x = 1, .ofs_y = 3}, - {.bitmap_index = 55, .adv_w = LV_FONT_X4_SET(4, 11), .box_h = 11, .box_w = 8, .ofs_x = 0, .ofs_y = 4}, + {.bitmap_index = 0, .adv_w = 23, .box_h = 13, .box_w = 9, .ofs_x = 2, .ofs_y = 5}, + {.bitmap_index = 32, .adv_w = 44, .box_h = 12, .box_w = 7, .ofs_x = 1, .ofs_y = 3}, + {.bitmap_index = 55, .adv_w = 29, .box_h = 11, .box_w = 8, .ofs_x = 0, .ofs_y = 4}, }; /*--------------------- @@ -81,10 +81,11 @@ static uint16_t kern_right_gylph_ids[] = 0x41, 0x342, 0x333 }; -/*Kerning between the respective left and right glyphs*/ +/* Kerning between the respective left and right glyphs + * 12.4 format. (rael_value * 16 is stored) */ static uint8_t kern_pair_values[] = { - 15, 52, 73 + 23, 33, 55 }; /*Collect the kern pair's data in one place*/ @@ -110,10 +111,11 @@ static uint8_t kern_right_class_mapping[] = 1, 2, 3, 2, 2, 3, 3, 1 }; -/*Kern values between classes*/ +/* Kern values between classes + * 12.4 format. (rael_value * 16 is stored)*/ static uint8_t kern_class_values = { - LV_FONT_X4_SET(2, 7), LV_FONT_X4_SET(-1, 3), LV_FONT_X4_SET(0, 13), LV_FONT_X4_SET(5, 7) + 44, 66, 24, 23, 56, 23 }; @@ -158,8 +160,9 @@ lv_font_t font_name = { .unicode_first = 0x20, /*First Unicode letter in this font*/ .unicode_last = 0x3F45, /*Last Unicode letter in this font*/ .dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ - .get_glyph_bitmap = lv_font_get_bitmap_format_text_plain, /*Function pointer to get glyph's bitmap*/ - .get_glyph_dsc = lv_font_get_glyph_dsc_format_text_plain, /*Function pointer to get glyph's data*/ + .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ + .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt + , /*Function pointer to get glyph's data*/ .line_height = 20, /*The maximum line height required by the font*/ .base_line = 9, /*Baseline measured from the bottom of the line*/ }; diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index 14a07098a..7b34b603e 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -68,10 +68,10 @@ typedef struct _lv_font_struct /*Pointer to the font in a font pack (must have the same line height)*/ uint8_t line_height; /*The real line height where any text fits*/ uint8_t base_line; /*Base line measured from the top of the line_height*/ + int8_t box_x_ofs_min; /*Smallest glyph box X offset*/ + int8_t box_x_ofs_max; /*Greatest glyph box X offset*/ void * dsc; /*Store implementation specific data here*/ - - /* - Font size: not required for calculations @@ -85,12 +85,6 @@ typedef struct _lv_font_struct - typoLineGap Will be overwritten by the style. - - min Y (used to quick check line intersections with other objects) - - max Y - BBoxMinXofs and BBoxMaxXofs would be useful to handle - if the the lines first and last character is out of the object. - Y is not important becasue all glyphs will fit in line_height. - - default advanceWidth Not supported in text format. glyph->advacedWidth is always present diff --git a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.c b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.c index a1266c457..b113111e8 100644 --- a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.c +++ b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.c @@ -47,7 +47,7 @@ static int32_t lv_font_codeCompare(const void * pRef, const void * pElement); * @param unicode_letter an unicode letter which bitmap should be get * @return pointer to the bitmap or NULL if not found */ -const uint8_t * lv_font_get_bitmap_format_text_plain(const lv_font_t * font, uint32_t unicode_letter) +const uint8_t * lv_font_get_bitmap_fmt_txt(const lv_font_t * font, uint32_t unicode_letter) { /*Check the range*/ if(unicode_letter < font->unicode_first || unicode_letter > font->unicode_last) return NULL; @@ -82,7 +82,7 @@ const uint8_t * lv_font_get_bitmap_format_text_plain(const lv_font_t * font, uin * @return true: descriptor is successfully loaded into `dsc_out`. * false: the letter was not found, no data is loaded to `dsc_out` */ -bool lv_font_get_glyph_dsc_format_text_plain(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter) +bool lv_font_get_glyph_dsc_fmt_txt(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter) { /*Check the range*/ if(unicode_letter < font->unicode_first || unicode_letter > font->unicode_last) return NULL; diff --git a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h index e8f49e65c..0c584e108 100644 --- a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h +++ b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h @@ -37,7 +37,7 @@ extern "C" { typedef struct { uint32_t bitmap_index : 20; /* Start index of the bitmap. A font can be max 1 MB. */ - uint32_t adv_w :12; /*The glyph needs this space. Draw the next glyph after this width. 8.4 format. */ + uint32_t adv_w :12; /*Draw the next glyph after this width. 12.4 format (real_value * 16 is stored). */ uint8_t box_w; /*Width of the glyph's bounding box*/ uint8_t box_h; /*Height of the glyph's bounding box*/ @@ -178,7 +178,7 @@ typedef struct { * @param unicode_letter an unicode letter which bitmap should be get * @return pointer to the bitmap or NULL if not found */ -const uint8_t * lv_font_get_bitmap_format_text_plain(const lv_font_t * font, uint32_t letter); +const uint8_t * lv_font_get_bitmap_fmt_txt(const lv_font_t * font, uint32_t letter); /** * Used as `get_glyph_dsc` callback in LittelvGL's native font format if the font is uncompressed. @@ -188,14 +188,11 @@ const uint8_t * lv_font_get_bitmap_format_text_plain(const lv_font_t * font, uin * @return true: descriptor is successfully loaded into `dsc_out`. * false: the letter was not found, no data is loaded to `dsc_out` */ -bool lv_font_get_glyph_dsc_format_text_plain(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter); +bool lv_font_get_glyph_dsc_fmt_txt(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter); /********************** * MACROS **********************/ -#define LV_FONT_X4_SET(_int, _fract) ((_int << 4) + _fract) -#define LV_FONT_X4_INT(_num) (_num >> 4) -#define LV_FONT_X4_FRACT(_num) (_num & 0xF) /********************** * ADD BUILT IN FONTS From eba910be40512079947069d2017115ab7149554f Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Mon, 27 May 2019 06:20:48 +0200 Subject: [PATCH 22/29] font: use signed types for kern values --- src/lv_fonts/lv_font_template.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lv_fonts/lv_font_template.c b/src/lv_fonts/lv_font_template.c index e04a6b6c3..fda2b4c97 100644 --- a/src/lv_fonts/lv_font_template.c +++ b/src/lv_fonts/lv_font_template.c @@ -82,10 +82,10 @@ static uint16_t kern_right_gylph_ids[] = }; /* Kerning between the respective left and right glyphs - * 12.4 format. (rael_value * 16 is stored) */ -static uint8_t kern_pair_values[] = + * 12.4 format which needs to scaled with `kern_scale`*/ +static int8_t kern_pair_values[] = { - 23, 33, 55 + 23, -33, 55 }; /*Collect the kern pair's data in one place*/ @@ -112,10 +112,10 @@ static uint8_t kern_right_class_mapping[] = }; /* Kern values between classes - * 12.4 format. (rael_value * 16 is stored)*/ -static uint8_t kern_class_values = + * 12.4 format which needs to scaled with `kern_scale`*/ +static int8_t kern_class_values = { - 44, 66, 24, 23, 56, 23 + 44, -66, 24, -23, 56, 23 }; From 0aeff32442784e2d3fe4c9a9bdd5a2cab4cea85b Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Mon, 27 May 2019 15:13:59 +0200 Subject: [PATCH 23/29] font: fix comment for kern format --- src/lv_fonts/lv_font_template.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lv_fonts/lv_font_template.c b/src/lv_fonts/lv_font_template.c index fda2b4c97..21d9db6e2 100644 --- a/src/lv_fonts/lv_font_template.c +++ b/src/lv_fonts/lv_font_template.c @@ -82,7 +82,7 @@ static uint16_t kern_right_gylph_ids[] = }; /* Kerning between the respective left and right glyphs - * 12.4 format which needs to scaled with `kern_scale`*/ + * 4.4 format which needs to scaled with `kern_scale`*/ static int8_t kern_pair_values[] = { 23, -33, 55 @@ -112,7 +112,7 @@ static uint8_t kern_right_class_mapping[] = }; /* Kern values between classes - * 12.4 format which needs to scaled with `kern_scale`*/ + * 4.4 format which needs to scaled with `kern_scale`*/ static int8_t kern_class_values = { 44, -66, 24, -23, 56, 23 From bf667f747b68a92f1f88c2c59d1e7861207a0f15 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Mon, 27 May 2019 15:26:09 +0200 Subject: [PATCH 24/29] font: remove box_x_ofs_min/max --- src/lv_misc/lv_font.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index 7b34b603e..b77409319 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -68,8 +68,6 @@ typedef struct _lv_font_struct /*Pointer to the font in a font pack (must have the same line height)*/ uint8_t line_height; /*The real line height where any text fits*/ uint8_t base_line; /*Base line measured from the top of the line_height*/ - int8_t box_x_ofs_min; /*Smallest glyph box X offset*/ - int8_t box_x_ofs_max; /*Greatest glyph box X offset*/ void * dsc; /*Store implementation specific data here*/ /* From 005a7954caaa9bf7e31dee6c4095577c91e0791a Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Tue, 28 May 2019 07:57:22 +0200 Subject: [PATCH 25/29] font: remove unicode_first/last --- src/lv_misc/lv_font.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/lv_misc/lv_font.h b/src/lv_misc/lv_font.h index b77409319..fd2f57356 100644 --- a/src/lv_misc/lv_font.h +++ b/src/lv_misc/lv_font.h @@ -56,9 +56,6 @@ typedef struct /*Describe the properties of a font*/ typedef struct _lv_font_struct { - uint32_t unicode_first; - uint32_t unicode_last; - /*Get a glyph's descriptor from a font*/ bool (*get_glyph_dsc)(const struct _lv_font_struct *, lv_font_glyph_dsc_t *, uint32_t letter); From a5bbb5e6519cfb8046097e2b4207df68e31ee3f9 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Tue, 28 May 2019 08:06:15 +0200 Subject: [PATCH 26/29] font: add cmap type --- src/lv_fonts/lv_font_template.c | 20 ++++++++++++-------- src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h | 11 +++++++++++ 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/lv_fonts/lv_font_template.c b/src/lv_fonts/lv_font_template.c index 21d9db6e2..2ad51f29e 100644 --- a/src/lv_fonts/lv_font_template.c +++ b/src/lv_fonts/lv_font_template.c @@ -2,11 +2,7 @@ #include "lvgl/lvgl.h" /*********************************************************************************** - * Size: 20 px - * Bpp: 1 (or 2/4/8/compressed) - * Fonts: - * DejaVuSans.ttf: U+0020 ( ) .. U+007e (~) range - * FoneAwesome.ttf: U+1e20 (?) .. U+1f22 (?), U+1f33 (?), U+1f66 (?) + * Copy/Paste the command line instruction **********************************************************************************/ /*----------------- @@ -59,9 +55,17 @@ static uint8_t glyph_id_ofs_list_3 = {32, 45, 66}; /*Collect the unicode lists and glyph_id offsets*/ static const lv_font_cmap_fmt_txt_t cmaps[] = { - { .range_start = 0x280, .range_length = 124, .glyph_id_start = 223, .unicode_list = unicode_list_1, .glyph_id_ofs_list = glyph_id_ofs_list_1}, - { .range_start = 0x20, .range_length = 112, .glyph_id_start = 456, .unicode_list = NULL, .glyph_id_ofs_list = NULL}, - { .range_start = 0x560, .range_length = 7654, .glyph_id_start = 756, .unicode_list = NULL, .glyph_id_ofs_list = glyph_id_ofs_list_3}, + { + .range_start = 0x280, .range_length = 124, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_FULL, + .glyph_id_start = 223, .unicode_list = unicode_list_1, .glyph_id_ofs_list = glyph_id_ofs_list_1 + }, + { + .range_start = 0x20, .range_length = 112, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY, + .glyph_id_start = 456, .unicode_list = NULL, .glyph_id_ofs_list = NULL + }, + { + .range_start = 0x560, .range_length = 7654, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL, + .glyph_id_start = 756, .unicode_list = NULL, .glyph_id_ofs_list = glyph_id_ofs_list_3}, }; diff --git a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h index 0c584e108..c4a36ae38 100644 --- a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h +++ b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h @@ -45,6 +45,15 @@ typedef struct uint8_t ofs_y; /*y offset of the bounding box. Measured from the top of the line*/ }lv_font_glyph_dsc_fmt_txt_t; + +typedef enum { + LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY, + LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL, + LV_FONT_FMT_TXT_CMAP_SPARSE_TINY, + LV_FONT_FMT_TXT_CMAP_SPARSE_FULL, +}lv_font_fmt_txt_cmap_type_t; + + /* Map codepoints to a `glyph_dsc`s * Several formats are supported to optimize memory usage * See https://github.com/littlevgl/lv_font_conv/blob/master/doc/font_spec.md @@ -60,6 +69,8 @@ typedef struct { /* First glyph ID (array index of `glyph_dsc`) for this range */ uint16_t glyph_id_start; + lv_font_fmt_txt_cmap_type_t type; + /* According the specification there are 4 formats: https://github.com/littlevgl/lv_font_conv/blob/master/doc/font_spec.md From 0acabe460cb78266849c6ca48c1714b6ff631d0b Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Tue, 28 May 2019 08:46:43 +0200 Subject: [PATCH 27/29] font: add new types --- src/lv_fonts/lv_font_dejavu_20.c | 10 +-- src/lv_fonts/lv_font_template.c | 104 +++++++++++----------- src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h | 53 ++++++----- 3 files changed, 90 insertions(+), 77 deletions(-) diff --git a/src/lv_fonts/lv_font_dejavu_20.c b/src/lv_fonts/lv_font_dejavu_20.c index 264df6dd8..a9d582d4a 100644 --- a/src/lv_fonts/lv_font_dejavu_20.c +++ b/src/lv_fonts/lv_font_dejavu_20.c @@ -95,7 +95,7 @@ static uint8_t kern_pair_values[] = 15, 52, 73 }; -static lv_font_kern_pair_fmt_txt_t kern_pairs = +static lv_font_fmt_txt_kern_pair_t kern_pairs = { .left_gylph_ids = kern_left_gylph_ids, .right_gylph_ids = kern_right_gylph_ids, @@ -119,7 +119,7 @@ static uint8_t kern_class_values = }; -static lv_font_kern_classes_fmt_txt_t kern_classes = +static lv_font_fmt_txt_kern_classes_t kern_classes = { .class_pair_values = kern_class_values, .left_class_mapping = kern_left_class_mapping, @@ -136,20 +136,20 @@ static uint8_t glyph_id_ofs_list_3 = {32, 45, 66}; /*Store the glyph descriptions*/ -static const lv_font_cmap_fmt_txt_t cmaps[] = { +static const lv_font_fmt_txt_cmap_t cmaps[] = { { .range_start = 0x280, .range_length = 124, .glyph_id_start = 223, .unicode_list = uniocde_list_1, .glyph_id_ofs_list = glyph_id_ofs_list_1}, { .range_start = 0x20, .range_length = 112, .glyph_id_start = 456, .unicode_list = NULL, .glyph_id_ofs_list = NULL}, { .range_start = 0x560, .range_length = 7654, .glyph_id_start = 756, .unicode_list = NULL, .glyph_id_ofs_list = glyph_id_ofs_list_3}, }; -static lv_font_glyph_dsc_fmt_txt_t glyph_dsc[] = { +static lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { {.bitmap_index = 0, .adv_w = 123, .box_h = 13, .box_w = 9, .ofs_x = 2, .ofs_y = 5}, {.bitmap_index = 32, .adv_w = 234, .box_h = 12, .box_w = 7, .ofs_x = 1, .ofs_y = 3}, {.bitmap_index = 55, .adv_w = 98, .box_h = 11, .box_w = 8, .ofs_x = 0, .ofs_y = 4}, }; -static lv_font_dsc_fmt_txt_t font_dsc = { +static lv_font_fmt_txt_dsc_t font_dsc = { .glyph_bitmap = gylph_bitmap, .glyph_dsc = glyph_dsc, .cmaps = cmaps, diff --git a/src/lv_fonts/lv_font_template.c b/src/lv_fonts/lv_font_template.c index 2ad51f29e..3b2f057a1 100644 --- a/src/lv_fonts/lv_font_template.c +++ b/src/lv_fonts/lv_font_template.c @@ -37,10 +37,11 @@ static const uint8_t gylph_bitmap[] = { * GLYPH DESCRIPTION *--------------------*/ -static lv_font_glyph_dsc_fmt_txt_t glyph_dsc[] = { - {.bitmap_index = 0, .adv_w = 23, .box_h = 13, .box_w = 9, .ofs_x = 2, .ofs_y = 5}, - {.bitmap_index = 32, .adv_w = 44, .box_h = 12, .box_w = 7, .ofs_x = 1, .ofs_y = 3}, - {.bitmap_index = 55, .adv_w = 29, .box_h = 11, .box_w = 8, .ofs_x = 0, .ofs_y = 4}, +static lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = +{ + {.bitmap_index = 0, .adv_w = 23, .box_h = 13, .box_w = 9, .ofs_x = 2, .ofs_y = 5}, + {.bitmap_index = 32, .adv_w = 44, .box_h = 12, .box_w = 7, .ofs_x = 1, .ofs_y = 3}, + {.bitmap_index = 55, .adv_w = 29, .box_h = 11, .box_w = 8, .ofs_x = 0, .ofs_y = 4}, }; /*--------------------- @@ -54,35 +55,32 @@ static uint8_t glyph_id_ofs_list_3 = {32, 45, 66}; /*Collect the unicode lists and glyph_id offsets*/ -static const lv_font_cmap_fmt_txt_t cmaps[] = { - { - .range_start = 0x280, .range_length = 124, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_FULL, - .glyph_id_start = 223, .unicode_list = unicode_list_1, .glyph_id_ofs_list = glyph_id_ofs_list_1 - }, - { - .range_start = 0x20, .range_length = 112, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY, - .glyph_id_start = 456, .unicode_list = NULL, .glyph_id_ofs_list = NULL - }, - { - .range_start = 0x560, .range_length = 7654, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL, - .glyph_id_start = 756, .unicode_list = NULL, .glyph_id_ofs_list = glyph_id_ofs_list_3}, - +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 0x280, .range_length = 124, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_FULL, + .glyph_id_start = 223, .unicode_list = unicode_list_1, .glyph_id_ofs_list = glyph_id_ofs_list_1 + }, + { + .range_start = 0x20, .range_length = 112, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY, + .glyph_id_start = 456, .unicode_list = NULL, .glyph_id_ofs_list = NULL + }, + { + .range_start = 0x560, .range_length = 7654, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL, + .glyph_id_start = 756, .unicode_list = NULL, .glyph_id_ofs_list = glyph_id_ofs_list_3 + }, }; /*----------------- * KERNING *----------------*/ -/*Left glyphs for kering*/ -static uint16_t kern_left_gylph_ids[] = +/*Pair left and right glyphs for kerning*/ +static lv_font_fmt_txt_kern_pair_id_t kern_pair_gylph_ids[] = { - 0x21, 0x42, 0x53 -}; - -/*Left glyphs for kering*/ -static uint16_t kern_right_gylph_ids[] = -{ - 0x41, 0x342, 0x333 + {.pair.left = 0x23, .pair.right = 0x283}, + {.pair.left = 0x43, .pair.right = 0x383}, + {.pair.left = 0x73, .pair.right = 0x583}, }; /* Kerning between the respective left and right glyphs @@ -93,10 +91,9 @@ static int8_t kern_pair_values[] = }; /*Collect the kern pair's data in one place*/ -static lv_font_kern_pair_fmt_txt_t kern_pairs = +static lv_font_fmt_txt_kern_pair_t kern_pairs = { - .left_gylph_ids = kern_left_gylph_ids, - .right_gylph_ids = kern_right_gylph_ids, + .glyph_ids = kern_pair_gylph_ids, .values = kern_pair_values, .pair_cnt = 3, }; @@ -106,52 +103,55 @@ static lv_font_kern_pair_fmt_txt_t kern_pairs = /*Map glyph_ids to kern left classes*/ static uint8_t kern_left_class_mapping[] = { - 1, 2, 1, 1, 1, 1, 1, 1 + 1, 2, 1, 1, 1, 1, 1, 1 }; /*Map glyph_ids to kern right classes*/ static uint8_t kern_right_class_mapping[] = { - 1, 2, 3, 2, 2, 3, 3, 1 + 1, 2, 3, 2, 2, 3, 3, 1 }; /* Kern values between classes * 4.4 format which needs to scaled with `kern_scale`*/ static int8_t kern_class_values = { - 44, -66, 24, -23, 56, 23 + 44, -66, 24, -23, 56, 23 }; - /*Collect the kern class' data in one place*/ -static lv_font_kern_classes_fmt_txt_t kern_classes = +static lv_font_fmt_txt_kern_classes_t kern_classes = { - .class_pair_values = kern_class_values, - .left_class_mapping = kern_left_class_mapping, - .right_class_mapping = kern_right_class_mapping, - .left_class_cnt = 2, - .right_class_cnt = 3, + .class_pair_values = kern_class_values, + .left_class_mapping = kern_left_class_mapping, + .right_class_mapping = kern_right_class_mapping, + .left_class_cnt = 2, + .right_class_cnt = 3, }; - /*-------------------- * ALL CUSTOM DATA *--------------------*/ /*Store all the custom data of the font*/ -static lv_font_dsc_fmt_txt_t font_dsc = { - .glyph_bitmap = gylph_bitmap, - .glyph_dsc = glyph_dsc, - .cmaps = cmaps, - .cmap_num = 3, - .bpp = 4, +static lv_font_fmt_txt_dsc_t font_dsc = { + .glyph_bitmap = gylph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .cmap_num = 3, + .bpp = 4, + .bitmap_format = LV_FONT_FMT_TXT_PLAIN, - .kerning_scale = 324, - .kern_dsc = kern_classes, - .kern_classes = 1, - /*** OR ***/ - .kern_dsc = kern_pairs, - .kern_classes = 0, + .kerning_scale = 324, + + .kern_dsc = kern_classes, + .kern_classes = 1, + /*** OR ***/ + .kern_dsc = kern_pairs, + .kern_classes = 0, + /*** OR ***/ + .kern_dsc = NULL, + .kern_classes = 0, }; diff --git a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h index c4a36ae38..7474c5241 100644 --- a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h +++ b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h @@ -43,7 +43,7 @@ typedef struct uint8_t box_h; /*Height of the glyph's bounding box*/ int8_t ofs_x; /*x offset of the bounding box*/ uint8_t ofs_y; /*y offset of the bounding box. Measured from the top of the line*/ -}lv_font_glyph_dsc_fmt_txt_t; +}lv_font_fmt_txt_glyph_dsc_t; typedef enum { @@ -100,31 +100,39 @@ typedef struct { uint16_t * unicode_list; - /* if unicode_list == NULL uint8_t * - * else uint16_t * + /* if(type == LV_FONT_FMT_TXT_CMAP_FORMAT0_...) it's `uint8_t *` + * if(type == LV_FONT_FMT_TXT_CMAP_SPARSE_...) it's `uint16_t *` */ const void * glyph_id_ofs_list; -}lv_font_cmap_fmt_txt_t; +}lv_font_fmt_txt_cmap_t; + +/*Describe glyph pairs for kerning*/ +typedef union { + struct { + uint16_t left; + uint16_t right; + }pair; + uint32_t both; +}lv_font_fmt_txt_kern_pair_id_t; /*A simple mapping of kern values from pairs*/ typedef struct { /*To get a kern value of two code points: - 1. Get the `glyph_id_left` and `glyph_id_right` from `lv_font_cmap_built_in_t + 1. Get the `glyph_id_left` and `glyph_id_right` from `lv_font_fmt_txt_cmap_t 2 for(i = 0; i < pair_cnt; i++) - if(left_gylph_ids[i] == glyph_id_left && - right_gylph_ids[i] == glyph_id_right) + if(gylph_ids[i].pair.left == glyph_id_left && + gylph_ids[i].pair.right == glyph_id_right) return values[i]; */ - uint16_t * left_gylph_ids; - uint16_t * right_gylph_ids; + lv_font_fmt_txt_kern_pair_id_t glyph_ids; uint8_t * values; uint16_t pair_cnt; -}lv_font_kern_pair_fmt_txt_t; +}lv_font_fmt_txt_kern_pair_t; /*More complex but more optimal class based kern value storage*/ typedef struct { /*To get a kern value of two code points: - 1. Get the `glyph_id_left` and `glyph_id_right` from `lv_font_cmap_built_in_t + 1. Get the `glyph_id_left` and `glyph_id_right` from `lv_font_fmt_txt_cmap_t 2 Get the class of the left and right glyphs as `left_class` and `right_class` for(i = 0; i < left_class_num; i++) if(left_class_mapping[i] == glyph_id_left) @@ -137,7 +145,15 @@ typedef struct { uint8_t * right_class_mapping; /*Map the glyph_ids to classes: index -> glyph_id -> class_id*/ uint8_t left_class_cnt; uint8_t right_class_cnt; -}lv_font_kern_classes_fmt_txt_t; +}lv_font_fmt_txt_kern_classes_t; + + +/*Bitmap formats*/ +typedef enum { + LV_FONT_FMT_TXT_PLAIN = 0, + LV_FONT_FMT_TXT_COMPRESSED = 1, +}lv_font_fmt_txt_bitmap_format_t; + /*Describe store additional data for fonts */ typedef struct { @@ -145,14 +161,14 @@ typedef struct { const uint8_t * glyph_bitmap; /*Describe the glyphs*/ - const lv_font_glyph_dsc_fmt_txt_t * glyph_dsc; + const lv_font_fmt_txt_glyph_dsc_t * glyph_dsc; /* Map the glyphs to Unicode characters. * Array of `lv_font_cmap_fmt_txt_t` variables*/ - const lv_font_cmap_fmt_txt_t * cmaps; + const lv_font_fmt_txt_cmap_t * cmaps; /* Store kerning values. - * Can be `lv_font_kern_pair_fmt_txt_t * or `lv_font_kern_classes_fmt_txt_t *` + * Can be `lv_font_fmt_txt_kern_pair_t * or `lv_font_kern_classes_fmt_txt_t *` * depending on `kern_classes` */ const void * kern_dsc; @@ -171,13 +187,10 @@ typedef struct { /* * storage format of the bitmap - * 0: plain - * 1: compressed: RLE with XOR pre-filter - * 2: reserved - * 3: reserved + * from `lv_font_fmt_txt_bitmap_format_t` */ uint16_t bitmap_format :2; -}lv_font_dsc_fmt_txt_t; +}lv_font_fmt_txt_dsc_t; /********************** * GLOBAL PROTOTYPES From d94075ac925634c47f3dd48f702804b23dd85261 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Tue, 28 May 2019 12:10:50 +0200 Subject: [PATCH 28/29] font: add unicode_list_length and glyph_id_ofs_list_length --- src/lv_fonts/lv_font_template.c | 15 +++++++++------ src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h | 2 ++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/lv_fonts/lv_font_template.c b/src/lv_fonts/lv_font_template.c index 3b2f057a1..6f8ac35ac 100644 --- a/src/lv_fonts/lv_font_template.c +++ b/src/lv_fonts/lv_font_template.c @@ -58,16 +58,19 @@ static uint8_t glyph_id_ofs_list_3 = {32, 45, 66}; static const lv_font_fmt_txt_cmap_t cmaps[] = { { - .range_start = 0x280, .range_length = 124, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_FULL, - .glyph_id_start = 223, .unicode_list = unicode_list_1, .glyph_id_ofs_list = glyph_id_ofs_list_1 + .range_start = 0x280, .range_length = 124, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_FULL, + .glyph_id_start = 223, .glyph_id_ofs_list = glyph_id_ofs_list_1, .glyph_id_ofs_list = 23, + .unicode_list = unicode_list_1, .unicode_list_length = 8, }, { - .range_start = 0x20, .range_length = 112, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY, - .glyph_id_start = 456, .unicode_list = NULL, .glyph_id_ofs_list = NULL + .range_start = 0x20, .range_length = 112, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY, + .glyph_id_start = 456, .glyph_id_ofs_list = NULL, .glyph_id_ofs_list_length = 0, + .unicode_list = NULL, .unicode_list_length = 22, }, { - .range_start = 0x560, .range_length = 7654, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL, - .glyph_id_start = 756, .unicode_list = NULL, .glyph_id_ofs_list = glyph_id_ofs_list_3 + .range_start = 0x560, .range_length = 7654, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL, + .glyph_id_start = 756, .glyph_id_ofs_list = glyph_id_ofs_list_3, .glyph_id_ofs_list_length = 23, + .unicode_list = NULL, .unicode_list_length = 0, }, }; diff --git a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h index 7474c5241..d80b4a5a1 100644 --- a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h +++ b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h @@ -99,11 +99,13 @@ typedef struct { */ uint16_t * unicode_list; + uint32_t unicode_list_length; /* if(type == LV_FONT_FMT_TXT_CMAP_FORMAT0_...) it's `uint8_t *` * if(type == LV_FONT_FMT_TXT_CMAP_SPARSE_...) it's `uint16_t *` */ const void * glyph_id_ofs_list; + uint32_t glyph_id_ofs_list_length; }lv_font_fmt_txt_cmap_t; /*Describe glyph pairs for kerning*/ From 7189a608667b6914b5630eabbf2a6d9d169b9d32 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Tue, 28 May 2019 12:53:19 +0200 Subject: [PATCH 29/29] font: use a common list length in the arrays of cmaps --- src/lv_fonts/lv_font_template.c | 24 ++++++++++++++--------- src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h | 10 ++++++---- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/lv_fonts/lv_font_template.c b/src/lv_fonts/lv_font_template.c index 6f8ac35ac..d107156b4 100644 --- a/src/lv_fonts/lv_font_template.c +++ b/src/lv_fonts/lv_font_template.c @@ -58,19 +58,25 @@ static uint8_t glyph_id_ofs_list_3 = {32, 45, 66}; static const lv_font_fmt_txt_cmap_t cmaps[] = { { - .range_start = 0x280, .range_length = 124, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_FULL, - .glyph_id_start = 223, .glyph_id_ofs_list = glyph_id_ofs_list_1, .glyph_id_ofs_list = 23, - .unicode_list = unicode_list_1, .unicode_list_length = 8, + .range_start = 0x280, .range_length = 124, .glyph_id_start = 223, + .list_length = 8, + .glyph_id_ofs_list = glyph_id_ofs_list_1, + .unicode_list = unicode_list_1, + .type = LV_FONT_FMT_TXT_CMAP_SPARSE_FULL, }, { - .range_start = 0x20, .range_length = 112, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY, - .glyph_id_start = 456, .glyph_id_ofs_list = NULL, .glyph_id_ofs_list_length = 0, - .unicode_list = NULL, .unicode_list_length = 22, + .range_start = 0x20, .range_length = 112, .glyph_id_start = 456, + .list_length = 22, + .glyph_id_ofs_list = NULL, + .unicode_list = NULL, + .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY, }, { - .range_start = 0x560, .range_length = 7654, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL, - .glyph_id_start = 756, .glyph_id_ofs_list = glyph_id_ofs_list_3, .glyph_id_ofs_list_length = 23, - .unicode_list = NULL, .unicode_list_length = 0, + .range_start = 0x560, .range_length = 7654, .glyph_id_start = 756, + .list_length = 23, + .glyph_id_ofs_list = glyph_id_ofs_list_3, + .unicode_list = NULL, + .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL, }, }; diff --git a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h index d80b4a5a1..b27e2246a 100644 --- a/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h +++ b/src/lv_misc/lv_font_fmt/lv_font_fmt_txt.h @@ -69,8 +69,6 @@ typedef struct { /* First glyph ID (array index of `glyph_dsc`) for this range */ uint16_t glyph_id_start; - lv_font_fmt_txt_cmap_type_t type; - /* According the specification there are 4 formats: https://github.com/littlevgl/lv_font_conv/blob/master/doc/font_spec.md @@ -99,13 +97,17 @@ typedef struct { */ uint16_t * unicode_list; - uint32_t unicode_list_length; /* if(type == LV_FONT_FMT_TXT_CMAP_FORMAT0_...) it's `uint8_t *` * if(type == LV_FONT_FMT_TXT_CMAP_SPARSE_...) it's `uint16_t *` */ const void * glyph_id_ofs_list; - uint32_t glyph_id_ofs_list_length; + + /*Length of `unicode_list` and/or `glyph_id_ofs_list`*/ + uint16_t list_length; + + /*Type of this character map*/ + lv_font_fmt_txt_cmap_type_t type :2; }lv_font_fmt_txt_cmap_t; /*Describe glyph pairs for kerning*/