2009年2月25日星期三

Hotmail 也可以用 POP3 了

今天发现,hotmail也可以用POP3和SMTP了。
POP3: pop3.live.com:995 (SSL)
SMTP: smtp.live.com:25 (SSL)

2009年2月16日星期一

Blog: Getting Portable Skype on your USB Drive in 5 Easy Steps

http://www.gruups.com/usbskype/

Getting Portable Skype on your USB Drive in 5 Easy Steps

Getting Skype a little more portable by making it work from your USB Drive can be a life-saver when you're on the road or on a vacation.

It's also good if you want to show it to a friend, or maybe want to use a version that's different than the one installed.

The trick is quick simple, and depend on two paramebers which aren't very well documented

This only works with the newest version of Skype (so download the newest version from the link below), and only on Windows (the parameters probably work with mac so you'll have to figure that part and then everything else should be the same.)
  • First...Download the NEWEST version of Skype (Older versions won't work) and install it on any computer as normal.
  • Find the Skype.exe from where it was installed.
    (Usually C:\Program Files\Skype\Phone\Skype.exe )
  • Copy the Skype.exe file to any directory on your USB Drive
  • In that new directory create a directory called "data"
  • Now create a file (with notepad) called "skype.bat"
  • Edit the "skype.bat" file and place the following line there:
    skype.exe /datapath:"Data" /removable
You're set.

Just clicking on that batch file will make skype start, it'll be different version that any skype installed on the computer you're at, and will even run if skype isn't installed on that computer.

 

That's it.
Good luck.
And Enjoy your portable apps!


2009年2月14日星期六

vim中的modeline

vim中的modeline可以在你的文件中读入一些设置,如文件类型等。如,在b.bak中的开头写入:
/* vim: set ft=c: */
则用vim打开时,就自动识别为c语言文件。
要打开这个功能,在你的.vimrc中,要有
set modeline
 
modeline有两种格式:
   (1)第一种格式:
    [text]{white}{vi:|vim:|ex:}[white]{options}
  
    [text]          随便什么文本,或者空白。
    {white}         至少一个空格或tab。
    {vi:|vim:|ex:}  后面三个字符串之一,"vi:", "vim:" 或 "ex:"。
    [white]         可有也可无的空格。
    {options}       被set的选项列表,用冒号':'分隔。

举例:
// vi:noai:sw=3 ts=6
/* vim:tabstop=8:expandtabs:shiftwidth=8 */
          
    (2)第二种格式:
    [text]{white}{vi:|vim:|ex:}[white]set {options}:[text]

    [text]          随便什么本文,或者空白。
    {white}         至少一个空格或tab。
    {vi:|vim:|ex:}  后面三个字符串之一,"vi:", "vim:" or "ex:"。
    [white]         可有也可无的空格。
    set             字符串"set " (注意set后面的那个空格不可少)。
    {options}       选项列表,用空格分开。
    :               一个冒号。
    [text]          随便什么文本,或者空白。

举例:
/* vim: set ai tw=75: */
/* vim: set shiftwidth=4 autoindent : */
       
注意:
   vi:或vim:或ex:前面的那个空格不可少,这可以最大限度地避免误判。但,
   vi:和vim:可以直接放在行首,而ex:不行。
  
modeline还可以加入版本识别,所用数字为实际版本号乘以100。如
vim600:      版本大于等于6.0
vim<600:     版本小于6.0
vim=600:     版本等于6.0
vim>;600:     版本大于6.0
       
两种格式的区别:
   对于第一种格式,一旦识别,该行剩余部分都将被使用,因此,这样的写法
   /* vi:ts=4: */
   将因为后面的*/而出错。
   而采用第二种格式就没有这个问题了,因为它将显式地以一个冒号结束。
   /* vi:set ts=4: */
  
modeline写在哪儿?
   vim只会在一个文件的前modelines行和后modelines行中寻找modeline命令
   模式,modelines的默认值是5。
  
modeline的开关是什么?
   开:set modeline
   关:set nomodeline
   事实上,set modelines=0 的效果和set nomodeline是一样的。

在用的vimrc


" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
syntax on

" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
"set background=dark

" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
    \| exe "normal g'\"" | endif
endif

" Uncomment the following to have Vim load indentation rules according to the
" detected filetype. Per default Debian Vim only load filetype specific
" plugins.
if has("autocmd")
  filetype indent on
endif

" The following are commented out as they cause vim to behave a lot
" differently from regular Vi. They are highly recommended though.
set showcmd        " Show (partial) command in status line.
set showmatch        " Show matching brackets.
"set ignorecase        " Do case insensitive matching
set smartcase        " Do smart case matching
set incsearch        " Incremental search
set autowrite        " Automatically save before commands like :next and :make
"set hidden             " Hide buffers when they are abandoned
"set mouse=a        " Enable mouse usage (all modes) in terminals

"filetype plugin indent on
set modeline        " make /* vim:ft=c */ work
set fileencodings=utf-8,gbk,gb2312


" Source a global configuration file if available
" XXX Deprecated, please move your changes here in /etc/vim/vimrc
if filereadable("/etc/vim/vimrc.local")
  source /etc/vim/vimrc.local
endif

YUM详解

YUM详解

使用redhat,fedora的linuxer肯定都为rpm著名的dependency hell而头疼(这也是所有基于rpm发行版都有的问题)。foo is needed by bar,bar is needed by foo。要装卸个软件,还得辛辛苦苦地梳理清楚所有依赖性问题,rpm的几个搜索站点成了时常光顾的场所,如果不幸碰到循环依赖,那就只有干瞪眼的分了。 有时加个--nodeps参数,倒是眼不见,心不烦,但这样装上的软件,你能保证正常使用吗,这样卸载软件,你能保证不影响其它软件工作吗,恐怕谁也不能 给出肯定的答案。每到这时,帽子们只有看着debian的apt暗自羡慕了。好在,这些都已经成为过去时了。基于rpm的发行版现在也有了像apt那样自 动解决依赖关系的包管理工具了。其中一个著名的就是apt4rpm,这基本上是debian系统apt的在rpm发行版的移植。但是使用Redhat和 Fedora的linuxer你们知道吗,还有一个与apt功能类似的rpm包管理系统,那就是yum。Fedora系统已经自带,Redhat也有相应 的rpm下载。与apt相比,yum的功能一点也不弱,甚至还有许多胜过apt 之处。比如说,yum是Fedora系统自带的,因此它能使用fedora官方的软件源,完成各种官方发布的各种升级。对于第三方软件源的支持,yum也 不差,大多数支持apt的repository,也能支持yum,比如说freshrpms,fedora.us,livna等等。此外yum有一个比较 详细的log,可以查看何时升级安装了什么软件包等。yum的代码较apt更为精简等。

一、YUM简介:
yum,是Yellow dog Updater, Modified的简称,起初是由yellow dog这一发行版的开发者Terra Soft研发,用python写成,那时还叫做yup(yellow dog updater),后经杜克大学的Linux@Duke开 发团队进行改进,遂有此名。yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用户解决。yum的关键之处 是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http或ftp站点,也可以是本地软件池,但必须包含rpm的header, header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些 header并加以分析,才能自动化地完成余下的任务。
如果没有安装,先我们要到下面的地址下载与自己系统相对应的版本的 yum:
http://ayo.freshrpms.net/
比如我用的是Fedora core 4.0 就下载如下的包安装:

[root@localhost beinan]# rpm -ivh freshrpms-release-1.1-1.fc.noarch.rpm
warning: freshrpms-release-1.1-1.fc.noarch.rpm: Header V3 DSA signature: NOKEY, key ID e42d547b
Preparing... ########################################### [100%]
1:freshrpms-release ########################################### [100%]

 

二、YUM的配置文件
yum的一切配置信息都储存在一个叫yum.conf的配置文件中,通常位于/etc目 录下,这是整个yum系统的重中之重,所以有必要详细介绍。下面是一个从网上找来的yum.con文件,让我们以此为例,进行说明。


[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
tolerant=1
exactarch=1
retries=1

[base]
name=Fedora Core $releasever - $basearch - Base
baseurl=http://download.atrpms.net/mirrors/fedoracore/$releasever/$basearch/os
http://rpmfind.net/linux/fedora/cor...er/$basearch/os
http://mirror.clarkson.edu/pub/dist...er/$basearch/os


[updates-released]
name=Fedora Core $releasever - $basearch - Released Updates
baseurl=http://download.atrpms.net/mirrors/fedoracore/updates/$releasever/$basearch
http://redhat.linux.ee/pub/fedora/l...sever/$basearch
http://fr2.rpmfind.net/linux/fedora...sever/$basearch

[Fedora.us]
name=Fedora.us - $basearch - Extras
baseurl=http://fedora.linux.duke.edu/fedorax86_64/fedora.us/$releasever/$basearch/RPMS.stable

[Dag Wieers]
name=Dag RPM Repository for Fedora Core
baseurl=http://apt.sw.be/fedora/$releasever/en/$basearch/dag

[Livna]
Name=Livna RPM, Fedora Core $releasever - $basearch
baseurl=http://rpm.livna.org/fedora/$releasever/$basearch/RPMS.stable

[freshrpms]
name=FreshRPMs
baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms/
http://ftp.us2.freshrpms.net/linux/...arch/freshrpms/

第一部分(这是yum的全局性设置。默认一般不必改动。)
[main] 
cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum。 
debuglevel:除错级别,0──10,默认是2 
logfile:yum的日志文件,默认是/var/log/yum.log。 
pkgpolicy: 包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存 在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个 服务器上的软件安装。一般都是选newest。 
distroverpkg:指定一个软件包,yum会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm包。 
exactarch,有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级。 
retries,网络连接发生错误后的重试次数,如果设为0,则会无限重试。 
tolerent,也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum不会出现错误信息。默认是0。 
除了上述之外,还有一些可以添加的选项,如 
exclude=,排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。 
gpgchkeck= 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认好像也是检查的。 

第二部分:
配置repository服务器了,这是最令人激动的,有了好的repository,就如家门口开了大卖场,要什么东西稍微跑跑腿就行,对了这还是个免费的大卖场。 
所有服务器设置都应该遵循如下格式: 


[serverid] 
name=Some name for this server 
baseurl=url://path/to/repository/ 

其中serverid是用于区别各个不同的repository,必须有一个独一无二的名称。 
name,是对repository的描述,支持像$releasever $basearch这样的变量; 
baseurl是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。它的格式是: 
baseurl=url://server1/path/to/repository/ 
url://server2/path/to/repository/ 
url://server3/path/to/repository/ 
其中url支持的协议有 http:// ftp:// file://三种。baseurl后可以跟多个url,你可以自己改为速度比较快的镜像站,但baseurl只能有一个,也就是说不能像如下格式: 
baseurl=url://server1/path/to/repository/ 
baseurl=url://server2/path/to/repository/ 
baseurl=url://server3/path/to/repository/ 
其中url指向的目录必须是这个repository header目录的上一级,它也支持$releasever $basearch这样的变量。 
url之后可以加上多个选项,如gpgcheck、exclude、failovermethod等,比如: 


[updates-released] 
name=Fedora Core $releasever - $basearch - Released Updates 
baseurl=http://download.atrpms.net/mirrors/fedoracore/updates/$releasever/$basearch 
http://redhat.linux.ee/pub/fedora/linux/core/updates/$releasever/$basearch 
http://fr2.rpmfind.net/linux/fedora/core/updates/$releasever/$basearch 
gpgcheck=1 
exclude=gaim 
failovermethod=priority 

其中gpgcheck,exclude的含义和[main]部分相同,但只对此服务器起作用, 
failovermethode 有两个选项roundrobin和priority,意思分别是有多个url可供选择时,yum选择的次序,roundrobin是随机选择,如果连接失 败则使用下一个,依次循环,priority则根据url的次序从第一个开始。如果不指明,默认是roundrobin。 

几个变量 
$releasever,发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。 
$arch,cpu体系,如i686,athlon等 
$basearch,cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。 
对yum.conf设定完成,我们就可以好好体验yum带来的方便了。


对了,万事具备,只欠东风。还有一件事没有做。那就是导入每个reposity的GPG key,前面说过,yum可以使用gpg对包进行校验,确保下载包的完整性,所以我们先要到各个repository站点找到gpg key,一般都会放在首页的醒目位置,一些名字诸如 RPM-GPG-KEY.txt之类的纯文本文件,把它们下载,然后用rpm --import xxx.txt命令将它们导入,最好把发行版自带GPG-KEY也导入,rpm --import /usr/share/doc/redhat-release-*/RPM-GPG-KEY 官方软件升级用的上。


FC3:  rpm --import /usr/share/doc/fedora-release-3/RPM-GPG-KEY-fedora

FC4:  rpm --import /usr/share/doc/fedora-release-4/RPM-GPG-KEY-fedora

至此一切准备工作都已完毕。

三、用YUM升级软件
打开终端,切换到root用户,yum的操作大都须有超级用户的权限。
首先,yum update,这一步是必须的,yum会从服务器的header目录下载rpm的header,放在本地的缓存中,这可能会花费一定的时间,但比起yum 给我们带来方便,这些时间的花费又算的了什么呢?header下载完毕,yum会判断是否有可更新的软件包,如果有,它会询问你的意见,是否更新,还是说 y吧,把系统始终up to date总是不错的,这时yum开始下载软件包并使用调用rpm安装,这可能要一定时间,取决于要更新软件的数目和网络状况,万一网络断了,也没关系,再 进行一次就可以了。升级完毕,以后每天只要使用yum check-update检查一下有无跟新,如果有,就用yum update进行跟新,时刻保持系统为最新,堵住一切发现的漏洞。

用yum update packagename 对某个单独包进行升级。
yum还有一个升级指令,yum upgrade,它的初衷是更换废弃的包,但现在通常用来进行重大的升级,如把发行版整个升高一个版本,由于牵动太大,还不如安装新的系统。


1.列出所有可更新的软件清单
命令:yum check-update

2.安装所有更新软件
命令:yum update

3.仅安装指定的软件
命令:yum install <package_name>

4.仅更新指定的软件
命令:yum update <package_name>

5.列出所有可安裝的软件清单
命令:yum list

四、用YUM安装删除软件
装了系统添加删除软件是常事,yum同样可以胜任这一任务,只要软件是rpm安装的。 
安装的命令是,yum install xxx,yum会查询数据库,有无这一软件包,如果有,则检查其依赖冲突关系,如果没有依赖冲突,那么最好,下载安装;如果有,则会给出提示,询问是否要同时安装依赖,或删除冲突的包,你可以自己作出判断。 
删除的命令是,yum remove xxx,同安装一样,yum也会查询数据库,给出解决依赖关系的提示。 


1.用YUM安装软件包
命令:yum install <package_name>

2.用YUM删除软件包
命令:yum remove <package_name>

五、用YUM查询软件信息
我们常会碰到这样的情况,想要安装一个软件,只知道它和某方面有关,但又不能确切知道它的名字。这时yum的查询 功能就起作用了。你可以用 yum search keyword这样的命令来进行搜索,比如我们要则安装一个Instant Messenger,但又不知到底有哪些,这时不妨用 yum search messenger这样的指令进行搜索,yum会搜索所有可用rpm的描述,列出所有描述中和messeger有关的rpm包,于 是我们可能得到gaim,kopete等等,并从中选择。 
有时我们还会碰到安装了一个包,但又不知道其用途,我们可以用yum info packagename这个指令来获取信息。 


1.使用YUM查找软件包
命令:yum search <keyword>

2.列出所有可安装的软件包
命令:yum list

3.列出所有可更新的软件包
命令:yum list updates

4.列出所有已安装的软件包
命令:yum list installed

5.列出所有已安装但不在 Yum Repository 內的软件包
命令:yum list extras

6.列出所指定的软件包
命令:yum list <package_name>

7.使用YUM获取软件包信息
命令:yum info <package_name>

8.列出所有软件包的信息
命令:yum info

9.列出所有可更新的软件包信息
命令:yum info updates

10.列出所有已安裝的软件包信息
命令:yum info installed

11.列出所有已安裝但不在 Yum Repository 內的软件包信息
命令:yum info extras

12.列出软件包提供哪些文件
命令:yum provides <package_name>

六、清除YUM缓存
yum 会把下载的软件包和header存储在cache中,而不会自动删除。如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除,更精确 的用法是yum clean headers清除header,yum clean packages清除下载的rpm包,yum clean all一 股脑儿端 


1.清除缓存目录(/var/cache/yum)下的软件包
命令:yum clean packages

2.清除缓存目录(/var/cache/yum)下的 headers
命令:yum clean headers

3.清除缓存目录(/var/cache/yum)下旧的 headers
命令:yum clean oldheaders

4.清除缓存目录(/var/cache/yum)下的软件包及旧的headers
命令:yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 

附:

由于 Fedora 的 yum
预设的更新主机在外国,也就是 Fedora 的官方更新主机
连线到国外下载,速度之慢,可想而知....

在这里,我们可以修改 yum 的配置文件
把连线主机,改成国内各大学的 Linux 更新主机,如此速度就会比较快
------------------------
/etc/yum.conf
-----------------------

[base]
name=Fedora Core $releasever - $basearch - Base baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever/$basearch/os/

[updates-released]
name=Fedora Core $releasever - $basearch - Released Updates baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/updates/$releasever/$basearch/

注意红色的地方,就是 yum 会去连接的更新主机网址
改成以下,可自由选择搭配
base 主机:
(大小写有差别,请先实际连接测试,看看服务器是否仍存在)


http://ftp.isu.edu.tw/pub/Linux/Fed...core/1/i386/os/
http://linux.nctu.edu.tw/ftp/dists/...core/1/i386/os/
ftp://ftp.isu.edu.tw/pub/Linux/Fedo...core/1/i386/os/
ftp://linux.nctu.edu.tw/dists/fedora/core/1/i386/os/
ftp://linux.sinica.edu.tw/fedora/linux/core/1/i386/os/

updates 主机:
(大小写有差别,请先实际测试连接,看看服务器是否仍存在)


http://ftp.isu.edu.tw/pub/Linux/Fed...updates/1/i386/
http://linux.nctu.edu.tw/ftp/dists/...updates/1/i386/
ftp://ftp.isu.edu.tw/pub/Linux/Fedo...updates/1/i386/
ftp://linux.nctu.edu.tw/dists/fedor...updates/1/i386/
ftp://linux.sinica.edu.tw/fedora/li...updates/1/i386/

路径中的 /1/ 是代表 core 1
如是使用core 2,请自行改成 /2/
改完后保存,不必重启服务,立刻生效
然后 yum 的更新速度就會飞快了

Fedora core 3 和 4 的 yum base 配置设定法:
FC3 和 FC4 的 yum base 配置设定,有别于之前 FC2
并不是在 /etc/yum.conf 中设定
设定方法如下:
cd /etc/yum.repos.d/
vi fedora.repo (设定 base 主机,仅列出需要修改处)


baseurl=http://ftp.isu.edu.tw/pub/Linux/Fedora/linux/core/$releasever/$basearch/os/
#mirrorlist=http://fedora.redhat.com/download/mirrors/fedora-core-$releasever

vi fedora-updates.repo (设定 update 主机,仅列出需要修改处)


baseurl=http://ftp.isu.edu.tw/pub/Linux/Fedora/linux/core/updates/$releasever/$basearch/
#mirrorlist=http://fedora.redhat.com/download/mirrors/updates-released-fc$releasever


说明:
1.义守大学是 Fedora 官方认可的台湾区mirror 站,所以这里设定义守大学的主机。

2.主要的Repository,大多数也提供apt支持。 


http://www.fedora.us 
http://rpm.livna.org 
http://dag.wieers.com ;#Dag的apt/yum repository 
http://freshrpms.net/ 
http://rpms.xcyb.org/ ;#k3b 
http://apt.kde-redhat.org/ ;kde-redhat 
http://atrpms.net/ ;#ATrpms 
http://dries.studentenweb.org/ayo/index.html ;#Dries APT/YUM RPM Repository 
http://newrpms.sunsite.dk/ ;#NewRPMS 
http://www.fedoralegacy.org ;#Redhat和Fedora遗产项目支持,Core 1也已经进入遗产了,汗。

注意多个repository共存可能带来的冲突。

明明白白安装中文字体

From: http://rybhgr.blog.163.com/blog/static/1559815520091343652130/?fromPostsense

Ubuntu 6.06 dapper对中文的支持应该说是一向不错的,包括现在默认安装就包含了scim输入法。然而,一般安装的ubuntu虽然能够显示、输入中文了,但总觉 得所显示的中文像歪瓜裂枣,很是别扭。这是很无奈的,也不是linux的错,这是因为现在几乎没有免费的中文字体库来给我们用,大家平时使用习惯了的 winxp里面的宋体、还有方正排版系统里面的仿宋体、公文中的方正小标宋等等,这些字体都是商业公司开发出来用在自己的产品中的,是有版权的,所以 linux不能拿过来就用。如果你还没有听说过字体有版权的话,上网搜索一下"胡万进" 吧,这位老兄就是当年在微软从事字体制作的一位员工,他所制作的字体的版权就是归微软公司所有。我们国家虽然对IT产业非常关注,但是更关注 windows,对开源社区和自由软件的支持几乎没有,直到今天也没有投资开发出一套免费的字体供大家使用。不过幸好有怀着共产主义信念的好同志,为我们 提供了免费的替代方案,现在我们可以使用圆体美化,还有开源的文泉驿域名2)可以用。

本文则是参考如何使用xp带的字体来进行中文美化?一文,实践中文字体的安装,并对ubuntu的字体体系更加深入的了解一下,这样以后再安装任何字体就都不怕了。

一、准备字体文件

我一直认为,如果我拥有了一套windows xp的使用权(通过oem方式),那么我就同时拥有了对这份windows产品的只用于我个人的任意使用权,这里面包括了对其中的字体的使用权。所以,本 文中将winxp的字体拷贝到linux下使用的做法,应该是没有侵权的。

windows的字体一般存放在c:\windows\fonts目录下,我拷贝到linux下的字体有:

simfang.ttf 仿宋体
simhei.ttf 黑体
simkai.ttf 楷体
simsun.ttf 宋体和新宋体,原文件名simsun.ttc
tahoma.ttf tahoma字体
tahomabd.ttf tahoma字体的粗体形式
verdana.ttf verdana字体
verdanab.ttf verdana字体的粗体形式
verdanai.ttf verdana字体的斜体形式
verdanaz.ttf verdana字体的粗体+斜体形式

拷贝过来的字体文件放在了/home/fwolf/tools/fonts目录下。

二、将字体加入到linux的可使用字体中

首先把字体文件链接到存放字体的目录中

cd /usr/share/fonts
ln -s /home/fwolf/tools/fonts xpfonts
cd xpfonts
mkfontscale
mkfontdir

这样作和把字体拷贝到/usr/share/fonts的一个目录下的效果是一样的。后面的两个mkfont命令是生成xpfonts目录下所包含的字体的索引信息。然后运行fc-cache命令更新字体缓存:

fc-cache

现在,应该说linux就可以使用这些新装上的中文字体了,看一下openoffic里的截图吧:

linux中OpenOffice下的几种winxp字体

其中仿宋体的字体名是FangSong_GB2312,黑体是SimHei,楷体是KaiTi_GB2312,宋体是SimSun,字体名暂时都不是中文的。

三、修改/etc/fonts/fonts.conf的字体渲染顺序

让我们一边修改,一边分析fonts.conf这个文件的内容吧,注意部分注释(<–和–>之间的内容)和无关紧要或者重复的内容我将跳过不再解释。

<?xml version="1.0″?> 声明这个文件是一个xml文档
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> xml文档的格式声明(dtd = document type define)
<!– /etc/fonts/fonts.conf file to configure system font access –>
<fontconfig> xml文件需要的根节点
<!–
DO NOT EDIT THIS FILE.
IT WILL BE REPLACED WHEN FONTCONFIG IS UPDATED.
LOCAL CHANGES BELONG IN 'local.conf'.

文档中提示不要手工修改fonts.conf,个人的设定可以写入local.conf文件,并且会自动被fonts.conf读入,不过我现在还不知道怎么创建这个文件,等知道了再公布出来吧,现在先拿fonts.conf开刀,反正预先已经作了备份。

<dir>/usr/share/fonts</dir>
<dir>/usr/X11R6/lib/X11/fonts/Type1</dir> <dir>/usr/local/share/fonts</dir>
<dir>~/.fonts</dir>

所有字体文件存放的位置,其中第一个就是我们刚才放字体文件的目录/usr/share/fonts。

<!–
Accept deprecated 'mono' alias, replacing it with 'monospace'
–>
<match target="pattern">
<test qual="any" name="family">
<string>mono</string>
</test>
<edit name="family" mode="assign">
<string>monospace</string>
</edit>
</match>

将本文件中的别名mono替换成全称monospace,这是xml的一个自动替换声明,使用别名的目的应该是为了简化书写或者维持对旧版本的兼容。后面还有几个替换就不再一一介绍了。

<!–
Serif faces
–> <alias>
<family>Bitstream Vera Serif</family>
<family>Vera Sans YuanTi</family> <!– added by lifesinger–>
<family>Times</family>
<family>Times New Roman</family>

Serif字型将要使用的字体顺序。当要显示Serif字型的内容时,就从下面这个列表中选择字体,匹配顺序是自上而下。可以看到已经安装的圆体美 化再这里作了修改。如果我们想把宋体作为首选,就在Bitstream Vera Serif字体前面比葫芦画瓢加上一行就可以了。

至于什么是Serif字型,以及Sans-serif字型,可以看一下细说字体 Sans Serif 与 Serifserif vs sans serif这两篇文章,说明的很详细。我觉得把他们叫做字型或者字族,相对于字体来说,更贴切一些。

下面的Sans-serif faces、Monospace faces段中处理方式相同。

<!–
If the font still has no generic name, add sans-serif
–>
<match target="pattern">

又是三个替换,大概意思是如果上面的字体匹配还不成功,就尝试使用sans-serif、serif、monospace的默认字体来替换,最后如果还替换不成功,强制使用sans-serif字体。(不知道这么理解是否正确)

<!–
Some Asian fonts misadvertise themselves as monospaced when
in fact they are dual-spaced (half and full). This makes
FreeType very confused as it forces all widths to match.
Undo this magic by disabling the width forcing code –>
<match target="font">
<test name="family"><string>GulimChe</string></test>
<edit name="globaladvance"><bool>false</bool></edit>
</match>

一些亚洲字体实际使用了等宽字体,但是却没有明确的声明,这段就是为了兼容这个进行的处理,保持不变即可。

<!–
The Bitstream Vera fonts have GASP entries suggesting that hinting be
disabled below 8 ppem, but FreeType ignores those, preferring to use
the data found in the instructed hints. The initial Vera release
didn't include the right instructions in the 'prep' table. Fix this
by disabling hinting manually at smaller sizes (< 8ppem)
–>

修正Bitstream Vera字体在小于8点的时候的显示问题,保持不变即可。

<!–
Load local system customization file

<include ignore_missing="yes">local.conf</include>
–>

加载配置文件local.conf,下面的~/.fonts.conf也是一样。

<!–
Provide required aliases for standard names
–>
<alias>
<family>serif</family>
<prefer>
<family>Bitstream Vera Serif</family>

又是三个系列字型的字体别名,不知道这个和前面的类似设置是怎么个关系,大概前面设置的是备选字体,这里是推荐字体?不过照例把我们的SimSun加进去。

<!–
Artificial oblique for fonts without an italic or oblique version
–>

对没有斜体字的字体的处理方法,保持不变即可。

<!–
Synthetic emboldening for fonts that do not have bold face available
–>

没有黑体字的字体的处理方法,保持不变即可。

<!–
These are the default Unicode chars that are expected to be blank
in fonts. All other blank chars are assumed to be broken and
won't appear in the resulting charsets
–>

Unicode编码中在所有字体中都应该显示为空的编码表,保持不变即可。

<!– Rescan configuration every 30 seconds when FcFontSetList is called
–>

每隔30秒钟就重新检查一下本设置文件(看设置改变了没有),保持不变即可。

至此,标准的配置文件就结束了,我们需要作的主要修改也都完成了。重启X应该就能看到宋体中文的界面了。不过在fonts.conf还可以作一些其他的字体处理设置,这个在圆体美化所带的那个fonts.conf中有例子,比如:

<!– Win XP 效果 –>
<match target="font">
<test name="family"><string>Vera Sans YuanTi</string></test>
<edit name="globaladvance"><bool>false</bool></edit>
</match>

这就是指明在对Vera Sans YuanTi字体的处理中,globaladvance参数设置为false,其他的设置也多是这种语法,具体的含义和效果我就不知道了:)。

四、中文字体显示优化

按照上面的方法配置好以后,宋体能够显示了,但是字体有些发虚,那么一种简单的方法就是在 系统->首选项->字体(system->preference->font) 中选择单色(Monochrome),但是这样所有的字体包括英文字体都会有一点点的小锯齿,那么替代的方法就是通过修改fonts.conf,去掉宋体 的反锯齿,并且用黑体替代宋体的粗体。在fonts.conf中添加:

<!– 用黑体替代宋体的粗体 –>
<match target="pattern">
<test name="family"><string>SimSun</string></test>
<test name="weight" compare="more_eq"><const>bold</const></test>
<edit name="family" mode="assign"><string>SimHei</string></edit>
</match>
<!– 关闭宋体的AA –>
<match target="font">
<test qual="any" name="family"><string>SimSun</string></test>
<edit name="antialias" mode="assign"><bool>false</bool></edit>
</match>
<!– 解决不能识别中文字体名称的问题 –>
<match target="pattern">
<test name="family"><string>宋体</string></test>
<edit name="family" mode="assign"><string>SimSun</string></edit>
</match>
<match target="pattern">
<test name="family"><string>新宋体</string></test>
<edit name="family" mode="assign"><string>SimSun</string></edit>
</match>
<match target="pattern">
<test name="family"><string>仿宋_GB2312</string></test>
<edit name="family" mode="assign"><string>FangSong_GB2312</string></edit>
</match>
<match target="pattern">
<test name="family"><string>楷体_GB2312</string></test>
<edit name="family" mode="assign"><string>KaiTi_GB2312</string></edit>
</match>
<match target="pattern">
<test name="family"><string>黑体</string></test>
<edit name="family" mode="assign"><string>SimHei</string></edit>
</match>

为什么要用黑体替代宋体的粗体呢,因为宋体字体其实是不含粗体的,windows下也是,只是windows采用了更高级一些的方法来间接实现了宋体的粗体而已。

小结

以上就是简单的中文字体设置方法,和我对fonts.conf的简单理解,希望能对大家有用,也希望过路大侠指正错误和不足之处。另外还可以参考一下一个详细的汉化美化方案(freetype/fontconfig/xft),分析得比我深入多了。

参阅:



标题: [原创]一个详细的汉化美化方案(freetype/fontconfig/xft)

写在前面:
每一个刚刚把Linux装上的朋友面对的第一个问题就是汉化,美化。linux默认的字体实在是不怎么漂亮,特别是对
中文更是如此。我开始用了两三个月美化一直不是很好,正在心灰意懒,准备滚回Windowz的时候,偶然看到一篇美化的文章,照着做了
而且竟然成功了(至少是我想要的效果),从那以后就慢慢的爱上了linux直到把Windowz彻底仍进厕所。
网上关于美化的文章其实已经很多了,但大多是告诉你第一步如何如何,第二步如何如何,至于其中的简单道理很少有涉及。结果
造成知其然不知其所以然,一旦照着文章做下来没有成功,那就等于白做了。以后遇到问题,还是束手无策。
我写这个的目的就是希望结合我自己实际中遇到的种种情况,结合我自己的经验,写一篇文章帮助那些既想美化成功,而又想大概
知道"为什么要这么做"的朋友。当然我只是能讲一些我自己所理解的很浅显的道理,更高深的道理我是不懂的,呵呵。有说错的地方还
请大家多多指教。本文所介绍的是基于freetype/Fontconfig/Xft的,xtt我没用,使用的字体都是TrueType。
下面我们开始。

强烈建议你把下面这段仔细看一下,这样对接下来的具体操作有很大帮助!!

linux下常见的GUI程序有三种,GTK1、GTK2和QT,基于这三种图形库的程序在美化上是有不同要求的。XFree86下常用的字体绘制
方案有xtt,freetype/Fontconfig/Xft。下面分别来看看

1.GTK1的程序是不支持Fontconfig的。所以有点麻烦。拿到一个字体,你首先要让X找到它对吧?这一步就是在/etc/X11/XF86config的Section "files"段里面的Fontpath属性里说明的详细后面会讲。好了,X现在知道字体在哪里了。那gtk1的程序还不能直接使用它们,因为我们还没有给它们"注册",这就需要在前面设定的Fontpath里生成两个文件fonts.dir fonts.scale这两个文件里有Fontpath下所有字体的列表信息,就是一个"索引"。有了这个"索引",gtk1的程序就可以找到相应的字体了。生成这两个文件的工具有mkfontdir,mkfontscale,ttmkfdir等等。好了,上面两步如果正确完成了,你的gtk1程序现在就可以正常显示汉字了。
常见的gtk1程序有xmms,gimp.....

2.GTK2和QT程序可以使用Fontconfig。Fontconfig是一个把字体选择出来,并且决定怎么显示这些字体的东东。类似于前面提到的
XF86config里的Fontpath属性以及fonts.dir和fonts.scale的功能,就是让程序找到这些字体。所以,对于GTK2和QT程序XF86config和
fonts.dir就没有用了。所以对于这类程序来说,主要的配置文件是/etc/fonts/fonts.conf
Fontconfig的高级功能有很多,详细的说明可以参考这里:http://www.linuxfans.org/nuke/module...wtopic&t=48331
GTK2和QT的程序就很多了,KDE,GNOME,Firebird............

上面的两段提到的只是让程序找到字体,并不负责具体的显示工作。它们只能保证你的程序能找到字体不会出现乱码现象,也就是所谓的"汉化"
至于freetype/Xft或者xtt是什么?我的理解它们是负责具体把字体显示到屏幕上的东西,决定了你看到的字体是个什么效果。著名的"firefly美化包"就做了很多改善中文显示效果的工作。也就是所谓的"美化"

到此你应该对汉化,美化有了一个大概的概念。接下来就是具体的操作
具体在Slackware 9.1上实现freetype/fontconfig/xft汉化美化工作

我用的是Slackware 9.1,但是对其它发行版,美化汉化的原理都是大同小异的。看了文章再通过实践加以理解,应该能够灵活应用其它发行版上的。
以下命令以#开头表示是以root身份操作,$开头则是以普通用户身份操作。

Step1.
准备TrueType字体,常用的如simsun.ttf tahoma.ttf verdana.ttf等等。然后决定你要把字体放在哪个目录里。这个目录随你喜欢,我把它们放在/usr/X11R6/lib/X11/fonts/TTF/里。
比如你下载来的的ttf字体都在/home/username/myfonts/下面,就做如下操作

#cp /home/username/myfonts/*.ttf /usr/X11R6/lib/X11/fonts/TTF/

Step2.
让GTK1程序找到你刚才放进去的字体。上面说的方法你还没有忘吧?让我们先修改XF86config

#vi /etc/X11/XF86config

找到
Section "Files"
.................
这一段,在里面加上一个Fontpath属性

FontPath "/usr/X11R6/lib/X11/fonts/TTF/"

当然,如果里面已经有了你放字体的路径就不用加了,如果你的路径和我不一样,那就写你的路径,你也可以随时添加自己的字体路径,道理都一样。
如果你在XF86config里发现了 Load "xtt"这行,把它注释掉。我是不用xtt的

接下来当然是准备fonts.dir 和fonts.scale了。生成这两个的文件工具前面说了。Slackware自带的是mkfontdir和mkfontscale,我个人强烈不推荐 这两个工具,它们生成的fonts.dir很不爽,simsun.ttf里找不出gbk的encoding。你可以去下载一个叫ttmkfdir的工具:ftp://216.254.0.38/linux/rawhide/1.0...0.9-7.i386.rpm
假设你已经装上了这个工具,就做如下操作

#ttmkfdir /usr/X11R6/lib/X11/fonts/TTF/ -o /usr/X11R6/lib/X11/fonts/TTF/fonts.scale

现在检查一下这个文件

#vi /usr/X11R6/lib/X11/fonts/TTF/fonts.scale

如果里面有 :1:simsun.ttfxxxxxxxxxxxxxxxxxxxx 这样以 :1:开头的行,把它们都删掉,freetype不需要这个东西,而且可能会导致一些问题。特别再注意一下是不是生成了 simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0 simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-gbk-0 这两行,因为encoding是很重要的,mkfontdir生成的fonts.dir很可能没有-gbk-0的编码,这样也会导致一些问题。所以我用 ttmkfdir
确保无误后

#cp /usr/X11R6/lib/X11/fonts/TTF/fonts.scale /usr/X11R6/lib/X11/fonts/TTF/fonts.dir (这两个文件其实是一样的)

你的gtk1程序已经可以使用字体了,但是在gtk1程序里当然还要指定你究竟要使用什么字体。对gtk1程序使用什么字体有一个全局配置文件/etc/gtk/gtkrc.zh_CN
把我的配置文件贴一下



# This file defines the fontsets for Chinese language (zh) using
# the simplified chinese standard GuoBiao as in mainland China (CN)
#
# 1999, Pablo Saratxaga <pablo@mandrakesoft.com>
#

style "gtk-default-zh-cn" {
fontset = "-*-bitstream vera sans-medium-r-normal-*-*-120-*-*-p-*-microsoft-cp1252,\
-*-simsun-medium-r-normal-*-12-*-*-*-*-*-gbk-0"
}
class "GtkWidget" style "gtk-default-zh-cn"


这个文件告诉程序,对于英文字体优先使用bitstream vera sans字体,对于中文由于bitstream vera sans没有中文字体,就使用后面的simsun字体。

至此,gtk1程序的汉化全部完成。
现在可以startx
运行一个xmms看看,界面如何?至于xmms列表显示中文可以搜索其它文章。也很简单

补充几点技巧和说明:
1. -*-bitstream vera sans-medium-r-normal-*-*-120-*-*-p-*-microsoft-cp1252 这种字体表示方法是不是很复杂?有个小技巧帮你选择自己想要的字体,/usr/X11R6/bin/下有一个程序xfontsel ,运行它。自己摆弄一下你就明白了。在这里你可以看到gtk1程序所能找到的ttf字体,有一些就是从你刚才生成的fonts.dir里读出来的。通过它你还可以得到你需要的字体的正确表达格式。
2.Slackware 9.1有了bitstream vera sans 等一系列优秀的ttf字体。它们默认也的都在/usr/X11R6/lib/X11/fonts/TTF/目录下,那些Veraxx.ttf的字体都是。 可是那个目录下的fonts.dir没有把它们列进去。如果你前面都是按照我的方法做了,刚才那步ttmkfdir已经把它们收录进去了。如果你刚才操作 的是别的目录,那就在这个/usr/X11R6/lib/X11/fonts/TTF下ttmkfdir 一次了,方法和前面的一样。
3.ttmkfdir生成的fonts.dir 和fonts.scale可能会有一些多余的编码,比如那些以ascii-0和adobe standard-0结束的行,在我这里引起了一些问题,如果你觉得有什么异常,先把这样的行都删掉。


Step3
搞定gtk2和QT程序。
基于fontconfig选择字体的程序就容易配置多,fontconfig也提供了一些更高级的功能。
类似gtk1,现让这些程序找到这些字体。前面已经说过XF86config里的Fontpath和fonts.dir文件已经没有必要了。fontconfig的核心配置文件是/etc/fonts/fonts.conf用vi打开这个文件
开始就有这么一段


<!-- Font directory list configured on Wed Apr 23 11:40:17 CST 2003 -->

<dir>/usr/X11R6/lib/X11/fonts</dir>
<dir>~/.fonts</dir>
<dir>/usr/share/fonts</dir>


这段是告诉fontconfig去这些目录包括它们的子目录里面去找字体。是不是比Fontpath和fonts.dir省事多了?
你要做的就是把你放字体的路径加上,我刚才放自己的路径已经被包括在里面了。所以不用修改它。

运行
#fc-cache
更新字体信息。
好了,现在gtk2和qt的程序就可以使用你添加的字体了,太简单了吧?而且对fonts.conf的修改马上就可以生效。不像gtk1程序修改gtkrc后还要重新运行,修改XF86config甚至还要restart X等等。

类似gtk1程序,gtk2和qt程序都有一个全局字体配置。
gtk2程序的全局配置文件是/etc/gtk-2.0/gtkrc
也把我的内容贴上来


style "user-font" {
font_name="Bitstream Vera Sans 9" }
class "*" style "user-font"


是告诉程序使用Bitstream Vera Sans ,字体大小是 9

qt程序的默认字体配置

$/usr/lib/qt-3.2.1/bin/qtconfig

出来一个图形界面,在里面就可以方便选择你要的字体了

补充几点技巧和说明:
1.刚才提到的xfontsel可以帮你查看gtk1可用的字体,那么fontconfig究竟找到了哪些字体呢?也有一个程序叫fc-list,默认在/usr/X11R6/bin/下面,运行它,会显示一个列表。里面的字体名称就是可以使用的字体。比如我刚才的gtk2配置文件的字体名字就在里面。
2./etc/fonts/fonts.conf的强大的功能有很多,其实也很复杂。详细的设置可参考本文开头给出的文章连接。
3.你应该会发现。比如在kde控制中心里选择字体的时候,你可以选择所有字体都是Tahoma,Vera sans什么的,我的gtkrc里写的也是一个英文字体,这样英文字体看起来很pp,而中文字体又是如何决定的呢?为什么我选择了英文字体而中文字体还能 正常显示呢?这就是fontconfig的功劳,在我的fonts.config里有这么两段:


<!--
Sans-serif faces
-->
<alias>
<family>Bitstream Vera Sans</family>
<family>Tahoma</family>
<family>Verdana</family>
<family>Arial</family>
<family>Helvetica</family>
<family>Nimbus Sans L</family>
<family>Luxi Sans</family>
<family>Kochi Gothic</family>
<family>AR PL KaitiM GB</family>
<family>AR PL KaitiM Big5</family>
<family>Baekmuk Dotum</family>
<family>SimSun</family>
<default><family>sans-serif</family></default>
</alias>


<alias>
<family>sans-serif</family>
<prefer>
<family>Bitstream Vera Sans</family>
<family>Tahoma</family>
<family>Verdana</family>
<family>Arial</family>
<family>Helvetica</family>
<family>Nimbus Sans L</family>
<family>Luxi Sans</family>
<family>Kochi Gothic</family>
<family>AR PL KaitiM GB</family>
<family>AR PL KaitiM Big5</family>
<family>Baekmuk Dotum</family>
<family>SimSun</family>
</prefer>
</alias>


这段告诉程序,遇到要显示sans-serif的字体,优先使用列表里在前面的字体,这里就是Bitstream Vera Sans,如果该字体不能显示需要的字符就继续在下面找,对于中文,就找到最后的SimSun(宋体)了。你如果想用其它默认的中文,就可以把你需要的中 文字体摞在<family>SimSun</family>上面。就优先使用你要的字体了。


到此为止,其实汉化已经结束了,如果你觉得这个效果还不错,那就此打住吧。如果你觉得还有些不完美,如中文细节显示的还不是很好,那就可以求助于firefly的美化包

安装这些包就很简单了,我简要说一下这些包的功能。
fontconfig-2.2.1-i486-1.Firefly.tgz 会替换你现在的/etc/fonts/fonts.conf,加上了一些firefly修改的属性。

freetype-2.1.5-i486-1.Firefly.tgz xft-2.1.2-i486-1.Firefly.tgz 这两个是字体绘制的核心部分,装上他们可以使中文显示的更完美,具体的原理我就不懂了,呵呵,也没功夫去研究。

xfree86-4.3.0-i486-5.Firefly.tgz也能改善字体显示效果,我这里不装它,任务栏和标题栏的中文粗体显示不出来。如果你网络不是很好,这个包也挺大,你可以不装它,没什么大碍。

qt-3.2.1-i486-1.Firefly.tgz 这个包装不装无所谓,还挺大的.我觉得除了让你的qt程序选择字体的时候可以显示一个中文字体名(SimSun显示为"宋体")以外没什么更有价值的功能,可以不装。


以上几步都做完了,如果不出以外的话,你gtk2和qt程序显示的英文是又粗又黑的,看起来就像用了粗体一样。如果你觉得这样挺好那就罢了。如果你和我一样,觉得脏兮兮的很难看,可以在你的/etc/fonts/fons.conf上加上这么一段


<!--
This expression is added by Akito Hirai<akito@kde.gr.jp> for convenience.
It can be used to make artificial bold versions in client libraries/applications.
-->
<match target="font">
<test name="weight">
<const>medium</const>
</test>
<test target="pattern" name="weight" compare="more">
<const>medium</const>
</test>
<edit name="weight" mode="assign">
<if>
<more>
<name>spacing</name>
<const>proportional</const>
</more>
<const>demibold</const>
<const>bold</const>
</if>
</edit>
</match>
<match target="font">
<test name="pixelsize" compare="less_eq">
<double>16</double>
</test>
<test name="pixelsize" compare="more_eq">
<double>8</double>
</test>
<edit name="antialias" mode="assign">
<bool>f</bool>
</edit>
</match>


两篇Linux下字体美化文章

因为我不喜欢用圆体、雅黑之类的,看久了太累,所以只介绍怎么把字体设置得跟windows一样。

中文支持,如果在安装Ubuntu的时 候能上网,那么非常简单,直接选中文为缺省语言就都OK了,如果不能上网,则要在安装完重启后在系统管理/语言支持中再选中中文,进行安装(假设这时的网 络已经连通,这时会安装SCIM输入法),如果不喜欢ubuntu的某些软件的中文翻译,可以在usr/share/locale-langpack下手 动删除特定的翻译文件。
点阵字体,Windows的字体要比Linux下的字体好看,也比文泉驿的字体好看,安装Windows字体并美化的方法如下:
将 Windows下(在winnt/Fonts目录下)的simsun.ttc tahoma.ttf verdana.ttf verdanab.ttf verdanaz.ttf tahomabd.ttf verdanai.ttf拷贝到/usr/share/fonts/zh_CN,如果你的windows在hda1,那么可以用下面的命令:
cd /media/hda1/windows/fonts/
sudo cp simsun.ttc tahoma.ttf verdana.ttf verdanab.ttf verdanaz.ttf tahomabd.ttf verdanai.ttf /usr/share/fonts/zh_CN/
安装字体到系统中
cd /usr/share/fonts/zh_CN
sudo mkfontscale
sudo mkfontdir
sudo fc-cache
sudo chmod 755 * (或者644也行)
通过替换/etc/fonts/language-selector.conf来配置字体,只有这么配置后,才能达到美化的效果,不要更改/etc/fonts/fonts.conf。把下面的内容覆盖原language-selector.conf的内容。
<fontconfig>
<alias>
<family>serif</family>
<prefer>
<family>Bitstream Vera Serif</family>
<family>SimSun</family>
<family>DejaVu Serif</family>
<family>AR PL ShanHeiSun Uni</family>
<family>AR PL ZenKai Uni</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>Bitstream Vera Sans</family>
<family>SimSun</family>
<family>DejaVu Sans</family>
<family>AR PL ShanHeiSun Uni</family>
<family>AR PL ZenKai Uni</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Bitstream Vera Sans Mono</family>
<family>DejaVu Sans Mono</family>
<family>SimSun</family>
</prefer>
</alias>
<match target="font" >
<test compare="contains" >
<string>Song</string>
<string>Sun</string>
<string>Kai</string>
<string>Ming</string>
</test>
<test compare="more_eq" target="pattern" >
<int>180</int>
</test>
<edit mode="assign" >
<bool>true</bool>
</edit>
</match>
<match target="font" >
<test compare="contains" >
<string>Song</string>
<string>Sun</string>
<string>Kai</string>
<string>Ming</string>
</test>
<edit >
<bool>false</bool>
</edit>
<edit >
<int>0</int>
</edit>
<edit >
<bool>true</bool>
</edit>
<edit >
<bool>false</bool>
</edit>
<edit mode="assign">
<bool>true</bool>
</edit>
<test compare="less_eq">
<int>18</int>
</test>
<edit mode="assign" >
<bool>false</bool>
</edit>
</match>
<match target="pattern">
<test >
<string>SimSun</string>
<string>SimSun-18030</string>
<string>AR PL ShanHeiSun Uni</string>
<string>AR PL New Sung</string>
<string>MingLiU</string>
<string>PMingLiU</string>
</test>
<edit binding="strong" mode="prepend" >
<string>Tahoma</string>
<string>Verdana</string>
</edit>
</match>
<match target="pattern">
<test ><string>宋体</string></test>
<edit mode="assign"><string>SimSun</string></edit>
</match>
<match target="pattern">
<test ><string>新宋体</string></test>
<edit mode="assign"><string>SimSun</string></edit>
</match>
<match target="pattern">
<test ><string>仿宋_GB2312</string></test>
<edit mode="assign"><string>FangSong_GB2312</string></edit>
</match>
<match target="pattern">
<test ><string>楷体_GB2312</string></test>
<edit mode="assign"><string>KaiTi_GB2312</string></edit>
</match>
<match target="pattern">
<test ><string>黑体</string></test>
<edit mode="assign"><string>SimHei</string></edit>
</match>

</fontconfig>
现在可以设置GNOME的字体了,应用程序字体、文档字体、桌面字体均设为Tohoma,大小9;窗口标题字体设置为Tohoma Bold,大小9;等宽字体设为Dejavu sans mono book,大小10。字体渲染选单色

终端字体可以在终端的选项中单独设置,设置为NSimSun并适当设置大小效果比较好

同样,你也可以在firefox中设置字体。
原帖地址:
http://www.phyz.net/pukiwiki/index.php?Ubuntu%E5%AE%89%E8%A3%85%E4%B8%8E%E8%AE%BE%E7%BD%AE
另外还可参考:
http://forum.ubuntu.org.cn/about6623.html
http://forum.ubuntu.org.cn/about19325.html
http://forum.ubuntu.org.cn/about6623.html

喜欢雅黑的可参考:
http://forum.ubuntu.org.cn/about32339.html

使用windows字体美化Linux (普遍适用,以opensuse 10.3为例)
by ncforest
http://ncforest.blog.163.com
suse10.3用了方正字体,已经比较漂亮了。但是如果习惯了windows字体,可以用下面的方法:
1、把windows字体拷过去
sudo mkdir /usr/share/fonts/winfont
然后把下列字体拷进去
Arial
Arial Black
Arial Bold
Arial Itailc
Arial Bold Italic

Verdana
Verdana Bold
Verdana Italic
Verdana Bold Italic

Tahoma
Tahoma Bold

SimSun
SimHei
MingLIU

然后,新建文件local.conf ,并拷入/etc/fonts/,内容如下:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- /etc/fonts/local.conf file to configure local fonts -->
<!-- author:kemean on 2007/02/23-->
<!--
    说明,这一套设置在GNome桌面和Firefox及其它GTK程序上都表现的很好,KDE中也还差不多,但Konqueror好像有自己的
    字体匹配技术,不太遵循fontconfig,所以在KDE中建议用Firefox浏览网页,这样的话GNome+KDE的中文环境都非常好了
-->
<fontconfig>

<!--
    注意:
    可能是因为优先顺序的调整,fcitx和mrxvt及fvwm的中文显示出了点问题,这里采用在Serif中添加文泉驿字体来解决

    1)Serif字体族中只有一个中文字体,WenQuanYi Bitmap Song
    2)修改~/.fcitx/config,设置中文字体为Serif,英文字体为Sans-Serif,匹配结果是:
    中文:WenQuanYi Bitmap Song;英文:Tahoma
    3)修改~/.mrxvt ,设置xftmFont(中文字体)为Serif,英文字体为Courier New,匹配结果是:
    中文:WenQuanYi Bitmap Song;英文:Courier New
    3)修改FVWM字体设置 ,设置xft字体为为Serif,匹配结果是:
    中文:WenQuanYi Bitmap Song;英文:WenQuanYi Bitmap Song
    设置方法:
    Menustyle * Font "StringEncoding=gbk-0:xft:Serif:size=10:encoding=iso10646-1"

    即,Serif做为patch 字体来用,中文以WenQuanYi Bitmap Song来解决。

