Hacker News new | past | comments | ask | show | jobs | submit login
Lesser Known Coding Fonts (vfoley.xyz)
640 points by signa11 on Oct 20, 2019 | hide | past | favorite | 246 comments

Every thread about programming fonts is not complete without mentioning the wonderful website https://app.programmingfonts.org (no affiliation, I just find it really useful) which lists all the free programming-related fonts with live preview (for example every single font from the article, and every one mentioned so far in every comment in this thread is already there in the app) - it allows quick one-click preview with custom text on each font, and has direct links for downloading said fonts.

Every font from this thread is already there in the app so you might as well just try them all.

That is a truly fantastic site but it doesn't mention https://dank.sh/ which I first heard about in this thread.

Just to nitpick.

But I am right now going through every one of those fonts in the app to compare with the one I've used for almost a decade now.

Do you like it?

One of the things that really gets in the way of comprehension for me are typefaces with too much personality. These cutesy italics etc. really seem to affect my ability to get on with the job at hand.

This is why, despite trying, I've yet to find something that can outdo Consolas on Windows. I tried Fira this and that, Source code pro and a bunch of others from Google Fonts. They all are inferior to Consolas in my eyes. They'll either be missing the slotted '0', or look crowded in small sizes etc.

I found it terrible, not only because of the surplus personality, but due to aesthetic and readability issues.

Readability - the r looks to me closer to an i, not the i of this font but a generic i, I find it confusing and it slows me down.

Aesthetically - the f character have space before it that in many combinations cuts a word to two, for example in the word delightful. Generally the font is mono-spaced, but the space between and after characters varies a lot.

I found it terribly incomplete. $40 and it can’t cover all four standard weights: regular, bold, italic, and bold italic. I believe it was last one, bold italic, that it was missing and the website is careful to obscure that fact.

And the ridiculous of those italics glyphs. Like, who decided that the f and l should have huge decorative slings but not the g?

Do I like Dank Mono? I am indifferent to it. It hasn't sold me on switching from Source Code Pro.

It's better than a lot of other fonts I've seen on programmingfonts.org so far. But just because a font is good or on par with my current one doesn't mean I'll use it. Force of habit is a big factor.

The guy from PracticalTypography also recommends Source Code Pro as his free monospaced font of choice.

Ubuntu Mono is the only one that rivals Consolas, imho. I used Monaco for the longest time but keep coming back to one of these two

I use Monaco for coding and Ubuntu Mono for my terminals, for years. Best combo so far although Agave does look nice.

Microsoft has another font called Cascadia which I think is their attempt to improve Fira Code.

I've moved to it recently and is my new favorite. Mainly because my eyes are getting old so I don't need it to look good at 7 pt since I couldn't see it anyway. And I like thicker fonts like this.

My one complaint is the tilde.

Have you tried Ubuntu Mono? It's not as thick but is quite readable. Also their bold variant might satisfy you if the regular doesn't. DejaVu Mono is also quite adequate.

Too much of the cursive can damage readability, but if it's constrained, then it actually helps a lot. I use Dank Mono and write primarily in JS. I use the cursive for things like `let` and `const`, which helps them stand out. It's a very nice typeface, well worth the money.

I truely wonder how many people purchased a font for coding, at $40 when so many perfectly suitable fonts are free/open source.

Not to sound flippant or pretentious, but for me, $40 is practically free for a software tool. On top of that, I can expense licenses if I use them for my work. I’m guessing that most people in my position would have no problem paying $40 for a font.

It's still a bit much IMO. It reminds me of Sublime Text being priced at $70 or Input Mono being $40-100+ depending on the options you choose.

I assume they are willing to accept the risk of piracy and/or lost sales to free alternatives like Fira Code, and plan to make their money on institutional licenses instead.

I would bet that most who wouldn’t buy Sublime at $70 wouldn’t buy it at $35 either. If you’re paying for text editors and fonts they’re probably important enough to you that you probably won’t let price deter you unless it’s truly exorbitant.

Personally speaking I’m a bit more spendy on small dev products because I know it’s harder for them to stay afloat, unlike Jetbrains or Adobe which aren’t really impacted by my purchase decisions in any meaningful way.

I am not saying you are wrong but to me the real problem is death of a thousand cuts problem: I have zero issues paying for quality work and I do; but when these things start piling up -- fonts, images, logos/icons, IDEs, creative software -- you can easily find yourself spending $1000.

I am not stingy but I feel drowned in a sea of good work each requiring its payment. This phenomena turned me off paying for fonts and settling for free ones.

I find Dank's "f" disturbingly idiosyncratic.

Thanks for the introduction to Dank. First time I've seen it and I like the look of it. Particularly the 'f' shape.

What's the closest free font you've seen to it? As it's so different from my usual monospace font I want to try ssomething similar first to see how I find it, before spending money on it.

Is there a side-by-side comparison between this and Fira Code? They look very similar (apart from the italics).

It only lists free fonts

All free fonts I think? It doesn’t list for example Dank or Operator.

That's probably the case, thank you, I should have mentioned that.

Indeed, just the free ones. Although perhaps I should list the commercial ones too in some way. That said, I do tend to feature them in the tumblr blog, so you can search that for a preview, background info and a link.

Seems to be missing Computer Modern's Typewriter Text face (a.k.a. "CMU Typewriter Text"), which was my primary monospaced typeface (and still is on all except my work laptop, which I switched over to Fantasque Sans Mono since it's a better pairing with Comic Neue). It's a lovely font, the only fault being the lack of a slotted 0.

:/ The bitmap fonts are rendered with anti-aliasing. That's too bad. The advantage of bitmap fonts is how crisp they look. Here, they're pretty hard to read at small sizes.

