debian中文界面美化
时间:2006-05-31 来源:sheensky
对于使用X Window的用户而言,拥有一个漂亮的界面是非常重要的,只有这样,工作的时候才能心情娱悦,否则,看着大小不一或者是朦朦胧胧的字体,恐怕没人会有心情做自己的工作。
由于中文TTF字库的版权原因,很多Linux的发型版都没有携带最常用的简体中文字库。虽然台湾的文鼎公司捐助了四款中文字体给自由社区,但其中的简体 中文字体却只不完整地支持GB2312的字符集,对于多数应用而言都是不够的。RedHat等发型版购买了一些中文字体,但其效果却并不怎么好,因此, RH/Fedora的中文用户一般也都会安装其它的中文字体。
Debian的字体管理有自己的一套,可以说非常方便,因为要美化Debian的中文桌面也是非常容易的。在这里,我只介绍如何是使用已经打包的 中文字体来完成对系统的美化,自己制作中文字体包以及Debian字体管理程序defoma的使用,请参考相关的文档。此外,本文中介绍的内容仅仅适用于 Sarge和Sid的用户,对于Woody的用户而言,有些关键的软件包对中文的支持还不是很好。
安装必要的软件包
要美化自己的桌面环境,首先必须要安装一些软件包,用管理员的身份使用如下命令安装,如果已经安装过的则可以跳过这一步。
代码: [复制到剪贴板]
1. # apt-get install x-ttcidfont-conf
这个软件包是defoma的一个插件,用于管理TrueType和CID字体。我们是要使用其中管理TrueType字体的部分。
在安装的过程中,系统会提示你将两个目录加入到X Window的配置文件中。如果不做这一步,传统的X Window应用程序将会无法使用defoma管理的TrueType字体。因此,用文本编辑器编辑/etc/X11/XF86Config-4,在其中 Files一节中加入:
代码: [复制到剪贴板]
1. FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
2. FontPath "/var/ilb/defoma/x-ttcidfont-conf.d/dirs/CID"
如果你确信自己并未使用CID字体,可以不加第二行。
安装英文字体包
虽然本文重点在于中文桌面的美化,但没有漂亮的英文字体,桌面也是好看不了的。在Linux上可以选择的英文字体非常多,其中我个人比较欣赏的是 由 Bitstream出品的Vera系列字体,和由Microsoft提供的Windows核心字体。前者是一款开源字体,而后者则可以从 SourceForge下载免费使用。由于很多文档在Windows上编写,使用Windows的核心字体可以获得最好的显示效果。
Bitstream的字体可以直接用apt-get命令安装,而MS的核心字体则需要先从SourceForge的Smart package of Microsoft's core fonts项目下载,或者是在安装的过程中由安装程序下载。使用如下命令可以安装上述字体:
代码: [复制到剪贴板]
1. # apt-get install ttf-bitstream-vera msttcorefonts
在安装后者时需提供已下载字体包的路径或提供可以直接访问SourceForge的网络环境。
安装中文字体包
由于需要安装的中文字体包并非Debian官方发布中的内容,因此,需要修改/etc/apt/sources.list,在其中加入如下内容:
代码: [复制到剪贴板]
1. deb http://10.1.0.155/~liling/debian/ttfonts/ ./
然后执行如下命令:
代码: [复制到剪贴板]
1. # apt-get update
2. # apt-get install ttf-microsoft-simsun ttf-microsoft-simhei \
3. ttf-microsoft-simyou ttf-microsoft-simli
这些中文字体包使用的是中文Win98及Office中的TTF字体,为了能配合cjk-latex,在打包时选择了TTF而非TTC字体。
这些字体在X Window的应用程序中可以通过-default-song-*、-default-hei-*、-default-youyuan-*和- default-lisu-*来访问。另外两款常用的中文字型仿宋和楷体,我们就使用文鼎公司提供的版本,它们在Debian中的软件包的名字是ttf- arphic-gbsn00lp和ttf-arphic-gkai00mp,可以用apt-get命令来安装。
中文字体安装好后,可以重新启动X Window或者是用xset刷新字体,然后再用xfontsel便可看到新的字体了。
同时,使用GNOME或者KDE也可以在字体选择的对话框中看到新的字体了。
修改fontconfig配置
安装好中文TrueType字体之后,可以通过修改应用程序的配置达到获得漂亮字体的效果,然而,是否有一种可以不需要做任何的修改就得到漂亮字体的方案呢?答案是肯定的,只要修改fontconfig的配置就可以了。
fontconfig的配置是XML格式的文件,它的作用就是在应用程序所需要的字体名称和系统安装好的字体之间进行匹配,以及修改字体的缺省配置,如AA(AntiAlias)等。
fontconfig有两个系统配置文件和一个用户配置文件。其中系统配置文件分别是/etc/fonts/fonts\.conf和 /etc/fonts/local.conf。前者供发型版的制作者使用,后者供系统管理员使用。后者的优先级比较高,这样一旦为一个系统配置好字体,它 就不会受到发型版提供者所提供的软件包改动的影响,即便升级fontconfig软件包,也不用担心编写好的配置被覆盖。在每个用户的Home目录中,也 可以存放一个.fonts\.conf文件,这个文件的优先级最高,但它只影响当前的用户。
自己改fontconfig的配置是一件比较麻烦的事情,最方便的就是把别人已经配置好的local.conf拿来,覆盖原先的版本,或者是作为个人的配置文件。在此,给出我正在使用的local.conf文件以供参考。
安装好字体配置文件后,再次重启X Window,便可以得到漂亮的字体了。
个别软件的问题
由于有一些软件并非专为GNOME或KDE编写,因此其字体配置会有特殊的地方。而传统的X Window应用程序也无法直接使用fontconfig的成果,因此就需要对它们进行一些特别的配置。
Mozilla浏览器
Mozilla浏览器以及使用它作为核心的浏览器如Epiphany和Galeon需要安装插件才能正确使用xft来显示字体。只要安装软件包mozilla-xft就可以了。如果使用前面所属的配置,无需修改便可看到漂亮的字体。
Emacs编辑器
Emacs是一款功能非常强大的编辑软件,对于它,在此我们不多做介绍。为了让它能够显示漂亮的中文字体,需要修改它的配置文件~/.emacs。将如下内容加入到该文件中即可:
代码: [复制到剪贴板]
1. ;; create a fontsets
2. (create-fontset-from-fontset-spec
3. "-*-fixed-medium-r-normal-*-12-*-*-*-*-*-fontset-12,
4. chinese-gb2312:*-song-medium-r-normal-*-12-*")
5. (create-fontset-from-fontset-spec
6. "-*-fixed-medium-r-normal-*-14-*-*-*-*-*-fontset-14,
7. chinese-gb2312:*-song-medium-r-normal-*-14-*")
8. (setq default-frame-alist (append '((font . "fontset-14"))))
如果你的Emacs还不能支持中文,则还需要进行相应的配置。
GTK 1.x
对于早期的使用GTK 1.x的应用程序,它们有自己特有的配置字体的方式,对于简体中文而言,只要修改/etc/gtk/gtkrc.zh_CN,并将内容替换为:
代码: [复制到剪贴板]
1.style "gtk-default-zh-cn"{
2.fontset="-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
3.-default-song-medium-r-normal--12-*-*-*-*-gbk-0,\
4.*-r-*"
5.}
6.class "GtkWidget" style "gtk-default-zh-cn"
locale.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<include ignore_missing="yes">/var/lib/defoma/fontconfig.d/fonts.conf</include>
<!-- Uncomment below to enable bitmapped fonts -->
<!--
<dir>/usr/X11R6/lib/X11/fonts</dir>
-->
<!-- Uncomment below to enable subpixel rendering -->
<!--
<match target="font">
<test qual="all" name="rgba">
<const>unknown</const>
</test>
<edit name="rgba" mode="assign"><const>rgb</const></edit>
</match>
-->
<!-- Uncomment below to enable the freetype autohinter module -->
<!--
<match target="font">
<edit name="autohint" mode="assign">
<bool>true</bool>
</edit>
</match>
-->
<!-- Disable font alias for Chinese 12-16 -->
<match target="font">
<test qual="any" name="family" compare="eq">
<string>SimSun</string>
<string>SimHei</string>
</test>
<test name="pixelsize" compare="more_eq">
<double>12</double>
</test>
<test name="pixelsize" compare="less_eq">
<double>16</double>
</test>
<edit name="antialias">
<bool>false</bool>
</edit>
</match>
<alias>
<family>Bitstream Vera Sans Mono</family>
<prefer>
<family>SimSun</family>
</prefer>
</alias>
<alias>
<family>SimSun</family>
<default>
<family>sans-serif</family>
<family>serif</family>
<family>monospace</family>
</default>
</alias>
<match target="pattern">
<test qual="any" name="family">
<string>serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Bitstream Vera Serif</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Bitstream Vera Sans</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>monospace</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Bitstream Vera Sans Mono</string>
</edit>
</match>
<alias>
<family>serif</family>
<prefer>
<family>Bitstream Vera Serif</family>
<family>SimSun</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>Bitstream Vera Sans</family>
<family>SimSun</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Bitstream Vera Sans Mono</family>
<family>SimSun</family>
</prefer>
</alias>
<!--
Add by [email protected]
Artificial bold for fonts without a bold version.
-->
<match target="font">
<test target="pattern" name="weight" compare="more">
<const>medium</const>
</test>
<edit name="weight" mode="assign">
<const>bold</const>
</edit>
</match>
<!--
Add by [email protected]
Disable "Global Advance" for all CJK mono spacing fonts.
-->
<match target="font">
<test target="pattern" name="lang" compare="contains">
<string>zh-tw</string>
<string>zh-cn</string>
<string>ja</string>
<string>ko</string>
</test>
<test name="spacing" compare="eq">
<const>mono</const>
</test>
<edit name="globaladvance" mode="assign">
<bool>false</bool>
</edit>
</match>
<!--
Add by [email protected]
Enable "hinting & autohint" for all fonts.
-->
<match target="font">
<edit name="hinting" mode="assign">
<bool>true</bool>
</edit>
<edit name="autohint" mode="assign">
<bool>true</bool>
</edit>
</match>
</fontconfig>
由于中文TTF字库的版权原因,很多Linux的发型版都没有携带最常用的简体中文字库。虽然台湾的文鼎公司捐助了四款中文字体给自由社区,但其中的简体 中文字体却只不完整地支持GB2312的字符集,对于多数应用而言都是不够的。RedHat等发型版购买了一些中文字体,但其效果却并不怎么好,因此, RH/Fedora的中文用户一般也都会安装其它的中文字体。
Debian的字体管理有自己的一套,可以说非常方便,因为要美化Debian的中文桌面也是非常容易的。在这里,我只介绍如何是使用已经打包的 中文字体来完成对系统的美化,自己制作中文字体包以及Debian字体管理程序defoma的使用,请参考相关的文档。此外,本文中介绍的内容仅仅适用于 Sarge和Sid的用户,对于Woody的用户而言,有些关键的软件包对中文的支持还不是很好。
安装必要的软件包
要美化自己的桌面环境,首先必须要安装一些软件包,用管理员的身份使用如下命令安装,如果已经安装过的则可以跳过这一步。
代码: [复制到剪贴板]
1. # apt-get install x-ttcidfont-conf
这个软件包是defoma的一个插件,用于管理TrueType和CID字体。我们是要使用其中管理TrueType字体的部分。
在安装的过程中,系统会提示你将两个目录加入到X Window的配置文件中。如果不做这一步,传统的X Window应用程序将会无法使用defoma管理的TrueType字体。因此,用文本编辑器编辑/etc/X11/XF86Config-4,在其中 Files一节中加入:
代码: [复制到剪贴板]
1. FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
2. FontPath "/var/ilb/defoma/x-ttcidfont-conf.d/dirs/CID"
如果你确信自己并未使用CID字体,可以不加第二行。
安装英文字体包
虽然本文重点在于中文桌面的美化,但没有漂亮的英文字体,桌面也是好看不了的。在Linux上可以选择的英文字体非常多,其中我个人比较欣赏的是 由 Bitstream出品的Vera系列字体,和由Microsoft提供的Windows核心字体。前者是一款开源字体,而后者则可以从 SourceForge下载免费使用。由于很多文档在Windows上编写,使用Windows的核心字体可以获得最好的显示效果。
Bitstream的字体可以直接用apt-get命令安装,而MS的核心字体则需要先从SourceForge的Smart package of Microsoft's core fonts项目下载,或者是在安装的过程中由安装程序下载。使用如下命令可以安装上述字体:
代码: [复制到剪贴板]
1. # apt-get install ttf-bitstream-vera msttcorefonts
在安装后者时需提供已下载字体包的路径或提供可以直接访问SourceForge的网络环境。
安装中文字体包
由于需要安装的中文字体包并非Debian官方发布中的内容,因此,需要修改/etc/apt/sources.list,在其中加入如下内容:
代码: [复制到剪贴板]
1. deb http://10.1.0.155/~liling/debian/ttfonts/ ./
然后执行如下命令:
代码: [复制到剪贴板]
1. # apt-get update
2. # apt-get install ttf-microsoft-simsun ttf-microsoft-simhei \
3. ttf-microsoft-simyou ttf-microsoft-simli
这些中文字体包使用的是中文Win98及Office中的TTF字体,为了能配合cjk-latex,在打包时选择了TTF而非TTC字体。
这些字体在X Window的应用程序中可以通过-default-song-*、-default-hei-*、-default-youyuan-*和- default-lisu-*来访问。另外两款常用的中文字型仿宋和楷体,我们就使用文鼎公司提供的版本,它们在Debian中的软件包的名字是ttf- arphic-gbsn00lp和ttf-arphic-gkai00mp,可以用apt-get命令来安装。
中文字体安装好后,可以重新启动X Window或者是用xset刷新字体,然后再用xfontsel便可看到新的字体了。
同时,使用GNOME或者KDE也可以在字体选择的对话框中看到新的字体了。
修改fontconfig配置
安装好中文TrueType字体之后,可以通过修改应用程序的配置达到获得漂亮字体的效果,然而,是否有一种可以不需要做任何的修改就得到漂亮字体的方案呢?答案是肯定的,只要修改fontconfig的配置就可以了。
fontconfig的配置是XML格式的文件,它的作用就是在应用程序所需要的字体名称和系统安装好的字体之间进行匹配,以及修改字体的缺省配置,如AA(AntiAlias)等。
fontconfig有两个系统配置文件和一个用户配置文件。其中系统配置文件分别是/etc/fonts/fonts\.conf和 /etc/fonts/local.conf。前者供发型版的制作者使用,后者供系统管理员使用。后者的优先级比较高,这样一旦为一个系统配置好字体,它 就不会受到发型版提供者所提供的软件包改动的影响,即便升级fontconfig软件包,也不用担心编写好的配置被覆盖。在每个用户的Home目录中,也 可以存放一个.fonts\.conf文件,这个文件的优先级最高,但它只影响当前的用户。
自己改fontconfig的配置是一件比较麻烦的事情,最方便的就是把别人已经配置好的local.conf拿来,覆盖原先的版本,或者是作为个人的配置文件。在此,给出我正在使用的local.conf文件以供参考。
安装好字体配置文件后,再次重启X Window,便可以得到漂亮的字体了。
个别软件的问题
由于有一些软件并非专为GNOME或KDE编写,因此其字体配置会有特殊的地方。而传统的X Window应用程序也无法直接使用fontconfig的成果,因此就需要对它们进行一些特别的配置。
Mozilla浏览器
Mozilla浏览器以及使用它作为核心的浏览器如Epiphany和Galeon需要安装插件才能正确使用xft来显示字体。只要安装软件包mozilla-xft就可以了。如果使用前面所属的配置,无需修改便可看到漂亮的字体。
Emacs编辑器
Emacs是一款功能非常强大的编辑软件,对于它,在此我们不多做介绍。为了让它能够显示漂亮的中文字体,需要修改它的配置文件~/.emacs。将如下内容加入到该文件中即可:
代码: [复制到剪贴板]
1. ;; create a fontsets
2. (create-fontset-from-fontset-spec
3. "-*-fixed-medium-r-normal-*-12-*-*-*-*-*-fontset-12,
4. chinese-gb2312:*-song-medium-r-normal-*-12-*")
5. (create-fontset-from-fontset-spec
6. "-*-fixed-medium-r-normal-*-14-*-*-*-*-*-fontset-14,
7. chinese-gb2312:*-song-medium-r-normal-*-14-*")
8. (setq default-frame-alist (append '((font . "fontset-14"))))
如果你的Emacs还不能支持中文,则还需要进行相应的配置。
GTK 1.x
对于早期的使用GTK 1.x的应用程序,它们有自己特有的配置字体的方式,对于简体中文而言,只要修改/etc/gtk/gtkrc.zh_CN,并将内容替换为:
代码: [复制到剪贴板]
1.style "gtk-default-zh-cn"{
2.fontset="-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
3.-default-song-medium-r-normal--12-*-*-*-*-gbk-0,\
4.*-r-*"
5.}
6.class "GtkWidget" style "gtk-default-zh-cn"
locale.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<include ignore_missing="yes">/var/lib/defoma/fontconfig.d/fonts.conf</include>
<!-- Uncomment below to enable bitmapped fonts -->
<!--
<dir>/usr/X11R6/lib/X11/fonts</dir>
-->
<!-- Uncomment below to enable subpixel rendering -->
<!--
<match target="font">
<test qual="all" name="rgba">
<const>unknown</const>
</test>
<edit name="rgba" mode="assign"><const>rgb</const></edit>
</match>
-->
<!-- Uncomment below to enable the freetype autohinter module -->
<!--
<match target="font">
<edit name="autohint" mode="assign">
<bool>true</bool>
</edit>
</match>
-->
<!-- Disable font alias for Chinese 12-16 -->
<match target="font">
<test qual="any" name="family" compare="eq">
<string>SimSun</string>
<string>SimHei</string>
</test>
<test name="pixelsize" compare="more_eq">
<double>12</double>
</test>
<test name="pixelsize" compare="less_eq">
<double>16</double>
</test>
<edit name="antialias">
<bool>false</bool>
</edit>
</match>
<alias>
<family>Bitstream Vera Sans Mono</family>
<prefer>
<family>SimSun</family>
</prefer>
</alias>
<alias>
<family>SimSun</family>
<default>
<family>sans-serif</family>
<family>serif</family>
<family>monospace</family>
</default>
</alias>
<match target="pattern">
<test qual="any" name="family">
<string>serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Bitstream Vera Serif</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Bitstream Vera Sans</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>monospace</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Bitstream Vera Sans Mono</string>
</edit>
</match>
<alias>
<family>serif</family>
<prefer>
<family>Bitstream Vera Serif</family>
<family>SimSun</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>Bitstream Vera Sans</family>
<family>SimSun</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Bitstream Vera Sans Mono</family>
<family>SimSun</family>
</prefer>
</alias>
<!--
Add by [email protected]
Artificial bold for fonts without a bold version.
-->
<match target="font">
<test target="pattern" name="weight" compare="more">
<const>medium</const>
</test>
<edit name="weight" mode="assign">
<const>bold</const>
</edit>
</match>
<!--
Add by [email protected]
Disable "Global Advance" for all CJK mono spacing fonts.
-->
<match target="font">
<test target="pattern" name="lang" compare="contains">
<string>zh-tw</string>
<string>zh-cn</string>
<string>ja</string>
<string>ko</string>
</test>
<test name="spacing" compare="eq">
<const>mono</const>
</test>
<edit name="globaladvance" mode="assign">
<bool>false</bool>
</edit>
</match>
<!--
Add by [email protected]
Enable "hinting & autohint" for all fonts.
-->
<match target="font">
<edit name="hinting" mode="assign">
<bool>true</bool>
</edit>
<edit name="autohint" mode="assign">
<bool>true</bool>
</edit>
</match>
</fontconfig>
相关阅读 更多 +