WinCE核心裁減(中文字型)及字型檔和核心的分離

2021-06-02 05:45:46 字數 3254 閱讀 9354

2009-10-19 11:52:55

|  分類:

預設分類

|  標籤:|字型大小

大中小訂閱

wince核心裁減(中文字型)及字型檔和核心的分離***

每次定製中文系統時,nk總是比英文大10m左右,啟動時在bootloader中將核心copy到記憶體時也花時間,同時也占用了很多記憶體,留給系統和應用的記憶體就少了10m左右,真是浪費呀,看到都心痛!本人研究了一下,同時也參考了網上的資料,現總結如下,如何減少中文字庫大小和將字型檔放到外部存貯器上。核心思想是將預設選擇的中文字型simsun & nsimsun (sysgen_fonts_simsun)替換成simsun & nsimsun (subset 2_50) (sysgen_fonts_simsun_2_50)達到體積的縮小。在登錄檔中[hkey_local_machine\software \microsoft\fontpath]和[hkey_local_machine\software\microsoft\fontlink \systemlink]改變字型檔simsun.ac3或simsun.ttc的存貯位置。

一、減少中文字庫大小

1.先開啟目標的工程檔案,單擊「platform」選單,再單擊「settings…」,執行」clear」 ,

locales:將」英文(美國)」「中文(中國)」打勾

default languare:選擇「中文(中國)」

完成第1步後,工程中採用預設的是新宋字型

2,回到catalog,選擇「core os」—>「international」—>「locale spectific support」

—> 「chinese[simplified]」

▲  agfa ac3 font compression:使用ac3對字型檔進行壓縮,若cpu有300hz以上,建議選上;這個可以根據自己的需要選還是不選.

▲  simsun & nsimsun (subset 2_50):字型大小是3m左右,wince選擇subset 2_50是最合適的,所以用(subset 2_50)中文字型替換原來的中文字型,選擇simsun & nsimsun (subset 2_50),按右鍵新增該元件即可,這樣就會把原來的字型替換掉。這樣對中文顯示又沒有影響又達到核心**的效果。必須選上;

補充:在沒有壓縮字型的情況來,預設選擇的新宋字型檔大小是10m多,檔案為simsun.ttc,若選擇subset 2_50版本,檔案為simsun_2_50.ttc,字型大小是將近3m,也是對wince體積進行裁剪關鍵所在。當然如果選擇了ac3對字型檔進行壓縮,哪麼體積還可以進一步縮小,壓縮後的檔案為simsun_2_50.ac3,體積就只有不到2m。

字型檔所在目錄:d:\wince500\public\common\oak\files

▲  gb18030 data converter:漢字編碼標準集轉換器,必須選上

3,重新進行sysgen,這樣做出來的系統,既能正常顯示中文,又不用擔心nk體積過大。

二、將字型儲存到外部存貯器上來減少核心的大小

網上有很多介紹將字型儲存到sd卡、flash等來減少核心的大小,但要注意一點就是:在載入顯示驅動前就要載入儲存字型的存貯裝置的驅動,否則中文字型不能載入,系統啟動後顯示框框。將字型儲存到登錄檔儲存的存貯裝置上,因為該存貯裝置驅動很早就載入了。

而我使用的是硬碟,登錄檔需要作如下修改

1、在platform.reg中新增如下

[hkey_local_machine\system\gdi]

"fontlinkmethods"=dword:1

[hkey_local_machine\software\microsoft\fontpath]

"fontpath"="\\hard disk"  ; 字型檔檔案所在目錄

[hkey_local_machine\software\microsoft\fontlink\systemlink]

"tahoma"="\\hard disk\\simsun.ac3,nsimsun" ;我是用的壓縮字型檔,所以為simsun.ac3。

"courier new"="\\hard disk\\simsun.ac3,nsimsun"

"arial"="\\hard disk\\simsun.ac3,nsimsun"

"times new roman"="\\hard disk\\simsun.ac3,nsimsun"

"symbol"="\\hard disk\\simsun.ac3,nsimsun"

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

3、把檔案拷到hard disk中,即可,再啟動就ok了。

ps:

windows embedded ce提供了鏈結字型檔的能力,它可以將乙個或多個字型檔鏈結到另乙個字型檔上,前者稱為被鏈結字型檔,後者稱為基本字型檔。一旦你鏈結了字型檔,你就可以使用被鏈結的字型檔顯示在基本字型檔中不存在的碼字。比如,將日文字庫鏈結到拉丁字型檔,你就可以在使用拉丁字型檔的unicode文字api中顯示日文字元。

= ,

使用字型檔鏈結時,你可以規定乙個或多個unicode字元必須從被鏈結字型中取,即使這些字元也存在於基本字型檔中。要指定被從基本字型檔中忽略的字元,你可以使用hkey_local_machine\software\microsoft\fontlink\skiptable登錄檔鍵,此鍵在作業系統啟動時是唯讀的。

在下面的示例**中,某字元的unicode編碼為005c,雖然tahoma字型檔中包含此碼字,但仍然只使用被鏈結字型檔中的字元。

tahoma=005c, 00a5, 007e, 0391-03c9, 2026, 2116, 221a, 25a0-25ff

[hkey_local_machine\system\gdi]

"fontlinkmethods"=dword:1

[hkey_local_machine\software\microsoft\fontlink\systemlink]

"tahoma"=""

"courier new"=""

"arial"=""

"times new roman"=""

"symbol"=""

[hkey_local_machine\software\microsoft\fontlink\skiptable]

"tahoma"="005c,00a5,007e,0391-03c9,2026,2116,221a,25a0-25ff"                   // 0391-03c9 is greek chars.

"arial"="005c"

"courier new"="005c"

WinCE核心裁減(中文字型)及字型檔

每次定製中文系統時,nk總是比英文大10m左右,啟動時在bootloader中將核心copy到記憶體時也花時間,同時也占用了很多記憶體,留給系統和應用的記憶體就少了10m左右,真是浪費呀,看到都心痛!本人研究了一下,同時也參考了網上的資料,現總結如下,如何減少中文字庫大小和將字型檔放到外部存貯器上。...

WinCE核心裁減(中文字型)及字型檔和核心的分離

每次定製中文系統時,nk總是比英文大10m左右,啟動時在bootloader中將核心copy到記憶體時也花時間,同時也占用了很多記憶體,留給系統和應用的記憶體就少了10m左右,真是浪費呀,看到都心痛!本人研究了一下,同時也參考了網上的資料,現總結如下,如何減少中文字庫大小和將字型檔放到外部存貯器上。...

中文字型引用及壓縮

中文字型引用 如思源雅黑 解決chrome瀏覽器下 font face字型圖示出現鋸齒 要注意不同格式字型引用順序問題 eot svg ttf woff2 woff font face 安裝node.js 再開啟node.js command prompt 測試 node v 有版本號出來即成功 然...