Only if they aren't at their native point size. If you're on chrome, then you're right, because chrome renders how it wants, in classic "I know better than you" style.

Thank you!!!! I've been looking for something like this for some time now.

what I don't like about thus site is that there are no large bitmap fonts (not even the x11 standard bitmaps, which are great)

What bitmap fonts do you miss? The site is currently restricted to fonts with a license that allow me to serve a web font for the live preview. So while there are a bunch of bitmap fonts in there, there might be some missing. I love to find out about new fonts though.

I suspect those X11 bitmap fonts are in arcane 1980s formats that would require a chain of conversions-- from bitmap to vector to get them to Postscript Type 1 or TTF, and then from TTF to WOFF.

Yes, I’ve seen a lot with old formats. I don’t think the bitmaps themselves are a problem, I already have a bunch (maybe they are faux bitmap though, not sure actually). And they don’t need to be woff though, that just adds some compression and prevents installation. The latter of course not being an issue for the fonts that are featured here.

You can find the bitmaps on the standard X distribution, or more easily in many programs that embed them. E.g., terminology: https://github.com/billiob/terminology/tree/master/data/font...

i mean the standard "fixed" X window fonts, that come with x.org and have a large variety of sizes. They are typically the default font for xterm. They are everywhere, in debian for example, so no problem with the license.

In the US at last check, bitmap fonts weren't subject to copyright. Also, the X11 fonts I've looked at had a license string something like "these glyphs are unencumbered".

I am genuinely interested in knowing the appeal programmers find in fonts.

Im not sure I follow. Are you saying you don't understand why people who stare at letters on a screen all day every day for a living might have an interest in the fonts used on said screen?

We stare at text for hours on end, every day. We want the text to be functional... and pleasant to look at. I change fonts frequently, just to spice up my life - it's a little like changing your desktop background on a regular basis.

A good programming font helps avoid confusion. For example, it should be clear if a character is l, I, or 1 without having to see them next to each other (also o, O and 0 as well as others). A font should also make reading code as pleasant as possible (though of course this is highly subjective).

When you consider that programmers spend most of their time reading code, it's not surprising that many programmers care about the font being used.

Practically, we look at text all day long, so having a font that is easy to read is good ergonomics. A font may be good for code, but might not work as well in a tool like htop or gotop.

Monospaced fonts are also interesting from an artistic perspective that resonates with programmers. Font designers are able to be expressive and original despite — or perhaps because of — the constraints of the problem: all characters must have the same width and the text should be readable for long periods of time, often at small sizes.

Well, we spend almost all of our time reading code. I think it only makes sense we develop strong opinions about the font we do that in. It's an essential part of the interface.

Doesn’t have Dina :P

Sadly, Dina is only available as a Windows FON file format, which I can't use or host in a web app.

There are at least 2 TTF conversions if you search around.

E.g. https://www.donationcoder.com/forum/index.php?topic=15281.0

Not allowed by the license usually

    The Dina font is free. You are welcome to use, distribute
    and modify it however you want, just don't use it for
    anything illegal or claim that you made it.*

Hmm, that sounds like discrimination of fields of endeavour => not open source :'(

The 3 main things I look for in a "coding font" are whether I can differentiate between i,I,l,L,1 and 0,o,O characters, whether or not it is readable at tiny font size (7px to 9px range on my display) and that it is a monospaced font. first and second are nice to have in any font.

For over 4 years I have sworn by the excellent Fira Mono font by Mozilla more specifically FiraCode (variant with added ligatures), before that it was Consolas. Beyond the three things I have mentioned I do not desire anything more from a font.

[0] http://mozilla.github.io/Fira

I like Fira Code but it has too much flare for me. Microsoft recently came out with Cascadia Code which fits my bill. I don't know if it fits yours. It looks like you've already found your solution but I thought I'd pass this along anyway.


Cascadia looks really nice, but I worry about fonts that combine two equals signs into one long one. I can imagine getting used to it, but until I did I'd be worried about assignment-vs-equality operator bugs

You might be able to disable ligatures in your editor

Thanks for the suggestion, I did not know about Cascadia Code. I am a big fan of Consolas font but it is proprietary so I had to look for something better which lead me to discover Fira Mono. I personally really like its design choices, that is why I have been using it for so long also the fact that it is floss font is a huge plus, and If by flare you mean the ligatures then Fira Mono (the original font without the patched in ligatures) might interest you, then again if it has too much flare for you then that is that because font preference is subjective.

I looked at the issues page and was not surprised that Microsoft, in its Seattle-centric view of the universe, did not cover many international glyphs.

Any comment on how many of these coding fonts suffer these issues? I am glad to see the screenshots in the article at very least thought to include Greek.

I think a programming font should cover at least full Latin and basic Greek, and the Unicode blocks General Punctuation, Superscripts and Subscripts, Currency Symbols, Letterlike Symbols, Number Forms, Arrows, Mathematical Operators, Miscellaneous Technical, Control Pictures, Box Drawing.

In fairness to Microsoft, Cascadia Code is still a young project. A couple of weeks ago, they had their second release which added Latin characters (vowels with accents, cedillas, etc.) Hopefully they keep adding more.

Perhaps I am slightly frustrated that I have seen recent MS de-prioritize internationalization. Which is ironic because in the 90s they had Unicode support and features like RTL mirroring before a lot of others.

I am also a former MS employee, so maybe it is more of a loving criticism than appears on the surface.

looking at the roadmap it seems like a number of things are coming...


Why tiny font sizes, out of curiosity? Do you typically use those font sizes, or is that just a handy measure of readability?

