分页: 1 / 2

用infinality美化你的字体

发表于 : 2012-03-30 19:25
sgsdxzy
本人第一次写教程,有错误之处还请大家指正。本文讲的是字体设置,理论上设置的不对不会对系统造成致命伤,但我曾把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权限):

代码: 全选

mkdir linux-zh
cp linux/* linux-zh
然后进入linux-zh中,可以看到一系列配置文件。这和原来的fontconfig是一样的,开头数字越大优先级越高。我们打开20-aliases-default-linux.conf,可以看到预设的字体是DejaVu Sans、Liberation Serif、Liberation Mono,这三套字体都没有中文,所以我们可以在其下加上一套中文字,比如文泉驿微米黑:

代码: 全选

…………
 <alias>
        <family>sans-serif</family>
        <prefer>
            <family>DejaVu Sans</family>
            <family>WenQuanYi Micro Hei</family>
        </prefer>
    </alias>
…………
mono字体用WenQuanYi Micro Hei Mono。
然后跳过一些文件(当然你有兴趣也可以进去看看),我们直奔显示设置:
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、63比61大就行。
修改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>
建一个类别Chinese Font,以便在63中修改,适用与英文不同的设置。我的63-group-chinese-fonts-rendering.conf:

代码: 全选

<?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>
这样就能让中文用hintslight并关闭autohint,得到最佳显示效果。
最后,到/etc/fonts/infinality中运行

代码: 全选

infctl.sh setstyle
会让你选择风格,选上刚建的linux-zh,重启X,字体是不是漂亮多了?

总结:infinality还有好多设置我们没有涉及,有兴趣的可以自己看。我尝试发现,infinality下,文泉驿微米黑的显示效果很不错,完胜微软雅黑。另有一套ttf-dejavusans-yuanti,也很漂亮,但是由于版权问题,我不多说了。如果你的系统中还有别的中文字体,也可以加到62-group-chinese-fonts.conf中,在20-aliases-default-linux.conf设置默认字体。

Re: 用infinality美化你的字体

发表于 : 2012-03-30 19:33
eexpress
支持分析。
只是蛋痛。洗发水啊。

Re: 用infinality美化你的字体

发表于 : 2012-03-30 19:46
shinery
上图。

Re: 用infinality美化你的字体

发表于 : 2012-03-30 20:22
长头发的和尚
好教程,顶一个..

Re: 用infinality美化你的字体

发表于 : 2012-03-30 20:26
jtshs256
我这里矢量关了ah就糊的不行……

Re: 用infinality美化你的字体

发表于 : 2012-03-30 20:30
nmsfan
支持
我装了

我是fedora

Re: 用infinality美化你的字体

发表于 : 2012-03-30 20:55
winbber
:em01

Re: 用infinality美化你的字体

发表于 : 2012-03-30 22:05
qifei9
我想知道infinality,ubuntu,lcd,这些freetype的补丁之间具体有什么不同

Re: 用infinality美化你的字体

发表于 : 2012-06-17 13:57
自由建客
文泉驿微米黑的显示效果很不错,完胜微软雅黑
是否太过夸张?

Re: 用infinality美化你的字体

发表于 : 2012-06-17 15:51
lilydjwg
自由建客 写了:
文泉驿微米黑的显示效果很不错,完胜微软雅黑
是否太过夸张?
好丑的微软雅黑,特别是那加粗的 :em31

Re: 用infinality美化你的字体

发表于 : 2012-06-17 16:02
YeLee
雅黑有粗体的,不过,那标点,大家懂的。 :em04 :em04 :em04

Re: 用infinality美化你的字体

发表于 : 2012-06-17 16:49
自由建客
lilydjwg 写了:
自由建客 写了:
文泉驿微米黑的显示效果很不错,完胜微软雅黑
是否太过夸张?
好丑的微软雅黑,特别是那加粗的 :em31
你还能找出这么清晰的矢量字体来不?

Re: 用infinality美化你的字体

发表于 : 2012-06-17 17:05
自由建客
YeLee 写了:雅黑有粗体的,不过,那标点,大家懂的。 :em04 :em04 :em04
标点在哥这不是问题,你懂的。 :em04

Re: 用infinality美化你的字体

发表于 : 2012-06-17 17:18
jmw778s
自由建客 写了:
YeLee 写了:雅黑有粗体的,不过,那标点,大家懂的。 :em04 :em04 :em04
标点在哥这不是问题,你懂的。 :em04
建客挖坟,在用你的字体配置,非常棒 :em11

Re: 用infinality美化你的字体

发表于 : 2012-12-06 20:50
pmshou
自由建客 写了:
文泉驿微米黑的显示效果很不错,完胜微软雅黑
是否太过夸张?
同样雅黑,Ubuntu下渲染的效果明显要好于Arch! :em09