-->

<!--
    直接拷在/usr/X11R6/etc/fonts/目录,不用修改fonts.conf


    注:Gnome字体设置对话框中的单位是pt,注意pt跟px之间的转换关系
    pt*dpi/inch=px    inch为72
    如:
    ?pt * 96 / 72 = ?px

    第一部分,字体优先设置和替换
-->
<!--
    字体别名设置,主要设置SimSun和NSimSun,设置之后后面的SimSun和
    NSimSun英文替换只用针对英文别名写,中文别名可以不写了。
-->
    <match target="pattern">
        <test name="family">
            <string>宋体</string>
        </test>
        <edit name="family" mode="assign">
            <string>SimSun</string>
        </edit>
    </match>
    <match target="pattern">
        <test name="family">
            <string>新宋体</string>
        </test>
        <edit name="family" mode="assign">
            <string>NSimSun</string>
        </edit>
    </match>


<!--
    Sans-serif 字体族
-->
    <alias>
        <family>Tahoma</family>
        <family>Verdana</family>
        <family>Arial</family>
        <family>Trebuchet MS</family>
        <family>Comic Sans MS</family>
        <family>SimSun</family>
        <family>SimHei</family>
        <family>FangSong_GB2312</family>
        <family>KaiTi_GB2312</family>
        <family>YouYuan</family>
        <family>LiSu</family>
        <family>STSong</family>
        <family>STZhongsong</family>
        <family>STXihei</family>
        <family>STFangsong</family>
        <family>STKaiti</family>
        <family>STXingkai</family>
        <family>STLiti</family>
        <family>STCaiyun</family>
        <family>STHupo</family>
        <family>STXinwei</family>
        <family>FZYaoTi</family>
        <family>FZShuTi</family>
        <family>Arial Unicode MS</family>
        <default><family>sans-serif</family></default>
    </alias>
