背景故事
話說上個星期心血來潮,想說把原本 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 隱藏/顯示幾次,讓他套用新的設定就可以囉。
回響