1、介紹
Windows的FontLink功能說明:如果某個字體有不能顯示的字符,就用一些備用字體來替換(熟悉Java的同學,記得fontconfig.properties吧)。這個可以在注冊表里設置。所以如果是使用Windows字體系統的程序,都可以獲得這個功能。如果把一個等寬英文字體的備選字體設為雅黑,那么只要你選擇了那個英文字體,如果有中文需要顯示,就不會出現框框,而是用雅黑來顯示了。
2、操作
下面以Monaco和微軟雅黑、Menlo和微軟雅黑為例進行說明。
首先打開regedit,找到:
HKLM/Software/Microsoft/Windows NT/CurrentVersion/FontLink/SystemLink
新建字符串鍵Monaco,雙擊輸入:
MSYH.TTF,205,154
MSYH.TTF
新建字符串Menlo,雙擊輸入:
MSYH.TTF,154,116
MSYH.TTF
設置完成,重啟系統,生效
說明:MSYH.TTF后面的數字205,154代表什么意思?是GDI的scaling factor參數,默認是128,96。Monaco字體寬度是雅黑的1.6倍,乘以1.6得到的就是205,154。
說明:為什么重復一個沒有數字的MSYH.TTF?GDI+不支持scaling factor參數就會使用第二個值MSYH.TTF。
3、討論
這個設置還有一個比較好用的地方。例如Vim本身對字體的支持較弱,還不支持非等寬字體。所以如果使用FontLink,直接選擇Monaco作為字體,一切OK。再比如把記事本字體選為Monaco,中文自然就成了雅黑。cmd和PowerShell也類似。
那么是否都以后的字體設置都省了呢?不是。只有使用Windows本身字體渲染功能的軟件可以使用這個。像Emacs這種自己動手豐衣足食的,本身對字體支持非常完善,比Windows這點小東西強大得多了去了。Java也是自己渲染字體,雖然有點Buggy(例如Swing顯示雅黑粗斜體的時候,居然亂碼,但是normal沒事;我估計現在還是這樣)。
參考文章
使用Monaco和微軟雅黑字體美化cmd和PowerShell