<!--
    Serif 字体族
-->
    <alias>
        <family>Georgia</family>
        <family>Times New Roman</family>
        <family>WenQuanYi Bitmap Song</family>
        <default><family>serif</family></default>
    </alias>
<!--
    Monospace 字体族
-->
    <alias>
        <family>Courier New</family>
        <family>Andale Mono</family>
        <family>NSimSun</family>
        <default><family>monospace</family></default>
    </alias>


<!--
    把3个Adobe字体用MS中相对应的字体替换
-->
    <alias>
        <family>Times</family>
        <prefer>
            <family>Times New Roman</family>
        </prefer>
        <default><family>serif</family></default>
    </alias>
    <alias>
        <family>Helvetica</family>
        <prefer>
            <family>Arial</family>
        </prefer>
        <default><family>sans-serif</family></default>
    </alias>
    <alias>
        <family>Courier</family>
        <prefer>
            <family>Courier New</family>
        </prefer>
        <default><family>monospace</family></default>
    </alias>


<!--
    字体优先设置,越靠前越优先匹配
-->
    <alias>
        <family>sans-serif</family>
        <prefer>
            <family>Tahoma</family>
            <family>Verdana</family>
            <family>Arial</family>
            <family>Trebuchet MS</family>
            <family>Comic Sans MS</family>
            <family>SimSun</family>
            <family>SimHei</family>
            <family>FangSong_GB2312</family>
            <family>KaiTi_GB2312</family>
            <family>YouYuan</family>
            <family>LiSu</family>
            <family>STSong</family>
            <family>STZhongsong</family>
            <family>STXihei</family>
            <family>STFangsong</family>
            <family>STKaiti</family>
            <family>STXingkai</family>
            <family>STLiti</family>
            <family>STCaiyun</family>
            <family>STHupo</family>
            <family>STXinwei</family>
            <family>FZYaoTi</family>
            <family>FZShuTi</family>
            <family>Arial Unicode MS</family>
        </prefer>
    </alias>
    <alias>
        <family>serif</family>
        <prefer>
            <family>Georgia</family>
            <family>Times New Roman</family>
            <family>WenQuanYi Bitmap Song</family>
        </prefer>
    </alias>
    <alias>
        <family>monospace</family>
        <prefer>
            <family>Courier New</family>
            <family>Andale Mono</family>
            <family>NSimSun</family>
        </prefer>
    </alias>


