ESP32 ESP-IDF LVGL8 显示中文

news2025/1/15 14:39:17

陈拓 2022/12/15-2022/12/16

1. 开发环境

《ESP32 ESP-IDF LVGL8.3.3移植》

ESP32 ESP-IDF LVGL8.3.3移植_晨之清风的博客-CSDN博客ESP32 ESP-IDF LVGL8.3.3移植。https://blog.csdn.net/chentuo2000/article/details/128269394?spm=1001.2014.3001.5501

2. 使用LVGL自带的中文字库

  • 字库文件

~/esp442/esp32_lvgl833/components/lvgl/src/font/lv_font_simsun_16_cjk.c

其中:

CJK是CJK Unified Ideographs的缩写,意思是“中日韩统一表意文字”,把分别来自中文、日文、韩文、越文中的本质、意义相同、形状一样或稍异的表意文字赋予相同编码,其中主要为汉字,也有仿汉字如日本国字、韩国独有汉字、越南的喃字等。

这个lv_font_simsun_16_cjk字库只有1000个常用字和部首偏旁。在

~/esp442/esp32_lvgl833/components/lvgl/src/lv_conf_internal.h

中有说明:

#ifndef LV_FONT_SIMSUN_16_CJK
    #ifdef CONFIG_LV_FONT_SIMSUN_16_CJK
        #define LV_FONT_SIMSUN_16_CJK CONFIG_LV_FONT_SIMSUN_16_CJK
    #else
        #define LV_FONT_SIMSUN_16_CJK            0  /*1000 most common CJK radicals*/
    #endif
#endif

1000个最常见的CJK字根(偏旁部首)

  • 配置项目

idf.py menuconfig

1) 选择theme字号

 

2) 选择中文字库

使用自带的中文字库Simsun 16 CJK。

选择Enable Dejavu 16 Persian, Hebrew, Arabic letters是为了能通过后面的编译。

3) 选择双向文本

 

选择Support bidirectional text是为了能通过后面的编译。

  • 使用LVGL自带的例子

~/esp442/esp32_lvgl833/components/lvgl/examples/widgets/label/lv_example_label_3.c

代码中有编译条件

#if LV_USE_LABEL && LV_BUILD_EXAMPLES && LV_FONT_DEJAVU_16_PERSIAN_HEBREW && LV_FONT_SIMSUN_16_CJK && LV_USE_BIDI

其中:LV_USE_LABEL和LV_BUILD_EXAMPLES是默认配置。其他3个条件就是我们在前面配置中所选择的。

  • 修改main.c

添加头文件:

#include "examples/lv_examples.h"

修改create_demo_application函数

static void create_demo_application(void)
{
    lv_example_label_3();
}
  • 修改main目录下的 CMakelists.txt 
idf_component_register(SRCS "main.c" 
"../components/lvgl/examples/widgets/label/lv_example_label_3.c"                     
                    INCLUDE_DIRS ".")
  • 编译、烧写
  • ST7789 320x240显示屏效果

操作细节见《ESP32 ESP-IDF LVGL8.3.3移植》

ESP32 ESP-IDF LVGL8.3.3移植_晨之清风的博客-CSDN博客ESP32 ESP-IDF LVGL8.3.3移植。https://blog.csdn.net/chentuo2000/article/details/128269394?spm=1001.2014.3001.5501

3. 自定义中文字库

  • 介绍一个很好的学习LVGL的资源网站

http://lvgl.100ask.net/8.2/tools/fonts-zh-source.html

我们可以从这里找到很多免费的字库,网站有视频教你怎样使用。

3.1 使用Windows字库

  • 选择字库

我们可以使用Windows带的字库:

例如,我们选择华文隶书。

复制粘贴所选字体到另一个目录,得到文件:

STLITI.TTF

  • 使用lvgl官方在线转换工具

https://lvgl.io/tools/fontconverter

 如图设置,点击Convert得到字库文件lv_font_stliti_24.c

  • 选项说明

Name:字库名称lv_font_stliti_24

Size:字符大小24

Bpp:每个像素的比特(位),位数越大效果越好,字库尺寸越大。

 

Font compression:启用字体压缩(减小大小,但导致渲染速度变慢)

Horizontal subpixel rendering:水平子像素渲染(可能会提高字体质量,但会导致更大的字体库)

Try to use glyph color info from font to create grayscale icons:尝试使用字体中的字形颜色信息创建灰度图标。

由于灰色色调是通过透明度模拟的,所以仅在对比度背景上效果会很好。

详细说明见:

https://docs.lvgl.io/master/overview/font.html#subpixel-rendering

 

