最近更新: 2019-07-17

Debian 8~10 (jessie~buster) 安裝筆記 中文環境篇

我在「基礎安裝篇」就提到我安裝 Debian 時,預設的 LANG 是 C 或 en_US 。就算裝了桌面軟體套件,也全是英文訊息介面,也沒有中文輸入法。所以接下來就要說明如何安裝正體中文語系環境。包含下列項目:

  • 中文語系基本套件
  • 選擇語系環境
  • 中文輸入法: ibus 和 hime
  • 字型字體

Debian 10 於 2019-07-06 正式釋出。

Debian 8 於 2015-04-25 正式釋出。

中文語系所需套件

安裝時選擇預設英文語系的話,則安裝後,首先需要執行 dpkg-reconfigure locales 加選正體中文語系(zh_TW) 。然後再安裝下列選用性的軟體套件:

Debian 10 提供 Google 思源字體套件 (fonts-noto 等系列套件) 。安裝桌面環境時,就會順便安裝思源字體。文泉驛 (fonts-wqy) 和文鼎字體 (ttf-arphic) 不再是中文桌面環境所需字體套件。視個人需要安裝。

  • xfonts-wqy
    • 文泉驛 X11 字體。
  • fonts-wqy-zenhei
    • 文泉驛正黑體 (TrueType)。套件舊名 ttf-wqy-zenhei 。
  • fonts-wqy-microhei
    • 文泉驛微米黑體 (TrueType)。套件舊名 ttf-wqy-microhei 。
  • fonts-arphic-ukai
    • 文鼎楷書體 (TrueType)。套件舊名 ttf-arphic-ukai 。
  • fonts-arphic-uming
    • 文鼎明體 (TrueType) 。套件舊名 ttf-arphic-uming 。
  • kde-l10n-zhtw
    • KDE 的中文語系訊息套件。
  • hime hime-data hime-gtk3-immodule
    • 配合 KDE 使用的 Qt 庫版號, Debian 8~9 安裝 hime-qt4-immodule , Debian 10 升級到 hime-qt5-immodule 。
    • hime-tables 常用中文輸入法表格。包含行列30、詞音等。
    • hime-anthy 日文輸入。
  • ibus ibus-qt4 ibus-gtk
    • ibus-array 行列30,這是我的慣用輸入法。
    • ibus-table-array 通用表格式行列30,不好用,缺簡碼、符號。
    • ibus-pinyin 拼音與注音兩種。
    • ibus-anthy 日文輸入。
  • iceweasel-l10n-zh-tw
    • iceweasel 的中文語系訊息套件。

選擇語系環境

首先,以 KDE 系統工具調整個人的桌面語系環境。從「系統設定 -> 地域 -> 國家/地區與語言」(System Settings -> Locale -> Country/Region & Language) 。

System Settings : Locale

最後,編輯 $HOME/.xsessionrc ,加入下列兩行可以得到更好的中文語系支援效果。

export LANG=zh_TW.utf8
export LANGUAGE=zh_TW

詳細原因請參考「Debian 如何選擇登入桌面後的語系環境」。

中文輸入

中文輸入法框架有很多種,如 ibus, gcin, hime, scim, fctix 。我個人目前使用 hime 。我原先是用 ibus ,但後來改用 hime 輸入法框架,因為 ibus 在 KDE 環境似乎有些適應不良。

ibus

在某次更新後,我的 KDE 突然發生啟動任何應用程式,都會當掉的情形,具體來說是應用程式啟動時突然整個桌面都失去反應,但滑鼠指標還是可以移動。我試著重裝 xorg 和 kde 都無法解決。但移除 ibus 後就正常了。後來試了 scim 和 fcitx 也都會出現這種情形。

接著,我嘗試不要啟動 KDE 時自動載入輸入法,而是啟動後再手動載入輸入法引擎。此時也正常。

