最近更新: 2022-01-18

利用 X 字體別名,讓 Linux 桌面環境顯示文件中的標楷體、細明體與黑體

假設我今天在微軟 Windows 系統內,用 OpenOffice 編輯了一份文件,其中的字體設定為標楷體。當我把這份文件拿到 Linux 桌面環境上開啟時,我將發現文件中的字體,全部都無法以楷體顯示。這是因為在 Linux 桌面環境上,並沒有安裝標楷體這套字型。

絕大多數人的解決方式是,將 Windows 系統中的標楷體字型檔案,複製到 Linux 桌面使用。但是就法律層面上來看,此一行為係著作權的侵權行為。微軟並未授權使用者於 Windows 系統之外單獨使用標楷體的權限。

然而,我們是真的非要標楷體不可嗎?未必。設定字體的動作,我們可以用抽象些的方式描述:「這些字要用楷書字體顯示」。重點是楷書,不一定要哪一家。而 X Window 的字型系統有一個非常有彈性的別名功能,可以讓我們指定哪些字體可以使用什麼字體顯示。例如,我們可以告訴 X Window: 『當你碰到一份文字要顯示「標楷體」時,你可以用「全字庫正楷體」顯示它們。看到「細明體」時,則用「全字庫正宋體」顯示』。如此一來,我們就不需要為了顯示文件中的字體,而買一大堆相似的字型檔案。

字體別名的設定文件

在 Ubuntu 9.04 以後的版本,字體別名的設置功能是放置於 /etc/fonts/conf.avail/30-cjk-aliases.conf。我們需要將這份文件連結到 /etc/fonts/conf.d 目錄中,才能正式啟動字體別名功能。

Debian 使用者,請參考「Debian 8 (jessie) 安裝筆記 中文環境篇」取得一份完整的別名設置文件。

請確認有 /etc/fonts/conf.d/30-cjk-aliases.conf 這份文件。如果沒有,執行下列指令建立之。


sudo ln -s /etc/fonts/conf.avail/30-cjk-aliases.conf \
  /etc/fonts/conf.d/30-cjk-aliases.conf

黑體

目前 Ubuntu 與大多數的 Linux 桌面環境,皆使用文泉驛正黑體,作為預設字體。文泉驛網站: 文泉驛 開源中文計劃。 它可以作為微軟 Windows 系統的正黑体(SimHei), 微軟正黑體與微軟雅黑體的替代字體。

SimHei 是微軟向中易公司購買的黑體字型,支援 Unicode ,所以同時提供簡、繁兩種字體。SimHei 是 Windows XP 簡體中文版的默認字體之一。但是 Windows XP 繁體中文版的使用者也會有這個字型,只是名稱叫 SimHei。 SimHei 的中文名稱是正黑体。只有簡體中文 Windows XP 認「正黑体」這個名稱,其他語系的 Windows 認的是 SimHei 這個名稱。

微軟雅黑體是微軟 Windows Vista 簡體中文版的默認字體。微軟正黑體是微軟 Windows Vista 繁體中文版的預設字體。

編輯 /etc/fonts/conf.avail/30-cjk-aliases.conf ,找到簡體中文 Windows 的設定段落。

<!-- Aliases for Simplified Chinese Windows fonts -->
	<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>

<!--
增加一段 alias,指定文泉驛正黑(WenQuanYi Zen Hei)作為 SimHei 的替代字體
-->
	<alias>
		<family>SimHei</family>
		<accept>
            <family>WenQuanYi Zen Hei</family>
        </accept>
	</alias>
<!--
微軟雅黑體 (Ununtu 10.04已加上此設置)
-->
	<alias>
		<family>Microsoft YaHei</family>
		<family>微软雅黑</family>
		<accept>
            <family>WenQuanYi Zen Hei</family>
        </accept>
	</alias>
