162 comments

[ 0.25 ms ] story [ 267 ms ] thread
Cool. But when I first load the page, what font am I looking at? Also, no Menlo?
Menlo and Consolas (my go-to font) are both missing. I imagine they can only use publicly-licensed fonts on the website.
nice! would be perfect to have ability to compare two types side by side and this way, with repeating steps of comparison choose the perfect one for yourself.
It could be done by opening two browser windows side by side
I use SF Mono
That's my choice too. It is clean and easy to read. Additionally, I found that when I share my screen on Zoom, students can easily read my code when I am using SF Mono.
I've been using Berkeley Mono [0] since it got released, it's a paid font which would normally be a no go for me, however the author is super responsive, and the font looks wonderful on my devices, so happy to support it.

Ligature support is coming soon also))

[0] https://berkeleygraphics.com/typefaces/berkeley-mono

(in hindsight it may look weird that I'm endorsing this from a throwaway - old habits die hard I guess...)

Thanks. We'll do ligatures, but it won't be like anything else out there.

> There is an unspoken expectation that 1 key press = 1 symbol printed on the screen. That shouldn't be violated in our view. A lot of our customers have requested ligatures, so we're working on them. But it will be anything but typical in Berkeley Mono.

https://twitter.com/berkeleygfx/status/1515047847506325508

Why does this font have at least 3 different zeroes? It doesn't seem consistent and creates additional confusion between alpha O and number 0.
You can choose which zero you want when you download the font package. What's inconsistent about this?
I didn’t realize you could choose a particular consistent zero. I just kept seeing arbitrary zeroes on subsequent lines of one single example text block without that context.
Ah I see.

If you scroll further down the page, you'll see there are actually 4 zeroes you can choose from and 2 sevens.

These types of sites seems to always be missing my favorite programming font. Pragmata Pro.

https://fsd.it/shop/fonts/pragmatapro/

Pragmata Pro is not a publicly-licensed font and can't be embbeded in such a site. Are you aware of Iosevka however?

It is a similarily ambitious project. The glyphs have several variants and you can get some variant sharing many features with Pragmata Pro.

I asked once for a very specific Unicode character, which was added in the following weeks.

The downside of Isaevka is that next time you know it, it's already version 553.12.3 or something.
how is that a downside?
And your computer suddently burst into flame if you aren't using the latest version?
If you use a package manager to install them it's inconvenient with upgrades all the time.
I bought the full set of Pragmata Pro on sale, but I also really like Iosevka. If you like the style (slender/condensed), both are very appealing.

Pragmata Pro is several notches above in overall quality IMHO. Hand-hinting at smaller sizes makes a world of difference if this is important to you. This means you can use the same font from low-res console to a 4k monitor and will consistently look wonderful.

At higher DPI settings, Pragmata has a more cohesive sense of style. This is hard to quantify as it's quite subjective, but as pixel-perfect issues go away, the overall artistic direction start to become very important IMHO. The fact that this is done by a single individual shows in both little details and overall direction.

I'm not trying to push Pragmata, I just want to say that I think the price is fully justified and absolutely worth it. The work that went into the fontset is absolutely huge.

And as I said before, I also like Iosevka. Wonderful effort as well. It's slightly less packed, which I'm not super-fond of, and I find it only really shines if you have a high-DPI monitor. I use the different stylistic sets in my editor to subtly highlight different keywords.

I love this because my favorite font is there. And it’s very liberally licensed.
It's been in my wishlist for years. I still find it hard to pull the plug (and then get bored of it), but PragmataPro is truly a work of art.
I bought this on sale years ago, and I really do adore it. The narrow-but-tall design means it optimizes for number of characters per line at the expense of fewer lines displayed at once, which IMO is a fine tradeoff since our tools tend to handle vertical overflow (via scrolling) better than horizontal overflow (via wrapping). That said, I'm sure you can find a free font with similar metrics.

I will also say that I've had a great experience with the developer of the font. I once noticed a bug in one of the glyphs, and within a week of reporting it he had acknowledged it, fixed it, and pushed a new release.

I just use whatever is the default in the terminal or IDE. I used to care (it was either Consolas or Source Code Pro for me) but now I find it easier to just not care about it.
I'm kind of torn about this, personally.

For the most part, the defaults are fine, however in an enterprise setting I also find myself benefitting from fonts that are readable at smaller sizes.

Some fonts out there are just more compact vertically and more readable at smaller sizes, like Cousine/Liberation Mono.

I do the same. Reasonable deattachment from a form brings freedom to focus on a meaning.
O0 and 1Il clarity is a big issue for me. Apart from that, yes.
I find jetbrains mono the most pleasant to use of the ones I've tried: https://www.jetbrains.com/lp/mono/

Though admittedly I haven't tried any of the expensive paid fonts.

That along with Hack and Fantasque Sans have been very nice to use for me.
I really like their font on my MacBook.

The other one I use on my desktop is the Dejavu sans mono nerdfont or whatever it is called, it's the nicest looking "normal" font I've found that I like on 1440p on Linux.

I find Jetbrains Mono to be a pleasant font, but I like Iosevka more. Just an opinion.
Condensed fonts masterrace. Most programming fonts are just too wide, but Iosevka is just perfect.

I've been loving Noto Sans Mono Condensed these days as well.

(comment deleted)
I recently switched to Iosevka's serif variant ("Slab") in the terminal and it looks interesting, maybe I'll keep it that way. The linked site only has the standard version.
Iosevka Slab has been my go to for a while now. The only thing that’s still missing to make it near perfect is a proper variable font variant.
Iosevka is awesome for terminals, especially the terminal specific variant. It's made to be dense yet readable so you can fit lots of characters across the screen. Looks fantastic with TUI apps like htop, etc.
My eyes have been enjoying these for the past couple months: comic sans but for code! https://tosche.net/fonts/comic-code I don't know if it's sunk cost fallacy cause I paid $30 or it's actually really damn good !
I don't understand why, but it looks really cool! I might want to try it for a few days.
This is my go to font - its so easy to look at, and enjoyable to work with!
I have been using it for a bit more than a year, very much worth its price. I like it, it’s very readable for me, and I don’t spend time looking at other fonts anymore because I paid for one so I must use it.
I love this one! It freaks out my coworkers when they see it, but it's very readable and aesthetically pleasing.
I bought it a couple years ago too and use it in most of my editors and consoles. It's very comforting!
I also bought Comic Code just ~2 months ago.

Used Fantasque Mono before it. I was quite happy with that, but compared to Comic Code, it just feels soul-less... If you don't have the money though, it's a great alternative.

Otherwise I would highly recommend the Ubuntu fonts, because they are very well hinted at smaller sizes and look great without antialiasing too, just like Envy Code R!

I do not need a programming font, I need a nice serif font for when I take notes in `.md` files.

Georgia looks ugly in the editor.

Serif for .md is great until the markdown rendering engine requires spaces indenting for nested lists.
A slab serif monospaced font or a typewriter one might be good alternatives.
Great site!

The zero glyph needs the dot/slash inside imo. I'm surprised there are fonts without it

Edit: Oh, I just discovered the filter buttons on top. Wonderful!

After trying quite a few, I settled on IBM Plex Mono quite a while back, and haven't seen any reason to switch, since. It's clear, the symbols are distinct (no confusion of zero and letter-o, no confusion of 1 and letter-l, etc), and it's easy on my eyes.
There are a couple of things missing from this tool to be useful to me.

* Filter only fonts that have bold/italic styles. Faux bold/italic looks awful.

* Filter by language support. If fonts don't support the Latin Extended range, then words in other languages switch to the fallback font in the middle of the word.

* Show fonts side by side

For filtering, Font Squirrel [1] can be used. This example filters fonts with bold/italic, open source license and latin extended language support.

For comparing side by side, Coding Font [2] can be used.

Cousine is my font of choice - it has very extensive language support (~2400 glyphs including Hebrew, Greek, Cyrillic [3]), it supports bold/italic styles and it looks great.

1. https://www.fontsquirrel.com/fonts/list/find_fonts?filter%5B...

2. https://www.codingfont.com/

3. https://www.fontsquirrel.com/fonts/cousine?q%5Bterm%5D=Cousi... (Glyphs tab)

I’d also like to be able to mark some as favorites and the filter by that. As I scroll through trying different options I want to remember the ones I liked best as I narrow it down from 111 candidates to something more manageable.
Why do you want italics in a monospace font? I can't imagine ever wanting that.
Not OP but I don't use syntax highlighting, so italics makes the comments stand out a little for when I'm quickly scanning code.
Why do you not use syntax highlighting?
I find it too busy, truth be told. Colours pull my eyes in too many directions when I'm trying to read code.

It started because I'm picky when it comes to colour schemes. I'd find one or two things that annoy me and I don't personally have the imagination to fix it, so I'll try to find something else. Or I would get bored of a particular colour scheme and go hunting for something new and fresh.

Removing it took a bit to get used to but now I can't stand going back.

I don't personally subscribe to the Rob Pike idea that syntax highlighting is for babies or whatever, to each their own.

I’ve always thought of any automatic stylistic change as “stylistic highlighting”, so now I’m curious if that’s a rare opinion.

I’m with you that colors can easily start to impede readability. I’m a fan of subtle, judicious color use, so I’ll often start with a palette but knock back the colors from there.

What typeface(s) do you like for its italics?

Right now I'm trying out JetBrains mono. I don't really require much from italics but at least some visual distinction. So far I'm enjoying it.

I used Victor Mono for a bit there and I'm still unsure if I like cursive italics or not. They're interesting and fun, but sometimes I think they're a bit too out there, if that makes sense?

My go-to is usually Ubuntu Mono. That might be my favourite font.

Depending upon your motivation for monospace, the iA Writer site offers my current favourite: IA Writer Duospace.

If you want monospace for the crisp, clear, draft-style, clutter-free look when writing code (or similar) then it's excellent. If you absolutely must have every character being exactly the same width then less so as the main difference is that it is monospace for everything except 'm', 'M', 'w', and 'W' which are each 1.5 wide (so it takes two to bring things back in alignment). In practice that is often less of an issue than it seems, and the benefit in readability/clarity/looks (literal mono for those characters makes them compressed) makes it worth giving it a try, even if you only end up using it for Markdown files etc.

They have a web page explaining it (alongside a download): https://ia.net/topics/in-search-of-the-perfect-writing-font

Thanks for the recommendation, I'll check it out!
Hey, just wanted to come back and say thank you! Really loving this font!
i would also consider the use of font styles syntax highlighting... I saw such a thing in Turbo Pascal 5.5 for the first time and the only thing they did was the use of bolding for language keywords, like in this book: http://bitsavers.informatik.uni-stuttgart.de/pdf/borland/tur... then in Delphi 1.0: https://winworldpc.com/screenshot/c38bc3b1-c3a1-2a2d-6211-c3... and in upcoming versions, it started to use italic for comments, but still no colors, yet we called it syntax highlighting. but my memories might be inaccurate :)
No, I think that's definitely fair and I absolutely agree. I just used syntax highlighting in place of colour schemes as I feel that's how most people would interpret it these days.
I use a near-monotone, dark and monospaced font and coloring; italics and bold replace color differentiation.

I find color themes with more than one or two front face hues to be tiring to look at.

> Why do you want italics in a monospace font? I can't imagine ever wanting that.

For the same reasons you'd want to use italics in a proportional font - for emphasis or contrast.

1. Syntax highlighting which uses both color and font style, e.g. class name are italicised by default in my editor (Sublime Text).

2. Editing markdown/HTML files with italics tags/markup.

3. Also, italics also work on the console, and some console/TUI apps may use it.

Use italics to make comments obvious instead of making them some colour that doesn’t contrast with the background much. Comments are pretty important so I don’t know why typical syntax highlighting obscures them. I think italics make them conspicuous and conspicuously not code.
I also don't understand the default muted grey comments. I usually configure comments to be a bright red color.
I can just highlight the region if I really want to read it, but mostly, I don't want comments competing for attention in my code and I write a _lot_ of comments in there. It's generally a 1:1 ratio in what I write, so if my comments were bright red my eyes would be burning at the end of the day.
Great site! I love that you can choose languages and different IDE styles. Font comparisons would push the site to the next level though.
I really like Microsofts new standard font Cascadia Code. It comes with PowerLines, bold/cursive and ligatures.
I also use this one. Very pleasing.
I was thinking about when I ever use a non standard programming font, which is almost never. Just in iTerm i use a powerline-enabled font.

But then I remembered that in most Mac applications that have code somewhere, I have to switch from Monaco to Menlo as a first configuration step. I wish the Mac had a system wide font preference setting for monospaced (and serif/sans) fonts.

This is nice. With variable fonts, some of these fonts now are slightly under-represented - for example "Recursive" is really a large family, the website shows just one extreme point of a large multi-dimensional space.

I'm currently enjoying using the "Recursive Mono Semicasual" variant of Recursive - https://www.recursive.design/ . It adds just a little bit more fun that a typical mono font, especially at higher font sizes (e.g. for headings in Markdown in an editor).

For me, this is the only new piece of information in this thread! Thanks!
I always ask when one of these discussions comes up. Can anyone recommend a for that does all of these:

* proportional (yes) * sans serif * has the common programming ligatures

The proportional with programming ligatures bit tends to reduce the search space to zero.

Oh and since we are volunteering, I like dank mono which I paid like $30 for.

Iosevka Aile (the proportional variant of Iosevka) meets all of these criteria. I’ve been using a customised version of the serif variant, Iosevka Etoile, for a while, and it’s been fantastic for both code and prose in my experience.
About once a year I see a cool new programming font and decide to try it out. Then, shortly after, I invariably switch back to DejaVu Sans Mono.

I suspect that if I gave myself more time to acclimatize to the new font, I might even grow to prefer it. That, or perhaps DVSM is simply the perfect font for me.

I strongly dislike the trend towards ligatures by default in newer fonts. Maybe it’s because I learned without them, but I find that the readability of code is far worse with ligatures.

My personal favorite fonts at the moment are Jetbrains Mono & MonoLisa (both with ligatures disabled of course)

IMO ligatures makes it easier to recognize common symbols used in programming languages and also doesn't affect readability much. Maybe I am younger, but I don't see the problem here.
I don't like it because it tends to combine two distinct characters into one (visually). A great example is '<=' being transformed into '≤' (Pragmata Pro[1] does this) I expect to see two characters, but instead I see one and expect to see a syntax error.

[1] https://fsd.it/shop/fonts/pragmatapro/

You expect that exactly because (like me) you've been seeing it for a long time. I suspect the age correlation parent suggested is a big factor
I don't know about this claimed correlation- I'm 50 and love ligatures
It's almost like there are different people who like different things and it's impossible to turn a subjective thing into an objective thing.
Nah, I heard someone on the internet saying it was an age thing.
Also it's incredibly annoying when a language uses `<=` for something that's not a comparison.

Julia was right in allowing developers use unicode for variables and operators, so if you want ≤ you simply use that directly (or type \leq in your editor).

Note that PragmataPro offers both ligature and non-ligature styles.
It's not about age. I'm rather oldschool, and I like programming ligatures very much. When => intended to imitate thick arrow, seeing thick arrow instead is reasonable, I think
True, but <> in Perl is called the diamond while, in other languages it means “not equal”. If we take ligatures seriously, we’d need them to be language-aware to select the appropriate concept. And for a font to have to be aware of all languages that can express ideas with it is a violent violation of the separation of concerns principle.

If languages opt to make “≠” equivalent to “!=“, match all styles of open/close quotes, and enable me to attribute a value to a variable using an arrow, that’s great.

In the meantime, I’m not sure they are a net positive in all cases and fear they may drive unfortunate syntax choices for people who design languages.

PureScript and Haskell <> is concat in most Preludes. However, both languages allow you create your own infix operators and you can use Unicode.
>If we take ligatures seriously, we’d need them to be language-aware to select the appropriate concept.

It's possible in Emacs: to enable relevant ligatures for an active mode.

I'm the opposite - I love the ligatures precisely because of their readability.

For context, I'm 40, and spent decades programming without them.

Same. 47, only started using ligatures this year (in MonoLisa) and love em.
I'm 45 and I was excited to use them at first, but then as I was changing editors/terminal emulators, coding fonts, I couldn't always had them anyway, so I'm not attached to the idea.

I also prefer the lack of them, exactly because they apply to strings and comments too, where they are often undesired.

I write Clojure code most of the time, so maybe that's a deciding factor too...

Approaching mid 30s here, been writing code in some form or another for a couple decades and I enjoy ligatures too.
You're not alone. Some typographers agree: https://practicaltypography.com/ligatures-in-programming-fon...

With a userstyle you can turn off ligatures in your browser for code blocks. The trend isn't just editors, but some developers want to push it on their audience in their blog too. https://developer.mozilla.org/en-US/docs/Web/CSS/font-varian...

The first link doesn't work, looks like you need to replace '.HTML' with '.html' to get the right thing.
I don't use ligatures only because the font is the wrong level of the stack for doing cute things like this. I could totally get behind e.g. combining `->` into a Unicode arrow, but if I'm writing the string `"->"` then I want that to be displayed verbatim. That requires parsing (or at least lexing) the code, which fonts can't do (and if they could, I'd be horrified). IMO, it should be the responsibility of editors and IDEs to do this sort of visual substitution.
Totally agree. The worse is those long equal signs, with my eyesight going as I age I have to take close to a second to decipher if it's =, ==, or ===.
Unicode operators can make it difficult if you can't (or don't know how) to type certain characters.

