但发现fontconfig对gnome界面的字体设置根本没作用,会被gnome“外观首选项”的全局字体渲染设置吃掉。似乎是说,gnome“外观首选项”的全局字体渲染设置优先级高于fontconfig。如果把gnome的全局渲染设为hintfull,英文又变得很难看。
在gnome环境下,local.conf的设置只对某些程序(如firefox)起作用,系统菜单还是只遵循gnome“外观首选项”的字体渲染设置。而KDE中就可以把字体渲染选为“系统默认”,让所有程序都服从我的local.conf。
请问有无办法禁用gnome“外观首选项”的全局字体渲染设置?或者是在gnome下单独设置某些字体的渲染?
下面的截图可以说明我的问题:上面的firefox是hintfull,下面的nautilus是hintslight。望高人赐教。 KDE中,只要将字体渲染设为“系统默认”,一切都很完美。
附KDE中截图三张:[/size]
再附上小弟的local.conf,在我的电脑上,这样设置,微软雅黑与Simsun都可以得到与win中近似相同的效果。
PS:微软雅黑一定要用5.0版本,win7中的6.02在ubuntu下怎样设置都惨不忍睹。
代码: 全选
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!-- 顺序 -->
<match target="pattern">
<test qual="any" name="family">
<string>serif</string>
</test>
<edit name="family" mode="prepend" binding="strong">
<string>DejaVu Serif</string>
<string>Bitstream Vera Serif</string>
<string>Georgia</string>
<string>Times New Roman</string>
<string>SimSun</string>
<string>WenQuanYi Bitmap Song</string>
<string>WenQuanYi Zen Hei</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="prepend" binding="strong">
<string>DejaVu Sans</string>
<string>Bitstream Vera Sans</string>
<string>Arial</string>
<string>Tahoma</string>
<string>Verdana</string>
<string>Segoe UI</string>
<string>Microsoft YaHei</string>
<string>WenQuanYi Micro Hei</string>
<string>Microsoft JhengHei</string>
<string>SimSun</string>
<string>WenQuanYi Zen Hei</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>monospace</string>
</test>
<edit name="family" mode="prepend" binding="strong">
<string>DejaVu Sans Mono</string>
<string>Bitstream Vera Sans Mono</string>
<string>Courier 10 Pitch</string>
<string>Consolas</string>
<string>Courier New</string>
<string>Microsoft YaHei</string>
<string>WenQuanYi Micro Hei Mono</string>
<string>WenQuanYi Zen Hei Mono</string>
</edit>
</match>
<!-- 全局 -->
<match target="font">
<edit mode="assign" name="rgba">
<const>rgb</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hintstyle">
<const>hintslight</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="antialias">
<bool>true</bool>
</edit>
</match>
<!--Hinting for Microsoft Yahei-->
<match target="font">
<test qual="any" name="family">
<string>Microsoft Yahei</string>
<string>微软雅黑</string>
<string>msyh</string>
</test>
<edit name="autohint" mode="assign" >
<bool>false</bool>
</edit>
<edit name="hinting" mode="assign" >
<bool>true</bool>
</edit>
<edit name="hintstyle" mode="assign" >
<const>hintfull</const>
</edit>
<edit name="rgba" mode="assign">
<const>rgb</const>
</edit>
<edit name="antialias" mode="assign"><bool>true</bool></edit>
</match>
<!--Hinting for SimSun-->
<match target="font">
<test qual="any" name="family">
<string>SimSun</string>
<string>宋体</string>
<string>NSimSun</string>
<string>新宋体</string>
</test>
<test name="weight" compare="less_eq" target="pattern">
<const>medium</const>
</test>
<test compare="less_eq" name="pixelsize"><double>17</double></test>
<edit name="antialias" mode="assign"><bool>false</bool></edit>
<edit name="embeddedbitmap" mode="assign"><bool>true</bool></edit>
<edit name="hinting" mode="assign"><bool>true</bool></edit>
<edit name="hintstyle" mode="assign"><const>hintfull</const></edit>
<edit name="autohint" mode="assign" >
<bool>false</bool>
</edit>
</match>
<match target="pattern">
<test name="family">
<string>SimSun</string>
<string>宋体</string>
<string>NSimSun</string>
<string>新宋体</string>
</test>
<edit binding="strong" mode="prepend" name="family">
<string>Palatino Linotype</string>
</edit>
</match>
<!--Hinting for Simhei-->
<match target="font">
<test qual="any" name="family">
<string>SimHei</string>
<string>黑体</string>
</test>
<edit name="antialias" mode="assign"><bool>true</bool></edit>
<edit name="embeddedbitmap" mode="assign"><bool>true</bool></edit>
<edit name="hinting" mode="assign"><bool>true</bool></edit>
<edit name="hintstyle" mode="assign"><const>hintfull</const></edit>
<edit name="autohint" mode="assign" >
<bool>false</bool>
</edit>
</match>
</fontconfig>
经过高人pheyx的指导,成功解决了此问题。
原来早就有人不爽这个bug,详见http://bugs.freedesktop.org/show_bug.cgi?id=11838。可以视作cairo的一个bug,无视fontconfig的hint设置。
补丁编译安装步骤如下:
代码: 全选
su
apt-get install build-essential devscripts fakeroot
apt-get build-dep libcairo2 libxft2 freetype
mkdir cairo
cd cairo
wget -O cairo-respect-fontconfig.patch http://bugs.freedesktop.org/attachment.cgi?id=34511
apt-get source cairo
cd cairo-1.8.10/
patch -p1 <../cairo-respect-fontconfig.patch
dpkg-buildpackage -rfakeroot -us -uc
cd ..
dpkg -i *.deb
将雅黑字体设为hintfull,清晰明亮,而英文字体设为hintslight,饱满柔和。
可以进新力得把这个包hold住。 再次感谢八楼pheyx,一位伟大的潜水者。
附上编译好的deb,懒得自己编译的筒子可以试试。