[Gentoo] 設定特定字體不要啟用反鋸齒

背景故事

話說上個星期心血來潮,想說把原本 Sony Vaio Pro 13 筆電上,用 BIOS 開機的 Gentoo Linux + Windows 7 的環境換成 UEFI 開機的 ArchLinux + Windows 8.1,所以整理了一下電腦。

不幸的是 ArchLinux 我裝完後一直進不到 X Window,不太想繼續搞,所以最後我還是決定維持用 Gentoo Linux 而不轉到 ArchLinux,但是改成用 UEFI 來進行 Gentoo Linux / Windows 雙重開機。

基本上沒有什麼大問題,但裝完後我發現我習慣的 Terminal 程式--可以直接設定關閉反鋸齒的舊版 XFCE Terminal 終於從 Portage 套件庫被拔掉了。

雖然也因為這個樣子,我找到了更好用的替代品--Guake,一個下拉式的 Terminal 程式,常駐在記憶體裡,要換換顯示/隱藏的時候只要按個快速鍵就好,不用一直切換視窗。

唯一的問題是字型,我個人非常不習慣開啟反鋸齒的字型,雖然的確比較美觀,但我卻覺得看起來很吃力。在使用者介面上由於我是用文鼎明體加上開了 Hinting,所以會自動轉為點陣字型,所以問題不大。

但是在 Terminal 上就比較麻煩了,因為文鼎明體的英文字寬不夠,用在 Terminal 上會顯得太擠,所以我一直是用 Droid Sans Mono 再加上直接在 XFCE Terminal 裡把反鋸齒關掉。不過就像上面說的,有這個功能的舊版 XFCE Terminal 從套件庫中被拔掉啦!囧。

所以只好上網找一下其他的替代方案,後來才發現原來可以直接透過 fontconfig 來設定特定字體不要開反鋸齒的功能,剛好符合我的需要。

設定

Note

下面的操作都需要 root 權限

其實這個設定可以直接丟到 ~/.config/fontconfig/fonts.conf 就可以,不過我想要讓他可以用 Gentoo 的 eselect fontconfig 來開關,所以多了一些步驟。

由於位於 /etc/fonts/conf.avail/ 下的設定檔會顯示在 eselect fontconfig 裡面,所以我們把我們的設定檔放到 /etc/fonts/conf.avail/99-dejavu-mono-no-antialias.conf,內容如下:

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
  <match target="pattern">
    <test name="family">
      <string>DejaVu Sans Mono</string>
    </test>
    <edit mode="assign" name="antialias">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>

這個設定檔應該不需要太多的說明,可以看到他就是遇到字型的 Family 名稱是 DejaVu Sans Mono 的時候,會把 antialias 設成 false,如果習慣用別的字型,只要把 DejaVu Sans Mono 改掉就好了。

接著可以用 eselect fontconfig list 來看是不是真的有被加進去:

VaioPro13 ~ # eselect fontconfig list
Available fontconfig .conf files (* is enabled):
  [1]   10-autohint.conf
  [2]   10-no-sub-pixel.conf
  [3]   10-scale-bitmap-fonts.conf *

  ......

  [66]  90-ttf-arphic-uming-embolden.conf
  [67]  99-dejavu-mono-no-antialias.conf

由於我們的設定檔名稱是 99 開頭,所以應該會在最後幾項,只要從最後幾項從前找就可以了。在這邊可以注意到他的後面沒有星號,代表他還沒被啟用。

接下來我們可以用 eselect fontconfig enable 66 (66 要改為你自己機器上實際上的編號)來啟用這個設定檔,然後把 Terminal 隱藏/顯示幾次,讓他套用新的設定就可以囉。

效果比較

下面是兩張圖是關閉反鋸齒前和關閉反鋸齒後的 Guake Terminal 截圖:

開啟 AA 時的 Terminal 畫面

開啟 AA 時的 Terminal 畫面(點擊放大)

關閉 AA 時的 Terminal 畫面

關閉 AA 時的 Terminal 畫面(點擊放大)

回響