Range:选择字符范围,我们只选择了ASCII码表。可以选择多个范围,用空格分隔。

Symbols:如果在Range中选择全字库范围将得到一个很大的字库,占用很多空间。在项目中我们只用到少量中文,将这些中文写在Symbols中,这样生成的字库很小。

 

Include another font:包含另一个字库。

这个功能可以将不同的字库合并到一个字库中

具体的使用方法见:

https://www.bilibili.com/video/BV1Ya411r7K2/?p=15

3.2 在程序中使用生成的字库文件

  • 将字库文件lv_font_stliti_24.c复制到font目录下

~/esp442/esp32_lvgl833/components/lvgl/examples/assets/font

  • 修改main目录下的 CMakelists.txt 
idf_component_register(SRCS "main.c" 
"../components/lvgl/examples/widgets/label/lv_example_label_3.c"
"../components/lvgl/examples/assets/font/lv_font_stliti_24.c"                     
                    INCLUDE_DIRS ".")
  • 在代码中引用自定义字体

按照转换工具下面的说明,要在代码中添加对自定义字体的引用声明:

LV_FONT_DECLARE(lv_font_stliti_24);
  • 修改lv_example_label_3.c 文件的lv_example_label_3函数
void lv_example_label_3(void)
{
    LV_FONT_DECLARE(lv_font_stliti_24);

    lv_obj_t * cz_label = lv_label_create(lv_scr_act());
    lv_label_set_recolor(cz_label, true);
    lv_label_set_text(cz_label, "温度: 18℃  湿度: 65%\n    #ff5151 晴##99cc33 到##2894ff 多云#");
    lv_obj_set_style_text_font(cz_label, &lv_font_stliti_24, 0);    
    lv_obj_set_width(cz_label, 310);
    lv_obj_align(cz_label, LV_ALIGN_LEFT_MID, 5, 0);
}
  • 显示效果

参考文档

  1. 如何为ESP32项目选择彩色显示
    https://m.elecfans.com/article/1080052.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# 创建WebService接口并连接

创建WebService项目 首先安装下.NET Framework4.6.2-4.7.1开发工具。 然后就是新建 ASP.NET Web应用程序 项目。 输入项目名称WebServiceDemo 选择空,然后先去掉HTTPS配置。 项目创建好之后,开始添加asmx文件. 添加好之后在添加一个有参数的名为Hel…

牛客java刷题知识点总结(六)

内存引用地址 内存引用地址,是指栈中存放的地址,来指向堆中的某个位置。 int 是基本类型,数据直接存放在栈中,不存在内存引用地址的说法 A对 指向常量池里的"hello"。 B对 题中没说声明的a是局部变量。 C错 int a 1;并…

DSPE-PEG-N3,磷脂-聚乙二醇-叠氮 点击化学PEG试剂,可用于药物传递、基因转染和生物分子修饰

中文名称 叠氮聚乙二醇磷脂、磷脂聚乙二醇叠氮 简称 N3-PEG-DSPE、DSPE-PEG-N3 物理性质:米白色/白色固体或粘性液体取决于分子量。 溶剂: 溶于大部分有机溶剂,和水有很好的溶解性。 活性基团: N3 反应基…

深度学习(17)—— 度量学习

深度学习(17)—— 度量学习 文章目录深度学习(17)—— 度量学习一、What?二、paired-based loss1. Contrastive loss2. Triplet loss3. Triplet center loss4.N-pair loss5. Quadruplet loss6. Lifted Structure Loss昨天讨论的时…

Linux安装tomcat 保姆级教程

一、安装前提 安装tomcat,前提需要安装jdk,如果没有安装 linux安装jdk教程(手动安装/yum安装) 保姆级教程_ 来杯咖啡的博客-CSDN博客 二、安装教程 1、下载tomcat tar包 官网下载地址: Apache Tomcat - Welcome! 2、将下载的压缩包上…

实验4 路由配置

实验4 路由配置一、实验目的二、实验要求三、实验步骤,数据记录及处理四.实验总结一、实验目的 1、路由配置; 2、配置静态路由; 3、掌握RIP协议配置。 二、实验要求 写出PC0与PC1连通的基本要求和配置过程 三、实验步骤&#…

UDP服务器

目录 一,介绍 二,日志 三,服务端 1,服务器参数 2,创建套接字 3,绑定 3.1 填充套接字信息 3.2 绑定 4,启动服务器 4.1接收客户端请求 4.2记录用户信息 4.3 消息转发 4.4 main函数代码 4.5服务器整…

单商户商城系统功能拆解47—应用中心—自定义海报