<!--
    SimSun字体,英文部分用Tahoma替换,解决粗体英文破粹问题
    "宋体"不用再做设置,前面已用别名解决
-->
    <match target="pattern">
        <test name="family" >
            <string>SimSun</string>
        </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>Tahoma</string>
        </edit>
    </match>
<!--
    这里可以删除
    <match target="pattern">
        <test name="family" >
            <string>宋体</string>
        </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>Tahoma</string>
        </edit>
    </match>
-->


<!--
    NSimSun字体,英文部分用Courier New替换,解决粗体英文破粹问题,这样
    在firefox中查看源码时不会出现英文破粹
    "新宋体"不用再做设置,前面已用别名解决
-->
    <match target="pattern">
        <test name="family" >
            <string>NSimSun</string>
        </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>Courier New</string>
        </edit>
    </match>


<!--
    Courier 字体替换成 Courier New
-->
    <match target="pattern">
        <test name="family" >
            <string>Courier</string>
        </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>Courier</string>
        </edit>
    </match>


<!--
    针对Tahoma,Verdana字体,大号粗体显示太粗,
    这里我替换成Arial,临界值为20px(96 dpi 下15pt)
    15*96/72=20,注意下面的单位是像素pixelsize,可以
    测试后再换成其它值
-->
<!--
    <match target="pattern">
        <test name="family" >
            <string>Tahoma</string>
            <string>Verdana</string>
        </test>
        <test name="weight" compare="more_eq">
            <int>180</int>
        </test>
        <test name="pixelsize" compare="more_eq" >
            <double>20</double>
        </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>Arial</string>
        </edit>
    </match>
