lvgl怎么使用bin文件字库
时间: 2025-02-06 21:31:05 浏览: 335
### 如何在LVGL中加载和使用.bin格式的自定义字体文件
#### 准备工作
为了能够在LVGL项目中使用`.bin`格式的字体文件,需要先获取所需的字体并将其转换成适合LVGL使用的二进制格式。对于思源黑体Normal版本:SourceHanSansCN-Normal-2.otf这样的OTF字体文件[^1],可以利用LVGL官方提供的字体转换工具完成这一过程。
#### 字体转换
通过访问[LVGL GitHub仓库](https://github.com/lvgl/lvgl),找到lv_font_conv这个命令行工具来执行字体到二进制格式(.bin)的转换操作。确保安装好依赖项之后按照说明编译该工具,并运行如下指令来进行具体转换:
```bash
./lv_font_conv --file SourceHanSansCN-Normal-2.otf --size 16 --format bin --compress 1 --range 0x20-0xFF --dest myfont_16.bin
```
上述命令会创建一个名为myfont_16.bin的新文件,其中包含了大小为16px、压缩过的ASCII字符集范围内的字形数据。
#### 集成至LVGL应用
一旦拥有了准备好的`.bin`字体文件,在嵌入式C/C++程序里集成这些资源涉及几个方面的工作:
- **包含头文件**
将生成的字体描述符添加到项目的源码当中,通常是以.h形式存在;这一步骤可能需要手动编写相应的声明语句以便后续调用。
- **注册新字体**
使用`lv_font_add()`函数向系统登记新的字体对象,指定其名称以及指向实际二进制数组的位置。下面是一个简单的例子展示如何实现这一点:
```c
#include "lvgl/lvgl.h"
extern const lv_font_t *my_custom_font;
void init_my_app(void){
// 假设my_custom_font是从外部导入的一个全局变量,代表刚才提到的.bin字体文件对应的结构体实例
lv_res_t res = lv_font_add(my_custom_font, "custom");
if(res != LV_RES_OK){
// 错误处理逻辑...
}
}
```
- **设置控件样式**
当成功加入自定义字体后,可以通过修改组件属性的方式让它们显示特定样式的文字效果。比如更改标签(Label)或按钮(Button)上的文本呈现方式:
```c
// 获取默认风格副本用于调整
lv_style_t style;
lv_style_copy(&style, &lv_style_plain);
// 应用之前添加的名字叫"custom"的字体配置给当前样式
style.text.font = lv_font_get("custom");
// 创建一个新的Label并将设定后的外观应用于它
lv_obj_t* label = lv_label_create(lv_scr_act(), NULL);
lv_label_set_text(label, "你好世界!");
lv_obj_add_style(label, LV_OBJ_PART_MAIN, &style);
```
以上就是关于怎样把从Adobe开源字体库下载下来的otf字体转化为适用于LVGL框架下的.bin格式,并最终实现在图形界面应用程序内正常渲染的过程介绍。
阅读全文
相关推荐