I'm all for fitting a lot of content on the screen, but I don't go as far as shrinking font size to the minimum I can read.

Good question, Although the numbers are almost arbitrary there are a couple of reasons:

-- when looking at logs, database dumps or large forigen text files in general, it is often convenient for me to set the font to a smaller size in order to get better context from surrounding text and for this purpose, I need the font to be able to facilitate my workflow regardless of size and resolution of my current display.

-- Although I no longer use mini map like features of text editors (in part due to the novelty wearing off and in part due to my move away from VS Code as my primary IDE/Editor to Neovim), such fonts make the mini map almost readable on large high resolution displays (which again, provides better context for the code I am editing).

-- It is a handy measure of readability. If the font is readable at that size then it has good geometry and can be used on most low resolution displays (it is a range I came up with after experimenting with a 768p 15.6" laptop display) as previously mentioned sometimes it is handy to be able to lower the size in order to get a better view of the context.

not op, but while I don't usually set my fonts so small, on occasion I felt the need to, and was frustrated when my used font suddenly became unreadable.

The 0 and O are fairly ambiguous in that example. I pretty much require strikes or dots in the 0 for any font to be considered unambiguous.

You might be looking at the non monospaced variant in the Fira font family.

I think you looked at Fira Sans, the Fira Mono typeface is below that.

The zero is dotted...

U used Monofur[0] as a programming font for the longest time since it differentiates the similar characters so well. In addition it's a nice friendly looking typeface with big round characters.

That said these days I mostly use fyra code.

[0] https://www.dafont.com/monofur.font

This rarely gets a mention but totally deserves one: Iosevka[0], a programming font with great ligatures, multiple weights, and customizable character variants to tune it to your preferences. It’s more slender than most blocky monotypes which makes it stand apart especially from more traditional choices like Monaco and Consolas.

[0]: https://typeof.net/Iosevka/

I'm 100% in the Iosevka camp, especially the serif version with Iosevka Slab.

Looks amazing on a Retina screen, and it's quite compact on the horizontal axis, many programming fonts are far too wide for my tastes.

Just curious, which font size do you use? I kinda feel that small font size + serif make text unreadable.

I think it's perhaps small font size + serif + low resolution. Serifs can improve readability at times.

I used Iosevka for a whole year and it is one of the best fonts I've ever used, amazing quality. I only changed to Input because I wanted to have some variety.

Iosevka rocks. Regular, narrow width, nice looking both on low dpi and high dpi screens. It's the best for writing code IMO.

Iosevka converted me into a narrow width font fan, +1 for this suggestion.

Of all things in the world to say, congratulations to Microsoft for their work on Cascadia Code: https://github.com/microsoft/cascadia-code

It's hard to do these fonts justice via preview alone, but in whole it's very legible to read.

Aside: If you want fast access to a ton of fixed-width (coding) fonts, pre-patched for powerline, you can grab them at https://github.com/powerline/fonts.

If you do CJK (Chinese, Japanese, Korean) characters in the terminal and want crisp, bitmap ligatures, I recommend Wen Quan Yi Micro Hei. But it doesn't work well scaled up in HiDPI monitors unfortunately! CJK in the terminal is still kind of a mystery to me.

I don't like the Cascadia Code font! It feels difficult to read, full of fluffs and blings.

Cascadia Code looks like the Comic Sans of programming fonts.

I see Input Mono is mentioned, but I actually really like using Input Sans, also from Font Bureau. It's a proportional coding font. I feel like I'm living in the future.

You can get it here: https://input.fontbureau.com

And amazingly, you can personalize your font on download, such as choosing dotted vs slashed zeroes.

Not free, but free for personal, non-commercial use. (Check the terms)

I've been using proportional fonts for coding for years. Nobody notices when looking at my screen or when doing a screen sharing session. The few times I talk about it everybody agrees that it's easier to read. I'm not surprised, because nobody formats books, magazines, newspapers, web sites with monospaced fonts. The only problem is that it's impossible to align code on successive lines to the right of an equal sign. Not a big deal. It's also pretty impossible to write ASCII diagrams in comments. AFAIK there is no editor that can help with that, unless one wants to code inside a word processor.

I'll try Input Sans.

ASCII diagrams in comments/docstrings are doable if your editor supports custom faces. For example `M-x list-faces-display` on emacs tells me that (among other things) I can customize:

- font-lock-comment-face - font-lock-doc-face - org-table (also depends on alignment)

Web pages and books almost always format code with fixed-width fonts.

For ~6 months I used Comic Sans as my single font system-wide - like, for everything. Everywhere in the system UI, code, even on webpages (Firefox lets you disable CSS font selectors). The only exception was the terminal, which got messed up with non-monospaced fonts.

It was actually surprisingly great. Then as soon as I got a 4k monitor Comic Sans started to look very ugly - if not for that, I would still be using it. These days I use GNU FreeFont (FreeSans) for the system & Firefox & IDEs, but I have started to do almost all programming through the terminal so I use Fira Code and [Liga]Hack for that.

So give Comic Sans a shot, you might end up liking it too :) (On Windows/macOS you probably won't be able to set it as your system font, but you could still use it in your IDE and on the web)

If you liked that, then you may get a kick out of Comic Code, a fixed width variation of Comic Sans designed for coding:


I've been using it for a few months and really enjoy it!

I'm trying it out, so far I like it! Thanks!

I have to ask, why Comic Sans specifically? Seeing as it almost universally regarded as an specially ugly font. The only uses that I’ve seen accepted for Comic Sans are for use in comics (obviously) and for people with dyslexia.

I saw a Reddit post saying the same thing as my post here (CS is nice, try it out). I did and I just liked it. It's not ugly.

Maybe they do have dyslexia.

I use Comic Sans as my font for closed captions. I'm not dyslexic, but I actually find it way easier and quicker to read than something like Helvetica. But I would never ever use it in a design.

There’s now also Output[1], designed for UI rather than code, but with a feel that is very similar to Input.

1: https://djr.com/output/

Input looks good I'm going to check that out. I've been using https://sourcefoundry.org/hack/ for a while. I couldn't find anything better at the time for 10pt terminals.

How does column select mode work with a proportional font? Is it ever an issue?

This one is seriously beautiful!

Those braces are quite wiggly

When I was researching coding fonts for myself I've found the two I liked the most were Iosevka and Fira Code because of their ligature support (DejaVu Sans Mono is also good but typically doesn't have ligatures). The choice between them comes down to whether you value having more horizontal space (shorter lines) or vertical space. Iosevka is horizontally compressed, meaning you can fit more characters into a given window width, and Fira Code is more vertically compressed.