-->





<!--
    第二部分
    全局设置和调整,包括AA,HINT等
-->
<!--
    设置DPI,请设置成xdpyinfo | grep dot看到的DPI,也可以不设置。
-->
<!--
    <match target="pattern" >
        <edit name="dpi" mode="assign" >
            <double>96</double>
        </edit>
    </match>
-->


<!--
    子像素渲染设置,据需要而定,我的LCD就没开,设置为NONE,如果看到字体
    颜色有问题(如泛蓝,泛绿色等),请设置成rgb或其它值,具体参考man fonts-conf
-->
    <match target="font">
        <edit name="rgba" mode="assign">
            <const>none</const>
        </edit>
    </match>


<!--
    设置最小字体,所有字体都如此,英文优先是Tahoma 8pt
-->
    <match target="font" >
        <test name="pixelsize" compare="more_eq" >
            <double>8</double>
        </test>
        <test name="pixelsize" compare="less_eq" >
            <double>11</double>
        </test>
        <edit name="pixelsize" mode="assign" >
            <double>11</double>
        </edit>
    </match>


<!--
    设置CJK最小字体,主要体现为SimSun ,和上面的综合起来就是
    Tahoma 11px,SimSun 12px
    对应96 dpi 下的就是 8pt , 9pt
    具体临界值自己可以调整
