爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 2442|回复: 50
收起左侧

[分享] 解决SX1的口口,目前最好的折中方法!

[复制链接]
发表于 2005-9-21 22:11:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

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 编辑 ]

字体驱动6600.rar

26.37 KB, 下载次数: 115

修改后的FontRouter.rar

909 Bytes, 下载次数: 81

发表于 2005-9-21 22:13:02 | 显示全部楼层
向中毒的兄弟们致敬~~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-21 22:16:17 | 显示全部楼层
原帖由 不过马路的鸡 于 2005-9-21 22:13 发表
向中毒的兄弟们致敬~~~

多谢!!!
回复 支持 反对

使用道具 举报

发表于 2005-9-21 22:33:20 | 显示全部楼层
谢谢............
回复 支持 反对

使用道具 举报

发表于 2005-9-22 00:03:41 | 显示全部楼层
相见恨晚啊!

狂顶!
回复 支持 反对

使用道具 举报

发表于 2005-9-22 00:24:34 | 显示全部楼层
不错,分享精神可敬!
回复 支持 反对

使用道具 举报

发表于 2005-9-22 02:02:13 | 显示全部楼层
支持。。。。。
回复 支持 反对

使用道具 举报

发表于 2005-9-22 02:21:45 | 显示全部楼层
显示口口的软件就那几个,我都没装
回复 支持 反对

使用道具 举报

发表于 2005-9-22 02:31:51 | 显示全部楼层
已试,好用。备用~
就是11x12_latin.gdr字体显示的效果有点差,不知道有没有好点的
回复 支持 反对

使用道具 举报

发表于 2005-9-22 07:55:19 | 显示全部楼层
楼主看看这个
讨论有关不用外挂字体实现中文完美显示,利用字体映射……
http://mobile.0110.cn/viewthread ... 1&highlight=%2B

没成功阿,还是用了外挂字体

