为了启动时在bootloader中将内核Copy到内存时也花时间,同时也占用了很多内存。本人研究了一下,同时也参考了网上的资料,现总结如下,如何减少中文字库大小和将字库放到外部存贮器上。思想是将默认选择的中文字体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:选择“中文(中国)”
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),按右键添加该组件即可,这样就会把原来的字体替换掉。这样对中文显示又没有影响又达到内核瘦身的效果。必须选上;
▲ GB18030 Data Converter:汉字编码标准集转换器,必须选上
3,重新进行Sysgen,这样做出来的系统,既能正常显示中文,又不用担心NK体积过大。
二、将字体保存到外部存贮器上来减少内核的大小
在加载显示驱动前就要加载保存字体的存贮设备的驱动,否则中文字体不能加载,系统启动后显示框框。将字体保存到注册表保存的存贮设备上,因为该存贮设备驱动很早就加载了。
而我使用的是硬盘,注册表需要作如下修改
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中。
Windows Embedded CE提供了链接字库的能力,它可以将一个或多个字库链接到另一个字库上,前者称为被链接字库,后者称为基本字库。一旦你链接了字库,你就可以使用被链接的字库显示在基本字库中不存在的码字。比如,将日文字库链接到拉丁字库,你就可以在使用拉丁字库的UNICODE文本API中显示日文字符。
如果你的设备上启用了字库链接,你可以通过检查注册表的子键HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FontLink\SystemLink来确定被链接的字库到基本字库的映射关系。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。