荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: cbi@bbs.pku.edu.cn (土豆|生活也许就是一种煎熬), 信区: Linux
标  题: 初探Debian的字体管理 zz
发信站: 北大未名站 (Wed Nov 12 22:53:21 2003)
转信站: SZU!news.ccie.net.cn!news.happynet.org!PKU

Linux下做汉化经常被字体搞得晕乎乎的,一般都是跟着帖子依葫芦画瓢,也不知道为什
么,一旦出问题就傻眼了,这种感觉实在不好,这段时间就硬着头皮看了点E文和以前兄
弟们的文章,也不知道对不对,就斗胆做个总结后拿来跟兄弟们讨论了,不许笑话啊:-)
希望能抛砖引玉,让我们对字体有个彻底的了解。

1、要构造一个可用的字体需要a)字体库,比如我们经常用到的.ttf或.ttc文件,当然还
有其它格式的;b)有关该字体的配制文件,也就是fonts.dir、fonts.scale和
fonts.alias,每个字体目录都是由这三个文件及文件中所描述到的字体文件组成;c)渲
染该字体的后台引擎,如xtt、freetype、type1和speedo等;d)最后要告诉X服务器可用
的字体目录,这里有两种方式,一是直接写在XF86Config-4文件的Files段,另外如果是
使用xfs服务器,则要写在/etc/X11/fs/config文件的catalogue段。

2、对于字体库现在大家用得比较多的是微软的simsun.ttc和RedHat8中自带的
zysong.ttc,如果大家的Windows是正版的,当然可以用simsun了,但如果不是,建议还
是用zysong,既然有Linux了,我们就不应再用盗版软件了,我一直觉得那很不光彩。

3、fonts.dir和fonts.scale的语法,这两个文件一模一样,我到现在还没搞清为什么?
言归正传,它们的语法具体如下(这是iceblood兄的原文,写得很好,我就照抄了:-)
fonts.dir的第一行一般是告诉Xwindows一共有多少行字体信息,从第二行开始起就是正式
的字体设置信息了,一般分两部分,第一部分为参数部分,是配合第二部分来定义的,现在分
析下面一行字体信息给大家一个参考:
ab=y:ai=-0.2:sw=1:bw=0.5:simsun.ttf-misc-simsun-bold-ro-normal--0-0-0-0-p-0-gb
18030.2000-0
ab=y 启用粗体字,默认ab=n 既当没有设置的时候是不启用粗体的,配合bold同时使用.
ai=-0.4 左倾斜一个字的0.4的宽度,如果ai=0.4就是右倾斜一个字的0.4宽度,默认ai=0.
请配合o或者i同时使用,由于这里是负的所以这里还需要配合r使用,所以后面是ro.
sw=1 字体宽度为1,默认为0.这个一般配合后面的p使用,使用p的时候,由于占用的是字符
宽度,所以可能显示出来的字叠在一起,加上这个后就会把字和字的距离拉开.
bw=0.5 字体间距离为0.5个字的宽度,默认为0,假设你要使用斜体,由于斜体占的宽度比较
宽,比如上面的bw=-0.4也就是说字体的上边部分左移0.4个字的宽度,那么我们为了看字的
方便,需要吧字体宽度为之为bw=0.5这样有0.1之间的距离,不会导致字和字之间看起来重
叠.
simsun.ttf 字体文件名,这个不用解释了.
misc 字体制造商
simsun 字体明称,这个我们可以随便修改,比如改成song,那么当我们在Xwindows里设置字
体的时候找song字体就行了.
bold 粗体,这个还有一个选项medium(普通)假如使用了bold请同时把ab=y加上才起作用.
ro 反斜,其中r(Roman罗马体),i(Italic斜体),o(Oblique倾斜)当r和其他两个一起使用的
时候为反斜.当使用i,o,ro,ri等的时候,请使用ai=n,其中n=0.2,-0.2,0.4,-0.4等.如果不
设置ai=n,那么这些也都失去效果.
normal 字符集宽度为标准, 此外还有 condensed(压缩), narrow(窄), double(两倍宽)
0 像素大小,这个字体服务器会自动修改,所以一般为0.
0 点大小,同上.
0 X轴解析度,同上.
0 Y轴解析度,同上.
c 字间距为c,即一个字的距离,另外还有p,即字符距离
0 平均宽度,这个字体服务器会自动修改,所以一般为0.
asccii-0 字符集为asccii-0,其它还可以有很多,比如:gb2312.1980-0,gb18030.2000-1,g
b18030.2000-0,gbk-0等

4、字体引擎xtt和freetype、type1不能同时使用,她们都是渲染truetype字体的引擎但
用的方法不一样。对于simsun字体用xtt渲染效果最好,而zysong则要用freetype。但我
碰到一个奇怪的问题,在Debian下用freetype渲染的zysong,字体效果不如RH8里的。

5、/etc/pango/pangox.aliases这个文件好像是用来定义系统中使用的sans、serif和
monospace字体和真实字体的对应关系。

6、Debian通过引入defoma来简化字体管理,下面以为系统增加zysong.ttc为例来说明。
#defoma-hints truetype /usr/share/fonts/TrueType/zysong.ttc > zysong.hints
上面这条命令会启动一个交互的方式引导我们生成关于zysong.ttc的字体设定信息,并将
该信息存在zysong.hints中,其中truetype告诉程序要配置的字体类型。
#defoma-font reregister-all zysong.hints
根据zysong.hints中的设定自动生成字体配置信息并存入/var/lib/defoma/x-ttcidfont-
conf.d/dirs/TrueType目录中的fonts.alias、fonts.dir、fonts.scale,也就是通过它
我们不用再手动设置这三个文件了,然后她会在该目录下生成一个到zysong.ttc的链接。
另外她还会自动更改pangox.aliases中的内容,如果还有其它程序设置为让defoma自动管
理字体,她也会自动为其更新相应的内容,而这需要该程序提供相应的脚本,并向
defoma注册。而要撤消一个字体则只需执行下面这个命令
#defoma-font unreregister-all zysong.hints
另外你必须将上面那个defoma用来存放字体信息的目录告诉Xserver。
因此总的来说defoma为我们简化了上面提到的1.b和5这两步。
另外,为了让defoma生成hints文件,你还要安装相应的脚本文件;而为了自动
fonts.dir等字体配置信息文件,你要安装x-ttcidfont-conf包,同时要告诉她你是使用
xtt或freetype来渲染字体。

7、对于gtk1.x的程序,如xmms和mozilla其界面的默认字体在/etc/gtk/gtkrc.zh_CN文件
中定义,一般如下:
style "gtk-default-zh-cn" {
fontset = "-misc-simsun-medium-r-normal--16-*-*-*-*-*-iso8859-1,\
-misc-simsun-medium-r-normal--16-*-*-*-*-*-gb2312.1980-0,*-r-*"
}
class "GtkWidget" style "gtk-default-zh-cn"
对于gtk2.x的程序直接在桌面首选项的字体中定义。

8、如果使用freetype的渲染引擎,则在mozilla的安装设置中要记得打开对freetype的支
持,否则无法在网页中使用安装的字体。

9、KDE的字体设置,请教兄弟们

10、WMaker的字体设置,同上

11、XFCE的字体设置,同上

12、Enlightment的字体设置,同上

--


  ╭─╮                                                          ╭-e
  ├─┼-                                                         (╲ ╲
  § _∕ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ╰﹨\ ╲
  ∕ ﹨       抱歉!我是个艺术家,所以凝视美女是我的工作!          ∕

※ 来源:·北大未名站 bbs.pku.edu.cn·[FROM: 162.105.40.16]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店