LinuxSir.Org  
| 网站首页 | 注册账号 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
精华主题  
主题工具
旧 02-11-23, 03:47 第 1 帖
witkey
 
witkey 的头像
 
 
注册会员  
  注册日期: Aug 2002
  帖子: 296
  精华: 5
 

标题: 初探Debian的字体管理


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-gb18030.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,gb18030.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的字体设置,同上









__________________
为Linux的文明,我们一起努力
Jabber: bowill@jabber.org.uk
MSN: happy_star@163.net

此帖于 02-11-23 04:39 被 witkey 编辑.
  witkey 当前离线   回复时引用此帖
旧 02-11-23, 03:59 第 2 帖
doooom
 
doooom 的头像
 
 
diy版离休干部  
  注册日期: Oct 2002
  我的住址: DC
  帖子: 2,954
  精华: 16
 

pango是渲染字体用的底层库,用来支持多国字体, 使用UNICODE编码
可以在/usr/lib & /usr/X11R6/lib/modules/下面找到。







__________________
发行版再好,不如自己做的lfs好。

此帖于 02-11-23 09:08 被 doooom 编辑.
  doooom 当前离线   回复时引用此帖
旧 02-11-23, 04:09 第 3 帖
witkey
 
witkey 的头像
 
 
注册会员  
  注册日期: Aug 2002
  帖子: 296
  精华: 5
 

doooom兄,你给我们讲讲pangox.aliases文件吧,我现在还有点糊涂。
  witkey 当前离线   回复时引用此帖
旧 02-11-23, 04:37 第 4 帖
doooom
 
doooom 的头像
 
 
diy版离休干部  
  注册日期: Oct 2002
  我的住址: DC
  帖子: 2,954
  精华: 16
 

我的总的感觉就是PANGO只是被GTK依赖,真正其作用的只是那些LIB文件。真正的模块里面连ZH_CN都没有的。这个可以去他那个目录下面看(具体路径不确定,手边没LINUX没法查)。我的观点是这个文件对我们汉化没什么作用。而且我看过无数的汉化文章,各种版本的LINUX下的,都没有提到过这个文件。
  doooom 当前离线   回复时引用此帖
旧 02-11-23, 13:31 第 5 帖
atfa
 
atfa 的头像
 
 
LinuxSir  
  注册日期: Jul 2002
  我的住址: 天府之国―成都
  帖子: 1,220
  精华: 17
 

复杂复杂啊……还是我比较懒,全用gtk1的程序







__________________
wellcome to www.linuxidea.org
  atfa 当前离线   回复时引用此帖
旧 02-11-25, 12:00 第 6 帖
witkey
 
witkey 的头像
 
 
注册会员  
  注册日期: Aug 2002
  帖子: 296
  精华: 5
 

另外,defoma的字体管理还有一个前端工具
dfontmgr,不过这家伙胃口真大,居然要了我10M空间,哈哈我是唯美主义者:-)
  witkey 当前离线   回复时引用此帖
旧 03-02-14, 15:11 第 7 帖
LYOO
 
LYOO 的头像
 
 
注册会员  
  注册日期: Jan 2003
  帖子: 782
  精华: 37
 

witkey兄能否写篇——Debian下中文环境的实现思路 的文章?我在这方面的知识又杂又碎,缺乏整体认识,我想也有不少人也和我一样吧?呵呵,请大家帮助!







__________________
http://211.92.88.40/~lyoo/bookmark/bookmark.html
  LYOO 当前离线   回复时引用此帖
旧 03-02-14, 17:12 第 8 帖
fangshun
 
fangshun 的头像
 
 
★版主☆  
  注册日期: Nov 2002
  我的住址: 陕西
  帖子: 661
  精华: 11
 

很专业!
  fangshun 当前离线   回复时引用此帖
旧 03-02-14, 17:47 第 9 帖
surfish
 
surfish 的头像
 
 
注册会员  
  注册日期: Jul 2002
  我的住址: kp
  帖子: 391
  精华: 1
 

好!!! 顶一下!!!







__________________
My Dear bring me a copy of Mac OS X ...
  surfish 当前离线   回复时引用此帖
旧 03-02-14, 22:28 第 10 帖
witkey
 
