字体美化方案(Dapper+WQY+MSfont)(11.1 更新英文字体美化)[转]

来源:互联网 发布:淘宝客返利网源码 编辑:程序博客网 时间:2024/06/14 09:37
文泉驿字体做得确实很漂亮,而且还是开源的,因此对于系统字体的美化我选择了文泉驿。可是有时在和其他人交 流文档时又不得不用MS的字体。在机器上装了MS字体之后,字体平滑问题一直很令我头痛,尤其在看一些网页时,整个网页一片模糊,如新华网。关闭了平滑之 后,当字很小时又是一堆在一处,而且英文字体很难看。在Ubuntu 5.10时这个问题基本上得到了解决,而到了6.06使用以前的设置方法已经不管用了,参考了论坛、Wiki以及网上的一些文章,用了半天时间终于解决了 所有问题。
预期目标:
1、使用文泉驿字体进行系统美化
2、安装MS的宋体(SimSun),宋体-18030(SimSun-18030),黑体(SimHei),楷体_GB2312(KaiTi_2312),仿宋_GB2312(FangSong_GB2312)
3、使用网页设定的字体浏览网页,如新华网一般在页面上规定宋体和楷体
4、对特定范围字体关闭AA
5、解决Firefox中文泉驿字体过粗问题
实现步骤:
1、安装文泉驿字体
新装的系统默认是没有安装make的,可以通过sudo apt-get install make来安装
引用:
cd ~
mkdir tmp
cd tmp
wget http://ftp.ubuntu.org.cn/wqy/wqy-bitmap ... ild.tar.gz
tar zxvf wqy-bitmapfont-bdf-nightly_build.tar.gz
cd wqy-bitmapfont
sudo apt-get install bdftopcf
make
sudo cp *.pcf /usr/share/X11/fonts/misc/

然后进行配置,使系统支持点阵字体
sudo gedit /etc/fonts/conf.d/50-xfonts-wqy.conf

把下面的代码粘贴进去,保存退出
引用:
<selectfont>
<acceptfont>
<pattern>
<patelt name="family"><string>WenQuanYi Bitmap Song</string></patelt>
</pattern>
</acceptfont>
</selectfont>

2、安装MS字体
cd /usr/share/fonts
sudo mkdir zh_CN
然后将MS的字体文件(simsun.ttc,SimSun18030.ttc,simhei.ttf,simkai.ttf,simfang.ttf)复制到zh_CN目录下,然后
cd zh_CN
sudo mkfontscale
sudo mkfontdir
sudo fc-cache

3、修改language-selector.conf文件(language-selector所指向的文件)
cd /usr/share/language-selector/fontconfig
sudo cp zh_CN zh_CN_backup
sudo gedit /etc/fonts/language-selector.conf
使用下面的代码替换掉里面的全部内容
引用:
<fontconfig>
<alias>
<family>serif</family>
<prefer>
<family>Bitstream Vera Serif</family>
<family>DejaVu Serif</family>
<family>WenQuanYi Bitmap Song</family>
<family>SimSun</family>
<family>AR PL ShanHeiSun Uni</family>
<family>AR PL ZenKai Uni</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>Bitstream Vera Sans</family>
<family>DejaVu Sans</family>
<family>WenQuanYi Bitmap Song</family>
<family>SimSun</family>
<family>AR PL ShanHeiSun Uni</family>
<family>AR PL ZenKai Uni</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Bitstream Vera Sans Mono</family>
<family>DejaVu Sans Mono</family>
<family>SimSun</family>
<family>AR PL ShanHeiSun Uni</family>
<family>WenQuanYi Bitmap Song</family>
<family>AR PL ZenKai Uni</family>
</prefer>
</alias>
<match target="font" >
<test name="family" compare="contains" >
<string>Song</string>
<string>Sun</string>
<string>Kai</string>
<string>Ming</string>
</test>
<!-- check to see if the font is just regular -->
<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>
<match target="font" >
<test name="family" compare="contains" >
<string>Song</string>
<string>Sun</string>
<string>Kai</string>
<string>Ming</string>
<string>宋体</string>
<string>宋体-18030</string>
<string>黑体</string>
<string>新宋体</string>
<string>新宋体-18030</string>
<string>楷体_GB2312</string>
<string>仿宋_GB2312</string>
<string>隶体</string>
<string>SimSun</string>
<string>SimSun-18030</string>
<string>SimHei</string>
<string>NSimSun</string>
<string>NSimSun-18030</string>
<string>KaiTi_GB2312</string>
<string>FangSong_GB2312</string>
<string>LiSu</string>
</test>
<edit name="globaladvance">
<bool>false</bool>
</edit>
<edit name="spacing">
<int>0</int>
</edit>
<edit name="hinting">
<bool>true</bool>
</edit>
<edit name="autohint">
<bool>false</bool>
</edit>
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
<test name="pixelsize" compare="more_eq">
<int>12</int>
</test>
<test name="pixelsize" compare="less_eq">
<int>24</int>
</test>
<edit name="antialias" mode="assign" >
<bool>false</bool>
</edit>
</match>
</fontconfig>

