- 作者:
- 分类:知识&开发->UI
- 阅读:659
- 点赞:1
- 版权:CC BY-SA 4.0
- 创建:2023-11-01
- 更新:2023-11-01
版权声明:本文为 neucrack 的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接(持续更新):https://neucrack.com/p/514
原文链接(持续更新):https://neucrack.com/p/514
生成字体
在 https://lvgl.io/tools/fontconverter 生成字体:
- 下载自己的字体,比如 思源雅黑: https://github.com/adobe-fonts/source-han-sans/releases
- 下载 FontAwesome 的字体 : https://lvgl.io/assets/others/FontAwesome5-Solid+Brands+Regular.woff
- 设置字体名字, 选择 Bpp,越大越清晰越占用内存渲染速度越慢
- 选择自己的字体,可以指定字 unicode 范围, 基本汉字的编码范围是 0x4E00-0x9FA5,数字、拉丁字母、标点符号的编码范围是0x20-0x7E,也可以选择 输入 Symbols来生成指定的汉字,Range 和 Symbols 的并集为最后要生成的字符。
- 点击添加额外字体,选择 FontAwesome 字体文件,选择使用 LVGL 使用到的
0xF001, 0xF008, 0xF00B, 0xF00C, 0xF00D, 0xF011, 0xF013, 0xF015, 0xF019, 0xF01C, 0xF021, 0xF026, 0xF027, 0xF028, 0xF03E, 0xF043, 0xF048, 0xF04B, 0xF04C, 0xF04D, 0xF051, 0xF052, 0xF053, 0xF054, 0xF067, 0xF068, 0xF06E, 0xF070, 0xF071, 0xF074, 0xF077, 0xF078, 0xF079, 0xF07B, 0xF093, 0xF095, 0xF0C4, 0xF0C5, 0xF0C7, 0xF0C9, 0xF0E0, 0xF0E7, 0xF0EA, 0xF0F3, 0xF11C, 0xF124, 0xF15B, 0xF1EB, 0xF240, 0xF241, 0xF242, 0xF243, 0xF244, 0xF287, 0xF293, 0xF2ED, 0xF304, 0xF55A, 0xF7C2, 0xF8A2
字符(从 lv_symbol_def.h 找到定义),这样内置的一些图标才能显示。注意LV_SYMBOL_FILE 在宏定义中注释Unicode 0xF158是错误的应该是0xF15B, 参考lvgl使用私有字库时显示自带的图标。
使用字体
将生成的代码 zh_fonts.c
,复制到工程中,
// 声明变量
LV_FONT_DECLARE(zh_fonts);
lv_obj_set_style_text_font(root, &zh_fonts, LV_PART_MAIN);
当然你也可以不用在字体内自己添加 SYMBOL, 在用到了 SYMBOL 的地方手动用内置字体设置比如:
lv_obj_set_style_text_font(mbox, &lv_font_montserrat_16, LV_PART_INDICATOR);
然后注意源码文件必须是UTF-8
编码格式,建议用 vscode 编写,右下角可以看到文件编码。
在设置文字内容时直接写汉字就可以了,比如
lv_label_set_text(label, "你好");