Chinaunix首页 | 论坛 | 博客
  • 博客访问: 520958
  • 博文数量: 174
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 1827
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-15 14:12
文章分类

全部博文(174)

文章存档

2018年(1)

2017年(1)

2013年(3)

2012年(9)

2010年(12)

2009年(5)

2008年(106)

2007年(37)

我的朋友

分类: LINUX

2007-11-28 22:29:30

 了解fonts.dir文件结构

理解fonts.dir有很多好处,比如说解决locale为utf-8时让gtk1使用simsun字体这样的问题,其实wine慢也可以通过添加GBK0的字符集解决问题。花点时间了解一下吧!

我们添加新字体时都会为了让xfs、freetype或者xtt能够使用该字体而用mkfontdir、 mkfontscale或ttmkfdir来生成fonts.dir和fonts.scale,一般fonts.dir和fonts.scale的文件内容是一样的,那么fonts.dir里的内容究竟是怎么样的呢?

fonts.dir第一行一般是告诉字体引擎一共有多少行字体信息,从第二行开始就是正式的字体设置信息了,一般分两部分,第一部分为参数部分,是配合第二部分来定义,现在我们来分析下面一行字体信息:

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.2? 左倾斜一个字的0.2的宽度,如果ai=0.2就是右倾斜一个字的0.2宽度,默认ai=0,请合作o或i同时使用,由于这里是负的所以这里需要配合r使用,所以后面是ro。
sw=1? 字体宽度为1,默认为0。这个一般配合后面的p使用,使用p的时候,由于占用的是字符宽度,所以可能显示出来的字叠在一起,加上这个后就会把字和字的距离分开。
bs=0.5? 字体间距离为0.5个字的宽度,默认为0,假设你要使用斜体,由于斜体占的宽度比较宽,比如上面的bs=0.5这样有0.1之间的距离,不会导致字和字之间看起来重叠。
simsun.ttf? 字体文件名。
misc? 字体制造商。
simsun? 字体名称,这个我们可以随意修改,比如改成song,那么当我们在设置字体的时候找song字体就行了。
bold? 粗体,这个还有一个选项是medium(普通)假如使用了bold请同时加上ab=y才有效。
ro? 反斜,其中r(Roman罗马体),i(Italic斜体),o(Oblique倾斜)当r和其他两个一起使用的时候为反斜。当使用i、ri、o、ro等的时候,请使用ai=n,其中n=0.4、-0.4、0.2、-0.2。如果不设置ai=n,那么这些也都失去了效果。
normal? 字符集宽度为标准,此外还有condensed(压缩),narrow(窄),double(两倍宽)。
0? 像素大小,这个字体服务器会自动修改,所以一般0。
0? 点大小,同上。
0? X轴解析度,同上。
0? Y轴解析度,同上。
p? 字音距为p,即一个字符的距离,另外还有c,即一个字的宽度。
0? 平均宽度,这个字体服务器也会自动修改,所以一般为0。
gb18030.2000-0? 字体集为gb18030.2000-0,其它还有很多,比如:iso8859-1、gb2312.1980-0、gb18030.2000-1、gbk-0、iso10646-1等等,具体可参看字符集相关资料。

现在我们试着来写一个simsun字体gbk-0字符集的fonts.dir。
22? //以下22行为字体设置信息
simsun.ttf -misc-simsun-medium-r-normal--0-0-0-0-p-0-gbk-0? //simsun字符设置,使用p
ai=0.4:sw=1:bw=0.5:simsun.ttf -misc-simsun-medium-i-normal--0-0-0-0-p-0-gbk-0
ai=0.2:sw=1:bw=0.5:simsun.ttf -misc-simsun-medium-o-normal--0-0-0-0-p-0-gbk-0
ai=-0.4:sw=1:bw=0.5:simsun.ttf -misc-simsun-medium-ri-normal--0-0-0-0-p-0-gbk-0
ai=-0.2:sw=1:bw=0.5:simsun.ttf -misc-simsun-medium-ro-normal--0-0-0-0-p-0-gbk-0
ab=y:simsun.ttf -misc-simsun-bold-r-normal--0-0-0-0-p-0-gbk-0
ab=y:sw=1:bw=0.5:simsun.ttf -misc-simsun-bold-r-normal--0-0-0-0-p-0-gbk-0
ab=y:ai=0.4:sw=1:bw=0.5:simsun.ttf -misc-simsun-bold-i-normal--0-0-0-0-p-0-gbk-0
ab=y:ai=0.2:sw=1:bw=0.5:simsun.ttf -misc-simsun-bold-o-normal--0-0-0-0-p-0-gbk-0
ab=y:ai=-0.4:sw=1:bw=0.5:simsun.ttf -misc-simsun-bold-ri-normal--0-0-0-0-p-0-gbk-0
ab=y:ai=-0.2:sw=1:bw=0.5:simsun.ttf -misc-simsun-bold-ro-normal--0-0-0-0-p-0-gbk-0
simsun.ttf -misc-simsun-medium-r-normal--0-0-0-0-c-0-gbk-0? /simsun字设置,使用c
ai=0.4:sw=1:bw=0.5:simsun.ttf -misc-simsun-medium-i-normal--0-0-0-0-c-0-gbk-0
ai=0.2:sw=1:bw=0.5:simsun.ttf -misc-simsun-medium-o-normal--0-0-0-0-c-0-gbk-0
ai=-0.4:sw=1:bw=0.5:simsun.ttf -misc-simsun-medium-ri-normal--0-0-0-0-c-0-gbk-0
ai=-0.2:sw=1:bw=0.5:simsun.ttf -misc-simsun-medium-ro-normal--0-0-0-0-c-0-gbk-0
ab=y:simsun.ttf -misc-simsun-bold-r-normal--0-0-0-0-c-0-gbk-0
ab=y:sw=1:bw=0.5:simsun.ttf -misc-simsun-bold-r-normal--0-0-0-0-c-0-gbk-0
ab=y:ai=0.4:sw=1:bw=0.5:simsun.ttf -misc-simsun-bold-i-normal--0-0-0-0-c-0-gbk-0
ab=y:ai=0.2:sw=1:bw=0.5:simsun.ttf -misc-simsun-bold-o-normal--0-0-0-0-c-0-gbk-0
ab=y:ai=-0.4:sw=1:bw=0.5:simsun.ttf -misc-simsun-bold-ri-normal--0-0-0-0-c-0-gbk-0
ab=y:ai=-0.2:sw=1:bw=0.5:simsun.ttf -misc-simsun-bold-ro-normal--0-0-0-0-c-0-gbk-0

对于其它字符集的定义都大同小异,我们可按此格式再添加simsun字体对其它字符集的支持。

阅读(1178) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~