debian中文化

對於使用 X Window 的用戶而言,擁有一個漂亮的界面是非常重要的。因爲只有這樣,工作的時候才能心情娛悅,否則,看着大小不一或者是朦朦朧朧的字體,恐怕沒人會有心情做自己的工作。

由於中文 TTF 字庫的版權原因,很多 Linux 的髮型版都沒有攜帶最常用的簡體中文字庫。雖然臺灣的文鼎公司捐助了四款中文字體給自由社區,但其中的簡體中文字體卻只不完整地支持 GB2312 的字符集,對於多數應用而言都是不夠的。RedHat 等髮型版購買了一些中文字體,但其效果卻並不怎麼好,因此,RH/Fedora 的中文用戶一般也都會安裝其它的中文字體。

Debian 的字體管理有自己的一套,可以說非常方便,因爲要美化 Debian 的中文桌面也是非常容易的。在這裏,我只介紹如何是使用已經打包的中文字體來完成對系統的美化,自己製作中文字體包以及 Debian 字體管理程序 defoma 的使用,請參考相關的文檔。此外,本文中介紹的內容僅僅適用於 Sarge 之後版本的用戶,對於比較老的版本,由於有些關鍵的軟件包對中文的支持還不是很好,建議升級系統。

以下內容在我自己的機器上實驗過,不過如果在你的系統上跑來有什麼其它的問題,也可以直接和我聯繫。
安裝必要的軟件包

要美化自己的桌面環境,首先必須要安裝一些軟件包,用管理員的身份使用如下命令安裝,如果已經安裝過的則可以跳過這一步。

    # apt-get install x-ttcidfont-conf

這個軟件包是 defoma 的一個插件,用於管理 TrueType 和 CID 字體。我們是要使用其中管理 TrueType 字體的部分。在安裝這個軟件包的時候,系統會給出一個選項,問中文字體採用哪個渲染引擎。選項中有 freetype 和 xtt,在這裏最好選擇 freetype。需要注意的是,這裏的選擇必須和 /etc/X11/XF86Config-4 中的配置保持一致。這個文件在 Debian 系統下默認選擇了 freetype,因此在安裝這個軟件包時最好也使用 freetype。同時由於 freetype 已經可以很好地支持中文粗體和斜體,因此推薦用它。

在安裝的過程中,系統會提示你將兩個目錄加入到 X Window 的配置文件中。如果不做這一步,傳統的 X Window 應用程序將會無法使用 defoma 管理的 TrueType 字體。因此,用文本編輯器編輯/etc/X11/XF86Config-4,在其中 Files 一節中加入:

    FontPath        "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
    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項目下載,或者是在安裝的過程中由安裝程序下載。使用如下命令可以安裝上述字體:

    # apt-get install ttf-bitstream-vera msttcorefonts

在安裝後者時需提供已下載字體包的路徑或提供可以直接訪問 SourceForge 的網絡環境。 安裝中文字體包

由於需要安裝的中文字體包並非 Debian 官方發佈中的內容,因此,需要修改 /etc/apt/sources.list,在其中加入如下內容:

    # deb http://10.1.0.155/~liling/debian/ttfonts/ ./

然後執行如下命令:

    # apt-get update
    # apt-get install ttf-microsoft-simsun ttf-microsoft-simhei
    # apt-get install 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 也可以在字體選擇的對話框中看到新的字體了。

如果你想手工安裝字體而不是使用字體包,最重要的事情就是要爲每個字體準備好 defoma 字體描述文件,defoma 就是通過這些描述文件來爲每一個需要的應用程序註冊字體信息的。上述四個字體的描述文件爲simsun.hints、simhei.hints、simli.hints、simyou.hints。註冊字體的命令爲 defoma-hints,這方面的介紹還是很多的,在此不再贅述。
修改 fontconfig 配置

安裝好中文 TrueType 字體之後,可以通過修改應用程序的配置達到獲得漂亮字體的效果,然而,是否有一種可以不需要做任何的修改就得到漂亮字體的方案呢?答案是肯定的,只要修改 fontconfig 的配置就可以了。

fontconfig 的配置是 XML 格式的文件,它的作用就是在應用程序所需要的字體名稱和系統安裝好的字體之間進行匹配,以及修改字體的缺省配置,如 AA (AntiAlias) 等。

fontconfig 有兩個系統配置文件和一個用戶配置文件。在每個用戶的 Home 目錄中,可以存放一個 .fonts.conf 文件,這就是每個用戶的字體配置文件,它先於系統的配置文件被使用

自己改 fontconfig 的配置是一件比較麻煩的事情,最方便的就是把別人已經配置好的配置文件拿來,覆蓋原先的版本,或者是作爲個人的配置文件。如果你不是要專門研究 fontconfig,也沒有必要花很多時間去研究這個配置,因爲爲用戶提供一個好的缺省的配置文件原本是系統開發人員和管理員的職責所在。這裏有一個已經編寫好的 fonts.conf 文件,將它保存爲 ~/.fonts.conf 就可以了。(注意是保存在個人目錄下,且文件名前面有個“.”。)

