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", "\xe4\xb8\xad\xe5\x8d\x8e\xe5\xa5\xbd\xe5\xb0\x91\xe5\xb9\xb4"//中華好少年
}; 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
