ESP8266之TFT_eSPI库的自定义字体

目录

一、引言

二、字体生成

1、字体下载

2、字体转换

3、字体编码

三、字体使用


一、引言

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

TFT_eSPI-master-Create_font: 为TFT_eSPI库创建自定义字体https://gitee.com/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.com/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.icon-default.png?t=M3C8https://tomeko.net/online_tools/file_to_hex.php?lang=zh

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

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

三、字体使用

引入头文件

#include "zh_front_20.h"

 使用TFT库函数加载字体

tft.loadFont(font_20);

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

tft.unloadFont();

四、总结

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

  • 7
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值