陈拓 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

ESP32 ESP-IDF LVGL8 显示中文相关推荐

  1. ESP32 IDF LVGL8.0 flash 外部字库显示 中文显示

    我从stm32一路学到esp32,发现这款芯片挺好玩的,主要是还是stm32太贵了,stm32主要是很多坑有人遇到了,并给出了解决方法,esp32这方面就少点,有时候找不到的,只能靠自己了. 本文使用 ...

  2. 物联网开发笔记(63)- 使用Micropython开发ESP32开发板之控制ILI9341 3.2寸TFT-LCD触摸屏进行LVGL图形化编程:显示中文

    一.目的 这一节我们学习如何使用我们的ESP32开发板来控制ILI9341 3.2寸TFT-LCD触摸屏进行LVGL图形化编程的第一步:显示中文. 二.环境 ESP32 + 3.2寸 ILI9341触 ...

  3. 使用micropython(ESP8266、ESP32)驱动SES 2.66寸墨水屏显示中文

    由于需要做一些低功耗的东西,所以最近在尝试玩墨水屏.出于成本考虑(没钱的另一种委婉说法)从咸鱼淘到2块便宜的二手SES 2.66寸三色墨水屏,并使用micropython将其驱动起来,并用字库的方法显 ...

  4. Micropython驱动ST7735显示中文(中文字体库)

    大家是不是遇到显示中文就头大了,又是取模又是怎么的,但麻烦,太繁琐了.对确定的字符显示来说还可以,但不确定的内容时就麻烦了.所以,今天还是来讲讲干货了,来使用一个方便的方式来显示中文,不用取模,直接显 ...

  5. window系统mysql无法输入和无法显示中文的处理配置

    第一步:使用记事本打开mysql安装目录下的"my.ini"文件. # MySQL client library initialization. [client] port=330 ...

  6. python图像中如何显示中文

    python图像中如何显示中文 在开头加入这两行即可 from pylab import * mpl.rcParams['font.sans-serif'] = ['SimHei']

  7. hbase shell编码显示中文

    最近测试hbase shell,碰到个中文显示编码问题,最后通过Python解决了问题,具体操作如下: hbase(main):015:0* scan 'fr_test_hbase:test_log1 ...

  8. php运行显示中文乱码,如何解决PHP界面显示中文乱码的问题

    如何解决PHP界面显示中文乱码的问题 发布时间:2020-07-14 15:19:00 来源:亿速云 阅读:74 作者:Leah 这期内容当中小编将会给大家带来有关如何解决PHP界面显示中文乱码的问题 ...

  9. jQuery里面的datepicker日期控件默认是显示英文的,如何显示中文或其他语言呢?...

    jQuery里面的datepicker日期控件默认是显示英文的,如何让他显示中文或其他呢? [官方的写法]: (1)引入JS文件: <script type="text/javascr ...

最新文章

  1. Linux包管理器apt/apt-get发现远程代码执行漏洞
  2. mysql 操作审计_利用mysql的audit审计功能记录用户操作信息
  3. 自动跟随机器人:一种简易的自动跟随方案,自动跟随小车、自动跟随平衡小车、STM32、基于超声波的自动跟随小车
  4. BZOJ 1001 狼捉兔子
  5. 信息学奥赛一本通(2063:【例1.4】牛吃牧草)
  6. 中国磷酸一铵(MAP)行业市场供需与战略研究报告
  7. 正式学习python的第0天
  8. c语言文件归档,Go语言tar归档文件的读写操作
  9. java中订单流水号_订单流水号的生成
  10. 【Operator】七大互联网电视牌照商2016年下半年动向之中央三大台
  11. Coverage [minx,miny,maxx,maxy] is [12, 4, 13, 6, 3], index [x,y,z] is [2, 5, 3]错误原因及其解决方式...
  12. 灵媒阅读开始自学通灵
  13. 阿里云——云数据库RDS
  14. eovs实训报告总结心得_实训报告心得体会范文大全
  15. SQL中日期函数计算月初/月底/季末/年初/年底
  16. FTP文件传输协议与部署,包括Linux系统、Windows系统和H3C路由交换设备部署
  17. 城堡迷阵,51nod1527,贪心
  18. ---===制作全透明的窗口===---
  19. 2022/10/17-10/22周报
  20. Android4.4开机向导

热门文章

  1. 英语学习(你不会后悔的)
  2. xlwings写入一列数据
  3. #跟我一起写 Makefile# 隐含规则使用隐含规则
  4. python求10以内的素数_python如何求100以内的素数
  5. JavaScript的基础类型的思维导图
  6. poc测试环境准备_华为桌面云 【环境搭建类】 Poc测试经验总结-环境搭建
  7. 利用java.util.logging.Logger输出日志
  8. Matplotlib进行绘图
  9. python解决警告InsecureRequestWarning: unverified HTTPS request is being made to host
  10. html与php 接受信息判断星座(同时输出图案)