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.
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.
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.
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 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.
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 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.
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 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.
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!
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.
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.
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 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.
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 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).
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.
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.
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...
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 ===.
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.
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.
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:
162 comments
[ 0.25 ms ] story [ 267 ms ] threadLigature 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...)
> 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
If you scroll further down the page, you'll see there are actually 4 zeroes you can choose from and 2 sevens.
https://fsd.it/shop/fonts/pragmatapro/
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.
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 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.
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.
Though admittedly I haven't tried any of the expensive paid fonts.
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've been loving Noto Sans Mono Condensed these days as well.
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!
https://fontlibrary.org/en/font/fantasque-sans-mono
Georgia looks ugly in the editor.
[0] https://indestructibletype.com/Besley.html
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!
Thanks to Andrew Kensler, the author.
https://www.programmingfonts.org/#luculent
* 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)
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’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?
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.
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
I find color themes with more than one or two front face hues to be tiring to look at.
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.
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.
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).
* 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.
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.
My personal favorite fonts at the moment are Jetbrains Mono & MonoLisa (both with ligatures disabled of course)
[1] https://fsd.it/shop/fonts/pragmatapro/
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).
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.
It's possible in Emacs: to enable relevant ligatures for an active mode.
For context, I'm 40, and spent decades programming without them.
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...
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...
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)
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'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.
They write stuff like:
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.)
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.
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.