LVGL显示中文字体及其它语言文字详细笔记教程

news2024/10/7 11:32:52

        在前面几篇博客文章中,已经对LVGL的移植和使用进行了较为详细的介绍,在本文中将讲解如何在LVGL的控件中显示中文字体及其它语言字体

LVGL在VScode中安装模拟器运行配置笔记教程_vscode lvgl-CSDN博客

LVGL移植到STM32 MCU平台详细经验笔记教程-CSDN博客

提醒:加入字库后,必须让工程代码处于UTF-8编码模式下,否则文字显示会出问题

1、LVGL自带汉字库CJK

        在LVGL的官方库中,其实已经内置了一个CJK中文字库:中日韩越统一表意文字(CJKV Unified Ideographs),目的是要把分别来自中文、日文、韩文中,本质相同、形状一样或稍异的表意文字(主要为汉字,但也有仿汉字如日本国字、韩国独有汉字)于ISO 10646及Unicode标准内赋予相同编码。越南文后来亦加入此计划,所以亦有“CJKV”的称呼。

        CJK库位于LVGL的路径下的src文件夹下的font子文件夹中lv_font_simsun_16_cjk.c,这个文件中包含了日常使用的汉字数量有数千个。

        虽然该库日常使用的汉字数量有数千个,再加上生僻字,数量达到数万个,但缺少很多简体中文中经常使用的汉字,如“问”字。因此在使用之前,可以点击该字库,去查找是否能够满足项目场景中需要使用的汉字,如果不能满足,则需要进行下面开始的工作,即往LVGL库中添加汉字字库或其它语言的字库。

使用自带的CJK汉字库需要将lv_conf.h文件中的CJK字库宏定义开启,否则不能使用。

2、自定义LVGL汉字库

        除了使用LVGL系统自带的CJK汉字库外,还可以采取自定义汉字库的形式,这就需要我们准备这两个东西:字体文件字体转换器

        字体文件可以互联网上随便下载,如浏览器直接搜索:GB2312字体下载;如果使用LVGL官方的字体转换器,那么下载的字体文件必须是TTF/WOFF格式的。使用其它平台的字体转换器,则需要根据对应字体转换平台的要求进行下载。

        在本笔记教程中,直接搜索下载了GB2312楷体的ttf格式字体文件,字体文件下载打开后如下图所示。

在准备好字体文件后,可以直接进入LVGL官方的在线字体转换工具网站:Online font converter - TTF or WOFF fonts to C array | LVGLicon-default.png?t=N7T8https://lvgl.io/tools/fontconverter

        将LVGL文件加入到工程中时,如果需要使用生成的字体,需要将字体进行声明:

//LV_FONT_DECLARE(字体名);
LV_FONT_DECLARE(lv_font_gb2312_regular_script_14);

//样式中设置字体API接口:
lv_obj_set_style_text_font();    //私有(本地)样式
lv_style_set_text_font();        //普通(共享)样式

自定义的中文字库加入到工程中,编译运行后的效果图如下图所示:

提醒:加入字库后,必须让工程代码处于UTF-8编码模式下,否则文字显示会出问题

如果是使用 MDK KEIL平台切换为UTF-8编码后,程序编译报错:error: #8: missing closing quote

在如下图所示的Misc Controls中添加:--locale=english ,即可解决上述的报错信息

3、Unicode编码表

        Unicode 是国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换

        Unicode 字符集的编码范围是 0x0000 - 0x10FFFF , 可以容纳一百多万个字符, 每个字符都有一个独一无二的编码,也即每个字符都有一个二进制数值和它对应,这里的二进制数值也叫 码点 , 比如:汉字 "中" 的 码点是 0x4E2D, 大写字母 A 的码点是 0x41。

Unicode官网可以查询具体的字符编码值:Unicode – The World Standard for Text and Emoji

汉字编码范围部分表:

字符Unicode分布表:

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

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

相关文章

Day36 代码随想录打卡|二叉树篇---翻转二叉树

题目(leecode T226): 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 方法: 迭代法 翻转二叉树,即从根节点开始,一一交换每个节点的左右孩子节点,然后…

【Linux】-Zookeeper安装部署[17]

简介 apache ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 除了为Hadoop和H…

程序员做推广?我劝你别干

关注卢松松,会经常给你分享一些我的经验和观点。 这是卢松松会员专区,一位会员朋友的咨询,如果你也有自研产品,但不知道如何推广,一定要阅读本文!强烈建议收藏关注,因为你关注的人,决定你看到的…

【spring】@ControllerAdvice注解学习

ControllerAdvice介绍 ControllerAdvice 是 Spring 框架提供的一个注解,用于定义一个全局的异常处理类或者说是控制器增强类(controller advice class)。这个特性特别适用于那些你想应用于整个应用程序中多个控制器的共有行为,比…

VeraCrypt设置步骤操作说明

一、VeraCrypt软件说明 VeraCrypt是一个开源的磁盘加密软件,是TrueCrypt的继承者和改进版。它提供了强大的数据加密功能,可以对整个磁盘、操作系统分区或移动存储设备进行加密。 二、VeraCrypt软件操作步骤 01)首先在电脑中创建一个新的空…

