|
Ubuntu 6.06 dapper对中文的支持应该说是一向不错的,包括现在默认安装就包含了scim输入法。然而,一般安装的ubuntu虽然能够显示、输入中文了,但总觉得所显示的中文像歪瓜裂枣,很是别扭。这是很无奈的,也不是linux的错,这是因为现在几乎没有免费的中文字体库来给我们用,大家平时使用习惯了的winxp里面的宋体、还有方正排版系统里面的仿宋体、公文中的方正小标宋等等,这些字体都是商业公司开发出来用在自己的产品中的,是有版权的,所以linux不能拿过来就用。如果你还没有听说过字体有版权的话,上网搜索一下“胡万进”吧,这位老兄就是当年在微软从事字体制作的一位员工,他所制作的字体的版权就是归微软公司所有。我们国家虽然对IT产业非常关注,但是更关注windows,对开源社区和自由软件的支持几乎没有,直到今天也没有投资开发出一套免费的字体供大家使用。不过幸好有怀着共产主义信念的好同志,为我们提供了免费的替代方案,现在我们可以使用圆体美化,还有开源的文泉驿(域名2)可以用。
本文则是参考如何使用xp带的字体来进行中文美化?一文,实践中文字体的安装,并对ubuntu的字体体系更加深入的了解一下,这样以后再安装任何字体就都不怕了。
一、准备字体文件
我一直认为,如果我拥有了一套windows xp的使用权(通过oem方式),那么我就同时拥有了对这份windows产品的只用于我个人的任意使用权,这里面包括了对其中的字体的使用权。所以,本文中将winxp的字体拷贝到linux下使用的做法,应该是没有侵权的。
windows的字体一般存放在c:\windows\fonts目录下,我拷贝到linux下的字体有:
simfang.ttf 仿宋体 simhei.ttf 黑体 simkai.ttf 楷体 simsun.ttf 宋体和新宋体,原文件名simsun.ttc tahoma.ttf tahoma字体 tahomabd.ttf tahoma字体的粗体形式 verdana.ttf verdana字体 verdanab.ttf verdana字体的粗体形式 verdanai.ttf verdana字体的斜体形式 verdanaz.ttf verdana字体的粗体+斜体形式
拷贝过来的字体文件放在了/home/fwolf/tools/fonts目录下。
二、将字体加入到linux的可使用字体中
首先把字体文件链接到存放字体的目录中
cd /usr/share/fonts ln -s /home/fwolf/tools/fonts xpfonts cd xpfonts mkfontscale mkfontdir
这样作和把字体拷贝到/usr/share/fonts的一个目录下的效果是一样的。后面的两个mkfont命令是生成xpfonts目录下所包含的字体的索引信息。然后运行fc-cache命令更新字体缓存:
fc-cache
现在,应该说linux就可以使用这些新装上的中文字体了,看一下openoffic里的截图吧:

其中仿宋体的字体名是FangSong_GB2312,黑体是SimHei,楷体是KaiTi_GB2312,宋体是SimSun,字体名暂时都不是中文的。
三、修改/etc/fonts/fonts.conf的字体渲染顺序
让我们一边修改,一边分析fonts.conf这个文件的内容吧,注意部分注释(<–和–>之间的内容)和无关紧要或者重复的内容我将跳过不再解释。
<?xml version=”1.0″?> 声明这个文件是一个xml文档 <!DOCTYPE fontconfig SYSTEM “fonts.dtd”> xml文档的格式声明(dtd = document type define) <!– /etc/fonts/fonts.conf file to configure system font access –> <fontconfig> xml文件需要的根节点
<!– DO NOT EDIT THIS FILE. IT WILL BE REPLACED WHEN FONTCONFIG IS UPDATED. LOCAL CHANGES BELONG IN ‘local.conf’.
文档中提示不要手工修改fonts.conf,个人的设定可以写入local.conf文件,并且会自动被fonts.conf读入,不过我现在还不知道怎么创建这个文件,等知道了再公布出来吧,现在先拿fonts.conf开刀,反正预先已经作了备份。
<dir>/usr/share/fonts</dir> <dir>/usr/X11R6/lib/X11/fonts/Type1</dir> <dir>/usr/local/share/fonts</dir> <dir>~/.fonts</dir>
所有字体文件存放的位置,其中第一个就是我们刚才放字体文件的目录/usr/share/fonts。
<!– Accept deprecated ‘mono’ alias, replacing it with ‘monospace’ –> <match target=”pattern”> <test qual=”any” name=”family”> <string>mono</string> </test> <edit name=”family” mode=”assign”> <string>monospace</string> </edit> </match>
将本文件中的别名mono替换成全称monospace,这是xml的一个自动替换声明,使用别名的目的应该是为了简化书写或者维持对旧版本的兼容。后面还有几个替换就不再一一介绍了。
<!– Serif faces –> <alias> <family>Bitstream Vera Serif</family> <family>Vera Sans YuanTi</family> <!– added by lifesinger–> <family>Times</family> <family>Times New Roman</family>
Serif字型将要使用的字体顺序。当要显示Serif字型的内容时,就从下面这个列表中选择字体,匹配顺序是自上而下。可以看到已经安装的圆体美化再这里作了修改。如果我们想把宋体作为首选,就在Bitstream Vera Serif字体前面比葫芦画瓢加上一行就可以了。
至于什么是Serif字型,以及Sans-serif字型,可以看一下细说字体 Sans Serif 与 Serif和serif vs sans serif这两篇文章,说明的很详细。我觉得把他们叫做字型或者字族,相对于字体来说,更贴切一些。
下面的Sans-serif faces、Monospace faces段中处理方式相同。
<!– If the font still has no generic name, add sans-serif –> <match target=”pattern”>
又是三个替换,大概意思是如果上面的字体匹配还不成功,就尝试使用sans-serif、serif、monospace的默认字体来替换,最后如果还替换不成功,强制使用sans-serif字体。(不知道这么理解是否正确)
<!– Some Asian fonts misadvertise themselves as monospaced when in fact they are dual-spaced (half and full). This makes FreeType very confused as it forces all widths to match. Undo this magic by disabling the width forcing code –> <match target=”font”> <test name=”family”><string>GulimChe</string></test>
|