witkey 的头像
 
 
注册会员  
  注册日期: Aug 2002
  帖子: 296
  精华: 5
 

哈哈,不好意思,其实我是小菜鸟一只,接触Linux也就几个月时间,我是做市场营销的,Linux只是个人爱好,另外我真的不想再用盗版软件了,想想以前因买不起正版而不得不到处去买盗版软件的感觉实在不好,跟作贼似的,咱好歹也是受过高等教育的人,还知道点羞耻,现在好了,Linux已经让我彻底跟Windows说再见了,再也不用当小偷了,向一个合格的知识分子靠近了,真是舒服!!!

啊,扯远了。言归正传,要写一篇比较系统的有关Debian汉化的文章,嘿嘿,对我要求就高了,还得另请高明!不过如果只想对整个框架有个了解,建议看这两篇文章,虽然不是针对Debian的,但原理都一样。
1、http://www-900.ibm.com/developerWork...30/index.shtml
2、http://www-900.ibm.com/developerWork...t1/index.shtml
  witkey 当前离线   回复时引用此帖
旧 03-02-14, 22:33 第 11 帖
witkey
 
witkey 的头像
 
 
注册会员  
  注册日期: Aug 2002
  帖子: 296
  精华: 5
 

另外,现在最新的Debian字体管理已经都改用XFT2和fontconfig了,因此上面介绍的有些东西已经过时了,如defoma可能以后就不怎么需要了。

新的字体管理配置都在/etc/fonts/fonts.conf文件中,比以前更简单了,大家可以看看帮助文件。
  witkey 当前离线   回复时引用此帖
旧 03-02-14, 22:57 第 12 帖
carlos
 
 
 
★☆临时★退役☆版主★☆  
  注册日期: Sep 2002
  我的住址: NZ
  帖子: 7,719
  精华: 24
 

现在也只有gnome2.2跟kde3.1的软件用xft2和fontconfig
defoma对于大部份基于gtk1和X的软件还是很有用的
关于用defoma安装中文字体的文章在一年半前就发表在摩托学园里了
就是这里 -- http://moto.chuany.net/







__________________
Aoccdrnig to a rscheearch at an Elingsh uinervtisy,
it deosn't mttaer in waht oredr the ltteers in a wrod are,
the olny iprmoetnt tihng is taht frist and lsat ltteer is at the rghit pclae.
  carlos 当前离线   回复时引用此帖
旧 03-02-15, 13:28 第 13 帖
LYOO
 
LYOO 的头像
 
 
注册会员  
  注册日期: Jan 2003
  帖子: 782
  精华: 37
 

好文章!正是我想看的,非常感谢!

moto.chuany.net也很不错,不过论坛好象比较冷清,不过好文章不少...
  LYOO 当前离线   回复时引用此帖
旧 05-05-28, 19:58 第 14 帖
janboe
 
janboe 的头像
 
 
注册会员  
  注册日期: Jul 2003
  帖子: 2
  精华: 0
 

中易的字体也不是免费的,请大家不要在为取得授权的情况下使用。
  janboe 当前离线   回复时引用此帖
旧 05-05-28, 20:42 第 15 帖
jhuangjiahua
 
jhuangjiahua 的头像
 
 
★☆版★主☆★  
  注册日期: Apr 2004
  我的住址: 深空
  帖子: 9,502
  精华: 19
 

过时的帖子 , 拜托不要顶上来了

现在主流是 fontconfig + xft

帖子内容不再适用了







__________________
-
每日抽一刻钟解答 ML 中初学者的问题,
每周抽两小时整理新学知识,发表体验 Blog/Wiki/mail 分享出去,
每周至少抽四个小时来翻译自个儿喜欢的自由软件的文档,
每月至少抽八小时编程,推进自个儿的项目,
每年至少参加一次自由软件的活动,传播自由软件思想,发展一名自由人…………

只要我们每个人都坚持下去!
10年!就可以改变中国软件的整体风貌!
          ── woodpecker.org.cn

───────────────────
linux.hiweed.com  ubuntu.org.cn  sf.net/projects/pycds
  jhuangjiahua 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 05:54


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2010, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2009, LinuxSir.Org