Also, in Visual Studio Code you can fine-tune your coding font using these options:

    "editor.fontFamily": "'Fira Code', monospace",
    "editor.fontSize": 14,
    "editor.lineHeight": 14,
    "editor.letterSpacing": -1.0,
    "editor.fontWeight": "300",
    "editor.fontLigatures": true,
I recommend tuning your lineHeight and letterSpacing.

I really want to use Fira Mono/Code, but it sadly doesn't support italics, which is a deal-breaker for me, so instead I've been using Iosevka for a week. It's really pretty!

Iosevka is the one that I always go back to: https://typeof.net/Iosevka/

Both the standard and slab versions are great

Holy smokes!

For as long as I’ve been coding, I’ve never heard of this font. Thanks for mentioning it.

Surprised nobody has mentioned PragmataPro


Probably the most complete and polished programming font I've seen. If you like Iosevka, you'll love PragmataPro.

I've been spoiled by Iosevka and PragmataPro's narrow characters, so now I can never go back to "normal" programming fonts...

I ended up going with Iosevka because it's basically PragmataPro without the 200EUR ($223) price tag. I just can't justify that much for a freaking font to myself, no matter how nice it looks.

You could just buy the normal and perhaps italic weights.

If you're a software engineer, $100 on a font that you look at 8 hours everyday for a living is a no brainer. You'd probably spend $80 on a mouse, $100 on a keyboard, $120 on a good pair of shoes, $1500 on a good mattress, fonts are one of those things. If you like it, there shouldn't be a hesitation for "oh...its just a font, why should I pay for it".

Typefaces are insanely hard to design and optimize. Sometimes, it takes a couple of years to develop one typeface.

I've heard this argument many times, and it would work in a vacuum. A $100 keyboard is probably better than a $10 keyboard.

This $200 font is not better than this other $0 font, and it has the same aesthetic. And good luck quantifying "better than" given a list of feature checkboxes that are common to all "programming fonts" including Fira Code, Source Code Pro, etc.

I wasn't trying to imply $200 font is better. I think you missed my point - which is that there is a stigma associated with paying for fonts and that usually comes from the fact that people do not know what goes into development of fonts due to the abundance of free fonts available on the internet. Sure, free fonts can be great - I did not say they can't be.

One of my favorite fonts is Isoveska which is free.

What advantages does PragmataPro offer over Iosevka?

I would think it would have to be pretty significant, given the licensing and customisability of Iosevka.

PragmataPro user here, I just love it everyday of my dev life

This is missing Terminus[1], a wonderful bitmap font which is widely available on unices.

[1]: https://sourceforge.net/projects/terminus-font/

I really like Terminus and have been using it for years. My problem with it is the width -- it's just takes so much space that I can't read nicely 2 files side-by-side. Does anyone know similar font just bit narrower? Fonts that have been designed with anti-aliasing in mind fall out immediately.

Terminus is pretty well known, though.

I may be an oddball here but I prefer and still use to this day the original IBM VGA8 BIOS bitmap font [0] for monospace everywhere including IDEs and text editors. I grew up in the late 1980s and 1990s staring at DOS text mode screens and this font was pretty much burned into my brain. Generally I try to keep it at its original 16px height and avoid any sort of non-integral scaling or antialiasing blurriness.

[0] https://int10h.org/oldschool-pc-fonts/fontlist/ - the default font for that site; I use the PxPlus variant.

I do the same thing. It's very comforting to be using that font.

I am still very happy with https://github.com/i-tu/Hasklig

its nice and readable, but has ligatures, which makes things like == & -> very obvious.

I'm a big fan of https://github.com/belluzj/fantasque-sans/ the characters make me happy every day :)

Fantasque sans mono is my current font, as I've been using it for over a year, as it was the only font that I really like. It is slightly too fancy sometimes, and I go the one that renders "k" without the loop.

There's a download option to have Fantasque Sans Mono without the looped k.


i used it for long time, got exposed to go-mono from this list, serif for code, giving it a try

Huge fan of Go Mono. I was taken aback at first at the idea of a monospace serifed font, but after trying it out I've come around to appreciate the clarity of it.

I'm tempted to switch to it, since it's remarkably similar to the Gallant font (a.k.a. sun12x22 / gallant12x22) I use on my OpenBSD and Linux virtual consoles. I tried using Gallant directly, but apparently Linux console fonts don't map cleanly to X11 bitmap fonts and it caused issues that I didn't feel like troubleshooting.

I always use Dina font, except on HiDPI screens were I use Terminus. I even ported Dina to AmigaOS so I can enjoy it there as well. It is the most legible and non-tiring font for terminal/vi work for me.

