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.
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.
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 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.
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 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.
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.
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)
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.
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)
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.
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.
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 ===.
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...
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.
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).
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.
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.
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.
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 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'm coding on a 1080p screen and I still very much prefer pixel-perfect fonts - Terminus (https://files.ax86.net/terminus-ttf/) has been my font of choice, with proggy clean being a close second (use it for terminal panels and such). I see the site has a filter toggle to show those but with modern browser forcing anti-aliasing on all text, that's pretty uselesas.
On a related note, I noticed that there are a few fonts which seems to ignore system-wide or browser-wide antialiasing settings - one example would be the "MS Gothic" font, visible on this site: https://fountainofdreams.net/ where all text is crisp as hell. Why is this?
Envy Code R is pretty will hinted between the 10-16px range.
i used it without antialiasing any it's great on lower resolutions. u can still pack a lot of code onto a (sub)FullHD screen readably.
Thanks, I’ll have to give it a try, although one thing I don’t like is the concave-towards-the-tip style of curly braces that it uses. By that, I mean that I prefer each half (upper and lower) of the brace to only go in one direction horizontally, and not go back in the other horizontal direction before it reaches the tip where both halves meet. Are there good names for these two different styles?
That website appears to specifically try to disable antialiasing with CSS properties (though for some reason both Chrome and Firefox still antialias the font text anyways).
Also, bitmap fonts won't be antialiased anyways, and it's possible to make vector fonts that define their shapes in 'pixelated' shapes as well, though that's not something you commonly see.
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.
Unaffiliated with the project, but it’s completely changed the font game for me on Unix. Haven’t seen a missing Unicode character since switching. I’m also using the glyphs with i3bar to show battery and Wi-Fi status.
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.
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.
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.
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 !
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 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 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.
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.
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).
I recently updated my 3270 font to the newest version, with much better hinting than the previous ones. It’s a font based on the 3278-2 IBM terminal from the 1970’s. I like the straight lines and slightly taller numbers, as well as the characteristic S, 6, 9, and the dotted 0.
Is the example on the programming fonts site correct? It looks like there are spacing issues to me. Look at "removeChildren". The "remove" part the letters are pretty much evenly spaced. The "Children" part looks like there is more of a gap between letters.
The last time I spent time looking into a font I ended up going with MesloLGS + NerdFont. I never see people recommend it or talk about it but its been perfect for me. I wonder if theres been new developments that make other fonts better, or if its just a little old and not promoted anymore. I use it for programming and all my terminals and haven't found a reason to bother with anything else
Meslo LGS was my go-to for years! At some point I've lost my heart to Iosevka Mono for terminal work and both Ligalex Mono (ligatures-enabled IBM Plex Mono fork) and JetBrains Mono, though.
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:
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.
Have been following this site for years. I also like checking the repo's commit history page [0] which is essentially a "what's new" for programming fonts.
I also find monospaced fonts ideal for immersive reading due to their crude, un-decorated vibe which is good for keeping attention. So whenever I want to read a long article but don't bother saving it to Instapaper, I turn on the Dark Reader add-on, which changes all web fonts to a monospaced font I specified and cover the page with a sepia tone.
The only monospaced vector fonts I've really liked are Iosevka and Envy Code R.
Otherwise, give me raster, baby. Terminus, ttyp0, the Oldskool PC Font Pack fonts, Topaz (Amiga font), Atari ST font, even something like Proggy Clean. Back in the 96dpi days, 7x13 was my jam. Those ancient, ugly glyphs are distinguishable across the room in less than ideal display conditions which is why I love them when staring at code for hours at a go. I may be a nostalgic grognard, and today's programmers may well be justified in preferring their IDEs in eggshell with Romalian type, but there you have it.
I've taken to using Courier Code [0] (which is like the Courier Prime font but with dotted zeros and improved lower case L).
Without the super spindly letters, Courier is just such a timeless monospaced font. It's boring enough to not distract but it also has so much character. The Prime versions really bring to mind typewritten documents and that makes me quite happy.
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 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.
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.
It's not for everyone, but the (paid) programming font that I fell I love with is Codelia. It's got a dose of whimsy to it, but not too much, and is an all-around extremely readable and usable coding font.
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.
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.
whats going on with the words null/true/false? in the editor with the default font (cartograph?) it uses "curly" fonts just for these. is this some standard feature of certain editors?
I find Hermit very pleasant to read - it's definitely got some uniqueness and "decisions" about the style that I can see would bother many people. I find it cute.
Are there monospace typefaces that support abugidas well as everything supported is usually Latin and Cyrillic scripts–or is this a just limitation of how monospace works?
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.
You can change the default Monokai theme using the button at the bottom of the font list. It doesn’t affect the list itself, but at least it updates the preview, which may be helpful to you.
Oh, that's how you do that! Thanks. I could have spent more time looking for it but the dark theme really stings my eyes so I noped out of it too soon.
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.
My guess is locked behind Apple's restrictive license. Programming Fonts only features fonts with unburdened licenses. You don't see Menlo there either.
* 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)