emwin字型檔製作及漢字顯示
阿新 • • 發佈:2018-11-25
備註:工具是nxp官方釋放出來的,可以到連結下載:http://download.csdn.net/download/armwind/10103643
最近在研究emwin字型顯示部分,但由於無法看到原始碼,也不知道emwin是如何實現的。也算是看葫蘆畫瓢,記錄下字型檔製作過程。
目前我本地使用的工具集合如下所示,對應emwin5.12,不過除了GUIBuilder.exe需要小更新外,其它都是通用的。可在下面連結地址下載
一、生成完整字型檔
1.安裝setupFontCvt_V318.exe(http://download.csdn.net/download/armwind/10103643
上面我們選擇standard,16bit unicode編碼,然後點選OK2.緊接著彈出下面這個視窗,這裡我選擇宋體,常規,20X20的字型
然後點選確定。3.這個時候彈出的就是包含所有字型檔的編碼介面。如果這個時候直接點選File->sava,則會儲存所有字型檔,這字型檔比較大,大概22M.
這樣儲存的檔案就是我們所有的字型檔了,不過一般嵌入式裝置flash空間有限,無法存放這麼大的字型檔,那麼我們就需要精簡字型檔,只製作我們需要字型字型檔。
二、生成制定字型字型檔(縮小體積)
- 1.緊接著上面的操作,我們需要把所有字型遮蔽掉,操作如下所示:
這裡我們以顯示“科學”為例子,這裡“科”的unicode編碼是79d1,這樣我們就去79D0,如下圖所示,然後偏移為1的地方就是“科”,點選滑鼠右鍵,使能該字。然後”學”也是這樣的操作,最後File->save,就得到“科學”的字型檔了。
提示:這裡我要顯示的字型是“科學”,通過網頁將“科學”轉意成unicode編碼。我是在這個網站轉的http://tool.chinaz.com/tools/unicode.aspx
三、字型檔燒錄進flash顯示
- 1.emwin的的所有字型組成一個單鏈表,這樣就方便查找了。下面是上面的”科學”的字型檔,最後暴露給emwin的就是
GUI_FontFrontSong_20X20
,那這樣的話,我這裡想到一種方案“動態生成字型檔”。即:把所有字型檔燒錄到外部flash中,當需要顯示字時,根據unicode編碼,從flash讀出需要顯示字的字型檔(需要根據unicode編碼計算字型檔偏移),動態生成一個字型檔,設定給emwin。這樣的話就不會暫用太多ram,就是影響了一些效率,不過另外一方面節省了查詢字型檔的時間,應該不會浪費太多時間。目前本地還沒實驗。
GUI_CONST_STORAGE GUI_FONT_PROP GUI_FontFrontSong_20X20_Prop2 = {
0x79D1 /* first character */
,0x79D1 /* last character */
,&GUI_FontFrontSong_20X20_CharInfo[ 1] /* address of first character */
,(GUI_CONST_STORAGE GUI_FONT_PROP *)0 /* pointer to next GUI_FONT_PROP */
};
GUI_CONST_STORAGE GUI_FONT_PROP GUI_FontFrontSong_20X20_Prop1 = {
0x5B66 /* first character */
,0x5B66 /* last character */
,&GUI_FontFrontSong_20X20_CharInfo[ 0] /* address of first character */
,&GUI_FontFrontSong_20X20_Prop2 /* pointer to next GUI_FONT_PROP */
};
GUI_CONST_STORAGE GUI_FONT GUI_FontFrontSong_20X20 = {
GUI_FONTTYPE_PROP /* type of font */
,20 /* height of font */
,20 /* space of font y */
,1 /* magnification x */
,1 /* magnification y */
,{&GUI_FontFrontSong_20X20_Prop1}
,17 /* Baseline */
,9 /* Height of lowercase characters */
,13 /* Height of capital characters */
};