矢量字体

# 简介 lvgl字体无法设置字号,只能每种字号都做一个字体文件,界面中用到了多个字号的文字,又不希望每个字号都加载一个字体文件。可以通过外接矢量字库芯片来实现。矢量字体可以缩放后不损失清晰度,并且字库数据存储在外部芯片里,通过spi与模块连接,不占用内部存储空间。 # API 说明 lvgl.font_load lvgl中的加载字库的接口 - 语法 ```lua font = lvgl.font_load(spi_num, size[, gray[, thickness]]) ``` - 参数 | 参数 | 类型 | 释义 | 取值 | | --- | --- | --- | --- | | spi_num | number | 字库芯片所接spi | | |size | number | 字号 | 16-192 | |gray | number | 灰度值 | 1,2,4 | |thickness | number | 粗细值 || - 返回值 | 返回值 | 类型 | 释义 | 取值| | --- | --- | --- | --- | | font | userdata | 字体句柄 | | # 步骤 ## 1. 将字库芯片接在模块spi上 目前只支持GT5SUCD2E-1A(灰度4支持48以下字号,灰度2支持98以下字号,灰度1支持192以下字号) 下图为金牛座开发板链接实物图: ![undefined](https://cdn.openluat-luatcommunity.openluat.com/images/20220107143612780_矢量字库芯片焊接图2.jpg "undefined") ## 2. 版本定制 大于等于V3208的LuatOS-Air版本,需去定制固件网页生成带VF功能的定制固件。定制固件地址:[http://erp.openluat.com/firm_customized](http://erp.openluat.com/firm_customized) - 小于等于V3211的通用版本不带矢量字库功能,需通过[固件版本定制](https://doc.openluat.com/shareArticle/Vf34iUQh9em7c)定制带矢量字体的版本,定制版本一定需要勾选的功能有VF(高通字库)+LL(LVGL(图形库))+ MP(MIPI LCD),其他功能根据项目需要选择性勾选。 - 大于等于V3212的通用版本默认带矢量字库功能(即:LuatOS-HMI_V4002_RDA8910.pac已支持矢量字体功能)。 ## 3. 初始化spi ```lua spi.setup(spi.SPI_1,1,1,8,50000000,1) ``` ## 4. 设置字体 ```lua font68=lvgl.font_load(spi.SPI_1,68,2,190) ``` ## 5.字体使用 ```lua local xiaoguoLabel=lvgl.label_create(itemCont, nil) lvgl.obj_set_style_local_text_font(xiaoguoLabel, lvgl.LABEL_PART_MAIN, lvgl.STATE_DEFAULT, font68) lvgl.label_set_text(xiaoguoLabel, "测试@TEST") lvgl.obj_align(xiaoguoLabel,modeLabelCont, lvgl.ALIGN_OUT_RIGHT_MID, 238, 0) ``` ## 测试固件和脚本 [LuatOS-Air_V3211_RDA8910_RFTLLMPVF_0x110000.pac](https://cdn.openluat-luatcommunity.openluat.com/attachment/20220317093325602_LuatOS-Air_V3211_RDA8910_RFTLLMPVF_0x110000.pac) [script.7z](https://cdn.openluat-luatcommunity.openluat.com/attachment/20220316154554199_script.7z) ## 显示效果 ![undefined](https://cdn.openluat-luatcommunity.openluat.com/images/20211221165602655_效果.jpg "undefined") # 字号灰度最佳粗细值对应表 ![image.png](https://cdn.openluat-luatcommunity.openluat.com/images/20220301161038948_image.png) # 常见问题 ## 1. 设置68号字体,显示不了 灰度设置不对,68号字体,灰度应设置为2(灰度4支持48以下字号,灰度2支持98以下字号,灰度1支持192以下字号)。 ## 2. 目前字库只支持一种字体(黑体) ## 3. 金牛座使用字库,授权 (V3210之前版本需要授权,>=V3210版本不需要授权) # 矢量字库芯片购买链接 - [GT5SUCD2E-1A 标准矢量字库芯片](https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4002-24045920841.40.508a22ffXgosDo&id=666743298271 "GT5SUCD2E-1A 标准矢量字库芯片")