When you choose a font, the most important criteria is “do you like it, and could you stand to look at it for 8 hours per day?”
There’s no accounting for taste, so if the short leg of the the letter
m in Ubuntu Mono really bugs you, then you should pick a different font and don’t let anyone tell you that you’re wrong.
But fonts have characteristics that aren’t subjective, and when you’re choosing a new font, it makes sense to consider these as well.
Some fonts require that you purchase a license to use them and they might impose limits on how many people can use them. PragmataPro and Triplicate are such fonts. Others can be used free of charge for private use—Input for example—but a license must be purchased if you want to use them on your website or in a print publication. In the open source community, many fonts use the SIL Open Font License. You can use, modify, and redistribute those fonts freely; derivative work must be licensed under the same terms—the OFL is a copyleft license—and the fonts may not be sold. Fonts licensed under the terms of the OFL include Fantasque Sans Mono, Iosevka, and Inconsolata. You can use these on your blog or in your papers or package them with your applications without worry.
Some fonts like DejaVu have extensive Unicode support, and are appropriate for people who write in foreign languages, who write mathematics, or who just want to use emojis. When fonts don’t have good Unicode coverage, some of the unsupported glyphs will be replaced with a blank square, or sometimes a fallback font can be used and that can break the homogeneity of the text.
If you play roguelikes, some (e.g., Dungeon Crawl: Stone Soup) use Unicode characters to display dungeon features. I’ve seen glyphs overlap when using some fonts, typically when a symbol is left of a common character. If this happens to you, try using a different font when playing.
Anyone who’s used a word processor knows how to make fonts bold and/or italic. But did you know that not all fonts have bold or italic variants? Did you know that some fonts have multiple weights, not just bold?
Monaco and Droid Sans Mono are example of fonts that just have the regular variant—they don’t have italics or bold. Fira Code comes in three weights—light, regular, and bold—but it has no italics. Many programmer fonts offer regular, bold, italic, and bold-italic faces: Fantasque Sans Mono, Meslo, Consolas, Inconsolata, and many more. Finally, some fonts offer many different weights going from very thin to very thick. Input and Iosevka are such fonts.
Most fonts are given to you as-is—what you see is what you get. However, some fonts let users customize them. Iosevka offers 12 stylistic sets out of the box, and if none are entirely satisfactory, you can modify a TOML file and specify exactly the glyphs that you want. Before downloading Input you can customize the glyph for some characters (g, i, l, 0, *, and the braces). Hack, a font based on DejaVu Sans Mono, has a repository of alternative glyphs; if you don’t like some of their glyphs, for example their zero, you can change them to something more classic.
Some fonts are “done”; they are no longer being developed. This can be frustrating if you find problems with the font and no one can fix it. At the time of writing this post, many font projects were in active development: Iosevka, Fira Code, IBM Plex, and many more.