LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2658|回复: 10

[Font] 英文字体间距变宽之根源及解决

[复制链接]
发表于 2006-1-2 23:33:18 | 显示全部楼层 |阅读模式
根源:
用中文字体显示英文
稍微解释一下,中文字体里有半角和全角的英文,有时候fontconfig犯晕,如果你指定了中文字体,它就只会用字体里全角的英文。修改fonts.conf自然可以,不过这个方法从本质上来说是对本来就是错误的行为的一个小小修正,不能改变其错误的本质。虽然可以用半角显示了,可是中文字体里的英文真的那么好看么?Simsun里的英文我个人认为非常ugly。

根本解决办法:
用英文字体显示英文,用中文字体显示中文

具体操作:
如果可以分别指定字体,则对中文英文分别指定字体
否则统一指定英文字体,比如在firefox里,不要仅仅指定serif, sans serif 或者 monospace,而要具体到字体名

比如在firefox里Monospace就用Bitstream Vera Sans Mono
这样英文就肯定会用Bitstream Vera Sans Mono
对于中文,fontconfig就会找fonts.conf的字体替换列表里排最前的一个中文字体,我的是SimSun
发表于 2006-1-3 00:25:24 | 显示全部楼层
这个问题,我的经验是在写/etc/font/font.conf文件时,那些<family>。。。</family>段中,应该把英文字体写在前面,中文字体写在后面,如先写Tahoma再写SimSun,这样fontconfig就能正常解析字体了。如果在SimSun上没有能够解析英文字体的familay段的话,就会出现英文字体变宽的现象。
<family>Tahoma</family>
<family>SimSun</family>
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-3 01:01:56 | 显示全部楼层
这个是自然,应该算是前提条件

不过只这样做的话是不够的
如果手工指定所有字体都用Simsun
谁前谁后就都无意义了
回复 支持 反对

使用道具 举报

发表于 2006-1-3 03:24:41 | 显示全部楼层
谢谢,一直都是这么设置的,我在Simsun后边还跟一个18030字体,全一点。:)。

中文的粗体,楼主是如何解决的?用黑体代替?打补丁?还是?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-3 09:31:17 | 显示全部楼层
我blog上不是有个总结么,一了百了,粗体,点阵,中文字体名……
freetype已经不需要补丁了
cairo,fontconfig,libXft还要打一打
回复 支持 反对

使用道具 举报

发表于 2006-1-3 20:27:12 | 显示全部楼层
你的blog没有发现有这些文章,能否给个连接?谢谢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-3 23:51:00 | 显示全部楼层
http://spaces.msn.com/members/zhllg/Blog/cns!1pZICR9vxlDKAQZ1A4wqfIbw!654.entry
回复 支持 反对

使用道具 举报

发表于 2006-1-4 07:18:54 | 显示全部楼层
谢谢,全部装上了,很好。
fontconfig 我用的是 fontconfig-2.3.93,补丁一样可以用。

我把 fonts.cache-1 都删除了,fc-cache -fv 没生成 fonts.cache-2 文件,不过什么问题都没有。就懒得管了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-4 09:45:07 | 显示全部楼层
you are welcome
回复 支持 反对

使用道具 举报

发表于 2006-1-13 01:18:14 | 显示全部楼层
blog中的 libXft 补丁连接失效了。:)。
我把之前下载的放上来。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表