Best font for programming is...?
(這是一篇自 2005 年開始撰寫[1],最近才補完的舊文,文中的連結可能已經失效,請見諒。)
在 moztw 看到這篇《你喜歡甚麼等距字型?》,在討論寫程式時,用什麼等距字型比較好。因為我很討厭 moztw 必須要註冊才能發表文章的政策,但這又是蠻有趣的議題,因此拉回來自己討論自己的。
在這篇《Finding the Best Programmer's Font》裡,n8f8 列出了他認為,寫程式用的字型,應該具備以下條件:
- Crisp clear characters. (清晰)
- Extended character-set. (延伸字元集)
- Good use of whitespace. (妥善使用空白字元)
'l','1'and'i'are easily distinguished. (能夠清楚分辨大寫l、數字1以及小寫i).'0','o'and'O'are easily distinguished. (能夠清楚分辨數字0、小寫o以及大寫O).- Forward quotes from back quotes are easily distinguished -prefer mirrored appearance. (能夠清楚分辨 forward quotes[2] 與 back quotes[3],最好兩者的方向相反[4]).
- Clear punctuation characters, especially braces, parenthesis and brackets. (標點符號要清楚,尤其是大括號、中括號與方括號)
簡單講,就是清晰最重要,接下來才是美觀。對於我自己來說,還有以下要求:
- 全形字元(中文字)必須剛好是兩個半形字元寬。
- 能夠清楚分辨半形括號與全形括號。
- 行高要小,以便在同樣大小的螢幕裡,同時塞進更多行程式。
- 最好是免費字型,且跨平台能夠在 Windows 與 FreeBSD/Linux 上使用。
- 在 anti-alias 影響下,不會變得醜陋。
以前,我大都使用 Courier New 字型來寫程式,這也是大多數人的選擇。就我個人來說,Courier New 這種字型,看起來規規矩矩,一板一眼,非常「硬」的感覺,我並沒有非常喜歡。隨著 Vista、Office 2007 與 Visual Studio 2005 的推出,微軟也提供了 Consolas 這套字型,以作為 Courier New 的替代品。Consolas 專為 anti-alias 技術處理過,開啟 ClearType 在液晶銀幕上使用,非常漂亮。Consolas 是免費的,即使不安裝上述的這些軟體,也可以單獨在微軟網站上下載。
![]() |
![]() |
| Hello World! in Courier New | Hello World! in Consolas |
不過,雖然 Consolas 將成為取代 Courier New 這個 de facto font for programming,但我覺得它太矮太窄了,一眼望去,好似螞蟻兵團似的,我不是很喜歡。因此,在嘗試眾多字型之後,我的結論是,最適合我的程式設計用字型,是 Bitstream Vera Sans Mono。
Bitstream Vera 是一整套由 Bitstream inc. 所開發的字型,已經以 open source license 釋出,與 Gnome 整合,可以於 Gnome 的 Bitstream Vera Fonts 網頁上免費下載。除了 extended character-set (延伸字元集) 以外,Bitstream Vera Sans Mono 幾乎符合了 n8f8 所列出的所有要求。在有完整替代字型支援的環境下,缺字比較不會是個問題。以 Windows 為例,碰到 Bitstream Vera Sans Mono 無法呈現的中文時,就會改以細明體顯示。所以,我只需要擔心連細明體都無法顯示的字即可。而因為會碰到這種情況的機會少到極點,所以這樣的缺陷,我可以接受。
至於我自己列出的那幾點要求。全形字型必須是兩個半形字寬,大部分的編輯器都可以自動調整好 Bitstream Vera Sans Mono 與細明體之間的比例,所以不會是個問題。半形與全形括號的區分,由於字型不同,所以兩者之間的區別,也很明顯。Bitstream Vera Sans Mono 是免費且自由的,在 anti-alias 與 ClearType 下,也很美麗。
最重要也最讓我欣賞的一點是,Bitstream Vera Sans Mono 事實上用的字高不高,但看起來卻很高。與 Courier New 相比,同樣的螢幕大小,使用 Bitstream Vera Sans Mono 可以塞下 38 行程式碼,但 Courier New 只能塞下 36 行,而且 Bitstream Vera Sans Mono 看起來更大、更飽滿。也就是說,在照顧眼睛的前題下,我仍然能夠一眼看到更多的程式碼。
為了照顧各位的眼睛[5],如果您有安裝 Bitstream Vera Sans Mono 字型的話,本 blog 裡的程式碼範例,便會用 Bitstream Vera Sans Mono 顯示,否則會退而求其次,改用 Consolas 或 Couriew New 顯示。
您喜歡用哪種字型寫程式呢?
- Existing timestamp: November 09, 2005 @ 10:27 ↩
- 就是在「ENTER」鍵左邊,和 double quote「"」共享同一個鍵的符號。(2008-01-27 新增) ↩
- 就是「1」鍵左邊,和「~」共享同一個鍵的符號。(2008-01-27 新增) ↩
- 我個人認為,在寫程式時,forward quotes 還是垂直比較好,因為在大多數的程式語言裡,character/string literal 是由成對的 forward quotes 標示,而非由成對的 forward/back quotes 標示,所以為了對稱起見,還是垂直比較好。 ↩
- 貫徹格主的意志。:-p ↩






