Lesser Known Coding Fonts | Hacker News

Every thread about programming fonts is not complete without mentioning the wonderful websitehttps://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 mentionhttps://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 withtoo muchpersonality. 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?

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.

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.

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.

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).

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.

:/ 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.

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.

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”.

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.

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.

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

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 theexcellentFira 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.


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

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.

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).

— Itisa 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.

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

That said these days I mostly use fyra code.


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.

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.


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 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.

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 atonof fixed-width (coding) fonts, pre-patched for powerline, you can grab them athttps://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.

When I was researching coding fonts for myself I’ve found the two I liked the most wereIosevkaandFira Codebecause of their ligature support (DejaVu Sans Monois 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.Iosevkais horizontally compressed, meaning you can fit more characters into a given window width, andFira Codeis 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 yourlineHeightandletterSpacing.

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!

I see Input Mono is mentioned, but I actually really like using Input Sans, also from Font Bureau. It’s aproportionalcoding 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)

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)

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 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.

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.

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.

Holy smokes!

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

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.

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.

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.

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.

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.

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.

My current favorite is the 8×16 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.

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.


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

The link you postedhttps://developer.apple.com/fontsoffers 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).

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…

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″ 1280×800 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 181×39 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.

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 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.

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.

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

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 🙂

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.

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.

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

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-liningfigures, 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 isverydifferent 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.

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

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.

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

Here’s a 3200×1800 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 3200×1800 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.

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!)

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

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.

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.

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

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

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.

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

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

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”)

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?

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.

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.

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.

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 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.

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.

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 s

Read More