(這是一篇自 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
Hello World! in Courier New Hello World! in Consolas

不過,雖然 Consolas 將成為取代 Courier New 這個 de facto font for programming,但我覺得它太矮太窄了,一眼望去,好似螞蟻兵團似的,我不是很喜歡。因此,在嘗試眾多字型之後,我的結論是,最適合我的程式設計用字型,是 Bitstream Vera Sans Mono。

Sample of Bitstream Vera Sans Mono font, in gVim7 on Windows XP with ClearType

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 顯示。

您喜歡用哪種字型寫程式呢?


  1. Existing timestamp: November 09, 2005 @ 10:27
  2. 就是在「ENTER」鍵左邊,和 double quote「"」共享同一個鍵的符號。(2008-01-27 新增)
  3. 就是「1」鍵左邊,和「~」共享同一個鍵的符號。(2008-01-27 新增)
  4. 我個人認為,在寫程式時,forward quotes 還是垂直比較好,因為在大多數的程式語言裡,character/string literal 是由成對的 forward quotes 標示,而非由成對的 forward/back quotes 標示,所以為了對稱起見,還是垂直比較好。
  5. 貫徹格主的意志。:-p