<!--
微軟正黑體 (Ununtu 10.04已加上此設置)
-->
	<alias>
		<family>Microsoft JhengHei</family>
		<family>微軟正黑體</family>
		<accept>
            <family>WenQuanYi Zen Hei</family>
        </accept>
	</alias>

楷書

設定全字庫正楷體或 AR PL UKai TW 作為標楷體(DFKai-sb)的替代字型。

Ubuntu 內建提供一套 AR PL UKai TW 楷體,它是文鼎公司捐贈出來的楷書字體。然而,它的字體不符合中華民國教育部頒標準字體,嚴格說來,不適合作為「標楷體」的替代。所以我也不想用,我選擇使用全字庫正楷體作為標楷體的替代字體。

標楷體的英文名稱是 DFKai-sb ,為 Windows XP 繁體中文版的預設字體之一。 只有 Windows XP 繁體中文版認「標楷體」這個名稱,其他語系的 Windows 認的是 DFKai-sb 這個名稱。標楷體是微軟向華康公司購買的楷書字型,支援 Unicode ,同時提供簡、繁兩種字體。此外,其繁體字體符合中華民國教育部頒標準字體,故名為「標楷體」。

CNS11643全字庫之全字庫正楷體,係由中華民國行政院主計處(令人意外的負責單位...),彙編我國政府機關用字所製作的字體。字體符合中華民國教育部頒標準字體,足以作為標楷體的替代字體。

開啟網頁「CNS11643中文標準交換碼全字庫」,點擊下載網址的「ZIP」圖示即可下載 TTF 字形壓縮檔。包含宋體和楷書。

全字庫字形採用「政府資料開放授權條款」。各機關所提供之開放資料,授權使用者不限目的、時間及地域、非專屬、不可撤回、免授權金進行利用,利用之方式包括重製、散布、公開傳輸、公開播送、公開口述、公開上映、公開演出、編輯、改作,包括但不限於開發各種產品或服務型態之衍生物。

編輯 /etc/fonts/conf.avail/30-cjk-aliases.conf ,找到繁體中文 Windows 的設定段落。

<!-- Aliases for Traditional Chinese Windows fonts -->
	<alias>
		<family>MingLiU</family>
		<family>細明體</family>
		<family>PMingLiU</family>
		<family>新細明體</family>
		<family>AR MingtiM BIG-5</family>
		<accept>
            <family>AR PL UMing TW</family>
            <family>AR PL ShanHeiSun Uni</family>
        </accept>
	</alias>

<!--
增加一段 alias,指定標楷體的替代字體。

Ubuntu 10.04 已加上標楷體的設置。

Ubuntu 9.10 已經設定文鼎楷書字型作為標楷體的替代字型,但是它漏了英文名稱 DFKai-sb 的部份。
-->
	<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>

明體與宋體

明體與宋體相近。可設定全字庫正宋體作為細明體的替代字型。

Ubuntu 內建提供一套 AR PL UMing 宋體,它是文鼎公司捐贈出來的字體。然而,它的字體不符合中華民國教育部頒標準字體。我個人同樣選擇全字庫正宋體作為細明體的替代字體。

細明體的英文名稱是 MingLiu ,為 Windows XP 繁體中文版的預設字體之一。 只有 Windows XP 繁體中文版認「細明體」這個名稱,其他語系的 Windows 認的是 MingLiu 這個名稱。細明體是微軟向華康公司購買的字體,支援 Unicode ,同時提供簡、繁兩種字體。

全字庫正宋體下載方式同上節全字庫正楷體之說明。

編輯 /etc/fonts/conf.avail/30-cjk-aliases.conf ,找到繁體中文 Windows 的設定段落。

<!-- Aliases for Traditional Chinese Windows fonts -->
	<alias>
		<family>MingLiU</family>
		<family>細明體</family>
		<family>PMingLiU</family>
		<family>新細明體</family>
		<family>AR MingtiM BIG-5</family>
		<accept>
