【转】Debian 中文字体美化

原文连接:http://edyfox.codecarver.org/html/debian_testing_chinese.html

中文字体美化是个很讨厌的事情,无数初学者在这里面浪费了无数时间,做了无数没有意义的事情。但这也是不得不做的,我把 Debian/Ubuntu 所需要的中文字体美化操作步骤详细记录在这里,希望能节约大家一部分时间。

首先,我们的字体美化依赖 Droid 系列字体,因此我们首先安装这个软件包: ttf-droid

有了这个字体,对于日常工作和生活而言已经非常足够了。如果你还需要更多中文字体的话,推荐可以安装“文泉驿正黑”,“文泉驿点阵宋体”等。文泉驿的安装包已经进入了 Debian/Ubuntu,直接安装 ttf-wqy-zenhei 就可以了。如果想直接使用点阵宋体的话,可以安装 xfonts-wqy。另外,还可以通过 ttf-wqy-microhei 安装文泉驿微米黑,那是一个 Droid 系列字体衍生出来的字体,效果也不错。

除了文泉驿系列字体外,比较流行的免费中文字体还有文鼎提供的楷体和上海宋,包名分别是: ttf-arphic-ukaittf-arphic-uming。把这些字体都装上之后,应该就已经具备一个基本能用的中文环境了。

2 修改字体配置文件

和若干年前比起来,目前 Debian/Ubuntu 默认的字体配置效果已经非常好了,如果觉得已经满意了的话,完全就可以使用默认配置,不需要再做什么额外设置。如果想获得更好一些的效果的话,可以参考以下滇狐自己的字体配置文件。将以下内容写到存放到你的家目录下,命名为 .fonts.conf,就可以了。

<?xmlversion='1.0'encoding='utf-8'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<alias>
<family>serif</family>
<prefer>
<family>DejaVu Serif</family>
<family>Bitstream Vera Serif</family>
<family>Evermore Song</family>
<family>WenQuanYi Bitmap Song</family>
<family>AR PL UMing CN</family>
<family>AR PL ShanHeiSun Uni</family>
<family>Droid Sans Fallback</family>
<family>WenQuanYi Micro Hei</family>
<family>WenQuanYi Zen Hei</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>DejaVu Sans</family>
<family>Bitstream Vera Sans</family>
<family>Evermore Song</family>
<family>Droid Sans Fallback</family>
<family>WenQuanYi Micro Hei</family>
<family>WenQuanYi Bitmap Song</family>
<family>WenQuanYi Zen Hei</family>
<family>AR PL UMing CN</family>
<family>AR PL ShanHeiSun Uni</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>DejaVu Sans Mono</family>
<family>Bitstream Vera Sans Mono</family>
<family>Evermore Song</family>
<family>WenQuanYi Micro Hei Mono</family>
<family>WenQuanYi Zen Hei Mono</family>
<family>Droid Sans Fallback</family>
<family>WenQuanYi Bitmap Song</family>
<family>AR PL UMing CN</family>
<family>AR PL ShanHeiSun Uni</family>
</prefer>
</alias>
<!-- Default Alias -->
<alias>
<family>DejaVu Sans</family>
<default>
<family>sans-serif</family>
</default>
</alias>
<!-- Generic font families -->
<matchtarget="pattern">
<testname="family"qual="any">
<string>serif</string>
</test>
<editbinding="strong"mode="prepend"name="family">
<string>DejaVu Serif</string>
</edit>
</match>
<matchtarget="pattern">
<testname="family"qual="any">
<string>sans-serif</string>
</test>
<editbinding="strong"mode="prepend"name="family">
<string>DejaVu Sans</string>
</edit>
</match>
<matchtarget="pattern">
<testname="family"qual="any">
<string>monospace</string>
</test>
<editbinding="strong"mode="prepend"name="family">
<string>DejaVu Sans Mono</string>
</edit>
</match>
<!-- Anti-alias -->
<matchtarget="font">
<editname="embeddedbitmap">
<bool>false</bool>
</edit>
</match>
<!-- WenQuanYi Bitmap Song -->
<selectfont>
<acceptfont>
<pattern>
<pateltname="family">
<string>WenQuanYi Bitmap Song</string>
</patelt>
</pattern>
</acceptfont>
</selectfont>
<matchtarget="pattern">
<testname="family"qual="any">
<string>WenQuanYi Bitmap Song</string>
</test>
<testcompare="less"name="pixelsize"qual="any">
<double>12</double>
</test>
<editmode="assign"name="family">
<string>WenQuanYi Micro Hei</string>
</edit>
</match>
<matchtarget="pattern">
<testname="family"qual="any">
<string>WenQuanYi Bitmap Song</string>
</test>
<testcompare="more"name="pixelsize"qual="any">
<double>16</double>
</test>
<editmode="assign"name="family">
<string>AR PL ShanHeiSun</string>
</edit>
</match>
<!-- Alias -->
<alias>
<family>SimSun</family>
<family>宋体</family>
<accept>
<family>Evermore Song</family>
<family>WenQuanYi Bitmap Song</family>
<family>AR PL ShanHeiSun Uni</family>
</accept>
<default>
<family>serif</family>
</default>
</alias>
<alias>
<family>SimHei</family>
<family>黑体</family>
<accept>
<family>WenQuanYi Micro Hei</family>
<family>WenQuanYi Zen Hei</family>
</accept>
<default>
<family>sans-serif</family>
</default>
</alias>
<alias>
<family>微软雅黑</family>
<family>Microsoft YaHei</family>
<accept>
<family>WenQuanYi Micro Hei</family>
<family>WenQuanYi Zen Hei</family>
</accept>
<default>
<family>sans-serif</family>
</default>
</alias>
<!-- End -->
<matchtarget="font">
<editmode="assign"name="rgba">
<const>rgb</const>
</edit>
</match>
<matchtarget="font">
<editmode="assign"name="hinting">
<bool>true</bool>
</edit>
</match>
<matchtarget="font">
<editmode="assign"name="hintstyle">
<const>hintfull</const>
</edit>
</match>
<matchtarget="font">
<editmode="assign"name="antialias">
<bool>true</bool>
</edit>
</match>
<dir>~/.fonts</dir>
</fontconfig>

  