-->
    <match target="font" >
        <test name="lang" compare="contains" >
            <string>zh</string>
            <string>ja</string>
            <string>ko</string>
        </test>
        <test name="pixelsize" compare="more_eq" >
            <double>8</double>
        </test>
        <test name="pixelsize" compare="less_eq" >
            <double>12</double>
        </test>
        <edit name="pixelsize" mode="assign" >
            <double>12</double>
        </edit>
    </match>


<!--
    支持伪斜体,从fonts.conf中粗过来的。
-->
    <match target="font">
        <!-- check to see if the font is roman -->
        <test name="slant">
            <const>roman</const>
        </test>
        <!-- check to see if the pattern requested non-roman -->
        <test target="pattern" name="slant" compare="not_eq">
            <const>roman</const>
        </test>
        <!-- multiply the matrix to slant the font -->
        <edit name="matrix" mode="assign">
            <times>
                <name>matrix</name>
                <matrix>
                    <double>1</double><double>0.2</double>
                    <double>0</double><double>1</double>
                </matrix>
            </times>
        </edit>
        <!-- pretend the font is oblique now -->
        <edit name="slant" mode="assign">
            <const>oblique</const>
        </edit>
    </match>


<!--
    支持伪粗体,从fonts.conf中粘过来的
-->
    <match target="font">
        <!-- check to see if the font is just regular -->
        <test name="weight" compare="less_eq">
            <int>100</int>
        </test>
        <!-- check to see if the pattern requests bold -->
        <test target="pattern" name="weight" compare="more_eq">
            <int>180</int>
        </test>
        <!-- set the embolden flag -->
        <edit name="embolden" mode="assign">
            <bool>true</bool>
        </edit>
    </match>


