LVGL笔记9--lv_font字体

LVGL笔记9–lv_font字体

LVGL支持的字体有很多,而且有很好的抗锯齿特性,常用的是1bpp\2bpp\4bpp,旧版本最高支持8bpp抗锯齿,但是在新版本已经不在支持了,选择的bpp值越大,消耗的flash资源越多,通常使用4bpp就能达到非常好的显示效果,使用1bpp表示不进行抗锯齿,bpp值在生成字体时就要选择好,在使用中应根据硬件平台实际性能进行选择。littleVGL支持UTF-8编码,可以实现全球所有的字符显示,而且还支持“图标字体”。


LVGL支持的编码

​ LVGL支持两种编码:一种是ASCII编码,只能显示英文字符,一种是UTF-8编码,要想显示中文或其他文字,必须使用UTF-8编码(配置文件中默认使用utf-8)。

​ 在lv_conf.h文件中通过如下宏进行启用

//启用 UTF-8 编码,LV_TXT_ENC_ASCII 是启用 ASCII 编码
#define LV_TXT_ENC LV_TXT_ENC_UTF8

当使用UTF-8编码时,需要将代码编辑软件也调成UTF-8编码模式。

//想显示啥,就直接写啥,当然了,前提是你的字库中有中国这俩个字
lv_label_set_text(label1,”text:中国”);

//如果不把编辑器改成UTF-8,显示中文字符需要如下使用转义字符
#define ZHONG “\xE4\xB8\xAD” 	//中字的 UTF-8 编码
#define GUO “\xE5\x9B\xBD” 		//国字的 UTF-8 编码
lv_label_set_text(label1,”text:” ZHONG GUO);
图标字体

​ 可以将一下单色的图标转换成UTF-8编码,然后以字符方式进行显示,LVGL系统默认附带了一些图标字体,除此之外可以在“阿里巴巴矢量图标库”现在需要的图标,进行转换然后使用。
在这里插入图片描述

使用LVGL内置字体

​ LVGL内置5个字库,不过都是英文字符和一套相同的图标字体,想要显示中文需要自己制作字库。自带的图标全都声明在lv_symbol_def.h 头文件中。

lv_font_roboto_12	
lv_font_roboto_16	//LVGL默认使用16号字体
lv_font_roboto_22
lv_font_roboto_28
lv_font_unscii_8	//单色屏可以使用此字符库
    
#define LV_FONT_ROBOTO_12 0 	//是否使能 lv_font_roboto_12 字库
#define LV_FONT_ROBOTO_16 1 	//是否使能 lv_font_roboto_16 字库,默认被使能了
#define LV_FONT_ROBOTO_22 0 	//是否使能 lv_font_roboto_22 字库
#define LV_FONT_ROBOTO_28 0 	//是否使能 lv_font_roboto_28 字库
#define LV_FONT_UNSCII_8 0 		//是否使能 lv_font_unscii_8 字库
 
//这个是用来申明我们自己创建的字体的,如果没有创建字体,那么可以留空
#define LV_FONT_CUSTOM_DECLARE 
//把 lv_font_roboto_16 定义为默认字体
#define LV_FONT_DEFAULT &lv_font_roboto_16 
#define LV_FONT_FMT_TXT_LARGE 0 //当你的字库系统非常庞大时,比如字符数
//超过 10000 个,或者遇到某些莫名的错误时,那么你可以使能它

​ 要使用自己创建的字体,都要先声明字体

LV_FONT_DECLARE(my_font_1); //申明 my_font_1 字体

//为了避免在每个地方都要去申明一次字体,我们可以直接利用 lv_conf.h 文件中的
LV_FONT_CUSTOM_DECLARE 配置宏来进行全局申明,如下所示:
#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(my_font_1) \ LV_FONT_DECLARE(my_font_2)

​ 字体使用方法如下

static lv_style_t label_style;
lv_style_copy(&label_style,&lv_style_plain_color);	//样式拷贝
label_style.text.font = &lv_font_roboto_16;			//设置字体
lv_label_set_style(label1,LV_LABEL_STYLE_MAIN,&label_style);	//给标签对象设置样式

lv_label_set_text(label1,"Hello"); 	//纯字符方式
lv_label_set_text(label1,"Hello" LV_SYMBOL_OK);	//字符和图标组合方式
//多个图标组合方式,注意图标与图标之间至少得需要一个空格
lv_label_set_text(label1, LV_SYMBOL_OK LV_SYMBOL_CLOSE);
创建自己的字体(包含图标字体)

​ littleVGL官方提供了字体生成工具,可以直接生成.c文件。在线工具使用地址 https://littlevgl.com/ttf-font-to-c-array
在这里插入图片描述
littleVGL使用6.0版本时,lv_font_fmt_txt.h文件中第103行需要加上一个const 否则编译报错。

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值