安裝好字體配置文件後,再次重啓 X Window (退出登錄然後重新登錄),便可以得到漂亮的字體了。
個別軟件的問題

由於有一些軟件並非專爲 GNOME 或 KDE 編寫,因此其字體配置會有特殊的地方。而傳統的X Window應用程序也無法直接使用fontconfig的成果,因此就需要對它們進行一些特別的配置。
Mozilla 系列瀏覽器

Mozilla 瀏覽器以及使用它作爲核心的瀏覽器如 Epiphany 和 Galeon 需要安裝插件才能正確使用xft來顯示字體。只要安裝軟件包mozilla-xft就可以了。如果使用前面所屬的配置,無需修改便可看到漂亮的字體。
GTK 1.x

對於早期的使用 GTK 1.x 的應用程序,它們有自己特有的配置字體的方式,對於簡體中文而言,只要修改/etc/gtk/gtkrc.zh_CN,並將內容替換爲:

    style "gtk-default-zh-cn" {
           fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,/
                      -default-song-medium-r-normal--12-*-*-*-*-gbk-0,/
                      *-r-*"
    }
    class "GtkWidget" style "gtk-default-zh-cn"

如果你使用的是 UTF-8 字符集,那麼需要修改的文件就是 /etc/gtk/gtkrc.utf-8,並將內容替換爲:

    style "default-text" {
          fontset = "-default-song-medium-r-normal--*-120-*-*-p-*-iso10646-1,/
                     -*-helvetica-medium-r-normal--*-120-*-*-*-*-*-*"
    }
    class "GtkWidget" style "default-text"

曾經有很長時間,我都被在 UTF-8 字符集下使用 GTK 1.x 程序看中文所困擾,一度以爲是什麼軟件的 Bug。最後我才瞭解到,由於我在 defoma 中把中文字體的 Width 設置成爲了 Fixed,這樣 defoma 所產生的 X 字體描述只使用 -c- 和 -m- 寬度的字體,這兩種寬度描述要麼是單字符字體的寬度,要麼是最寬的雙字符字體的寬度,對於顯示中文和英文混合的內容就不合適了。因此必須將字體的寬度改成 Variable,雖然 SimSun 等字體中所有英文的寬度是一樣,所有中文的寬度也都是一樣,但整體上講它們卻不同。如此的設置,當啓動 xmms 等軟件時會有幾秒的停頓,有人稱之爲假死,這停頓的時間就是計算機要去計算每一個字符的寬度。
QT

對於使用 GNOME的 用戶而言,有時也會需要使用一些 QT 的應用程序。如果安裝了 KDE,則可以直接使用其相應的程序進行配置,也可以使用 QT 的配置程序進行配置。但如果不想安裝這些程序就獲得漂亮的字體,可以直接寫一個配置文件 ~/.qt/qtrc 就可以獲得漂亮的字體了。這裏有一個寫好的 qtrc 可供參考。

另外,如果你是 KDE 的用戶,建議你在自己的啓動腳本中啓動 gnome-settings-daemon 這個程序,這樣所有 GTK 程序的配置都可以正確啓用。啓動後 KDE 程序的字體會變得比較大,沒有關係,只要調小就可以了,而且字體的顯示效果會更好。
OpenOffice.org

OpenOffice是目前Linux上可以使用的Office軟件中對MS Office文檔兼容性做的最好的一個。雖然OpenOffice使用了GNOME界面,但它有自己的字體配置方案。在Debian中,可以直接安裝OpenOffice:

    apt-get install openoffice.org-l10n-zh-cn ttf-baekmuk

這樣,系統會自動安裝中文的OpenOffice和必要的軟件包。

安裝完成後,啓動OpenOffice就會發現中文字體非常難看。這時,選擇菜單中的工具、選項,在此對話框中選擇OpenOffice.org、字體,並選擇使用替換表,把字體Baekmuk Dotum替換成SimSun,並勾選自動和屏幕。

此時的OpenOffice就應該已經有漂亮的菜單啦。不過我不知道如何才能設定OpenOffice讓它直接就有漂亮的字體,如果你知道,請和我聯繫,多謝。
Emacs