<!--
    默认AA设置
    针对自由字体,打开AA,AutoHint,关掉Hinting,样式为hintfull
    MS和CJK字体,下面专门调整
-->
    <match target="font" >
        <edit name="antialias" mode="assign" >
            <bool>true</bool>
        </edit>
        <edit name="autohint" mode="assign" >
            <bool>true</bool>
        </edit>
        <edit name="hinting" mode="assign" >
            <bool>false</bool>
        </edit>
        <edit name="hintstyle" mode="assign" >
            <const>hintfull</const>
        </edit>
    </match>


<!--
    解决中英文间距过大的问题
-->
    <match target="font">
        <test name="lang" compare="contains" >
            <string>zh</string>
            <string>ja</string>
            <string>ko</string>
        </test>
        <edit name="spacing" mode="assign" >
            <const>proportional</const>
        </edit>
        <edit name="globaladvance" mode="assign" >
            <bool>false</bool>
        </edit>
    </match>


<!--
    CJK字体AA设置,小于20px(96dpi 上是15pt)时不开AA
-->
    <match target="font" >
        <test name="lang" compare="contains" >
            <string>zh</string>
            <string>ja</string>
            <string>ko</string>
        </test>
        <test name="pixelsize" compare="more_eq" >
            <double>8</double>
        </test>
        <test name="pixelsize" compare="less_eq" >
            <double>20</double>
        </test>
        <edit name="antialias" mode="assign" >
            <bool>false</bool>
        </edit>
        <edit name="autohint" mode="assign" >
            <bool>false</bool>
        </edit>
        <edit name="hinting" mode="assign" >
            <bool>false</bool>
        </edit>
    </match>


<!--
    CJK字体AA设置,大于20px(96dpi 上是15pt)时开AA,AutoHint,Hinting
    采用hintfull,
    在我机器上autohint和hinting都开效果比较好,可以自己调整,一般两者只开一个,
    具体视情况而定
-->
    <match target="font" >
        <test name="lang" compare="contains" >
            <string>zh</string>
            <string>ja</string>
            <string>ko</string>
        </test>
        <test name="pixelsize" compare="more_eq" >
            <double>20</double>
        </test>
        <edit name="antialias" mode="assign" >
            <bool>true</bool>
        </edit>
        <edit name="autohint" mode="assign" >
            <bool>true</bool>
        </edit>
        <edit name="hinting" mode="assign" >
            <bool>true</bool>
        </edit>
    </match>


<!--
    如果是斜体CJK字体,打开AA,不喜欢可以把这一段删除掉或全部改成false
-->
    <match target="font">
        <test name="lang" compare="contains" >
            <string>zh</string>
            <string>ja</string>
            <string>ko</string>
        </test>
        <test name="slant" compare="not_eq">
            <const>roman</const>
        </test>
        <edit name="antialias" mode="assign" >
            <bool>true</bool>
        </edit>
        <edit name="autohint" mode="assign" >
            <bool>true</bool>
        </edit>
        <edit name="hinting" mode="assign" >
            <bool>true</bool>
        </edit>
    </match>


<!--
    微软字体设置
-->
<!--
    默认,打开AA和hint,不喜欢,可以全部改成false
-->
    <match target="font" >
        <test name="foundry" >
            <string>monotype</string>
            <string>microsoft</string>
        </test>
        <edit name="antialias" mode="assign" >
            <bool>false</bool>
        </edit>
        <edit name="autohint" mode="assign" >
            <bool>false</bool>
        </edit>
        <edit name="hinting" mode="assign" >
            <bool>true</bool>
        </edit>
        <edit name="hintstyle" mode="assign" >
            <const>hintfull</const>
        </edit>
    </match>



<!--
    如果是Courier New,打开AA,AutoHint,Hinting,不喜欢可以全部改成false
-->
    <match target="font" >
        <test name="family" >
            <string>Courier</string>
            <string>Courier New</string>
        </test>
        <edit name="antialias" mode="assign" >
            <bool>false</bool>
        </edit>
        <edit name="autohint" mode="assign" >
            <bool>false</bool>
        </edit>
        <edit name="hinting" mode="assign" >
            <bool>true</bool>
        </edit>
        <edit name="hintstyle" mode="assign" >
            <const>hintfull</const>
        </edit>
    </match>


<!--
    Courier New 字体大小设置
    这里设置最小为14.7px(96 dpi 上是11pt),可以依情况而定
-->
    <match target="font" >
        <test name="family" >
            <string>Courier New</string>
        </test>
        <test name="pixelsize" compare="less_eq" >
            <double>12</double>
        </test>
        <edit name="pixelsize" mode="assign" >
            <double>12</double>
        </edit>
    </match>



</fontconfig>

最后,sudo
fc-cache -fv
,然后字体设置中选择tahoma 9,firefox中也这样设就差不多了。

下面是使用微软雅黑的配置文件(Vista效果):

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- /etc/fonts/local.conf file to configure local fonts -->
<!-- author:kemean on 2007/02/23-->

<fontconfig>


<!--
   Part 1:
   fonts prefer and substitution
-->
<!--
   fonts alias settings
-->
   <match target="pattern">
      <test name="family">
         <string>宋体</string>
      </test>
      <edit name="family" mode="assign">
         <string>SimSun</string>
      </edit>
   </match>
   <match target="pattern">
      <test name="family">
         <string>新宋体</string>
      </test>
      <edit name="family" mode="assign">
         <string>NSimSun</string>
      </edit>
   </match>
   <match target="pattern">
      <test name="family">
         <string>微软雅黑</string>
      </test>
      <edit name="family" mode="assign">
         <string>Microsoft Yahei</string>
      </edit>
   </match>
   <match target="pattern">
      <test name="family">
         <string>微软正黑体</string>
      </test>
      <edit name="family" mode="assign">
         <string>Microsoft JhengHei</string>
      </edit>
   </match>


<!--
   Mark common families with their generics so we'll get
   something reasonable
-->
<!--
   Sans-serif faces
-->
   <alias>
      <family>Tahoma</family>
      <family>Verdana</family>
      <family>Arial</family>
      <family>Trebuchet MS</family>
      <family>Comic Sans MS</family>
      <family>Microsoft YaHei</family>
      <family>SimSun</family>
      <family>SimHei</family>
      <family>FangSong_GB2312</family>
      <family>KaiTi_GB2312</family>
      <family>YouYuan</family>
      <family>LiSu</family>
      <family>STSong</family>
      <family>STZhongsong</family>
      <family>STXihei</family>
      <family>STFangsong</family>
      <family>STKaiti</family>
      <family>STXingkai</family>
      <family>STLiti</family>
      <family>STCaiyun</family>
      <family>STHupo</family>
      <family>STXinwei</family>
      <family>FZYaoTi</family>
      <family>FZShuTi</family>
      <family>Microsoft JhengHei</family>
      <family>Arial Unicode MS</family>
      <default><family>sans-serif</family></default>
   </alias>
<!--
   Serif faces
-->
   <alias>
      <family>Georgia</family>
      <family>Times New Roman</family>
      <family>YaHeiConsolas</family>
      <default><family>serif</family></default>
   </alias>
<!--
   Monospace faces
-->
   <alias>
      <family>Courier New</family>
      <family>Andale Mono</family>
      <family>Microsoft YaHei</family>
      <family>NSimSun</family>
      <default><family>monospace</family></default>
   </alias>


<!--
   Alias well known font names to MS TrueType fonts.
   These substitution TrueType faces for similar Type1
   faces to improve screen appearance.
-->
   <alias>
      <family>Times</family>
      <prefer>
         <family>Times New Roman</family>
      </prefer>
      <default><family>serif</family></default>
   </alias>
   <alias>
      <family>Helvetica</family>
      <prefer>
         <family>Arial</family>
      </prefer>
      <default><family>sans-serif</family></default>
   </alias>
   <alias>
      <family>Courier</family>
      <prefer>
         <family>Courier New</family>
      </prefer>
      <default><family>monospace</family></default>
   </alias>


<!--
   Provide required aliases for standard names
