Fonts
Overview
A <fonts>
section can be added in globals.xml
files.
Later, it might be supported in components and widgets to define local fonts and keep the global space cleaner.
Usage
The following section creates a mapping between font names and their paths with various attributes:
<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" symbols="auto" size="48"/>
<freetype name="chinese" src_path="file.ttf" size="48" custom_freetype_attribute="abc"/>
</fonts>
In <styles>
and <view>
, fonts can be referenced by their name, e.g.,
<style name="style1" text_font="medium"/>
The tag name determines how the font is loaded. Currently, only tinyttf as_file="true"
is supported.
bin
: - Ifas_file="true"
: Converts the font file tobin
(see lv_font_conv)which will be loaded by
lv_binfont_create()
.If
as_file="false"
(default): On export, the font file will be converted to a C array LVGL font that can be used directly by LVGL.
tinyttf
: - Ifas_file="true"
: Can be loaded directly bylv_tiny_ttf_create_file()
. - Ifas_file="false"
(default): The font file will be converted to a raw C array on exportthat will be loaded by
lv_tiny_ttf_create_data()
.freetype
: The file can be loaded directly bylv_freetype_font_create()
.
For simplicity, if as_file="false"
, fonts will be loaded as files in the preview.
Setting as_file="false"
affects only the C export.
If the UI is created from XML at runtime and a globals.xml
is parsed, the as_file="false"
tags are skipped
because it is assumed that the user manually creates the mapping. This is because the XML parser cannot
automatically map an LVGL font definition like:
lv_font_t my_font_24;
to
<bin name="my_font_24"/>
Exported Code
When C code is exported, global const lv_font_t * <font_name>
variables are created, and in the
initialization function of the component library (e.g., my_lib_init_gen()
), the actual font is assigned.
In lv_style_set_text_font(&style1, <font_name>), the created font is referenced.
Constants
Constants can also be used with fonts.
<consts>
<int name="font_size" value="32">
<variant name="size" case="small" value="24"/>
</int>
</consts>
<fonts>
<bin name="medium" src_path="file.ttf" range="0x20-0x7f" symbols="°" size="#font_size"/>
</fonts>
Default Font
"lv_font_default"
can be used to access LV_FONT_DEFAULT
. Other built-in fonts are not exposed by default.