華文細黑

由於Linux下沒有甚麽好的中文字體,我一直都是用OS X下的華文細黑體,STHeiti。要fontconfig用STHeiti並不難,只要把~/.fonts.conf改成這樣就可以了:

<fontconfig>
  <alias>
    <family>serif</family>
    <prefer>
      <family>Bitstream Vera Serif</family>
      <family>STHeiti</family>
    </prefer>
  </alias>
</fontconfig>

sans-serif和monospace都差不多,就不在這裏重複了。

最近發現有些網頁用了其他字體,一直也找不到原因。前兩天發現在中文Wikipedia時選擇簡體的話沒有問題,選擇香港或者是台灣的話都會使用另外的字體,選不轉換也沒有問題。靈機一觸:

$ fc-match :lang=zh-cn
华文细黑.ttf: "STHeiti" "Light"
$ fc-match :lang=zh
华文细黑.ttf: "STHeiti" "Light"
$ fc-match :lang=zh-tw
ShanHeiSun-Light.ttf: "AR PL Mingti2L Big5" "Reguler"
$ fc-match :lang=zh-hk
DFSongSd.ttf: "DFSongStd" "Regular"

細看之下:

$ fc-match STHeiTi -v | grep lang | tail -n 1
        lang: aa|af|ar|ast|ava|ay|az-ir|be|bg|bi|bo|br|bs|ca|ce|ch|co|cs|cy|da|de|dz|el|en|eo|es|et|eu|fa|fi|fj|fo|fr|fur|fy|gd|gl|gv|ho|hr|hu|ia|id|ie|ik|io|is|it|ki|kl|ku-ir|kum|la|lb|lez|lt|lv|mg|mh|mn|mt|nb|nds|nl|nn|no|ny|oc|om|os|pl|ps-af|ps-pk|pt|rm|ru|se|sel|sh|sk|sl|sma|smj|smn|so|sq|sr|sv|sw|tn|tr|ts|ug|uk|ur|vo|vot|wa|wen|wo|xh|yap|zh-cn|zh-sg|zu(s)

雖然華文細黑能夠顯示繁體中文,它自己卻說不可以。花了不少時間改~/.fonts.conf,第一個成功的方法是:

<match>
  <test name="lang" compare="eq"><string>zh-tw</string></test>
  <edit name="lang"><string>zh</string></edit>
</match>

但感覺上這不太好,所以最後用了:

<match>
  <test name="lang" compare="eq"><string>zh-tw</string></test>
  <edit name="family" mode="append" binding="strong">
    <string>STHeiti</string>
  </edit>
</match>
<match>
  <test name="lang" compare="eq"><string>zh-hk</string></test>
  <edit name="family" mode="append" binding="strong">
    <string>STHeiti</string>
  </edit>
</match>

不知道為甚麽,直接match STHeiTi再append zh-tw和zh-hk去lang不成功。用fc-match -v見到改了,但依然用不了。

by khc on Tue Mar 4 23:33:19 2008 Permlink