language-selector.conf前一部分为字体渲染顺序,这里把文泉驿字体提到了第二位,优先于原来的ShanHeiSun。中间 那部分对字体进行加粗,由于文泉驿字体已经含粗体,再加粗会出现过粗问题,因此增加了一个条件,即仅在字体中不含粗体时加粗。后一部分设置字体属性,这里 将列表中的字体,包括宋体等设为了在12px~24px之间关闭AA(即平滑效果),超过这个范围开启AA,使得屏幕上的字体更漂亮。需要注意的是,如果 系统中不存在这其中的任一个字体,会使整个文件失效,系统默认采用fonts.conf进行配置。

按照上面的方法,即便是Bitstream和DejaVu排在前面,会令所有字体都使用文泉驿,包括中文和英文。如果想使用SimSun(微软的 宋体)进行美化时,只要将SimSun放到中文字体的前面即可。不过这个时候所有英文字体会出现破碎,很难看。可以将下面的代码插入 到</fontconfig>前面,使得英文字体使用DejaVu。
代码:
<match target="pattern">
   <test qual="any" name="family" compare="eq">
      <string>sans-serif</string>
   </test>
   <edit name="family" mode="prepend" binding="strong">
      <string>SimSun</string></edit>
   <edit name="family" mode="prepend_first" binding="strong">
      <string>DejaVu Sans</string>
   </edit>
</match>
<match target="pattern">
   <test qual="any" name="family" compare="eq">
      <string>sans-serif</string>
   </test>
   <edit name="family" mode="assign" binding="strong">
      <string>DejaVu Sans</string>
      <string>SimSun</string>
   </edit>
</match>
<match target="pattern">
   <test name="family">
      <string>DejaVu Sans</string>
   </test>
   <edit name="family" mode="append" binding="strong">
      <string>SimSun</string>
   </edit>
</match>

<match target="pattern">
   <test qual="any" name="family" compare="eq">
      <string>serif</string>
   </test>
   <edit name="family" mode="prepend" binding="strong">
      <string>SimSun</string></edit>
   <edit name="family" mode="prepend_first" binding="strong">
      <string>DejaVu Serif</string>
   </edit>
</match>
<match target="pattern">
   <test qual="any" name="family" compare="eq">
      <string>serif</string>
   </test>
   <edit name="family" mode="assign" binding="strong">
      <string>DejaVu Serif</string>
      <string>SimSun</string>
   </edit>
</match>
<match target="pattern">
   <test name="family">
      <string>DejaVu Serif</string>
   </test>
   <edit name="family" mode="append" binding="strong">
      <string>SimSun</string>
   </edit>
</match>

<match target="pattern">
   <test qual="any" name="family" compare="eq">
      <string>monospace</string>
   </test>
   <edit name="family" mode="prepend" binding="strong">
      <string>SimSun</string></edit>
   <edit name="family" mode="prepend_first" binding="strong">
      <string>DejaVu Sans Mono</string>
   </edit>
</match>
<match target="pattern">
   <test qual="any" name="family" compare="eq">
      <string>monospace</string>
   </test>
   <edit name="family" mode="assign" binding="strong">
      <string>DejaVu Sans Mono</string>
      <string>SimSun</string>
   </edit>
</match>
<match target="pattern">
   <test name="family">
      <string>DejaVu Sans Mono</string>
   </test>
   <edit name="family" mode="append" binding="strong">
      <string>SimSun</string>
   </edit>
</match>

当然,跟据个人口味,如果偏好Bitstream的字体,只需把这段代码中的DejaVu全都替换成Bitstream Vera就可以了。当然,将这一部分中的英文字体都替换成Times New Roman(要先安装这个字体才行),就真的成了M$的了,个人不喜欢。
现在感觉很不错,充分享受Ubuntu!


已知问题,本打算仅通过修改配置文件的方式来进行美化,结果发现了一些问题:
1、使用文泉驿字体进行美化时,evince内无法显示中文。
解决办法:可以用Adobe Reader来阅读pdf文档
2、使用Simsun进行美化后,加粗英文字体会出现破碎现象。使用文中的英文字体美化之后,会在Openoffice中无法更改字体,并且evince无法显示中文。
解决办法,不使用英文字体美化部分的方法,而是通过系统首选项中的“字体”把所有的字体项都设置为一个英文的字体,比如DejaVu Sans。
除此之外,还可以使用其它字体进行美化,有可能解决上述问题,如雅黑。
0 0
原创粉丝点击