- 积分
- 101
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
经过数天的研究,对SX1应用不装字库的字体驱动方法决定放弃。其实距离实现只有一步之遥。那就是不知道SX1的字体名称。
先把字体驱动的原理说一下:
下面引用 OASISFENG 大侠的话来解释字体驱动文件,所谓 Open Font System ,通俗的讲就是 Symbian OS 下的一种字体驱动接口,它允许开发者通过程序代码对字体的显示予以控制,设计出一个高度开放的字体。借助于 Open Font System ,我们可以设计一个“虚拟字体”驱动,它只负责辨别接收到的 Unicode 是中文还是英文,然后调用相应的 Native Font (点阵字体)即可实现中英文的独立映射。克服了 .gdr 字体的主要弊端,以前字体显示总是具有其弊端,是因为各位 DX 研究字体的过程中,都是从 .gdr 文件入手,这样势必受到以下一个主要的限制:
系统在同一时间只能使用一种字体,所以中文和英文的点阵信息必须放在同一字体文件中。
我们知道英文字体因为字母不多,所需的点阵信息较少,所以 Symbian OS 系统本身设计了多套英文字体,用于不同的显示场合。但由于容量的限制,中文就不能做到一一替换了。目前的解决方案都是采用 1 ~ 3 套中文字体分别替换系统中的多组英文字体,以达到同时显示中英文的目的。而这种方法带来的一个直接后果便是:固定大小的中文字体无法满足原来不同大小显示区域的需要,以至于不是出现剃头剃尾,便是显得过小。
现在比较流行的字体驱动是FontRouter Configuration File for ROM Fonts v1.32
,实现从Z盘读取字体文件,并自动修改字体尺寸,以适应显示需要,解决绝大部分的口口问题。并且不需要在C或E盘安装字库。下面是字体驱动的内容,大家也可以从中总结出原理。
××××××××××××××××××××××××××××××××××××
;FontRouter Configuration File for ROM Fonts v1.32
;以“;”开始的行为注释行
;注意,本文件中非注释行须严格按照要求书写,不接受任何多余的空格,允许有空行。
[Global]
Enable=1
Log=0
;字体高度自动伸展:当中文字体高度大于请求的英文字体高度时,自动扩展实际字体高度。
FontHeightExp=0
;禁止系统加载的字体:(每行限100字符)
SystemBypass=Z:\System\Fonts\11x12_latin.gdr
SystemBypass=Z:\System\Fonts\15x16_latin.gdr
SystemBypass=Z:\System\Fonts\BrowserEur.gdr
;禁止FontRouter加载的字体:(每行限100字符)
SystemOnly=Z:\System\Fonts\CalcEur.gdr
[FontMap]
;
;自定义字体映射
;
; 请求字体=[[英文字体],中文字体[,中文偏移修正值]]
;
; “英文字体”为空时,表示只使用“中文字体”;“英文字体”和“中文字体”均为空时,表示忽略该“请求字体”。
; “中文偏移修正值”可调整中文显示时的默认垂直位置,值增大时文字上移。缺省由FontRouter自动计算。
;
; 其中“英文字体”和“中文字体”可以表示为:字体名[@高度]
; 指定高度可以在“字体名”不存在时匹配“高度”最合适的字体。
;
LatinBold12=LatinBold12,CombinedChinesePlain12
LatinBold13=LatinBold13,CombinedChinesePlain12
LatinBold17=LatinBold17,CombinedChinesePlain16
LatinBold19=LatinBold19,CombinedChinesePlain16
LatinPlain12=LatinPlain12,CombinedChinesePlain12
CombinedChinesePlain12=,CombinedChinesePlain12
CombinedChinesePlain16=,CombinedChinesePlain16
Aco13=
Aco21=
Acalc21=
Acb14=
Acb30=
Acp5=
×××××××××××××××××××××××××××××××××××
然而可惜的是SX1的中文字体并非CombinedChinesePlain,到底是什么东东还不得而知。
SX1在Z盘的FONTS文件夹中共有5个文件
apac_bs_12.gdr(中文小子体)
apac_bs_16.gdr(中文大字体)
Browsereur.gdr
Ceurope.gdr
CalcEur.gdr
现在有一个折中的方法,就是安装字体驱动和诺机的字库,考虑到口口问题一般只出现在小字体显示上,所以字库文件只安装诺机的小字体11x12_latin.gdr
然后修改字体驱动文件,禁止系统加载Z盘的两个中文字体,禁止驱动文件加载Z盘小字体。而只用字体驱动加载E盘的诺机小字体和SX1的Z盘大字体。
这样就避免了字库文档的重复调用,有效减小内存消耗。
下面是修改过的字体驱动
×××××××××××××××××××××××××××××××
;FontRouter Configuration File for QD Fonts (www.3g365.com yuqiaolong QD 11x12 + QD 15x16) v1.3
;以“;”开始的行为注释行
;注意,本文件中非注释行须严格按照要求书写,不接受任何多余的空格,允许有空行。
[Global]
Enable=1
Log=0
;字体高度自动伸展:当中文字体高度大于请求的英文字体高度时,自动扩展实际字体高度。
FontHeightExp=1
;禁止系统加载的字体:(每行限100字符)
SystemBypass=Z:\System\Fonts\apac_bs_12.gdr
SystemBypass=Z:\System\Fonts\apac_bs_16.gdr
SystemBypass=Z:\System\Fonts\BrowserEur.gdr
;禁止FontRouter加载的字体:(每行限100字符)
SystemOnly=Z:\System\Fonts\CalcEur.gdr
SystemOnly=Z:\System\Fonts\apac_bs_12.gdr
[FontMap]
;
;自定义字体映射
;
; 请求字体=[[英文字体],中文字体[,中文偏移修正值]]
;
; “英文字体”为空时,表示只使用“中文字体”;“英文字体”和“中文字体”均为空时,表示忽略该“请求字体”。
; “中文偏移修正值”可调整中文显示时的默认垂直位置,值增大时文字上移。缺省由FontRouter自动计算。
;
; 其中“英文字体”和“中文字体”可以表示为:字体名[@高度]
; 指定高度可以在“字体名”不存在时匹配“高度”最合适的字体。
;
LatinBold12=LatinBold12,LatinBold13
LatinPlain12=LatinPlain12,LatinBold13
CombinedChinesePlain12=,LatinBold13
Aco13=
Aco21=
Acalc21=
Acb14=
Acb30=
Acp5=
×××××××××××××××××××××××××××××××××
经测试,可以解决大部分的口口问题,开机内存在7.9M以上
安装方法:首先安装字体驱动6600,然后删掉E:\System\Fonts\Chinese下的字体文件15x16_latin.gdr
并用修改过的FontRouter.ini文件覆盖原文件,重启手机。
[ 本帖最后由 yanli729 于 2005-9-22 11:20 编辑 ] |
|