https://docs.raku.org/language/unicode_ascii just kind of rubs me as the wrong way to go.

While I realize '…' and '...' are syntactically equivalent, it means that if someone is writing $foo³ and I need to change that to $foo² - I can't do that without changing it to $foo**2 ... and that results in two different styles of code (unicode and ascii) in the same file which means that future maintainer me has more difficulty.

(note: I still don't know how to type ³ - that's me copying out of another file)

I like using more than ASCII. But those superscript numerals are just legacy junk. Superscripts are only in Unicode for the sake of compatibility.
How would you express superscripts in text, then?
You don’t express it in plain text. They claim that it’s the domain of markup.
That feels to me that you're blaming a poorly implemented editor / IDE for a language feature.

If you use ² and ³ a lot in your work, I'm sure you can install a macro / keybinding / whatever to access them quickly.

And in any other case, https://docs.raku.org/language/unicode_ascii is a bit of a Rosetta stone in the cases you don't know how to type them, because you can copy / paste them from there.

Finally, the Raku documentation also contains information on how to type these unicode characters on your OS: https://docs.raku.org/language/unicode_entry .

I believe that the language feature is cute.

I'm ok with APL doing all its special characters, but if you can write the same syntax in two ways, one of which is much more accessible than the other, then the less accessible way was a poor design choice.