单商户商城系统,也称为B2C自营电商模式单店商城系统。可以快速帮助个人、机构和企业搭建自己的私域交易线上商城。 单商户商城系统完美契合私域流量变现闭环交易使用。通常拥有丰富的营销玩法,例如拼团,秒杀,砍价,包邮…

JVM之class加载过程

一、定义: java虚拟机把描述类的数据从class文件加载到内存,并对数据进行 校验/准备/解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。 称作虚拟机的类加载机制。 loading -> linki…

南卡和FIIL蓝牙耳机哪个比较好?数码达人深度对比评测

2023即将到来,蓝牙耳机对于大部分人来说,成为了越来越重要的存在。日常生活中随处可见的都是在使用蓝牙耳机的人,有听歌的、看剧的、玩游戏的等等。伴随着更多的人使用蓝牙耳机,市面上可见的蓝牙耳机数量正在飙升,这也…

MySQL 的自增主键一定是连续的吗?

全文摘要:结合实例分析了自增值保存在哪里,自增值的修改策略,以及自增值不连续的四个场景,希望对各位小伙伴们有所帮助~ 众所周知,自增主键可以让聚集索引尽量地保持递增顺序插入,避免了随机查询&#xff…

微软确认配置错误导致65,000多家公司的数据泄露

©网络研究院 微软证实,在安全漏洞导致端点无需任何身份验证即可通过互联网公开访问后,它无意中暴露了与数千名客户相关的信息。 微软在警报中表示: “这种错误配置可能导致未经身份验证访问与微软和潜在客户之间的交互相对应的一些业务…

互联网大厂Java岗考点(阿里+百度+腾讯+字节跳动+美团+京东)

本文扼要 本文结构主要分为以下三个部分: 01 互联网大厂考点(阿里百度腾讯字节跳动美团京东)02 Java 面试考点大全(基本功底常用技术技术深度技术经验学习能力工作能力项目经验)03 面试真题重现 01 互联网大厂考点 …

OPSS-PEG-N3叠氮聚乙二醇巯基吡啶, N3-PEG-OPSS,点击化学PEG试剂

名称 叠氮聚乙二醇巯基吡啶 N3-PEG-OPSS 中文名称 叠氮PEG巯基吡啶 巯基吡啶PEG叠氮 巯基吡啶聚乙二醇叠氮 英文名称 N3-PEG-OPSS OPSS-PEG-N3 Azide-PEG-OPSS OPSS-PEG-Azide 溶剂 溶于二氯甲烷,氯仿,乙酸乙酯,四氢呋喃等有机溶剂 存储条…

pycharm安装使用pyQt5

一、创建项目 二、安装pyqt5库 三、配置PyCharm外部工具 打开File->settings->Tools->External Tools 1、配置QtDesigner 程序:D:\python3.7\Lib\site-packages\qt5_applications\Qt\bin\designer.exe//安装包的时候回自动下载,直接在包文件…

【微服务技术09】统一网关Gateway

【微服务技术09】统一网关Gateway 案例代码:https://gitee.com/pikachu2333/spring-cloud-hexuan 网关作用 网关功能: 身份认证和权限校验服务路由、负载均衡请求限流 权限控制: 网关作为微服务入口,需要校验用户是是否有请求…

配置Typora

配置Typora 文章目录配置Typora阿里云1)网页搜索阿里云OSS2)注册账号3)点击立刻开通a) 点击“产品价格”b) 初次付费c) 交钱以免造成后续无法访问d)进入管理控制台e) 创建钥匙PicGo1)下载安装2)设置选择显示…

领域知识网络即服务:知识助力产业升级“无形的手”?

文|智能相对论 作者|叶远风 你用过ChatGPT了吗? 这个风靡全球的AI应用,以出圈的方式展现着AI的能量。 一个对话的界面,可以聊任何你想聊的话题,可以写出任何你想要的文字。 似乎有无限的人类知识,被集中到了一起&…

别再背锅了,这个小技巧统计第三方接口耗时很安逸

前言 之前我有写过一篇记录生产环境事故的文章,获得了不少好评。 后续,我们团队有做过一些讨论,为了支撑运营维护,搭建了更好的日志平台GranfaLoki,也引入了SkyWalking做链路追踪。 但过程中也遇到了一些问题&#xff…

26个工业废水处理工艺流程图!水处理从业人员必看

1 矿泉水除溴酸盐工艺流程 季胺1型官能团耐受硫酸盐、氯离子等去除溴化物 2 电厂制备超纯水工艺流程 内冷水系统降电导装置,脱除阴阳离子 电导率<1μs/cm 3 锰矿除氨氮工艺流程 两串一备,通过磺酸基官能团捕捉铵根离子 4 垃圾渗滤液除氨…