mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-28 07:03:00 +08:00
Implementing missing formats for font loading.
This commit is contained in:
parent
c4e7254aed
commit
b3634790cd
@ -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,6 +124,22 @@ 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) {
|
||||
|
||||
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(NULL != kern_dsc) {
|
||||
if(kern_dsc->glyph_ids)
|
||||
lv_mem_free((void *) kern_dsc->glyph_ids);
|
||||
|
||||
if(kern_dsc->values)
|
||||
lv_mem_free((void *) kern_dsc->values);
|
||||
|
||||
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;
|
||||
|
||||
@ -138,6 +155,7 @@ void lv_font_free(lv_font_t * font)
|
||||
|
||||
lv_mem_free((void *) kern_dsc);
|
||||
}
|
||||
}
|
||||
|
||||
lv_font_fmt_txt_cmap_t * cmaps =
|
||||
(lv_font_fmt_txt_cmap_t *) dsc->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 *)
|
||||
@ -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");
|
||||
int32_t glyph_length = load_glyph(
|
||||
fp, font_dsc, glyph_start, glyph_offset, loca_count, &font_header);
|
||||
|
||||
lv_mem_free(glyph_offset);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
lv_mem_free(glyph_offset);
|
||||
|
||||
if (failed) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -545,31 +580,71 @@ 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));
|
||||
if(0 == kern_format_type) { /* sorted pairs */
|
||||
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; /* 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;
|
||||
}
|
||||
else if(3 == kern_format_type) { /* array M*N of classes */
|
||||
font_dsc->kern_dsc = kern_classes;
|
||||
font_dsc->kern_classes = 1;
|
||||
|
||||
uint16_t kern_class_mapping_length;
|
||||
uint8_t kern_table_rows;
|
||||
@ -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*/
|
||||
|
@ -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
|
||||
|
||||
|
BIN
tests/font_1.fnt
Normal file
BIN
tests/font_1.fnt
Normal file
Binary file not shown.
BIN
tests/font_2.fnt
Normal file
BIN
tests/font_2.fnt
Normal file
Binary file not shown.
BIN
tests/font_3.fnt
Normal file
BIN
tests/font_3.fnt
Normal file
Binary file not shown.
@ -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) {
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
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 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");
|
||||
|
1383
tests/lv_test_fonts/font_1.c
Normal file
1383
tests/lv_test_fonts/font_1.c
Normal file
File diff suppressed because it is too large
Load Diff
1413
tests/lv_test_fonts/font_2.c
Normal file
1413
tests/lv_test_fonts/font_2.c
Normal file
File diff suppressed because it is too large
Load Diff
953
tests/lv_test_fonts/font_3.c
Normal file
953
tests/lv_test_fonts/font_3.c
Normal file
@ -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*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user