2011/09/07

寫程式用的字型

這裡列出一些等寬字型(fixed-width or monospaced fonts),主要用於撰寫程式時,以及終端機命令列模式下使用。喜歡與否,見仁見智,大家試試看,自己看的順眼最重要。

挑選時,有些注意事項:

  • 英文字母大寫O、小寫o、數字0,必須能夠清楚辨識。
  • 英文字母小寫l,大寫I、小寫i,數字1、符號|,必須能夠清楚辨識。 
  • 符號`與',必須能夠清楚辨識。
  • 字型的筆劃粗細適中。
  • 有些字型,設定在某種大小下時,非常漂亮,但可能在放大或縮小後,卻變差了。
現在作業系統各有其獨特的文字描繪技術,同一套字型在不同編輯器下看起來不盡相同,在我的環境下可能很棒,但在你那邊可能差強人意,更何況,每個人的感覺不同、偏好不同,所以請自己實際用用看,要注意各種相關參數的設定,譬如anti-aliasing、ClearType、等等。


Courier、Courier New
由IBM根據打字機的字型所設計的,因為沒有維護其專利,所以流傳廣泛。
我的感覺:Courier太難看。Courier New中規中矩,筆劃有點細。
下載:各系統上應該都有安裝此字型;Courier New可到這裡找找

Andale Mono 
很多系統預設安裝的字型。
我的感覺:比Courier New好,但有更棒的。
下載:請到這裡

Monaco、Menlo
Monaco是Apple的Mac作業系統內建的終端機預設字型,在Mac OS X 10.6被Menlo取代。Menlo是由Bitstream Vera Sans Mono改過來的。
我的感覺:不錯,在Mac上嫌麻煩的話就直接用這兩個字型吧。
下載:據我所知,只能在Mac OS上合法使用。

Source Code Pro
Adobe釋出的等寬字型,很不錯。
我的感覺:很不錯。
下載:請到這裡

ProFont
我的感覺:不錯,推薦。
下載:請到這裡

Bitstream Vera Sans Mono
我的感覺:整體看起來筆劃夠黑,我喜歡,但是符號*的位置偏上,我不喜歡。
下載:請到這裡

Deja Vu Sans Mono
由Bitstream Vera Sans Mono改過來的,免費。
我的感覺:很不錯,推薦。整體看起來筆劃夠黑,我喜歡,但是符號*的位置偏上,我不喜歡。
下載:請到這裡

Monofur
我的感覺:有點古老的味道。
下載:請到這裡

Inconsolata
我的感覺:很不錯,推薦。單引號與雙引號有點卷曲歪斜,有人不喜歡所以繼續修改,變成Inconsolata-g
下載:請到這裡

Anonymous Pro
Mark Simonson設計,免費。
我的感覺:很不錯,推薦。
下載:請到這裡


參考資料:
  1. Top 10 Programming Fonts
  2. Fixed-width fonts
  3. Monospace/Fixed Width Programmer's Fonts
  4. Font Survey: 42 of the Best Monospaced Programming Fonts
  5. 5 good programming fonts 

11 comments:

  1. 相關的文章,10款免費下載英文經典品牌字體www.bnext.com.tw/Article/view/cid/103/id/23983。

    ReplyDelete
  2. 由Adobe公司釋出的字型,Source Sans Pro與Source Code Pro,可到http://blogs.adobe.com/typblography/2012/08/source-sans-pro.html與blogs.adobe.com/typblography/2012/09/source-code-pro.html下載。

    ReplyDelete
  3. http://slant.co/topics/what-is-the-best-programming-font,票選最佳程式字型。

    ReplyDelete
  4. 《超圖解Arduino互動設計入門》的書本封面、插圖與程式字體之Hack
    http://swf.com.tw/?p=447
    ,作者解釋選擇字型的過程。

    ReplyDelete
  5. 有幸拜讀您的大作《Raspberry Pi從入門到應用》,在自習Python參考書中範例時,在"6.5串列"這一節測試發現下列情形:
    程式碼是照您書上範例一字不差打的,但執行結果(我指的是經過華氏轉攝氏換算後那一行的結果)跟您不同(我的執行結果未做概數取捨,列出來的是[0.0, 100.0, -12.222222222222221, 12.777777777777779, 25.555555555555557, 43.333333333333336, 81.11111111111111]),請問您的華氏轉攝氏計算結果有做概數取捨嗎(因為書上列的都是整數)?會這麼問是因為您的程式碼中並未有任何一段要求程式做概數取捨動作的CODE. PS:小弟的PYTHON是安裝3.3.1版本.

    ReplyDelete
    Replies
    1. 該章的Python程式碼,Python 2.x與3.x的直譯器皆可執行,不過因為2.x與3.x有差異,
      2.x的「/」會是整數除法,例如 5 / 2 會得到2,
      而3.x的「/」會是真除法,例如5 / 2 會得到2.5,
      所以得到的東西不一樣。

      所以2.x會輸出整數,3.x會輸出浮點數。

      抱歉造成困擾,這算是我的一處疏忽,沒說清楚。

      Delete
  6. Inconsolata-g以Inconsolata為基礎,修正字母l與數字1太過相似的問題。
    http://leonardo-m.livejournal.com/77079.html

    ReplyDelete
  7. Hack an Editor: Fonts for Programming
    https://hackaday.com/2015/09/02/hack-an-editor-fonts-for-programming/

    ReplyDelete
  8. Iosevka

    http://be5invis.github.io/Iosevka/?v1.0.0

    ReplyDelete
  9. https://github.com/tonsky/FiraCode
    會把多個字元組成一個,譬如!=變成≠,
    需編輯器的支援。

    ReplyDelete
  10. mononoki
    https://madmalik.github.io/mononoki/

    ReplyDelete