fontconfig字体配置一点总结
Tuesday, August 14th, 2007现在的linux,字体几乎不需要配置,就可以得到可以接受的效果。当然,前提是安装了合适的中文字体。如果需要你需要一些特殊一点的效果,比如中文和英文分別用不同的字体显示,这就需要一点配置了。在~/.fonts.conf里:
- <alias>
- <family>serif</family>
- <prefer>
- <family>Lucida Grande</family>
- <family>AR PL ShanHeiSun Uni</family>
- </prefer>
- </alias>
- <alias>
- <family>sans-serif</family>
- <prefer>
- <family>Lucida Grande</family>
- <family>AR PL ShanHeiSun Uni</family>
- </prefer>
- </alias>
- <alias>
- <family>monospace</family>
- <prefer>
- <family>Lucida Console</family>
- <family>AR PL ShanHeiSun Uni</family>
- </prefer>
- </alias>
以上这些基本就解决了中英文分別显示的问题,当然就是举例说明一下,并不是我只指定了两个字体。以前配置到这里就结束了,没想过其他更多的,感觉很复杂。最近看了一下,发现也不是那么复杂,而且发现了很有意思并且很有用的东西。首先,指定”SimSun/宋体/新宋体”这几个字体都用AR PL ShanHeiSun Uni来显示:
- <match target="pattern">
- <test name="family">
- <string>SimSun</string>
- <string>宋体</string>
- <string>新宋体</string>
- </test>
- <edit name="family" mode="assign">
- <string>AR PL ShanHeiSun Uni</string>
- </edit>
- </match>
但是这个字体显示英文并不是很理想,所以,可以用其他的英文字体在匹配AR PL ShanHeiSun Uni的时候插在它之前。
- <match target="pattern">
- <test name="family">
- <string>AR PL ShanHeiSun Uni</string>
- </test>
- <edit name="family" mode="prepend" binding="weak">
- <string>Lucida Console</string>
- </edit>
- </match>
这样,在AR PL ShanHeiSun Uni显示的时候,英文就变成了Lucida Console。这里,注意binding=”weak”,一般查到的文档都是binding=”strong”,这样的话,系统整个字体都受影响,也就是几乎所有界面的英文字体都变成了Lucida Console这样效果很不好。所以,看了man fonts.conf,有如下:
There is one special case to this rule; family names are split into two bindings; strong and weak. Strong family names are given reater precedence in the match than lang elements while weak family names are given lower precedence than lang elements.
改用weak,解决上述问题。
现在还有的问题就是,想要用Adobe Heiti Std在Qterm里用,但是英文字体不等宽,想用上边的方法替换为Lucida Console,但是在qt程序里好像不起作用,还需要继续研究研究。