快轉到主要內容

解決Ubuntu無法顯示標楷體,安裝額外的Windows中文字型

· 民國114年乙巳年
·
切換繁體/簡體
分類 Linux系統 Linux使用技巧
標籤 Ubuntu LibreOffice Freedesktop Specifications Fontconfig
目錄

適用版本:Ubuntu 24.04以上。本文分享的概念亦適用其他Linux發行版,包括Fedora、openSUSE、Arch Linux、Gentoo等等。

Ubuntu系統用LibreOffice Writer開啟.docx文件,標楷體一律都會變成用其他字型顯示,跟Windows電腦Word看來完全不同,怎麼回事呢?

Windows檢視.docx文件,顯示標楷體:

Ubuntu檢視.docx文件,沒有顯示標楷體:

Ubuntu內建Google Noto Fonts字型家族,用於顯示多國語言的文字。當我們開啟含有標楷體的.docx文件的時候,由於Linux系統沒有這個字型,因此不論是在LibreOffice Writer還是Google文件網頁版,它就會回退到Noto Sans CJK字型來顯示中文字,導致字型錯誤。這在影印文件的時候會非常困擾。

所以我們得手動安裝標楷體字型,讓Ubuntu得以顯示標楷體。

若要安裝其他Windows才有的字型,也是如法炮製。

1. 認識Windows標楷體與替代方案
#

了解一下標楷體問題,再挑選解決方案。

Windows系統的標楷體,名字準確來說是「華康標楷體」,乃華康科技(威鋒數位)參考中華民國教育部標準字體所研發的字型,屬於付費字型。Microsoft向其購買之後,內建在Windows系統給大家使用。

因為授權條款因素(下述),Ubuntu套件庫無法收錄標楷體字型。另外像新細明體、微軟正黑體、Times New Roman沒有收錄在Ubuntu套件庫也是因為授權條款。

Ubuntu有一個套件叫做ttf-mscorefonts-installer,裝了之後就能在Linux使用Windows字型,但裡面只有Times New Roman這類英文字型,沒有中文字型。

針對這類授權字型,使用者需要自行取得.ttf字型檔安裝。以標楷體來說,最快的方式就是從Windows電腦複製過來,再塞到Linux系統的字型目錄即可。

但為何不建議這樣做呢?根據2018年華康字型授權說明一文指出:

凡透過合法授權之微軟系統使用新細明體、標楷體,威鋒數位日後亦不會主動要求支付相關授權費用。但將字型直接取出搭載(內嵌)於非微軟系統之第三方軟、硬體中的以下情況除外,例如於各式嵌入式裝置、電子遊戲、APP、電子書,以及安裝於提供ASP(應用服務提供者)等網路服務伺服器等。

所以嚴格來說,從Windows系統複製標楷體,或者從網路上下載標楷體,再裝到Linux系統的字型目錄是違反授權條款的!

比較好的方式是改用類似標楷體且允許自由使用的字型,譬如:

  • 文鼎楷書體 + 台灣方音符號 AR PL UKai TW MBE
  • 全字庫正楷體 TW-Kai-Ext
  • 教育部標準楷體 TW-MOE-Std-Kai
  • cwTeX楷書 cwTeXKai

這些楷體字型Ubuntu都有提供套件,無需手動下載。

然而這樣做有壞處,第一,別人給你的.docx文件內嵌的字型是指向「標楷體」,要手動用LibreOffice Writer開啟檔案,修改字型再存檔,有很多文件要處理的話就會很麻煩。第二,如果.docx檔案之後還要傳檔給別人用,安裝這種非正規的楷體,可能變成對方電腦沒有這種字型,導致無法顯示。

此外,這幾個楷體的字型寫法跟標楷體有些微不同。

嘛,一般人應該不需要在意字型授權問題。如果只是要做出指定格式文件的話,就別太在意過程了啦。直接複製Windows的標楷體字型來用最快。

2. 顯示標楷體的解決方案
#

解決方案1:複製Windows的標楷體字型來用
#

  1. 開啟Windows電腦的C:\Windows\Fonts\資料夾,複製kaiu.ttf字型檔。或者自行在網路上搜尋下載標楷體字型。

  2. 將.ttf字型檔傳到Ubuntu電腦,開啟檔案管理器,點二下安裝字型

  3. 或者用指令安裝,在下載目錄開啟終端機,將.ttf檔複製到系統目錄/usr/share/fonts/truetype/或者使用者目錄~/.local/share/fonts/

sudo mkdir -p /usr/share/fonts/truetype/

sudo cp kaiu.ttf /usr/share/fonts/truetype/

fc-cache -fv
  1. 重新啟動LibreOffice,開啟.docx文件應該就能顯示標楷體了。

解決方案2:改用類似標楷體的字型
#

視需求安裝楷體字型套件,不用全裝。

安裝文鼎楷書體,安裝後顯示的字型名稱為AR PL UKai

sudo apt install fonts-arphic-ukai

安裝全字庫正楷體,安裝後顯示的字型名稱為全字庫正楷體

sudo apt install  fonts-cns11643-kai

安裝教育部標準楷體,安裝後顯示的字型名稱為教育部標準楷體

sudo apt install fonts-moe-standard-kai

安裝cwTeX,安裝後顯示的字型名稱為cwTeX 楷書

sudo apt install fonts-cwtex-kai

接著開啟LibreOffice Writer,選取文件文字,替換掉字型。

解決方案3:使用類似標楷體的字型去顯示標楷體
#

好繞口…其實就是替身攻擊啦。

Linux桌面環境可以透過fontconfig工具來調整系統的字型優先順序,也能用一個字型替代顯示另一個字型。好處是不需要安裝需要授權的標楷體字型,亦不需要手動替換文件內的字型。壞處就是自欺欺人,只有你看得到。

順帶一提,Ubuntu系統的/etc/fonts/conf.d/目錄裡面已經有一系列預先定義的字型替換規則。

  1. 使用fc-list指令列出Linux系統已安裝的字型。

  2. 新增fontconfig設定檔

mkdir -p ~/.config/fontconfig/

vim ~/.config/fontconfig/fonts.conf
  1. 填入下列內容。這裡範例是告訴系統,遇到標楷體 (Linux顯示的名稱為DFKai-SB) 就用教育部標準楷體 (TW-MOE-Std-Kai) 去顯示。
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">

<fontconfig>

<match target="pattern">
  <test name="family">
    <string>DFKai-SB</string>
  </test>
  <edit name="family" mode="prepend" binding="strong">
    <string>TW-MOE-Std-Kai</string>
  </edit>
</match>

</fontconfig>
  1. 更新字型快取
fc-cache -fv

3. 系統界面全部變成標楷體了怎麼辦?
#

有時候會遇到這個bug,一安裝楷體字型,部份Linux程式就會變成以楷體顯示中文,醜死了。

不知道為什麼,Linux發行版只要安裝任一種楷體,有些程式界面的中文字就會全部變成標楷體,這是什麼返祖現象嗎?以前對Linux不熟悉害我很長時間不敢任意裝字型,只得解除安裝標楷體。

可,最好的解決方法肯定不是移除字型。

我們可以透過fontconfig調整字型優先級來解決以上問題,將優先字型設定為Google Noto Fonts就好了。

參考資料
#

相關文章


此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。