LinuxSir.cn,穿越时空的Linuxsir!

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

高效清晰的汉字美化法

[复制链接]
发表于 2004-2-22 00:56:52 | 显示全部楼层 |阅读模式
我对花费在汉字美化上的时间浪费感到痛心。我原来是没有用什么粗体,倒也没什么,但是今天好像linuxsir上不去了,在linuxfans逛了很久,看到这么多的美化文章,晚上也试了一下,居然找到了一些土方法,现在斗胆亮出来。如果能节省新手的时间,那就再好不过。主要是如何方便地实现人工粗体。

1) 题外话:gnome更多的桌面主题:
  1. #emerge metacity-themes
  2. #emerge gnome-themes-extras
复制代码


2) 拷贝windows字体到gentoo box里。例如tahoma.ttf, tahomabd.ttf, simsun.ttc, mingliu.ttc,我的目录是/usr/local/share/fonts/,不要忘记
  1. 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
务必要按照下面格式
  1. <?xml version="1.0"?>
  2. <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
  3. <fontconfig>
  4. <!-- 要设置的内容统统在这里-->
  5. </fontconfig>
复制代码

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

         4-4-2) default fonts
                    Serif是有衬线的字体,像Times这个字体, sans是像Arial这样的字体,代码示例
  1. <!-- Default fonts -->
  2. <alias>
  3.         <family>Times New Roman</family>
  4.         <family>Times</family>
  5.         <family>SimSun</family>
  6.         <family>MingLiU</family>
  7.         <default><family>serif</family></default>
  8. </alias>
  9. <alias>
  10.         <family>Tahoma</family>
  11.         <family>SimSun</family>
  12.         <family>MingLiU</family>
  13.         <default><family>sans-serif</family></default>
  14. </alias>
  15. <alias>
  16.         <family>Terminal</family>
  17.         <family>Courier New</family>
  18.         <family>SimSun</family>
  19.         <family>MingLiU</family>
  20.         <default><family>monospace</family></default>
  21. </alias>
复制代码

         4-4-3) 字体替换顺序,代码示例
  1. <alias>
  2.         <family>serif</family>
  3.         <prefer>
  4.                 <family>Times New Roman</family>
  5.                 <family>Times</family>
  6.                 <family>SimSun</family>
  7.                 <family>MingLiU</family>
  8.         </prefer>
  9. </alias>
  10. <alias>
  11.         <family>sans-serif</family>
  12.         <prefer>
  13.                 <family>Tahoma</family>
  14.                 <family>SimSun</family>
  15.                 <family>MingLiU</family>
  16.         </prefer>
  17. </alias>
  18. <alias>
  19.         <family>monospace</family>
  20.         <prefer>
  21.                 <family>Terminal</family>
  22.                 <family>Courier New</family>
  23.                 <family>SimSun</family>
  24.                 <family>MingLiU</family>
  25.         </prefer>
  26. </alias>
复制代码

             4-4-4) 选中的字体,不要anti-alias (就是不要模模糊糊的那种)
  1. <match target="font" >
  2.         <test name="family" qual="any" >
  3.                    <string>Tahoma</string>
  4.                 <string>Verdana</string>
  5.                 <string>Arial</string>
  6.                 <string>Times</string>
  7.                 <string>Times New Roman</string>
  8.                 <string>Courier</string>
  9.                 <string>Courier New</string>
  10.                 <string>SimSun</string>
  11.                 <string>MingLiU</string>
  12.           </test>
  13.           <edit mode="assign" name="antialias" >
  14.                    <bool>false</bool>
  15.           </edit>
  16. </match>
复制代码

这里一定要有simsun, mingliu,否则4-5-2)粗体出不来。xfree.org里列举了将所有字体anti-alias都取消的代码,这样当然不好。也可以按照例如从8点到15点字都不用anti-alias的方案
            4-4-5) xfree.org中举例的为LCD显示器做的优化
  1. <!-- Enable sub-pixel rasterisaton on LCD displays -->
  2. <match target="font">
  3.         <edit name="rgba" mode="assign">
  4.                 <const>rgb</const>
  5.         </edit>
  6. </match>