3 修改桌面环境字体设置

修改完字体配置后,中文的显示效果应该可以上很大一个层次。但是,为了得到更好的效果,我们还需要对具体应用程序里的字体进行更多配置。

3.1 KDE 下的字体配置

滇狐平时只用 KDE 桌面环境,如果你的桌面环境不是 KDE 的话,之后的部分你也许不能直接照着做,请自己摸索,如果有意见或建议想要分享的话,请于滇狐联系。

KDE 下的字体配置很简单,直接到“系统设置”里找到“公共外观和行为”、“应用程序外观”、“字体”,把所有类别的字体都改成“Droid Sans”,等宽字用“Droid Sans Mono”即可。此外,建议启用“圆整字体边角”,并到“配置”对话框中把次像素渲染打开,微调样式改为“完整”,这样可以在液晶显示器下取得最好的效果。

3.2 GNOME 下的字体配置

滇狐并没有“系统纯洁强迫症”,虽然滇狐不用 GNOME,但 GNOME 下的软件,滇狐还是用的。为了让 GNOME 下的软件在 KDE 下不至于太突兀,我们还是需要对 GNOME 下的字体进行一定的配置。

3.2.1 GNOME 字体

在低版本的 GNOME 下,配置字体可以通过 gnome-appearance-properties 进行,运行该配置工具,将所有字体均设成“Droid Sans”,等宽字体设为“Droid Sans Mono”即可,很简单。

在最新版本的 GNOME 下,gnome-appearance-properties 配置工具已经被移除了,所有的配置工作只能通过 gnome-control-center 来完成。但悲剧的是,gnome-control-center 只要检测到你在 KDE 底下,就会拒绝提供配置字体的选项,因此修改 GNOME 程序的字体就只能通过 gconf-editor 进行了。gnome-appearance-properties 里字体配置的各个选项对应的位置分别是:

应用程序字体:/desktop/gnome/interface/font_name

文档字体:/desktop/gnome/interface/document_font_name

桌面字体:/apps/nautilus/preferences/desktop_font

窗口标题字体:/apps/metacity/general/titlebar_font

等宽字体:/desktop/gnome/interface/monospace_font_name

键值的格式是“字体名 空格 尺寸”,例如“Droid Sans 9”。在 KDE 下工作时,GNOME 的桌面和标题栏都是不可见的,因此只需要改应用程序字体、文档字体和等宽字体三项就足够了。

3.2.2 GTK 系统字体

在 KDE 下,gnome-settings-daemon 无法启动运行为 GTK/GNOME 程序提供字体配置信息,有的程序能够直接读取 gconf 下的字体配置信息,但还有很多程序会改为读取主目录下的配置文件获取字体相关的配置,如果读不到的话,就会变成非常丑陋的默认样式。为了避免出现这样的情况,我们需要在主目录下为这些程序创建配置文件。由于不同版本的程序读取的配置文件名都不太一样,为了让尽可能多的程序都能读到正确的配置,我们就多创建几个配置文件。在主目录下创建这几个文件:

.gtkrc

.gtkrc-1.2-gnome2

.gtkrc-2.0

.gtkrc-2.0-kde

文件的内容如下:

include ".gtkrc-2.0-kde4"

然后创建 .gtkrc-2.0-kde4,内容如下:

# This file was written by KDE
# You can edit it in the KDE control center, under "GTK Styles and Fonts"

include "/usr/share/themes/kde44-oxygen-molecule/gtk-2.0/gtkrc"

style "user-font"
{
font_name="Droid Sans"
}
widget_class "*" style "user-font"

gtk-theme-name="kde44-oxygen-molecule"
gtk-font-name="Droid Sans 9"
gtk-xft-antialias = 1
gtk-xft-hinting = 1
gtk-xft-hintstyle = "full"
gtk-xft-rgba = "rgb"
gtk-enable-event-sounds=0

  

注意:开头 include 后面包含的文件和 gtk-theme-name 指定的主题名需要根据你的个人习惯作相应的修改,不要直接照抄我这里的配置。因为首先,我选择的 GTK 主题未必是你喜欢的,其次,我安装的 GTK 主题你未必也安装了,因此务必根据你的个人习惯作相应的修改。

3.3 其它软件

完成以上配置后,整个系统就已经非常适合人类生活了,接下来我们再对部分程序做一些简单的微调。

3.3.1 Konsole 字体

Droid Sans Mono 在 Konsole 下的体验并不好,建议在 Konsole 下还是坚持使用 DejaVu Sans Mono 字体,那个字体更适合工作。

3.3.2 Chrome

Chrome 的字体渲染原则很奇怪,如果我们直接使用默认配置的话,它会选择一个很奇怪的日文字体来渲染中文,对于日文字体里不存在的中文文字,它又会 Fallback 到另外一个奇怪的中文字体上。滇狐目前没太多时间和精力来详细调查这个现象,解决这个问题最简单的方法就是把 Chrome 里的默认字体和 Sans 字体全都强制指定“Droid Sans Fallback”上,效果还不错。至于 Serif 字体,我们可以使用“Droid Serif”,Monospace 字体就用“Droid Sans Mono”,这样风格比较统一。

3.3.3 QTerm

QTerm 有自己的字体配置,并不直接遵循系统字体来,根据自己的喜好配置一下就好。