本节提供了如何在Wio Terminal设备上选择和使用包含GNU FreeFonts的字体库的指南。
这个字体库中有三种主要的字体可以使用,包括衬线字体(Serif)、无衬线字体(Sans)和等宽字体(Mono)。每种字体都有几种样式(粗体、斜体、倾斜体)和字体大小,从9pt、12pt、18pt到24pt不等。(pt:字体字号大小的单位)
为了更方便使用这些字体,可以将Seeed_Arduino_LCD文件内的 Free_Fonts.h文件拷贝到项目中。参考路径:
C:\Users\Documents\Arduino\libraries
为了节省大量的打字时间,在sketch中可以通过三种方式引用每种字体:
方法一:使用完整的字体名称
tft.setFreeFont(&FreeSansBoldOblique24pt7b);
在这种方法中,你需要使用字体的完整名称来引用它。这通常包括字体的类型(如Sans Serif)、样式(如Bold、Oblique)和大小(如24pt)。这种方法的优点是清晰明了,但缺点是名称可能很长,容易出错。
方法二:使用FF#编号
tft.setFreeFont(FF32);
在这种方法中,每个字体都被分配了一个唯一的编号(如FF32),你可以在草图中使用这个编号来引用字体。这种方法的优点是简短易记,但缺点是你需要查看Free_Fonts.h文件来找到每个字体的对应编号。
方法三:使用缩写名称
tft.setFreeFont(FSSBO24)
在这种方法中,字体名称被缩写为一系列字母和数字的组合。这些字母代表字体的类型、样式和大小。例如,FSSBO24代表Free Sans Serif Bold Oblique 24pt字体。这种方法的优点是既简短又具有一定的描述性,但缺点是初次使用时可能需要熟悉缩写的含义。
缩写含义解释:
F = Free font(免费字体)
M = Mono(等宽字体)
SS = Sans Serif(无衬线字体,双S用于与衬线字体区分)
S = Serif(衬线字体)
B = Bold(粗体)
O = Oblique(倾斜体,字母O不是数字0)
I = Italic(斜体)
No = point size(字体大小,可以是9、12、18或24)
通过这三种方法,你可以根据自己的喜好和项目需求在Arduino的sketch中灵活地引用和使用字体。
使用不同字体的示例:
使用该实例时,你需要将arduino打开的sketch保存在桌面上或指定文件夹,将下面路径的Free_Fonts.h复制到你刚才保存的sketch的文件夹下。
C:\Users\Documents\Arduino\libraries\Seeed_Arduino_LCD\examples\320x240\All_Free_Fonts_Demo
#include"TFT_eSPI.h"
#include"Free_Fonts.h" // 包含头文件
TFT_eSPI tft;
void setup() {
tft.begin();
tft.setRotation(3);
tft.fillScreen(TFT_BLACK); // 黑色背景
tft.setFreeFont(&FreeSansBoldOblique12pt7b); // 选择 Free, Sans, Bold, Oblique, 12pt的字体
tft.drawString("Sans Serif 12pt",70,80);// 在(70,80)处开始写下字符串
tft.setFreeFont(FF10); // 选择 Free, Mono, Oblique, 12pt的字体
tft.drawString("Mono 12pt",70,110);// 在(70,110)处开始写下字符串
tft.setFreeFont(FS12); // 选择 Free, Serif, 12pt的字体
tft.drawString("Serif 12pt",70,140);//在(70,140)处开始写下字符串
}
void loop() {}
本节演示了如何在Wio Terminal上使用抗锯齿字体(例如显示日文字符、希腊字符和其他UCS-2字形)!此外,平滑字体还可以用于在计算机上,并以您喜欢的字体来显示英文字符。
如使用LCD屏幕(1)中开头所述,这里同样方法添加.zip文件。
下载Seeed_Arduino_FS
下载Seeed_Arduino_SFUD
下面演示了如何生成可以在Wio Terminal上用于平滑字体的vlw字体文件:
第一步
下载 processing。
第二步
打开软件,点击工具 > 创建字体。
第三步
将会出现一个“创建字体”窗口。您可以在此选择您计算机上可用的字体。您可以更改字体大小,并点击“字符…”进行进一步的设置。此外,您还可以更改vlw文件的文件名。
第四步
点击Characters,将会出现一个“字符选择器”窗口,您可以在其中选择特定语言的Unicode字符块(例如本例中的“基本拉丁语”)。对于亚洲字符(中文、日文、韩文),建议使用“CJK Compatibility ”或“CJK category”的Unicode字符块。点击“确定”以保存字体设置。(日常用中文可使用“CJK Unified Ideographs”)
第五步
点击文件 > 保存。
现在,将vlw字体文件复制到SD卡中,并将SD卡重新插入Wio Terminal。
默认情况下,LCD库中的平滑字体选项是关闭的,以节省Wio Terminal的资源。因此,需要在Wio Terminal中配置以启用平滑字体。
请导航到Arduino库文件夹(libraries)-> Seeed_Arduino_LCD,并使用编辑器打开User_Setup.h文件。搜索#define SMOOTH_FONT并将该行取消注释,如下所示:
现在你已经在Wio Terminal上启用了平滑字体,可以显示任何你喜欢的字体或字符了!
将SD卡内的字体加载到Wio Terminal:
void loadFont(String fontName); // fontName是vlw文件名。
在屏幕上显示vlw文件中的所有字符:
void showFont(uint32_t td); // td是显示所有字符时屏幕之间的延迟时间
卸载字体:
void unloadFont();
要在屏幕上显示字符,您可以使用类似于TFT库中的函数,如 tft.println()。此外,您还可以使用其他函数,如tft.setCursor() 和 tft.setTextColor(),来改变显示字符的位置和颜色。
示例:
可以直接点击此处直接下载代码文件,无需复制下面代码。
这里不建议使用中文,因为中文的.vlw太大, tft.loadFont()加载后会爆内存,博主的单片机甚至出现无法烧录的情况。若您出现在此情况,请拔出SD卡,下拉复位后,再烧录。
#include
#include "Seeed_FS.h"
#include "SD/Seeed_SD.h"
#include"TFT_eSPI.h"
TFT_eSPI tft;
void setup() {
tft.begin();
Serial.begin(115200);
tft.setRotation(3);
tft.fillScreen(TFT_BLACK); //Black background
while(!SD.begin(SDCARD_SS_PIN, SDCARD_SPI)){
Serial.println("SD card error!\n");
while(1);
}
delay(1000);
tft.loadFont("Apple-Chancery-24");
// Show all characters on screen with 2 second (2000ms) delay between screens
tft.showFont(2000); // Note: This function moves the cursor position!
tft.setTextColor(TFT_RED,TFT_BLACK);
tft.setCursor(0,0);
tft.println("Konnichiwa");
tft.println("Sayonara");
tft.println();
tft.unloadFont();
tft.loadFont("Latin-Hiragana-24");
tft.setTextColor(TFT_GREEN,TFT_BLACK);
tft.println("こんにちは");
tft.println("さようなら");
tft.unloadFont();
}
void loop(){}