Sudo
A free font for coders by Jens Kutílek
Sudo is also hinted for good screen display on Windows.
In 2009 I wasn’t satisfied with the available text editor fonts and decided to draw my own: Sudo. Over the last years I used it as my main font in the Terminal, as well as my text editor font for coding on Mac and Windows. Whenever something bugged me, I refined the design and could instantly evaluate if a change was an improvement.
Get Sudo
Download the latest Sudo release for free. Contains desktop and web fonts, as well as variable fonts.
Source files are available on GitHub. Sudo is licensed under the SIL Open Font License. For version info, check the font log.
If you are not sure yet, have a look at the glyph proof for Sudo Regular (PDF, 486 kB).
Sudo is monospaced
There are many reasons why most programmers still prefer monospaced fonts. All letters have the same width in all weights. Proportional alternates are available for some letters via OpenType layout features.
Sudo is not monospaced
Sudo is legible
When some letter forms are ambiguous in prosa, we can easily read them because we know the context. But when coding, all characters have to be unmistakably recognizable. It is common to add serifs to an uppercase I or a hook to the lowercase l. I don’t care very much for dotted or slashed zeroes, so I decided to make all numbers one line width smaller than the uppercase letters. They still stand out enough because most code is in lowercase anyway.
Sudo doesn’t have ligatures
I’m not particularly fond of ligatures in coding fonts. In my opinion, in many cases they are hindering readability.
Sudo does support Powerline status bars out of the box, though.
Sudo makes use of the “Contextual Alternates” OpenType layout feature: It formats hexadecimal numbers (starting with 0x) with shorter uppercase letters, so they are at the same height as the numbers.
You can control those alternates in your editor’s settings, e.g. in Visual Studio Code by adding "editor.fontLigatures": "'calt'" to your settings.json.
Sudo is space-efficient
The width of all letters is 44% of the font size. This allows you to fit more code in the same space. For example, the character width in other fonts is between 55% (Consolas) and 60% (Courier). This is a topic for debate, for when the letter width becomes too narrow, you need to increase the font size to keep the text readable, there are limits to the usefulness of condensed letterforms.
Sudo has been designed on a pixel grid for a font size of 16 pixels, but works well in other sizes as well.
Sudo is unique
This is a first: As far as I know, Sudo is the first and only font to feature what I like to call ‘coder’s quotes’. Some programming languages use the acute and grave accents as a replacement for opening or closing quotes. The standalone accents in Sudo are much bigger than the ones on the accented letters and work well together with the straight and typographic quotes.
Sudo is standards-compliant
DIN 91379
Sudo is one of the first fonts to support the new European standard DIN 91379, “a normative subset of Unicode Latin characters, sequences of base characters and diacritic signs, and special characters for use in names of persons, legal entities, products, addresses etc.”
Koeberlin Latin S & M
Sudo supports the Latin S and M character sets defined by Christoph Koeberlin.
According to Hyperglot 0.6.4, Sudo v2.0 supports 413 Latin, Cyrillic, and Greek languages:
- Abaza
- Abron
- Abua
- Acheron
- Achinese
- Acholi
- Achuar-Shiwiar
- Adamawa Fulfulde
- Adangme
- Afar
- Afrikaans
- Aguaruna
- Ahtna
- Akoose
- Alekano
- Aleut
- Amahuaca
- Amarakaeri
- Amis
- Anaang
- Andaandi, Dongolawi
- Angas
- Anufo
- Anuta
- Arabela
- Aragonese
- Arbëreshë Albanian
- Asháninka
- Ashéninka Perené
- Asturian
- Atayal
- Awa-Cuaiquer
- Awing
- Baatonum
- Bafia
- Bagirmi Fulfulde
- Balante-Ganja
- Balinese
- Balkan Romani
- Bambara
- Banjar
- Baoulé
- Bari
- Basque
- Bassari
- Batak Dairi
- Batak Karo
- Batak Mandailing
- Batak Simalungun
- Batak Toba
- Belarusian
- Bemba (Zambia)
- Bena (Tanzania)
- Biali
- Bikol
- Bini
- Bislama
- Boko (Benin)
- Bomu
- Bora
- Borana-Arsi-Guji Oromo
- Borgu Fulfulde
- Bosnian
- Breton
- Buginese
- Bulgarian
- Bushi
- Candoshi-Shapra
- Caquinte
- Caribbean Hindustani
- Cashibo-Cacataibo
- Cashinahua
- Catalan
- Cebuano
- Central Aymara
- Central Kurdish
- Central Nahuatl
- Central-Eastern Niger Fulfulde
- Cerma
- Chachi
- Chamorro
- Chavacano
- Chayahuita
- Chiga
- Chiltepec Chinantec
- Chokwe
- Chuukese
- Cimbrian
- Cofán
- Cook Islands Māori
- Cornish
- Corsican
- Creek
- Crimean Tatar
- Croatian
- Czech
- Danish
- Dehu
- Dimli
- Duala
- Dutch
- Dyan
- Dyula
- Eastern Arrernte
- Eastern Maninkakan
- Eastern Oromo
- Efik
- English
- Erzya
- Ewondo
- Fanti
- Faroese
- Fijian
- Filipino
- Finnish
- French
- Friulian
- Ga
- Gagauz
- Galician
- Ganda
- Garifuna
- German
- Gheg Albanian
- Gilbertese
- Gonja
- Gooniyandi
- Gourmanchéma
- Guadeloupean Creole French
- Gusii
- Gwichʼin
- Haitian
- Hani
- Hassaniyya
- Hausa
- Hawaiian
- Hiligaynon
- Hopi
- Huastec
- Hungarian
- Hän
- Ibibio
- Icelandic
- Idoma
- Igbo
- Iloko
- Inari Sami
- Indonesian
- Irish
- Istro Romanian
- Italian
- Ixcatlán Mazatec
- Jamaican Creole English
- Japanese
- Javanese
- Jenaama Bozo
- Jola-Fonyi
- K’iche’
- Kabuverdianu
- Kaingang
- Kako
- Kala Lagaw Ya
- Kalaallisut
- Kalenjin
- Kamba (Kenya)
- Kaonde
- Kaqchikel
- Kara-Kalpak
- Karachay-Balkar
- Karelian
- Kashubian
- Kekchí
- Kenzi, Mattokki
- Khasi
- Kikuyu
- Kimbundu
- Kinyarwanda
- Kirmanjki
- Kituba (DRC)
- Kom (Cameroon)
- Kongo
- Konzo
- Koyraboro Senni Songhai
- Krio
- Kumyk
- Kven Finnish
- Kölsch
- Ladin
- Ladino
- Lakota
- Latgalian
- Lingala
- Lithuanian
- Lombard
- Low German
- Lower Sorbian
- Lozi
- Luba-Lulua
- Lule Sami
- Luo (Kenya and Tanzania)
- Luxembourgish
- Maasina Fulfulde
- Macedo-Romanian
- Macedonian
- Madurese
- Makonde
- Malagasy
- Malaysian
- Maltese
- Mam
- Mamara Senoufo
- Mandinka
- Mandjak
- Mankanya
- Manx
- Maore Comorian
- Maori
- Mapudungun
- Marshallese
- Matsés
- Mauritian Creole
- Mende (Sierra Leone)
- Meriam Mir
- Meru
- Metlatónoc Mixtec
- Mezquital Otomi
- Mi’kmaq
- Minangkabau
- Mirandese
- Mizo
- Modern Greek
- Mohawk
- Moksha
- Montenegrin
- Mundang
- Munsee
- Murrinh-Patha
- Murui Huitoto
- Muslim Tat
- Mwani
- Ménik
- Mískito
- Naga Pidgin
- Navajo
- Ndonga
- Neapolitan
- Ngazidja Comorian
- Nigerian Fulfulde
- Niuean
- Nobiin
- Nogai
- Nomatsiguenga
- Noon
- North Azerbaijani
- North Marquesan
- North Ndebele
- Northern Kissi
- Northern Kurdish
- Northern Qiandong Miao
- Northern Sami
- Northern Uzbek
- Norwegian
- Nyamwezi
- Nyanja
- Nyankole
- Nyemba
- Nzima
- Occitan
- Ojitlán Chinantec
- Omaha-Ponca
- Orma
- Oroqen
- Otuho
- Palauan
- Pampanga
- Papantla Totonac
- Papiamento
- Paraguayan Guaraní
- Pedi
- Picard
- Pichis Ashéninka
- Piemontese
- Pijin
- Pintupi-Luritja
- Pipil
- Pite Sami
- Pohnpeian
- Polish
- Pontic Greek
- Portuguese
- Potawatomi
- Prussian
- Pulaar
- Purepecha
- Páez
- Quechua
- Romanian
- Romansh
- Rotokas
- Rundi
- Russian
- Rusyn
- Saafi-Saafi
- Samoan
- Sango
- Sangu (Tanzania)
- Saramaccan
- Sardinian
- Scots
- Scottish Gaelic
- Secoya
- Sena
- Serbian
- Seri
- Seselwa Creole French
- Sharanahua
- Shawnee
- Shilluk
- Shipibo-Conibo
- Shona
- Shuar
- Sicilian
- Silesian
- Siona
- Skolt Sami
- Slovak
- Slovenian
- Soga
- Somali
- Soninke
- South Azerbaijani
- South Marquesan
- South Ndebele
- Southern Aymara
- Southern Bobo Madaré
- Southern Dagaare
- Southern Qiandong Miao
- Southern Sami
- Southern Samo
- Southern Sotho
- Spanish
- Sranan Tongo
- Standard Estonian
- Standard Latvian
- Standard Malay
- Sukuma
- Sundanese
- Susu
- Swahili
- Swedish
- Swiss German
- Syenara Senoufo
- Tagalog
- Tahitian
- Talysh
- Tedim Chin
- Tetum
- Tetun Dili
- Timne
- Tiéyaxo Bozo
- Tlingit
- Toba
- Tok Pisin
- Tokelau
- Tonga (Tonga Islands)
- Tonga (Zambia)
- Tosk Albanian
- Tsakhur
- Tumbuka
- Turkish
- Turkmen
- Tuvalu
- Twi
- Tzeltal
- Tzotzil
- Uab Meto
- Ukrainian
- Umbundu
- Ume Sami
- Upper Guinea Crioulo
- Upper Sorbian
- Venetian
- Veps
- Vietnamese
- Vlax Romani
- Võro
- Wallisian
- Walloon
- Walser
- Wamey
- Waray (Philippines)
- Warlpiri
- Wasa
- Wayuu
- Welsh
- West Central Oromo
- West-Central Limba
- Western Abnaki
- Western Frisian
- Western Niger Fulfulde
- Wiradjuri
- Wolof
- Xhosa
- Yagua
- Yanesha’
- Yao
- Yoruba
- Yucateco
- Zapotec
- Zarma
- Zulu
- Zuni
- Záparo