[ 本帖最后由 segalgx 于 2005-9-22 08:08 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2005-9-22 07:58:43 | 显示全部楼层
我现在把qd的字体(11x12_latin.gdr,15x16_latin.gdr)刷到A盘了,屏蔽掉Z盘的字体
;禁止系统加载的字体:(每行限100字符)
SystemBypass=Z:\System\Fonts\apac_bs_12.gdr
SystemBypass=Z:\System\Fonts\apac_bs_16.gdr
SystemBypass=Z:\System\Fonts\CalcEur.gdr
SystemBypass=Z:\System\Fonts\BrowserEur.gdr
;禁止FontRouter加载的字体:(每行限100字符)
SystemOnly=Z:\System\Fonts\apac_bs_12.gdr
SystemOnly=Z:\System\Fonts\apac_bs_16.gdr
SystemOnly=Z:\System\Fonts\CalcEur.gdr
SystemOnly=Z:\System\Fonts\BrowserEur.gdr
回复 支持 反对

使用道具 举报

发表于 2005-9-22 08:06:43 | 显示全部楼层
转贴一下:

字体浏览FontViewer V1.0简体中文版 by bwo的深蓝色誓言

1、软件说明:

    浏览系统中已经安装的字体以及实时显示字体样式,可以载入未加载的字体,也可以从内存中卸载任何已经加载的字体。

2、安装方法:   

    A、通过蓝牙或读卡器复制到您的手机直接安装。
    B、通过程序管理直接删除就可以了
   
3、使用说明:

    载入内存:加载存放于E:\system\fonts\或者E:\system\MyFonts没有加载的字体,但是字体必须被命名为Nusaus2.gdr(在C盘MyFonts里)、Dwarf.gdr(在E盘fonts里)
    从内存卸载:卸载选定的已经加载的字体。
    如果要重新加载字体,重新启动手机就可以了。
    这是个非常实用的功能,在删除字体的时候非常有用。

4、汉化说明:

    本软件实现完美汉化。

5、版权说明

    本软件由BWO汉化组汉化制作完成,汉化版权属于BWO汉化组及深蓝色誓言所有。
    您可适度传播此汉化软件,但在未经BWO汉化组及深蓝色誓言许可的情况下,请勿修改软件或将用于其它用途。
    特别声明:本汉化版软件包含的所有程序资源所对应的原始外文版均取自互联网,尚未经其版权所有者及其他相关公司正式授权。本汉化程序不保证能兼容所有的手机硬件和同机安装的任何软件,您必须自行担负所有可能因使用本程序而发生的风险!
    如果您要转贴本软件以及图形、文字资料,请注明出处:BWO中文网汉化组 深蓝色誓言 汉化作品

字体浏览FontViewer V1.0.sis

10.86 KB, 下载次数: 12

回复 支持 反对

使用道具 举报

发表于 2005-9-22 08:32:28 | 显示全部楼层

能否将安装步骤说详细点!

能否将安装步骤说详细点!
回复 支持 反对

使用道具 举报

发表于 2005-9-22 08:36:17 | 显示全部楼层
都有哪些软件是显示"口口"的,列一下,说不定有别的解决方案。

我曾经让WibCapture 0110汉化版在我的大S上正常显示
我也不知该软在各位的机器上是否能正常显示?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-22 09:22:50 | 显示全部楼层
原帖由 segalgx 于 2005-9-22 07:58 发表
我现在把qd的字体(11x12_latin.gdr,15x16_latin.gdr)刷到A盘了,屏蔽掉Z盘的字体
;禁止系统加载的字体:(每行限100字符)
SystemBypass=Z:\System\Fonts\apac_bs_12.gdr
SystemBypass=Z:\System\Fonts\apa ...

只要知道SX1的字体名称,一切就会迎刃而解.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-22 09:27:33 | 显示全部楼层
原帖由 segalgx 于 2005-9-22 08:06 发表
转贴一下:

字体浏览FontViewer V1.0简体中文版 by bwo的深蓝色誓言

1、软件说明:

    浏览系统中已经安装的字体以及实时显示字体样式,可以载入未加载的字体,也可以从内存中卸载任何已经加载的字体。 ...

这个东西前些日子就试过,繁体版有了很长时间了,对SX1用处不大.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-22 09:46:10 | 显示全部楼层
刚用APPMAN看了一下调用文档,发现字体Ceurope.gdr被加载了两次,已经修正,会节省20K的内存。影响不大。
不好意思,修正后数字变小了,又该回来了.

[ 本帖最后由 yanli729 于 2005-9-22 11:18 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2005-9-22 10:02:51 | 显示全部楼层
原帖由 yanli729 于 2005-9-22 09:22 发表

只要知道SX1的字体名称,一切就会迎刃而解.



我忘了在什么地方看到的:

用WinHex、UE等十六位编辑器直接打开gdr文件,搜索0F00,搜到的第二、三个的位置时就是字体名称了。

可是我看到大S字体的名称就是CombinedChinesePlain

怀疑大S跟N机的调用字体方法有所不同。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-22 10:21:08 | 显示全部楼层

转贴

FontRouter.ini解释
1、SystemBypass=文件名
文件名表示禁止系统加载的GDR文件。作用是在中文机上,屏蔽对原机字库的读取,节省内存。
2、字体名=字体名1,字体名2[,n]
字体名是程序请求的字体名。字体名1表示程序请求那些“FontRouter认为是英文”的字符的时候调用的字体。话虽然这么说,但我实际使用的时候发现字体名1只能是在系统自己加载,并且没有被FontRouter的SystemBypass行屏蔽掉的字体。所以不能实现中英文分别使用不同人制作的第三方字体。字体名2表示程序请求那些“FontRouter认为不是英文”的字符的时候调用的字体。这个名字应该是第三方字体的字体名。比如我的字体的Uni12_S、玩玩123前辈的字体的simsun12等。n表示将字体2里的字符向上偏移多少。但是实际使用的时候发现,这个偏移量的单位似乎并不精确的是像素。有的时候调整了1没有什么变化,有的时候变化特别大。
比如
LatinPlain12=LatinPlain12,Uni12_S
表示
系统调用LatinPlain12字体的话,英文字符用原机的LatinPlain12,非英文字符用Uni12_S
比如
LatinBold13=LatinBold13,Uni12_S,1
表示
系统调用LatinPlain12字体的话,英文字符用原机的LatinBold13,非英文字符用Uni12_S,并且向上飘移1
比如
LatinBold17=,Uni16_S
表示系统调用LatinBold17字体的话,无论什么字符,都用Uni16_S。
这样的解释应该很清楚了。
回复 支持 反对

使用道具 举报

发表于 2005-9-22 11:09:05 | 显示全部楼层
为什么不用apacher或者mbmtool做个z盘的补丁,替换z盘的字库呢?那岂不是更好?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2025-8-2 01:19

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表