复制代码
液晶显示器必选。
           4-4-6) 解决使用中文字体时,英文字间距加倍问题:
  1. <match target="font">
  2.         <test target="spacing" compare="more_eq">
  3.                 <const>dual</const>
  4.         </test>
  5.         <edit name="globaladvance" mode="assign">
  6.                 <bool>false</bool>
  7.         </edit>
  8. </match>
复制代码

将以上所有片段连接起来,就可以了。<!-- 到 -->里面的都是注释。
4-5) 粗体解决方案
          4-5-1) 替代方案
           在你自己的local.font或者~/.fonts.conf中加入
  1. <!-- bold substitution, by luo: [email]karllo@mail.nbptt.zj.cn[/email] -->
  2. <match>
  3.         <test name="family">
  4.                 <string>SimSun</string>
  5.         </test>
  6.         <test name="weight" compare="eq">
  7.                 <const>bold</const>
  8.         </test>
  9.         <edit name="family" mode="assign_replace">
  10.                 <string>SimHei</string>
  11.         </edit>
  12. <!-- if subtitude fonts has "bold", we can use it, otherwise just comment out       
  13.          <edit name="weight" mode="assign_replace">
  14.                 <const>bold</const>
  15.         </edit>  
  16. -->
  17. </match>
复制代码

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

我的是在/usr/X11R6/lib/下面,xft2的是libXft.so.2.1,其他两个是到这个文件的符号连接。
下载:http://firefly.idv.tw/setfont-xf ... -2.firefly.i386.rpm
然后,将里面的库提取出来
  1. #mkdir tempDir
  2. #cd tempDir
  3. #rpm2cpio ../libXft-2.1.2-2.firefly.i386.rpm | cpio -i
复制代码

或者
  1. #rpm2targz libXft-2.1.2-2.firefly.i386.rpm
  2. #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中增加:
  1. <!-- artificial bold by: firefly-->
  2. <match target="font">
  3.         <test target="pattern" name="weight" compare="more">
  4.                 <const>medium</const>
  5.         </test>
  6.         <edit name="weight" mode="assign">
  7.                 <const>bold</const>
  8.         </edit>
  9. </match>
复制代码
这样就产生了粗体。

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

This is my original post:
http://www.linuxfans.org/nuke/mo ... ewtopic&t=55203
发表于 2004-2-22 11:51:42 | 显示全部楼层
Gentoo的相关包,偶都是用的默认的 ^__^
发表于 2004-2-22 12:19:43 | 显示全部楼层
其实美化这东西,搞懂了原理还是很容易的
关键是,诚惶诚恐照本宣科的作一通,然后失败,这就比较惨了。
发表于 2004-2-22 13:14:14 | 显示全部楼层
where to find the patch for QT 3.3.0 to make the bold font can be used
发表于 2004-2-22 14:48:59 | 显示全部楼层
发表于 2004-2-22 14:50:28 | 显示全部楼层
顺便感谢下firefly兄为中文做出的巨大贡献
不管效果效率究竟如何,在那些日子里,的确让很多的人有了美的享受 ^___^
发表于 2004-2-23 08:38:27 | 显示全部楼层
Good! 谢谢!
发表于 2005-1-8 04:02:20 | 显示全部楼层
英文字距加倍的问题
是name="spacing" 吧?
按你的target="spacing" firefox提示说错误。
发表于 2005-1-24 16:34:34 | 显示全部楼层
按照这个美化,我没有做粗体那部分的工作,因为我也不要求有粗体。
但是xmms中的乱码如何解决?
回复 支持 反对

使用道具 举报

发表于 2005-1-24 16:38:23 | 显示全部楼层
Post by cnzxy
按照这个美化,我没有做粗体那部分的工作,因为我也不要求有粗体。
但是xmms中的乱码如何解决?

gtk1的字体不是fontconfig管的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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