<!--
增加一段 alias,指定以全字庫正宋體作為細明體的替代字體。
-->
            <family>TW-Sung</family>
            <family>全字庫正宋體</family>

            <family>AR PL UMing TW</family>
            <family>AR PL ShanHeiSun Uni</family>
        </accept>
	</alias>

重新登入桌面後,就會發現那些指定字體的文件內容,都會正常顯示了。

整理內容

字型中文名稱Fontname適用項目
全字庫正楷體 TW-Kai 襯線字(serif)
標楷體 DFKai-sb 襯線字(serif)
华文楷体 STKaiti 襯線字(serif)
全字庫正宋體 TW-Sung 襯線字(serif)
新細明體 PMingLiu 襯線字(serif)
細明體 MingLiu 襯線字(serif)
宋体 SimSun 襯線字(serif)
文泉驛正黑 WenQuanYi Zen Hei 無襯線字(sans-serif)
黑体 SimHei 無襯線字(sans-serif)
微软雅黑 Microsoft YaHei 無襯線字(sans-serif)
微軟正黑體 Microsoft JhengHei 無襯線字(sans-serif)

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

樂多舊回應
jazzray@gmail.com(ray) (#comment-20767725)
Wed, 19 May 2010 17:31:42 +0800
謝謝您分享。收穫良多
另外請教:若早些前FEDORA 版本 沒有30-cjk-aliases.conf 這個檔案,是否還有其他處理方式。
在此之前,已先確認過 confconfig 這個rpm 裡沒有這個檔案了。
未留名 (#comment-20769251)
Thu, 20 May 2010 10:29:23 +0800
首先要說明一點,X 環境有好幾種字體管理機制。本文說明的是 Ubuntu 9.04 以後採用的 font config 方式,它的設定文件採用 XML 格式。其他的字體管理機制也能設定別名,但設定文件的格式不一樣。

第二,你沒說你用的 Fedora 是幾版的,所以我不知道你用的 Fedora 採用哪種字體管理機制。如果你的 Fedora 的字型設定文件是採用 XML 格式,那就可以用本文說明的方式,自己編輯字型設定文件,加上指定別名的段落。(字型設定文件的名稱並不一定要叫 30-cjk-aliases.conf)
veryqoo@gmail.com(qoo) (#comment-22405214)
Tue, 03 Apr 2012 19:57:32 +0800
hi 石頭哥
我在 LinuxMint12 使用這個方法似乎還是無效,請問您有解決方法嗎?
其實在安裝好後標楷體就不正常了 ~.~
未留名 (#comment-22426270)
Mon, 23 Apr 2012 10:48:35 +0800
我本人沒用 Mint ,只知道 Mint 12 是基於 Ubuntu 11 改的。

以下內容僅為解決方向:

1. Mint 沒有提供標楷體吧。你有先安裝可以顯示楷書的字型檔嗎?

2. Mint 應該也繼承了 Ubuntu 的設定,已經提供了 cjk 字型別名的設定檔,你先確定你裝了而且有啟用。先到 /etc/fonts/conf.avail 搜尋有沒有任何文件中包含 "標楷體" 這個字眼。再確認字型別名設定檔有一個連結到 /etc/fonts/conf.d 。
veryqoo@gmail.com(qoo) (#comment-22441026)
Sat, 05 May 2012 23:43:03 +0800
感謝,石頭哥
我只有 cjk 字型別名的設定檔裡面有標楷體,我發現,不論安裝全字庫楷體或是微軟的字型,在CAD 軟體裏面字型顯示都會錯誤顯示,似乎只有文泉黑米寬體字才正常....
未留名 (#comment-22441090)
Sun, 06 May 2012 00:43:40 +0800
你是說只有文泉驛等寬字在 CAD 軟體上顯示正常嗎?
也許是 CAD 軟體的問題,它大概只考慮了等寬字的顯示。
我不使用CAD軟體,這方面就幫不上了。