1. 程式人生 > >WINCE簡體中文字型檔裁剪

WINCE簡體中文字型檔裁剪

   更改字型檔檔案元件及相關設定實現對NK進行裁剪(尤其適用中文簡體系統)

通常我們在定製系統的時候會發現中文系統要比英文系統NK大10M左右,由此bootloader將核心copy到記憶體的時間相應變長一些,也導致佔用額外的記憶體空間,其實可以通過選擇不同的字型檔來對NK進行一定的裁剪。

首先我們來看當加入中文簡體語言後系統預設選擇的字型檔案simsun.ttc(10MB)(檔案目錄:*:\WINCE500\PUBLIC\COMMON\OAK\FILES),有了它NK怎麼可能不大呢,再看看其它幾個類似的檔案simsun_2_50.ttc(2.91MB)、simsun_2_50.ac3(1.91MB),如果用這個兩個其中的一個NK就可以小多了,並且對中文顯示沒有影響。

OK,下邊就是我們的工作內容了。

1、settings中設定中文。這個就不多說了。

2、選擇元件:
  在Catalog中,選擇“CoreOS”—>“International”—>“LocaleSpectific Support —>“Chinese[Simplified]”
   SimSun & NSimSun (Subset2_50):新增該元件替換預設的simsun.ttc,這樣至少可以瘦身7MB。

   Agfa AC3 FontCompression:使用AC3對字型檔進行壓縮,若CPU有300MHZ以上,建議新增該元件。新增則使用simsun_2_50.ac3,否則使用simsun_2_50.ttc,又減少了1MB。
   GB18030 DataConverter

:漢字編碼標準集轉換器,必須選上。
上邊的工作都完成了重新sysgen,看一下生成的NK比先前小了很多。

另外,我們可以通過將字型檔檔案儲存到其它儲存器使NK瘦身效果更加明顯。通常我們的WINCE裝置都會有個儲存介質,再怎麼小額外的幾M空間還是會有的,我們就將字型檔檔案儲存在這個儲存介質中。需要注意的是在載入顯示驅動之前就要載入這個儲存器的驅動,否則系統啟動後所有的字都不能正常顯示。

1、在platform.reg中新增如下

[HKEY_LOCAL_MACHINE\SYSTEM\GDI]
   "FontLinkMethods"=dword:1
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FontPath]
   "FontPath"="\\Storage Card"  ; 字型檔檔案所在目錄(我的一個NANDFlash碟符是這個名字,用這個名字的好處是在Visual studio中使用的Emulator有同樣效果)

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FontLink\SystemLink]
     "Tahoma"="\\Storage Card\\simsun.ac3,NSimSun";選擇了壓縮字型檔就用simsun.ac3,否則用simsun.ttc
     "Courier New"="\\Storage Card\\simsun.ac3,NSimSun"
     "Arial"="\\Storage Card\\simsun.ac3,NSimSun"
     "Times New Roman"="\\Storage Card\\simsun.ac3,NSimSun"
     "Symbol"=\\Storage Card\\simsun.ac3,NSimSun

2、在PBWorkspaces相應工程目錄中common.bib檔案中刪掉simsun.ac3或simsun.ttc相關項,確認該檔案不會編到核心中。

3、把字型檔檔案copy到Storage Card中重新燒寫剛make好的NK,再啟動就完成了。

注意,如果bootloader中copy核心不是通過讀取TOC等方式來確定要讀取NK的大小就需要自己更改bootloader的內容,確保copy的大小盡量小且為完整的NK,這樣啟動時間便可以縮短,這也是我們要對NK瘦身的主要目的。