23 July 2014

打自 Google 推出 思源 CJK 字體 (noto) 之後,我第一天就裝起來玩了。用了一陣子之後覺得真是不錯,即使字體設小,也是相當清析。不過我看不慣它的英文字型,太寬了點。最好的解決方案是英文和中文可以指定不同字型,別的系統可能做不到,但 Linux 就是什麼都能客製,難不倒它。

下面的客製流程適用於 Ubuntu 14.04,其他 Linux 應該也能通用,先下載思源字型,解開 zip,將 CJK 字型放進 ~/.fonts/noto 目錄裏:

mkdir -p /tmp/noto
cd /tmp/noto
wget http://www.google.com/get/noto/pkgs/Noto-hinted.zip
unzip Noto-hinted.zip
mkdir -p ~/.fonts/noto
mv *.otf ~/.fonts/noto

noto 的 CJK 字型都是 .otf 檔,所以安裝 otf 檔就夠了。

接下來是寫 ~/.fonts.conf 這個設定檔。我寫了一份短的放在 gist。下面是節錄:

<fontconfig>
  <match target="pattern">
    <test qual="any" name="family">
      <string>sans-serif</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Sans T Chinese</string>
      <string>Noto Sans S Chinese</string>
      <string>Noto Sans Japanese</string>
      <string>Noto Sans Korean</string>
    </edit>
  </match>
</fontconfig>

上面節錄的設定檔大致上是說,當系統要求無襯線 (sans-serif) 字型時,按給定的字型順序去顯示。我寫的順序是標準粗細的 noto 繁中 -> 簡中 -> 日文 -> 韓文 字型。如果想要用 noto 細體,在字型名字後面加上 Thin 即可,例如 Noto Sans T Chinese Thin

完整的設定檔可以下面的指令安裝:

cd /tmp
wget -O fonts.conf https://gist.githubusercontent.com/ingramchen/21533bbfc0d2dead94a7/raw/c750592f750cb446f6a6a19d75892c7d2fb5395f/gistfile1.xml
cp -i fonts.conf ~/.fonts.conf

從 gist 下載的設定檔將 mono/sans-serif/serif 三種字型通通套用 noto sans。理論上 serif 字型不該用黑體字的 noto sans,該用明體字型。但明體字在螢幕上不好看,所以我全改掉了。這可能不符合你的習慣,你可以自行修改。

設完 .fonts.conf ,再重新 logout/login Ubuntu 一次,系統在顯示中日韓文時就會用思源字體。接下來各個應用程式裡,例如 Chrome 字型設定裡就可以只設英文字型,就能達到中英文用不同字型。而 Ubuntu 系統本身的字型可以用 Unity tweak tool 來改。

.fonts.conf 還可以設定更多細項,像是你只想要某個字型在某個大小時才加上 hint,這樣才不會破字之類的。不過思源字體不錯,不用特別改什麼都很漂亮,所以這一步就省了。

ACG 網站混用 CJK 範例
上圖是一般的 ACG 網站,ACG 網站常混著英文、繁中、簡中、日文等語言同時顯示。這時有同個系列的 CJK 字型整體性就很好,不會突兀。思源 CJK 字體真是棒啊!


回響

可以用 Tag <I>、<B>,程式碼請用 <PRE>