2019-12-11 18:18发布
IMG_20181114_162851.jpg (580.17 KB, 下载次数: 0)
下载附件
2018-11-14 16:49 上传
billtian 发表于 2018-11-13 15:44 中英文混合显示OK了 简单记录下过程 填充字体结构体 lv_font_t lv_user_font_1616 = {
最多设置5个标签!
中英文混合显示OK了 简单记录下过程
填充字体结构体
lv_font_t lv_user_font_1616 = {
.unicode_first = 0, /*简单设置成0*/
.unicode_last = 0xffff, /*简单设置成65535*/
.h_px = 16, /*字体高度,16*16字体为16*/
.glyph_bitmap = NULL, /*如果字库以数组形式放C文件里,此处为数组地址,我是从外部FLASH内读入所以设置为空*/
.glyph_dsc = NULL, /*设置为空*/
.glyph_cnt = 0xffff, /*字库内字符个数 设置为65535*/
.unicode_list = NULL, /*Every character in the font from 'unicode_first' to 'unicode_last'*/
.get_bitmap = lv_user_font_get_bitmap, /*读取字库数据函数*/
.get_width = lv_user_font_get_width, /*读取字库宽度函数*/
.bpp = 1, /*Bit per pixel 一般为1*/
.monospace = 0,
.next_page = NULL, /*Pointer to a font extension*/
};
实现以下两个函数
lv_user_font_get_bitmap, /*读取字库数据函数*/
lv_user_font_get_width, /*读取字库宽度函数*/
用以下函数初始化时调用 加入自定义字体
void lv_user_font_init(void)
{
lv_font_add(&lv_user_font_1616, NULL);
}
修改lv_txt.c中以下文件 增加对中文字符的判断
static uint32_t lv_txt_ascii_next(const char * txt, uint32_t * i)
{
if(i == NULL) return txt[1]; /*Get the next char */
if((txt[*i] & 0x80) == 0)
{
uint8_t letter = txt[*i] ;
(*i)++;
return letter;
}
else
{
uint32_t letter = txt[*i];
(*i)++;
letter <<= 8;
letter += txt[*i];
(*i)++;
return letter;
}
return 0;
}
lv_conf.h中增加以下
#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(lv_user_font_1616)
现在就可以把默认字体改成自己的字体实验一下了
#define LV_FONT_DEFAULT &lv_user_font_1616
显示效果如下
IMG_20181114_162851.jpg (580.17 KB, 下载次数: 0)
下载附件
2018-11-14 16:49 上传
mark,中文lvgl。
一周热门 更多>