过多的时间花在字体美化上面,是不值得的。本贴是为了linux新手在gentoo或其他linux distro历程中更快启航而写。如有谬误,请不吝指教。

1) 题外话:gnome更多的桌面主题:

代码:
#emerge metacity-themes
#emerge gnome-themes-extras

2) 拷贝windows字体到gentoo box里。例如tahoma.ttf, tahomabd.ttf, simsun.ttc, mingliu.ttc,我的目录是/usr/local/share/fonts/,不要忘记

代码:
chmod 744 /usr/local/share/fonts/*

3) 按照www.xfree.org中的文档,需要为core和fontconfig两种字体系统安装字体。
首先,core字体安装方式是将路径添到XF86Config和在目录下执行mkfontscale, mkfontdir. 已有诸多贴子描述,从略。
其次,fontconfig字体安装是在字体目录下执行fc-cache。

4) 美化方案
只讲fontconfig,其他的例如gtk等已有大量帖子描述,从略。
4-1) 不要修改fonts.conf: 既然它要求不要改,那就别改。
4-2) 修改/etc/fonts/local.conf,还是修改~/.fonts.conf,可由需要决定。
4-3) 怎样修改local.conf或~/.fonts.conf
务必要按照下面格式

代码:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!– 要设置的内容统统在这里–>
</fontconfig>


4-4) local.conf或.fonts.conf要设置的内容描述 – 这里不是讲解fontconfig,这里只讲要用的东西,要注意: 如果在kde中设置字体,它会改写~/.fonts.conf。
4-4-1) 字体目录

代码:
<dir>/usr/local/share/fonts</dir>


4-4-2) default fonts
Serif是有衬线的字体,像Times这个字体, sans是像Arial这样的字体,代码示例

代码:
<!– Default fonts –>
<alias>
   <family>Times New Roman</family>
   <family>Times</family>
   <family>SimSun</family>
   <family>MingLiU</family>
   <default><family>serif</family></default>
</alias>
<alias>
   <family>Tahoma</family>
   <family>SimSun</family>
   <family>MingLiU</family>
   <default><family>sans-serif</family></default>
</alias>
<alias>
   <family>Terminal</family>
   <family>Courier New</family>
   <family>SimSun</family>
   <family>MingLiU</family>
   <default><family>monospace</family></default>
</alias>


4-4-3) 字体替换顺序,代码示例

代码:
<alias>
   <family>serif</family>
   <prefer>
      <family>Times New Roman</family>
      <family>Times</family>
      <family>SimSun</family>
      <family>MingLiU</family>
   </prefer>
</alias>
<alias>
   <family>sans-serif</family>
   <prefer>
      <family>Tahoma</family>
      <family>SimSun</family>
      <family>MingLiU</family>
   </prefer>
</alias>
<alias>
   <family>monospace</family>
   <prefer>
      <family>Terminal</family>
      <family>Courier New</family>
      <family>SimSun</family>
      <family>MingLiU</family>
   </prefer>
</alias>


4-4-4) 选中的字体,不要anti-alias (就是不要模模糊糊的那种)

代码:
<match target="font" >
   <test name="family" qual="any" >
         <string>Tahoma</string>
      <string>Verdana</string>
      <string>Arial</string>
      <string>Times</string>
      <string>Times New Roman</string>
      <string>Courier</string>
      <string>Courier New</string>
                <string>SimSun</string>
                <string>MingLiU</string>
     </test>
     <edit mode="assign" name="antialias" >
         <bool>false</bool>
     </edit>
</match>


这里一定要有simsun, mingliu,否则4-5-2)粗体出不来。xfree.org里列举了将所有字体anti-alias都取消的代码,这样当然不好。也可以按照例如从8点到15点字都不用anti-alias的方案
4-4-5) xfree.org中举例的为LCD显示器做的优化

代码:
<!– Enable sub-pixel rasterisaton on LCD displays –>
<match target="font">
   <edit name="rgba" mode="assign">
      <const>rgb</const>
   </edit>
</match>

液晶显示器必选。
4-4-6) 解决使用中文字体时,英文字间距加倍问题:

代码:
<match target="font">
   <test target="spacing" compare="more_eq">
      <const>dual</const>
   </test>
   <edit name="globaladvance" mode="assign">
      <bool>false</bool>
   </edit>
</match>


将以上所有片段连接起来,就可以了。<!– 到 –>里面的都是注释。
4-5) 粗体解决方案
4-5-1) 替代方案
在你自己的local.font或者~/.fonts.conf中加入

代码:
<!– bold substitution, by luo: karllo@mail.nbptt.zj.cn –>
<match>
   <test name="family">
      <string>SimSun</string>
   </test>
    <test name="weight" compare="eq">
      <const>bold</const>
   </test>
    <edit name="family" mode="assign_replace">
      <string>SimHei</string>
   </edit>
<!– if subtitude fonts has "bold", we can use it, otherwise just comment out   
         <edit name="weight" mode="assign_replace">
      <const>bold</const>
   </edit> 
–>
</match>


这里,我们用黑体SimHei代替应该成为黑体的simsun。效果不怎么样。如果用一个粗圆体,效果会更好些。
4-5-2) 修改libXft方案。按照firefly提供的patch,可以自己编译,也可以按照其他贴子修改ebuild,重新emerge,但是都很麻烦。现在要使用一个比较"dirty"的方案,但是效果是非常不错的。
首先看看你原本的libXft.so.2在哪里

代码:
# find /usr -type f -iname ‘libXft.so.2*’


我的是在/usr/X11R6/lib/下面,xft2的是libXft.so.2.1,其他两个是到这个文件的符号连接。
下载:http://firefly.idv.tw/setfont-xft/RedHat/9.0/RPMS/libXft-2.1.2-2.firefly.i386.rpm
然后,将里面的库提取出来

代码:
#mkdir tempDir
#cd tempDir
#rpm2cpio ../libXft-2.1.2-2.firefly.i386.rpm | cpio -i


或者

代码:
#rpm2targz libXft-2.1.2-2.firefly.i386.rpm
#tar -xvzf libXft-2.1.2-2.firefly.i386.tar.gz


你将看到,里面共有三个文件,一个库文件libXft.so.2.1.1,两个符号连接。简单的办法,删除原来的libXft.so.2.1,把新的拷贝过去并命名为libXft.so.2.1即可。同时,要在你自己的local.fonts或~/.fonts.conf中增加:

代码:
<!– artificial bold by: firefly–>
<match target="font">
   <test target="pattern" name="weight" compare="more">
      <const>medium</const>
   </test>
   <edit name="weight" mode="assign">
      <const>bold</const>
   </edit>
</match>

这样就产生了粗体。

5) mozilla的字体,除了中文将最小字体改为12,其他我没做任何改变。

看图吧。我自己就是万全我上面所说的方法进行,我只用了很少时间就得到了一个清晰美观的桌面。好了,现在可以学学别的了。

附记:如果使用圆体字AA美化,你也可以从我的方案中马上只道怎么做了。提示:4-4-4)就不要了,所有的字都用反锯齿效果了,粗体解决方案用4-5-1)即可, firefly相关补丁等都不需要进行了。


1条评论

  1. It doesn’t work! I used another way to install simsun font, but there isn’t the strong font.

发表评论

评论也有版权!