LinuxSir.cn,穿越时空的Linuxsir!

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

Fedora 字体发虚的解决方法,粗体显示及美化注意事项[Updated,05-06-22]

[复制链接]
发表于 2005-6-15 18:07:44 | 显示全部楼层 |阅读模式
注意:[陈旧的],适合本文适合Fedora 4 及早一点的发行,Fedora 5 中 KDE 也可做参考。

Fedora 下字体发虚,原因是缺少内嵌点阵字体。
很明显解决的方法就是添加一个有内嵌点阵的字体

一   最简单的“犯法”
1 为Fdora 添加 fireflysung字体,这里下载
http://www.study-area.org/apt/firefly-font/
或者者用arphic-uming,可以在任何一个Debian的mirror下载,也内嵌了firefly点阵字
http://debian.cn99.com/debian/pool/main/t/ttf-arphic-uming/

2 解压后,把fireflysung.ttf或者uming.ttf复制到 /usr/share/fonts/chinese/TrueType

3 桌面─> 首选项 ─ > 字体,把字体都设置为 AP RL Newsung 或者AR PL ShanHeiSun Uni,字体渲染选择单色,注销,enjoy!

二  进一步的美化工作

  如果对字体显示要求高点的话如:有粗体字,就需要多一些的步骤了。
不多说了。开始,Let's Go!
1 首先要先提一下要注意的事项:

a 不建议再用XMMS等古老的GTK +(GTK1)程序了,Fedora是很fashion,bleeding的发行,再用古老的程序
和Fedora显得不太协调了,所以不需要用ttmkfdir/ mkfontscale,生成字体索引,也不需要对/etc/gtkrc.zh_CN
,/etc/gtkrc.utf-8进行配置。如果要对这些使用core字体系统的古老程序配置,注意还要把字体路径加入xorg.conf的 Files Section
如 FontPath     "/path/to/fonts"

b 不应对/etc/fonts/fonts.conf 做任何的改动,因为下次升级fontconfig包后,fonts.con会被新的替换掉。
应该在/etc/fonts/local.conf进行修改,如果用fontconfig-2.3.0以上的应该把 配置放在/etc/fonts/conf.d内
(按照旧的方式放在local.conf也可以)并以一个2位数字做首文件名,如:/etc/fonts/conf.d/10myfonts.conf, /etc/fonts/conf.d/20autohint.conf。

c 新版的freetype(freetype-2.1.10)已经有了虚拟粗体的算法,不需要打补丁就可以有粗体字显示,可以自行升级之。
但是 还要配合新版的fontconfig(2.3.0以上),libXft(2.1.7)。这些在FC5中肯定会有的,但现在还得动动手,升级一下。

d  既然用Linux了,就尽量不要去用那些未经授权的字体simsun ,simsunbd了。(很快就发布的文泉驿字体是很好的选择)

fireflysung的英文字体不是很好看。可以考虑用Hevetica或者Bitsteam Vera配合fireflysung中文字体。
所以首先要对字体进行重排,小弟已经升级fontconfig-2.3.2了,就安新的配置方式叙述了。还是fontconfig-2.2.X
是话,就在local.conf配置。

Fedora已经带了Hevetica字体的,看不到是因为字体路径没有被加进配置文件。

