Sudo

A free font for coders by Jens Kutílek

Sudo on Mac OS X (Python syntax in TextMate)

Sudo is also hinted for good screen display on Windows.

Sudo on Windows (Python syntax in UltraEdit)

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.

You can also install Sudo through the Type.World app on macOS and Windows. It will greatly simplify the font installation and update user experience. When you have the app installed, use this link to access the 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, 525 kB).

Sudo is mono­spaced

Sudo is monospaced: All letters have the same width across all weights.

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 mono­spaced

Sudo is monospaced, but not only monospaced! It comes with its sibling family, Sudo UI. Sudo UI is also based on a 16 pixel grid and retains the great legibility of Sudo (mono).

Sudo is legible

Sudo is legible: Different character categories are differentiated by height and alignment. Letters are easily discernable from numbers by height alone Coders still love their dotted zeroes.

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.

A dotted zero is included via the ‘zero’ OpenType feature, but text editor support is lacking. If you absolutely must have a dotted zero, you can use the Python script ‘patch_dotted_zero.py’ included in the download to make the alternate zero the default form. The patcher requires an installation of the Python FontTools.

From version 0.37, the default zero has a dot by popular demand. You can still swap it with a dotless 0 via OpenType feature ‘zero’ or with the included Python script ‘patch_dotted_zero.py’. The patcher requires an installation of the Python FontTools.

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.

Powerline in vim/iTerm.

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.

Contextual alternates for hexadecimal 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

Sudo is space-efficient: Its letter width is only 44% of the font size. For comparison: Consolas (r.) has a letter width of 55%.

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

Coder’s quotes: Some programming languages use acute and grave accents in lieu of proper opening and closing quotes. In Sudo, the standalone accents are enlarged. Similar signs like ‘greater than’ and ‘single french quote’ are differentiated by size and alignment.

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 has bugs!

I designed Sudo strictly for my own needs. Completist as I am, I couldn’t resist adding Greek and Cyrillic letters, but many of these haven’t left the pixel design stage. For me they don’t have a very high priority, sorry. If you like to work on their design, please send me any additions via GitHub.

The Bold weight is far from finished (though there has been substantial progress over time). The Italic weights are just the upright styles slanted by 11.31° with partial corrections. The Thin masters are extrapolated from Regular and Bold, with systematic corrections throughout. If you happen to fix something yourself, I’d like to get your pull requests.