1 两套字体
XFree86系统有两套的字体系统,这也是为什么X-window中字体设置较复杂的原因之一。这两套的字体系统分别是:核心X11字体系统和Xft字体系统。核心X11字体系统是应用最广泛的一套字体系统,所有的X系统都支持。Xft字体系统是一个新的字体技术,只能用在基于XFree86系统的X系统上,但该套字体系统配置简单,容易使用,将是未来发展的方向。
1.1 Xft
Xft是一个library,它没有自已的配置机制,它依靠 fontconfig库来配置和定制字体,Xft负责字体的显示。也就是说, fontconfig是一种让X系统可以找到某种字体的库,而Xft是负责在X系统中把fontconfig库找到的字体如何显示出来的库。所以讨论 Xft字体配置其实就是讨论fontconfig。fontconfig包含在XFree86发布版中。
fontconfig的作用:自动搜索字体路径,发现新拷贝的字体;当需显示的字体不存在时,会自动选择其它字体代替显示。这也就是我们在美化字体时为什么要调整字体的排列顺序的原因;配合Xft等X系统的渲染引擎,实现质量的字体输出。
fontconfig 的配置文件有三个,一个是系统级的配置文件,位于/etc/fonts/fonts.conf,该目录下还有一个 local.conf,一般我们只修改local.conf文件,fonts.conf一般不建议去修改,不过fontconfig2.3以上版本已经取消掉了local.conf,系统级的配置全部是fonts.conf文件,并且2.3版的fontconfig已经进入Sarge。第三个配置文件是用户主目录下的 ~/.fonts.conf,它是用户级的字体配置文件,只对当前用户有效。这三个文件的格式是一样的,都是一个XML格式的文件。该XML文件的语法规则在fonts.dtd里定义。详细的配置介绍请参考中国Linux公社中的“Linux高质量字体研究”论坛。
在Xft字体系统中安装新的字体是很简单的,只需把字体文件拷贝到fonts.conf中指定的字体文件目录即可,fontconfig会自动感知新字体。默认的字体目录有四个,分别是:
[code]/usr/share/fonts
/usr/X11R6/lib/X11/fonts/Type1
/usr/local/share/fonts
~/.fonts[/code]
当然也能增加其他目录,只要手动修改/etc/X11/fs/config文件,给其中catalogue那一行最后加上你的字体路径就可以了。
把新字体文件拷贝到字体目录后,我们就可用fc-list命令列出新安装的字体,如果没有,可用fc-cache命令手动更新系统字体配置。这样,再运行 fc-list就应该可以看到新安装的字体了。使用Xft字体系统是不用配置/etc/X11/XF86config-4的,也不用重启X服务器使配置生效。Xft字体系统比起传统的X11核心字体系统来说真的是方便很多。所以它是未来的发展方向。目前,并不是所有的应用程序都支持Xft字体系统。下面是各类程序对Xft字体系统的支持情况介绍:
GTK+2.x和QT程序都可以使用Xft字体系统,但GTK+1.x程序是不支持Xft字体系统的,它只能使用X11核心字体系统。
GTK+2.2版本及以上的程序默认使用Xft字体系统,不用进行配置。GTK+2.0程序如果要使用Xft,则需设置环境变量GTK_USE_XFT=1。
GTK +2.x程序字体配置可通过gnome桌面系统提供的gnome-font-properties工具来配置,该工具可在GNOME桌面环境中的"应用程序"--"桌面首选项"--"字体"中找到。GTK+2.x程序还有一个全局配置文件/etc/gtk-2.0/gtkrc,里面可设置 GTK+2.x程序所用字体,该文件的内容如下:
[code]style "gtk-default-zh-cn" &
font_name = "Bitstream Vera Sans 10,SimSun 10"
&
class "GtkWidget" style "gtk-default-zh-cn"[/code]
这样GTK+2.x程序的英文会用10号的Bitstream Vera Sans字体显示,中文会用10号的SimSun字体显示。
QT程序的默认字体可在KDE的“控制中心”--“外观和主题”--“字体”中设置,也可运行qtconfig图形化配置工具设置。但好象控制中心的设置优先级高于qtconfig工具。
1.2 X11核心字体系统
配置X11核心字体有两步,第一步是建立字体目录,在该目录中包含字体文件。第二步是配置X服务器,使它能使用这些字体。下面我以配置simsun.ttc字体为例说明:
在/usr/share/fonts/truetype/目录下建一目录:mkdir /usr/share/fonts/truetype/ms
把微软的simsun和tahoma字体复制到该目录下,并改名:
[code]cp simsun.ttc /usr/share/fonts/truetype/ms/simsun.ttf
cp tahoma.ttf /usr/share/fonts/truetype/ms/tahoma.ttf[/code]
进入字体目录cd /usr/share/fonts/truetype/ms/,执行ttmkfdir,如果没这个命令,则apt-get install ttmkfdir安装一个,然后执行,这个命令将生成fonts.scale,复制该文件一份命名为fonts.dir:cp fonts.scale fonts.dir。
将simsun目录加入/etc/X11/XF86Config-4里设定字体路径的那一部分,可以给那部分后面追加一行FontPath "/usr/share/fonts/truetype/ms"(记住,如果想要Xft也使用该字体的话,修改/etc/X11/fs/config文件,给其中catalogue那一行最后加上/usr/share/fonts/truetype/ms/),重启X服务器后就可使用simsun和 tahoma字体了。xlsfonts命令可列出系统中已安装的X11核心字体。
GTK+1.x程序使用X11核心字体系统。要在 GTK+1.x程序中正确显示中文,需修改/etc/gtk/gtkrc.zh_CN,将其中的引号内的字体描述信息全删除掉,改为“-adobe- helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,-misc-simsun-medium-r-normal -*-*-*-*-*-gbk-0,-*-”,这样GTK+1.x程序就应该可以正确地显示中文了。
2 字体的美化
安装好字体以后,就是对字体的美化设置了。现在多数的程序都支持Xft字体系统的fontconfig库,所以调整该字体系统就可使程序达到很好的显示效果。具体调整方法是:使用的是2.2版本fontconfig是修改/etc/fonts/local.conf,因为fonts.conf是系统级的字体配置文件,一般不要修改该文件,它通过include指令应用local.conf文件里的配置信息;;2.3以上版本的fontconfig则修改 /etc/fonts/fonts.conf文件,已经取消掉了local.conf文件。此外还有个~/.fonts.conf,它是用户级字体配置文件,修改此文件也能达到效果。
我用的fontconfig版本是2.3.1-2,所以就直接修改/etc/fonts/fonts.conf文件,以下是我调整字体的过程:
2.1 重排字体显示的优先级,使中英文字体更美观,排在最前面的字体会优先显示,如果没有该字体,则使用下一行的字体,以次类推
找到
[code] [/code]
和
[code] [/code]
在
[code]
……
然后找到
[code] [/code]
在
[code]
……
这儿改完了吧,下面还有一个地方,
[code] [/code]
发现没有,这也是三种别名:serif、sans-serif、monospace,这儿怎么改不用我说了吧?
2.2 调整文字间距过大问题:
加入以下代码:
[code]
2.3 关闭所有10至15号字体的抗锯齿功能:
加入以下代码:
[code]
ylc2014 于 2014-08-14 13:38:38发表:
高手。
东方E品狼 于 2007-01-07 21:14:10发表:
真是高手呀.:0L
lijunyan_888 于 2007-01-06 23:55:27发表:
现在才看到,也起来顶一下吧~~~呵呵
夏雨 于 2006-09-12 09:05:34发表:
谢谢介绍