在/etc/fonts/conf.d/ 下建立一个用户自定义配置文件10-myfonts.conf
具体的配置和简单的解说可以看下面,配置是一个非AA的显示方案,要使用AA的请自行修改。

  1. <?xml version="1.0"?>
  2. <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
  3. <!-- conf.d/10-myfonts -->
  4. <fontconfig>
  5. <dir>/usr/share/fonts</dir>
  6. <dir>/usr/local/share/fonts</dir>
  7. <dir>~/.fonts</dir>
  8. <!--加入点阵字体路径-->
  9. <dir>/usr/X11R6/lib/X11/fonts</dir>

  10. <!--  
  11. 配置粗体中文显示,要配合freetype-2.1.10,libxft-2.1.7,fontconfig-2.3.X
  12.   -->

  13.      <match target="font">
  14.          <!-- check to see if the font is just regular -->
  15.          <test name="weight" compare="less_eq">
  16.              <int>100</int>
  17.          </test>
  18.          <!-- check to see if the pattern requests bold -->
  19.          <test target="pattern" name="weight" compare="more_eq">
  20.              <int>180</int>
  21.          </test>
  22.          <!-- set the embolden flag -->
  23.          <edit name="embolden" mode="assign">
  24.              <bool>true</bool>
  25.          </edit>
  26.      </match>

  27. <!--
  28.         default settings for all fonts.
  29. -->
  30. <match target="font" >
  31. <!-- 打开字体的反锯齿即AA,大号字用AA会更美观   -->
  32.                 <edit mode="assign" name="antialias" >
  33.                         <bool>t</bool>
  34.                 </edit>
  35.                 <edit mode="assign" name="hintstyle" >
  36.                         <const>hintslight</const>
  37.                 </edit>
  38. <!-- 打开hint  -->
  39.                 <edit mode="assign" name="hinting" >
  40.                         <bool>t</bool>
  41.                 </edit>
  42. <!-- 关闭autohint  -->
  43.                 <edit mode="assign" name="autohint" >
  44.                         <bool>false</bool>
  45.                 </edit>
  46. </match>


  47. <!-- 关闭 8到17号字体的AA -->
  48. <match target="font" >
  49.                 <!--
  50.                 <test compare="contains" name="lang" >
  51.                         <string>zh-cn</string>
  52.                         <string>zh-tw</string>
  53.                         <string>ja</string>
  54.                         <string>ko</string>
  55.                 </test>
  56.                 -->
  57.                 <test compare="more_eq" name="pixelsize" qual="any" >
  58.                         <double>8</double>
  59.                 </test>
  60.                 <test compare="less_eq" name="pixelsize" qual="any" >
  61.                         <double>17</double>
  62.                 </test>
  63.                 <edit mode="assign" name="antialias" >
  64.                         <bool>false</bool>
  65.                 </edit>
  66. </match>

  67. <!-- 解决英文字体间距过宽 -->
  68. <match target="font">

  69.                 <test target="pattern" name="lang" compare="contains">
  70.                         <string>zh-tw</string>
  71.                         <string>zh-cn</string>
  72.                         <string>ja</string>
  73.                         <string>ko</string>
  74.                 </test>
  75.                 <edit name="spacing">
  76.                         <const>proportional</const>
  77.                 </edit>
  78.                 <edit name="globaladvance">
  79.                 <bool>false</bool>
  80.                 </edit>
  81. </match>

  82. <!--
  83. 设定中文最小字号,使得小字的中文美观
  84. -->
  85.   <match target="font" >
  86.         <test name="family" qual="any" >
  87.                 <string>SimSun</string>
  88.                 <string>NSimSun</string>
  89.                 <string>SimHei</string>
  90.                 <string>AR PL ShanHeiSun Uni</string>
  91.                 <string>AR PL ZenKai Uni</string>
  92.                 <string>AR PL New Sung</string>
  93.                 <string>FZSongTi</string>
  94.                  <string>FZMingTiB</string>
  95.                 <string>FangSong_GB2312</string>
  96.                 <string>KaiTi_GB2312</string>
  97.         </test>
  98.         <test compare="more_eq" name="pixelsize" >
  99.                 <int>8</int>
  100.         </test>
  101.         <test compare="less_eq" name="pixelsize" >
  102.                 <int>12</int>
  103.         </test>
  104.         <edit compare="eq" name="pixelsize" >
  105.                 <int>12</int>
  106.         </edit>
  107. </match>
  108. <!--
  109.   把serif ,sans,monospace的family(字体族)重新排序,适应中文用户的用字习惯
  110. -->
  111.    <alias>
  112.       <family>serif</family>
  113.       <prefer>
  114.          <family>Times New Roman</family>
  115.          <family>Nimbus Roman No9 L</family>
  116.          <family>Luxi Serif</family>
  117.          <family>Times</family>
  118.          <family>Bitstream Vera Serif</family>
  119.          <family>Simsun</family>
  120.          <family>MingLiu</family>
  121.          <family>WenQuanYi Bitmap Song</family>
  122.          <family>AR PL ShanHeiSun Uni</family>
  123.          <family>AR PL ZenKai Uni</family>
  124.          <family>AR PL New Sung</family>
  125.          <family>FZSongTi</family>
  126.          <family>FZMingTiB</family>
  127.          <family>Kochi Mincho</family>
  128.          <family>AR PL SungtiL GB</family>
  129.          <family>AR PL Mingti2L Big5</family>
  130.          <family>Baekmuk Batang</family>
  131.       </prefer>
  132.    </alias>
  133.    <alias>
  134.       <family>sans-serif</family>
  135.       <prefer>
  136.          <family>Arial</family>
  137.          <family>Verdana</family>
  138.          <family>Tahoma</family>
  139.          <family>Helvetica</family>
  140.          <family>Bitstream Vera Sans</family>
  141.          <family>SimSun</family>
  142.          <family>MingLiu</family>
  143.          <family>WenQuanYi Bitmap Song</family>
  144.          <family>AR PL ShanHeiSun Uni</family>
  145.          <family>AR PL ZenKai Uni</family>
  146.          <family>AR PL New Sung</family>
  147.          <family>FZSongTi</family>
  148.          <family>FZMingTiB</family>
  149.          <family>Kochi Gothic</family>
  150.          <family>AR PL KaitiM GB</family>
  151.          <family>AR PL KaitiM Big5</family>
  152.          <family>Baekmuk Dotum</family>

  153.       </prefer>
  154.    </alias>
  155.    <alias>
  156.       <family>monospace</family>
  157.       <prefer>
  158.          <family>Courier New</family>
  159.          <family>Courier</family>
  160.          <family>Andale Mono</family>
  161.          <family>Luxi Mono</family>
  162.          <family>Nimbus Mono L</family>
  163.          <family>Bitstream Vera Sans Mono</family>
  164.          <family>NSimSun</family>
  165.          <family>PMingLiu</family>
  166.          <family>WenQuanYi Bitmap Song</family>
  167.          <family>AR PL ShanHeiSun Uni</family>
  168.          <family>AR PL ZenKai Uni</family>
  169.          <family>AR PL New Sung</family>
  170.          <family>FZSongTi</family>
  171.          <family>FZMingTiB</family>
  172.          <family>Kochi Gothic</family>
  173.          <family>AR PL KaitiM GB</family>
  174.          <family>Baekmuk Dotum</family>
  175.       </prefer>
  176.    </alias>

  177. </fontconfig>



