LVGL Pro使用指南[11] LVGL XML 字体
在 XML 中,字体是外部资源。需要先选择字体引擎,才能在XML文件中引用字体。
注册字体 链接到标题
从文件加载字体 链接到标题
在 globals.xml 的 <fonts> 中列出要使用的字体文件。<fonts> 中的每个子元素都以字体引擎的名称(<bin>或<tiny_ttf>)开始,包含一个 name 属性,以及根据所选字体引擎而定的其他属性。当字体从文件加载时,必须将 as_file 设置为 true。
示例:
<globals>
<fonts>
<bin as_file="false" name="medium" src="path/to/file.ttf" range="0x20-0x7f" symbols="°" size="24"/>
<tiny_ttf as_file="true" name="big" src_path="path/to/file.ttf" range="0x20-0x7f" size="48"/>
</fonts>
</globals>
当指定as_file="true"时,系统启动时需要从文件系统加载字体文件,即调用lv_xml_register_font。LVGL Pro Editor在导出代码时会自动生成调用lv_xml_register_font的代码来注册字体。最后只需要在调用<project_name>_init时指定资源路径即可。例如下面是生成的代码:
void ui_assets_init(const char * asset_path)
{
ui_assets_init_gen(asset_path);
/* Add your own custom code here if needed */
}
从数据加载字体 链接到标题
当指定as_file="false"时,LVGL Pro Editor会将字体导出为 C 数组 并直接编译进固件:
uint8_t Montserrat_Medium_ttf_data[] = {
0x0,0x1,0x0,0x0,0x0,0x11,0x1,0x0,0x0,0x4,0x0,0x10,0x47,0x44,0x45,0x46,0xb1,0x6c,0xb3,0x5c,0x0,0x2,0x6d,0x14,0x0,0x0,0x2,0x7e,
....}
生成的代码中会通过以下方式注册字体:
lv_font_t * montserrat_18_tiny_ttf_data = lv_tiny_ttf_create_data(Montserrat_Medium_ttf_data, Montserrat_Medium_ttf_data_size, 18);
lv_xml_register_font(NULL, "montserrat_18_tiny_ttf_data", montserrat_18_tiny_ttf_data);
在XML中使用字体 链接到标题
注册字体后,就可以在样式(styles)或 属性中通过其名称进行引用:
<component>
<api>
<prop name="title_font" type="font" default="my_font_32"/>
</api>
<styles>
<style name="subtitle" text_font="my_font_24"/>
</styles>
<view flex_flow="column">
<lv_label style_text_font="$title_font" text="Title"/>
<lv_label text="I'm the subtitle">
<style name="subtitle"/>
</lv_label>
</view>
</component>
字体引擎 链接到标题
<bin>
链接到标题
<bin> 二进制字体引擎,可以引用以下两种来源:
- ".bin" 字体文件:由 LVGL 的字体转换器从 TTF 文件生成(当
as_file="true"时)。字体通过lv_binfont_create加载。 - 编译进固件的
lv_font_t指针(当as_file="false"时)。该情况无需加载,直接使用lv_font_t。
<bin> 字体引擎具有以下属性:
- name:字体名称,用于后续引用。
- src_path:字体文件路径。
- size:字体大小(单位:px,例如
"12")。 - bpp:每像素位数,可选值为 1、2、4 或 8。
- as_file:若字体为 “.bin” 文件则设为
true;若为 C 语言中的lv_font_t则设为false。
LVGL Pro Editor会根据设定的名称生成调用 lv_xml_register_font 来完成字体注册。若 as_file 为:false:则会生成包含 lv_font_t 结构体的 C 文件。为true:则生成一个 “.bin” 文件。
二进制字体引擎支持选择字符子集:
- range:例如
"0x30-0x39 0x100-0x200"表示要包含的 Unicode 范围。默认值为"0x20-0x7F",即标准 ASCII 范围。 - symbols:要额外添加的字符列表,例如
"°ÁŐÚ"。可与range一起使用。默认值为空(不添加额外字符)。
<tiny_ttf>
链接到标题
TinyTTF 字体使用 Tiny TTF Font Engine 引擎(<tiny_ttf>)来加载 TTF 文件或从数据中加载。
必需属性:
- name:字体名称,用于引用。
- src_path:字体文件路径。
- size:字体大小(单位:px,例如
"12")。 - as_file:
true或false。
LVGL Pro Editor会根据名称调用 lv_xml_register_font 注册字体。若 as_file 为false:则生成一个包含原始字体数据的 C 文件。若为true:不会生成额外文件,将直接使用 TTF 文件。
<freetype>
链接到标题
FreeType 字体使用 FreeType Font Engine 引擎(<freetype>)来直接加载 TTF 文件。不支持从数据加载,因此 as_file 总为 true。
必需属性:
- name:字体名称,用于引用。
- src_path:字体文件路径。
- size:字体大小(单位:px,例如
"12")。