From b3634790cdaf66fc91e542fb86d322cbac123b29 Mon Sep 17 00:00:00 2001 From: Fabio Guerra Date: Wed, 12 Aug 2020 00:11:02 -0300 Subject: [PATCH] Implementing missing formats for font loading. --- src/lv_font/lv_font_loader.c | 581 +++++---- tests/Makefile | 3 + tests/font_1.fnt | Bin 0 -> 6876 bytes tests/font_2.fnt | Bin 0 -> 7252 bytes tests/font_3.fnt | Bin 0 -> 4892 bytes tests/lv_test_assert.c | 11 + tests/lv_test_assert.h | 1 + tests/lv_test_core/lv_test_font_loader.c | 110 +- tests/lv_test_fonts/font_1.c | 1383 +++++++++++++++++++++ tests/lv_test_fonts/font_2.c | 1413 ++++++++++++++++++++++ tests/lv_test_fonts/font_3.c | 953 +++++++++++++++ 11 files changed, 4171 insertions(+), 284 deletions(-) create mode 100644 tests/font_1.fnt create mode 100644 tests/font_2.fnt create mode 100644 tests/font_3.fnt create mode 100644 tests/lv_test_fonts/font_1.c create mode 100644 tests/lv_test_fonts/font_2.c create mode 100644 tests/lv_test_fonts/font_3.c diff --git a/src/lv_font/lv_font_loader.c b/src/lv_font/lv_font_loader.c index 456b0cb6b..3a292a766 100644 --- a/src/lv_font/lv_font_loader.c +++ b/src/lv_font/lv_font_loader.c @@ -53,7 +53,7 @@ typedef struct font_header_bin { typedef struct cmap_table_bin { - uint32_t cmaps_subtable_length; + uint32_t data_offset; uint32_t range_start; uint16_t range_length; uint16_t glyph_id_start; @@ -68,6 +68,7 @@ typedef struct cmap_table_bin **********************/ static bit_iterator_t init_bit_iterator(lv_fs_file_t * fp); static bool lvgl_load_font(lv_fs_file_t * fp, lv_font_t * font); +int32_t load_kern(lv_fs_file_t *fp, lv_font_fmt_txt_dsc_t * font_dsc, uint8_t format, uint32_t start); static int read_bits_signed(bit_iterator_t *it, int n_bits, lv_fs_res_t * res); static int read_bits(bit_iterator_t *it, int n_bits, lv_fs_res_t * res); @@ -123,20 +124,37 @@ void lv_font_free(lv_font_t * font) lv_font_fmt_txt_dsc_t * dsc = (lv_font_fmt_txt_dsc_t *) font->dsc; if(NULL != dsc) { - lv_font_fmt_txt_kern_classes_t * kern_dsc = - (lv_font_fmt_txt_kern_classes_t *) dsc->kern_dsc; - if(NULL != kern_dsc) { - if(kern_dsc->class_pair_values) - lv_mem_free((void *) kern_dsc->class_pair_values); + if (dsc->kern_classes == 0) { + lv_font_fmt_txt_kern_pair_t * kern_dsc = + (lv_font_fmt_txt_kern_pair_t *) dsc->kern_dsc; - if(kern_dsc->left_class_mapping) - lv_mem_free((void *) kern_dsc->left_class_mapping); + if(NULL != kern_dsc) { + if(kern_dsc->glyph_ids) + lv_mem_free((void *) kern_dsc->glyph_ids); - if(kern_dsc->right_class_mapping) - lv_mem_free((void *) kern_dsc->right_class_mapping); + if(kern_dsc->values) + lv_mem_free((void *) kern_dsc->values); - lv_mem_free((void *) kern_dsc); + lv_mem_free((void *) kern_dsc); + } + } + else { + lv_font_fmt_txt_kern_classes_t * kern_dsc = + (lv_font_fmt_txt_kern_classes_t *) dsc->kern_dsc; + + if(NULL != kern_dsc) { + if(kern_dsc->class_pair_values) + lv_mem_free((void *) kern_dsc->class_pair_values); + + if(kern_dsc->left_class_mapping) + lv_mem_free((void *) kern_dsc->left_class_mapping); + + if(kern_dsc->right_class_mapping) + lv_mem_free((void *) kern_dsc->right_class_mapping); + + lv_mem_free((void *) kern_dsc); + } } lv_font_fmt_txt_cmap_t * cmaps = @@ -228,6 +246,237 @@ static int read_label(lv_fs_file_t *fp, int start, const char *label) return length; } +static bool load_cmaps_tables(lv_fs_file_t *fp, lv_font_fmt_txt_dsc_t * font_dsc, + uint32_t cmaps_start, cmap_table_bin_t * cmap_table) +{ + for(unsigned int i = 0; i < font_dsc->cmap_num; ++i) { + if(lv_fs_read(fp, &cmap_table[i], sizeof(cmap_table_bin_t), NULL) != LV_FS_RES_OK) { + return false; + } + + lv_font_fmt_txt_cmap_t * cmap = (lv_font_fmt_txt_cmap_t *) &(font_dsc->cmaps[i]); + + cmap->range_start = cmap_table[i].range_start; + cmap->range_length = cmap_table[i].range_length; + cmap->glyph_id_start = cmap_table[i].glyph_id_start; + } + + for(unsigned int i = 0; i < font_dsc->cmap_num; ++i) { + lv_fs_res_t res = lv_fs_seek(fp, cmaps_start + cmap_table[i].data_offset); + if(res != LV_FS_RES_OK) { + return false; + } + + lv_font_fmt_txt_cmap_t * cmap = (lv_font_fmt_txt_cmap_t *) &(font_dsc->cmaps[i]); + + switch(cmap_table[i].format_type) { + case 0: + { + uint8_t ids_size = sizeof(uint8_t) * cmap_table[i].data_entries_count; + uint8_t * glyph_id_ofs_list = lv_mem_alloc(ids_size); + + cmap->glyph_id_ofs_list = glyph_id_ofs_list; + + if(lv_fs_read(fp, glyph_id_ofs_list, ids_size, NULL) != LV_FS_RES_OK) { + return false; + } + + cmap->type = LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL; + cmap->list_length = cmap->range_length; + cmap->unicode_list = NULL; + break; + } + case 2: + cmap->type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY; + cmap->list_length = 0; + cmap->unicode_list = NULL; + cmap->glyph_id_ofs_list = NULL; + break; + case 1: + case 3: + { + uint32_t list_size = sizeof(uint16_t) * cmap_table[i].data_entries_count; + uint16_t * unicode_list = (uint16_t *) lv_mem_alloc(list_size); + + cmap->unicode_list = unicode_list; + cmap->list_length = cmap_table[i].data_entries_count; + + if(lv_fs_read(fp, unicode_list, list_size, NULL) != LV_FS_RES_OK) { + return false; + } + + if (cmap_table[i].format_type == 1) + { + uint16_t * buf = lv_mem_alloc(sizeof(uint16_t) * cmap->list_length); + + cmap->type = LV_FONT_FMT_TXT_CMAP_SPARSE_FULL; + cmap->glyph_id_ofs_list = buf; + + if(lv_fs_read(fp, buf, sizeof(uint16_t) * cmap->list_length, NULL) != LV_FS_RES_OK) { + return false; + } + } + else + { + cmap->type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY; + cmap->glyph_id_ofs_list = NULL; + } + break; + } + default: + LV_LOG_WARN("Unknown cmaps format type %d.", cmap_table[i].format_type); + return false; + } + } + return true; +} + +static int32_t load_cmaps(lv_fs_file_t *fp, lv_font_fmt_txt_dsc_t * font_dsc, uint32_t cmaps_start) +{ + int32_t cmaps_length = read_label(fp, cmaps_start, "cmap"); + if (cmaps_length < 0) { + return -1; + } + + uint32_t cmaps_subtables_count; + if(lv_fs_read(fp, &cmaps_subtables_count, sizeof(uint32_t), NULL) != LV_FS_RES_OK) { + return -1; + } + + lv_font_fmt_txt_cmap_t * cmaps = + lv_mem_alloc(cmaps_subtables_count * sizeof(lv_font_fmt_txt_cmap_t)); + + memset(cmaps, 0, cmaps_subtables_count * sizeof(lv_font_fmt_txt_cmap_t)); + + font_dsc->cmaps = cmaps; + font_dsc->cmap_num = cmaps_subtables_count; + + cmap_table_bin_t * cmaps_tables = lv_mem_alloc(sizeof(cmap_table_bin_t) * font_dsc->cmap_num); + + bool success = load_cmaps_tables(fp, font_dsc, cmaps_start, cmaps_tables); + + lv_mem_free(cmaps_tables); + + return success ? cmaps_length : -1; +} + +static int32_t load_glyph(lv_fs_file_t *fp, lv_font_fmt_txt_dsc_t * font_dsc, + uint32_t start, uint32_t *glyph_offset, uint32_t loca_count, font_header_bin_t *header) +{ + int32_t glyph_length = read_label(fp, start, "glyf"); + if (glyph_length < 0) { + return -1; + } + + lv_font_fmt_txt_glyph_dsc_t * glyph_dsc = (lv_font_fmt_txt_glyph_dsc_t *) + lv_mem_alloc(loca_count * sizeof(lv_font_fmt_txt_glyph_dsc_t)); + + memset(glyph_dsc, 0, loca_count * sizeof(lv_font_fmt_txt_glyph_dsc_t)); + + font_dsc->glyph_dsc = glyph_dsc; + + int cur_bmp_size = 0; + + for(unsigned int i = 0; i < loca_count; ++i) { + lv_font_fmt_txt_glyph_dsc_t * gdsc = &glyph_dsc[i]; + + lv_fs_res_t res = lv_fs_seek(fp, start + glyph_offset[i]); + if(res != LV_FS_RES_OK) { + return -1; + } + + bit_iterator_t bit_it = init_bit_iterator(fp); + + if(header->advance_width_bits == 0) { + gdsc->adv_w = header->default_advance_width; + } + else { + gdsc->adv_w = read_bits(&bit_it, header->advance_width_bits, &res); + if(res != LV_FS_RES_OK) { + return -1; + } + } + + if(header->advance_width_format == 0) { + gdsc->adv_w *= 16; + } + + gdsc->ofs_x = read_bits_signed(&bit_it, header->xy_bits, &res); + if(res != LV_FS_RES_OK) { + return -1; + } + + gdsc->ofs_y = read_bits_signed(&bit_it, header->xy_bits, &res); + if(res != LV_FS_RES_OK) { + return -1; + } + + gdsc->box_w = read_bits(&bit_it, header->wh_bits, &res); + if(res != LV_FS_RES_OK) { + return -1; + } + + gdsc->box_h = read_bits(&bit_it, header->wh_bits, &res); + if(res != LV_FS_RES_OK) { + return -1; + } + + int nbits = header->advance_width_bits + 2 * header->xy_bits + 2 * header->wh_bits; + int next_offset = (i < loca_count - 1) ? glyph_offset[i + 1] : (uint32_t) (glyph_length - 1); + int bmp_size = next_offset - glyph_offset[i] - nbits / 8; + + if(i == 0) { + gdsc->adv_w = 0; + gdsc->box_w = 0; + gdsc->box_h = 0; + gdsc->ofs_x = 0; + gdsc->ofs_y = 0; + } + + gdsc->bitmap_index = cur_bmp_size; + if(gdsc->box_w * gdsc->box_h != 0) { + cur_bmp_size += bmp_size; + } + } + + uint8_t * glyph_bmp = (uint8_t *) lv_mem_alloc(sizeof(uint8_t) * cur_bmp_size); + + font_dsc->glyph_bitmap = glyph_bmp; + + cur_bmp_size = 0; + + for(unsigned int i = 1; i < loca_count; ++i) { + lv_fs_res_t res = lv_fs_seek(fp, start + glyph_offset[i]); + if(res != LV_FS_RES_OK) { + return -1; + } + bit_iterator_t bit_it = init_bit_iterator(fp); + + int nbits = header->advance_width_bits + 2 * header->xy_bits + 2 * header->wh_bits; + + read_bits(&bit_it, nbits, &res); + if(res != LV_FS_RES_OK) { + return -1; + } + + if(glyph_dsc[i].box_w * glyph_dsc[i].box_h == 0) { + continue; + } + + int next_offset = (i < loca_count - 1) ? glyph_offset[i + 1] : (uint32_t) (glyph_length - 1); + int bmp_size = next_offset - glyph_offset[i] - nbits / 8; + + for(int k = 0; k < bmp_size; ++k) { + glyph_bmp[cur_bmp_size + k] = read_bits(&bit_it, 8, &res); + if(res != LV_FS_RES_OK) { + return -1; + } + } + cur_bmp_size += bmp_size; + } + return glyph_length; +} + static bool lvgl_load_font(lv_fs_file_t * fp, lv_font_t * font) { lv_font_fmt_txt_dsc_t * font_dsc = (lv_font_fmt_txt_dsc_t *) @@ -246,7 +495,7 @@ static bool lvgl_load_font(lv_fs_file_t * fp, lv_font_t * font) font_header_bin_t font_header; if(lv_fs_read(fp, &font_header, sizeof(font_header_bin_t), NULL) != LV_FS_RES_OK) { return false; - } + } font->base_line = -font_header.descent; font->line_height = font_header.ascent - font_header.descent; @@ -263,79 +512,11 @@ static bool lvgl_load_font(lv_fs_file_t * fp, lv_font_t * font) /* cmaps */ uint32_t cmaps_start = header_length; - int32_t cmaps_length = read_label(fp, cmaps_start, "cmap"); + int32_t cmaps_length = load_cmaps(fp, font_dsc, cmaps_start); if (cmaps_length < 0) { return false; } - uint32_t cmaps_subtables_count; - if(lv_fs_read(fp, &cmaps_subtables_count, sizeof(uint32_t), NULL) != LV_FS_RES_OK) { - return false; - } - - lv_font_fmt_txt_cmap_t * cmaps = - lv_mem_alloc(cmaps_subtables_count * sizeof(lv_font_fmt_txt_cmap_t)); - - memset(cmaps, 0, cmaps_subtables_count * sizeof(lv_font_fmt_txt_cmap_t)); - - font_dsc->cmaps = cmaps; - font_dsc->cmap_num = cmaps_subtables_count; - - for(unsigned int i = 0; i < font_dsc->cmap_num; ++i) { - lv_font_fmt_txt_cmap_t * cmap = &cmaps[i]; - - cmap_table_bin_t cmap_table; - if(lv_fs_read(fp, &cmap_table, sizeof(cmap_table_bin_t), NULL) != LV_FS_RES_OK) { - return false; - } - cmap->range_start = cmap_table.range_start; - cmap->range_length = cmap_table.range_length; - cmap->glyph_id_start = cmap_table.glyph_id_start; - - switch(cmap_table.format_type) { - case 0: - { - uint8_t ids_size = sizeof(uint8_t) * cmap->range_length; - uint8_t * glyph_id_ofs_list = lv_mem_alloc(ids_size); - if(lv_fs_read(fp, glyph_id_ofs_list, ids_size, NULL) != LV_FS_RES_OK) { - return false; - } - cmap->type = LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL; - cmap->unicode_list = NULL; - cmap->glyph_id_ofs_list = glyph_id_ofs_list; - cmap->list_length = 0; - break; - } - case 1: - LV_LOG_WARN("cmap format: 1 not yet supported."); - return false; - case 2: - cmap->type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY; - cmap->unicode_list = NULL; - cmap->glyph_id_ofs_list = NULL; - cmap->list_length = 0; - break; - case 3: - { - uint8_t list_size = sizeof(uint16_t) * cmap_table.data_entries_count; - uint16_t * unicode_list = (uint16_t *) lv_mem_alloc(list_size); - - if(lv_fs_read(fp, unicode_list, list_size, NULL) != LV_FS_RES_OK) { - return false; - } - - cmap->type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY; - cmap->unicode_list = unicode_list; - cmap->glyph_id_ofs_list = NULL; - cmap->list_length = cmap_table.data_entries_count; - break; - } - default: - LV_LOG_WARN("Unknown cmaps format type %d.", cmap_table.format_type); - return false; - } - } - /* loca */ uint32_t loca_start = cmaps_start + cmaps_length; int32_t loca_length = read_label(fp, loca_start, "loca"); @@ -382,158 +563,12 @@ static bool lvgl_load_font(lv_fs_file_t * fp, lv_font_t * font) /* glyph */ uint32_t glyph_start = loca_start + loca_length; - int32_t glyph_length = read_label(fp, glyph_start, "glyf"); - if (glyph_length < 0) { - lv_mem_free(glyph_offset); - return false; - } - - lv_font_fmt_txt_glyph_dsc_t * glyph_dsc = (lv_font_fmt_txt_glyph_dsc_t *) - lv_mem_alloc((loca_count + 1) * sizeof(lv_font_fmt_txt_glyph_dsc_t)); - - memset(glyph_dsc, 0, - (loca_count + 1) * sizeof(lv_font_fmt_txt_glyph_dsc_t)); - - font_dsc->glyph_dsc = glyph_dsc; - - int cur_bmp_size = 0; - - for(unsigned int i = 0; i < loca_count; ++i) { - lv_font_fmt_txt_glyph_dsc_t * gdsc = &glyph_dsc[i]; - - lv_fs_res_t res = lv_fs_seek(fp, glyph_start + glyph_offset[i]); - if(res != LV_FS_RES_OK) { - failed = true; - break; - } - - bit_iterator_t bit_it = init_bit_iterator(fp); - - /* - * TODO: understand how to interpret advance_width_format - * When it is set to zero, in my understanding should be used the default value, - * and no data should be written on the advance_width, but it is not occurring. - * - * The following code is not working for most monospaced fonts. - */ - - /*if(font_header.advance_width_bits == 0) { - gdsc->adv_w = font_header.default_advance_width; - } - else */ { - if(font_header.advance_width_format == 0) { /* uint */ - gdsc->adv_w = 16 * read_bits(&bit_it, 4, &res); // TODO: review the number of bits that should be read - if(res != LV_FS_RES_OK) { - failed = true; - break; - } - } - else if(font_header.advance_width_format == 1) { /* unsigned with 4 bits fractional part */ - gdsc->adv_w = read_bits(&bit_it, font_header.advance_width_bits, &res); - if(res != LV_FS_RES_OK) { - failed = true; - break; - } - } - else { - LV_LOG_WARN("error unknown advance_width_format"); - failed = true; - break; - } - } - - gdsc->ofs_x = read_bits_signed(&bit_it, font_header.xy_bits, &res); - if(res != LV_FS_RES_OK) { - failed = true; - break; - } - - gdsc->ofs_y = read_bits_signed(&bit_it, font_header.xy_bits, &res); - if(res != LV_FS_RES_OK) { - failed = true; - break; - } - - gdsc->box_w = read_bits(&bit_it, font_header.wh_bits, &res); - if(res != LV_FS_RES_OK) { - failed = true; - break; - } - - gdsc->box_h = read_bits(&bit_it, font_header.wh_bits, &res); - if(res != LV_FS_RES_OK) { - failed = true; - break; - } - - int nbits = font_header.advance_width_bits + 2 * font_header.xy_bits + 2 * font_header.wh_bits; - int next_offset = (i < loca_count - 1) ? glyph_offset[i + 1] : (uint32_t) glyph_length; - int bmp_size = next_offset - glyph_offset[i] - nbits / 8; - - if(i == 0) { - gdsc->adv_w = 0; - gdsc->box_w = 0; - gdsc->box_h = 0; - gdsc->ofs_x = 0; - gdsc->ofs_y = 0; - } - - gdsc->bitmap_index = cur_bmp_size; - if(gdsc->box_w * gdsc->box_h != 0) { - cur_bmp_size += bmp_size; - } - } - - if (failed) { - lv_mem_free(glyph_offset); - return false; - } - - uint8_t * glyph_bmp = (uint8_t *) lv_mem_alloc(sizeof(uint8_t) * cur_bmp_size); - - font_dsc->glyph_bitmap = glyph_bmp; - - cur_bmp_size = 0; - - for(unsigned int i = 1; i < loca_count; ++i) { - lv_fs_res_t res = lv_fs_seek(fp, glyph_start + glyph_offset[i]); - if(res != LV_FS_RES_OK) { - failed = true; - break; - } - bit_iterator_t bit_it = init_bit_iterator(fp); - - int nbits = font_header.advance_width_bits + 2 * font_header.xy_bits + 2 * font_header.wh_bits; - - read_bits(&bit_it, nbits, &res); - if(res != LV_FS_RES_OK) { - failed = true; - break; - } - - if(glyph_dsc[i].box_w * glyph_dsc[i].box_h == 0) { - continue; - } - - int next_offset = (i < loca_count - 1) ? glyph_offset[i + 1] : (uint32_t) glyph_length; - int bmp_size = next_offset - glyph_offset[i] - nbits / 8; - - for(int k = 0; k < bmp_size; ++k) { - glyph_bmp[cur_bmp_size + k] = read_bits(&bit_it, 8, &res); - if(res != LV_FS_RES_OK) { - failed = true; - break; - } - } - if (failed) { - break; - } - cur_bmp_size += bmp_size; - } + int32_t glyph_length = load_glyph( + fp, font_dsc, glyph_start, glyph_offset, loca_count, &font_header); lv_mem_free(glyph_offset); - if (failed) { + if (glyph_length < 0) { return false; } @@ -545,32 +580,72 @@ static bool lvgl_load_font(lv_fs_file_t * fp, lv_font_t * font) } uint32_t kern_start = glyph_start + glyph_length; - int32_t kern_length = read_label(fp, kern_start, "kern"); + + int32_t kern_length = load_kern(fp, font_dsc, font_header.glyph_id_format, kern_start); + + return kern_length >= 0; +} + +int32_t load_kern(lv_fs_file_t *fp, lv_font_fmt_txt_dsc_t * font_dsc, uint8_t format, uint32_t start) +{ + int32_t kern_length = read_label(fp, start, "kern"); if (kern_length < 0) { - return false; + return -1; } uint8_t kern_format_type; int32_t padding; if (lv_fs_read(fp, &kern_format_type, sizeof(uint8_t), NULL) != LV_FS_RES_OK || lv_fs_read(fp, &padding, 3 * sizeof(uint8_t), NULL) != LV_FS_RES_OK) { - return false; + return -1; } - lv_font_fmt_txt_kern_classes_t * kern_classes = - lv_mem_alloc(sizeof(lv_font_fmt_txt_kern_classes_t)); - - memset(kern_classes, 0, sizeof(lv_font_fmt_txt_kern_classes_t)); - - font_dsc->kern_dsc = kern_classes; /* TODO: review */ - font_dsc->kern_classes = 1; /* TODO: review this */ - if(0 == kern_format_type) { /* sorted pairs */ - LV_LOG_WARN("kern_format_type 0 not supported yet!"); - return false; + lv_font_fmt_txt_kern_pair_t * kern_pair = lv_mem_alloc(sizeof(lv_font_fmt_txt_kern_pair_t)); + + memset(kern_pair, 0, sizeof(lv_font_fmt_txt_kern_pair_t)); + + font_dsc->kern_dsc = kern_pair; + font_dsc->kern_classes = 0; + + uint32_t glyph_entries; + if (lv_fs_read(fp, &glyph_entries, sizeof(uint32_t), NULL) != LV_FS_RES_OK) { + return -1; + } + + int ids_size; + if (format == 0) { + ids_size = sizeof(int8_t) * 2 * glyph_entries; + } + else { + ids_size = sizeof(int16_t) * 2 * glyph_entries; + } + + uint8_t * glyph_ids = lv_mem_alloc(ids_size); + int8_t * values = lv_mem_alloc(glyph_entries); + + kern_pair->glyph_ids_size = format; + kern_pair->pair_cnt = glyph_entries; + kern_pair->glyph_ids = glyph_ids; + kern_pair->values = values; + + if (lv_fs_read(fp, glyph_ids, ids_size, NULL) != LV_FS_RES_OK) { + return -1; + } + + if (lv_fs_read(fp, values, glyph_entries, NULL) != LV_FS_RES_OK) { + return -1; + } } else if(3 == kern_format_type) { /* array M*N of classes */ + lv_font_fmt_txt_kern_classes_t * kern_classes = lv_mem_alloc(sizeof(lv_font_fmt_txt_kern_classes_t)); + + memset(kern_classes, 0, sizeof(lv_font_fmt_txt_kern_classes_t)); + + font_dsc->kern_dsc = kern_classes; + font_dsc->kern_classes = 1; + uint16_t kern_class_mapping_length; uint8_t kern_table_rows; uint8_t kern_table_cols; @@ -578,35 +653,33 @@ static bool lvgl_load_font(lv_fs_file_t * fp, lv_font_t * font) if(lv_fs_read(fp, &kern_class_mapping_length, sizeof(uint16_t), NULL) != LV_FS_RES_OK || lv_fs_read(fp, &kern_table_rows, sizeof(uint8_t), NULL) != LV_FS_RES_OK || lv_fs_read(fp, &kern_table_cols, sizeof(uint8_t), NULL) != LV_FS_RES_OK) { - return false; + return -1; } - kern_classes->left_class_cnt = kern_table_rows; - kern_classes->right_class_cnt = kern_table_cols; + int kern_values_length = sizeof(int8_t) * kern_table_rows * kern_table_cols; uint8_t * kern_left = lv_mem_alloc(kern_class_mapping_length); uint8_t * kern_right = lv_mem_alloc(kern_class_mapping_length); + int8_t * kern_values = lv_mem_alloc(kern_values_length); kern_classes->left_class_mapping = kern_left; kern_classes->right_class_mapping = kern_right; - - int kern_values_length = sizeof(int8_t) * kern_table_rows * kern_table_cols; - int8_t * kern_values = (int8_t *) lv_mem_alloc(kern_values_length); - + kern_classes->left_class_cnt = kern_table_rows; + kern_classes->right_class_cnt = kern_table_cols; kern_classes->class_pair_values = kern_values; if(lv_fs_read(fp, kern_left, kern_class_mapping_length, NULL) != LV_FS_RES_OK || lv_fs_read(fp, kern_right, kern_class_mapping_length, NULL) != LV_FS_RES_OK || lv_fs_read(fp, kern_values, kern_values_length, NULL) != LV_FS_RES_OK) { - return false; + return -1; } } else { - LV_LOG_WARN("kern_format_type %d not supported yet!", kern_format_type); - return false; + LV_LOG_WARN("Unknown kern_format_type: %d", kern_format_type); + return -1; } - return true; + return kern_length; } #endif /*LV_USE_FILESYSTEM*/ diff --git a/tests/Makefile b/tests/Makefile index c429a5b8f..429862de6 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -31,6 +31,9 @@ CSRCS += lv_test_core/lv_test_core.c CSRCS += lv_test_core/lv_test_obj.c CSRCS += lv_test_core/lv_test_style.c CSRCS += lv_test_core/lv_test_font_loader.c +CSRCS += lv_test_fonts/font_1.c +CSRCS += lv_test_fonts/font_2.c +CSRCS += lv_test_fonts/font_3.c OBJEXT ?= .o diff --git a/tests/font_1.fnt b/tests/font_1.fnt new file mode 100644 index 0000000000000000000000000000000000000000..bc701d5f99670f0ea498f2bf56dbdb31e0af4eda GIT binary patch literal 6876 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 literal 0 HcmV?d00001 diff --git a/tests/font_2.fnt b/tests/font_2.fnt new file mode 100644 index 0000000000000000000000000000000000000000..3b648e9d098c26e6c144d4c76043d5ee9dde0403 GIT binary patch literal 7252 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 LubT6T1OWd7oV(KG literal 0 HcmV?d00001 diff --git a/tests/lv_test_assert.c b/tests/lv_test_assert.c index a81d48ea4..c4edc0d37 100644 --- a/tests/lv_test_assert.c +++ b/tests/lv_test_assert.c @@ -143,6 +143,17 @@ void lv_test_assert_str_eq(const char * s_ref, const char * s_act, const char * } } + +void lv_test_assert_array_eq(const uint8_t *p_ref, const uint8_t *p_act, int32_t size, const char * s) +{ + if(memcmp(p_ref, p_act, size) != 0) { + lv_test_error(" FAIL: %s. (Expected: all %d bytes should be equal)", s, size); + } else { + lv_test_print(" PASS: %s. (Expected: all %d bytes should be equal)", s, size); + } +} + + void lv_test_assert_ptr_eq(const void * p_ref, const void * p_act, const char * s) { if(p_ref != p_act) { diff --git a/tests/lv_test_assert.h b/tests/lv_test_assert.h index c95db784f..8d006ecf4 100644 --- a/tests/lv_test_assert.h +++ b/tests/lv_test_assert.h @@ -40,6 +40,7 @@ void lv_test_assert_str_eq(const char * str1, const char * str2, const char * s) void lv_test_assert_ptr_eq(const void * p_ref, const void * p_act, const char * s); void lv_test_assert_color_eq(lv_color_t c_ref, lv_color_t c_act, const char * s); void lv_test_assert_img_eq(const char * ref_img_fn, const char * s); +void lv_test_assert_array_eq(const uint8_t *p_ref, const uint8_t *p_act, int32_t size, const char * s); /********************** * MACROS diff --git a/tests/lv_test_core/lv_test_font_loader.c b/tests/lv_test_core/lv_test_font_loader.c index d0fda75b9..2d15b33ab 100644 --- a/tests/lv_test_core/lv_test_font_loader.c +++ b/tests/lv_test_core/lv_test_font_loader.c @@ -42,15 +42,28 @@ static int compare_fonts(lv_font_t * f1, lv_font_t * f2); * GLOBAL FUNCTIONS **********************/ +extern lv_font_t font_1; +extern lv_font_t font_2; +extern lv_font_t font_3; + void lv_test_font_loader(void) { - lv_font_t * montserrat_12_bin = lv_font_load("f:lv_font_montserrat_12.bin"); - compare_fonts(&lv_font_montserrat_12, montserrat_12_bin); + lv_font_t * font_1_bin = lv_font_load("f:font_1.fnt"); + lv_font_t * font_2_bin = lv_font_load("f:font_2.fnt"); + lv_font_t * font_3_bin = lv_font_load("f:font_3.fnt"); + + compare_fonts(&font_1, font_1_bin); + compare_fonts(&font_2, font_2_bin); + compare_fonts(&font_3, font_3_bin); + + lv_font_free(font_1_bin); + lv_font_free(font_2_bin); + lv_font_free(font_3_bin); } static int compare_fonts(lv_font_t * f1, lv_font_t * f2) { - lv_test_assert_true(f1 != NULL && f2 != NULL, "error loading font"); + lv_test_assert_true(f1 != NULL && f2 != NULL, "font not null"); lv_test_assert_ptr_eq(f1->get_glyph_dsc, f2->get_glyph_dsc, "glyph_dsc"); lv_test_assert_ptr_eq(f1->get_glyph_bitmap, f2->get_glyph_bitmap, "glyph_bitmap"); @@ -83,9 +96,11 @@ static int compare_fonts(lv_font_t * f1, lv_font_t * f2) if(cmaps1->unicode_list != NULL && cmaps2->unicode_list != NULL) { lv_test_assert_true(cmaps1->unicode_list && cmaps2->unicode_list, "unicode_list"); - for(int k = 0; k < cmaps1->list_length; ++k) { - lv_test_assert_int_eq(cmaps1->unicode_list[k], cmaps2->unicode_list[k], "unicode_list"); - } + lv_test_assert_array_eq( + (uint8_t *) cmaps1->unicode_list, + (uint8_t *) cmaps2->unicode_list, + sizeof(uint16_t) * cmaps1->list_length, + "unicode_list"); total_glyphs += cmaps1->list_length; } else { @@ -97,9 +112,7 @@ static int compare_fonts(lv_font_t * f1, lv_font_t * f2) uint8_t * ids1 = (uint8_t *) cmaps1->glyph_id_ofs_list; uint8_t * ids2 = (uint8_t *) cmaps2->glyph_id_ofs_list; - for(int j = 0; j < cmaps1->range_length; j++) { - lv_test_assert_int_eq(ids1[j], ids2[j], "glyph_id_ofs_list"); - } + lv_test_assert_array_eq(ids1, ids2, cmaps1->list_length, "glyph_id_ofs_list"); } else { lv_test_assert_ptr_eq(cmaps1->glyph_id_ofs_list, cmaps2->glyph_id_ofs_list, "glyph_id_ofs_list"); @@ -107,37 +120,74 @@ static int compare_fonts(lv_font_t * f1, lv_font_t * f2) } // kern_dsc - lv_font_fmt_txt_kern_classes_t * kern1 = (lv_font_fmt_txt_kern_classes_t *) dsc1->kern_dsc; - lv_font_fmt_txt_kern_classes_t * kern2 = (lv_font_fmt_txt_kern_classes_t *) dsc2->kern_dsc; - if (kern1 != NULL && kern2 != NULL) { - lv_test_assert_int_eq(kern1->right_class_cnt, kern2->right_class_cnt, "right_class_cnt"); - lv_test_assert_int_eq(kern1->left_class_cnt, kern2->left_class_cnt, "left_class_cnt"); + if (dsc1->kern_classes == 1 && dsc2->kern_classes == 1) { + lv_font_fmt_txt_kern_classes_t * kern1 = (lv_font_fmt_txt_kern_classes_t *) dsc1->kern_dsc; + lv_font_fmt_txt_kern_classes_t * kern2 = (lv_font_fmt_txt_kern_classes_t *) dsc2->kern_dsc; + if (kern1 != NULL && kern2 != NULL) { + lv_test_assert_int_eq(kern1->right_class_cnt, kern2->right_class_cnt, "right_class_cnt"); + lv_test_assert_int_eq(kern1->left_class_cnt, kern2->left_class_cnt, "left_class_cnt"); - for(int i = 0; i < kern1->left_class_cnt; ++i) { - lv_test_assert_int_eq(kern1->left_class_mapping[i], - kern2->left_class_mapping[i], "left_class_mapping"); - } - for(int i = 0; i < kern1->right_class_cnt; ++i) { - lv_test_assert_int_eq(kern1->right_class_mapping[i], - kern2->right_class_mapping[i], "right_class_mapping"); - } + lv_test_assert_array_eq( + (uint8_t *) kern1->left_class_mapping, + (uint8_t *) kern2->left_class_mapping, + kern1->left_class_cnt, + "left_class_mapping"); - for(int i = 0; i < kern1->right_class_cnt * kern1->left_class_cnt; ++i) { - lv_test_assert_int_eq(kern1->class_pair_values[i], - kern2->class_pair_values[i], "class_pair_values"); + lv_test_assert_array_eq( + (uint8_t *) kern1->right_class_mapping, + (uint8_t *) kern2->right_class_mapping, + kern1->right_class_cnt, + "right_class_mapping"); + + lv_test_assert_array_eq( + (uint8_t *) kern1->class_pair_values, + (uint8_t *) kern2->class_pair_values, + kern1->right_class_cnt * kern1->left_class_cnt, + "class_pair_values"); + } + else { + lv_test_assert_ptr_eq(kern1, kern2, "kern"); } } - else { - lv_test_assert_ptr_eq(kern1, kern2, "kern"); - } + else if (dsc1->kern_classes == 0 && dsc2->kern_classes == 0) { + lv_font_fmt_txt_kern_pair_t * kern1 = (lv_font_fmt_txt_kern_pair_t *) dsc1->kern_dsc; + lv_font_fmt_txt_kern_pair_t * kern2 = (lv_font_fmt_txt_kern_pair_t *) dsc2->kern_dsc; + if (kern1 != NULL && kern2 != NULL) { + lv_test_assert_int_eq(kern1->glyph_ids_size, kern2->glyph_ids_size, "glyph_ids_size"); + lv_test_assert_int_eq(kern1->pair_cnt, kern2->pair_cnt, "pair_cnt"); - // TODO: glyph_bitmap + int ids_size; + + if (kern1->glyph_ids_size == 0) { + ids_size = sizeof(int8_t) * 2 * kern1->pair_cnt; + } + else { + ids_size = sizeof(int16_t) * 2 * kern1->pair_cnt; + } + + lv_test_assert_array_eq(kern1->glyph_ids, kern2->glyph_ids, ids_size, "glyph_ids"); + lv_test_assert_array_eq( + (uint8_t * ) kern1->values, + (uint8_t * ) kern2->values, + kern1->pair_cnt, + "glyph_values"); + } + } lv_font_fmt_txt_glyph_dsc_t * glyph_dsc1 = (lv_font_fmt_txt_glyph_dsc_t *) dsc1->glyph_dsc; lv_font_fmt_txt_glyph_dsc_t * glyph_dsc2 = (lv_font_fmt_txt_glyph_dsc_t *) dsc2->glyph_dsc; for(int i = 0; i < total_glyphs; ++i) { - //lv_test_assert_int_eq(glyph_dsc1[i].bitmap_index, glyph_dsc2[i].bitmap_index, "bitmap_index"); + if (i < total_glyphs - 1) { + int size1 = glyph_dsc1[i+1].bitmap_index - glyph_dsc1[i].bitmap_index; + + if (size1 > 0) { + lv_test_assert_array_eq( + dsc1->glyph_bitmap + glyph_dsc1[i].bitmap_index, + dsc2->glyph_bitmap + glyph_dsc2[i].bitmap_index, + size1 - 1, "glyph_bitmap"); + } + } lv_test_assert_int_eq(glyph_dsc1[i].adv_w, glyph_dsc2[i].adv_w, "adv_w"); lv_test_assert_int_eq(glyph_dsc1[i].box_w, glyph_dsc2[i].box_w, "box_w"); lv_test_assert_int_eq(glyph_dsc1[i].box_h, glyph_dsc2[i].box_h, "box_h"); diff --git a/tests/lv_test_fonts/font_1.c b/tests/lv_test_fonts/font_1.c new file mode 100644 index 000000000..e94b63ff3 --- /dev/null +++ b/tests/lv_test_fonts/font_1.c @@ -0,0 +1,1383 @@ +#include "lvgl/lvgl.h" + +/******************************************************************************* + * Size: 8 px + * Bpp: 4 + * Opts: --bpp 4 --size 8 --font ../Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022 --font ../FontAwesome5-Solid+Brands+Regular.woff -r 61441,61448,61451,61452,61452,61453,61457,61459,61461,61465,61468,61473,61478,61479,61480,61502,61512,61515,61516,61517,61521,61522,61523,61524,61543,61544,61550,61552,61553,61556,61559,61560,61561,61563,61587,61589,61636,61637,61639,61671,61674,61683,61724,61732,61787,61931,62016,62017,62018,62019,62020,62087,62099,62212,62189,62810,63426,63650 --format lvgl -o ..\generated_fonts/font_1.c + ******************************************************************************/ + +#ifndef FONT_1 +#define FONT_1 1 +#endif + +#if FONT_1 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = { + /* U+20 " " */ + + /* U+21 "!" */ + 0x58, 0xf, 0x11, 0x32, 0xb2, 0x80, + + /* U+22 "\"" */ + 0x73, 0x90, 0x10, 0x72, 0x90, + + /* U+23 "#" */ + 0x4, 0x52, 0x60, 0x4f, 0xc9, 0xc3, 0x43, 0x9c, + 0x83, 0x64, 0x8b, 0xa1, 0x65, 0x85, 0x81, + + /* U+24 "$" */ + 0x0, 0x40, 0x0, 0xad, 0x68, 0x97, 0x56, 0x89, + 0xf9, 0x60, 0x42, 0x17, 0x21, 0x69, 0x7e, 0x96, + 0x96, 0xcc, + + /* U+25 "%" */ + 0x58, 0x70, 0x63, 0xd, 0x8f, 0x30, 0x30, 0xa7, + 0xdb, 0x7, 0x12, 0x7d, 0xa1, 0x57, 0x6, 0xa2, + 0xfa, 0x40, + + /* U+26 "&" */ + 0x9, 0x98, 0x2, 0x2a, 0x30, 0x0, 0x97, 0xc1, + 0x4, 0xd6, 0xc4, 0x2, 0xe6, 0xc, 0xc4, 0x75, + 0x33, 0x10, + + /* U+27 "'" */ + 0x72, 0x0, 0x39, 0x0, + + /* U+28 "(" */ + 0x8, 0x20, 0x32, 0x11, 0x1, 0x10, 0x8, 0x80, + 0x22, 0x0, 0x19, 0x0, + + /* U+29 ")" */ + 0x73, 0x6a, 0x12, 0x7, 0x7, 0x12, 0x6a, + + /* U+2A "*" */ + 0x48, 0x40, 0x26, 0xc0, 0x7b, 0x90, + + /* U+2B "+" */ + 0x0, 0x10, 0x6, 0x80, 0x2, 0x4b, 0xc8, 0xa4, + 0xbc, 0x88, + + /* U+2C "," */ + 0x0, 0x3a, 0x82, 0x0, + + /* U+2D "-" */ + 0x5a, 0x60, + + /* U+2E "." */ + 0x0, 0x3a, 0x0, + + /* U+2F "/" */ + 0x0, 0xa8, 0x2, 0x22, 0x0, 0x55, 0x40, 0x8, + 0x88, 0x0, 0x4c, 0x0, 0xb5, 0xc0, 0x2, 0x2, + 0x0, + + /* U+30 "0" */ + 0xa, 0xbb, 0x13, 0x65, 0xd4, 0xfa, 0x80, 0xbf, + 0xa8, 0xb, 0xb6, 0x5d, 0x48, + + /* U+31 "1" */ + 0x9e, 0x29, 0x40, 0xf, 0xf0, + + /* U+32 "2" */ + 0x6a, 0xb9, 0x6, 0xab, 0x50, 0x9, 0x50, 0x1, + 0x5, 0x1, 0x2d, 0xb4, 0x60, + + /* U+33 "3" */ + 0x7a, 0xbe, 0x7, 0xa1, 0xc0, 0x2, 0x5, 0x80, + 0x12, 0x8c, 0xa2, 0xa8, 0x64, + + /* U+34 "4" */ + 0x0, 0x24, 0x80, 0x47, 0xd2, 0x0, 0x18, 0xa8, + 0x20, 0x90, 0xa5, 0x92, 0x8b, 0xa4, 0x82, + + /* U+35 "5" */ + 0x3d, 0xaa, 0x3, 0x5d, 0x50, 0x1, 0xb5, 0x0, + 0xb7, 0x42, 0x6f, 0x54, 0x33, 0x0, + + /* U+36 "6" */ + 0x9, 0xaa, 0x1b, 0x75, 0x50, 0xff, 0xd3, 0x45, + 0xe1, 0x31, 0x6, 0x19, 0x8e, + + /* U+37 "7" */ + 0xca, 0xa6, 0xb5, 0xd5, 0x5, 0x9c, 0x1a, 0xc0, + 0x2a, 0x70, 0x3, 0x58, 0x0, + + /* U+38 "8" */ + 0x1a, 0xa5, 0x92, 0x65, 0x7d, 0x25, 0xd4, 0xdc, + 0xca, 0xb2, 0x2f, 0xa6, 0xfc, + + /* U+39 "9" */ + 0x4a, 0x99, 0x7, 0xdc, 0x82, 0xc5, 0xc8, 0x69, + 0xd4, 0x86, 0x9d, 0x58, 0xa8, + + /* U+3A ":" */ + 0x74, 0x74, 0x0, 0x3a, 0x0, + + /* U+3B ";" */ + 0x74, 0x74, 0x0, 0x3a, 0x8b, 0xb1, 0x0, + + /* U+3C "<" */ + 0x0, 0x84, 0x0, 0x93, 0x20, 0x58, 0xa8, 0x5, + 0xd5, 0x91, 0x1, 0x69, 0x10, + + /* U+3D "=" */ + 0x49, 0x98, 0x52, 0x66, 0x14, 0x99, 0x84, + + /* U+3E ">" */ + 0x10, 0xc, 0x53, 0x4, 0x7, 0x3d, 0xe2, 0x92, + 0x5a, 0x29, 0x28, 0x0, + + /* U+3F "?" */ + 0x6a, 0xb9, 0x6, 0xab, 0x50, 0xa, 0xa0, 0x2, + 0x94, 0x0, 0x15, 0x80, 0x0, + + /* U+40 "@" */ + 0x3, 0x87, 0x74, 0x28, 0x15, 0xe6, 0xf2, 0x12, + 0xd4, 0x7d, 0x4b, 0x2e, 0x80, 0x7e, 0xa8, 0xf9, + 0x91, 0xc7, 0x15, 0xe0, 0xf6, 0x53, 0x0, + + /* U+41 "A" */ + 0x0, 0xae, 0x40, 0x31, 0x9c, 0x20, 0x14, 0x4c, + 0xa0, 0x0, 0x8d, 0x14, 0x82, 0x1f, 0x93, 0x2e, + 0x80, + + /* U+42 "B" */ + 0x2d, 0x99, 0x58, 0x83, 0xcc, 0x8d, 0x41, 0xe6, + 0x95, 0x40, 0xf3, 0x5d, 0x0, 0xf3, 0x28, 0xd0, + + /* U+43 "C" */ + 0x7, 0xba, 0xa1, 0x2f, 0x5d, 0x50, 0xb2, 0x80, + 0x36, 0x50, 0x6, 0x5e, 0xba, 0xa1, 0x0, + + /* U+44 "D" */ + 0x2e, 0xab, 0xb1, 0x80, 0x12, 0xae, 0xbc, 0x3, + 0x85, 0x48, 0x3, 0xa, 0x90, 0x25, 0x5d, 0x78, + 0x0, + + /* U+45 "E" */ + 0x2e, 0xaa, 0x40, 0x25, 0x52, 0x1, 0xea, 0x88, + 0xf, 0x54, 0x40, 0x4a, 0xa4, 0x80, + + /* U+46 "F" */ + 0x2e, 0xaa, 0x40, 0x25, 0x52, 0x1, 0x2a, 0x88, + 0x9, 0x54, 0x40, 0xe, + + /* U+47 "G" */ + 0x7, 0xba, 0xa1, 0x2f, 0x5d, 0x50, 0xb2, 0x80, + 0x4, 0x79, 0x40, 0x6, 0x45, 0xeb, 0xae, 0x40, + + /* U+48 "H" */ + 0x2a, 0x0, 0x15, 0x0, 0x7c, 0x95, 0x49, 0x0, + 0x25, 0x52, 0x40, 0x3e, + + /* U+49 "I" */ + 0x2a, 0x0, 0xfc, + + /* U+4A "J" */ + 0x5, 0xad, 0x50, 0x5a, 0xa0, 0x7, 0xf7, 0x88, + 0x4d, 0x1a, 0x0, + + /* U+4B "K" */ + 0x2a, 0x1, 0xa2, 0x0, 0xd, 0x41, 0x3, 0x6e, + 0x10, 0x0, 0x77, 0x94, 0x0, 0xe3, 0x3e, 0x80, + + /* U+4C "L" */ + 0x2a, 0x0, 0xff, 0xe3, 0xa5, 0x51, 0xc0, + + /* U+4D "M" */ + 0x2c, 0x0, 0x8f, 0x0, 0x5c, 0x1, 0x0, 0x4, + 0xe2, 0x8f, 0x0, 0xa2, 0x45, 0x0, 0x21, 0x89, + 0x0, 0x0, + + /* U+4E "N" */ + 0x2d, 0x10, 0x2a, 0x1, 0xa0, 0xc, 0xdf, 0x60, + 0x19, 0x3b, 0x80, 0x19, 0x6c, 0x0, + + /* U+4F "O" */ + 0x7, 0xbb, 0x8c, 0x17, 0xae, 0xd5, 0xe3, 0x94, + 0x0, 0x14, 0x5c, 0xa0, 0x0, 0xa2, 0xab, 0xae, + 0xd5, 0xe2, + + /* U+50 "P" */ + 0x2e, 0xaa, 0x48, 0x1, 0x2a, 0x82, 0x80, 0x18, + 0x9c, 0x12, 0xa9, 0x86, 0x9, 0x54, 0x60, + + /* U+51 "Q" */ + 0x7, 0xbb, 0x8c, 0x17, 0xae, 0xd5, 0xe3, 0x94, + 0x0, 0x14, 0x5c, 0xa0, 0x9, 0x15, 0x5d, 0x77, + 0x78, 0x83, 0xdc, 0x15, 0x18, + + /* U+52 "R" */ + 0x2e, 0xaa, 0x48, 0x1, 0x2a, 0x82, 0x80, 0x18, + 0x9c, 0x1e, 0xb0, 0x8c, 0x1e, 0xb4, 0x84, + + /* U+53 "S" */ + 0x2a, 0xa8, 0x97, 0x2a, 0x84, 0xfd, 0x30, 0x21, + 0x13, 0x90, 0xb5, 0x4e, 0xa0, + + /* U+54 "T" */ + 0xaa, 0x75, 0x35, 0x50, 0xa9, 0x80, 0x3f, 0xf8, + 0x60, + + /* U+55 "U" */ + 0x39, 0x0, 0x24, 0x0, 0x7f, 0xf0, 0x9, 0x40, + 0x5, 0xc3, 0x57, 0x58, 0xc0, + + /* U+56 "V" */ + 0xb, 0x10, 0x2, 0xb8, 0x7c, 0x0, 0x39, 0xc1, + 0x14, 0x57, 0x0, 0x28, 0x84, 0xb8, 0x4, 0x8b, + 0x60, 0x0, + + /* U+57 "W" */ + 0x94, 0x0, 0x78, 0x81, 0xcd, 0x70, 0x33, 0x41, + 0x54, 0x36, 0xd, 0x9c, 0x2, 0x30, 0xb9, 0x30, + 0x39, 0xc0, 0x3, 0x32, 0x82, 0x99, 0x80, + + /* U+58 "X" */ + 0x58, 0x2, 0xa0, 0x50, 0x79, 0xb0, 0x4, 0x43, + 0x84, 0x1, 0x57, 0xc2, 0xf, 0x89, 0x34, 0x0, + + /* U+59 "Y" */ + 0xa, 0x20, 0x5, 0x80, 0x2e, 0x42, 0x60, 0x0, + 0x3d, 0x62, 0x60, 0x12, 0xb4, 0x0, 0x70, 0x80, + 0x40, + + /* U+5A "Z" */ + 0x6a, 0xa6, 0x68, 0x35, 0x5b, 0xe0, 0x5, 0x52, + 0x20, 0xb, 0x82, 0x0, 0x43, 0x4d, 0x50, 0x0, + + /* U+5B "[" */ + 0x2d, 0x40, 0x44, 0x0, 0x7f, 0xf0, 0x51, 0x0, + + /* U+5C "\\" */ + 0x19, 0x0, 0x84, 0xc0, 0x37, 0xa8, 0x4, 0xbe, + 0x1, 0x8c, 0x40, 0x2a, 0x60, 0x8, 0xf4, 0x0, + + /* U+5D "]" */ + 0x8c, 0x80, 0xf, 0xe8, 0x0, + + /* U+5E "^" */ + 0x3, 0xc0, 0xa, 0xa1, 0x40, 0xb9, 0x30, 0x0, + + /* U+5F "_" */ + 0x77, 0xc0, + + /* U+60 "`" */ + 0x6, 0x60, + + /* U+61 "a" */ + 0x29, 0x94, 0x0, 0x42, 0xa1, 0x5b, 0x2, 0x2b, + 0xf9, 0x10, + + /* U+62 "b" */ + 0x48, 0x0, 0xff, 0x92, 0xad, 0x40, 0xd, 0x57, + 0x20, 0x1f, 0x9a, 0xa9, 0x20, + + /* U+63 "c" */ + 0x1a, 0xa8, 0x67, 0xaa, 0x82, 0x1, 0xd3, 0xd5, + 0x41, + + /* U+64 "d" */ + 0x0, 0xd6, 0x1, 0xc3, 0x55, 0x4, 0x75, 0x48, + 0x6, 0x10, 0x8e, 0x9b, 0x0, + + /* U+65 "e" */ + 0x19, 0x98, 0x60, 0x4, 0x4e, 0x39, 0x12, 0xd3, + 0xf5, 0x41, + + /* U+66 "f" */ + 0xa, 0xa0, 0x10, 0x50, 0x5b, 0xb8, 0x2d, 0x1c, + 0x3, 0xf8, + + /* U+67 "g" */ + 0x1a, 0x99, 0x5c, 0x74, 0xc3, 0x80, 0x46, 0x11, + 0xd5, 0xe, 0x4, 0x61, 0x0, + + /* U+68 "h" */ + 0x48, 0x0, 0xfe, 0x49, 0xb4, 0x5, 0x9a, 0xf0, + 0x10, 0x17, 0x0, 0xe0, + + /* U+69 "i" */ + 0x37, 0x37, 0x48, 0x0, 0xf0, + + /* U+6A "j" */ + 0x3, 0x70, 0x37, 0x3, 0x80, 0xf, 0xe6, 0x8c, + + /* U+6B "k" */ + 0x48, 0x0, 0xff, 0xa9, 0x0, 0x72, 0x50, 0x12, + 0xa4, 0x0, 0xad, 0xae, + + /* U+6C "l" */ + 0x48, 0x0, 0xff, 0x0, + + /* U+6D "m" */ + 0x4c, 0x9b, 0x89, 0xb4, 0x5, 0x98, 0x39, 0xbf, + 0x1, 0x1, 0x10, 0x1, 0xc0, 0x3f, 0x0, + + /* U+6E "n" */ + 0x4c, 0x9b, 0x40, 0x59, 0xaf, 0x1, 0x1, 0x70, + 0xe, + + /* U+6F "o" */ + 0x1a, 0xa8, 0x67, 0xaa, 0x6c, 0x3, 0xa7, 0xaa, + 0x6c, + + /* U+70 "p" */ + 0x4c, 0xab, 0x50, 0x3, 0x55, 0xc8, 0x7, 0xe6, + 0xaa, 0x48, 0x1, 0x2a, 0x8a, 0x0, + + /* U+71 "q" */ + 0x1a, 0xa4, 0xdc, 0x75, 0x50, 0x3, 0xd1, 0xd5, + 0x40, 0x1a, 0xa4, 0x80, + + /* U+72 "r" */ + 0x4b, 0xa0, 0x0, 0xd0, 0x0, 0x80, 0x3c, + + /* U+73 "s" */ + 0x5b, 0x95, 0xdc, 0xa5, 0x84, 0x44, 0xbc, 0xef, + 0x80, + + /* U+74 "t" */ + 0x29, 0x0, 0x5a, 0x38, 0x5a, 0x38, 0x7, 0x11, + 0x24, 0x0, + + /* U+75 "u" */ + 0x57, 0x1, 0xb0, 0xe, 0x1f, 0x2, 0x4, 0x29, + 0xa0, + + /* U+76 "v" */ + 0xb, 0x0, 0x42, 0x7, 0x38, 0x1a, 0x2, 0xe3, + 0xf0, 0x5, 0xb4, 0xa0, + + /* U+77 "w" */ + 0xb0, 0x7, 0x10, 0x50, 0x72, 0xa9, 0xe8, 0x88, + 0xb, 0xfe, 0x92, 0xaa, 0x0, 0xc, 0x83, 0xc, + 0x80, + + /* U+78 "x" */ + 0x67, 0x1b, 0x6, 0xea, 0xa0, 0x0, 0xc0, 0xc1, + 0xfe, 0xa4, 0x0, + + /* U+79 "y" */ + 0xb, 0x10, 0x83, 0x8, 0x91, 0x23, 0x3, 0x2b, + 0x90, 0xb, 0x80, 0xc0, 0x15, 0xf0, 0x0, + + /* U+7A "z" */ + 0x59, 0xbb, 0x2c, 0x5, 0x5, 0x48, 0xcb, 0xdc, + 0x0, + + /* U+7B "{" */ + 0xa, 0x60, 0x66, 0x0, 0x4a, 0xe0, 0xae, 0x1, + 0xcc, 0xc0, + + /* U+7C "|" */ + 0x28, 0x0, 0xff, 0xe0, 0x0, + + /* U+7D "}" */ + 0x97, 0x9, 0xc0, 0xe, 0x63, 0x6, 0x30, 0xa, + 0x70, 0x0, + + /* U+7E "~" */ + 0x29, 0x35, 0x17, 0x95, 0xd1, + + /* U+B0 "°" */ + 0x26, 0x45, 0x63, 0x57, 0x20, + + /* U+2022 "•" */ + 0x0, 0x2e, 0xaf, 0x80, + + /* U+F001 "" */ + 0x0, 0xff, 0xe0, 0x13, 0x5f, 0x0, 0x23, 0x75, + 0x28, 0x20, 0x7, 0x21, 0x6a, 0x0, 0xd9, 0xd2, + 0xa0, 0x18, 0xc0, 0x3f, 0xab, 0xc2, 0xbc, 0x3, + 0x94, 0x0, 0xa0, 0xa, 0xfa, + + /* U+F008 "" */ + 0xbd, 0xcc, 0xba, 0xac, 0xdb, 0x32, 0x9f, 0x34, + 0x66, 0xdb, 0xe8, 0x1, 0xf9, 0x19, 0xb6, 0xfa, + 0x1b, 0x66, 0x53, 0xe6, + + /* U+F00B "" */ + 0x34, 0x14, 0x4c, 0x79, 0x6d, 0x77, 0xb1, 0x50, + 0xd1, 0x32, 0x8b, 0x8b, 0xbe, 0x14, 0x32, 0x33, + 0xc9, 0x30, 0xd0, 0xef, 0x4c, 0xa1, 0xa1, 0xde, + 0x95, 0x43, 0x44, 0xca, + + /* U+F00C "" */ + 0x0, 0xf4, 0xd0, 0x7, 0x4b, 0x5, 0x48, 0x2, + 0x59, 0x68, 0x1a, 0x64, 0xcb, 0x41, 0x4a, 0xcc, + 0x5a, 0x0, 0xa9, 0x99, 0x40, 0x10, + + /* U+F00D "" */ + 0x63, 0x0, 0x41, 0x56, 0x25, 0x3b, 0x69, 0x5a, + 0xca, 0xb, 0x80, 0x14, 0x29, 0x60, 0xb0, 0xc2, + 0x5f, 0x10, 0x0, + + /* U+F011 "" */ + 0x0, 0xb1, 0x44, 0x0, 0x3a, 0xe2, 0x7e, 0xe1, + 0x20, 0xe0, 0xb, 0x81, 0x4a, 0x0, 0x94, 0x5c, + 0x40, 0x16, 0x80, 0x12, 0x50, 0x31, 0x20, 0xa4, + 0x1e, 0x3c, 0x5b, 0x90, 0xfa, 0xd2, 0x4c, 0x0, + + /* U+F013 "" */ + 0x0, 0xb3, 0x0, 0x10, 0xc4, 0xc, 0xd1, 0x1, + 0x97, 0x70, 0x89, 0xdd, 0x34, 0x3, 0xdc, 0x10, + 0xa0, 0xf, 0xd4, 0x3, 0xdc, 0x10, 0xa9, 0x77, + 0x8, 0x9d, 0xd2, 0x31, 0x3, 0x34, 0x40, 0x40, + + /* U+F015 "" */ + 0x0, 0xc6, 0x4, 0x40, 0xd, 0x59, 0x51, 0x0, + 0x0, 0xe8, 0x48, 0x28, 0x0, 0xfd, 0x46, 0x45, + 0xd0, 0xe2, 0xa, 0x80, 0x8b, 0x10, 0xbe, 0x20, + 0x40, 0x2e, 0xb0, 0x8, 0xec, 0xc0, 0x36, 0xa2, + 0x1, 0x11, 0xa0, + + /* U+F019 "" */ + 0x0, 0xbf, 0xc0, 0x1f, 0xfc, 0x87, 0xf0, 0x7, + 0xb8, 0x1, 0xd8, 0x0, 0xce, 0xf, 0x1c, 0xaa, + 0xe8, 0x78, 0x78, 0x11, 0x43, 0xc0, 0x4, 0x89, + 0x80, + + /* U+F01C "" */ + 0x5, 0xff, 0xe5, 0x1, 0xbc, 0xff, 0xb2, 0xc6, + 0xd8, 0xc0, 0x23, 0x6b, 0x57, 0xf6, 0x6, 0xf7, + 0x50, 0xa, 0x7e, 0x40, 0x22, 0x0, 0xf8, 0x80, + + /* U+F021 "" */ + 0x0, 0xf8, 0xc0, 0xaf, 0xfd, 0x67, 0x85, 0x85, + 0xdc, 0x3c, 0xb, 0x49, 0x17, 0x40, 0x5, 0x58, + 0x1, 0x22, 0xec, 0xea, 0x84, 0x44, 0x57, 0xbb, + 0x42, 0x0, 0x2a, 0x80, 0x2c, 0x6b, 0x6d, 0x1, + 0x85, 0x32, 0x3c, 0x1c, 0x28, 0xcc, 0x40, 0x80, + + /* U+F026 "" */ + 0x0, 0xa4, 0xd3, 0x1b, 0x2c, 0xc0, 0x39, 0x50, + 0x1, 0x57, 0x60, 0x9, 0x38, + + /* U+F027 "" */ + 0x0, 0xa4, 0x0, 0x69, 0x8c, 0x3, 0x96, 0x60, + 0x34, 0x1, 0xe4, 0x40, 0x0, 0x6a, 0xee, 0x0, + 0x8, 0x1, 0x38, 0x0, + + /* U+F028 "" */ + 0x0, 0xf2, 0xa0, 0x6, 0x90, 0x26, 0xf3, 0x32, + 0x63, 0x0, 0x3e, 0x21, 0x96, 0x60, 0x33, 0x25, + 0x70, 0xf, 0xe5, 0x40, 0x0, 0xcc, 0x95, 0xaa, + 0xec, 0x1, 0x7c, 0x48, 0x1, 0x38, 0x9, 0xbc, + 0xc0, + + /* U+F03E "" */ + 0xdf, 0xff, 0x69, 0x7c, 0x0, 0x62, 0x8, 0xb0, + 0x4e, 0x40, 0x1, 0xca, 0x58, 0xd8, 0x2, 0xd6, + 0xc0, 0x31, 0x7f, 0xf8, 0x80, + + /* U+F048 "" */ + 0x40, 0x8, 0xac, 0x82, 0x34, 0x1, 0x2e, 0x0, + 0xe6, 0x0, 0x8c, 0x3, 0x50, 0x80, 0x4f, 0x82, + 0x8, 0x65, 0xec, + + /* U+F04B "" */ + 0x0, 0xfb, 0x68, 0x40, 0x31, 0x2f, 0x38, 0x7, + 0xa3, 0x50, 0x3, 0x8a, 0xe8, 0x3, 0xfe, 0x2b, + 0xa0, 0xa, 0x35, 0x0, 0x97, 0x9c, 0x2, 0xda, + 0x10, 0xc, + + /* U+F04C "" */ + 0x9b, 0x90, 0x9b, 0x96, 0x46, 0x6, 0x46, 0x0, + 0xff, 0xeb, 0xed, 0xe8, 0x6d, 0xe8, + + /* U+F04D "" */ + 0x24, 0x4e, 0x2d, 0xbb, 0xed, 0x0, 0xff, 0xeb, + 0xba, 0x27, 0x38, + + /* U+F051 "" */ + 0x20, 0x9, 0x36, 0x0, 0xac, 0x1e, 0x40, 0x33, + 0x70, 0x6, 0x30, 0x8, 0x68, 0x0, 0x58, 0xe0, + 0xd8, 0x46, 0x80, + + /* U+F052 "" */ + 0x0, 0xc4, 0x1, 0xf4, 0x6c, 0x0, 0x73, 0xb8, + 0x1d, 0xc0, 0x12, 0xc0, 0x5, 0xa, 0x0, 0xb0, + 0xe, 0xb0, 0x5, 0xbb, 0xf5, 0x80, 0x29, 0xdf, + 0xa8, 0x0, 0xa8, 0x9c, 0xa0, + + /* U+F053 "" */ + 0x0, 0x98, 0x80, 0xf, 0x2c, 0xf, 0x14, 0x8b, + 0x12, 0xa0, 0x83, 0xa0, 0x1, 0xc5, 0xb0, 0x1, + 0x62, 0xb0, 0x0, 0xbd, 0x80, + + /* U+F054 "" */ + 0x26, 0x0, 0x9a, 0x5c, 0x0, 0x95, 0xe, 0x0, + 0x59, 0x85, 0x0, 0x68, 0xa0, 0x5a, 0xe0, 0xb2, + 0xe1, 0x3, 0x79, 0x0, 0x0, + + /* U+F067 "" */ + 0x0, 0x90, 0x3, 0x8e, 0xcc, 0x3, 0x38, 0x38, + 0x1, 0xe3, 0x83, 0xa1, 0xe5, 0xd4, 0x15, 0xe7, + 0xbe, 0xc2, 0xff, 0x80, 0x3f, 0x95, 0x14, 0x0, + + /* U+F068 "" */ + 0x78, 0x8e, 0x79, 0x77, 0xe9, + + /* U+F06E "" */ + 0x0, 0x46, 0x65, 0x0, 0x1, 0xd5, 0xda, 0xf5, + 0xd1, 0xd2, 0x84, 0x8e, 0x82, 0xd7, 0x0, 0x40, + 0x80, 0x6a, 0x28, 0xe8, 0xe8, 0x2d, 0x1d, 0x5e, + 0xbf, 0x5c, 0x10, + + /* U+F070 "" */ + 0x1d, 0x30, 0xf, 0xc3, 0x1b, 0x19, 0x95, 0x10, + 0x4, 0xb8, 0xaf, 0x10, 0x3d, 0x40, 0x3, 0xc6, + 0xd, 0xda, 0x82, 0x84, 0x0, 0xb7, 0x52, 0x8, + 0x2, 0x0, 0x75, 0x51, 0xb6, 0x48, 0x58, 0x80, + 0x2a, 0x7f, 0x13, 0xd3, 0xc4, 0x2, 0x6c, 0xc3, + 0x8d, 0x9c, 0x0, + + /* U+F071 "" */ + 0x0, 0xc7, 0xc6, 0x1, 0xfb, 0xc7, 0xc0, 0x3e, + 0x63, 0x39, 0x80, 0x3d, 0x5, 0x85, 0x0, 0x1d, + 0x2, 0x60, 0x63, 0x0, 0x11, 0x38, 0xb, 0x8, + 0x39, 0x0, 0x24, 0x0, 0x28, 0x20, 0x8, 0x0, + 0x30, 0x0, 0x74, 0x40, 0xe, 0x0, + + /* U+F074 "" */ + 0x0, 0xf1, 0x2, 0x20, 0x2, 0x4d, 0x5a, 0xbb, + 0xe, 0x58, 0x47, 0x70, 0xf4, 0x78, 0xf0, 0x0, + 0xa0, 0xa0, 0x17, 0x70, 0x74, 0xf8, 0xf2, 0xaf, + 0x6, 0xec, 0x10, 0x88, 0x0, 0x93, 0x54, + + /* U+F077 "" */ + 0x0, 0xfe, 0x4e, 0x40, 0x9, 0x2c, 0xad, 0x1, + 0x2d, 0xf1, 0xed, 0x3d, 0xe0, 0x21, 0xfe, 0xe0, + 0x2, 0x8b, + + /* U+F078 "" */ + 0x0, 0xfa, 0xe0, 0x2, 0x8b, 0xf7, 0x80, 0x87, + 0xf4, 0xb7, 0xc7, 0xb4, 0x4, 0xb2, 0xb4, 0x0, + 0x93, 0x90, 0x0, + + /* U+F079 "" */ + 0x0, 0x4a, 0xa, 0x26, 0x0, 0xad, 0xae, 0x7f, + 0xeb, 0x10, 0x1, 0xa4, 0x75, 0xdc, 0x20, 0x14, + 0x1, 0xb0, 0x0, 0x40, 0xc0, 0x31, 0xa2, 0x17, + 0xc7, 0xd4, 0x1, 0x98, 0xff, 0x6d, 0x82, 0xa8, + 0x0, 0xf7, 0x74, 0x2e, 0xc0, 0x0, + + /* U+F07B "" */ + 0xdf, 0xf5, 0x80, 0x62, 0x0, 0x27, 0xfd, 0xa0, + 0x1f, 0x10, 0x7, 0xff, 0x10, 0x80, 0x3c, 0x40, + + /* U+F093 "" */ + 0x0, 0xa6, 0x40, 0x1d, 0x2c, 0xc9, 0x0, 0x9d, + 0x80, 0xc, 0xe0, 0x7, 0xf0, 0x7, 0xb8, 0x7, + 0xf3, 0xc2, 0x0, 0x12, 0x1e, 0x1e, 0x9d, 0xd4, + 0xf0, 0x0, 0x17, 0x72, 0xa0, 0x0, + + /* U+F095 "" */ + 0x0, 0xff, 0xe1, 0xbf, 0x50, 0x7, 0xa4, 0x50, + 0x3, 0xc4, 0x4, 0x1, 0xe8, 0xb, 0x0, 0xe1, + 0x91, 0x70, 0x7d, 0xc4, 0xc2, 0xd0, 0x4, 0x91, + 0xd9, 0xe1, 0x80, 0x10, 0x4e, 0x38, 0xc0, 0x0, + + /* U+F0C4 "" */ + 0x3, 0x0, 0xf6, 0x76, 0x1, 0x6e, 0x1, 0x51, + 0x96, 0x1f, 0x5, 0x60, 0x68, 0x61, 0x2, 0x78, + 0x1, 0x8, 0x1, 0x92, 0xc, 0xb2, 0x0, 0x2a, + 0x19, 0x86, 0x90, 0xad, 0xa0, 0x7b, 0xc0, + + /* U+F0C5 "" */ + 0x0, 0x7f, 0xce, 0x8e, 0x80, 0x11, 0x9a, 0x30, + 0x2, 0xb8, 0x0, 0xff, 0xe5, 0x1c, 0x3b, 0xd0, + 0x9, 0xe, 0xe8, 0x70, + + /* U+F0C7 "" */ + 0x24, 0x4c, 0x21, 0xbf, 0xfc, 0x41, 0x77, 0x87, + 0xc1, 0x13, 0x1, 0x5, 0xda, 0x2c, 0x3, 0x36, + 0x30, 0x6, 0x45, 0x40, 0x3, 0xa3, 0x73, 0x23, + 0x80, + + /* U+F0E7 "" */ + 0x7, 0xff, 0x30, 0x5, 0xa0, 0x4, 0x0, 0x98, + 0x1, 0x4e, 0x0, 0x20, 0x3, 0xe0, 0x2, 0x5c, + 0x42, 0x40, 0xf, 0x2, 0xe4, 0x1, 0x18, 0xc0, + 0x6, 0x5b, 0x0, 0x80, + + /* U+F0EA "" */ + 0x79, 0xb9, 0x70, 0x4, 0x33, 0xb4, 0x0, 0x6a, + 0x77, 0x18, 0x5, 0xce, 0xeb, 0xb0, 0x7, 0x8c, + 0x3, 0x9d, 0xd0, 0xe0, 0x1c, 0xf1, 0xe0, 0x18, + + /* U+F0F3 "" */ + 0x0, 0xb4, 0x3, 0x27, 0x17, 0x18, 0x2, 0x44, + 0x7, 0x80, 0x4, 0x1, 0x10, 0x18, 0x7, 0x1c, + 0x0, 0x74, 0x63, 0xbf, 0x6b, 0xc6, 0x3e, 0x43, + 0x0, + + /* U+F11C "" */ + 0xdf, 0xff, 0xb4, 0xb9, 0xdd, 0xce, 0xee, 0x20, + 0xf2, 0x26, 0x91, 0x3c, 0x3, 0xfe, 0xf2, 0xac, + 0xa2, 0xf0, 0x2e, 0x7f, 0xf9, 0xf8, 0x80, + + /* U+F124 "" */ + 0x0, 0xff, 0xe2, 0x25, 0xe0, 0x7, 0x2e, 0x5a, + 0x38, 0x4, 0xdd, 0x46, 0x0, 0xf0, 0x6, 0xc8, + 0x80, 0x46, 0x80, 0xb, 0x77, 0x18, 0x2, 0x40, + 0x26, 0x88, 0x20, 0xa, 0x80, 0x7e, 0x80, 0xf, + 0xb4, 0x98, 0x3, 0xe5, 0xd0, 0xc, + + /* U+F15B "" */ + 0xff, 0xa2, 0xc0, 0x39, 0x2c, 0x2, 0x47, 0x30, + 0x8, 0xdd, 0xc0, 0x1f, 0xfc, 0xc0, + + /* U+F1EB "" */ + 0x0, 0x91, 0xdc, 0x80, 0x1a, 0x7e, 0xef, 0x7c, + 0x86, 0x25, 0xfe, 0x63, 0xed, 0x33, 0xb4, 0x2f, + 0xfd, 0x61, 0xbc, 0x43, 0x63, 0x54, 0x1b, 0x12, + 0x1, 0xfa, 0x74, 0xaf, 0x10, 0xe, 0xcf, 0x0, + 0xfc, 0xd2, 0x1, 0x80, + + /* U+F240 "" */ + 0x24, 0x4f, 0xc1, 0xbf, 0xff, 0x4d, 0x6, 0x2a, + 0xfa, 0x14, 0x3c, 0x47, 0xce, 0x0, 0xd9, 0x9f, + 0x42, 0x3f, 0x6e, 0xf8, 0x60, + + /* U+F241 "" */ + 0x24, 0x4f, 0xc1, 0xbf, 0xff, 0x4d, 0x6, 0x2a, + 0xec, 0xb8, 0x50, 0xf1, 0x1d, 0xe0, 0xe0, 0xd, + 0x99, 0xda, 0x90, 0x8f, 0xdb, 0xbb, 0xbc, 0x60, + + /* U+F242 "" */ + 0x24, 0x4f, 0xc1, 0xbf, 0xff, 0x4d, 0x6, 0x2a, + 0xd7, 0x74, 0x28, 0x78, 0x8c, 0x1, 0x38, 0x3, + 0x66, 0x64, 0x4a, 0x11, 0xfb, 0x76, 0xff, 0x86, + 0x0, + + /* U+F243 "" */ + 0x24, 0x4f, 0xc1, 0xbf, 0xff, 0x4d, 0x6, 0x2e, + 0x5d, 0xe8, 0x50, 0xf1, 0xf0, 0xc, 0xe0, 0xd, + 0x9d, 0x44, 0xd0, 0x8f, 0xdb, 0xdf, 0xf8, 0x60, + + /* U+F244 "" */ + 0x24, 0x4f, 0xc1, 0xbf, 0xff, 0x4c, 0x5, 0xdf, + 0xd0, 0xe0, 0x1f, 0x9c, 0x0, 0x89, 0xf4, 0x13, + 0xff, 0xfc, 0x3c, + + /* U+F287 "" */ + 0x0, 0xff, 0xe1, 0xbe, 0xc0, 0x7, 0xce, 0x97, + 0x80, 0x1a, 0x6c, 0x78, 0x9d, 0x45, 0xc8, 0x1d, + 0x24, 0x72, 0x66, 0xab, 0xc, 0xd8, 0x85, 0xe0, + 0x7e, 0xc8, 0x11, 0x0, 0xc, 0x4d, 0x60, 0x1f, + 0x9b, 0xb0, 0x2, + + /* U+F293 "" */ + 0x6, 0xdd, 0x61, 0x82, 0x49, 0x71, 0x70, 0x69, + 0xa3, 0x59, 0x14, 0x78, 0x9e, 0xc, 0x0, 0xf0, + 0x10, 0x72, 0x31, 0x7f, 0x1, 0xd3, 0x65, 0x91, + 0x24, 0x92, 0xd0, 0xd0, + + /* U+F2ED "" */ + 0x78, 0xdf, 0xd8, 0x70, 0x2, 0xba, 0x80, 0x3d, + 0xdf, 0xbc, 0xc, 0xce, 0x66, 0x0, 0xff, 0xe5, + 0x69, 0x99, 0xcc, 0xda, + + /* U+F304 "" */ + 0x0, 0xf3, 0xf1, 0x80, 0x72, 0x60, 0xe8, 0x6, + 0x8b, 0x24, 0x90, 0xa, 0x1c, 0x1b, 0xdc, 0x1, + 0xe, 0x0, 0x74, 0x0, 0x3b, 0x80, 0xf, 0x0, + 0x14, 0x80, 0x1e, 0x0, 0x38, 0x62, 0x0, 0x1d, + 0xdc, 0x70, 0xe, + + /* U+F55A "" */ + 0x0, 0x57, 0xff, 0xb0, 0x2d, 0x41, 0x8c, 0xcc, + 0x7, 0x48, 0x0, 0x5d, 0xd2, 0x80, 0x7f, 0xf0, + 0x29, 0x0, 0xb, 0xba, 0x50, 0xa, 0xd4, 0x18, + 0xcc, 0xc0, 0x60, + + /* U+F7C2 "" */ + 0x7, 0xff, 0xb8, 0x5f, 0x27, 0x60, 0x89, 0xb, + 0xb7, 0x84, 0x0, 0x14, 0x64, 0x10, 0xf, 0xfe, + 0x51, 0x80, 0x61, 0x20, + + /* U+F8A2 "" */ + 0x0, 0xf8, 0xc0, 0x4, 0x60, 0x11, 0x60, 0x16, + 0x51, 0x14, 0xe0, 0xf, 0x16, 0xdd, 0xa8, 0x1, + 0xe2, 0xdb, 0xbb, 0x80, 0xb2, 0x88, 0xb0, 0x80 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 34, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 0, .adv_w = 34, .box_w = 2, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 6, .adv_w = 50, .box_w = 3, .box_h = 3, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 11, .adv_w = 90, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 26, .adv_w = 79, .box_w = 5, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 44, .adv_w = 108, .box_w = 7, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 62, .adv_w = 88, .box_w = 6, .box_h = 6, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 80, .adv_w = 27, .box_w = 2, .box_h = 3, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 84, .adv_w = 43, .box_w = 3, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 96, .adv_w = 43, .box_w = 2, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 103, .adv_w = 51, .box_w = 4, .box_h = 3, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 109, .adv_w = 74, .box_w = 5, .box_h = 4, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 119, .adv_w = 29, .box_w = 2, .box_h = 3, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 123, .adv_w = 49, .box_w = 3, .box_h = 1, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 125, .adv_w = 29, .box_w = 2, .box_h = 2, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 128, .adv_w = 45, .box_w = 5, .box_h = 7, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 145, .adv_w = 85, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 158, .adv_w = 47, .box_w = 3, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 163, .adv_w = 73, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 176, .adv_w = 73, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 189, .adv_w = 86, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 204, .adv_w = 73, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 218, .adv_w = 79, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 231, .adv_w = 77, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 244, .adv_w = 82, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 257, .adv_w = 79, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 270, .adv_w = 29, .box_w = 2, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 275, .adv_w = 29, .box_w = 2, .box_h = 6, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 282, .adv_w = 74, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 295, .adv_w = 74, .box_w = 5, .box_h = 3, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 302, .adv_w = 74, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 314, .adv_w = 73, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 327, .adv_w = 132, .box_w = 8, .box_h = 6, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 350, .adv_w = 94, .box_w = 7, .box_h = 5, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 367, .adv_w = 97, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 383, .adv_w = 93, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 398, .adv_w = 106, .box_w = 7, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 415, .adv_w = 86, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 429, .adv_w = 81, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 441, .adv_w = 99, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 457, .adv_w = 104, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 469, .adv_w = 40, .box_w = 2, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 472, .adv_w = 66, .box_w = 5, .box_h = 5, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 483, .adv_w = 92, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 499, .adv_w = 76, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 506, .adv_w = 122, .box_w = 7, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 524, .adv_w = 104, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 538, .adv_w = 108, .box_w = 7, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 556, .adv_w = 92, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 571, .adv_w = 108, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 592, .adv_w = 93, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 607, .adv_w = 79, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 620, .adv_w = 75, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 629, .adv_w = 101, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 642, .adv_w = 91, .box_w = 7, .box_h = 5, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 660, .adv_w = 144, .box_w = 9, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 683, .adv_w = 86, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 699, .adv_w = 83, .box_w = 7, .box_h = 5, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 716, .adv_w = 84, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 732, .adv_w = 43, .box_w = 3, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 740, .adv_w = 45, .box_w = 5, .box_h = 7, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 756, .adv_w = 43, .box_w = 2, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 761, .adv_w = 75, .box_w = 5, .box_h = 3, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 769, .adv_w = 64, .box_w = 4, .box_h = 1, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 771, .adv_w = 77, .box_w = 3, .box_h = 1, .ofs_x = 0, .ofs_y = 5}, + {.bitmap_index = 773, .adv_w = 77, .box_w = 5, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 783, .adv_w = 87, .box_w = 6, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 796, .adv_w = 73, .box_w = 5, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 805, .adv_w = 87, .box_w = 5, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 818, .adv_w = 78, .box_w = 5, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 828, .adv_w = 45, .box_w = 4, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 838, .adv_w = 88, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 851, .adv_w = 87, .box_w = 5, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 863, .adv_w = 36, .box_w = 2, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 868, .adv_w = 36, .box_w = 3, .box_h = 7, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 876, .adv_w = 79, .box_w = 5, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 888, .adv_w = 36, .box_w = 2, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 892, .adv_w = 135, .box_w = 8, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 907, .adv_w = 87, .box_w = 5, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 916, .adv_w = 81, .box_w = 5, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 925, .adv_w = 87, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 939, .adv_w = 87, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 951, .adv_w = 52, .box_w = 4, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 958, .adv_w = 64, .box_w = 4, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 967, .adv_w = 53, .box_w = 4, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 977, .adv_w = 87, .box_w = 5, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 986, .adv_w = 72, .box_w = 6, .box_h = 4, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 998, .adv_w = 115, .box_w = 8, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1015, .adv_w = 71, .box_w = 5, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1026, .adv_w = 72, .box_w = 6, .box_h = 5, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 1041, .adv_w = 67, .box_w = 4, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1050, .adv_w = 45, .box_w = 3, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1060, .adv_w = 38, .box_w = 2, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1065, .adv_w = 45, .box_w = 3, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1075, .adv_w = 74, .box_w = 5, .box_h = 2, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 1080, .adv_w = 54, .box_w = 3, .box_h = 3, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 1085, .adv_w = 40, .box_w = 2, .box_h = 3, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 1089, .adv_w = 128, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1118, .adv_w = 128, .box_w = 8, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1138, .adv_w = 128, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1166, .adv_w = 128, .box_w = 8, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1188, .adv_w = 88, .box_w = 6, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1207, .adv_w = 128, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1239, .adv_w = 128, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1271, .adv_w = 144, .box_w = 9, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1306, .adv_w = 128, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1331, .adv_w = 144, .box_w = 9, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1355, .adv_w = 128, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 1395, .adv_w = 64, .box_w = 4, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1408, .adv_w = 96, .box_w = 6, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1428, .adv_w = 144, .box_w = 9, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1461, .adv_w = 128, .box_w = 8, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1482, .adv_w = 112, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = -1}, + {.bitmap_index = 1501, .adv_w = 112, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 1527, .adv_w = 112, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1541, .adv_w = 112, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1552, .adv_w = 112, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = -1}, + {.bitmap_index = 1571, .adv_w = 112, .box_w = 9, .box_h = 8, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 1600, .adv_w = 80, .box_w = 5, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1621, .adv_w = 80, .box_w = 5, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1642, .adv_w = 112, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1666, .adv_w = 112, .box_w = 7, .box_h = 2, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 1671, .adv_w = 144, .box_w = 9, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1698, .adv_w = 160, .box_w = 11, .box_h = 8, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 1741, .adv_w = 144, .box_w = 11, .box_h = 8, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 1779, .adv_w = 128, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1810, .adv_w = 112, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1828, .adv_w = 112, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1847, .adv_w = 160, .box_w = 11, .box_h = 7, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 1885, .adv_w = 128, .box_w = 8, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1901, .adv_w = 128, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1931, .adv_w = 128, .box_w = 9, .box_h = 9, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 1963, .adv_w = 112, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1994, .adv_w = 112, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2014, .adv_w = 112, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2039, .adv_w = 80, .box_w = 7, .box_h = 8, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 2067, .adv_w = 112, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2091, .adv_w = 112, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2116, .adv_w = 144, .box_w = 9, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2139, .adv_w = 128, .box_w = 10, .box_h = 10, .ofs_x = -1, .ofs_y = -2}, + {.bitmap_index = 2177, .adv_w = 96, .box_w = 6, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2191, .adv_w = 160, .box_w = 10, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2227, .adv_w = 160, .box_w = 10, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2248, .adv_w = 160, .box_w = 10, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2272, .adv_w = 160, .box_w = 10, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2297, .adv_w = 160, .box_w = 10, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2321, .adv_w = 160, .box_w = 10, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2340, .adv_w = 160, .box_w = 11, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2375, .adv_w = 112, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2403, .adv_w = 112, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2423, .adv_w = 128, .box_w = 9, .box_h = 9, .ofs_x = -1, .ofs_y = -2}, + {.bitmap_index = 2458, .adv_w = 160, .box_w = 10, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2485, .adv_w = 96, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2505, .adv_w = 129, .box_w = 9, .box_h = 6, .ofs_x = 0, .ofs_y = 0} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_1[] = { + 0x0, 0x1f72, 0xef51, 0xef58, 0xef5b, 0xef5c, 0xef5d, 0xef61, + 0xef63, 0xef65, 0xef69, 0xef6c, 0xef71, 0xef76, 0xef77, 0xef78, + 0xef8e, 0xef98, 0xef9b, 0xef9c, 0xef9d, 0xefa1, 0xefa2, 0xefa3, + 0xefa4, 0xefb7, 0xefb8, 0xefbe, 0xefc0, 0xefc1, 0xefc4, 0xefc7, + 0xefc8, 0xefc9, 0xefcb, 0xefe3, 0xefe5, 0xf014, 0xf015, 0xf017, + 0xf037, 0xf03a, 0xf043, 0xf06c, 0xf074, 0xf0ab, 0xf13b, 0xf190, + 0xf191, 0xf192, 0xf193, 0xf194, 0xf1d7, 0xf1e3, 0xf23d, 0xf254, + 0xf4aa, 0xf712, 0xf7f2 +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 32, .range_length = 95, .glyph_id_start = 1, + .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY + }, + { + .range_start = 176, .range_length = 63475, .glyph_id_start = 96, + .unicode_list = unicode_list_1, .glyph_id_ofs_list = NULL, .list_length = 59, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + } +}; + +/*----------------- + * KERNING + *----------------*/ + + +/*Map glyph_ids to kern left classes*/ +static const uint8_t kern_left_class_mapping[] = +{ + 0, 0, 1, 2, 0, 3, 4, 5, + 2, 6, 7, 8, 9, 10, 9, 10, + 11, 12, 0, 13, 14, 15, 16, 17, + 18, 19, 12, 20, 20, 0, 0, 0, + 21, 22, 23, 24, 25, 22, 26, 27, + 28, 29, 29, 30, 31, 32, 29, 29, + 22, 33, 34, 35, 3, 36, 30, 37, + 37, 38, 39, 40, 41, 42, 43, 0, + 44, 0, 45, 46, 47, 48, 49, 50, + 51, 45, 52, 52, 53, 48, 45, 45, + 46, 46, 54, 55, 56, 57, 51, 58, + 58, 59, 58, 60, 41, 0, 0, 9, + 61, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 +}; + +/*Map glyph_ids to kern right classes*/ +static const uint8_t kern_right_class_mapping[] = +{ + 0, 0, 1, 2, 0, 3, 4, 5, + 2, 6, 7, 8, 9, 10, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 12, + 18, 19, 20, 21, 21, 0, 0, 0, + 22, 23, 24, 25, 23, 25, 25, 25, + 23, 25, 25, 26, 25, 25, 25, 25, + 23, 25, 23, 25, 3, 27, 28, 29, + 29, 30, 31, 32, 33, 34, 35, 0, + 36, 0, 37, 38, 39, 39, 39, 0, + 39, 38, 40, 41, 38, 38, 42, 42, + 39, 42, 39, 42, 43, 44, 45, 46, + 46, 47, 46, 48, 0, 0, 35, 9, + 49, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 +}; + +/*Kern values between classes*/ +static const int8_t kern_class_values[] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 3, -3, 0, 0, + 0, 0, -7, -8, 1, 6, 3, 2, + -5, 1, 6, 0, 5, 1, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 8, 1, -1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, -4, 0, 0, 0, 0, + 0, -3, 2, 3, 0, 0, -1, 0, + -1, 1, 0, -1, 0, -1, -1, -3, + 0, 0, 0, 0, -1, 0, 0, -2, + -2, 0, 0, -1, 0, -3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, + -1, 0, -2, 0, -3, 0, -15, 0, + 0, -3, 0, 3, 4, 0, 0, -3, + 1, 1, 4, 3, -2, 3, 0, 0, + -7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -3, -2, -6, 0, -5, + -1, 0, 0, 0, 0, 0, 5, 0, + -4, -1, 0, 0, 0, -2, 0, 0, + -1, -9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -10, -1, 5, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4, + 0, 1, 0, 0, -3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 5, 1, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, + 3, 1, 4, -1, 0, 0, 3, -1, + -4, -18, 1, 3, 3, 0, -2, 0, + 5, 0, 4, 0, 4, 0, -12, 0, + -2, 4, 0, 4, -1, 3, 1, 0, + 0, 0, -1, 0, 0, -2, 10, 0, + 10, 0, 4, 0, 5, 2, 2, 4, + 0, 0, 0, -5, 0, 0, 0, 0, + 0, -1, 0, 1, -2, -2, -3, 1, + 0, -1, 0, 0, 0, -5, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, -8, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -7, 0, -8, 0, 0, 0, + 0, -1, 0, 13, -2, -2, 1, 1, + -1, 0, -2, 1, 0, 0, -7, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -12, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, -8, 0, 8, 0, 0, -5, 0, + 4, 0, -9, -12, -9, -3, 4, 0, + 0, -9, 0, 2, -3, 0, -2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 4, -16, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 1, 0, 0, 0, + 0, 0, 1, 1, -2, -3, 0, 0, + 0, -1, 0, 0, -1, 0, 0, 0, + -3, 0, -1, 0, -3, -3, 0, -3, + -4, -4, -2, 0, -3, 0, -3, 0, + 0, 0, 0, -1, 0, 0, 1, 0, + 1, -1, 0, 0, 0, 0, 0, 1, + -1, 0, 0, 0, -1, 1, 1, 0, + 0, 0, 0, -2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, -1, 0, + -2, 0, -2, 0, 0, -1, 0, 4, + 0, 0, -1, 0, 0, 0, 0, 0, + 0, 0, -1, -1, 0, 0, -1, 0, + -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1, -1, 0, -1, -2, 0, + 0, 0, 0, 0, 0, 0, 0, -1, + 0, -1, -1, -1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -1, 0, 0, + 0, 0, -1, -2, 0, -2, 0, -4, + -1, -4, 3, 0, 0, -3, 1, 3, + 3, 0, -3, 0, -2, 0, 0, -6, + 1, -1, 1, -7, 1, 0, 0, 0, + -7, 0, -7, -1, -11, -1, 0, -6, + 0, 3, 4, 0, 2, 0, 0, 0, + 0, 0, 0, -2, -2, 0, -4, 0, + 0, 0, -1, 0, 0, 0, -1, 0, + 0, 0, 0, 0, -1, -1, 0, -1, + -2, 0, 0, 0, 0, 0, 0, 0, + -1, -1, 0, -1, -2, -1, 0, 0, + -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1, -1, 0, -2, + 0, -1, 0, -3, 1, 0, 0, -2, + 1, 1, 1, 0, 0, 0, 0, 0, + 0, -1, 0, 0, 0, 0, 0, 1, + 0, 0, -1, 0, -1, -1, -2, 0, + 0, 0, 0, 0, 0, 0, 1, 0, + -1, 0, 0, 0, 0, -1, -2, 0, + -2, 0, 4, -1, 0, -4, 0, 0, + 3, -6, -7, -5, -3, 1, 0, -1, + -8, -2, 0, -2, 0, -3, 2, -2, + -8, 0, -3, 0, 0, 1, 0, 1, + -1, 0, 1, 0, -4, -5, 0, -6, + -3, -3, -3, -4, -2, -3, 0, -2, + -3, 1, 0, 0, 0, -1, 0, 0, + 0, 1, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, + 0, -1, 0, 0, -1, 0, -2, -3, + -3, 0, 0, -4, 0, 0, 0, 0, + 0, 0, -1, 0, 0, 0, 0, 1, + -1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, + -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1, 0, 0, 0, + -2, 0, 0, 0, 0, -6, -4, 0, + 0, 0, -2, -6, 0, 0, -1, 1, + 0, -3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2, 0, 0, -2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, -2, 0, + 0, 0, 0, 2, 0, 1, -3, -3, + 0, -1, -1, -2, 0, 0, 0, 0, + 0, 0, -4, 0, -1, 0, -2, -1, + 0, -3, -3, -4, -1, 0, -3, 0, + -4, 0, 0, 0, 0, 10, 0, 0, + 1, 0, 0, -2, 0, 1, 0, -6, + 0, 0, 0, 0, 0, -12, -2, 4, + 4, -1, -5, 0, 1, -2, 0, -6, + -1, -2, 1, -9, -1, 2, 0, 2, + -4, -2, -5, -4, -5, 0, 0, -8, + 0, 7, 0, 0, -1, 0, 0, 0, + -1, -1, -1, -3, -4, 0, -12, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1, 0, -1, -1, -2, 0, 0, + -3, 0, -1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -3, 0, 0, 3, + 0, 2, 0, -3, 1, -1, 0, -3, + -1, 0, -2, -1, -1, 0, -2, -2, + 0, 0, -1, 0, -1, -2, -2, 0, + 0, -1, 0, 1, -1, 0, -3, 0, + 0, 0, -3, 0, -2, 0, -2, -2, + 1, 0, 0, 0, 0, 0, 0, 0, + 0, -3, 1, 0, -2, 0, -1, -2, + -4, -1, -1, -1, 0, -1, -2, 0, + 0, 0, 0, 0, 0, -1, -1, -1, + 0, 0, 0, 0, 2, -1, 0, -1, + 0, 0, 0, -1, -2, -1, -1, -2, + -1, 0, 1, 5, 0, 0, -3, 0, + -1, 3, 0, -1, -5, -2, 2, 0, + 0, -6, -2, 1, -2, 1, 0, -1, + -1, -4, 0, -2, 1, 0, 0, -2, + 0, 0, 0, 1, 1, -3, -2, 0, + -2, -1, -2, -1, -1, 0, -2, 1, + -2, -2, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -1, -1, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2, 0, 0, -2, + 0, 0, -1, -1, 0, 0, 0, 0, + -1, 0, 0, 0, 0, -1, 0, 0, + 0, 0, 0, -1, 0, 0, 0, 0, + -2, 0, -3, 0, 0, 0, -4, 0, + 1, -3, 3, 0, -1, -6, 0, 0, + -3, -1, 0, -5, -3, -4, 0, 0, + -6, -1, -5, -5, -6, 0, -3, 0, + 1, 9, -2, 0, -3, -1, 0, -1, + -2, -3, -2, -5, -5, -3, -1, 0, + 0, -1, 0, 0, 0, 0, -9, -1, + 4, 3, -3, -5, 0, 0, -4, 0, + -6, -1, -1, 3, -12, -2, 0, 0, + 0, -8, -2, -7, -1, -9, 0, 0, + -9, 0, 8, 0, 0, -1, 0, 0, + 0, 0, -1, -1, -5, -1, 0, -8, + 0, 0, 0, 0, -4, 0, -1, 0, + 0, -4, -6, 0, 0, -1, -2, -4, + -1, 0, -1, 0, 0, 0, 0, -6, + -1, -4, -4, -1, -2, -3, -1, -2, + 0, -3, -1, -4, -2, 0, -2, -2, + -1, -2, 0, 1, 0, -1, -4, 0, + 3, 0, -2, 0, 0, 0, 0, 2, + 0, 1, -3, 5, 0, -1, -1, -2, + 0, 0, 0, 0, 0, 0, -4, 0, + -1, 0, -2, -1, 0, -3, -3, -4, + -1, 0, -3, 1, 5, 0, 0, 0, + 0, 10, 0, 0, 1, 0, 0, -2, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -1, -3, 0, 0, 0, 0, 0, -1, + 0, 0, 0, -1, -1, 0, 0, -3, + -1, 0, 0, -3, 0, 2, -1, 0, + 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 2, 3, 1, -1, 0, -4, + -2, 0, 4, -4, -4, -3, -3, 5, + 2, 1, -11, -1, 3, -1, 0, -1, + 1, -1, -4, 0, -1, 1, -2, -1, + -4, -1, 0, 0, 4, 3, 0, -4, + 0, -7, -2, 4, -2, -5, 0, -2, + -4, -4, -1, 5, 1, 0, -2, 0, + -3, 0, 1, 4, -3, -5, -5, -3, + 4, 0, 0, -9, -1, 1, -2, -1, + -3, 0, -3, -5, -2, -2, -1, 0, + 0, -3, -3, -1, 0, 4, 3, -1, + -7, 0, -7, -2, 0, -4, -7, 0, + -4, -2, -4, -4, 3, 0, 0, -2, + 0, -3, -1, 0, -1, -2, 0, 2, + -4, 1, 0, 0, -7, 0, -1, -3, + -2, -1, -4, -3, -4, -3, 0, -4, + -1, -3, -2, -4, -1, 0, 0, 0, + 6, -2, 0, -4, -1, 0, -1, -3, + -3, -3, -4, -5, -2, -3, 3, 0, + -2, 0, -6, -2, 1, 3, -4, -5, + -3, -4, 4, -1, 1, -12, -2, 3, + -3, -2, -5, 0, -4, -5, -2, -1, + -1, -1, -3, -4, 0, 0, 0, 4, + 4, -1, -8, 0, -8, -3, 3, -5, + -9, -3, -4, -5, -6, -4, 3, 0, + 0, 0, 0, -2, 0, 0, 1, -2, + 3, 1, -2, 3, 0, 0, -4, 0, + 0, 0, 0, 0, 0, -1, 0, 0, + 0, 0, 0, 0, -1, 0, 0, 0, + 0, 1, 4, 0, 0, -2, 0, 0, + 0, 0, -1, -1, -2, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 1, 0, + -1, 0, 5, 0, 2, 0, 0, -2, + 0, 3, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -8, 0, -1, 2, 0, 4, + 0, 0, 13, 2, -3, -3, 1, 1, + -1, 0, -6, 0, 0, 6, -8, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -9, 5, 18, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, -8, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2, 0, 0, -2, + -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1, 0, -3, 0, + 0, 0, 0, 0, 1, 17, -3, -1, + 4, 3, -3, 1, 0, 0, 1, 1, + -2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -17, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -4, + 0, 0, 0, -3, 0, 0, 0, 0, + -3, -1, 0, 0, 0, -3, 0, -2, + 0, -6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1, 0, 0, -2, 0, -2, 0, + -3, 0, 0, 0, -2, 1, -2, 0, + 0, -3, -1, -3, 0, 0, -3, 0, + -1, 0, -6, 0, -1, 0, 0, -10, + -2, -5, -1, -5, 0, 0, -9, 0, + -3, -1, 0, 0, 0, 0, 0, 0, + 0, 0, -2, -2, -1, -2, 0, 0, + 0, 0, -3, 0, -3, 2, -1, 3, + 0, -1, -3, -1, -2, -2, 0, -2, + -1, -1, 1, -3, 0, 0, 0, 0, + -11, -1, -2, 0, -3, 0, -1, -6, + -1, 0, 0, -1, -1, 0, 0, 0, + 0, 1, 0, -1, -2, -1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, + 0, -3, 0, -1, 0, 0, 0, -3, + 1, 0, 0, 0, -3, -1, -3, 0, + 0, -4, 0, -1, 0, -6, 0, 0, + 0, 0, -12, 0, -3, -5, -6, 0, + 0, -9, 0, -1, -2, 0, 0, 0, + 0, 0, 0, 0, 0, -1, -2, -1, + -2, 0, 0, 0, 2, -2, 0, 4, + 6, -1, -1, -4, 2, 6, 2, 3, + -3, 2, 5, 2, 4, 3, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 8, 6, -2, -1, 0, -1, + 10, 6, 10, 0, 0, 0, 1, 0, + 0, 5, 0, 0, -2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -1, 0, + 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 0, -11, -2, -1, -5, + -6, 0, 0, -9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, + 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, -11, -2, -1, + -5, -6, 0, 0, -5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -1, 0, 0, 0, -3, 1, 0, -1, + 1, 2, 1, -4, 0, 0, -1, 1, + 0, 1, 0, 0, 0, 0, -3, 0, + -1, -1, -3, 0, -1, -5, 0, 8, + -1, 0, -3, -1, 0, -1, -2, 0, + -1, -4, -3, -2, 0, 0, 0, -2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, -11, + -2, -1, -5, -6, 0, 0, -9, 0, + 0, 0, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -2, 0, -4, -2, -1, 4, -1, -1, + -5, 0, -1, 0, -1, -3, 0, 3, + 0, 1, 0, 1, -3, -5, -2, 0, + -5, -2, -3, -5, -5, 0, -2, -3, + -2, -2, -1, -1, -2, -1, 0, -1, + 0, 2, 0, 2, -1, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -1, -1, -1, 0, 0, + -3, 0, -1, 0, -2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1, -1, 0, -2, + 0, 0, 0, 0, -1, 0, 0, -2, + -1, 1, 0, -2, -2, -1, 0, -4, + -1, -3, -1, -2, 0, -2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, -9, 0, 4, 0, 0, -2, 0, + 0, 0, 0, -2, 0, -1, 0, 0, + -1, 0, 0, -1, 0, -3, 0, 0, + 5, -2, -4, -4, 1, 1, 1, 0, + -4, 1, 2, 1, 4, 1, 4, -1, + -3, 0, 0, -5, 0, 0, -4, -3, + 0, 0, -3, 0, -2, -2, 0, -2, + 0, -2, 0, -1, 2, 0, -1, -4, + -1, 5, 0, 0, -1, 0, -3, 0, + 0, 2, -3, 0, 1, -1, 1, 0, + 0, -4, 0, -1, 0, 0, -1, 1, + -1, 0, 0, 0, -5, -2, -3, 0, + -4, 0, 0, -6, 0, 5, -1, 0, + -2, 0, 1, 0, -1, 0, -1, -4, + 0, -1, 1, 0, 0, 0, 0, -1, + 0, 0, 1, -2, 0, 0, 0, -2, + -1, 0, -2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -8, 0, 3, 0, + 0, -1, 0, 0, 0, 0, 0, 0, + -1, -1, 0, 0, 0, 3, 0, 3, + 0, 0, 0, 0, 0, -8, -7, 0, + 6, 4, 2, -5, 1, 5, 0, 5, + 0, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 +}; + + +/*Collect the kern class' data in one place*/ +static const 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 = 61, + .right_class_cnt = 49, +}; + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_dsc_t font_dsc = { + .glyph_bitmap = gylph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = &kern_classes, + .kern_scale = 16, + .cmap_num = 2, + .bpp = 4, + .kern_classes = 1, + .bitmap_format = 1 +}; + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +lv_font_t font_1 = { + .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ + .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ + .line_height = 10, /*The maximum line height required by the font*/ + .base_line = 2, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif + .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +}; + +#endif /*#if FONT_1*/ + diff --git a/tests/lv_test_fonts/font_2.c b/tests/lv_test_fonts/font_2.c new file mode 100644 index 000000000..cf2a7b70b --- /dev/null +++ b/tests/lv_test_fonts/font_2.c @@ -0,0 +1,1413 @@ +#include "lvgl/lvgl.h" + +/******************************************************************************* + * Size: 8 px + * Bpp: 4 + * Opts: --bpp 4 --size 8 --font ../Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022 --font ../FontAwesome5-Solid+Brands+Regular.woff -r 61441,61448,61451,61452,61452,61453,61457,61459,61461,61465,61468,61473,61478,61479,61480,61502,61512,61515,61516,61517,61521,61522,61523,61524,61543,61544,61550,61552,61553,61556,61559,61560,61561,61563,61587,61589,61636,61637,61639,61671,61674,61683,61724,61732,61787,61931,62016,62017,62018,62019,62020,62087,62099,62212,62189,62810,63426,63650 --no-compress --no-prefilter --force-fast-kern-format --format lvgl -o ..\generated_fonts/font_2.c + ******************************************************************************/ + +#ifndef FONT_2 +#define FONT_2 1 +#endif + +#if FONT_2 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = { + /* U+20 " " */ + + /* U+21 "!" */ + 0x58, 0x57, 0x46, 0x23, 0x46, + + /* U+22 "\"" */ + 0x73, 0x97, 0x29, 0x0, 0x0, + + /* U+23 "#" */ + 0x4, 0x52, 0x60, 0x4b, 0x9b, 0xa3, 0x8, 0x7, + 0x20, 0x6c, 0x8c, 0x81, 0x9, 0x9, 0x0, + + /* U+24 "$" */ + 0x0, 0x80, 0x2, 0xbd, 0xa2, 0x76, 0x80, 0x0, + 0x8d, 0x81, 0x0, 0x84, 0x95, 0xad, 0xb3, 0x0, + 0x80, 0x0, + + /* U+25 "%" */ + 0x58, 0x70, 0x63, 0x8, 0x8, 0x36, 0x0, 0x27, + 0x58, 0x67, 0x10, 0x8, 0x27, 0x26, 0x6, 0x20, + 0x88, 0x20, + + /* U+26 "&" */ + 0x9, 0x99, 0x0, 0xb, 0x3a, 0x0, 0x19, 0xc2, + 0x20, 0x83, 0x1a, 0xa0, 0x3a, 0x99, 0x92, 0x0, + 0x0, 0x0, + + /* U+27 "'" */ + 0x72, 0x72, 0x0, + + /* U+28 "(" */ + 0x8, 0x20, 0xb0, 0x1a, 0x3, 0x80, 0x1a, 0x0, + 0xb0, 0x8, 0x20, + + /* U+29 ")" */ + 0x73, 0x19, 0xb, 0xc, 0xb, 0x19, 0x73, + + /* U+2A "*" */ + 0x48, 0x40, 0x6e, 0x80, 0x15, 0x10, + + /* U+2B "+" */ + 0x0, 0x20, 0x0, 0xa, 0x0, 0x49, 0xd9, 0x10, + 0xa, 0x0, + + /* U+2C "," */ + 0x0, 0x75, 0x71, + + /* U+2D "-" */ + 0x5a, 0x60, + + /* U+2E "." */ + 0x0, 0x74, + + /* U+2F "/" */ + 0x0, 0xa, 0x0, 0x2, 0x80, 0x0, 0x82, 0x0, + 0xa, 0x0, 0x4, 0x60, 0x0, 0x91, 0x0, 0x19, + 0x0, 0x0, + + /* U+30 "0" */ + 0xa, 0xbb, 0x26, 0x60, 0x1b, 0x93, 0x0, 0xc6, + 0x60, 0x1b, 0xa, 0xbb, 0x20, + + /* U+31 "1" */ + 0x9e, 0x20, 0xa2, 0xa, 0x20, 0xa2, 0xa, 0x20, + + /* U+32 "2" */ + 0x6a, 0xb9, 0x0, 0x0, 0xc0, 0x0, 0x58, 0x0, + 0x87, 0x0, 0x9e, 0xaa, 0x30, + + /* U+33 "3" */ + 0x7a, 0xbe, 0x0, 0xa, 0x20, 0x4, 0xa9, 0x0, + 0x0, 0xa2, 0x8a, 0xa9, 0x0, + + /* U+34 "4" */ + 0x0, 0x49, 0x0, 0x3, 0xa0, 0x0, 0x1b, 0x8, + 0x20, 0x8b, 0xad, 0xb2, 0x0, 0x9, 0x30, + + /* U+35 "5" */ + 0x3d, 0xaa, 0x5, 0x60, 0x0, 0x5b, 0xa8, 0x0, + 0x0, 0x93, 0x7a, 0xaa, 0x0, + + /* U+36 "6" */ + 0x9, 0xaa, 0x36, 0x70, 0x0, 0x98, 0x9a, 0x26, + 0x80, 0x2a, 0x9, 0x9a, 0x40, + + /* U+37 "7" */ + 0xca, 0xad, 0x67, 0x0, 0xc0, 0x0, 0x67, 0x0, + 0xc, 0x0, 0x6, 0x70, 0x0, + + /* U+38 "8" */ + 0x1a, 0xab, 0x25, 0x60, 0x48, 0x1d, 0xad, 0x38, + 0x40, 0x1b, 0x3a, 0x9a, 0x40, + + /* U+39 "9" */ + 0x4a, 0x99, 0xb, 0x10, 0x95, 0x3a, 0x99, 0x80, + 0x0, 0x95, 0x3a, 0xb8, 0x0, + + /* U+3A ":" */ + 0x74, 0x0, 0x0, 0x74, + + /* U+3B ";" */ + 0x74, 0x0, 0x0, 0x75, 0x62, 0x0, + + /* U+3C "<" */ + 0x0, 0x1, 0x0, 0x49, 0x80, 0x5c, 0x30, 0x0, + 0x16, 0x91, 0x0, 0x0, 0x0, + + /* U+3D "=" */ + 0x49, 0x99, 0x10, 0x0, 0x0, 0x49, 0x99, 0x10, + + /* U+3E ">" */ + 0x10, 0x0, 0x3, 0x98, 0x20, 0x0, 0x6d, 0x14, + 0x94, 0x0, 0x0, 0x0, 0x0, + + /* U+3F "?" */ + 0x6a, 0xb9, 0x0, 0x0, 0xc0, 0x0, 0xa4, 0x0, + 0x3, 0x0, 0x2, 0x80, 0x0, + + /* U+40 "@" */ + 0x3, 0x87, 0x78, 0x50, 0x28, 0x4a, 0x9c, 0x75, + 0x80, 0xb0, 0xa, 0x28, 0x80, 0xb0, 0xa, 0x28, + 0x28, 0x49, 0x99, 0xa6, 0x3, 0x88, 0x75, 0x0, + + /* U+41 "A" */ + 0x0, 0xb, 0x90, 0x0, 0x3, 0x8a, 0x10, 0x0, + 0xb1, 0x39, 0x0, 0x4d, 0x99, 0xd1, 0xb, 0x10, + 0x3, 0x90, + + /* U+42 "B" */ + 0x2d, 0x99, 0xb1, 0x2a, 0x0, 0x84, 0x2d, 0x9a, + 0xd1, 0x2a, 0x0, 0x39, 0x2d, 0x99, 0xb4, + + /* U+43 "C" */ + 0x7, 0xba, 0xa2, 0x59, 0x0, 0x0, 0x93, 0x0, + 0x0, 0x59, 0x0, 0x0, 0x7, 0xba, 0xa2, + + /* U+44 "D" */ + 0x2e, 0xab, 0xb3, 0x2, 0xa0, 0x1, 0xc0, 0x2a, + 0x0, 0x9, 0x22, 0xa0, 0x1, 0xc0, 0x2e, 0xab, + 0xb3, 0x0, + + /* U+45 "E" */ + 0x2e, 0xaa, 0x82, 0xa0, 0x0, 0x2d, 0xaa, 0x42, + 0xa0, 0x0, 0x2e, 0xaa, 0x90, + + /* U+46 "F" */ + 0x2e, 0xaa, 0x82, 0xa0, 0x0, 0x2e, 0xaa, 0x42, + 0xa0, 0x0, 0x2a, 0x0, 0x0, + + /* U+47 "G" */ + 0x7, 0xba, 0xa2, 0x59, 0x0, 0x0, 0x93, 0x0, + 0x23, 0x59, 0x0, 0x47, 0x7, 0xba, 0xa3, + + /* U+48 "H" */ + 0x2a, 0x0, 0x2a, 0x2a, 0x0, 0x2a, 0x2e, 0xaa, + 0xba, 0x2a, 0x0, 0x2a, 0x2a, 0x0, 0x2a, + + /* U+49 "I" */ + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, + + /* U+4A "J" */ + 0x5, 0xad, 0x50, 0x0, 0x75, 0x0, 0x7, 0x50, + 0x0, 0x84, 0x9, 0xab, 0x0, + + /* U+4B "K" */ + 0x2a, 0x1, 0xa2, 0x2a, 0x1b, 0x20, 0x2c, 0xc7, + 0x0, 0x2d, 0x19, 0x50, 0x2a, 0x0, 0xa4, + + /* U+4C "L" */ + 0x2a, 0x0, 0x2, 0xa0, 0x0, 0x2a, 0x0, 0x2, + 0xa0, 0x0, 0x2e, 0xaa, 0x70, + + /* U+4D "M" */ + 0x2c, 0x0, 0x3, 0xc2, 0xd7, 0x0, 0xbc, 0x29, + 0x92, 0x84, 0xc2, 0x91, 0xb9, 0xc, 0x29, 0x3, + 0x0, 0xc0, + + /* U+4E "N" */ + 0x2d, 0x10, 0x2a, 0x2c, 0xb0, 0x2a, 0x2a, 0x4b, + 0x2a, 0x2a, 0x5, 0xca, 0x2a, 0x0, 0x7a, + + /* U+4F "O" */ + 0x7, 0xbb, 0xb3, 0x5, 0x90, 0x1, 0xc1, 0x93, + 0x0, 0x8, 0x45, 0x90, 0x1, 0xc1, 0x7, 0xbb, + 0xb3, 0x0, + + /* U+50 "P" */ + 0x2e, 0xaa, 0x90, 0x2a, 0x0, 0x84, 0x2a, 0x0, + 0xa3, 0x2e, 0xaa, 0x60, 0x2a, 0x0, 0x0, + + /* U+51 "Q" */ + 0x7, 0xbb, 0xb3, 0x5, 0x90, 0x1, 0xc1, 0x93, + 0x0, 0x8, 0x45, 0x90, 0x0, 0xc1, 0x7, 0xbb, + 0xb3, 0x0, 0x0, 0x39, 0x93, + + /* U+52 "R" */ + 0x2e, 0xaa, 0x90, 0x2a, 0x0, 0x84, 0x2a, 0x0, + 0xa3, 0x2d, 0xac, 0x80, 0x2a, 0x1, 0xa1, + + /* U+53 "S" */ + 0x2a, 0xaa, 0x27, 0x60, 0x0, 0x8, 0x98, 0x10, + 0x0, 0x49, 0x5a, 0xaa, 0x30, + + /* U+54 "T" */ + 0xaa, 0xea, 0x60, 0xc, 0x0, 0x0, 0xc0, 0x0, + 0xc, 0x0, 0x0, 0xc0, 0x0, + + /* U+55 "U" */ + 0x39, 0x0, 0x48, 0x39, 0x0, 0x48, 0x39, 0x0, + 0x48, 0x1c, 0x0, 0x66, 0x6, 0xba, 0xa0, + + /* U+56 "V" */ + 0xb, 0x10, 0x5, 0x70, 0x49, 0x0, 0xb0, 0x0, + 0xc1, 0x57, 0x0, 0x4, 0x9c, 0x0, 0x0, 0xc, + 0x70, 0x0, + + /* U+57 "W" */ + 0x94, 0x0, 0xf1, 0x3, 0x93, 0xa0, 0x69, 0x70, + 0x93, 0xc, 0xb, 0xb, 0xb, 0x0, 0x79, 0x80, + 0x89, 0x70, 0x1, 0xf2, 0x2, 0xf1, 0x0, + + /* U+58 "X" */ + 0x58, 0x2, 0xa0, 0x8, 0x7b, 0x10, 0x0, 0xf5, + 0x0, 0xa, 0x4b, 0x10, 0x76, 0x2, 0xb0, + + /* U+59 "Y" */ + 0xa, 0x20, 0xb, 0x0, 0x1b, 0x9, 0x30, 0x0, + 0x5b, 0x80, 0x0, 0x0, 0xd0, 0x0, 0x0, 0xc, + 0x0, 0x0, + + /* U+5A "Z" */ + 0x6a, 0xac, 0xd0, 0x0, 0x1b, 0x10, 0x0, 0xb2, + 0x0, 0xb, 0x30, 0x0, 0x8d, 0xaa, 0xa0, + + /* U+5B "[" */ + 0x2d, 0x42, 0x90, 0x29, 0x2, 0x90, 0x29, 0x2, + 0x90, 0x2d, 0x40, + + /* U+5C "\\" */ + 0x19, 0x0, 0x0, 0xa0, 0x0, 0x5, 0x50, 0x0, + 0xa, 0x0, 0x0, 0x91, 0x0, 0x3, 0x70, 0x0, + 0xa, 0x0, + + /* U+5D "]" */ + 0x8c, 0xc, 0xc, 0xc, 0xc, 0xc, 0x8c, + + /* U+5E "^" */ + 0x3, 0xc0, 0x0, 0x94, 0x50, 0x27, 0x9, 0x0, + + /* U+5F "_" */ + 0x77, 0x77, + + /* U+60 "`" */ + 0x6, 0x60, + + /* U+61 "a" */ + 0x29, 0x98, 0x2, 0x98, 0xd0, 0x84, 0xc, 0x13, + 0xb9, 0xd1, + + /* U+62 "b" */ + 0x48, 0x0, 0x0, 0x48, 0x0, 0x0, 0x4c, 0xab, + 0x50, 0x4a, 0x0, 0xc0, 0x4a, 0x0, 0xc0, 0x4c, + 0xaa, 0x50, + + /* U+63 "c" */ + 0x1a, 0xaa, 0x18, 0x40, 0x0, 0x84, 0x0, 0x1, + 0xaa, 0xa1, + + /* U+64 "d" */ + 0x0, 0x0, 0xb0, 0x0, 0xb, 0x1a, 0xaa, 0xb9, + 0x40, 0x3b, 0x94, 0x2, 0xb1, 0xa9, 0x9b, + + /* U+65 "e" */ + 0x19, 0x99, 0x19, 0x98, 0x86, 0x85, 0x1, 0x1, + 0xaa, 0xb1, + + /* U+66 "f" */ + 0xa, 0xa0, 0x2a, 0x0, 0x9d, 0x70, 0x29, 0x0, + 0x29, 0x0, 0x29, 0x0, + + /* U+67 "g" */ + 0x1a, 0x99, 0xb9, 0x40, 0x1c, 0x94, 0x2, 0xc1, + 0xaa, 0xab, 0x18, 0x9a, 0x30, + + /* U+68 "h" */ + 0x48, 0x0, 0x4, 0x80, 0x0, 0x4c, 0x9b, 0x44, + 0x90, 0x1b, 0x48, 0x0, 0xc4, 0x80, 0xc, + + /* U+69 "i" */ + 0x37, 0x0, 0x48, 0x48, 0x48, 0x48, + + /* U+6A "j" */ + 0x3, 0x70, 0x0, 0x3, 0x80, 0x38, 0x3, 0x80, + 0x38, 0x6b, 0x40, + + /* U+6B "k" */ + 0x48, 0x0, 0x4, 0x80, 0x0, 0x48, 0xa, 0x44, + 0x9c, 0x30, 0x4d, 0x6a, 0x4, 0x80, 0x77, + + /* U+6C "l" */ + 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, + + /* U+6D "m" */ + 0x4c, 0x9b, 0x89, 0xb4, 0x49, 0x3, 0xb0, 0xb, + 0x48, 0x2, 0xa0, 0xc, 0x48, 0x2, 0xa0, 0xc, + + /* U+6E "n" */ + 0x4c, 0x9b, 0x44, 0x90, 0x1b, 0x48, 0x0, 0xc4, + 0x80, 0xc, + + /* U+6F "o" */ + 0x1a, 0xaa, 0x18, 0x40, 0x3a, 0x84, 0x3, 0xa1, + 0xaa, 0xa1, + + /* U+70 "p" */ + 0x4c, 0xab, 0x50, 0x4a, 0x0, 0xc0, 0x4a, 0x0, + 0xc0, 0x4c, 0xaa, 0x50, 0x48, 0x0, 0x0, + + /* U+71 "q" */ + 0x1a, 0xa9, 0xb9, 0x40, 0x3b, 0x94, 0x3, 0xb1, + 0xaa, 0x9b, 0x0, 0x0, 0xb0, + + /* U+72 "r" */ + 0x4b, 0xa0, 0x4a, 0x0, 0x48, 0x0, 0x48, 0x0, + + /* U+73 "s" */ + 0x5b, 0x95, 0x87, 0x30, 0x3, 0x79, 0x7a, 0xa6, + + /* U+74 "t" */ + 0x29, 0x0, 0x9d, 0x70, 0x29, 0x0, 0x29, 0x0, + 0xb, 0x90, + + /* U+75 "u" */ + 0x57, 0x1, 0xb5, 0x70, 0x1b, 0x48, 0x3, 0xb0, + 0xa9, 0x9b, + + /* U+76 "v" */ + 0xb, 0x0, 0x84, 0x5, 0x70, 0xb0, 0x0, 0xb7, + 0x50, 0x0, 0x6d, 0x0, + + /* U+77 "w" */ + 0xb0, 0xe, 0x20, 0xa0, 0x55, 0x59, 0x82, 0x80, + 0xa, 0xa0, 0xa8, 0x20, 0x9, 0x80, 0x6b, 0x0, + + /* U+78 "x" */ + 0x67, 0x1b, 0x0, 0x9b, 0x10, 0xa, 0xb2, 0x7, + 0x51, 0xb0, + + /* U+79 "y" */ + 0xb, 0x10, 0x83, 0x3, 0x81, 0xa0, 0x0, 0xaa, + 0x30, 0x0, 0x4a, 0x0, 0xa, 0xb2, 0x0, + + /* U+7A "z" */ + 0x59, 0xbb, 0x1, 0xb1, 0xb, 0x20, 0x9c, 0x98, + + /* U+7B "{" */ + 0xa, 0x60, 0xc0, 0xc, 0x5, 0xb0, 0xc, 0x0, + 0xc0, 0xa, 0x60, + + /* U+7C "|" */ + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, + + /* U+7D "}" */ + 0x97, 0x0, 0xb0, 0xb, 0x0, 0xd3, 0xb, 0x0, + 0xb0, 0x97, 0x0, + + /* U+7E "~" */ + 0x29, 0x35, 0x15, 0x6, 0x80, + + /* U+B0 "°" */ + 0x26, 0x47, 0x7, 0x27, 0x50, + + /* U+2022 "•" */ + 0x0, 0x5d, 0x2, + + /* U+F001 "" */ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x26, 0xbe, + 0x0, 0x8d, 0xff, 0xff, 0x0, 0xff, 0xe9, 0x5f, + 0x0, 0xf3, 0x0, 0xf, 0x0, 0xf0, 0x0, 0xf, + 0x0, 0xf0, 0xa, 0xff, 0xaf, 0xf0, 0xa, 0xfa, + 0xaf, 0xa0, 0x0, 0x0, + + /* U+F008 "" */ + 0xbd, 0xcc, 0xce, 0xab, 0x8b, 0x0, 0x7, 0x58, + 0xcd, 0x66, 0x6a, 0xac, 0xcd, 0x66, 0x6a, 0xac, + 0x8b, 0x0, 0x7, 0x58, 0xbd, 0xcc, 0xce, 0xab, + + /* U+F00B "" */ + 0x34, 0x14, 0x44, 0x43, 0xff, 0x7f, 0xff, 0xff, + 0xab, 0x4b, 0xbb, 0xba, 0xbc, 0x5c, 0xcc, 0xcb, + 0xff, 0x7f, 0xff, 0xff, 0x67, 0x17, 0x88, 0x86, + 0xff, 0x7f, 0xff, 0xff, 0xab, 0x4b, 0xbb, 0xba, + + /* U+F00C "" */ + 0x0, 0x0, 0x0, 0x9a, 0x0, 0x0, 0x9, 0xfa, + 0xa9, 0x0, 0x9f, 0xa0, 0xaf, 0x99, 0xfa, 0x0, + 0xa, 0xff, 0xa0, 0x0, 0x0, 0x99, 0x0, 0x0, + + /* U+F00D "" */ + 0x63, 0x0, 0x82, 0xcf, 0x4a, 0xf4, 0x1d, 0xff, + 0x60, 0xa, 0xff, 0x30, 0xaf, 0x7d, 0xf3, 0xa6, + 0x1, 0xb3, + + /* U+F011 "" */ + 0x0, 0xc, 0x51, 0x0, 0x1d, 0x7d, 0x6e, 0x70, + 0x8d, 0xd, 0x65, 0xf1, 0xc7, 0xd, 0x60, 0xe6, + 0xd7, 0x6, 0x20, 0xe6, 0x9d, 0x0, 0x4, 0xf2, + 0x1e, 0xc7, 0x8f, 0x80, 0x1, 0x9d, 0xc6, 0x0, + + /* U+F013 "" */ + 0x0, 0xc, 0xc0, 0x0, 0x18, 0x8f, 0xf8, 0x81, + 0x8f, 0xfe, 0xef, 0xf8, 0x2f, 0xe0, 0xe, 0xf2, + 0x2f, 0xe0, 0xe, 0xf2, 0x8f, 0xfe, 0xef, 0xf8, + 0x18, 0x8f, 0xf8, 0x81, 0x0, 0xc, 0xc0, 0x0, + + /* U+F015 "" */ + 0x0, 0x0, 0x30, 0x22, 0x0, 0x0, 0xaf, 0xaa, + 0xa0, 0x1, 0xda, 0x6a, 0xfa, 0x3, 0xe8, 0xbf, + 0xb8, 0xe3, 0xb6, 0xdf, 0xff, 0xd6, 0xb0, 0x8f, + 0xfb, 0xff, 0x80, 0x8, 0xfc, 0xc, 0xf8, 0x0, + 0x5b, 0x80, 0x8b, 0x50, + + /* U+F019 "" */ + 0x0, 0xf, 0xf0, 0x0, 0x0, 0xf, 0xf0, 0x0, + 0x0, 0xf, 0xf0, 0x0, 0x7, 0xff, 0xff, 0x70, + 0x0, 0x9f, 0xf9, 0x0, 0x78, 0x7a, 0xa7, 0x87, + 0xff, 0xfb, 0xbf, 0xff, 0xff, 0xff, 0xfb, 0xbf, + + /* U+F01C "" */ + 0x5, 0xff, 0xff, 0xf5, 0x1, 0xe3, 0x0, 0x3, + 0xe1, 0xa8, 0x0, 0x0, 0x8, 0xaf, 0xff, 0x60, + 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0xfd, + + /* U+F021 "" */ + 0x0, 0x0, 0x0, 0x3, 0x2, 0xbf, 0xfb, 0x3f, + 0x2e, 0x91, 0x18, 0xff, 0x9a, 0x0, 0x6c, 0xff, + 0x31, 0x0, 0x24, 0x44, 0x44, 0x42, 0x0, 0x13, + 0xff, 0xc6, 0x0, 0xb9, 0xfe, 0xa5, 0x5b, 0xd1, + 0xf2, 0x8c, 0xc8, 0x10, 0x30, 0x0, 0x0, 0x0, + + /* U+F026 "" */ + 0x0, 0x9, 0x34, 0xcf, 0xff, 0xff, 0xff, 0xff, + 0xab, 0xff, 0x0, 0x4f, 0x0, 0x1, + + /* U+F027 "" */ + 0x0, 0x9, 0x0, 0x34, 0xcf, 0x1, 0xff, 0xff, + 0x1b, 0xff, 0xff, 0x1b, 0xbb, 0xff, 0x1, 0x0, + 0x4f, 0x0, 0x0, 0x1, 0x0, + + /* U+F028 "" */ + 0x0, 0x0, 0x0, 0x54, 0x0, 0x0, 0x90, 0x23, + 0xb3, 0x34, 0xcf, 0x2, 0xc3, 0xbf, 0xff, 0xf1, + 0xb5, 0x6c, 0xff, 0xff, 0x1b, 0x56, 0xca, 0xbf, + 0xf0, 0x2c, 0x3a, 0x0, 0x4f, 0x2, 0x3b, 0x30, + 0x0, 0x10, 0x5, 0x40, + + /* U+F03E "" */ + 0xdf, 0xff, 0xff, 0xfd, 0xf0, 0x7f, 0xff, 0xff, + 0xf8, 0xcf, 0xb1, 0xbf, 0xfb, 0x5b, 0x0, 0xf, + 0xf0, 0x0, 0x0, 0xf, 0xdf, 0xff, 0xff, 0xfd, + + /* U+F048 "" */ + 0x40, 0x0, 0x2f, 0x20, 0x8f, 0xf2, 0x9f, 0xff, + 0xcf, 0xff, 0xff, 0xff, 0xff, 0x5e, 0xff, 0xf2, + 0x2e, 0xfb, 0x10, 0x19, + + /* U+F04B "" */ + 0x0, 0x0, 0x0, 0xd, 0xa1, 0x0, 0x0, 0xff, + 0xf7, 0x0, 0xf, 0xff, 0xfd, 0x40, 0xff, 0xff, + 0xff, 0xaf, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xd4, + 0xf, 0xff, 0x70, 0x0, 0xda, 0x10, 0x0, 0x0, + 0x0, 0x0, 0x0, + + /* U+F04C "" */ + 0x9b, 0x90, 0x9b, 0x9f, 0xff, 0xf, 0xff, 0xff, + 0xf0, 0xff, 0xff, 0xff, 0xf, 0xff, 0xff, 0xf0, + 0xff, 0xff, 0xff, 0xf, 0xff, 0xff, 0xf0, 0xff, + 0xf2, 0x42, 0x2, 0x42, + + /* U+F04D "" */ + 0x24, 0x44, 0x44, 0x2f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf8, 0xbb, 0xbb, 0xb8, + + /* U+F051 "" */ + 0x20, 0x0, 0x4f, 0x80, 0x2f, 0xff, 0x92, 0xff, + 0xff, 0xcf, 0xff, 0xff, 0xff, 0xfe, 0x5f, 0xfd, + 0x22, 0xf9, 0x10, 0x1b, + + /* U+F052 "" */ + 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x8f, 0x80, + 0x0, 0x0, 0x7f, 0xff, 0x70, 0x0, 0x5f, 0xff, + 0xff, 0x50, 0xe, 0xff, 0xff, 0xfe, 0x0, 0x58, + 0x88, 0x88, 0x50, 0xf, 0xff, 0xff, 0xff, 0x0, + 0xab, 0xbb, 0xbb, 0xa0, + + /* U+F053 "" */ + 0x0, 0x6, 0x20, 0x7, 0xf4, 0x7, 0xf5, 0x5, + 0xf6, 0x0, 0x1e, 0xb0, 0x0, 0x2e, 0xb0, 0x0, + 0x2e, 0x60, 0x0, 0x10, + + /* U+F054 "" */ + 0x26, 0x0, 0x4, 0xf7, 0x0, 0x5, 0xf7, 0x0, + 0x6, 0xf5, 0x0, 0xbe, 0x10, 0xbe, 0x20, 0x6e, + 0x20, 0x0, 0x10, 0x0, + + /* U+F067 "" */ + 0x0, 0x4, 0x0, 0x0, 0x3, 0xf3, 0x0, 0x0, + 0x4f, 0x40, 0x7, 0x8a, 0xfa, 0x87, 0xef, 0xff, + 0xff, 0xe0, 0x4, 0xf4, 0x0, 0x0, 0x4f, 0x40, + 0x0, 0x1, 0xb1, 0x0, + + /* U+F068 "" */ + 0x78, 0x88, 0x88, 0x7e, 0xff, 0xff, 0xfe, + + /* U+F06E "" */ + 0x0, 0x8c, 0xcc, 0x80, 0x1, 0xdd, 0x16, 0x3d, + 0xd1, 0xcf, 0x55, 0xed, 0x5f, 0xcb, 0xf5, 0xdf, + 0xd5, 0xfc, 0x1d, 0xd3, 0x73, 0xdd, 0x10, 0x8, + 0xdc, 0xc8, 0x10, + + /* U+F070 "" */ + 0x1d, 0x30, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x8c, + 0xcc, 0xa2, 0x0, 0x0, 0x2d, 0xb4, 0x49, 0xf4, + 0x0, 0x7a, 0x1a, 0xff, 0x3f, 0xe1, 0x7, 0xfa, + 0x6, 0xf7, 0xff, 0x10, 0xa, 0xf3, 0x3, 0xef, + 0x40, 0x0, 0x6, 0xcc, 0x71, 0xbb, 0x10, 0x0, + 0x0, 0x0, 0x0, 0x89, + + /* U+F071 "" */ + 0x0, 0x0, 0x3e, 0x30, 0x0, 0x0, 0x0, 0xc, + 0xfc, 0x0, 0x0, 0x0, 0x6, 0xfc, 0xf6, 0x0, + 0x0, 0x0, 0xed, 0xd, 0xe0, 0x0, 0x0, 0x8f, + 0xe0, 0xef, 0x80, 0x0, 0x2f, 0xff, 0x6f, 0xff, + 0x20, 0xb, 0xff, 0xe2, 0xef, 0xfa, 0x0, 0xdf, + 0xff, 0xff, 0xff, 0xd0, + + /* U+F074 "" */ + 0x0, 0x0, 0x0, 0x20, 0x44, 0x0, 0x4, 0xf5, + 0xef, 0xb1, 0xcf, 0xfd, 0x1, 0x8c, 0xd1, 0xc1, + 0x1, 0xdc, 0x81, 0xc1, 0xef, 0xc1, 0xbf, 0xfd, + 0x44, 0x0, 0x4, 0xf5, 0x0, 0x0, 0x0, 0x20, + + /* U+F077 "" */ + 0x0, 0x0, 0x0, 0x0, 0x4, 0xe4, 0x0, 0x4, + 0xfc, 0xf4, 0x4, 0xf8, 0x8, 0xf4, 0xb8, 0x0, + 0x8, 0xb0, 0x0, 0x0, 0x0, + + /* U+F078 "" */ + 0x0, 0x0, 0x0, 0xb, 0x80, 0x0, 0x8b, 0x4f, + 0x80, 0x8f, 0x40, 0x4f, 0xcf, 0x40, 0x0, 0x4e, + 0x40, 0x0, 0x0, 0x0, 0x0, + + /* U+F079 "" */ + 0x0, 0x94, 0x14, 0x44, 0x40, 0x0, 0xbf, 0xf8, + 0xbb, 0xbf, 0x10, 0x8, 0xb7, 0x60, 0x0, 0xe1, + 0x0, 0xb, 0x40, 0x0, 0x1e, 0x20, 0x0, 0xb7, + 0x44, 0x5e, 0xfd, 0x50, 0x7, 0xbb, 0xb8, 0x5f, + 0x80, 0x0, 0x0, 0x0, 0x0, 0x20, 0x0, + + /* U+F07B "" */ + 0xdf, 0xfb, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfd, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xfd, + + /* U+F093 "" */ + 0x0, 0x9, 0x90, 0x0, 0x0, 0x9f, 0xf9, 0x0, + 0x7, 0xff, 0xff, 0x70, 0x0, 0xf, 0xf0, 0x0, + 0x0, 0xf, 0xf0, 0x0, 0x78, 0x4f, 0xf4, 0x87, + 0xff, 0xe8, 0x8e, 0xff, 0xff, 0xff, 0xfb, 0xbf, + + /* U+F095 "" */ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, + 0xea, 0x0, 0x0, 0x0, 0xef, 0xe0, 0x0, 0x0, + 0xc, 0xfc, 0x0, 0x0, 0x0, 0x4f, 0x70, 0x0, + 0x0, 0x1d, 0xe0, 0x7, 0xdc, 0x4d, 0xf3, 0x0, + 0xef, 0xff, 0xe3, 0x0, 0xa, 0xec, 0x70, 0x0, + 0x0, + + /* U+F0C4 "" */ + 0x3, 0x0, 0x0, 0x0, 0xcd, 0xc0, 0x2d, 0xc0, + 0xe7, 0xf2, 0xee, 0x20, 0x4b, 0xff, 0xe2, 0x0, + 0x4, 0xff, 0xa0, 0x0, 0xcd, 0xf9, 0xf9, 0x0, + 0xe7, 0xe0, 0x7f, 0x90, 0x4a, 0x40, 0x4, 0x50, + + /* U+F0C5 "" */ + 0x0, 0xff, 0xf7, 0x47, 0x4f, 0xff, 0x47, 0xf8, + 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xf8, 0xff, + 0xff, 0xff, 0x8f, 0xff, 0xff, 0xfb, 0x78, 0x88, + 0x7f, 0xff, 0xff, 0x0, + + /* U+F0C7 "" */ + 0x24, 0x44, 0x41, 0xf, 0xbb, 0xbb, 0xe2, 0xf0, + 0x0, 0xf, 0xdf, 0x44, 0x44, 0xff, 0xff, 0xfc, + 0xff, 0xff, 0xf9, 0x9, 0xff, 0xff, 0xd5, 0xdf, + 0xf8, 0xbb, 0xbb, 0xb8, + + /* U+F0E7 "" */ + 0x7, 0xff, 0x60, 0x0, 0xaf, 0xf2, 0x0, 0xc, + 0xff, 0x87, 0x0, 0xef, 0xff, 0xb0, 0x7, 0x8e, + 0xf2, 0x0, 0x0, 0xf8, 0x0, 0x0, 0x3e, 0x0, + 0x0, 0x6, 0x50, 0x0, + + /* U+F0EA "" */ + 0x79, 0xb9, 0x70, 0xf, 0xfc, 0xff, 0x0, 0xff, + 0x68, 0x83, 0xf, 0xf8, 0xff, 0x8b, 0xff, 0x8f, + 0xf8, 0x8f, 0xf8, 0xff, 0xff, 0x78, 0x8f, 0xff, + 0xf0, 0x7, 0xff, 0xff, + + /* U+F0F3 "" */ + 0x0, 0xd, 0x0, 0x0, 0x4e, 0xfe, 0x30, 0xd, + 0xff, 0xfd, 0x0, 0xff, 0xff, 0xf0, 0x3f, 0xff, + 0xff, 0x3b, 0xff, 0xff, 0xfb, 0x78, 0x88, 0x88, + 0x60, 0x4, 0xf4, 0x0, + + /* U+F11C "" */ + 0xdf, 0xff, 0xff, 0xff, 0xdf, 0x18, 0x81, 0x88, + 0x1f, 0xfe, 0xaa, 0xca, 0xae, 0xff, 0xea, 0xac, + 0xaa, 0xef, 0xf1, 0x80, 0x0, 0x81, 0xfd, 0xff, + 0xff, 0xff, 0xfd, + + /* U+F124 "" */ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x4b, 0xc0, 0x0, 0x0, 0x5c, 0xff, 0xb0, 0x0, + 0x6e, 0xff, 0xff, 0x40, 0xd, 0xff, 0xff, 0xfc, + 0x0, 0x6, 0x88, 0xcf, 0xf5, 0x0, 0x0, 0x0, + 0x8f, 0xe0, 0x0, 0x0, 0x0, 0x8f, 0x60, 0x0, + 0x0, 0x0, 0x5d, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, + + /* U+F15B "" */ + 0xff, 0xf8, 0xb0, 0xff, 0xf8, 0xfb, 0xff, 0xfc, + 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + + /* U+F1EB "" */ + 0x0, 0x4, 0x77, 0x40, 0x0, 0x9, 0xff, 0xcc, + 0xff, 0x90, 0xcd, 0x40, 0x0, 0x4, 0xdc, 0x20, + 0x4b, 0xff, 0xb4, 0x2, 0x1, 0xfa, 0x55, 0xaf, + 0x10, 0x0, 0x0, 0x21, 0x0, 0x0, 0x0, 0x0, + 0xee, 0x0, 0x0, 0x0, 0x0, 0x87, 0x0, 0x0, + + /* U+F240 "" */ + 0x24, 0x44, 0x44, 0x44, 0x40, 0xfb, 0xbb, 0xbb, + 0xbb, 0xda, 0xf7, 0xee, 0xee, 0xee, 0x5f, 0xf8, + 0xff, 0xff, 0xff, 0x2f, 0xf5, 0x66, 0x66, 0x66, + 0xab, 0x8b, 0xbb, 0xbb, 0xbb, 0xb3, + + /* U+F241 "" */ + 0x24, 0x44, 0x44, 0x44, 0x40, 0xfb, 0xbb, 0xbb, + 0xbb, 0xda, 0xf7, 0xee, 0xee, 0x70, 0x5f, 0xf8, + 0xff, 0xff, 0x80, 0x2f, 0xf5, 0x66, 0x66, 0x54, + 0xab, 0x8b, 0xbb, 0xbb, 0xbb, 0xb3, + + /* U+F242 "" */ + 0x24, 0x44, 0x44, 0x44, 0x40, 0xfb, 0xbb, 0xbb, + 0xbb, 0xda, 0xf7, 0xee, 0xe0, 0x0, 0x5f, 0xf8, + 0xff, 0xf0, 0x0, 0x2f, 0xf5, 0x66, 0x64, 0x44, + 0xab, 0x8b, 0xbb, 0xbb, 0xbb, 0xb3, + + /* U+F243 "" */ + 0x24, 0x44, 0x44, 0x44, 0x40, 0xfb, 0xbb, 0xbb, + 0xbb, 0xda, 0xf7, 0xe7, 0x0, 0x0, 0x5f, 0xf8, + 0xf8, 0x0, 0x0, 0x2f, 0xf5, 0x65, 0x44, 0x44, + 0xab, 0x8b, 0xbb, 0xbb, 0xbb, 0xb3, + + /* U+F244 "" */ + 0x24, 0x44, 0x44, 0x44, 0x40, 0xfb, 0xbb, 0xbb, + 0xbb, 0xd8, 0xf0, 0x0, 0x0, 0x0, 0x5f, 0xf0, + 0x0, 0x0, 0x0, 0x2f, 0xf4, 0x44, 0x44, 0x44, + 0xad, 0x8b, 0xbb, 0xbb, 0xbb, 0xb3, + + /* U+F287 "" */ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, + 0xd8, 0x0, 0x0, 0x0, 0x7, 0x36, 0x40, 0x0, + 0x9, 0xb1, 0x91, 0x11, 0x17, 0x20, 0xef, 0x88, + 0xd8, 0x88, 0xd9, 0x2, 0x20, 0x6, 0x48, 0x70, + 0x0, 0x0, 0x0, 0x6, 0xec, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + + /* U+F293 "" */ + 0x6, 0xdd, 0xc3, 0x4, 0xff, 0x3e, 0xd0, 0x9c, + 0xb5, 0x5f, 0x2b, 0xf7, 0x1a, 0xf4, 0xbf, 0x81, + 0xbf, 0x39, 0xc9, 0x64, 0xf2, 0x4f, 0xf3, 0xde, + 0x0, 0x6d, 0xed, 0x30, + + /* U+F2ED "" */ + 0x78, 0xdf, 0xd8, 0x77, 0x88, 0x88, 0x87, 0x8f, + 0xff, 0xff, 0x88, 0xcc, 0x8c, 0xc8, 0x8c, 0xc8, + 0xcc, 0x88, 0xcc, 0x8c, 0xc8, 0x8c, 0xc8, 0xcc, + 0x85, 0xff, 0xff, 0xf5, + + /* U+F304 "" */ + 0x0, 0x0, 0x0, 0x7e, 0x30, 0x0, 0x0, 0x4b, + 0xfe, 0x0, 0x0, 0x8f, 0x9b, 0x70, 0x0, 0x8f, + 0xff, 0x40, 0x0, 0x8f, 0xff, 0x80, 0x0, 0x7f, + 0xff, 0x80, 0x0, 0xe, 0xff, 0x80, 0x0, 0x0, + 0xee, 0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, + + /* U+F55A "" */ + 0x0, 0xaf, 0xff, 0xff, 0xfc, 0xb, 0xff, 0x9c, + 0xc9, 0xff, 0xaf, 0xff, 0xc1, 0x1c, 0xff, 0xaf, + 0xff, 0xc1, 0x1c, 0xff, 0xb, 0xff, 0x9c, 0xc9, + 0xff, 0x0, 0xaf, 0xff, 0xff, 0xfc, + + /* U+F7C2 "" */ + 0x7, 0xff, 0xfe, 0x17, 0xb6, 0x27, 0xc3, 0xfe, + 0xb9, 0xbe, 0x3f, 0xff, 0xff, 0xf3, 0xff, 0xff, + 0xff, 0x3f, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, + 0x3c, 0xff, 0xff, 0xe1, + + /* U+F8A2 "" */ + 0x0, 0x0, 0x0, 0x3, 0x0, 0x23, 0x0, 0x2, + 0xf0, 0x2e, 0x92, 0x22, 0x5f, 0xd, 0xff, 0xff, + 0xff, 0xf0, 0x2e, 0x92, 0x22, 0x21, 0x0, 0x23, + 0x0, 0x0, 0x0 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 34, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 0, .adv_w = 34, .box_w = 2, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 5, .adv_w = 50, .box_w = 3, .box_h = 3, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 10, .adv_w = 90, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 25, .adv_w = 79, .box_w = 5, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 43, .adv_w = 108, .box_w = 7, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 61, .adv_w = 88, .box_w = 6, .box_h = 6, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 79, .adv_w = 27, .box_w = 2, .box_h = 3, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 82, .adv_w = 43, .box_w = 3, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 93, .adv_w = 43, .box_w = 2, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 100, .adv_w = 51, .box_w = 4, .box_h = 3, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 106, .adv_w = 74, .box_w = 5, .box_h = 4, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 116, .adv_w = 29, .box_w = 2, .box_h = 3, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 119, .adv_w = 49, .box_w = 3, .box_h = 1, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 121, .adv_w = 29, .box_w = 2, .box_h = 2, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 123, .adv_w = 45, .box_w = 5, .box_h = 7, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 141, .adv_w = 85, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 154, .adv_w = 47, .box_w = 3, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 162, .adv_w = 73, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 175, .adv_w = 73, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 188, .adv_w = 86, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 203, .adv_w = 73, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 216, .adv_w = 79, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 229, .adv_w = 77, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 242, .adv_w = 82, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 255, .adv_w = 79, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 268, .adv_w = 29, .box_w = 2, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 272, .adv_w = 29, .box_w = 2, .box_h = 6, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 278, .adv_w = 74, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 291, .adv_w = 74, .box_w = 5, .box_h = 3, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 299, .adv_w = 74, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 312, .adv_w = 73, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 325, .adv_w = 132, .box_w = 8, .box_h = 6, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 349, .adv_w = 94, .box_w = 7, .box_h = 5, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 367, .adv_w = 97, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 382, .adv_w = 93, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 397, .adv_w = 106, .box_w = 7, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 415, .adv_w = 86, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 428, .adv_w = 81, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 441, .adv_w = 99, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 456, .adv_w = 104, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 471, .adv_w = 40, .box_w = 2, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 476, .adv_w = 66, .box_w = 5, .box_h = 5, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 489, .adv_w = 92, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 504, .adv_w = 76, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 517, .adv_w = 122, .box_w = 7, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 535, .adv_w = 104, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 550, .adv_w = 108, .box_w = 7, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 568, .adv_w = 92, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 583, .adv_w = 108, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 604, .adv_w = 93, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 619, .adv_w = 79, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 632, .adv_w = 75, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 645, .adv_w = 101, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 660, .adv_w = 91, .box_w = 7, .box_h = 5, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 678, .adv_w = 144, .box_w = 9, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 701, .adv_w = 86, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 716, .adv_w = 83, .box_w = 7, .box_h = 5, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 734, .adv_w = 84, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 749, .adv_w = 43, .box_w = 3, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 760, .adv_w = 45, .box_w = 5, .box_h = 7, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 778, .adv_w = 43, .box_w = 2, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 785, .adv_w = 75, .box_w = 5, .box_h = 3, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 793, .adv_w = 64, .box_w = 4, .box_h = 1, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 795, .adv_w = 77, .box_w = 3, .box_h = 1, .ofs_x = 0, .ofs_y = 5}, + {.bitmap_index = 797, .adv_w = 77, .box_w = 5, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 807, .adv_w = 87, .box_w = 6, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 825, .adv_w = 73, .box_w = 5, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 835, .adv_w = 87, .box_w = 5, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 850, .adv_w = 78, .box_w = 5, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 860, .adv_w = 45, .box_w = 4, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 872, .adv_w = 88, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 885, .adv_w = 87, .box_w = 5, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 900, .adv_w = 36, .box_w = 2, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 906, .adv_w = 36, .box_w = 3, .box_h = 7, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 917, .adv_w = 79, .box_w = 5, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 932, .adv_w = 36, .box_w = 2, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 938, .adv_w = 135, .box_w = 8, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 954, .adv_w = 87, .box_w = 5, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 964, .adv_w = 81, .box_w = 5, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 974, .adv_w = 87, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 989, .adv_w = 87, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1002, .adv_w = 52, .box_w = 4, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1010, .adv_w = 64, .box_w = 4, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1018, .adv_w = 53, .box_w = 4, .box_h = 5, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1028, .adv_w = 87, .box_w = 5, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1038, .adv_w = 72, .box_w = 6, .box_h = 4, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 1050, .adv_w = 115, .box_w = 8, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1066, .adv_w = 71, .box_w = 5, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1076, .adv_w = 72, .box_w = 6, .box_h = 5, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 1091, .adv_w = 67, .box_w = 4, .box_h = 4, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1099, .adv_w = 45, .box_w = 3, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1110, .adv_w = 38, .box_w = 2, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1117, .adv_w = 45, .box_w = 3, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1128, .adv_w = 74, .box_w = 5, .box_h = 2, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 1133, .adv_w = 54, .box_w = 3, .box_h = 3, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 1138, .adv_w = 40, .box_w = 2, .box_h = 3, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 1141, .adv_w = 128, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1177, .adv_w = 128, .box_w = 8, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1201, .adv_w = 128, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1233, .adv_w = 128, .box_w = 8, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1257, .adv_w = 88, .box_w = 6, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1275, .adv_w = 128, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1307, .adv_w = 128, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1339, .adv_w = 144, .box_w = 9, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1375, .adv_w = 128, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1407, .adv_w = 144, .box_w = 9, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1434, .adv_w = 128, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 1474, .adv_w = 64, .box_w = 4, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1488, .adv_w = 96, .box_w = 6, .box_h = 7, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1509, .adv_w = 144, .box_w = 9, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1545, .adv_w = 128, .box_w = 8, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1569, .adv_w = 112, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = -1}, + {.bitmap_index = 1589, .adv_w = 112, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 1624, .adv_w = 112, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1652, .adv_w = 112, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1680, .adv_w = 112, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = -1}, + {.bitmap_index = 1700, .adv_w = 112, .box_w = 9, .box_h = 8, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 1736, .adv_w = 80, .box_w = 5, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1756, .adv_w = 80, .box_w = 5, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1776, .adv_w = 112, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1804, .adv_w = 112, .box_w = 7, .box_h = 2, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 1811, .adv_w = 144, .box_w = 9, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1838, .adv_w = 160, .box_w = 11, .box_h = 8, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 1882, .adv_w = 144, .box_w = 11, .box_h = 8, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 1926, .adv_w = 128, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1958, .adv_w = 112, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1979, .adv_w = 112, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2000, .adv_w = 160, .box_w = 11, .box_h = 7, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 2039, .adv_w = 128, .box_w = 8, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2063, .adv_w = 128, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2095, .adv_w = 128, .box_w = 9, .box_h = 9, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 2136, .adv_w = 112, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2168, .adv_w = 112, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2196, .adv_w = 112, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2224, .adv_w = 80, .box_w = 7, .box_h = 8, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 2252, .adv_w = 112, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2280, .adv_w = 112, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2308, .adv_w = 144, .box_w = 9, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2335, .adv_w = 128, .box_w = 10, .box_h = 10, .ofs_x = -1, .ofs_y = -2}, + {.bitmap_index = 2385, .adv_w = 96, .box_w = 6, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2409, .adv_w = 160, .box_w = 10, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2449, .adv_w = 160, .box_w = 10, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2479, .adv_w = 160, .box_w = 10, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2509, .adv_w = 160, .box_w = 10, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2539, .adv_w = 160, .box_w = 10, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2569, .adv_w = 160, .box_w = 10, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2599, .adv_w = 160, .box_w = 11, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2643, .adv_w = 112, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2671, .adv_w = 112, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2699, .adv_w = 128, .box_w = 9, .box_h = 9, .ofs_x = -1, .ofs_y = -2}, + {.bitmap_index = 2740, .adv_w = 160, .box_w = 10, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2770, .adv_w = 96, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2798, .adv_w = 129, .box_w = 9, .box_h = 6, .ofs_x = 0, .ofs_y = 0} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_1[] = { + 0x0, 0x1f72, 0xef51, 0xef58, 0xef5b, 0xef5c, 0xef5d, 0xef61, + 0xef63, 0xef65, 0xef69, 0xef6c, 0xef71, 0xef76, 0xef77, 0xef78, + 0xef8e, 0xef98, 0xef9b, 0xef9c, 0xef9d, 0xefa1, 0xefa2, 0xefa3, + 0xefa4, 0xefb7, 0xefb8, 0xefbe, 0xefc0, 0xefc1, 0xefc4, 0xefc7, + 0xefc8, 0xefc9, 0xefcb, 0xefe3, 0xefe5, 0xf014, 0xf015, 0xf017, + 0xf037, 0xf03a, 0xf043, 0xf06c, 0xf074, 0xf0ab, 0xf13b, 0xf190, + 0xf191, 0xf192, 0xf193, 0xf194, 0xf1d7, 0xf1e3, 0xf23d, 0xf254, + 0xf4aa, 0xf712, 0xf7f2 +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 32, .range_length = 95, .glyph_id_start = 1, + .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY + }, + { + .range_start = 176, .range_length = 63475, .glyph_id_start = 96, + .unicode_list = unicode_list_1, .glyph_id_ofs_list = NULL, .list_length = 59, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + } +}; + +/*----------------- + * KERNING + *----------------*/ + + +/*Map glyph_ids to kern left classes*/ +static const uint8_t kern_left_class_mapping[] = +{ + 0, 0, 1, 2, 0, 3, 4, 5, + 2, 6, 7, 8, 9, 10, 9, 10, + 11, 12, 0, 13, 14, 15, 16, 17, + 18, 19, 12, 20, 20, 0, 0, 0, + 21, 22, 23, 24, 25, 22, 26, 27, + 28, 29, 29, 30, 31, 32, 29, 29, + 22, 33, 34, 35, 3, 36, 30, 37, + 37, 38, 39, 40, 41, 42, 43, 0, + 44, 0, 45, 46, 47, 48, 49, 50, + 51, 45, 52, 52, 53, 48, 45, 45, + 46, 46, 54, 55, 56, 57, 51, 58, + 58, 59, 58, 60, 41, 0, 0, 9, + 61, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 +}; + +/*Map glyph_ids to kern right classes*/ +static const uint8_t kern_right_class_mapping[] = +{ + 0, 0, 1, 2, 0, 3, 4, 5, + 2, 6, 7, 8, 9, 10, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 12, + 18, 19, 20, 21, 21, 0, 0, 0, + 22, 23, 24, 25, 23, 25, 25, 25, + 23, 25, 25, 26, 25, 25, 25, 25, + 23, 25, 23, 25, 3, 27, 28, 29, + 29, 30, 31, 32, 33, 34, 35, 0, + 36, 0, 37, 38, 39, 39, 39, 0, + 39, 38, 40, 41, 38, 38, 42, 42, + 39, 42, 39, 42, 43, 44, 45, 46, + 46, 47, 46, 48, 0, 0, 35, 9, + 49, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 +}; + +/*Kern values between classes*/ +static const int8_t kern_class_values[] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 3, -3, 0, 0, + 0, 0, -7, -8, 1, 6, 3, 2, + -5, 1, 6, 0, 5, 1, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 8, 1, -1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, -4, 0, 0, 0, 0, + 0, -3, 2, 3, 0, 0, -1, 0, + -1, 1, 0, -1, 0, -1, -1, -3, + 0, 0, 0, 0, -1, 0, 0, -2, + -2, 0, 0, -1, 0, -3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, + -1, 0, -2, 0, -3, 0, -15, 0, + 0, -3, 0, 3, 4, 0, 0, -3, + 1, 1, 4, 3, -2, 3, 0, 0, + -7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -3, -2, -6, 0, -5, + -1, 0, 0, 0, 0, 0, 5, 0, + -4, -1, 0, 0, 0, -2, 0, 0, + -1, -9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -10, -1, 5, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4, + 0, 1, 0, 0, -3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 5, 1, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, + 3, 1, 4, -1, 0, 0, 3, -1, + -4, -18, 1, 3, 3, 0, -2, 0, + 5, 0, 4, 0, 4, 0, -12, 0, + -2, 4, 0, 4, -1, 3, 1, 0, + 0, 0, -1, 0, 0, -2, 10, 0, + 10, 0, 4, 0, 5, 2, 2, 4, + 0, 0, 0, -5, 0, 0, 0, 0, + 0, -1, 0, 1, -2, -2, -3, 1, + 0, -1, 0, 0, 0, -5, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, -8, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -7, 0, -8, 0, 0, 0, + 0, -1, 0, 13, -2, -2, 1, 1, + -1, 0, -2, 1, 0, 0, -7, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -12, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, -8, 0, 8, 0, 0, -5, 0, + 4, 0, -9, -12, -9, -3, 4, 0, + 0, -9, 0, 2, -3, 0, -2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 4, -16, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 1, 0, 0, 0, + 0, 0, 1, 1, -2, -3, 0, 0, + 0, -1, 0, 0, -1, 0, 0, 0, + -3, 0, -1, 0, -3, -3, 0, -3, + -4, -4, -2, 0, -3, 0, -3, 0, + 0, 0, 0, -1, 0, 0, 1, 0, + 1, -1, 0, 0, 0, 0, 0, 1, + -1, 0, 0, 0, -1, 1, 1, 0, + 0, 0, 0, -2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, -1, 0, + -2, 0, -2, 0, 0, -1, 0, 4, + 0, 0, -1, 0, 0, 0, 0, 0, + 0, 0, -1, -1, 0, 0, -1, 0, + -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1, -1, 0, -1, -2, 0, + 0, 0, 0, 0, 0, 0, 0, -1, + 0, -1, -1, -1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -1, 0, 0, + 0, 0, -1, -2, 0, -2, 0, -4, + -1, -4, 3, 0, 0, -3, 1, 3, + 3, 0, -3, 0, -2, 0, 0, -6, + 1, -1, 1, -7, 1, 0, 0, 0, + -7, 0, -7, -1, -11, -1, 0, -6, + 0, 3, 4, 0, 2, 0, 0, 0, + 0, 0, 0, -2, -2, 0, -4, 0, + 0, 0, -1, 0, 0, 0, -1, 0, + 0, 0, 0, 0, -1, -1, 0, -1, + -2, 0, 0, 0, 0, 0, 0, 0, + -1, -1, 0, -1, -2, -1, 0, 0, + -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1, -1, 0, -2, + 0, -1, 0, -3, 1, 0, 0, -2, + 1, 1, 1, 0, 0, 0, 0, 0, + 0, -1, 0, 0, 0, 0, 0, 1, + 0, 0, -1, 0, -1, -1, -2, 0, + 0, 0, 0, 0, 0, 0, 1, 0, + -1, 0, 0, 0, 0, -1, -2, 0, + -2, 0, 4, -1, 0, -4, 0, 0, + 3, -6, -7, -5, -3, 1, 0, -1, + -8, -2, 0, -2, 0, -3, 2, -2, + -8, 0, -3, 0, 0, 1, 0, 1, + -1, 0, 1, 0, -4, -5, 0, -6, + -3, -3, -3, -4, -2, -3, 0, -2, + -3, 1, 0, 0, 0, -1, 0, 0, + 0, 1, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, + 0, -1, 0, 0, -1, 0, -2, -3, + -3, 0, 0, -4, 0, 0, 0, 0, + 0, 0, -1, 0, 0, 0, 0, 1, + -1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, + -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1, 0, 0, 0, + -2, 0, 0, 0, 0, -6, -4, 0, + 0, 0, -2, -6, 0, 0, -1, 1, + 0, -3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2, 0, 0, -2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, -2, 0, + 0, 0, 0, 2, 0, 1, -3, -3, + 0, -1, -1, -2, 0, 0, 0, 0, + 0, 0, -4, 0, -1, 0, -2, -1, + 0, -3, -3, -4, -1, 0, -3, 0, + -4, 0, 0, 0, 0, 10, 0, 0, + 1, 0, 0, -2, 0, 1, 0, -6, + 0, 0, 0, 0, 0, -12, -2, 4, + 4, -1, -5, 0, 1, -2, 0, -6, + -1, -2, 1, -9, -1, 2, 0, 2, + -4, -2, -5, -4, -5, 0, 0, -8, + 0, 7, 0, 0, -1, 0, 0, 0, + -1, -1, -1, -3, -4, 0, -12, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1, 0, -1, -1, -2, 0, 0, + -3, 0, -1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -3, 0, 0, 3, + 0, 2, 0, -3, 1, -1, 0, -3, + -1, 0, -2, -1, -1, 0, -2, -2, + 0, 0, -1, 0, -1, -2, -2, 0, + 0, -1, 0, 1, -1, 0, -3, 0, + 0, 0, -3, 0, -2, 0, -2, -2, + 1, 0, 0, 0, 0, 0, 0, 0, + 0, -3, 1, 0, -2, 0, -1, -2, + -4, -1, -1, -1, 0, -1, -2, 0, + 0, 0, 0, 0, 0, -1, -1, -1, + 0, 0, 0, 0, 2, -1, 0, -1, + 0, 0, 0, -1, -2, -1, -1, -2, + -1, 0, 1, 5, 0, 0, -3, 0, + -1, 3, 0, -1, -5, -2, 2, 0, + 0, -6, -2, 1, -2, 1, 0, -1, + -1, -4, 0, -2, 1, 0, 0, -2, + 0, 0, 0, 1, 1, -3, -2, 0, + -2, -1, -2, -1, -1, 0, -2, 1, + -2, -2, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -1, -1, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2, 0, 0, -2, + 0, 0, -1, -1, 0, 0, 0, 0, + -1, 0, 0, 0, 0, -1, 0, 0, + 0, 0, 0, -1, 0, 0, 0, 0, + -2, 0, -3, 0, 0, 0, -4, 0, + 1, -3, 3, 0, -1, -6, 0, 0, + -3, -1, 0, -5, -3, -4, 0, 0, + -6, -1, -5, -5, -6, 0, -3, 0, + 1, 9, -2, 0, -3, -1, 0, -1, + -2, -3, -2, -5, -5, -3, -1, 0, + 0, -1, 0, 0, 0, 0, -9, -1, + 4, 3, -3, -5, 0, 0, -4, 0, + -6, -1, -1, 3, -12, -2, 0, 0, + 0, -8, -2, -7, -1, -9, 0, 0, + -9, 0, 8, 0, 0, -1, 0, 0, + 0, 0, -1, -1, -5, -1, 0, -8, + 0, 0, 0, 0, -4, 0, -1, 0, + 0, -4, -6, 0, 0, -1, -2, -4, + -1, 0, -1, 0, 0, 0, 0, -6, + -1, -4, -4, -1, -2, -3, -1, -2, + 0, -3, -1, -4, -2, 0, -2, -2, + -1, -2, 0, 1, 0, -1, -4, 0, + 3, 0, -2, 0, 0, 0, 0, 2, + 0, 1, -3, 5, 0, -1, -1, -2, + 0, 0, 0, 0, 0, 0, -4, 0, + -1, 0, -2, -1, 0, -3, -3, -4, + -1, 0, -3, 1, 5, 0, 0, 0, + 0, 10, 0, 0, 1, 0, 0, -2, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -1, -3, 0, 0, 0, 0, 0, -1, + 0, 0, 0, -1, -1, 0, 0, -3, + -1, 0, 0, -3, 0, 2, -1, 0, + 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 2, 3, 1, -1, 0, -4, + -2, 0, 4, -4, -4, -3, -3, 5, + 2, 1, -11, -1, 3, -1, 0, -1, + 1, -1, -4, 0, -1, 1, -2, -1, + -4, -1, 0, 0, 4, 3, 0, -4, + 0, -7, -2, 4, -2, -5, 0, -2, + -4, -4, -1, 5, 1, 0, -2, 0, + -3, 0, 1, 4, -3, -5, -5, -3, + 4, 0, 0, -9, -1, 1, -2, -1, + -3, 0, -3, -5, -2, -2, -1, 0, + 0, -3, -3, -1, 0, 4, 3, -1, + -7, 0, -7, -2, 0, -4, -7, 0, + -4, -2, -4, -4, 3, 0, 0, -2, + 0, -3, -1, 0, -1, -2, 0, 2, + -4, 1, 0, 0, -7, 0, -1, -3, + -2, -1, -4, -3, -4, -3, 0, -4, + -1, -3, -2, -4, -1, 0, 0, 0, + 6, -2, 0, -4, -1, 0, -1, -3, + -3, -3, -4, -5, -2, -3, 3, 0, + -2, 0, -6, -2, 1, 3, -4, -5, + -3, -4, 4, -1, 1, -12, -2, 3, + -3, -2, -5, 0, -4, -5, -2, -1, + -1, -1, -3, -4, 0, 0, 0, 4, + 4, -1, -8, 0, -8, -3, 3, -5, + -9, -3, -4, -5, -6, -4, 3, 0, + 0, 0, 0, -2, 0, 0, 1, -2, + 3, 1, -2, 3, 0, 0, -4, 0, + 0, 0, 0, 0, 0, -1, 0, 0, + 0, 0, 0, 0, -1, 0, 0, 0, + 0, 1, 4, 0, 0, -2, 0, 0, + 0, 0, -1, -1, -2, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 1, 0, + -1, 0, 5, 0, 2, 0, 0, -2, + 0, 3, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -8, 0, -1, 2, 0, 4, + 0, 0, 13, 2, -3, -3, 1, 1, + -1, 0, -6, 0, 0, 6, -8, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -9, 5, 18, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, -8, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2, 0, 0, -2, + -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1, 0, -3, 0, + 0, 0, 0, 0, 1, 17, -3, -1, + 4, 3, -3, 1, 0, 0, 1, 1, + -2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -17, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -4, + 0, 0, 0, -3, 0, 0, 0, 0, + -3, -1, 0, 0, 0, -3, 0, -2, + 0, -6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1, 0, 0, -2, 0, -2, 0, + -3, 0, 0, 0, -2, 1, -2, 0, + 0, -3, -1, -3, 0, 0, -3, 0, + -1, 0, -6, 0, -1, 0, 0, -10, + -2, -5, -1, -5, 0, 0, -9, 0, + -3, -1, 0, 0, 0, 0, 0, 0, + 0, 0, -2, -2, -1, -2, 0, 0, + 0, 0, -3, 0, -3, 2, -1, 3, + 0, -1, -3, -1, -2, -2, 0, -2, + -1, -1, 1, -3, 0, 0, 0, 0, + -11, -1, -2, 0, -3, 0, -1, -6, + -1, 0, 0, -1, -1, 0, 0, 0, + 0, 1, 0, -1, -2, -1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, + 0, -3, 0, -1, 0, 0, 0, -3, + 1, 0, 0, 0, -3, -1, -3, 0, + 0, -4, 0, -1, 0, -6, 0, 0, + 0, 0, -12, 0, -3, -5, -6, 0, + 0, -9, 0, -1, -2, 0, 0, 0, + 0, 0, 0, 0, 0, -1, -2, -1, + -2, 0, 0, 0, 2, -2, 0, 4, + 6, -1, -1, -4, 2, 6, 2, 3, + -3, 2, 5, 2, 4, 3, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 8, 6, -2, -1, 0, -1, + 10, 6, 10, 0, 0, 0, 1, 0, + 0, 5, 0, 0, -2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -1, 0, + 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 0, -11, -2, -1, -5, + -6, 0, 0, -9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, + 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, -11, -2, -1, + -5, -6, 0, 0, -5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -1, 0, 0, 0, -3, 1, 0, -1, + 1, 2, 1, -4, 0, 0, -1, 1, + 0, 1, 0, 0, 0, 0, -3, 0, + -1, -1, -3, 0, -1, -5, 0, 8, + -1, 0, -3, -1, 0, -1, -2, 0, + -1, -4, -3, -2, 0, 0, 0, -2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, -11, + -2, -1, -5, -6, 0, 0, -9, 0, + 0, 0, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -2, 0, -4, -2, -1, 4, -1, -1, + -5, 0, -1, 0, -1, -3, 0, 3, + 0, 1, 0, 1, -3, -5, -2, 0, + -5, -2, -3, -5, -5, 0, -2, -3, + -2, -2, -1, -1, -2, -1, 0, -1, + 0, 2, 0, 2, -1, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -1, -1, -1, 0, 0, + -3, 0, -1, 0, -2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1, -1, 0, -2, + 0, 0, 0, 0, -1, 0, 0, -2, + -1, 1, 0, -2, -2, -1, 0, -4, + -1, -3, -1, -2, 0, -2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, -9, 0, 4, 0, 0, -2, 0, + 0, 0, 0, -2, 0, -1, 0, 0, + -1, 0, 0, -1, 0, -3, 0, 0, + 5, -2, -4, -4, 1, 1, 1, 0, + -4, 1, 2, 1, 4, 1, 4, -1, + -3, 0, 0, -5, 0, 0, -4, -3, + 0, 0, -3, 0, -2, -2, 0, -2, + 0, -2, 0, -1, 2, 0, -1, -4, + -1, 5, 0, 0, -1, 0, -3, 0, + 0, 2, -3, 0, 1, -1, 1, 0, + 0, -4, 0, -1, 0, 0, -1, 1, + -1, 0, 0, 0, -5, -2, -3, 0, + -4, 0, 0, -6, 0, 5, -1, 0, + -2, 0, 1, 0, -1, 0, -1, -4, + 0, -1, 1, 0, 0, 0, 0, -1, + 0, 0, 1, -2, 0, 0, 0, -2, + -1, 0, -2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -8, 0, 3, 0, + 0, -1, 0, 0, 0, 0, 0, 0, + -1, -1, 0, 0, 0, 3, 0, 3, + 0, 0, 0, 0, 0, -8, -7, 0, + 6, 4, 2, -5, 1, 5, 0, 5, + 0, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 +}; + + +/*Collect the kern class' data in one place*/ +static const 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 = 61, + .right_class_cnt = 49, +}; + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_dsc_t font_dsc = { + .glyph_bitmap = gylph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = &kern_classes, + .kern_scale = 16, + .cmap_num = 2, + .bpp = 4, + .kern_classes = 1, + .bitmap_format = 0 +}; + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +lv_font_t font_2 = { + .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ + .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ + .line_height = 10, /*The maximum line height required by the font*/ + .base_line = 2, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif + .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +}; + +#endif /*#if FONT_2*/ + diff --git a/tests/lv_test_fonts/font_3.c b/tests/lv_test_fonts/font_3.c new file mode 100644 index 000000000..923affa1d --- /dev/null +++ b/tests/lv_test_fonts/font_3.c @@ -0,0 +1,953 @@ +#include "lvgl/lvgl.h" + +/******************************************************************************* + * Size: 20 px + * Bpp: 4 + * Opts: --bpp 4 --size 20 --font ../RobotoMono-Regular.ttf -r 0x20-0x7f --format lvgl -o ..\generated_fonts/font_3.c + ******************************************************************************/ + +#ifndef FONT_3 +#define FONT_3 1 +#endif + +#if FONT_3 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = { + /* U+20 " " */ + + /* U+21 "!" */ + 0x1f, 0xb0, 0xf, 0xfe, 0x69, 0x10, 0x76, 0x40, + 0x30, 0x81, 0x76, 0x98, 0xb0, + + /* U+22 "\"" */ + 0x8e, 0x0, 0x7b, 0x0, 0x7c, 0x60, 0x11, 0x80, + 0x80, 0x43, 0xca, 0x0, 0x37, + + /* U+23 "#" */ + 0x0, 0xc5, 0xe6, 0x7, 0xe6, 0x1, 0xc8, 0x6, + 0xa, 0x6, 0x1, 0xde, 0x40, 0xf, 0x30, 0xf, + 0x2a, 0x0, 0x15, 0x40, 0x15, 0x7f, 0x8d, 0xbf, + 0xc6, 0xde, 0xe1, 0xd2, 0xe0, 0xf2, 0xe0, 0xf2, + 0x80, 0x8d, 0x81, 0x2d, 0xa1, 0x2c, 0x60, 0x11, + 0x88, 0x80, 0x84, 0x40, 0x1d, 0xc4, 0x0, 0xd2, + 0x0, 0xc2, 0x25, 0x61, 0x13, 0x30, 0x40, 0xd, + 0xdc, 0x35, 0xee, 0x1a, 0xf6, 0x3, 0xdd, 0x4, + 0x5c, 0x84, 0xdf, 0x80, 0xa0, 0x1, 0x90, 0xc1, + 0x90, 0xc0, 0x2d, 0x21, 0xd, 0x20, 0xf, 0x1b, + 0x80, 0x11, 0x0, 0x18, + + /* U+24 "$" */ + 0x0, 0xcb, 0xe2, 0x1, 0xff, 0xc4, 0x78, 0xb, + 0x40, 0xd, 0xb0, 0x64, 0xb6, 0xe0, 0x8, 0x27, + 0xed, 0xd0, 0xc0, 0x82, 0x4, 0x0, 0xa, 0x41, + 0xc0, 0x40, 0x38, 0xc8, 0x0, 0xe0, 0xe0, 0x12, + 0x6b, 0x5, 0x84, 0x5a, 0x0, 0x70, 0xe9, 0xa5, + 0xea, 0x80, 0x62, 0xcc, 0x29, 0x54, 0x80, 0x71, + 0xd6, 0x93, 0x21, 0x29, 0x0, 0x45, 0x21, 0xaf, + 0x4a, 0x1, 0x9c, 0xd, 0x2, 0x44, 0x2, 0xa0, + 0xd1, 0x71, 0xf8, 0x86, 0x31, 0x38, 0x44, 0x9b, + 0xb8, 0x97, 0x0, 0x26, 0xd6, 0x1e, 0xa1, 0x0, + 0xe1, 0x0, 0xe0, + + /* U+25 "%" */ + 0x7, 0xee, 0x40, 0x7, 0xc9, 0x10, 0xb7, 0x50, + 0xf, 0x61, 0x32, 0xa7, 0x80, 0xf1, 0x80, 0x42, + 0x1, 0xd2, 0x66, 0x0, 0x69, 0x98, 0x97, 0x45, + 0xe0, 0x2, 0x55, 0x66, 0xab, 0xc1, 0x28, 0x6, + 0xae, 0xe5, 0x8b, 0x48, 0x7, 0x84, 0x41, 0x6, + 0x80, 0x1f, 0x89, 0xa0, 0x3, 0xfa, 0x11, 0x13, + 0xdc, 0x70, 0xc, 0x6b, 0xc, 0xca, 0x88, 0x20, + 0x5, 0x8, 0x78, 0xa8, 0xc5, 0x80, 0x13, 0x40, + 0x7, 0xfb, 0x4c, 0x31, 0x51, 0x8b, 0x0, 0x3c, + 0xcc, 0xa8, 0x82, 0x0, + + /* U+26 "&" */ + 0x0, 0x26, 0x7e, 0xb0, 0x7, 0x15, 0x9b, 0xc, + 0xa8, 0x6, 0xa0, 0xa9, 0xc1, 0xe0, 0xc, 0x40, + 0xe0, 0x13, 0x80, 0x63, 0x7, 0x6, 0x1b, 0x0, + 0xd4, 0x12, 0xf2, 0xae, 0x1, 0x8d, 0x8e, 0x1a, + 0x80, 0x38, 0x90, 0x1, 0x40, 0x1c, 0x38, 0x50, + 0x1a, 0x20, 0xbc, 0x70, 0x32, 0xf2, 0x34, 0x1a, + 0x22, 0x40, 0x60, 0x65, 0x47, 0x51, 0x23, 0x10, + 0xa, 0x8a, 0xa, 0x41, 0x5, 0x0, 0x2a, 0x0, + 0x30, 0x40, 0x5d, 0x45, 0xc0, 0x84, 0x1, 0x6a, + 0xa3, 0xb4, 0x71, 0xb2, 0x0, + + /* U+27 "'" */ + 0x2f, 0x50, 0xe, 0x10, 0x3, 0x81, 0x88, + + /* U+28 "(" */ + 0x0, 0xe1, 0x0, 0xd9, 0x20, 0x15, 0x8c, 0x80, + 0x1d, 0x38, 0x40, 0x10, 0xa6, 0x0, 0x70, 0x90, + 0xa, 0xc4, 0xc0, 0x2, 0x68, 0x1, 0x28, 0x68, + 0x4, 0x40, 0x20, 0x10, 0x81, 0x80, 0x70, 0x80, + 0x42, 0x2, 0x1, 0x18, 0x18, 0x4, 0xe1, 0xe0, + 0x11, 0xa, 0x80, 0x67, 0x31, 0x0, 0xac, 0x24, + 0x2, 0x25, 0x60, 0xd, 0x61, 0x40, 0x10, 0xea, + 0xb8, 0x4, 0x7a, 0x80, + + /* U+29 ")" */ + 0x20, 0xe, 0xe9, 0x0, 0xde, 0xd0, 0x1, 0x1c, + 0x39, 0x80, 0x4e, 0x5e, 0x1, 0xa8, 0xcc, 0x1, + 0x28, 0x50, 0x4, 0x42, 0x80, 0x19, 0x48, 0x40, + 0x21, 0x2, 0x0, 0x8c, 0x1c, 0x2, 0x10, 0xe, + 0x10, 0x70, 0x8, 0xc0, 0x80, 0x27, 0x11, 0x0, + 0x44, 0x80, 0x12, 0x87, 0x80, 0x5c, 0x2a, 0x0, + 0x34, 0x80, 0xb, 0x8d, 0x80, 0x14, 0x1a, 0x1, + 0x7e, 0x8, 0x4, + + /* U+2A "*" */ + 0x0, 0xd3, 0xe2, 0x1, 0xf0, 0x80, 0x80, 0x61, + 0x0, 0x78, 0x6, 0x12, 0xeb, 0x41, 0x10, 0x36, + 0xc0, 0xaa, 0xae, 0x47, 0xe4, 0xc0, 0xeb, 0xb0, + 0x0, 0xdb, 0xd2, 0x1, 0x50, 0xab, 0x98, 0x6, + 0x66, 0x45, 0x8d, 0x0, 0x43, 0x24, 0xc3, 0x8, + 0xe0, 0x1, 0xbe, 0x0, 0x3b, 0xc0, + + /* U+2B "+" */ + 0x0, 0xd1, 0x0, 0xf, 0xca, 0xc0, 0x1f, 0xfd, + 0x6d, 0xff, 0x88, 0x7f, 0xee, 0x62, 0x28, 0x0, + 0x45, 0xaf, 0x76, 0x21, 0xdd, 0xb0, 0x3, 0xff, + 0xa4, + + /* U+2C "," */ + 0xa, 0xf4, 0x1, 0x0, 0x9c, 0x18, 0x8, 0x49, + 0x46, 0x1, 0x69, 0x80, + + /* U+2D "-" */ + 0x78, 0x8f, 0x25, 0x3b, 0xfb, 0x40, + + /* U+2E "." */ + 0x8, 0xc3, 0x17, 0x39, 0x14, 0xf, + + /* U+2F "/" */ + 0x0, 0xf6, 0x68, 0x7, 0x88, 0xe8, 0x3, 0xd4, + 0xc, 0x1, 0xe6, 0x41, 0x0, 0xe4, 0x1e, 0x0, + 0xf7, 0x2, 0x80, 0x79, 0x58, 0x3, 0xcc, 0x14, + 0x1, 0xed, 0x23, 0x0, 0xe1, 0x4a, 0x0, 0xf3, + 0x2, 0x80, 0x7a, 0x90, 0x80, 0x38, 0xcb, 0x40, + 0x3d, 0x40, 0xc0, 0x1e, 0x65, 0x0, 0xf2, 0x87, + 0x0, 0x78, + + /* U+30 "0" */ + 0x0, 0x25, 0xff, 0xb1, 0x0, 0x25, 0xb5, 0x66, + 0x15, 0xa8, 0x2, 0xc7, 0xe6, 0x5e, 0x34, 0x8, + 0x32, 0x20, 0x1, 0x90, 0x53, 0x2, 0x0, 0xc2, + 0x1b, 0xe0, 0xc0, 0x14, 0x48, 0x8, 0x80, 0x21, + 0xb7, 0x50, 0xe, 0x3c, 0x4b, 0x80, 0xd, 0x58, + 0x1a, 0x80, 0x10, 0x83, 0x2e, 0x90, 0x8, 0x3, + 0xc1, 0xe8, 0x3, 0x84, 0xc3, 0xc0, 0x32, 0x86, + 0xa0, 0xc8, 0x80, 0x56, 0xa, 0x16, 0x3f, 0x32, + 0xe2, 0x90, 0x2, 0xda, 0xb3, 0xa, 0xd8, 0x0, + + /* U+31 "1" */ + 0x0, 0xc4, 0x80, 0x6, 0xcd, 0xc9, 0xf9, 0x30, + 0x3, 0x25, 0xd8, 0x1, 0xd6, 0x8e, 0x0, 0x10, + 0xf, 0xff, 0x78, + + /* U+32 "2" */ + 0x0, 0xc, 0xf7, 0xf4, 0x0, 0x62, 0xf6, 0x56, + 0x27, 0xd0, 0xa, 0x46, 0xed, 0x38, 0xa4, 0xe0, + 0x4, 0x34, 0x0, 0xa0, 0x30, 0x5, 0xe4, 0x3, + 0x18, 0x4, 0x30, 0xa0, 0x19, 0x3, 0x0, 0x3f, + 0x40, 0x30, 0x7, 0xd2, 0x52, 0x20, 0x1e, 0x76, + 0x56, 0x0, 0xf2, 0x41, 0xd0, 0x7, 0x8e, 0xcb, + 0x40, 0x3c, 0x3a, 0x3e, 0x20, 0x1e, 0xc1, 0xd2, + 0x0, 0xf5, 0x91, 0xa3, 0xbf, 0x18, 0x28, 0x1c, + 0x47, 0x94, + + /* U+33 "3" */ + 0x0, 0xc, 0xf7, 0xf4, 0x0, 0x43, 0xec, 0xae, + 0xaf, 0xa0, 0xb, 0x1a, 0xb8, 0xb7, 0x26, 0x4, + 0x15, 0x0, 0xa8, 0x30, 0x3b, 0x80, 0x1f, 0xfc, + 0x2b, 0xf, 0x0, 0x85, 0xe7, 0x59, 0xd4, 0x2, + 0x38, 0x62, 0x1c, 0x0, 0xc5, 0xfe, 0xb3, 0xb4, + 0x0, 0xf2, 0x78, 0x78, 0x8, 0x80, 0x31, 0xa, + 0x87, 0x60, 0x7, 0x9, 0x81, 0x92, 0x0, 0x4c, + 0x8, 0x1c, 0x17, 0x68, 0xb9, 0x28, 0x2, 0xe6, + 0x57, 0x57, 0xd1, + + /* U+34 "4" */ + 0x0, 0xf1, 0xff, 0x80, 0x3f, 0x78, 0x7, 0xf3, + 0x18, 0x7, 0xe1, 0x94, 0x30, 0xf, 0xac, 0x28, + 0x3, 0xe4, 0x58, 0x10, 0xf, 0xa4, 0x9c, 0x3, + 0xe7, 0x29, 0x0, 0xf8, 0xa1, 0x50, 0x3, 0xe9, + 0xb, 0x0, 0xf8, 0xd0, 0x3b, 0xfe, 0x30, 0xff, + 0xc, 0x47, 0x84, 0x1e, 0x9, 0xdf, 0xc4, 0x10, + 0xe0, 0x1f, 0xfc, 0xa0, + + /* U+35 "5" */ + 0x0, 0x7f, 0xfc, 0xa0, 0x20, 0x26, 0x7c, 0x20, + 0x60, 0xd9, 0x9c, 0x80, 0xc1, 0xc0, 0x1f, 0x8, + 0x18, 0x7, 0xc4, 0x7, 0x15, 0x6, 0x1, 0x78, + 0x4b, 0xab, 0xe3, 0x80, 0x38, 0xa7, 0xb9, 0x21, + 0x4, 0xd, 0xac, 0x22, 0x68, 0xa, 0x0, 0xf9, + 0x40, 0xc0, 0x3e, 0x30, 0x0, 0xfd, 0x80, 0x62, + 0x2, 0x13, 0x43, 0x0, 0xa0, 0x30, 0x38, 0x32, + 0xa7, 0x51, 0xa, 0x5, 0xaa, 0x8c, 0xf, 0x60, + + /* U+36 "6" */ + 0x0, 0x86, 0x37, 0xd4, 0x3, 0x27, 0x39, 0xa3, + 0x0, 0x45, 0x61, 0x5d, 0x66, 0x1, 0x48, 0x52, + 0x80, 0x70, 0xa1, 0xa8, 0x7, 0x90, 0x2c, 0x59, + 0xd4, 0x2, 0x20, 0xde, 0x98, 0xad, 0x10, 0xe0, + 0x58, 0xee, 0x31, 0x50, 0x5, 0xe, 0x22, 0x92, + 0x41, 0x0, 0x20, 0x6, 0x50, 0x51, 0x6, 0x0, + 0xde, 0x3, 0x81, 0xa0, 0x1b, 0x41, 0x90, 0x9c, + 0x80, 0x4, 0xa2, 0x61, 0xc1, 0xb5, 0x4d, 0xa, + 0x0, 0x1e, 0x22, 0xa9, 0x31, 0x0, + + /* U+37 "7" */ + 0xef, 0xff, 0xd6, 0xec, 0xde, 0x40, 0x39, 0x9f, + 0x88, 0x24, 0x3, 0xc2, 0xca, 0x20, 0x1e, 0x60, + 0x90, 0xf, 0xa4, 0x8c, 0x3, 0xca, 0x36, 0x1, + 0xf4, 0x8b, 0x0, 0x78, 0xcc, 0xc0, 0x1f, 0x48, + 0x50, 0x7, 0x85, 0x50, 0x80, 0x3d, 0x21, 0xe0, + 0x1f, 0x31, 0x20, 0x7, 0x98, 0x68, 0x3, 0xeb, + 0x6, 0x0, 0xe0, + + /* U+38 "8" */ + 0x0, 0x15, 0x77, 0xea, 0x80, 0x43, 0xaa, 0x8c, + 0x15, 0x20, 0xb, 0xa, 0xa4, 0xe9, 0x31, 0x2, + 0x2, 0x80, 0x54, 0x8, 0x6, 0x1, 0xf1, 0x82, + 0x2, 0x80, 0x54, 0x8, 0x12, 0x75, 0x49, 0xd2, + 0xa1, 0x0, 0x50, 0x2b, 0x11, 0xa0, 0x1, 0xe5, + 0x77, 0xe8, 0xb0, 0x42, 0xa, 0x88, 0x16, 0xc9, + 0x8c, 0x10, 0x3, 0x20, 0x60, 0x0, 0xc0, 0x31, + 0x80, 0xc, 0x54, 0x80, 0x2b, 0xd, 0xa, 0xd, + 0xa8, 0xc6, 0x36, 0x4, 0xc4, 0x57, 0x17, 0xc0, + + /* U+39 "9" */ + 0x0, 0x26, 0x7f, 0x51, 0x0, 0x4d, 0x64, 0xca, + 0xac, 0x10, 0x4, 0x8f, 0xcd, 0xc8, 0xd8, 0x28, + 0x48, 0x80, 0x18, 0x94, 0x34, 0xc, 0x3, 0x28, + 0x27, 0x80, 0x7b, 0x80, 0x48, 0xc, 0x3, 0x70, + 0x1a, 0x4, 0x88, 0x0, 0xdc, 0xc, 0x5c, 0x7e, + 0x6b, 0x4, 0x4, 0x22, 0x4d, 0x9e, 0x1c, 0x18, + 0x0, 0xdb, 0xfa, 0xea, 0x24, 0x1, 0xe3, 0x33, + 0x80, 0x79, 0x34, 0x60, 0x2, 0x5b, 0xeb, 0xd, + 0x10, 0xb, 0x54, 0x9f, 0xcc, 0x0, + + /* U+3A ":" */ + 0x5f, 0xb0, 0xf0, 0x42, 0x93, 0x62, 0x3c, 0x90, + 0xf, 0xfe, 0x29, 0xe4, 0x4, 0x9b, 0x97, 0x81, + 0x90, + + /* U+3B ";" */ + 0x6, 0xfa, 0x0, 0x68, 0x28, 0x3, 0xcd, 0xc0, + 0x9, 0x90, 0x1, 0xff, 0xcf, 0x4a, 0x60, 0x1, + 0x2f, 0x0, 0x4, 0x3, 0x70, 0x60, 0x1, 0x9, + 0x0, 0xf, 0xc0, 0x0, + + /* U+3C "<" */ + 0x0, 0xf9, 0x2c, 0x3, 0x9b, 0x6d, 0x40, 0x2, + 0xfd, 0x26, 0xd8, 0x33, 0xd0, 0x55, 0xd2, 0x48, + 0xc3, 0x78, 0xa0, 0x12, 0x28, 0xdd, 0x20, 0x4, + 0x35, 0xac, 0xb7, 0xae, 0x20, 0x2, 0x9e, 0x83, + 0x8f, 0x0, 0xc2, 0xfd, 0x24, 0x1, 0xf3, 0x60, + + /* U+3D "=" */ + 0x39, 0x9f, 0xc6, 0xec, 0xdf, 0x95, 0x3f, 0xff, + 0x30, 0x7, 0xf8, 0xa6, 0x7f, 0x1b, 0x37, 0xf2, + 0x80, + + /* U+3E ">" */ + 0x3a, 0x30, 0xf, 0x9d, 0x73, 0xa, 0x1, 0xc9, + 0x8c, 0x75, 0xae, 0x1, 0x8e, 0x7e, 0x9a, 0x3e, + 0x44, 0x3, 0x2d, 0xe1, 0x32, 0x0, 0x65, 0xbc, + 0x25, 0x40, 0x28, 0xea, 0x57, 0xea, 0x13, 0xd7, + 0x39, 0xe8, 0x10, 0x3, 0xa5, 0xeb, 0x0, 0x72, + 0x5a, 0x0, 0x7c, + + /* U+3F "?" */ + 0x0, 0x1d, 0xf7, 0xea, 0x80, 0x4b, 0x88, 0xaa, + 0x3a, 0x80, 0x5, 0x86, 0xdd, 0x78, 0xb8, 0x89, + 0xe0, 0x80, 0x2, 0xe0, 0x43, 0x2e, 0x1, 0x8c, + 0x4, 0x3, 0xc4, 0xa4, 0x40, 0xf, 0x70, 0x48, + 0x7, 0xb0, 0xe1, 0x0, 0x3a, 0x4d, 0xdc, 0x1, + 0xe7, 0x18, 0x0, 0xf8, 0x9c, 0x3, 0xf6, 0x48, + 0x7, 0xe1, 0x10, 0x7, 0xc3, 0xde, 0x1, 0xf8, + 0x48, 0x3, 0x0, + + /* U+40 "@" */ + 0x0, 0xd1, 0xbf, 0xae, 0x1, 0xc3, 0xab, 0x76, + 0xa9, 0xb0, 0xd, 0x4d, 0xac, 0x8f, 0xea, 0xc0, + 0x4, 0x5b, 0x9, 0xfd, 0x3b, 0xb0, 0x3, 0xe4, + 0x25, 0x2d, 0x95, 0x44, 0x20, 0x8a, 0x2d, 0xc8, + 0x2, 0x4, 0x43, 0x2, 0x41, 0x30, 0x72, 0x1, + 0x77, 0x8, 0x12, 0x80, 0x5, 0xc0, 0x21, 0x30, + 0xe2, 0x0, 0x10, 0x80, 0xb0, 0x98, 0x0, 0xc0, + 0x40, 0xc4, 0xc9, 0x44, 0x5e, 0x88, 0xa0, 0x29, + 0x40, 0x12, 0x67, 0xb, 0x26, 0xc5, 0xb0, 0x5, + 0xc9, 0xf7, 0x26, 0x5d, 0xa2, 0x0, 0x64, 0xd8, + 0x44, 0x3a, 0x80, 0x75, 0x4a, 0x55, 0xd9, 0xc0, + 0x20, + + /* U+41 "A" */ + 0x0, 0xec, 0xf0, 0xf, 0xe1, 0x30, 0x50, 0xf, + 0xce, 0x0, 0xf0, 0xf, 0xda, 0x8, 0x80, 0xf, + 0xc8, 0xba, 0x26, 0x1, 0xe4, 0xc, 0x70, 0xb0, + 0xf, 0x68, 0x38, 0x92, 0x80, 0x79, 0xcc, 0x41, + 0x48, 0x80, 0x18, 0xc6, 0xc0, 0x16, 0xa, 0x1, + 0xac, 0x32, 0x66, 0xc, 0x0, 0xca, 0x8, 0xcc, + 0x50, 0x41, 0x0, 0x11, 0x1b, 0xff, 0x50, 0x20, + 0x1, 0x43, 0x40, 0x32, 0x7, 0x80, 0x30, 0x10, + 0x3, 0x9, 0xa0, 0xa, 0x20, 0x3, 0xc8, 0x28, + + /* U+42 "B" */ + 0x4f, 0xfd, 0xd8, 0xa0, 0x18, 0xd9, 0x88, 0x55, + 0x40, 0xa, 0xe6, 0x55, 0xc6, 0xa8, 0x1, 0xf4, + 0x86, 0x0, 0x7c, 0x61, 0xe0, 0x1e, 0x1b, 0x5, + 0x0, 0x5c, 0x42, 0x7c, 0xa8, 0x80, 0x6, 0xee, + 0x61, 0x36, 0x0, 0xa3, 0xfe, 0xb1, 0xc3, 0x0, + 0xf2, 0x70, 0x40, 0x7, 0xc6, 0xa, 0x1, 0xf0, + 0x81, 0x80, 0x7d, 0x0, 0xa0, 0xb, 0x88, 0x4e, + 0xb1, 0xc0, 0x0, 0xdd, 0xcc, 0x11, 0x80, + + /* U+43 "C" */ + 0x0, 0x15, 0xff, 0xb1, 0x80, 0x24, 0xd5, 0x53, + 0x14, 0xc8, 0x1, 0x43, 0xf5, 0x3c, 0x6c, 0x6c, + 0x30, 0x20, 0x17, 0x84, 0xe8, 0x38, 0x6, 0x35, + 0x36, 0x11, 0x0, 0x75, 0x49, 0x18, 0x7, 0xff, + 0x40, 0x8c, 0x3, 0xf3, 0x8, 0x80, 0x3a, 0x63, + 0x41, 0xc0, 0x31, 0xb1, 0x30, 0xc0, 0x80, 0x50, + 0x12, 0x14, 0x3f, 0x32, 0xd4, 0x73, 0x4, 0xc5, + 0x76, 0x19, 0x80, + + /* U+44 "D" */ + 0x7f, 0xfb, 0xb1, 0x80, 0x3c, 0xae, 0xe1, 0x9d, + 0x10, 0xd, 0xf1, 0x3b, 0x25, 0x80, 0x1f, 0x99, + 0x84, 0xc0, 0x1f, 0xa0, 0x34, 0x3, 0xf0, 0x92, + 0x0, 0x7f, 0x8, 0x7, 0xf9, 0xc0, 0x40, 0x3f, + 0x38, 0x8, 0x7, 0xe1, 0x0, 0xfe, 0x12, 0x40, + 0xf, 0xd0, 0x1a, 0x1, 0xf3, 0xb1, 0xb0, 0x5, + 0xf1, 0x3b, 0x5, 0xa0, 0x19, 0x5d, 0xc3, 0x3a, + 0x20, 0x0, + + /* U+45 "E" */ + 0x3f, 0xff, 0xcc, 0x0, 0x26, 0x6f, 0x28, 0x1, + 0x26, 0x7c, 0x60, 0x1f, 0xfd, 0xe6, 0xff, 0xe8, + 0x0, 0x89, 0xdf, 0xb0, 0x2, 0x48, 0x8e, 0x40, + 0xf, 0xfe, 0xaa, 0x44, 0x79, 0x0, 0x4, 0xef, + 0xec, + + /* U+46 "F" */ + 0x2f, 0xff, 0xd2, 0x0, 0x26, 0x6f, 0x60, 0x1, + 0xe6, 0x7c, 0xa0, 0x1f, 0xfd, 0xe5, 0xff, 0xe9, + 0x0, 0x89, 0xdf, 0xb0, 0x2, 0x78, 0x8e, 0x50, + 0xf, 0xff, 0x38, + + /* U+47 "G" */ + 0x0, 0x8a, 0xff, 0xd8, 0xa0, 0x19, 0x35, 0x10, + 0xa5, 0x52, 0x1, 0x50, 0xed, 0xd7, 0x1b, 0x20, + 0x38, 0xc1, 0x0, 0x5e, 0x1e, 0x18, 0xe, 0x1, + 0x8e, 0x78, 0x14, 0x44, 0x1, 0xcc, 0xa0, 0x24, + 0x1, 0xff, 0xc2, 0x68, 0x89, 0xc0, 0x3d, 0xae, + 0xf4, 0x80, 0x90, 0x5, 0x7f, 0xe2, 0x0, 0x28, + 0x88, 0x3, 0xf6, 0x84, 0x80, 0x7e, 0x62, 0x74, + 0x0, 0x88, 0x80, 0x17, 0x8d, 0xda, 0x6f, 0x42, + 0x80, 0x5, 0xec, 0xac, 0xc7, 0xd4, + + /* U+48 "H" */ + 0x9f, 0x10, 0xc, 0x3f, 0x20, 0x1f, 0xff, 0x2e, + 0xff, 0xdc, 0x1, 0x99, 0xdf, 0x30, 0x6, 0x88, + 0xf0, 0x7, 0xff, 0xa0, + + /* U+49 "I" */ + 0x4f, 0xff, 0xc8, 0xcd, 0x80, 0xc, 0xd8, 0xa6, + 0x60, 0x19, 0x98, 0x80, 0x3f, 0xff, 0xe0, 0x1f, + 0xfc, 0xd2, 0x99, 0x80, 0x66, 0x62, 0x66, 0xc0, + 0x6, 0x6c, + + /* U+4A "J" */ + 0x0, 0xfd, 0x3e, 0x60, 0x1f, 0xff, 0xf0, 0xf, + 0xfe, 0x6b, 0xb0, 0x7, 0x18, 0x5, 0x52, 0x1, + 0xce, 0x6, 0x14, 0x12, 0x1, 0x39, 0x28, 0x1, + 0xcd, 0xb6, 0x72, 0xa, 0xc0, 0x2c, 0x80, 0x62, + 0x6c, 0x10, + + /* U+4B "K" */ + 0x4f, 0x80, 0xc, 0x9f, 0xa0, 0x1f, 0x15, 0x7, + 0x80, 0x7d, 0xc3, 0x44, 0x1, 0xe9, 0x36, 0x50, + 0xf, 0x2b, 0x14, 0x80, 0x78, 0xa8, 0x3c, 0x3, + 0xc3, 0xc1, 0x4, 0x1, 0xe6, 0x30, 0xa0, 0xf, + 0xc8, 0xa5, 0x0, 0x1e, 0x2a, 0xb1, 0x72, 0x0, + 0xe5, 0x11, 0x40, 0x70, 0x7, 0xe6, 0x33, 0x30, + 0x7, 0xee, 0x8, 0x10, 0xf, 0x89, 0xc6, 0xc0, + 0x3f, 0x41, 0x2a, 0x0, + + /* U+4C "L" */ + 0xf, 0xb0, 0xf, 0xff, 0xf8, 0x7, 0xff, 0xa9, + 0x62, 0x3c, 0xc0, 0x1, 0x77, 0xf6, 0x0, + + /* U+4D "M" */ + 0x8f, 0xd0, 0xd, 0x5f, 0x60, 0x2, 0x20, 0x4, + 0xa0, 0x1c, 0xa0, 0x5, 0x0, 0xe2, 0xb0, 0x7, + 0x88, 0x80, 0x24, 0x31, 0x5, 0x60, 0xd, 0xa0, + 0xea, 0x16, 0x1, 0x98, 0xb7, 0xc4, 0xc4, 0x3, + 0x2a, 0x2b, 0x80, 0x7a, 0xc0, 0x1a, 0x1, 0xc2, + 0x62, 0x24, 0x0, 0xf9, 0x98, 0x1, 0xfa, 0x20, + 0x1, 0xff, 0xd6, + + /* U+4E "N" */ + 0x9f, 0x70, 0xc, 0x7f, 0x20, 0x9, 0x0, 0xfe, + 0x17, 0x0, 0xfe, 0x90, 0xf, 0xca, 0x2e, 0x1, + 0xf7, 0xc, 0x80, 0x7c, 0xf0, 0x2c, 0x1, 0xf3, + 0xc, 0x0, 0x7e, 0x81, 0x60, 0xf, 0x98, 0x61, + 0xc0, 0x3e, 0x91, 0xe0, 0xf, 0x9c, 0x54, 0x3, + 0xf4, 0x80, 0x7f, 0x38, 0x80, 0x7f, 0x48, 0x0, + + /* U+4F "O" */ + 0x0, 0x1d, 0xff, 0xac, 0x80, 0x24, 0xc4, 0x33, + 0x26, 0x98, 0x2, 0x87, 0x73, 0x20, 0xd0, 0x61, + 0x92, 0x0, 0x1c, 0xb, 0x60, 0x30, 0x6, 0x60, + 0xc7, 0x11, 0x0, 0x61, 0x13, 0x91, 0x80, 0x78, + 0xcc, 0x2, 0x1, 0xf0, 0x80, 0x80, 0x7c, 0x24, + 0x60, 0x1e, 0x33, 0x38, 0x88, 0x3, 0x8, 0x9f, + 0x1, 0x80, 0x33, 0x6, 0x30, 0xc1, 0x80, 0xa, + 0x45, 0x82, 0x83, 0x2e, 0xda, 0x34, 0x0, 0x4d, + 0x44, 0xd8, 0x80, + + /* U+50 "P" */ + 0x2f, 0xfe, 0xe9, 0x10, 0xc, 0x4e, 0xf2, 0xb7, + 0x90, 0x4, 0xf1, 0x15, 0xc8, 0xc8, 0x7, 0xe6, + 0x24, 0x10, 0xf, 0xce, 0x6, 0x1, 0xf9, 0x80, + 0xc0, 0x3e, 0x53, 0x41, 0x0, 0x3c, 0x45, 0x74, + 0x32, 0x1, 0x13, 0xbc, 0xad, 0xe4, 0x1, 0x2f, + 0xfd, 0xd2, 0x20, 0x1f, 0xfe, 0xd0, + + /* U+51 "Q" */ + 0x0, 0x8e, 0xff, 0xd6, 0x60, 0x1c, 0x98, 0x86, + 0x64, 0xc4, 0x0, 0x86, 0xc7, 0x73, 0x1a, 0x36, + 0x20, 0x6, 0x8, 0x20, 0x1, 0x58, 0x30, 0x2, + 0xc1, 0x80, 0x32, 0x85, 0x80, 0xc, 0x80, 0x3c, + 0x46, 0x1, 0x30, 0x7, 0x98, 0x0, 0x20, 0x1f, + 0xe1, 0x10, 0x7, 0xf8, 0x40, 0xc, 0x1, 0xe6, + 0x0, 0x8c, 0x80, 0x3c, 0x46, 0x0, 0xb0, 0x50, + 0xc, 0xa1, 0x60, 0x6, 0xb, 0x20, 0x1, 0x58, + 0x30, 0x0, 0x6c, 0x76, 0xed, 0xa3, 0x42, 0x1, + 0x26, 0x22, 0x42, 0x1a, 0x1, 0xc7, 0x7f, 0xf1, + 0xbd, 0x0, 0x7e, 0x1c, 0x47, 0x10, 0xf, 0xeb, + 0xd1, + + /* U+52 "R" */ + 0x3f, 0xfe, 0xc6, 0x0, 0xe3, 0x77, 0x31, 0x4d, + 0x0, 0x64, 0x88, 0x4f, 0x1a, 0xa8, 0x3, 0xf7, + 0x87, 0x80, 0x7e, 0x20, 0x10, 0xf, 0xc4, 0x2, + 0x1, 0xfb, 0xc3, 0x80, 0x24, 0x88, 0x4f, 0x1b, + 0x20, 0x4, 0x6e, 0xe6, 0x19, 0x90, 0x6, 0x7f, + 0xf5, 0x7, 0x0, 0x7e, 0x51, 0x71, 0x0, 0xfd, + 0x0, 0xc0, 0x1f, 0x98, 0x64, 0x3, 0xfa, 0x45, + 0xc0, 0x3f, 0x30, 0x48, 0x0, + + /* U+53 "S" */ + 0x0, 0x1d, 0xf7, 0xe2, 0x80, 0x65, 0xc4, 0x55, + 0x15, 0x58, 0x0, 0x68, 0x76, 0xeb, 0x91, 0xe, + 0x8, 0xc, 0x40, 0x14, 0x85, 0x0, 0x42, 0x1, + 0x8a, 0x6c, 0x10, 0x19, 0x40, 0x33, 0x30, 0x6, + 0xc2, 0xb1, 0x84, 0x3, 0x93, 0x50, 0xe7, 0xa0, + 0x3, 0x8a, 0xfa, 0x5, 0xf4, 0x3, 0xc2, 0xfc, + 0xa5, 0x40, 0xac, 0x1, 0xd4, 0xa, 0x1d, 0x28, + 0x1, 0xfb, 0xc2, 0x44, 0x2, 0x70, 0x40, 0x47, + 0x2e, 0xa9, 0xc8, 0x19, 0x0, 0x45, 0xa2, 0x18, + 0x63, 0xc8, 0x0, + + /* U+54 "T" */ + 0x3f, 0xff, 0xf2, 0xb, 0x36, 0x0, 0x33, 0x71, + 0x4c, 0xe2, 0x19, 0x9c, 0x40, 0x1f, 0xff, 0xf0, + 0xf, 0xff, 0xc8, + + /* U+55 "U" */ + 0xaf, 0x10, 0xc, 0x5f, 0x20, 0x1f, 0xfc, 0x73, + 0x0, 0xff, 0xef, 0x18, 0x7, 0xff, 0x3c, 0xc0, + 0x40, 0x30, 0x81, 0xf8, 0x20, 0x6, 0x40, 0xf7, + 0x9, 0x20, 0x1, 0x48, 0x38, 0xd0, 0xed, 0x53, + 0x46, 0x84, 0x17, 0x11, 0x54, 0x98, 0xa0, + + /* U+56 "V" */ + 0x2f, 0xc0, 0xf, 0x6f, 0x89, 0x10, 0xc0, 0x38, + 0x48, 0xc4, 0x10, 0x14, 0x3, 0x38, 0x58, 0x3, + 0x43, 0x0, 0x36, 0x2, 0x0, 0x10, 0x1c, 0x3, + 0x20, 0x98, 0x4, 0xa2, 0x40, 0x3, 0x17, 0x0, + 0xde, 0x8, 0x0, 0xb0, 0xd0, 0xc, 0x81, 0xa0, + 0x4, 0x4, 0x0, 0xc2, 0x68, 0x2, 0x68, 0x1, + 0xeb, 0x4, 0x40, 0x68, 0x7, 0x94, 0x33, 0xc1, + 0xc0, 0x3c, 0x44, 0x54, 0x31, 0x0, 0xf9, 0x8, + 0x50, 0x3, 0xf6, 0x80, 0x2c, 0x3, 0xf2, 0x0, + 0x98, 0x6, + + /* U+57 "W" */ + 0x3f, 0x70, 0x5, 0xf8, 0x0, 0xfd, 0xc8, 0x38, + 0x0, 0xa0, 0x40, 0xc0, 0x42, 0x6, 0x2, 0x20, + 0x70, 0x30, 0x10, 0x16, 0x2, 0x0, 0x68, 0x70, + 0x30, 0x11, 0x1, 0x40, 0xc8, 0x4, 0x8, 0x18, + 0x43, 0xc9, 0x5c, 0x8, 0x40, 0x4, 0x2, 0x4f, + 0xe4, 0xc, 0x40, 0xe, 0x3, 0x52, 0x20, 0x11, + 0xb0, 0x0, 0x81, 0xc7, 0x54, 0x1c, 0x48, 0x0, + 0xe1, 0x80, 0xc2, 0x2c, 0xf, 0x0, 0x10, 0x38, + 0x18, 0x13, 0x81, 0x0, 0x4, 0x4, 0x80, 0xa, + 0x20, 0xc0, 0x11, 0x3, 0x0, 0x38, 0x0, 0x40, + 0x13, 0x1, 0x80, 0xc, 0x0, 0x20, 0x11, 0x7, + 0x0, 0x14, 0x8, 0x0, + + /* U+58 "X" */ + 0xc, 0xf5, 0x0, 0xc3, 0xfe, 0x10, 0xf0, 0x80, + 0xd, 0x61, 0x2, 0x6, 0xa4, 0xc0, 0x2, 0x51, + 0x70, 0xa, 0x2, 0x0, 0x12, 0x16, 0x1, 0x89, + 0xc5, 0xcd, 0xd, 0x40, 0x3a, 0x46, 0x7c, 0x3c, + 0x3, 0xc3, 0x2, 0x68, 0x60, 0x1f, 0x38, 0x3, + 0x80, 0x3f, 0x48, 0x2, 0x40, 0x3e, 0x17, 0x26, + 0x35, 0x0, 0xf5, 0x84, 0x40, 0x20, 0x3, 0x8d, + 0x49, 0x45, 0xc9, 0x80, 0x37, 0x84, 0x80, 0x24, + 0x20, 0x40, 0xa, 0x66, 0x40, 0x0, 0xb8, 0xc8, + 0x2, 0x3, 0xc0, 0x34, 0xb, 0x90, + + /* U+59 "Y" */ + 0x2f, 0xd0, 0xe, 0x1f, 0xe0, 0x24, 0x25, 0x0, + 0xd2, 0x12, 0x0, 0x80, 0x90, 0xc, 0xc0, 0xc0, + 0x3, 0x3c, 0x0, 0x61, 0x71, 0x0, 0xa0, 0x24, + 0x1, 0x61, 0x20, 0x19, 0x9, 0x45, 0x49, 0x84, + 0x3, 0xa0, 0x26, 0x41, 0x60, 0x1e, 0x52, 0x73, + 0x52, 0x0, 0xfa, 0xc0, 0x12, 0x1, 0xf9, 0x80, + 0xcc, 0x1, 0xff, 0xd6, 0x70, 0xf, 0xfe, 0x88, + + /* U+5A "Z" */ + 0xcf, 0xff, 0xc9, 0x6c, 0xde, 0x0, 0x33, 0xcc, + 0xf6, 0x2, 0x90, 0x7, 0xac, 0x2c, 0x3, 0xd0, + 0x30, 0x20, 0x1c, 0x4e, 0x4e, 0x1, 0xe9, 0x9, + 0x0, 0xf2, 0x21, 0x50, 0x3, 0xd2, 0x16, 0x1, + 0xe7, 0x28, 0x10, 0xe, 0x18, 0x27, 0x0, 0xf5, + 0x84, 0x0, 0x79, 0x15, 0x14, 0x3, 0xd0, 0x0, + 0x88, 0xf2, 0x8, 0x23, 0xbf, 0xb0, + + /* U+5B "[" */ + 0x68, 0x88, 0x2d, 0xde, 0x0, 0x17, 0xf8, 0x3, + 0xff, 0xfe, 0x0, 0x28, 0x80, 0x4, 0xee, 0x0, + + /* U+5C "\\" */ + 0x9f, 0x10, 0xe, 0xa0, 0x60, 0xe, 0x32, 0xa0, + 0xf, 0x51, 0x18, 0x7, 0x30, 0x58, 0x7, 0xa, + 0x30, 0x7, 0xb8, 0x50, 0x3, 0x94, 0x78, 0x3, + 0xce, 0xa2, 0x1, 0xd4, 0xe, 0x1, 0xc6, 0x54, + 0x1, 0xea, 0x32, 0x0, 0xe6, 0xa, 0x0, 0xe1, + 0x46, 0x0, 0xf7, 0xa, 0x0, 0x72, 0x87, 0x0, + + /* U+5D "]" */ + 0x8, 0x89, 0x81, 0xde, 0xb0, 0xff, 0x10, 0x7, + 0xff, 0xfc, 0x1, 0x10, 0x20, 0x3, 0xb8, 0x0, + + /* U+5E "^" */ + 0x0, 0xb7, 0x40, 0x1c, 0x64, 0x43, 0x0, 0xd4, + 0x0, 0xa0, 0xc, 0xca, 0xa6, 0x0, 0x98, 0x3b, + 0x80, 0xa0, 0xa, 0x14, 0x40, 0xc8, 0x11, 0xb0, + 0x1, 0x8c, 0xa8, 0x28, 0x1, 0x41, 0x40, + + /* U+5F "_" */ + 0x37, 0x7f, 0xc6, 0x91, 0x1f, 0x90, + + /* U+60 "`" */ + 0x57, 0x30, 0x4a, 0xe0, 0x1f, 0x39, + + /* U+61 "a" */ + 0x0, 0x26, 0x7f, 0x62, 0x80, 0x4d, 0x62, 0xee, + 0x3a, 0x60, 0x19, 0x2d, 0x89, 0xd0, 0x90, 0x4, + 0x48, 0x4, 0x48, 0x4, 0x2e, 0x80, 0x18, 0x40, + 0x21, 0x9d, 0xff, 0x94, 0x2, 0xc6, 0x4a, 0xbc, + 0x40, 0x3, 0x14, 0x4a, 0xa1, 0x88, 0x7, 0xe1, + 0x70, 0x3, 0x8c, 0x4b, 0xcf, 0x90, 0x8, 0xb1, + 0x5e, 0x16, 0x1c, 0x14, + + /* U+62 "b" */ + 0x4f, 0x80, 0xf, 0xfe, 0xe3, 0xef, 0xeb, 0x0, + 0x67, 0x87, 0x53, 0x97, 0x0, 0x87, 0x6a, 0x98, + 0x30, 0x20, 0x6, 0x20, 0x1, 0x48, 0x38, 0x7, + 0xc8, 0x1e, 0x1, 0xf0, 0x81, 0x80, 0x7c, 0x20, + 0x60, 0x1f, 0x28, 0x78, 0x1, 0x40, 0x35, 0x83, + 0x80, 0xb, 0x5d, 0xb0, 0xa0, 0x40, 0x10, 0xb3, + 0x21, 0x97, 0x0, + + /* U+63 "c" */ + 0x0, 0x1d, 0xf7, 0xea, 0x80, 0x49, 0x88, 0xec, + 0x15, 0x20, 0xa, 0xc, 0x99, 0x6a, 0x31, 0xa8, + 0xb9, 0x80, 0x5e, 0x4b, 0xa1, 0x80, 0x19, 0x35, + 0x84, 0x1c, 0x3, 0xe1, 0x7, 0x0, 0xfb, 0x43, + 0x0, 0x31, 0x42, 0x28, 0xb9, 0x0, 0x50, 0xee, + 0xa, 0xd, 0x98, 0xd5, 0x73, 0x4, 0xc4, 0x77, + 0xd, 0xc0, 0x0, + + /* U+64 "d" */ + 0x0, 0xfa, 0x3d, 0x0, 0x3f, 0xfa, 0x8b, 0xbf, + 0xce, 0x1, 0x9a, 0x89, 0x52, 0x1c, 0x0, 0x32, + 0x3b, 0x54, 0xd1, 0x0, 0x38, 0x31, 0x0, 0x9, + 0x80, 0x1e, 0x18, 0x1, 0xf1, 0x83, 0x80, 0x7c, + 0x60, 0xe0, 0x1f, 0x78, 0x60, 0x7, 0xce, 0xc, + 0x40, 0x1, 0x50, 0x0, 0xc8, 0xed, 0x53, 0xc8, + 0x2, 0x6a, 0x25, 0x46, 0x80, 0x0, + + /* U+65 "e" */ + 0x0, 0x15, 0x77, 0xe2, 0x80, 0x47, 0xaa, 0x8e, + 0x55, 0x0, 0xd, 0x1d, 0xa8, 0xe3, 0x72, 0x61, + 0x92, 0x0, 0xa4, 0x17, 0xc3, 0x26, 0x77, 0x87, + 0x18, 0x23, 0x36, 0x50, 0x30, 0x6, 0x7f, 0xfa, + 0xb4, 0x2c, 0x3, 0xe6, 0x7, 0x40, 0x8, 0xac, + 0x86, 0xc2, 0xea, 0x2b, 0x54, 0xc1, 0x35, 0x51, + 0xde, 0xf1, + + /* U+66 "f" */ + 0x0, 0xe2, 0x68, 0x74, 0x0, 0xe7, 0xd9, 0x78, + 0xb0, 0xc, 0x70, 0x57, 0xfe, 0xd0, 0xd, 0x61, + 0x8, 0x0, 0x20, 0xc, 0x20, 0xc0, 0x1d, 0x1f, + 0xe6, 0xc, 0xff, 0x90, 0x2e, 0x64, 0x60, 0xf3, + 0x32, 0x81, 0xb3, 0x14, 0x2d, 0x9a, 0x10, 0xf, + 0xff, 0xf8, 0x7, 0xff, 0x8, + + /* U+67 "g" */ + 0x0, 0x36, 0xff, 0x43, 0xfa, 0x3, 0xc8, 0x44, + 0xa4, 0x0, 0x6, 0x7, 0x1d, 0xd8, 0x60, 0x7, + 0x9, 0x10, 0x9, 0x0, 0x1e, 0x6, 0x1, 0xfc, + 0xe0, 0x1f, 0xce, 0x1, 0xf7, 0x86, 0x0, 0x7c, + 0xe0, 0xc4, 0x0, 0x16, 0x0, 0xc, 0x8e, 0xd5, + 0x3c, 0x40, 0x26, 0xa2, 0x57, 0x67, 0x0, 0xcb, + 0xbf, 0xb0, 0x40, 0xc1, 0xa, 0x1, 0x12, 0x91, + 0x0, 0xea, 0xe2, 0xb4, 0x24, 0x1, 0x72, 0xee, + 0x54, 0xc4, 0x0, + + /* U+68 "h" */ + 0x4f, 0x70, 0xf, 0xfe, 0xe1, 0xdf, 0xf4, 0x88, + 0x5, 0x78, 0xc, 0x6d, 0xa0, 0x11, 0x6d, 0xce, + 0x91, 0x98, 0x0, 0xc4, 0x1, 0x50, 0x28, 0x3, + 0xc0, 0x30, 0x80, 0x7f, 0x18, 0x7, 0xff, 0xa0, + + /* U+69 "i" */ + 0x0, 0xcd, 0xe8, 0x1, 0xf7, 0x1, 0x0, 0x7d, + 0x1c, 0xc0, 0x1f, 0x84, 0x3, 0xbf, 0xf9, 0x80, + 0x33, 0x34, 0x60, 0x1e, 0x99, 0xa8, 0x3, 0xff, + 0xed, 0x33, 0x50, 0x54, 0xc9, 0xc1, 0x9a, 0x30, + 0x36, 0x65, 0x0, + + /* U+6A "j" */ + 0x0, 0xd3, 0xc4, 0x1, 0x8c, 0x44, 0x1, 0xab, + 0x8c, 0x3, 0x84, 0x7, 0xff, 0x8c, 0x59, 0xa2, + 0x0, 0xa6, 0x65, 0x0, 0xff, 0xf9, 0x10, 0x7, + 0xa, 0x81, 0xc4, 0x27, 0xc2, 0x1, 0x5d, 0x8a, + 0x9c, 0x0, + + /* U+6B "k" */ + 0x4f, 0x80, 0xf, 0xff, 0x1a, 0xfe, 0x88, 0x7, + 0x92, 0x8b, 0x4, 0x3, 0x92, 0xc7, 0xc4, 0x3, + 0x8e, 0xc7, 0x8, 0x3, 0x8b, 0x42, 0xc8, 0x3, + 0xca, 0x21, 0x20, 0x1f, 0xad, 0x4e, 0x40, 0x3c, + 0xe9, 0x64, 0xca, 0x1, 0xf0, 0xf0, 0x51, 0x0, + 0x7c, 0x72, 0x1e, 0x1, 0xf9, 0x94, 0xa8, 0x0, + + /* U+6C "l" */ + 0xf, 0xfe, 0x60, 0xc, 0xcd, 0x18, 0x7, 0xa6, + 0x6a, 0x0, 0xff, 0xff, 0x80, 0x7f, 0xf4, 0xe6, + 0x6a, 0xa, 0x99, 0x38, 0x33, 0x46, 0x6, 0xcc, + 0xa0, + + /* U+6D "m" */ + 0x1f, 0x9b, 0xfd, 0x5b, 0xfd, 0x30, 0x9, 0xb1, + 0xca, 0x8a, 0xb, 0x80, 0x25, 0x78, 0x11, 0x4b, + 0xa9, 0x0, 0x46, 0x0, 0x33, 0x0, 0xc, 0x4, + 0x3, 0xff, 0xfe, 0x1, 0xfc, + + /* U+6E "n" */ + 0x4f, 0x54, 0xcf, 0xd9, 0x10, 0xb, 0xad, 0x98, + 0xd, 0xa0, 0x12, 0xed, 0x4e, 0x99, 0x88, 0x0, + 0xc4, 0x1, 0x58, 0x38, 0x3, 0xc0, 0x30, 0x81, + 0x80, 0x7f, 0xfc, 0x0, + + /* U+6F "o" */ + 0x0, 0x25, 0xff, 0xad, 0x0, 0x26, 0xb5, 0x66, + 0x2d, 0xb0, 0x14, 0x97, 0xcc, 0xbc, 0xa4, 0xa8, + 0x2c, 0x40, 0x3, 0x61, 0x46, 0xe, 0x1, 0x90, + 0xd, 0xc0, 0x40, 0x31, 0x3, 0xb8, 0x4, 0x3, + 0x8, 0x39, 0x82, 0x0, 0x64, 0x3, 0xa0, 0x81, + 0x0, 0xc, 0x5, 0x14, 0x97, 0xcc, 0xbc, 0xa4, + 0x81, 0xac, 0x99, 0x85, 0x6c, 0x0, + + /* U+70 "p" */ + 0x4f, 0x67, 0xdf, 0xd6, 0x0, 0xd1, 0x2e, 0xa5, + 0x2e, 0x1, 0x1f, 0xd5, 0x30, 0x20, 0x40, 0xa, + 0x20, 0x3, 0x70, 0x70, 0x7, 0x80, 0x6c, 0xe, + 0x0, 0xf9, 0xc0, 0x40, 0x3e, 0x70, 0x10, 0xf, + 0xb0, 0x34, 0x1, 0x60, 0x11, 0x30, 0x20, 0x0, + 0xf6, 0x65, 0xa3, 0x2, 0x0, 0x75, 0x76, 0x29, + 0x70, 0xb, 0xe3, 0xbf, 0x58, 0x3, 0xff, 0xa8, + + /* U+71 "q" */ + 0x0, 0x2e, 0xff, 0x4c, 0x7a, 0x3, 0xd0, 0x4c, + 0x2b, 0x80, 0x6, 0x7, 0x19, 0x98, 0x80, 0x7, + 0x9, 0x10, 0x8, 0xc0, 0x1e, 0x6, 0x1, 0xfc, + 0xe0, 0x1f, 0xce, 0x1, 0xf7, 0x86, 0x0, 0x7c, + 0xe0, 0xc4, 0x0, 0x15, 0x0, 0xc, 0xe, 0x4c, + 0xbc, 0x80, 0x27, 0xa3, 0x67, 0x67, 0x0, 0xcb, + 0xbf, 0xd0, 0x1, 0xff, 0xd5, + + /* U+72 "r" */ + 0xcf, 0x6, 0xdf, 0xe5, 0x0, 0x4c, 0x88, 0x82, + 0x20, 0x3, 0xdf, 0xef, 0xa0, 0x2, 0xd0, 0x3, + 0xca, 0x1, 0xff, 0xe9, + + /* U+73 "s" */ + 0x0, 0x1d, 0xf7, 0xeb, 0x80, 0x49, 0x8a, 0xec, + 0x11, 0x60, 0x9, 0xf, 0x99, 0x6a, 0x24, 0x1, + 0x8, 0x5, 0x34, 0xc1, 0x61, 0xce, 0x60, 0x4a, + 0x40, 0xd6, 0xb1, 0x9f, 0x44, 0x1, 0x25, 0xfd, + 0xb2, 0xe0, 0x93, 0xa0, 0x1, 0x26, 0x42, 0xc7, + 0x12, 0x20, 0x10, 0x80, 0x8a, 0xb, 0xe6, 0x2e, + 0x9, 0x81, 0xe9, 0x59, 0xd9, 0xf0, 0x0, + + /* U+74 "t" */ + 0x0, 0x99, 0xc0, 0x3f, 0x5c, 0x0, 0x7f, 0xf0, + 0xe7, 0xfc, 0x41, 0xff, 0x83, 0x66, 0x42, 0x13, + 0x38, 0x11, 0x98, 0x60, 0xcd, 0x80, 0x3f, 0xfd, + 0x4c, 0x8, 0x1, 0xf7, 0x5, 0xd4, 0xd9, 0x80, + 0x4b, 0x44, 0xac, 0xe0, + + /* U+75 "u" */ + 0x3f, 0x80, 0xd, 0x1e, 0x80, 0x1f, 0xfe, 0x81, + 0x0, 0xf8, 0x40, 0x3f, 0x88, 0x1c, 0x3, 0x28, + 0x4, 0xe3, 0x6c, 0xfa, 0x60, 0x14, 0x41, 0x66, + 0xae, 0x0, 0x0, + + /* U+76 "v" */ + 0xd, 0xf0, 0xe, 0x1f, 0xc0, 0xa0, 0x50, 0xc, + 0xe1, 0x40, 0xc1, 0xc0, 0x1a, 0x81, 0x80, 0x55, + 0x4, 0x0, 0x26, 0xc0, 0x17, 0x3, 0x0, 0x18, + 0x28, 0x2, 0x42, 0xa0, 0x5, 0x11, 0x80, 0x6a, + 0x22, 0xd4, 0x1, 0xcc, 0x15, 0x40, 0x60, 0xe, + 0x14, 0x65, 0x50, 0x80, 0x7b, 0xc4, 0xb8, 0x3, + 0xe4, 0x11, 0x20, 0x4, + + /* U+77 "w" */ + 0x6f, 0x20, 0x5, 0x58, 0x5, 0xf0, 0xa0, 0xe0, + 0x4, 0x40, 0x0, 0xc3, 0x4c, 0x34, 0x8, 0x40, + 0xc1, 0x41, 0x0, 0x88, 0xe, 0x24, 0x81, 0xc2, + 0x20, 0x47, 0xc, 0x57, 0xc0, 0x35, 0x0, 0x79, + 0x2, 0x66, 0x14, 0x14, 0xc0, 0xa, 0x8, 0x48, + 0x81, 0x31, 0xc0, 0x1, 0x87, 0x1, 0x90, 0xd0, + 0x28, 0x4, 0x6a, 0x80, 0x4, 0x71, 0x10, 0x4, + 0xa1, 0x80, 0xc, 0x15, 0x0, 0xde, 0x6, 0x0, + 0x40, 0xc0, 0x0, + + /* U+78 "x" */ + 0x7f, 0x90, 0xc, 0xff, 0x40, 0xe8, 0xca, 0x0, + 0x38, 0x2a, 0x0, 0x50, 0xd8, 0x87, 0x7, 0x0, + 0x43, 0x43, 0x52, 0x50, 0x60, 0x19, 0x1d, 0x19, + 0x1c, 0x3, 0xd2, 0x0, 0xf0, 0xf, 0xac, 0x1, + 0x20, 0x1e, 0x65, 0x54, 0x94, 0x80, 0x62, 0x91, + 0xa6, 0x46, 0x40, 0xb, 0x83, 0x40, 0x14, 0x34, + 0x21, 0x6, 0xe6, 0x0, 0x1b, 0x1a, 0x0, + + /* U+79 "y" */ + 0x1f, 0xe0, 0xf, 0x77, 0x88, 0x94, 0x54, 0x3, + 0x28, 0xa8, 0x84, 0x87, 0x0, 0x6e, 0x9, 0x0, + 0x19, 0x90, 0x80, 0x2, 0x86, 0x60, 0xa, 0x42, + 0xc0, 0xc, 0x12, 0x1, 0x94, 0x98, 0x1, 0x22, + 0xa0, 0x1d, 0x60, 0xc8, 0x32, 0x1, 0xe6, 0x1b, + 0xe0, 0x60, 0xf, 0x98, 0x95, 0x84, 0x3, 0xe9, + 0x0, 0x58, 0x7, 0xe1, 0x12, 0x10, 0x7, 0xe7, + 0x1f, 0x0, 0xfc, 0x50, 0x48, 0x1, 0xe3, 0xac, + 0xe, 0x0, 0xf9, 0x54, 0x76, 0x60, 0x1e, + + /* U+7A "z" */ + 0x5f, 0xff, 0xc6, 0xef, 0xe5, 0x0, 0x11, 0x22, + 0x39, 0xc2, 0x84, 0x3, 0xa8, 0x9d, 0x40, 0x39, + 0x94, 0xe0, 0x3, 0x8e, 0x47, 0x40, 0x38, 0x74, + 0x34, 0x40, 0x3a, 0x86, 0x4c, 0x3, 0xa1, 0x15, + 0x80, 0x39, 0x1c, 0x9, 0xdf, 0x90, 0x80, 0xf, + 0x11, 0xda, + + /* U+7B "{" */ + 0x0, 0xc9, 0x92, 0x1, 0x1d, 0xb5, 0x80, 0x50, + 0x14, 0x40, 0x12, 0x20, 0x3, 0x8, 0x7, 0xe1, + 0x0, 0xc6, 0x1, 0xe4, 0xd, 0x0, 0x13, 0x41, + 0x30, 0x3, 0xe4, 0xf0, 0x40, 0x12, 0xc5, 0x40, + 0x12, 0x4c, 0x22, 0x80, 0x64, 0xc, 0x0, 0xc4, + 0x6, 0x1, 0xe1, 0x0, 0xc2, 0xe, 0x1, 0xc6, + 0x60, 0xe, 0x80, 0x90, 0xc, 0x94, 0xd4, 0x1, + 0x97, 0xec, + + /* U+7C "|" */ + 0xbb, 0x0, 0x7f, 0xf6, 0x0, + + /* U+7D "}" */ + 0xac, 0x30, 0xd, 0xf, 0x86, 0x1, 0x15, 0x4, + 0x80, 0x61, 0x24, 0x0, 0xe1, 0x10, 0x7, 0xff, + 0x1, 0xc0, 0x40, 0x31, 0x82, 0x80, 0x69, 0x1a, + 0x52, 0x0, 0xe, 0x5, 0x48, 0x5, 0xc2, 0xfe, + 0x0, 0x73, 0x98, 0x40, 0x6, 0x3, 0x80, 0x67, + 0x1, 0x0, 0xff, 0x84, 0x40, 0x18, 0x49, 0x40, + 0x35, 0x4, 0x0, 0x58, 0xb6, 0x60, 0x16, 0xf2, + 0x0, 0x60, + + /* U+7E "~" */ + 0x3, 0xdf, 0xd5, 0x0, 0xcc, 0x63, 0xa6, 0xa7, + 0x52, 0x0, 0x29, 0x57, 0x1f, 0xae, 0x56, 0xea, + 0xc1, 0x64, 0xa1, 0x0, 0x54, 0x9a, 0x96, 0x0 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 192, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 0, .adv_w = 192, .box_w = 3, .box_h = 15, .ofs_x = 4, .ofs_y = 0}, + {.bitmap_index = 13, .adv_w = 192, .box_w = 6, .box_h = 5, .ofs_x = 3, .ofs_y = 10}, + {.bitmap_index = 26, .adv_w = 192, .box_w = 12, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 110, .adv_w = 192, .box_w = 10, .box_h = 19, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 193, .adv_w = 192, .box_w = 12, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 269, .adv_w = 192, .box_w = 11, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 346, .adv_w = 192, .box_w = 3, .box_h = 5, .ofs_x = 4, .ofs_y = 10}, + {.bitmap_index = 353, .adv_w = 192, .box_w = 6, .box_h = 22, .ofs_x = 3, .ofs_y = -5}, + {.bitmap_index = 413, .adv_w = 192, .box_w = 6, .box_h = 22, .ofs_x = 3, .ofs_y = -5}, + {.bitmap_index = 472, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 5}, + {.bitmap_index = 518, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 543, .adv_w = 192, .box_w = 4, .box_h = 6, .ofs_x = 3, .ofs_y = -4}, + {.bitmap_index = 555, .adv_w = 192, .box_w = 8, .box_h = 2, .ofs_x = 2, .ofs_y = 6}, + {.bitmap_index = 561, .adv_w = 192, .box_w = 4, .box_h = 3, .ofs_x = 4, .ofs_y = 0}, + {.bitmap_index = 567, .adv_w = 192, .box_w = 9, .box_h = 16, .ofs_x = 2, .ofs_y = -1}, + {.bitmap_index = 617, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 689, .adv_w = 192, .box_w = 6, .box_h = 15, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 708, .adv_w = 192, .box_w = 11, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 774, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 841, .adv_w = 192, .box_w = 11, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 893, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 957, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1027, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1078, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1150, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1220, .adv_w = 192, .box_w = 4, .box_h = 11, .ofs_x = 5, .ofs_y = 0}, + {.bitmap_index = 1237, .adv_w = 192, .box_w = 5, .box_h = 15, .ofs_x = 4, .ofs_y = -4}, + {.bitmap_index = 1265, .adv_w = 192, .box_w = 9, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 1305, .adv_w = 192, .box_w = 10, .box_h = 6, .ofs_x = 1, .ofs_y = 4}, + {.bitmap_index = 1322, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 1365, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1424, .adv_w = 192, .box_w = 12, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1513, .adv_w = 192, .box_w = 12, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1585, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1648, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1707, .adv_w = 192, .box_w = 11, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1765, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1798, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1825, .adv_w = 192, .box_w = 11, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1895, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1915, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1941, .adv_w = 192, .box_w = 11, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1975, .adv_w = 192, .box_w = 11, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2035, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2050, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2101, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2149, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2216, .adv_w = 192, .box_w = 11, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2262, .adv_w = 192, .box_w = 12, .box_h = 18, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 2351, .adv_w = 192, .box_w = 11, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2412, .adv_w = 192, .box_w = 11, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2487, .adv_w = 192, .box_w = 12, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2506, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2545, .adv_w = 192, .box_w = 12, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2619, .adv_w = 192, .box_w = 12, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2711, .adv_w = 192, .box_w = 12, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2789, .adv_w = 192, .box_w = 12, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2845, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2899, .adv_w = 192, .box_w = 5, .box_h = 20, .ofs_x = 4, .ofs_y = -3}, + {.bitmap_index = 2915, .adv_w = 192, .box_w = 8, .box_h = 16, .ofs_x = 2, .ofs_y = -1}, + {.bitmap_index = 2963, .adv_w = 192, .box_w = 5, .box_h = 20, .ofs_x = 3, .ofs_y = -3}, + {.bitmap_index = 2979, .adv_w = 192, .box_w = 8, .box_h = 8, .ofs_x = 2, .ofs_y = 7}, + {.bitmap_index = 3010, .adv_w = 192, .box_w = 10, .box_h = 2, .ofs_x = 1, .ofs_y = -1}, + {.bitmap_index = 3016, .adv_w = 192, .box_w = 4, .box_h = 3, .ofs_x = 4, .ofs_y = 12}, + {.bitmap_index = 3022, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3074, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3125, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3176, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3230, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3280, .adv_w = 192, .box_w = 11, .box_h = 16, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3325, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = -4}, + {.bitmap_index = 3392, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3424, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3459, .adv_w = 192, .box_w = 7, .box_h = 19, .ofs_x = 2, .ofs_y = -4}, + {.bitmap_index = 3493, .adv_w = 192, .box_w = 11, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3541, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3566, .adv_w = 192, .box_w = 12, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 3595, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3623, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3677, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = -4}, + {.bitmap_index = 3733, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = -4}, + {.bitmap_index = 3786, .adv_w = 192, .box_w = 8, .box_h = 11, .ofs_x = 3, .ofs_y = 0}, + {.bitmap_index = 3806, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3861, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3897, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3924, .adv_w = 192, .box_w = 11, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 3976, .adv_w = 192, .box_w = 12, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 4043, .adv_w = 192, .box_w = 11, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 4098, .adv_w = 192, .box_w = 12, .box_h = 15, .ofs_x = 0, .ofs_y = -4}, + {.bitmap_index = 4169, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 4211, .adv_w = 192, .box_w = 7, .box_h = 20, .ofs_x = 3, .ofs_y = -4}, + {.bitmap_index = 4269, .adv_w = 192, .box_w = 2, .box_h = 19, .ofs_x = 5, .ofs_y = -4}, + {.bitmap_index = 4274, .adv_w = 192, .box_w = 7, .box_h = 20, .ofs_x = 3, .ofs_y = -4}, + {.bitmap_index = 4332, .adv_w = 192, .box_w = 12, .box_h = 4, .ofs_x = 0, .ofs_y = 4} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + + + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 32, .range_length = 95, .glyph_id_start = 1, + .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_dsc_t font_dsc = { + .glyph_bitmap = gylph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 1, + .bpp = 4, + .kern_classes = 0, + .bitmap_format = 1 +}; + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +lv_font_t font_3 = { + .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ + .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ + .line_height = 22, /*The maximum line height required by the font*/ + .base_line = 5, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif + .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +}; + +#endif /*#if FONT_3*/ +