(标题是arduino-esp32只是因为平台是这个)
LVGL默认的字库是英文的,当然其字库文件里也有一个带有中文的字库 lv_font_simsun_16_cjk ,不过里面的中文字并不多而且很多是繁体。这篇说一下怎么自己制作一个中文的字库并使用到LVGL中。
在目录 lvgl/src/font 下,存放着官方自带的所有字库文件。其中 lv_font_simsun_16_cjk.c 就是自带的中文字库了。
在这个文件的头部列举出了一部分的文字,其实就是一部分的CJK编码的文字。包括中文、日文、韩文中的一部分的文字。
不过也只有很少一部分的汉字在这里面,而且有很多都是以繁体的形式给出的。
如果需要使用到的文字刚好这里面都有的话,那么可以直接使用这个字库就行了,不需要自己制作。
要使用这个字库也很简单。
首先在配置文件 lv_conf.h 中,找到这一段。系统默认是只选择使用了14px的 Montserrat 字体。
默认的字体也是这个。
只需要把这个 lv_font_simsun_16_cjk 字库的宏修改为1就可以了。
当然如果使用VS模拟器的话这些字库是全开的,在真正的开发板上是肯定做不到全开,内存肯定不够。
首先在主文件里将 lv_demo_widghts.c 示例给注释掉。
打开下面的 lv_example_label_1() 示例。
这个例子会生成几个 label 组件的例子,更方便查看效果。
我们在不对字体做任何修改的情况下,按住ctrl点击这个函数,进入原代码中,在这里添加一行中文。
点击运行后,发现是不会显示的。
而且控制台也在不停的报错。找不到这些中文的编码。
尝试在这里添加这行代码lv_obj_set_style_text_font(label2, &lv_font_simsun_16_cjk, 0);
。
这条语句会将指定的组件的默认字体样式由 LV_FONT_MONTSERRAT_14 修改为 LV_FONT_SIMSUN_16_CJK。
接下来再试试编译运行,可以发现只显示了一部分的汉字。这 这个字并没有显示出来。
当然原因就是 这 这个字在字库里没有。
首先打开LVGL官网lvgl.io,打开工具栏的 font converter。
这是一个LVGL官方提供的将字库转化为LVGL专属的 C 文件的网站。
使用总顺序步骤如下图。
步骤如下:
统一码(Unicode),也叫万国码、单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
至于这个怎么选择,翻到这个网页下方,贴心的提供了一些参考网站。
第一个网站可以看到 Unicode 中每个16进制所代表的字符。我们一般最常用就是 0x20-0x7F 这个范围里的字符了,包括了数字、常用符号和所有大小写英文字符。
第二个网站提供了一个最直观的范围对应,如果你知道自己需要哪个标准字库,可以直接在这里找到范围。
回到配置项,我们可以根据需要来填写范围,抑或是单个字符,都可以填上去,中间以英文逗号分隔。
这里0x20-0x7F就是前文说的基础字符。
首先把浏览器下载的 C 文件放进 lvgl/src/font 路径下。
在资源管理器中的 lvgl/src/font 路径下右键添加现有项,选择刚才放进来的字库文件。
在 lv_conf.h 中,添加自定义的字体库。myfont_16 就是文件名。
重新生成解决方案。
回到最开始的例子里,修改下图中参数为这个字体。
再次运行,可以发现我们配置的 label 中的字体已经变成刚才使用中文字库生成的字体了。这 字也出现了。
基本流程都是一样的。不过需要修改一下包含路径。
#include lvgl/lvgl.h
修改为#include ../../lvgl.h
。LV_FONT_DECLARE(myfont_16)
。这是我自己正在用的界面,16px在屏幕上效果还可以。
官方的这个转换网站还是很方便的,如果有新添加的字符或是文字,随时可以再次添加,然后生成一个新的文件替换掉之前的文件即可。
支持向量机是监督式学习算法,主要应用于分类,它的目的是寻找一个超平面对样本进行分割,分割的原则是间隔最大化。(1)当训练数据线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;(2)当训练数据近似线性可分时,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;(3)当训练数据线性不可分时,通过核技巧(将低维数据映射到高维空间的办法)或软间隔最大化,学习一个线性分类器,即非线性支持向量机。使用支持向量机对wine数据集进行分类1、导入数据集(加载scikit-lea
本文实例讲述了Java使用正则表达式匹配获取链接地址的方法。分享给大家供大家参考,具体如下:获取页面中字符串的url地址我们都会使用正则表达式来匹配获取了,下面我来给大家总结几个匹配获取链接地址示例。1、正则表达式中Matcher中find()方法的应用。2、String对象中的 replaceAll(String regex,String replacement) 方法的使用。通过这个方法去除了...
用PIL读取保存图片错误 :OSError: cannot write mode RGBA as JPEG(20190213)文章目录:一、错误原因分析二、解决方式1、把PNG格式转换成的四通道转成RGB的三通道2、保存PNG格式用PLI模块,把PNG格式图片处理之后,想保存成JPG格式结果出错啦,下面是遇到的问题和解决方式,一起去看看吧!!!一、错误原因分析image.save('gi...
一、基础1.1 操作系统1.1.1 基本知识略1.1.2 常见Linux命令目录文件内容搜索系统类网络cdcp/scpvi/vimfind: find . -name xxkillnetstat -anotlsmvcatgrep: ps -efgrep xxlsof: lsof-i:portmkdirrmtailwhereistoppwdta.
新人新帖。本文是一个客户和我讨论DCHP option60的功能时而衍生的一些功能,仅作为一个笔记打发时间,废话不多直接入题。DHCP 是RFC2131定义,DHCP 2132定义了dhcp option .9.13. Vendor class identifierThis option is used by DHCP clients to optionally identify the v...
linux下挂载(mount)光盘镜像文件、移动硬盘、U盘、Windows和NFS网络共享分类: Linux如何在linux系统下挂接(mount)光盘镜像文件、移动硬盘、U盘以及Windows网络共享和UNIX NFS网络共享。挂接命令(mount)命令格式:mount [-t vfstype] [-o options] device dir其中:1.
Problem Description最后来个字符串签个到吧,这题其实并不难,所需的算法比较基础,甚至你们最近还上过课。为了降低难度,免得所有人爆零。这里给几个提示的关键字 :字符串,回文,二分,哈希. 注意要对奇偶回文分开二分这样还不会做,说明基础有所欠缺。给你一个字符串A和一个字符串B,请你求一个满足以下要求的所有字符串中,最长的字符串C的长度:C...
牛客网上原题题练习,并进行习题解析
要想通过ssh远程访问,需要手动执行 service sshd start,这样sshd服务才开启。 通过chkconfig可以将sshd加入到系统服务中。 [[email protected] ~]# chkconfig sshd on 可以再查看sshd的运行级别状态: [[email protected] ~]# chkconfig --list
uses System.Hashprocedure TForm1.btn1Click(Sender: TObject);var data, key: string;begin data := 'XXXXX'; key := 'key'; mmo1.Text:=THashSHA1.Create.GetHMAC(data, key);end;
ListView 用来显示一个条目列表,条目对应的数据来自于 Model,而每个条目的外观则由Delegate 决定。我们可以将Delegate 看成如何展示 Item 的一个模板。Android手机上常见的联系人界面,其实就是使用 ListView 实现的,而且 Android 的 ListView 和 Qt Quick 的ListView 使用同样的模式:Model、View、Item Template(Delegate)。要使用 ListView,必须为其指定一个Model、一个Delega.
http://www.gycc.com/ is an interesting scholar search engine.If you try to search some paper by someone, it may failed. But ifyou try to search something in some field, you could get a lot ofin...