以下是我在Emacs的配置文件中設置字體的部分,在我換了CVS版的Emacs之後,就沒有用這段配置了,而是用下文的修改X資源文件的方法。

    ;; create a fontsets
    (create-fontset-from-fontset-spec
     "-adobe-courier-medium-r-*-*-14-*-*-*-*-*-fontset-adobe,
      latin-iso8859-1:-adobe-courier-medium-r-*-*-14-*-*-*-*-*-*-1,
      latin-iso8859-2:-adobe-courier-medium-r-*-*-14-*-*-*-*-*-*-2,
      cyrillic-iso8859-5:-adobe-courier-medium-r-*-*-14-*-*-*-*-*-*-5,
      chinese-gb2312:*-song-medium-r-normal-*-14-*")
    (create-fontset-from-fontset-spec
     "-adobe-courier-medium-o-*-*-14-*-*-*-*-*-fontset-adobe,
      latin-iso8859-1:-adobe-courier-medium-o-*-*-14-*-*-*-*-*-*-1,
      latin-iso8859-2:-adobe-courier-medium-o-*-*-14-*-*-*-*-*-*-2,
      cyrillic-iso8859-5:-adobe-courier-medium-o-*-*-14-*-*-*-*-*-*-5,
      chinese-gb2312:*-song-medium-r-normal-*-14-*")
    (create-fontset-from-fontset-spec
     "-adobe-courier-bold-o-*-*-14-*-*-*-*-*-fontset-adobe,
      latin-iso8859-1:-adobe-courier-bold-o-*-*-14-*-*-*-*-*-*-1,
      latin-iso8859-2:-adobe-courier-bold-o-*-*-14-*-*-*-*-*-*-2,
      cyrillic-iso8859-5:-adobe-courier-bold-o-*-*-14-*-*-*-*-*-*-5,
      chinese-gb2312:*-song-medium-r-normal-*-14-*")
    (create-fontset-from-fontset-spec
     "-adobe-courier-bold-r-*-*-14-*-*-*-*-*-fontset-adobe,
      latin-iso8859-1:-adobe-courier-bold-r-*-*-14-*-*-*-*-*-*-1,
      latin-iso8859-2:-adobe-courier-bold-r-*-*-14-*-*-*-*-*-*-2,
      cyrillic-iso8859-5:-adobe-courier-bold-r-*-*-14-*-*-*-*-*-*-5,
      chinese-gb2312:*-song-medium-r-normal-*-14-*")
    (set-default-font "fontset-adobe")
    (setq default-frame-alist (append '((font . "fontset-adobe")
                                        (width . 78) (height . 45))))

~/.Xdefaults

很多傳統的 X 應用程序,是使用一個資源數據庫來對應用程序的字體、顏色等內容進行配置的。這些程序中的很多現在已經很不常用了,譬如 Xman,但也有很多至今依然是我們每天都在使用的強大工具,譬如 Emacs。要配置這些程序的字體,需要將資源的描述寫入到文件 ~/.Xdefault s中,然後通過 xrdb 命令將其載入。

以下是我的 ~/.Xdefaults 文件的內容,其中配置了 Emacs、XFontSel 和 Xman 的字體:

    Emacs.pane.menubar.font: 7x14
    Emacs.menu*.font: 7x14
    Emacs.dialog*.font: 7x14
    Emacs.Font: fontset-song
    Emacs.FontsetList: song kai hei lucida
    Emacs.Fontset-0: -misc-fixed-medium-r-*-*-14-*-*-*-*-*-fontset-song,/
      mule-unicode-0100-24ff:-misc-fixed-medium-r-normal--14-*-*-*-*-*-iso10646-1,/
      chinese-gb2312:-*-song-medium-r-*--14-*-*-*-*-*-gb2312*-0
    
    Emacs.Fontset-1:-misc-fixed-medium-r-*-*-14-*-*-*-*-*-fontset-kai,/
      mule-unicode-0100-24ff:-misc-fixed-medium-r-normal--14-*-*-*-*-*-iso10646-1,/
      chinese-gb2312:-*-kai-medium-r-*--14-*-*-*-*-*-gb2312*-0
    
    Emacs.Fontset-2:-misc-fixed-medium-r-*-*-14-*-*-*-*-*-fontset-hei,/
      mule-unicode-0100-24ff:-misc-fixed-medium-r-normal--14-*-*-*-*-*-iso10646-1,/
      chinese-gb2312:-*-hei-medium-r-*--14-*-*-*-*-*-gbk-0
    
    XFontSel.*.font: 7x14
    
    Xman.*.font: 7x14
    Xman.*.manualFontNormal: -misc-fixed-medium-r-*-*-14-*-*-*-*-*-*-*
    Xman.*.manualFontBold: -misc-fixed-bold-r-*-*-14-*-*-*-*-*-*-*
    Xman.*.manualFontItalic: -misc-fixed-medium-o-*-*-13-*-*-*-*-*-*-*
    Xman.*.directoryFontNormal: -misc-fixed-medium-r-*-*-14-*-*-*-*-*-*-*

需要注意的是,~/.Xdefaults 文件中的內容並不會被自動地讀入,每次啓動 X 之後,都需要執行 xrdb -merge ~/.Xdefaults 命令。如果希望其內容被自動讀入,可以設置環境變量 XENVIRONMENT,也可以將該文件命名爲 ~/.Xdefaults-hostname,其中 hostname 是你正在使用的系統的主機名。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章