Dina font: https://www.dcmembers.com/jibsen/download/61/

Dina font port on aminet: http://aminet.net/package/text/bfont/Dina

I have used Sudo and Monoid for years. Other fonts I like are:

- Luculent, http://eastfarthing.com/luculent/

- Envy Code R, https://damieng.com/blog/2008/05/26/envy-code-r-preview-7-co...

B612 Mono would be an excellent font if the glyphs were well aligned.

Adore Envy Code R. Wish it was something I could purchase and have maintained, one of the very few customisations I make on a new box is configuring things to use it.

My current favorite is the 8x16 Atari ST system font. Its thick strokes really help my aging eyes. Bitmap fonts for life.

I also love bitmap fonts, but when you're switching screen sizes it's annoying to have to change your config each time.

That's when you cheat and use a TrueType version of the bitmap font :)

But then it's not as crisp looking :(

I have tried lots of different coding fonts for fun (and when I change fonts, it just feels like using a brand new computer :-)), but my go-to font when I just don’t want to think what I’m gonna using is SF Mono, from the San Francisco fonts by Apple[0].

It blends well with the macOS system fonts, and it’s great.

[0] https://developer.apple.com/fonts/

SF Mono is awesome. Using it for a long time.

The link you posted https://developer.apple.com/fonts offers to download and install .dmg -> .pkg. I usually install SF Mono via /Applications/Utilities/Terminal.app/Contents/Resources/Fonts. This folder contains all SF Mono fonts in .otf format. If you open them and install, it vill be available everywhere. You can copy those files and install it on Windows or Linux computer.

Also this extension is musthave: https://chrome.google.com/webstore/detail/advanced-font-sett... I set SF Mono as default monospaced font for chrome. IDK why ugly Courier font is still default in many software.

FYI If you just want to change the 'monospace' font in Chrome, you can do that from chrome://settings/fonts and don't need an extension (I changed it from Courier New to something nicer as well).

Questions to ask, always.

Are capital and small letter I, large and small letter L, vertical bar |, and exclamation point !, clearly distinguishable.

Same for zero, large and small o.