复制代码


下面简单说一下手工升级freetype.fontconfig.libXft的过程。喜欢用rpm包的话,可以修改或参考旧的spec文件,再编译成rpm包安装(不建议新手采用rpm包的方法)。

下载
freetype  http://prdownloads.sourceforge.n ... type-2.1.10.tar.bz2
fontconfig http://www.fontconfig.org/release/
libXft  http://xlibs.freedesktop.org/release/?C=N;O=D

解压freetype源代码
如果要使用Arial,Tahoma,Verdana等英文TureType字体,最好打开freetype的hinting(BYTECODE INTERPRETER)
不然的话Arial,Tahoma,Verdana字体会有毛刺,发虚。

用编辑器打开这文件 freetype-2.1.10/include/freetype/config/ftoption.h
把439行的注解去掉,改成这样

  1. #define  TT_CONFIG_OPTION_BYTECODE_INTERPRETER
复制代码


也可以用下面的patch

  1. --- freetype-2.1.10.orig/include/freetype/config/ftoption.h        2005-05-30 03:53:43.000000000 +0800
  2. +++ freetype-2.1.10/include/freetype/config/ftoption.h        2005-05-30 07:40:03.000000000 +0800
  3. @@ -436,7 +436,7 @@ FT_BEGIN_HEADER
  4.    /*   Do not #undef this macro here, since the build system might         */
  5.    /*   define it for certain configurations only.                          */
  6.    /*                                                                       */
  7. -/* #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER */
  8. +#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER


  9.    /*************************************************************************/

复制代码


#cd freetype-2.1.10
#./configure  --prefix=/usr
#make
#make install

解压fontconfig源代码
#cd fontconfig-2.3.2
#./configure  --disable-docs --sysconfdir=/etc --prefix=/usr --mandir=/usr/share/man
#make
#make install

解压libXft源代码
#cd libXft-2.1.7
#./configure  --prefix=/usr/X11R6
#make
#make install

本帖子中包含更多资源

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

x
 楼主| 发表于 2005-6-15 18:09:26 | 显示全部楼层
