2024-07-02
GR5526 GUI专题(4) - Lvgl字体的位图数组合并转换为bin文件的说明
写技术文章
精选推荐
nix
在GR5526 Lvgl的产品环境中, 字体文件的生成和使用需要经过以下步骤:
glyph_bitmap_AHB_ADDR = QSPIx_XIP_BASE + Flash_Offset + glyph_bitmap_offset
goodix_lvgl_font_to_bin.py 脚本输出信息:
OrderedDict([('file', '.\\raw\\lv_font_montserrat_48_gdx.txt'),
('align_len', 37376),
('offset', 0),
('offset_hex', '0x0')])
OrderedDict([('file', '.\\raw\\lv_font_msyh_20_gr552x.txt'),
('align_len', 19200),
('offset', 37376),
('offset_hex', '0x9200')])
OrderedDict([('file', '.\\raw\\lv_font_msyh_26_gr552x.txt'),
('align_len', 25856),
('offset', 56576),
('offset_hex', '0xdd00')])
offset(十进制)或offset_hex(十六进制)的值, 即为glyph_bitmap_offset的值
5. 将生成的 goodix_lvgl_font.bin 文件烧写到外部的Nor Flash, 注意在Flash空间的偏移地址和上述提到的Flash_Offset 对应
6. 将计算得到的各个字体文件的 glyph_bitmap_AHB_ADDR 地址重新赋值给 lv_font_fmt_txt_dsc_t 的成员变量glyph_bitmap, 并移除原来的glyph_bitmap数组即可.
7. 完成上述步骤, glyph_bitmap 就索引到Nor Flash 的地址空间
本文适用于 Goodix 蓝牙SoC GR5526的Lvgl 工程, 用于将Lvgl 字体的位图数组
/* U+0020 " " */
/* U+0021 "!" */
0xe, 0xf1, 0xe, 0xf1, 0xd, 0xf0, 0xd, 0xf0,
0xd, 0xf0, 0xc, 0xf0, 0xc, 0xf0, 0xc, 0xf0,
0xb, 0xe0, 0xb, 0xe0, 0x8, 0xa0, 0x0, 0x0,
0x3, 0x50, 0x1f, 0xf4, 0xc, 0xe2, 0x0, 0x0,
。。。。。。。。。
/* U+989D "额" */
0x0, 0x0, 0x51, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xe9, 0x0, 0x0, 0x45,
0x55, 0x55, 0x55, 0x52, 0x3, 0x33, 0x9f, 0x33,
0x32, 0xef, 0xff, 0xff, 0xff, 0xf6, 0x3f, 0xff,
0xff, 0xff, 0xfb, 0x0, 0x5, 0xf2, 0x0, 0x0,
0x3f, 0x16, 0x20, 0x0, 0xcb, 0x0, 0x8, 0xe0,
0x0, 0x0, 0x18, 0x4f, 0x63, 0x33, 0x85, 0x48,
0x8d, 0xe8, 0x88, 0x60, 0x0, 0xbf, 0xff, 0xff,
0xa0, 0x8f, 0xaa, 0xaa, 0xad, 0xc0, 0x6, 0xf2,
0x0, 0x3f, 0x50, 0x8d, 0x0, 0x10, 0x9, 0xc0,
0x3f, 0x7a, 0x41, 0xdb, 0x0, 0x8d, 0x1, 0xf5,
0x9, 0xc0, 0x3a, 0x1a, 0xfe, 0xe1, 0x0, 0x8d,
0x0, 0xf5, 0x9, 0xc0, 0x0, 0x4, 0xef, 0xfb,
0x30, 0x8d, 0x1, 0xf4, 0x9, 0xc0, 0x3, 0xaf,
0xa0, 0x5d, 0xf9, 0x8d, 0x1, 0xf4, 0x9, 0xc0,
0x8f, 0xe6, 0x22, 0x22, 0x73, 0x8d, 0x3, 0xf3,
0x9, 0xc0, 0x23, 0xff, 0xff, 0xff, 0x60, 0x8d,
0x5, 0xf1, 0x9, 0xc0, 0x0, 0xf5, 0x11, 0x1e,
0x60, 0x8d, 0x9, 0xf0, 0x9, 0xc0, 0x0, 0xf4,
0x0, 0xe, 0x60, 0x12, 0x2f, 0xfc, 0x21, 0x10,
0x0, 0xf4, 0x0, 0xe, 0x60, 0x1, 0xdf, 0x5d,
0xf5, 0x0, 0x0, 0xff, 0xff, 0xff, 0x60, 0x5e,
0xf4, 0x0, 0xaf, 0x90, 0x0, 0xf7, 0x44, 0x4e,
0x6c, 0xfc, 0x20, 0x0, 0x7, 0xf8, 0x0, 0x20,
0x0, 0x0, 0x5, 0x50, 0x0, 0x0, 0x0, 0x40,
/* U+FF0C "," */
0x2, 0x30, 0xf, 0xc0, 0x2f, 0x70, 0x6f, 0x20,
0xad, 0x0, 0xd8, 0x0
D:\03_Software\LvglFont\GoodixLvglFontToBin>python goodix_lvgl_font_to_bin.py
Handle Font File : .\raw\lv_font_montserrat_48_gdx.txt
Handle Font File : .\raw\lv_font_msyh_20_gr552x.txt
Handle Font File : .\raw\lv_font_msyh_26_gr552x.txt
OrderedDict([('file', '.\\raw\\lv_font_montserrat_48_gdx.txt'),
('align_len', 37376),
('offset', 0),
('offset_hex', '0x0')])
OrderedDict([('file', '.\\raw\\lv_font_msyh_20_gr552x.txt'),
('align_len', 19200),
('offset', 37376),
('offset_hex', '0x9200')])
OrderedDict([('file', '.\\raw\\lv_font_msyh_26_gr552x.txt'),
('align_len', 25856),
('offset', 56576),
('offset_hex', '0xdd00')])
Bin File length:82432 bytes, (hex:0x14200)
Genqerate Lvgl Binary-Font File Successful!
const uint8_t * glyph_bitmap = (const uint8_t * ) (QSPIx_XIP_BASE + Flash_Offset + glyph_bitmap_offset)
const uint8_t * glyph_bitmap = (const uint8_t * ) (QSPI0_XIP_BASE + 0x10000 + 0xdd00)
附:
打开微信,使用“扫一扫”即可关注