Allowing for two styles for the same syntax can (and will) lead to multiple styles depending on who wrote that line. Conflicting styles (mixing tabs and spaces anyone?) in turn makes the maintenance of the code more difficult and time consuming which is something that is often forgotten in the rush to write code.

Agda users rely heavily on unicode. It looks like they have editor support for it in the form of backslash sequences that turn into unicode.

They write stuff like:

    Tyᴹ : (A : Ty) → {X₀ X₁ : Set} → (X₀ → X₁) → Tyᴬ A X₀ → Tyᴬ A X₁ → Set
    Tyᴹ ι      Xᴹ α₀ α₁ = Xᴹ α₀ ≡ α₁
    Tyᴹ (ι⇒ A) Xᴹ α₀ α₁ = ∀ x → Tyᴹ A Xᴹ (α₀ x ) (α₁ (Xᴹ x))
I kind of get the "looks like math" thing, but I find the poor typography distracting.

(Sample taken from https://github.com/AndrasKovacs/thesis/blob/main/agda/Simple... - learning the language is still on my todo list.)

Combining `->` into unicode arrow still would require parsing the code to do properly. For example, in firacode this C code:

      int x = 3;
      if (x<-5) {
        return 1;
      }
Renders as:

      int x = 3;
      if (x⬅5) {
        return 1;
      }
which makes no sense.
Same here. I was raised on Apple screens, 80x25 EGA and VT100 terminals in the 70's & 80's, so I find ligatures to be wildly annoying and error prone, as well as nonportable: having to mentally switch back and forth on different terminals or code UIs is jarring.
Especially egregious in technical blog posts when the author uses them because they think it looks nice but then forgets that not everyone knows what those symbols mean. Leave ligatures out of code blocks.
My terminal emulator of choice (kitty) lets you configure it to render ligatures only when the text is not under the cursor.

I’ve found this to be the best of both worlds. I like reading code with ligatures but would always get tripped up when editing.

Here's a side-by-side, mono and a proportional typeface I edited for camelCase readability. It has a 1/3 space to the left of the caps. I call it VerdanaCamel:

https://twitter.com/efortis/status/1501988964198191113?s=20&...

The only cons I see is that it doesn't align to columns, but that should be a rendering feature on modern IDEs.

What an unusual font. I love the idea and originality but I can't say that I would use it. My fonts must be monospaced
I love funky italic like cartograph or victor mono!!!
In the end you need to choose if you are going to spend all your time tweaking fonts, color schemes, and other settings or actually write software
Selecting a font is quite far from ricing, and a good font will increase velocity, after all you read more code than you write.
You spend like 10 minutes once setting a font and then it stays for ~years. I doubt this is negatively affecting anyone's velocity.