补充

英文字体

增加MSwin的常用英文字体,浏览网页的时候就更加美观了
1 下载msttcorefonts,http://thelinuxbox.org/files/msttcorefonts.tar.gz
License 是EULA,可以免费使用的。里面包含的字体如下:

  1. Andale Mono
  2. Arial
  3. Arial Black
  4. Arial Bold
  5. Arial Bold Italic
  6. Arial Italic
  7. Comic Sans MS
  8. Comic Sans MS Bold
  9. Courier New
  10. Courier New Bold
  11. Courier New Bold Italic
  12. Courier New Italic
  13. Georgia
  14. Georgia Bold
  15. Georgia Bold Italic
  16. Georgia Italic
  17. Impact
  18. Times New Roman
  19. Times New Roman Bold
  20. Times New Roman Bold Italic
  21. Times New Roman Italic
  22. Trebuchet MS
  23. Trebuchet MS Bold
  24. Trebuchet MS Bold Italic
  25. Trebuchet MS Italic
  26. Verdana  
  27. Verdana Bold
  28. Verdana Bold Italic
  29. Verdana Italic
  30. Webdings
复制代码



2 解压,添加字体到系统中(确保配置文件中已经加入路径/usr/local/share/fonts/ )

  1. #tar zxvf  fonts.tar.gz
  2. #cd msttcorefonts
  3. #mv *.ttf /usr/local/share/fonts/
  4. #fc-cache -f -v
复制代码


Good Luck!
回复 支持 反对

使用道具 举报

发表于 2005-6-15 18:34:57 | 显示全部楼层
还是 rpm 比较好
rpm -V fontconfig 看看哪
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-15 21:46:39 | 显示全部楼层
你写spec阿

  1. [mark@fedora ~]$ rpm -V fontconfig
  2. S.5....T  c /etc/fonts/fonts.conf
  3. S.5....T    /etc/fonts/fonts.dtd
  4. S.5....T  c /etc/fonts/local.conf
  5. S.5....T    /usr/bin/fc-cache
  6. S.5....T    /usr/bin/fc-list
  7. S.5....T    /usr/lib/libfontconfig.so.1.0.4
  8. [mark@fedora ~]$ cat /etc/fonts/local.conf
  9. <?xml version="1.0"?>
  10. <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
  11. <!-- /etc/fonts/local.conf file for local customizations -->
  12. <fontconfig>
  13. <!--
  14.   Enable sub-pixel rendering
  15.         <match target="font">
  16.                 <test qual="all" name="rgba">
  17.                         <const>unknown</const>
  18.                 </test>
  19.                 <edit name="rgba" mode="assign"><const>rgb</const></edit>
  20.         </match>
  21. -->
  22. <!--
  23.   Synthetic emboldening for fonts that do not have bold face available
  24.   -->


  25. </fontconfig>
  26. [mark@fedora ~]$

复制代码
回复 支持 反对

使用道具 举报

发表于 2005-6-16 01:59:31 | 显示全部楼层
不拷贝字体,直接用按照进一步美化中的方法操作可以吗
回复 支持 反对

使用道具 举报

发表于 2005-6-16 06:20:35 | 显示全部楼层
好东西!!似乎debian把字体改为单色之后就OK了。上次我试了,但是发现,字体好难看,尽管不模糊了。原来可以这么搞定的啊,哈哈,感谢楼主!
回复 支持 反对

使用道具 举报

发表于 2005-6-16 06:56:10 | 显示全部楼层
能不能改成宋体啊?
回复 支持 反对

使用道具 举报

发表于 2005-6-16 07:03:49 | 显示全部楼层
firefly的newsung很好!就是有点不太适合许多大陆用户的审美观,哈哈。我喜欢在gnome终端使用firefly字体。
回复 支持 反对

使用道具 举报

发表于 2005-6-16 07:34:57 | 显示全部楼层
我是用的ubuntu,用楼主的方法美化效果不错。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-16 14:28:09 | 显示全部楼层
Post by Hoo
不拷贝字体,直接用按照进一步美化中的方法操作可以吗



如果已添加了一个内含点阵字体的字体如simsun,就可以不添加NewSung,Uming。
回复 支持 反对

使用道具 举报

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

本版积分规则

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