我懷疑是自動載入輸入法引擎的指令稿有問題。所以我移除 im-config 套件,並手動刪除以下檔案,就解決問題了。

  • $HOME/.xinputrc
  • /etc/X11/xinit/xinput.d/*
  • /etc/X11/Xsession.d/70im-config_launch

再自己編輯啟動指令稿 $HOME/.xsessionrc 加入下列設置

export LANG=zh_TW.utf8
export LANGUAGE=zh_TW

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus

最後,我要用 KDE 的「系統設定 -> 啟動與關閉 -> 自動啟動」的設定功能,增加一個桌面程式,程式名稱處直接輸入「ibus-daemon -d -x」,以便在進入 KDE 桌面後,自動啟動 ibus 。

我之所以要這麼麻煩地指示 ibus-daemon 的啟動方式,皆因在我的系統中,如果 ibus-daemon 的執行順序在 kwin 之前的話, firefox 就不能輸入中文 (其他桌面應用程式倒是正常)。如果我把 ibus-daemon 啟動指令寫在 /etc/X11/Xsession.d/ 或是 ~/.xsessionrc 中,則 ibus-daemon 的執行順序都會排在 kwin 之前。

參考 I18n/ibus - Debian WikiKimpanel - KDE UserBase Wiki

hime

在「基礎安裝篇」中,我提到 ibus 和 gedit 互衝的狀況。因此我最後改用 hime 輸入法框架了。使用時非常順暢,甚至可說非常接近 Windows XP/7 上的中文輸入體驗。

我移除 ibus 後,再安裝下列套件 hime hime-data hime-gtk3-immodule hime-qt4-immodule hime-tables 。我另外還需要日文輸入 hime-anthy 。注意,選取安裝 hime ,可能會連帶選取 im-config 套件。但基於上節 ibus 的設置經驗,我懷疑 im-config 有 Bug ,所以我手動移除了 im-config 。反正我也不需要切換輸入法。

如果你有安裝 im-config ,那麼可以用它的工具設定載入輸入法引擎的動作,而不需要自己編輯 .xsessionrc 。但我選擇自己動手做。手動設定時,只要在 $HOME/.xsessionrc 加入下列設置,就可以在登入 KDE 後自動載入 hime 輸入法。不需要像 ibus 那樣還要額外安排 ibus-daemon 的啟動步驟。

export LANG=zh_TW.utf8
export LANGUAGE=zh_TW

export GTK_IM_MODULE=hime
export XMODIFIERS=@im=hime
export QT_IM_MODULE=hime

字型字體

文鼎楷書體和文鼎明體的字體不符合教育部頒標準字體 (某些字的筆劃不一樣)。如果你需要一個符合標準字體的印刷字型,可以考慮行政院主計處全字庫字體,有正宋體和正楷體。參見「利用 X 字體別名,讓 Linux 桌面環境顯示文件中的標楷體、細明體」關於全字庫正楷體與正宋體的說明。

文泉驛和文鼎的字體都按 Unicode 規範提供了超過六萬字的中、日、韓字碼(CJK),足以應付大部份人的需求。如果你遇到需要細明體或微軟黑體的文件,可參考「利用 X 字體別名,讓 Linux 桌面環境顯示文件中的標楷體、細明體」的說明。但 Debian 沒有參考文件中提到的 30-cjk-aliases.conf 文件。我在此提供一份完整的字體設置文件,請放在 /etc/fonts/conf.d/90-chinese-aliases.conf 。

Debian 10 - 90-chinese-aliases.conf

Debian 10 的 fontconfig 設置方式有變。現在 alias 一次只能設定一個字型,不允許寫一組。 但是成員 accept 仍然允許列出多個候選字型。其次, alias 要加上屬性 binding="same" 。

另外,或許是 fontconfig 改變設置之故,有些軟體的字型渲染方式似乎認不得此處的別名設置。 我在 Windows 環境用 LibreOffice 編輯的文件,其中的新細明體、標楷體、微軟正黑體字型,在 Debian 10 的 LibreOffice 開啟時都能正確地以替代字型呈現。 但是 Firefox 和 Chromium 瀏覽器卻多少都有幾個字型沒有按別名替代。這一方面還要持續調校。

利用字型別名顯示Office文件內容

上圖右邊的字型選擇框的「標楷體」是以斜體字呈現,這表示這個字型不是這台主機實際安裝的字型,而是借用別的字型渲染。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- /etc/fonts/conf.d/90-chinese-aliases.conf -->
<fontconfig>
    <description>Chinese font families alias</description>

    <!-- 設定正體中文視窗明體字的替代品 -->
    <!-- 若有全字庫宋體,就用宋體;否則用思源字體 -->
    <alias binding="same">
        <family>細明體</family>
        <accept>
            <family>TW-Sung</family>
            <family>全字庫正宋體</family>
            <family>Noto Serif CJK TC</family>
        </accept>
    </alias>
    <alias binding="same">
        <family>MingLiu</family>
        <accept>
            <family>TW-Sung</family>
            <family>全字庫正宋體</family>
            <family>Noto Serif CJK TC</family>
        </accept>
    </alias>

    <!-- 若有全字庫宋體,就用宋體;否則用思源字體 -->
    <alias binding="same">
        <family>新細明體</family>
        <accept>
            <family>TW-Sung</family>
            <family>全字庫正宋體</family>
            <family>Noto Serif CJK TC</family>
        </accept>
    </alias>
    <alias binding="same">
        <family>PMingLiu</family>
        <accept>
            <family>TW-Sung</family>
            <family>全字庫正宋體</family>
            <family>Noto Serif CJK TC</family>
        </accept>
    </alias>

    <!-- 设定简体中文视窗宋体字的替代品 -->
    <alias binding="same">
        <family>SimSun</family>
        <accept>
            <family>Noto Serif CJK SC</family>
        </accept>
    </alias>
    <alias binding="same">
        <family>NSimSun</family>
        <accept>
            <family>Noto Serif CJK SC</family>
        </accept>
    </alias>

    <!-- 指定思源字體或「文泉驛正黑(WenQuanYi Zen Hei)」作為 SimHei 的替代品 -->
    <alias binding="same">
        <family>SimHei</family>
        <accept>
            <family>Noto Sans CJK SC Regular</family>
            <family>WenQuanYi Zen Hei</family>
        </accept>
    </alias>

    <!-- 指定思源字體或文泉驛正黑作為「微軟雅黑體」的替代品 -->
    <alias binding="same">
        <family>微软雅黑</family>
        <accept>
            <family>Noto Sans CJK SC Regular</family>
            <family>WenQuanYi Zen Hei</family>
        </accept>
    </alias>
    <alias binding="same">
        <family>Microsoft YaHei</family>
        <accept>
            <family>Noto Sans CJK SC Regular</family>
            <family>WenQuanYi Zen Hei</family>
        </accept>
    </alias>

    <!-- 指定思源字體或文泉驛正黑為「微軟正黑體」的替代品 -->
    <alias binding="same">
        <family>微軟正黑體</family>
        <accept>
            <family>Noto Sans CJK TC Regular</family>
            <family>WenQuanYi Zen Hei</family>
        </accept>
    </alias>
    <alias binding="same">
        <family>Microsoft JhengHei</family>
        <accept>
            <family>Noto Sans CJK TC Regular</family>
            <family>WenQuanYi Zen Hei</family>
        </accept>
    </alias>

    <!-- 指定「思源黑體」為「文泉驛正黑」的替代品 -->
    <!--
    <alias binding="same">
        <family>WenQuanYi Zen Hei</family>
        <family>文泉驛正黑</family>
        <family>WenQuanYi Micro Hei</family>
        <family>文泉驛微米黑</family>
        <accept>
            <family>Noto Sans CJK TC Regular</family>
        </accept>
    </alias>
    -->

    <!-- 指定「文鼎楷書體」為「標楷體」的替代品 -->
    <alias binding="same">
        <family>標楷體</family>
        <accept>
            <family>TW-Kai</family>
            <family>全字庫正楷體</family>
            <family>AR PL UKai TW</family>
        </accept>
    </alias>
    <alias binding="same">
        <family>DFKai-SB</family>
        <accept>
            <!-- 若有全字庫正楷體,就用正楷體;否則用文鼎楷書體 -->
            <family>TW-Kai</family>
            <family>全字庫正楷體</family>
            <family>AR PL UKai TW</family>
        </accept>
    </alias>

</fontconfig>
Debian 8 - 90-chinese-aliases.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!-- /etc/fonts/conf.d/90-chinese-aliases.conf -->

<!-- 設定正體中文視窗明體字的替代品 -->
    <alias>
        <family>MingLiU</family>
        <family>細明體</family>
        <family>PMingLiU</family>
        <family>新細明體</family>
        <family>AR MingtiM BIG-5</family>
        <accept>
            <!-- 若有全字庫宋體,就用宋體;否則用文鼎明體 -->
            <family>TW-Sung</family>
            <family>全字庫正宋體</family>
            <family>AR PL UMing TW</family>
            <family>AR PL ShanHeiSun Uni</family>
        </accept>
    </alias>

<!-- 设定简体中文视窗宋体字的替代品 -->
    <alias>
        <family>SimSun</family>
        <family>NSimSun</family>
        <family>SimSun-18030</family>
        <family>NSimSun-18030</family>
        <family>宋体</family>
        <family>AR MingtiM GB</family>
        <accept>
            <family>AR PL UMing CN</family>
            <family>AR PL ShanHeiSun Uni</family>
        </accept>
    </alias>

<!-- 指定「文泉驛正黑(WenQuanYi Zen Hei)」作為 SimHei 的替代品 -->
    <alias>
        <family>SimHei</family>
        <accept>
            <family>WenQuanYi Zen Hei</family>
        </accept>
    </alias>

<!-- 指定「文泉驛正黑」作為「微軟雅黑體」的替代品 -->
    <alias>
        <family>Microsoft YaHei</family>
        <family>微软雅黑</family>
        <accept>
            <family>WenQuanYi Zen Hei</family>
        </accept>
    </alias>

<!-- 指定「文泉驛正黑」為「微軟正黑體」的替代品 -->
    <alias>
        <family>Microsoft JhengHei</family>
        <family>微軟正黑體</family>
        <accept>
            <family>WenQuanYi Zen Hei</family>
        </accept>
    </alias>

<!-- 指定「文鼎楷書體」為「標楷體」的替代品 -->
    <alias>
        <family>DFKai-SB</family>
        <family>標楷體</family>
        <accept>
            <!-- 若有全字庫正楷體,就用正楷體;否則用文鼎楷書體 -->
            <family>TW-Kai</family>
            <family>全字庫正楷體</family>
            <family>AR PL UKai TW</family>
            <family>AR PL ZenKai Uni</family>
        </accept>
    </alias>

</fontconfig>

Google 最近也釋出了一組字體,叫「思源黑體」。Debian 10 開始提供 Google 思源字體套件 (fonts-noto 等系列套件) 。這套字型是開源軟體字型,但不是自由軟體字型。因為它不是 GPL 授權,可以預見它不會被收錄到 Debian main 套件群組。

相關文章
樂多舊網址: http://blog.roodo.com/rocksaying/archives/31556973.html