Skip navigation.

Log in | Sign up

photo of yumumao

yumumao's 水水 Blog(暂停更新,看文章请用代理)

在每一个夜里我从梦里惊醒,看到我的心,他正在向前冲。      

Posts tagged with "over"

使用文泉驿后,opera或firefox字体双重加粗的问题

, , , ...

以下内容都是在Ubuntu 6.06系统下得出的。

在装文泉驿点阵宋体之前,用Opera访问某些页面会出现字体发虚的现象(比如加加论坛的帖子详情页面),改换字体也无法解决,于是“apt-get install xfonts-wqy”,这下字体发虚的问题解决了(同样适用于Firefox字体发虚问题,如果使用了文泉驿字体之后,Firefox仍有部分字体发虚,可参考这里),可又带来了一个新的问题。

所有粗体字都太粗了,黑压压的一片糊。刚开始以为是Opera字体设置的问题,因为Opera的字体设置是一件麻烦的事情(指的是linux下的版本,windows下则要好很多,详见opera字体问题的一篇笔记)。后来通过搜索论坛得知,这粗体的问题并不是Opera的错:

Ubuntu Dapper中的支持伪粗体的freetype对字体粗体判断有问题,其在文泉驿提供的“真粗体”的基础上再次加粗,造成firefox中“双重加粗”的现象。

相关的字体配置代码并不对字体中是否本身含有粗体进行判断,所以,如果使用了类似文泉驿的这种本身含有粗体的字体,就会造成“双重加粗”现象,这个现象正是造成粗体太粗的罪魁祸首,该现象在Opera和FireFox下都存在。

要解决这个问题,办法有两个:1,去掉文泉驿字体的粗体;2,修改相关字体配置文件,让其在加粗之前,判断字体是否自带粗体。

第一种方法见这里,这种方法稍有些麻烦,请在认真阅读原帖和删除了已经安装的文泉驿字体之后再进行。倒是可以利用那个脚本来每日升级得到最新的文泉驿字体,如果不想删除粗体,把“sudo rm *b.pcf”去掉就行了。

第二种方法:
sudo gedit /usr/share/language-selector/fontconfig/zh_CN
然后找到下面绿色部分的代码,把红色部分的代码添加到合适的位置即可。
<match target="font" > 
                <test name="family" compare="contains" > 
                        <string>Song</string> 
                        <string>Sun</string> 
                        <string>Kai</string> 
                        <string>Ming</string> 
                </test> 
                 
                <test name="weight" compare="less_eq"> 
                        <int>100</int> 
                </test>
                <test compare="more_eq" target="pattern" name="weight" > 
                        <int>180</int> 
                </test> 
                <edit mode="assign" name="embolden" > 
                        <bool>true</bool> 
                </edit> 
   </match>
方法系转载,详情见这里

两种方法我都试过,改后的效果会有些不同,分析一下,可能第二种方法是用了文泉驿自己的粗体,而第一种方法没有用文泉驿的粗体。我在修改过程中发现,第一种方法可能会造成opera在渲染一部分粗体的时候,使用系统自带的点阵字体,使得这些粗体的大小固定不变(即便是是用Opera的页面放大功能,这些字体的大小也不变,这可能和字体字号少有关)(事实上,这种现象应该和脚本中的“sudo unlink /etc/fonts/conf.d/30-debconf-no-bitmaps.conf”语句有关,执行了这个命令之后,Debian系统就能使用纯点阵字体了,而使用系统的点阵字体,而纯点阵字体是缺字号的,如果你发现取消了链接之后,部分网页字体不正常,请用“sudo ln -s /etc/fonts/conf.d/no-bitmaps.conf /etc/fonts/conf.d/30-debconf-no-bitmaps.conf”恢复它,我也不是很清楚为什么文泉驿官方帮助要推荐debian系统做这一步,利用第一个方法中的脚本来更新文泉驿字体还是蛮好的,不过要稍作修改,建议把文件夹改到“/usr/share/X11/fonts/”,然后把删除粗体的部分去掉,再把取消系统点阵链接的那一步去掉),无论怎样改字体,这部分的字体渲染都不会变,进一步发现这些现象都出现在utf-8编码的页面中,尝试用“LANG=zh_CN.gbk opera”启动程序(by bbr322),果然能够解决,可是新问题也出现了,用bbr322的话说:

发现中文字符间距不正常,小字间距过大,而大字又有重叠,那真是恭喜,我遇到过的问题你都遇到了,挺蓑。

于是我不得不得出和他一样的结论:

个人结论:opera的中文支持蛮糟的。

firefox用两种方法都能解决双重加粗问题,而且没有新问题出现,看来至少opera的linux版本对中文的支持还是不够,要想随心所欲地用你设置的字体来渲染页面,基本上是不可能的……&#x6211;&#x8981;&#x5566;&#x514D;&#x8D39;&#x7EDF;&#x8BA1;