admin管理员组

文章数量:1594753

目录

一、引言

二、字体生成

1、字体下载

2、字体转换

3、字体编码

三、字体使用


一、引言

        说明:博主在进行TFT显示时需要显示中文字体,但是TFT库中不带有中文显示,或者显示不全,于是开展了自定义字体,最后得到字体.h文件,引用到项目中供TFT——eSPI库使用。其中一部分脚本放进我的仓库,需要的自行下载。

TFT_eSPI-master-Create_font: 为TFT_eSPI库创建自定义字体https://gitee/upperair0128/tft_e-spi-master-create_font.git

二、字体生成

1、字体下载

        首先下载我们需要的字体,格式为.ttf格式,自行网上搜索字体下载,很多网站都提供下载,但是字体格式为.ttf格式。将字体下载到TFT库的自定义字体下,因为要使用TFT库提供的字体转换程序,如图一所示为下载完成的字体,同时也可以看到存放路径。

 图一

2、字体转换

        a、下载软件processing,下载完成后解压得到这样的文件夹。如图二所示。

        

图二

        b、将需要的字转换为Unicode编码格式,使用在线工具,Unicode编码转换 - 站长工具本工具是Unicode编码转换,为您提供ASCII与Unicode互转,Unicode与中文互转,在文本框里输入要转换的内容,然后点击要转换的类型按钮,转换完成后即可看到对应的内容。https://tool.chinaz/tools/unicode.aspx

        比如需要A则转换结果为如图三所示

         

 图三 

         转换结果为\u0041,使用时写成0x0041,如果字较多可以使用word的替换功能将\u替换为0x

c、利用下载好的软件打开此文件,如图四所示。

图四 

 说明:String fontName = "PingFang-JianZhongHeiTi-2"; 这里填写下载好的字体名称。

             String fontType = ".ttf";这里填写类型。

             int  fontSize = 20;字体大小

             int displayFontSize = 20; 字体大小一致就可以。

        unicodeBlocks这个数组下填写连续的字的编码,比如我想生成A-Z的字体,就写入0x0041(A),0x005a(Z),这样就会生成A-Z的字体了,只要是连续的就可以。

         如果不连续的字的编码请放在specificUnicodes数组里面。

然后点击运行,则会输出字体文件并且显示出来。

 

3、字体编码  

1、得到vlw格式文件,再通过在线工具转为16进制的编码。File to hex converterOn-line file to hexadecimal array converter.https://tomeko/online_tools/file_to_hex.php?lang=zh

2、 建立.h文件,并且新建数组,将所得编码放进数组。

 至此就完成了自定义字体的制作了。

三、字体使用

引入头文件

#include "zh_front_20.h"

 使用TFT库函数加载字体

tft.loadFont(font_20);

字体显示完成后使用TFT库函数卸载字体,不然内存占用量太大,如果程序大了,就无法正常运行了。

tft.unloadFont();

四、总结

整体通过测试,显示正常,如有疑问请留言。

本文标签: 自定义字体TFTeSPI