-->
   <alias>
      <family>sans-serif</family>
      <prefer>
         <family>Tahoma</family>
         <family>Verdana</family>
         <family>Arial</family>
         <family>Trebuchet MS</family>
         <family>Comic Sans MS</family>
         <family>Microsoft YaHei</family>
         <family>SimSun</family>
         <family>SimHei</family>
         <family>FangSong_GB2312</family>
         <family>KaiTi_GB2312</family>
         <family>YouYuan</family>
         <family>LiSu</family>
         <family>STSong</family>
         <family>STZhongsong</family>
         <family>STXihei</family>
         <family>STFangsong</family>
         <family>STKaiti</family>
         <family>STXingkai</family>
         <family>STLiti</family>
         <family>STCaiyun</family>
         <family>STHupo</family>
         <family>STXinwei</family>
         <family>FZYaoTi</family>
         <family>FZShuTi</family>
         <family>Microsoft JhengHei</family>
         <family>Arial Unicode MS</family>
      </prefer>
   </alias>
   <alias>
      <family>serif</family>
      <prefer>
         <family>Georgia</family>
         <family>Times New Roman</family>
         <family>YaHeiConsolas</family>
      </prefer>
   </alias>
   <alias>
      <family>monospace</family>
      <prefer>
         <family>Courier New</family>
         <family>Andale Mono</family>
         <family>Microsoft YaHei</family>
         <family>NSimSun</family>
      </prefer>
   </alias>


<!--
   SimSun english portion substitutionsubstitution
-->
   <match target="pattern">
      <test name="family" >
         <string>SimSun</string>
      </test>
      <edit name="family" mode="assign">
         <string>Microsoft YaHei</string>
      </edit>
      <edit name="family" mode="prepend" binding="strong">
         <string>Tahoma</string>
      </edit>
   </match>


<!--
   NSimSun english portion substitutionsubstitution
-->
   <match target="pattern">
      <test name="family" >
         <string>NSimSun</string>
      </test>
      <edit name="family" mode="assign">
         <string>Microsoft YaHei</string>
      </edit>
      <edit name="family" mode="prepend" binding="strong">
         <string>Courier New</string>
      </edit>
   </match>



<!--
   Courier substitution
-->
   <match target="pattern">
      <test name="family" >
         <string>Courier</string>
      </test>
      <edit name="family" mode="prepend" binding="strong">
         <string>Courier New</string>
      </edit>
   </match>


<!--
   Bold Tahoma/Verdana substitution:
   when its size more than 20px,substitution with Bold Arial
-->
   <match target="pattern">
      <test name="family" >
         <string>Tahoma</string>
         <string>Verdana</string>
      </test>
      <test name="weight" compare="more_eq">
         <int>180</int>
      </test>
      <test name="pixelsize" compare="more_eq" >
         <double>20</double>
      </test>
      <edit name="family" mode="prepend" binding="strong">
         <string>Arial</string>
      </edit>
   </match>





<!--
   Part 2:
   global settings and modify
-->
<!--
   Target dots per inch, change dpi to 96
-->
   <match target="pattern" >
      <edit name="dpi" mode="assign" >
         <double>96</double>
      </edit>
   </match>


<!--
   Enable sub-pixel rendering.
   If you are using CRT, set rgb -> none
-->
   <match target="font" >
      <edit name="rgba" mode="assign">
         <const>rgb</const>
      </edit>
   </match>


<!--
   Font size settings:
   set the apposite font size,so it's easy to be read
-->
   <match target="pattern" >
      <test name="pixelsize" compare="more_eq" >
         <double>8</double>
      </test>
      <test name="pixelsize" compare="less_eq" >
         <double>12</double>
      </test>
      <edit name="pixelsize" mode="assign" >
         <double>12</double>
      </edit>
   </match>


<!--
   Artificial oblique for fonts without an italic or oblique version
-->
   <match target="font" >
      <!-- check to see if the font is roman -->
      <test name="slant">
         <const>roman</const>
      </test>
      <!-- check to see if the pattern requested non-roman -->
      <test target="pattern" name="slant" compare="not_eq">
         <const>roman</const>
      </test>
      <!-- multiply the matrix to slant the font -->
      <edit name="matrix" mode="assign">
         <times>
            <name>matrix</name>
            <matrix>
               <double>1</double><double>0.2</double>
               <double>0</double><double>1</double>
            </matrix>
         </times>
      </edit>
      <!-- pretend the font is oblique now -->
      <edit name="slant" mode="assign">
         <const>oblique</const>
      </edit>
   </match>


<!--
   Synthetic emboldening for fonts that do not have bold face available
-->
   <match target="font" >
      <!-- check to see if the font is just regular -->
      <test name="weight" compare="less_eq">
         <int>100</int>
      </test>
      <!-- check to see if the pattern requests bold -->
      <test target="pattern" name="weight" compare="more_eq">
         <int>180</int>
      </test>
      <!-- set the embolden flag -->
      <edit name="embolden" mode="assign">
         <bool>true</bool>
      </edit>
   </match>


<!--
   Default Fonts setting
   here autohint = ture / hinting = false is for free fonts in your system
   we will use autohint = false / hinting = true for MS core fonts
-->
   <match target="font" >
      <edit name="antialias" mode="assign" >
         <bool>true</bool>
      </edit>
      <edit name="autohint" mode="assign" >
         <bool>true</bool>
      </edit>
      <edit name="hinting" mode="assign" >
         <bool>false</bool>
      </edit>
      <edit name="hintstyle" mode="assign" >
         <const>hintfull</const>
      </edit>
   </match>


<!--
   The dual-width Asian fonts (spacing=dual) are not rendered correctly,
   apparently FreeType forces all widths to match. Trying to disable the
   width forcing code by setting globaladvance=false alone doesn't  help.
   As a brute force workaround, also set spacing=proportional, i.e. handle
   them as proportional fonts:
-->
   <match target="font" >
      <test name="lang" compare="contains" >
         <string>zh</string>
         <string>ja</string>
         <string>ko</string>
      </test>
      <edit name="spacing" mode="assign" >
         <const>proportional</const>
      </edit>
      <edit name="globaladvance" mode="assign" >
         <bool>false</bool>
      </edit>
   </match>


<!--
   CJK antialias settings:
   when font size (in pixel) between 8 and 20px
-->
   <match target="font" >
      <test name="lang" compare="contains" >
         <string>zh</string>
         <string>ja</string>
         <string>ko</string>
      </test>
      <test name="pixelsize" compare="more_eq" >
         <double>8</double>
      </test>
      <test name="pixelsize" compare="less_eq" >
         <double>20</double>
      </test>
      <edit name="antialias" mode="assign" >
         <bool>false</bool>
      </edit>
      <edit name="autohint" mode="assign" >
         <bool>false</bool>
      </edit>
      <edit name="hinting" mode="assign" >
         <bool>false</bool>
      </edit>
      <edit name="hintstyle" mode="assign" >
         <const>hintnone</const>
      </edit>
   </match>


<!--
   CJK antialias settings:
   when font size (in pixel) more than 20px, enable AA.
-->
   <match target="font" >
      <test name="lang" compare="contains" >
         <string>zh</string>
         <string>ja</string>
         <string>ko</string>
      </test>
      <test name="pixelsize" compare="more_eq" >
         <double>20</double>
      </test>
      <edit name="antialias" mode="assign" >
         <bool>true</bool>
      </edit>
      <edit name="autohint" mode="assign" >
         <bool>true</bool>
      </edit>
      <edit name="hinting" mode="assign" >
         <bool>true</bool>
      </edit>
      <edit name="hintstyle" mode="assign" >
         <const>hintfull</const>
      </edit>
   </match>


<!--
   Italic CJK fonts,enable AA
-->
   <match target="font" >
      <test name="lang" compare="contains" >
         <string>zh</string>
         <string>ja</string>
         <string>ko</string>
      </test>
      <test name="slant" compare="not_eq">
         <const>roman</const>
      </test>
      <edit name="antialias" mode="assign" >
         <bool>true</bool>
      </edit>
      <edit name="autohint" mode="assign" >
         <bool>true</bool>
      </edit>
      <edit name="hinting" mode="assign" >
         <bool>true</bool>
      </edit>
      <edit name="hintstyle" mode="assign" >
         <const>hintfull</const>
      </edit>
   </match>


<!--
   Microsoft fonts settings
-->
<!--
   default : smoothed and hinted
-->
   <match target="font" >
      <test name="foundry" compare="contains" >
         <string>monotype</string>
         <string>microsoft</string>
      </test>
      <edit name="antialias" mode="assign" >
         <bool>true</bool>
      </edit>
      <edit name="autohint" mode="assign" >
         <bool>false</bool>
      </edit>
      <edit name="hinting" mode="assign" >
         <bool>true</bool>
      </edit>
      <edit name="hintstyle" mode="assign" >
         <const>hintfull</const>
      </edit>
   </match>


<!--
   Courier New:
   both enable autohint and hinting looks very well.
-->
   <match target="font" >
      <test name="family" compare="contains" >
         <string>Courier</string>
         <string>Courier New</string>
      </test>
      <edit name="antialias" mode="assign" >
         <bool>true</bool>
      </edit>
      <edit name="autohint" mode="assign" >
         <bool>true</bool>
      </edit>
      <edit name="hinting" mode="assign" >
         <bool>true</bool>
      </edit>
      <edit name="hintstyle" mode="assign" >
         <const>hintfull</const>
      </edit>
   </match>


<!--
   Courier New font size
-->
   <match target="font" >
      <test name="family" compare="eq" >
         <string>Courier New</string>
      </test>
      <test name="pixelsize" compare="less_eq" >
         <double>14.7</double>
      </test>
      <edit name="pixelsize" mode="assign" >
         <double>14.7</double>
      </edit>
   </match>


<!--
   Comic Sans MS font size
-->
<!--
   <match target="font" >
      <test name="family" compare="eq" >
         <string>Comic Sans MS</string>
      </test>
      <test name="pixelsize" compare="less_eq" >
         <double>14.7</double>
      </test>
      <edit name="pixelsize" mode="assign" >
         <double>14.7</double>
      </edit>
   </match>
-->

<!--
   <alias>
      <family>Comic Sans MS</family>
      <accept>
         <family>Microsoft YaHei</family>
      </accept>
   </alias>
-->

</fontconfig>