10 Comments
我也好奇的去試了一下這兩種字型,發現都會有字糊掉的問題,讓我不能接受.
像你圖裡的 Consolas 的範例也是一樣,WriteLine 的 Wr 明顯較淡,有點糊掉,L 也有點淡掉,我原先還以為是抓圖後做失真壓縮的關係,結果自己裝了一也樣。
我的螢幕應該不算差,我用的是 Dell 2007WFP.
Bitstream Vera Sans Mono 的缺點是,字型放大後,粗得難看。(不過這樣才會小字時很清晰)
我一直蠻喜歡 Windows 上的 Fixedsys 字型,不知道 Jeff 覺得如何?
自从用了 macosx 之后,我才发现 macosx 下的 monaco 字体用来写代码是最爽的。。具体是:
-apple-monaco-medium-r-normal--14-140-72-72-m-140-iso10646-1 (#x77)
附上图一张:http://williamxu.net9.org/images/emacs_on_osx.png
JY,
我覺得,Fixedsys 只能 12pt,太大了,而且不夠美形。:-p
事實上,為了要在中文 Windows 修改 Visual C++ 6 的字型,以避開 Fixedsys,我可是找了好久的解法。最後才知道,進 regedit 修改
HKEY_CURRENT_USER\Software\Microsoft\Devstudio\6.0\Format\Source Window的FontFace與FontSize機碼,就能夠避開限制,選用 Courier New 或 Consolas 等字型。不過設了 Bitstream Vera Sans Mono 會變成斜體,還不知道怎麼解決。Jeff Hung
我是看字型大小選則不同的字體
10以下用Bitstream Vera Sans Mono
12用Fixedsys
14以上用Consolas
雖然Consolas不夠黑,不過我大部分時間是用pietty連到linux上寫程式,所以黑底灰字看起來剛好。若真的有白底黑字的需要時,就開gdi++解決
而X-win下用LiberationMono感覺也不錯
iavhf,
Editplus 有個我覺得很棒的功能是,可以預先設定五種 screen fonts,好比說:
Jeff Hung
Bitstream Vera的缺点是,其粗体和正常体宽度不同,monaco也有这个问题,Consolas和Courier New则不会。
不知格主有沒試過DejaVu Sans Mono, based on Bitstream Vera, 但擴增了character range
fauzty,
之前有聽過但沒試過,不曉得其是based on Bitstream Vera。剛剛抓下來測了一下,感覺跟Bitstream Vera差不多,我猜多半是因為沒什麼機會用到那些擴增字元的關係吧。
Jeff Hung
Post a Comment