mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-28 07:03:00 +08:00
font: save the original generated font
This commit is contained in:
parent
4cffb73357
commit
56d7b986d4
@ -3,7 +3,7 @@
|
||||
/*******************************************************************************
|
||||
* Size: 16 px
|
||||
* Bpp: 1
|
||||
* Opts: --bpp 1 --size 16 --font ./Roboto-Regular.ttf -r 0x20-0x7F --format lvgl -o ./lvgl_sample.c
|
||||
* Opts: --no-compress --no-prefilter --bpp 1 --size 16 --font ./Roboto-Regular.ttf -r 0x20-0x7F --format lvgl -o ./lvgl_sample.c
|
||||
******************************************************************************/
|
||||
|
||||
/*-----------------
|
||||
@ -374,15 +374,15 @@ static const uint8_t gylph_bitmap[] = {
|
||||
|
||||
/* U+7E "~" */
|
||||
0x7, 0x66, 0xdc, 0x20, 0x0
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/*---------------------
|
||||
* GLYPH DESCRIPTION
|
||||
*--------------------*/
|
||||
|
||||
static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
|
||||
{.bitmap_index = 0, .adv_w = 0, .box_h = 0, .box_w = 0, .ofs_x = 0, .ofs_y = 0}, // id = 0 reserved,
|
||||
static lv_font_glyph_dsc_fmt_txt_t glyph_dsc[] = {
|
||||
{.bitmap_index = 0, .adv_w = 0, .box_h = 0, .box_w = 0, .ofs_x = 0, .ofs_y = 0} // id = 0 reserved,
|
||||
{.bitmap_index = 0, .adv_w = 64, .box_h = 0, .box_w = 0, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 0, .adv_w = 67, .box_h = 12, .box_w = 2, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 3, .adv_w = 92, .box_h = 5, .box_w = 5, .ofs_x = 0, .ofs_y = 7},
|
||||
@ -478,7 +478,7 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
|
||||
{.bitmap_index = 1036, .adv_w = 63, .box_h = 15, .box_w = 2, .ofs_x = 1, .ofs_y = -3},
|
||||
{.bitmap_index = 1040, .adv_w = 87, .box_h = 16, .box_w = 5, .ofs_x = 0, .ofs_y = -3},
|
||||
{.bitmap_index = 1050, .adv_w = 174, .box_h = 4, .box_w = 9, .ofs_x = 1, .ofs_y = 3}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/*---------------------
|
||||
@ -495,7 +495,7 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
||||
.range_start = 32, .range_length = 95, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY,
|
||||
.glyph_id_start = 1, .unicode_list = NULL, .glyph_id_ofs_list = NULL
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/*-----------------
|
||||
@ -504,7 +504,7 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
||||
|
||||
|
||||
/*Pair left and right glyphs for kerning*/
|
||||
static const lv_font_fmt_txt_kern_pair_id_t kern_pair_glyph_ids[] =
|
||||
static lv_font_fmt_txt_kern_pair_id_t kern_pair_glyph_ids[] =
|
||||
{
|
||||
{.pair.left = 9, .pair.right = 43},
|
||||
{.pair.left = 9, .pair.right = 55},
|
||||
@ -994,7 +994,7 @@ static const lv_font_fmt_txt_kern_pair_id_t kern_pair_glyph_ids[] =
|
||||
|
||||
/* Kerning between the respective left and right glyphs
|
||||
* 4.4 format which needs to scaled with `kern_scale`*/
|
||||
static const int8_t kern_pair_values[] =
|
||||
static int8_t kern_pair_values[] =
|
||||
{
|
||||
-12, 5, 5, 6, 1, -4, 0, 1,
|
||||
0, 1, -5, 1, -1, -1, -1, 0,
|
||||
@ -1060,7 +1060,7 @@ static const int8_t kern_pair_values[] =
|
||||
};
|
||||
|
||||
/*Collect the kern pair's data in one place*/
|
||||
static const lv_font_fmt_txt_kern_pair_t kern_pairs =
|
||||
static lv_font_fmt_txt_kern_pair_t kern_pairs =
|
||||
{
|
||||
.glyph_ids = kern_pair_glyph_ids,
|
||||
.values = kern_pair_values,
|
||||
@ -1073,17 +1073,17 @@ static const lv_font_fmt_txt_kern_pair_t kern_pairs =
|
||||
*--------------------*/
|
||||
|
||||
/*Store all the custom data of the font*/
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
static lv_font_dsc_fmt_txt_t font_dsc = {
|
||||
.glyph_bitmap = gylph_bitmap,
|
||||
.glyph_dsc = glyph_dsc,
|
||||
.cmaps = cmaps,
|
||||
.cmap_num = 1,
|
||||
.bpp = 1,
|
||||
|
||||
.kern_scale = 16,
|
||||
.kerning_scale = 16,
|
||||
//.kern_dsc = kern_classes,
|
||||
//.kern_classes = 1,
|
||||
.kern_dsc = &kern_pairs,
|
||||
.kern_dsc = kern_pairs,
|
||||
.kern_classes = 0,
|
||||
};
|
||||
|
||||
|
@ -110,27 +110,19 @@ typedef struct {
|
||||
lv_font_fmt_txt_cmap_type_t type :2;
|
||||
}lv_font_fmt_txt_cmap_t;
|
||||
|
||||
/*Describe glyph pairs for kerning*/
|
||||
typedef union {
|
||||
struct {
|
||||
uint16_t left;
|
||||
uint16_t right;
|
||||
}pair;
|
||||
uint32_t both;
|
||||
}lv_font_fmt_txt_kern_pair_id_t;
|
||||
|
||||
/*A simple mapping of kern values from pairs*/
|
||||
typedef struct {
|
||||
/*To get a kern value of two code points:
|
||||
1. Get the `glyph_id_left` and `glyph_id_right` from `lv_font_fmt_txt_cmap_t
|
||||
2 for(i = 0; i < pair_cnt; i++)
|
||||
if(gylph_ids[i].pair.left == glyph_id_left &&
|
||||
gylph_ids[i].pair.right == glyph_id_right)
|
||||
return values[i];
|
||||
2 for(i = 0; i < pair_cnt; i+2)
|
||||
if(gylph_ids[i] == glyph_id_left &&
|
||||
gylph_ids[i+1] == glyph_id_right)
|
||||
return values[i / 2];
|
||||
*/
|
||||
const lv_font_fmt_txt_kern_pair_id_t * glyph_ids;
|
||||
const void * glyph_ids;
|
||||
const uint8_t * values;
|
||||
uint16_t pair_cnt;
|
||||
uint32_t pair_cnt :24;
|
||||
uint32_t glyph_ids_size :2; /*1: `glyph_ids` is stored as `uint8_t`; 2: as `uint16_t`*/
|
||||
}lv_font_fmt_txt_kern_pair_t;
|
||||
|
||||
/*More complex but more optimal class based kern value storage*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user