【论文笔记】| 微调LLM晶体生成

【论文笔记】| 微调LLM晶体生成 Fine-Tuned Language Models Generate Stable Inorganic Materials as Text NYU, ICLR 2024 Theme:Material Generation Main work: 微调大型语言模型以生成稳定的材料 可靠性:在样本结构中,90% …

Python | Leetcode Python题解之第97题交错字符串

题目: 题解: class Solution:def isInterleave(self, s1: str, s2: str, s3: str) -> bool:n1 len(s1)n2 len(s2)if len(s3) ! n1 n2: return Falsedp [[False] * (n2 1) for _ in range(n1 1)] # dp[i][j]表示s1[0:i)和s2[0:j)是否能够构成s…

设计模式5——抽象工厂模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 抽象工厂模式(Abst…

2024年贵州特岗教师招聘报名流程,速速查收哦!

2024年贵州特岗教师招聘报名流程,速速查收哦!

DolphinDB 携手九鞅科技,助力固收投研效能飞跃

随着金融市场开放的广度与深度不断拓宽,金融产品呈现出多样化的发展态势,其中债券投资组合凭借其低风险性、高流动性与稳健的收益表现,逐渐成为投资理财领域备受瞩目的焦点。投资经理不仅需要了解哪些债券值得投资,更要对债券投资…

MySQL日常联系---20万数据的存储过程(一)。

一、创建DDL和DML CREATE TABLE student (id INT PRIMARY KEY AUTO_INCREMENT,createDate DATE NOT NULL,userName VARCHAR(255) NOT NULL,phone VARCHAR(15),age INT,sex CHAR(1), -- 假设M代表男,F代表女introduce TEXT );INSERT INTO student (createDate, user…

二叉树创建与销毁操作详解

目录 一、通过前序遍历的数组构建二叉树 1.1 递归思路 1.2 递归分支图 1.3 递归栈帧图 1.4 C语言实现 二、二叉树的销毁 2.1 递归思路 2.2 递归分支图 2.3 递归栈帧图 2.4 C语言实现 一、通过前序遍历的数组构建二叉树 牛客网链接:二叉树遍历_牛客题霸_牛…

2024年618购物狂欢节即将来袭!精选五款超值入手数码好物!

618购物狂欢盛宴即将落幕,是时候展现我们的购物智慧了!在追求价格优惠的同时,我们更应看重商品的品质与实用性。面对琳琅满目的选择,如何筛选出真正值得拥有的好物呢?为了让大家的购物之旅更加轻松愉快,以下…

想学接口测试,不知道那个工具适合?

引言: 接口测试在软件开发中扮演着至关重要的角色,它可以帮助我们验证系统的功能、性能和安全性。而选择适合的工具是进行接口测试的重要一步。本文将从零开始,为你详细介绍如何选择合适的工具,并提供规范的指导。 一、了解接口…

通过cmd命令行使用用3dmax自带的vray渲染

有时调试需要使用vray渲染vrscene文件看效果,只装有3dmax下可以使用自带vray渲染,在3dmax的渲染日志里面看自带引擎路径 使用命令行进入到此目录 执行命令指定vr文件即可看到效果,如:vray.exe -sceneFile“C:\test15\202405241…

Jetbrain | IDEA的启动logo替换成可爱的vtuber-logo

看了这个,好可爱 【上Github热榜了!当编程语言的Logo变得可爱起来~】 又看了这个 光速整活,强啊 看到很多人整IDEA的logo包括我自己,都不是特别方便的搞,我就直接把文件放在绑定资源里直接下吧 然后直接找到本体的安…

HTML+JavaScript+CSS:爱心代码

1、创建heart.js文件 // 定义画布的宽度和高度,以及画布的中心点坐标 const CANVAS_WIDTH 640; const CANVAS_HEIGHT 480; const CANVAS_CENTER_X CANVAS_WIDTH / 2; const CANVAS_CENTER_Y CANVAS_HEIGHT / 2;// 定义图像的放大因子,用于调整爱心的…

【译】组复制和 Percona XtraDB 集群: 常见操作概述

原文地址:Group Replication and Percona XtraDB Cluster: Overview of Common Operations 在这篇博文中,我将概述使用 MySQL Group Replication 8.0.19(又称 GR)和 Percona XtraDB Cluster 8 (PXC)(基于 Galera&…

Wireshark 4.2.5:发现 QUIC 和 VXLAN 协议的新功能

Wireshark 是一种先进且广泛使用的网络协议分析仪,最近发布了新版本 4.2.5,它提供了许多新功能和改进。 Wireshark 4.2.5 发行说明 什么是 Wireshark? Wireshark 是世界上最流行的网络协议分析器。它用于故障排除、分析、开发和教育。 Wiresh…

汇编:函数以及函数参数传递

汇编语言中的函数(或过程)是指一段可以被调用和执行的代码块;它们用于组织和重用代码,并使程序结构更加清晰;由于汇编语言没有高层次语言的语法糖,编写和调用函数涉及直接的堆栈操作和寄存器管理&#xff1…