问题
Hexchat是xchat的分支,同样是使用了GTK库。然而GTK库在Windows上的字体显示得怪怪的,monospace的中文部分竟然是MingLiu字形!
怎样才能自定义monospace字体所真正使用的字体呢?
解决办法
打开hexchat安装目录,例如C:\Program Files\Hexchat,可以发现一个名叫etc的目录。如果没有该目录,那么新建一个叫etc的目录。
在etc下建立pango\pango.aliases文件,文件内容如下:
sans = "dejavu sans,microsoft yahei,simsun,simsun-extb"
serif = "dejavu serif,simsun,simsun-extb"
monospace = "dejavu sans mono,microsoft yahei,simsun,simsun-extb"
等号左边是字体别名,该别名字体真正使用的字体由等号右边的字体列表定义。
比如定义的monospace字体别名,它会优先在dejavu sans mono中寻找字形,如果找不到那么继续在microsoft yahei中寻找字形,……
如此一来,可以自由的选择与中文字体配合的英文字体,只需将英文字体放在前面。
如果列表中所有的字体都找遍了也没有找到字形,那么会显示成框框。所以在最后加上拥有字形数量最多的fallback字体,在Windows上就是宋体了。
注意事项
- 字体名大小写无关
- 字体名中的空格不能缺少
- 各个字体名之间的逗号两边不能多空格
- 英文双引号而不是中文双引号
附录
这里有一点麻烦的地方在于字体名是以英文名来指定。所以需要一张字体的中英文名对照表。大多数字体中英文对照表传送门( http://blog.csdn.net/hoxily/article/details/44240395 )。
参考文档
- win32平台下, GTK+ 2.0 程序的字体设置,http://hi.baidu.com/azhw618/item/94e738f5cf3932b430c199aa