我对花费在汉字美化上的时间浪费感到痛心。我原来是没有用什么粗体,倒也没什么,但是今天好像linuxsir上不去了,在linuxfans逛了很久,看到这么多的美化文章,晚上也试了一下,居然找到了一些土方法,现在斗胆亮出来。如果能节省新手的时间,那就再好不过。主要是如何方便地实现人工粗体。
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: [email]karllo@mail.nbptt.zj.cn[/email] -->
- <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,其他我没做任何改变。
This is my original post:
http://www.linuxfans.org/nuke/mo ... ewtopic&t=55203 |