Same for different brackets [ { ( <.

Same for colon, semicolon, comma, period.

If the font doesn't do this, then it's not very useful for programmers.

Extra points if multiple underscores, as in __FILE__ are separated so you can in the example count that there are two underscores before and after FILE.

Forget something. For the i I l L | !, don't forget numeral one 1.

I do not think you can talk about typefaces separately from talking about color themes. Different typefaces will have completely different legibility depending on the background and foreground color. Low-contrast themes are terrible for legibility, and necessitate poor choice of font and font size to compensate.

In 2017, I decided to invest some time in font-shopping; so many good alternatives had appeared since I last looked in 2009. The unexpected result was that I stopped using vector fonts and switched almost everything I do to the X Window System bitmap misc-fixed font.¹ After looking at the alternatives, misc-fixed is still the best typeface for text density and extended computing sessions. It was a typeface designed for black-on-white CRT displays in the 1980s, but works just as well white-on-black on LCD displays today.

¹ Unfortunately Firefox font picker only lists vector fonts, I did not bother to try fixing that.

> Unfortunately Firefox font picker only lists vector fonts, I did not bother to try fixing that.

Fontconfig on most distros is configured to reject bitmap fonts by default. On Debian, it's /etc/fonts/conf.d/70-no-bitmaps.conf. One way to fix that is enabling all bitmap fonts "dpkg-reconfigure fontconfig-config", which might be too much. Another is to explicitly enable Fixed in /etc/fonts/local.conf: https://github.com/stevenrobertson/rc-files/blob/master/.con...

Taking the opportunity to mention Spleen, which I've been working on for the past year: https://github.com/fcambus/spleen

It is a monospaced bitmap font available in several sizes, ranging from 5x8 up to 32x64.

Give me Consolas or give me death.

I have tried many programming fonts. I love articles like this that expose to me to new, fun things to try. But alas Consolas is King.

I also use Consolas, but from time to time I have to read code on another machine or some environment without Consolas or rendering problems, and the things is: if the other font is good at first it's a bit hard, but after a couple of minutes I don't feel like it's a problem reading it. Then going back to Consolas I have almost the same experience. So my anecdotal, personal idea about this is: as long as the font doesn't suck, it just doesn't matter. Same with books: I read everyday, different fonts, not once did I think 'wow this font should be banished, it hurts my eyes' or 'wow every book should use this font'. Of course on a subconcious level there might be fonts which measurably perform better (i.e. need less cognitive processing by the brain) so: show me the evidence before claiming your font is much better than mine :)

I used to think this, until I went on my quest to find a better fonts. Microsoft did a really good job on Consolas to make it look great on Windows.

Unfortunately a lot of coding fonts dont hint well on Windows, or only look good in hiDPI...

Eventually I settled on Droid Sans Mono, which I modified to have a slashed Zero.

Yup. These days a shocking number of people never test on Windows or a 1080p monitor.

Windows is my primary dev environment. I don’t think many people are even trying to look good there. So I’m not sure Consolas will ever be dethroned. Not for me at least.

I’m team “operator mono”. It costs a bit but damn is it beautiful

I find it frustrating to objectively compare fonts when their heights and widths can vary so much.

My requirement are fairly simple:

I want the the largest & most readable font setup in 13" 1280x800 retina display, while still being able to fit at least 161 characters across, so that I can have 80+ characters in each editor in a split screen setup.

My current setup is: 14pt Monaco with 88% horizontal spacing. This gives me 181x39 characters in iTerm.

Another similar setup is Mensch @ 13pt @ 88% horizontal & 118% vertical. I like the bitstream/deja vu variations like Panic Sans or Mensch.

It's a shame you can't use bitmapped fonts - I find that Terminus at 9pts is the most legible whilst being still small on a range of DPIs. The truetype version of Terminus is truly awful and does not carry over the legibility of it's bitmapped counterpart.

I settled on Inconsolata-g. I hate curly i's and l's.

I've only got two minor quibbles with it, I prefer a slashed zero instead of a dotted one, and the tilde ~ and back quote ` are a bit small/weak.

Somewhere I saw a version of Inconsolata with the slashed zero. There was a site at one time that collected all the Inconsolata permutations in one place, but I don't have it offhand.

I'm revising Inconsolata, making it into a variable font, and would like to gather data on the variants out there so I can make it satisfy the largest number of users. Feel free to file an issue on https://github.com/googlefonts/Inconsolata simply stating your preference.

I like 3270font, inspired on 3270 mainframe terminals: https://github.com/rbanffy/3270font

Until reading this and learning about Go Mono - I hadn't ever thought to look for both serif and monospace attributes in a single font. I just assumed that monospace implied sans-serif.

I personally find serif fonts _far_ easier to read and aesthetically pleasing. I've switched my phone to using Serif fonts too (though annoyed that on Samsung/Android I needed to _purchase_ a font to make that happen - not expensive, but nonetheless).

This just might move me on from Source Code Pro for all my editing purposes.

The very first monospace font I ever saw, Courier, was a serif font.

You're right - it is indeed a serif font, which I've seen many times (but never considered using it as my daily driver).

My favorite coding font is Monaco. Feels like the cleanest of them.

I can agree with this. It's especially wonderful without aliasing on an even multiple Retina display. For example, 2x on a 5k Monitor (iMac, LG Ultrafine) or MacBook Pro. It's simple, clean, tried and true.

Monaco 9 in BBEdit :)

"Monoid" in the linked article made me think of it immediately.

Exactly what I was thinking - most of my earliest coding experiences involved editing 9-pt Monaco in BBEdit!! heheh :)

Monaco 12pt has been my font for the past decade

I would check out nerdfonts[1] it includes some of the ones listed in inside it

[1] https://www.nerdfonts.com/

What is the use case for all of the extra icons? Not criticizing, I'm just wondering if there's something that I missed.

I know it's mentioned in the article, but I've loved using Fira Code for awhile. It's made some parts of code much easier to read in ruby and javascript.

Tweaking the coding fonts is the ultimate form of productivity porn. Don't do that unless you see any actual problems with your current font.

I think switching up how you do things from time to time keeps things fresh. Change your wallpaper! Rearrange your office! Go without syntax highlighting for a day! And, yeah, change your programming font.

Go Mono looks very much like Luxi Mono, one of my favorites. I'll have to give it a try.

Both were designed by the same studio, and the Go fonts are clearly inspired by the Luxi family: https://twitter.com/0intro/status/799230797601525765

Has anyone used IBM's Plex Mono[1] for an extended period of time? If so, I'd love to hear your thoughts.

[1] https://app.programmingfonts.org/#plex-mono

Yes, for about a year now, both in the console (alacritty) and vscode, and I think it's great. Granted, I mostly ignore it, which is a good thing.

I frequently change the term emulator font size, and each size oddly changes the "aspect ratio" – for lack of a better term – of both Plex and any other monospace font. I find it weird, but it does sometimes help to have a somewhat narrower variant of Plex, especially for side-by-side terminals.

There should be more variable-width coding fonts.

The latest release of Iosevka has a "quasi-proportional" variant called Iosevka Aile which I really, really like.

Here's a 3200x1800 screenshot with some code in Emacs.


The kerning is not as tight as in a real proportional font. It's a bit more spacious and regular so that fixed width tabular layouts still look relatively decent.

The original image might’ve been 3200x1800 but it sure ain’t on imgur, unless I’m missing an obvious ‘view raw/original image’ option...

Uhhh sorry I don’t understand imgur. I think there’s a way.

Oh it seems that the mobile imgur site is totally nerfed. Sorry. Is there a better free image host?

Ah, no worries - I’ll take a look on desktop in a minute. Better free image host? I guess github pages is a less-friendly alternative.

Right-click the image, and choose "View image". Works at least in Firefox.

I should’ve mentioned I’m using a tablet. Although there’s a convoluted method involving long-hold and the Photos app, it still only save the low-res thumbnail.

Maybe try copy&pasting the URL instead of clicking it (so that no Referer is sent)?

Well, I'm not sure if there's a way of doing that on iOS, but I'm on desktop now anyway, so if anyone else just wants a direct link to the full-size image, here it is:


(edit: although, nope, even opening the direct URL to the image reroutes it to the low-res thumbnail version. I just don't think it's viewable on mobile — never mind!)

Note that this is the same URL that the one that was originally posted. :-/

Related HN discussion: https://news.ycombinator.com/item?id=21303283

Incredibly readable, thanks for sharing. I like your color scheme, too.

It's an Emacs theme called "cyberpunk". :D

As someone who's never used a variable width font for writing code, I have to ask why would you want that?

Variable width fonts are generally more readable, which is why they’re generally used for prose.

Fixed-width fonts allow for easy tabular rendering in a text editor. Some programming styles use this heavily but it’s not universal. Particularly, if you rely on line-by-line blame in source control, alignment changes can make it harder to find the commit where the most recent semantic change happened.

Traditional fonts even had non-lining figures, with varying heights for easier readability. Modern-style figures were only really used for tabular display, or with content written in uppercase/title-case. (Of course, it's hard to support this kind of complex text styling when editing plain-text files that are going to be fed to a compiler, or some other text-processing step.)

But source code is very different from prose. Are there any studies on fixed-width vs. proportional readability specifically when it comes to programming?

I use Geneva for coding. Variable width typefaces are easier on my eyes. I find that my page-scanning more readily gets lulled into laziness when using fixed width. And variable width keeps me from doing goofy alignment games with blocks of similar text (e.g. lining up the `=` signs in a list of assignment operations) that I invariably regret later.

The kerning is easier in your eyes, and is also much more space efficient. The only drawback is the inability to do ascii art.

While I wouldn't say it's THAT significant, there is one other advantage to fixed-width fonts that I've experienced. Due to the fact that they align vertically, sometimes they expose mistakes if you're constructing data in a table-like fashion. Or when you have a bunch of copy/pasted lines that differ only in the parameter values. Like, "Hey wait a minute... this line is 1 char wider than the previous one. Oh, whoops, I fat-fingered something there".

I wish I had more specific examples and could quantify it better, but I know I've caught quite a few errors this way.

This exactly. Most recently I had a script that was calling functions with fixed width data sets (IDs, credit card numbers, birthdates, etc..), and typos were significantly easier to find due to the data and fonts both being fixed width.

This is because we don’t have any decent rich formatting options available for code in a plain text file. You could totally find those errors in an excel spreadsheet, and excel doesn’t default to using fixed-width typewriter fonts.

Maybe it's because I've only used fixed-width fonts for programming and have gotten used to it - but I find fixed-width fonts significantly easier on the eyes.

But would you ever read a novel using fixed width fonts? Modern typography uses variable width fonts for good reasons.

I find type writer fonts to look horrible since I’ve gotten used to variable width fonts. It’s like immediate eye strain for me. But you have to choose a good font, times new Roman won’t work.

I used DejaVu Mono Book for quite a while, I had no problems with it.

Only when coding or always, for example books and websites including this one?

Only when coding or working with raw text, I use variable-width fonts everywhere else (reading, browsing the web, etc).

And aligning text in some indentation styles

Stroustrup uses them in The C++ Programming Language and it is made it much nicer to read.

If you're using tabs for indentation, and not trying to do pointless alignment then there's really no reason to use monospaced fonts at all - it just makes things uglier.

I use visual block mode editing quite a lot. I can't imagine that works well with a variable-width font.

I can't seem to find even one variable-width font with programming ligatures.

It displays better on some systems then others, but I like 'Liberation Mono'.


For those who found almost the right font but not quite, FontForge is a free and open source editor that's pretty easy to use and even has a tutorial on editing and design:

https://fontforge.github.io/en-US/ http://designwithfontforge.com/en-US/index.html

Editing glyphs is just like using any image editor. You can mod any existing font or even combine glyphs from multiple fonts together into one.

Seems a bit superfluous to suggest commercial fonts when there are so many good free ones, but I am very fond of FontFont Attribute Mono (https://www.fontshop.com/families/ff-attribute-mono) by Viktor Nübel. It's cheerful, friendly and characterful without being too eccentric, and very easy to read.

Some of my favourites not mentioned on this thread yet include D2Coding by Naver (https://github.com/naver/d2codingfont) and Programma by Douglas Crockford (https://github.com/douglascrockford/Programma).

Tried them all over the years.

Then I bought Triplicate from mbtype.com and since then it's been my mono font of choice in everything. Nothing comes close on HiDpi screens

My favorite for programming and terminal, Luculent:


Can anyone recommend a good font which has good differentiation between lowercase letters and uppercase letters (when dealing with both lower/upper unicode subscripts and superscripts)

Presumably lowercase letters would have a rounder o, and uppercase a flatter/blockier O, i.e. all lower/upper have some differentiation, and no lowercase character where it is just a scaled down version of the upper.

would be eternally grateful.

I just switched to Monoid and I like it so far. But it is quite a change. Compared to my previous font (Fira code) it is really different.

This is a really hard feeling to explain, I wouldn't say that Monoid is easier or faster to read, but it distract me less. I feel like I am more focused on what I read while still being able to scan a file to find what I want.

For a brief while I tried using Comic Sans in my IDE. I did that because it was made to be super readable. It was in fact super readable, but I just couldn't get over the lack of mono spacing.

Then I switched to FiraCode and it's been great.

I still use Comic Sans in all of my chat programs though (IMessage, Slack, IRC, etc.) I actually really enjoy it.

Check out Fantasque Sans Mono, it is a monospaced Comic Sans.

Seconded; it's exactly what I use with Comic Neue.

I wouldn't say it's exactly a monospaced Comic Sans; there are substantial differences. It definitely has a lot of the same advantages, though.

This is the font that I use and it's excellent.

Nice article.

I think most just stick with fonts they've used in the past. In my case, I can't get myself to use anything other than Apple's Terminal (which uses SF Mono). Maybe later in the future I may budge and move off of it (iTerm2 for some reason can't quite exactly get SF Mono right, even though I import it).

What about it is wrong? Apart from a different weight (which you can disable if you’d like) I’ve found SF Mono to work quite well in iTerm.

Ubuntu Mono remains my favorite for coding/terminals. It has a great mix of character and minimalism and of course is completely free/libre. https://fonts.google.com/specimen/Ubuntu+Mono

The only thing I don't like about Ubuntu mono is tiny minus ("-") character. It is way too narrow.

Bront Ubuntu Mono fixes this, but breaks other things: some letters, for unclear reasons, are weirdly stretched (see "l")

Agave[1] and Lekton[2] are among my favorites.

[1]: https://app.programmingfonts.org/#agave

[2]: https://app.programmingfonts.org/#lekton

used consolas so far, tried Iosevka but felt like something was off, this Agave thing is great!! Thanks!

It’s good to see that many of these fonts distinguish well between open/close quote characters - this is a personal bugbear of mine. For example, Input Mono fails for me on this aspect. Hyphens and the two dashes are usually problematic, too - unfortunately, no examples of those in this post.

I would really like to use a proportional font that has coding ligatures (such as -> becomes an arrow). Is there such a thing? Is there a way I could combine two fonts, a normal proportional font, and the ligatures from something like Fira Code , to create a hybrid font, perhaps with a script?

Not entirely sure I understand, but maybe Pragmata Pro? https://en.wikipedia.org/wiki/PragmataPro

There are projects like this one, which add ligatures to non-ligature fonts. Maybe it will help.


There aren't yet, but Iosevka now has an experimental proportional version. It does not seem to have ligatures yet, however that might just be a question of time.

I found fonts to be not all that important so I switched to Andale Mono or it's free variant (not sure) .

It is a very old one from the ie4 Era. Looks a bit more retro but mostly like all the other typical programming fonts.

I switched to it because I own a watch using this font and liked the idea of matching it to my system.

This is definitely missing Dank: https://dank.sh

It's my favorite programming font, made by a good friend of mine. It has awesome ligatures and the italic version is beautiful, similar to Operator Mono!

An interesting font, but can't say I'm a fan of the regular 'f' extending down below the baseline. The italic style is fancy, but honestly feels a bit ostentatious (in particular I don't like the 's') to the point where I think the attempt to look pretty/handwritten interferes with its readability - especially at smaller sizes.

I really like it overall, but I think the f going below the baseline and the italic l not starting at the baseline would drive me crazy.

I wonder how hard it would be for me to change just those characters.

Easy. A basic font editor can do it. I for example experimented with changing the weight of parenthesis, thinking they're not evil in Lisp, just tuned badly for that purpose.

Larger or smaller weight?

wtf is wrong with the f?

I really like consolas. It looks beautiful, there is no ambiguity between characters, the spacing and sizes are perfect. It comes pre installed with Windows, and I even use it on Linux, which is my primary development environment.

My favorite lately is iA Writer Mono: https://ia.net/writer/blog/a-typographic-christmas

So glad to see Go Mono mentioned here. I'm a happy user for many years now.

My favorite lesser known coding font is Monofur:


My favorite too.

https://youtu.be/_WgrfEaAM4Y?t=1206 Anyone know this font/theme name? Looks solid to me.

That's Hack [1].

[1] https://sourcefoundry.org/hack/

This is what I keep in the archived monospaced fonts file: https://i.imgur.com/ljIsGBV.png

Cant edit anymore, here is the archive: https://filebin.net/95tzseyosis5dnua

I've really been enjoying the Overpass fonts from RedHat - https://overpassfont.org

I don't really like their mono font but the others look pretty good, just not for coding. Thanks for sharing. I didn't know about them.

I'd really like to see a monospace font with variable stroke width (i.e. with stroke width contrast). Current monospace typefaces seem to converge towards a single point in the configuration space, and by now occupy a pretty narrow range of variation—rather evident in the ‘Programming Fonts Test Drive.’ My eye pines for some elegance among the ubiquitous brutish utilitarian letterforms.

Variable stroke width is really uncommon in sans-serif fonts, so that some people associate sans-serif with fixed-width strokes. But no, such fonts exist, only they are mostly used for display, i.e. big titles and posters. While monospace is not equal to sans-serif, it for some reason rejects variable stroke widths even more strongly.

Linux Biolinum is one sans-serif example that can be used as body font. It's a straightforward antiqua with serifs chopped off: http://libertine-fonts.org/show-me/

Humanistic Rosario has almost imperceptible, subliminal stroke contrast: https://www.fontsquirrel.com/fonts/rosario (The font suffers a bit from sub-ideal kerning.)

Optima is a classical example, also reminiscent of antiqua. Lucida Grande (iirc) has hints of variable strokes.

The brain begins to panic at first when it sees stroke contrast but no serifs—but such fonts do tickle me somehow, especially with modern humanist approach. It's a pity they're mostly present on loud posters. Would be splendid to have me a homely playful and eye-pleasing font in the editor and terminal.

Just to note, numerals five and six and lowercase-B look alike in some fonts:


I swear by Source Code Pro.

what do you guys think is the best editor theme in bright light? I have been always using monokai but recently I have to work in bright light sometimes and it's quite hard to read.

Check out Dracula At Night for VS Code. I swear by it for every IDE possible. I'm honestly surprised it's only got around ~52k installs. I don't remember where I first found it, but I'm glad I did.

Visual Studio Code has a theme called Slack that works well in bright light

Anyone still able to access the website? Seems to be down right now.

It's up now (10:04am EDT), but this is the first article on my site that has this much traffic, so it's possible the small Linode instance I use was not able to keep up.

Sudo is awesome. Thank you for mentioning about it.

I love the APL333 font! Thanks mate!

that not make any sense

I compiled a large list of monospace coding fonts a couple years ago. Includes screenshots and links:


Hope someone else finds it useful.

Personal Favorites

- Iosevka Term Slab - Envy Code R - DaddyTimeMono - M+ 1mn - Consolas

finally someone mentioning "Daddy Time Mono" font. Cheers!!

Hmm, I submitted this a short while ago. I wonder if something is up with the HN dupe detector...: https://news.ycombinator.com/item?id=21300971

Applications are open for YC Winter 2022

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact