星期日, 五月 20, 2007

Ubuntu 7.04 字体美化

一:使用STHeiti华文黑体+Lucida Grande(苹果系统标准字体组合)解决方案
1:首先下载 STHeiti华文黑体Lucida Grande,然后把它们解压后复制到/usr/share/fonts/truetype里面。

2:sudo fontconfig-voodoo -f -s zh_CN命令建立连接后,修改language-selector.conf文件。
a:设置中文为SHHeiti华文黑体
找到
<family>Bitstream Vera Serif</family>
在其下面添加一行
<family>STHeiti</family>。

b:设置英文使用Lucida Grande
“系统-首选项-字体”里面选择Lucida Grande字体,大小为10pt。(如果不喜欢Lucida Grande来做英文字体,推荐使用系统自带的Bitstream Vera Serif。)
c:sudo fc-cache -f -v 命令刷新一下字体缓存

3:调整字体渲染效果
按照上面的方法弄出来的字体效果很不理想,一些笔画多的字都重叠到一起了,那么我们就需要调整字体的渲染效果。
a:打开“系统-首选项-字体”面板,在“字体渲染”选项中,RTC选择“最佳形状”,LCD可以选择“次象素平滑”。
b:打开sudo gedit /etc/fonts/fonts.conf文件,加入下面一段:
<match target="font">
<test name="family">
<string>STHeiti</string>
</test>
<edit name="hinting">
<bool>false</bool>
</edit>

4:重启GNOME看效果(Ctrl + Alt + BackSpace)。


注》使用mac上的华文黑体来替换ubuntu中文字型时,英文字体有点模糊(带有毛边),原因是在“系统-首选项-字体”这里关掉了所有字体的微调。
关于字体渲染引擎微调的解释:

Hinting 用来最佳化字型显示的方法。由于屏幕的像素有限,向量字型的缩放需要有更多的考虑, 例如当一条线位在两个像素格子中间时, 该取左边的格子还是右边的格子? 如果这方面的控制没有做好,就常常会出现字型的衬线没有对齐,或是小字歪七扭八的情况。 Hinting 是额外的信息, 它告诉 renderer 该如何处理这些细节的部份,使得向量字在小字的时候能够好看。也因此 Hinting 是非常费时费人力的工作,TrueType 字型很多,但是有良好 Hinting 的字型不多。拙劣的 Hinting 就会让字变得很难看。 如果要拿来看中文的小字的话,目前最好把 hinting 关掉(中文字型大部分把 hinting 关掉会有比较令人高兴的外观,除了新细明体是一定要打开以外)

如果STHeiti(华文黑体)打开微调,很多字都会挤到一堆,相信mac下也关掉了这个字体的微调功能。然而我们使用的英文字体又需要打开微调,才能让文字看起来更圆滑漂亮、没有毛边。所以采用第三步的方法。而不是在“系统-首选项-字体”里关闭微调。

附录:match的一些属性说明
family - String - 字体的名称, 如 Arial, Bitstream Vera Sans…
style - String - 字体的 style, 像是 Regular, Bold, Italic…
spacing - Int - 字体的宽度,Proportional是有不同的宽度, monospace 是单一的宽度。
antialias - Bool - 字体渲染是否采用抗锯齿功能。
hinting - Bool - 渲染引擎是否采用微调 。
autohint - Bool - 决定是否要用 Freetype 自己的 hint 方法来 hint 字型。
rgba - Bool - 决定是否要用 subpixel 的方式来画字。
详情参照Fontconfig配置详解


sudo fontconfig-voodoo -f -s zh_CN
这个命令其实就是根据你指定的参数,将/usr/share/language-selector/fontconfig下面的文件链接到/etc/fonts/下面,比如
代码:
fontconfig-voodoo -S zh_CN
就等于代码:
sudo ln -sf /usr/share/language-selector/fontconfig/zh_CN /etc/fonts/language-selector.conf

再看看/etc/fonts/fonts.conf有这么一段
代码:

<!-- Load local ubuntu-specific language custom file -->
<include ignore_missing="yes">language-selector.conf</include>

fontconfig就会将选择语言的配置读取到了,自然STHeiti就发挥作用了

Ubuntu 7.10 黑体解决方案