emWin中文字库显示详细教程(简单直接)
准备工作:
1、运行平台:成功移植emWin的硬件设备或者emWin模拟器
2、软件小工具:FontCvtDemo.exe、U2C.exe(下面是两个新旧版本V530和V548自带的工具列表,V548少了一些工具),两个版本的工具在本文最后有提供
准备工作做好后,下面开始一步步介绍中文字库的建立和汉字的显示
1、建立所需文字字体库
1.1、导入需要显示的文字
首先打开记事本并输入需要显示的文字,然后另存为,编码方式选择Unicode编码,如保存为Font.txt。
1.2、然后打开字体库转换软件FontCvtDemo.exe,设置好需要显示的字体,然后点击Edit>>Disable all characters屏蔽所有字符(默认是选择所有全字库,我们按需选择),接着点击Edit>>Read pattern file...,在对话框中选择我们上一步建立的文本Font.txt,我们可以在程序界面看到我们之前文本中的输入的字符处于选中状态,下图中只显示了英文字符的一部分,如果需要查看中文字符是否被选中可以先将中文字符转换为unicode码,再在程序中找到对应的位置即可,Unicode编码转换网址如:http://tool.chinaz.com/tools/unicode.aspx
1.3、成功导入文本后,在点击File>>Save as另存为c文件,这个C文件就是我们建立的小字体库
2、把生成的字体库Font.c加入工程中并在工程需要调用的文件中对字体进行声明,代码(eMwin模拟器代码)示例如下:
#include "GUI.h"
//字体声明
extern GUI_CONST_STORAGE GUI_FONT GUI_FontFont;
static const char* _apText[] = {
"Op Fancy's Blog",
"xe4xb8xadxe5x8dx8exe5xa5xbdxe5xb0x91xe5xb9xb4"//中华好少年
};
void MainTask(void) {
unsigned i;
GUI_Init();
GUI_UC_SetEncodeUTF8();
GUI_SetFont(&GUI_FontFont);
GUI_DispStringAt(_apText[0], 70, 40);
GUI_DispStringAt(_apText[1], 70, 90);
while (1) {
GUI_Delay(150);
}
}
运行结果如下图,其中字体都存在边框的原因是emWin官方提供的库文件包中的工具是Demo版的,使用有些限制,如果需要无边框的当然要收费的,有需要的可以购买,另外emWin官方和ST合作开发的一个版本STemWin里面的小工具功能很齐全(如FontCvtST.exe),生成的字体库没有边框,可以在ST官网下载,在本文最后都会提供下载链接。
注意:上例程中的“中华好少年”编码是通过U2C.exe文件编码转换得到的,转换过程如下图,首先新建文本文件输入字库对应的文本如“中华好少年”,选择UTF-8编码保存,再利用U2C.exe小程序进行转换就可以得到相应的C文件,里面有文本的编码字符串
----------------------------------至此整个中文显示教程结束,下面是相关工具或软件包的下载链接--------------------------------------
1、emWin官方下载链接:https://www.segger.com/downloads/emwin/
2、STemWin官方下载链接(需登录):https://www.st.com/en/embedded-software/stemwin.html
3、emWin(V5.48、V5.30、STemWin1.2.0以及以上各个版本库单独的工具小程序):链接:https://pan.baidu.com/s/1i4e_P7PS1BoWowonfbpeFA 提取码:be72