用infinality美化你的字体
发表于 : 2012-03-30 19:25
本人第一次写教程,有错误之处还请大家指正。本文讲的是字体设置,理论上设置的不对不会对系统造成致命伤,但我曾把cairo搞坏进入X什么也显示不出来……如果遇到问题,至多是X显示问题,在终端下回滚:pacman -S freetype2 fontconfig cairo libxft 应该能解决。我实践过多次,都能用以上方式恢复。本方案仅作为参考,具体见infinality官方主页与wiki。如果跟随本教程造成别的损失,请自负责任。
首先安装infinality,在AUR中:yaourt -S freetype2-infinality fontconfig-infinality 。如果是64位,还有lib32-freetype2-infinality。至于可选依赖libxft-lcd,现在这包已经从AUR中删除了,我试过影响不大。可以考虑采用libxft-ubuntu和cairo-ubuntu,这个cairo-ubuntu还有一个好处:已经打好了遵循全局字体设置的补丁,不会出现像自由建客所说的gtk程序不听话的问题。注意:cairo这个部件如果不熟悉不要轻易修改代码与动编译选项!别的出错至多字体显示问题,cairo能使整个桌面环境无法显示!
然后是设置。infanality的新版本采用了有别于全局的设置方式:一切设置都在/etc/fonts/infinality中,原本的/etc/fonts中的设置不再有效(除了一个例外:local.conf,但是新版infinality已经不需要这个文件,这点wiki上有误导)。infinality提供了一些预设制,有:debug(如其名)、infinality、linux、osx、osx2(苹果风格)、win7、win98、winxp。如果想使用苹果或windows的风格,请安装相应字体,并确保你取得了对应的字体授权。我们这里以linux为例。infinality的默认设置没有考虑到中文,所以我们要做些修改。
首先,进入/etc/fonts/infinality/styles.conf.avail中,你能看到以上的预设风格。我们先把linux设置复制一份(以下所有操作均需root权限):
然后进入linux-zh中,可以看到一系列配置文件。这和原来的fontconfig是一样的,开头数字越大优先级越高。我们打开20-aliases-default-linux.conf,可以看到预设的字体是DejaVu Sans、Liberation Serif、Liberation Mono,这三套字体都没有中文,所以我们可以在其下加上一套中文字,比如文泉驿微米黑:
mono字体用WenQuanYi Micro Hei Mono。
然后跳过一些文件(当然你有兴趣也可以进去看看),我们直奔显示设置:
50-base-rendering-inf-osx-lin.conf 此文件是默认的渲染方式,默认的设置也不错了。不建议修改这个文件,主要是设置会被后面的两个61文件覆盖,只对两个60中没列出的少量字体有效。
60、61分别定义了truetype字体、非truetype字体的渲染。为了让中文更好显示,我们也仿照他来一份:
其中的62、63比61大就行。
修改62-group-chinese-fonts.conf,里面依样画葫芦就行,放入中文字体,比如我的:
建一个类别Chinese Font,以便在63中修改,适用与英文不同的设置。我的63-group-chinese-fonts-rendering.conf:
这样就能让中文用hintslight并关闭autohint,得到最佳显示效果。
最后,到/etc/fonts/infinality中运行
会让你选择风格,选上刚建的linux-zh,重启X,字体是不是漂亮多了?
总结:infinality还有好多设置我们没有涉及,有兴趣的可以自己看。我尝试发现,infinality下,文泉驿微米黑的显示效果很不错,完胜微软雅黑。另有一套ttf-dejavusans-yuanti,也很漂亮,但是由于版权问题,我不多说了。如果你的系统中还有别的中文字体,也可以加到62-group-chinese-fonts.conf中,在20-aliases-default-linux.conf设置默认字体。
首先安装infinality,在AUR中:yaourt -S freetype2-infinality fontconfig-infinality 。如果是64位,还有lib32-freetype2-infinality。至于可选依赖libxft-lcd,现在这包已经从AUR中删除了,我试过影响不大。可以考虑采用libxft-ubuntu和cairo-ubuntu,这个cairo-ubuntu还有一个好处:已经打好了遵循全局字体设置的补丁,不会出现像自由建客所说的gtk程序不听话的问题。注意:cairo这个部件如果不熟悉不要轻易修改代码与动编译选项!别的出错至多字体显示问题,cairo能使整个桌面环境无法显示!
然后是设置。infanality的新版本采用了有别于全局的设置方式:一切设置都在/etc/fonts/infinality中,原本的/etc/fonts中的设置不再有效(除了一个例外:local.conf,但是新版infinality已经不需要这个文件,这点wiki上有误导)。infinality提供了一些预设制,有:debug(如其名)、infinality、linux、osx、osx2(苹果风格)、win7、win98、winxp。如果想使用苹果或windows的风格,请安装相应字体,并确保你取得了对应的字体授权。我们这里以linux为例。infinality的默认设置没有考虑到中文,所以我们要做些修改。
首先,进入/etc/fonts/infinality/styles.conf.avail中,你能看到以上的预设风格。我们先把linux设置复制一份(以下所有操作均需root权限):
代码: 全选
mkdir linux-zh
cp linux/* linux-zh
代码: 全选
…………
<alias>
<family>sans-serif</family>
<prefer>
<family>DejaVu Sans</family>
<family>WenQuanYi Micro Hei</family>
</prefer>
</alias>
…………
然后跳过一些文件(当然你有兴趣也可以进去看看),我们直奔显示设置:
50-base-rendering-inf-osx-lin.conf 此文件是默认的渲染方式,默认的设置也不错了。不建议修改这个文件,主要是设置会被后面的两个61文件覆盖,只对两个60中没列出的少量字体有效。
60、61分别定义了truetype字体、非truetype字体的渲染。为了让中文更好显示,我们也仿照他来一份:
代码: 全选
cp 60-group-non-tt-fonts.conf 62-group-chinese-fonts.conf
cp 61-group-non-tt-rendering-inf-7-xp-lin.conf 63-group-chinese-fonts-rendering.conf
修改62-group-chinese-fonts.conf,里面依样画葫芦就行,放入中文字体,比如我的:
代码: 全选
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<match target="font">
<test name="force_autohint">
<bool>false</bool>
</test>
<test name="family">
<string>WenQuanYi Micro Hei</string>
<string>WenQuanYi Micro Hei Light</string>
<string>WenQuanYi Micro Hei Mono</string>
<string>WenQuanYi Micro Hei Mono Light</string>
<string>WenQuanYi Zen Hei</string>
<string>WenQuanYi Zen Hei Mono</string>
</test>
<edit name="font_type" mode="assign">
<string>Chinese Font</string>
</edit>
</match>
</fontconfig>
代码: 全选
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<!-- ##Style: linux -zh-->
<match target="font">
<test name="font_type">
<string>Chinese Font</string>
</test>
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
<edit name="hintstyle" mode="assign">
<const>hintslight</const>
</edit>
<edit name="autohint" mode="assign">
<bool>false</bool>
</edit>
</match>
</fontconfig>
最后,到/etc/fonts/infinality中运行
代码: 全选
infctl.sh setstyle
总结:infinality还有好多设置我们没有涉及,有兴趣的可以自己看。我尝试发现,infinality下,文泉驿微米黑的显示效果很不错,完胜微软雅黑。另有一套ttf-dejavusans-yuanti,也很漂亮,但是由于版权问题,我不多说了。如果你的系统中还有别的中文字体,也可以加到62-group-chinese-fonts.conf中,在20-aliases-default-linux.conf设置默认字体。