发新话题
打印

高效清晰的汉字美化法

高效清晰的汉字美化法

(ZT)
我对花费在汉字美化上的时间浪费感到痛心。主要是如何方便地实现人工粗体。

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
首先,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-xf ... -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,其他我没做任何改变。

http://www.linuxfans.org/nuke/mo ... ewtopic&t=55203      

TOP

发新话题