Oh, look at that, the Victor Mono homepage has a font comparison slider that allows you to compare it to MonoLisa! MonoLisa advertises that it's wider than other monospace fonts, and you can really see that in the comparison. One of the things I appreciate about Victor Mono is that it is narrower than many other monospace fonts (while still being very readable), allowing you to fit more code side-by-side.
I don't know why anyone would even bother to even go beyond the first item on the list. Such beauty, such elegant geometry, such timeless classic lines. Truly an elegant font for a more civilized time.
BTW, I'm also a huge fan of Luxi Mono, but I edit it and add a dot in the middle of the zero to make it different from the O. I like it because it reminds me a bit of the Sun console font (which I always forget the name). I could also go with Go Mono, which is mostly the same, but has a slashed zero.
edit: if you hate my font, just don't use it. You don't have to downvote this. ;-)
I don't think it necessarily peaked, but the IBM PC represents an inflection point - it was built on top of the office equipment more cozy aesthetics rather than the computer division's cleaner and minimalistic visual identity. The PC has a George Gershwin vibe while the terminals such as the 3278 have a definite Emerson, Lake and Palmer techo-utopia thing to it.
Same about Luxi Mono. I have also added a dot. I used to program in old redhat linux with crt monitor. And at that time, it used to be the default font for terminals.
Thanks for the victor mono recommendation. It looks really good! I was blown away by how narrow it was compared to other forms in the comparison tool.
Side note: it's a bummer that you never see Monaco on these comparison tools. Monaco has been my monospace font of choice for many years now despite never owning a Macbook: https://github.com/cseelus/monego
I, too, have a very strong preference for Monaco. I always wondered whether the font is indeed as great as I think it is, or whether I just like it so much, because I had already used it for 5-10 years before I ever consciously looked at other monospaced fonts. It's great to hear that you intentionally chose it without having already been adapted to it.
In case you like narrow but Victor’s not your thing, I can enthusiastically point you towards Iosevka. (That’s also available in Victor’s comparison picker. Nice!)
Serifs are known to be less readable on screens. Each to their own but to me that MonoLisa thing is sort of half-serif... it's ... inconsistent and terrible. Possibly a joke.
On low resolution screens, yes. If you have a 2k or better monitor I would encourage you to test this out again. I have found that serifs are now actually easier to read than non, for the same reasons they are easier to read on paper.
An interesting perspective with which I respectfully disagree. I have high dpi displays (who doesn't?) but prefer sans. I think it's near-universal these days. Everyone is using them for logos too. There's a reason: legibility, everywhere, including for non-native readers. In a global world, one must prioritize clarity. See https://design.tutsplus.com/articles/the-rise-of-the-sans-se... and https://developer.apple.com/fonts/
I read the links. I don't believe that brand designers are optimizing for legibility, unless there's some real study showing sans is easier to read body text with. Designers just follow trends that have nothing to do with user experiences. People switching logos to sans are the same types of people coming up with "Metamates"; just people chasing corporate dogmas.
That gwern page is mostly rambling IMHO. Yes, there is a documented association between serifs and trust, but it is weak and mostly tested in print IIRC. I think you may be throwing the baby (real and objective improvement) out with the bathwater (fads) in the design world. There is substance there. I suggest https://watchdocumentaries.com/helvetica/
Victor mono is definitely not my thing, but thanks for pointing it out. I am quite fickle with typefaces so maybe one day this one will be the one I use for a few months.
They're delightfully boring, are readable at smaller sizes, have a good Unicode support, don't seem to have ligatures so i don't have to bother disabling them (personal preference) and are completely free. Plus they can be used to work with code that has large information density (think legacy Java apps) without causing strain on my eyes due to their simple look.
Have been using Victor Mono for a year now, that Victor Mono demo on programmingfonts.org definitely does not look like what I'm used to. Looks like the medium weighted Victor Mono.
ooooo thanks for the recommendation. MonoLisa is pretty, but not $70 pretty. Especially when this is just as good (maybe better?) and I can just toss the author whatever I want.
Please stop it with the "coding ligatures" already. They are not helpful and only serve to obscure the code being written.
This has got to be one of my least favourite trends in programming aesthetics these days. For a font claiming to "follow function" to devote so much effort to sacrificing function for the _vogue du jour_ is especially rich.
Serious (if goofy:) ) question: How do I not use them?
My understanding is that if the font has ligatures then the way to not use them is to use a different font (which is fine - there's a lot of fonts out there :) ).
Is that the only way, or is there a way to disable ligatures but keep the rest of the font? Can you disable only some of the ligatures?
Ligature is a optional feature, first the editor need to support them, but I guess most editors nowadays already support that. JetBrains IDEs come with JetBrains mono and with ligatures enabled, last time I used VScode I had to enable manually for my new font.
Ooh the selectively disabled extension is really cool! Thanks!
I sometimes—rarely happens thought—dislike how the cursor renders on top of ligatures in vscode. Always wished it would allow me to "inject" the cursor into the ligature, but since it didn't happen often or bother me as much, I never tried looking for a solution. This will be a small, but much appreciated quality of life improvement! Thanks again!
regular fonts are basically "use this image for 'a', this image for 'e'" etc. ligatures are extra data that says "if you find an 'a' next to an 'e', use this other image in place of the 'a' and 'e' images". but the non-ligature versions of characters are still in the font for use when there is no ligature sequence (just put a space in the middle of any ligature in your editor and you'll still see the independent characters rendered in the font).
I mean... The existence of ligatures is almost by definition strictly aesthetic. And on that measure, it either brings you a smile to notice that f and i, for example, are joined; or you didn't even notice it.
That is, I won't claim they help readability. But they do make me smile, and don't seem to hurt. (I'm assuming they disappear on copy operations. Mac OS' habit of replacing -- with a longer dash is painful when sending cli arguments.)
When I'm reading fiction, I generally don't mind ligatures. I find them oppressively obscurantist in any situation where I want to know clearly and distinctly what each character is -- i.e. code and science/math/engineering.
Not sure why you are taking offense in that. I wrote that they make me smile. Despite that, I'd also wager that the vast majority of the time, I don't notice them.
- there are more fonts without ligatures than there are fonts with ligatures.
- every single OS I can think of include by default a monospace font that do not support ligatures.
- there are still a huge amount of terminals which do not support them.
- for almost any font that has ligature there is a variant without ligature
- there is virtually no way to end up with ligatures without actively looking to get ligatures.
- any terminal/editor that supports ligature has a setting for that.
- most people do actually like ligatures which is the reason they use those editors/terminal/fonts and want those activated by default.
Presence of ligatures in a "font designed for developers" is neither a plus nor a selling point. It is a pointless embellishment that shows that fonts' authors don't grok the character-oriented nature of computer languages. So them parading ligatures as something desirable only serves to detract from the rest of the font design and to nick their credibility as coding font designers.
> fonts' authors don't grok the character-oriented nature of computer languages.
Hogwash. They provided all the characters (which ligatures are also, but you seem bizarrely "against" but "for" the ASCII ones), and ligature-less versions as well. So they grok it at least that far.
For what it's worth I also have ligatures disabled but I do think it's fair for fonts to include them, particularly because it makes the fonts more versatile in settings where you want them.
In particular when doing presentations having fonts that are capable of producing ligatures in monospace contexts is quite useful.
I would concede your point if these folks were trying to sell you a used car.
You don't need to take their word or rely on their credibility for anything. There's a demo right there of the font for you to decide if it's for you or not.
I wonder if there’s a correlation between enthusiasm for ligatures and programming styles or languages.
I want to learn Julia in part because it makes use of “fancy” chatacters (so your math looks like math). I like the more functional JS style, and I’m interested in haskell. And I love ligatures. Anedata of one.
Are you more a C-family person, or an ML-family person?
I kind of agree with you, but I see them authors as avant-garde. Let them be and perhaps something new or an improvement will come out of it for the rest of us.
A ligature is more functional than not using one. They obscure the code for about 5 seconds the first time you see them, and then never again. After those 5 seconds, you register a new semantic symbol in the brain. It is objectively easier for your brain to parse a single arrow symbol than it is to parse => in a monospace font. For the latter, you are scanning two symbols and only after seeing them both can your brain put them together into a semantic meaning. This is strictly worse than just seeing an arrow symbol and understanding it is an arrow.
> It is objectively easier for your brain to parse a single arrow symbol than it is to parse => in a monospace font. For the latter, you are scanning two symbols and only after seeing them both can your brain put them together into a semantic meaning.
For me the problem with ligatures is not so much of recognizing them but reproducing. I know that for arrow ligature I have to have = and >, but there may be ligatures that I might not be sure of how they're formed. Also, when reading the same code in different environment where the same font is not available I get different visual output where not only is the base shape of the letters different but code units as well. For example three lined equals ligature that some fonts produce. I really hate it.
If your programming language wants to use an ⇒ symbol there's a perfectly good codepoint for that already. I don't want complexity to be hiding in my font where I would never even think to look for it. (For example imagine searching the documentation to understand a use of ⇒ and finding it doesn't exist in your programming language)
My programming language doesn't want to use it; I do. If you would "never even think" to realize that ⇒ in your editor is actually =>, after having installed a programming ligature font where that is always advertised, that's on you. And any developer should already be well aware that no common language uses symbols beyond ASCII, so seeing ⇒ should be clear enough already that it's a ligature. I really think this 'confusion' argument is made up and has never actually occurred for more than 5 seconds.
Semantically, the language would like to use a ⇒, because it's representing the idea of an arrow. It's only due to keyboard constraints that it has use use =>. Parsers (and our brain is also a parser) would be much easier to implement if meaning didn't have to derive from symbol combinations like =>, !==, <!--. The input interface is limited to ascii to represent meaning, but our eyes don't need to be.
> If you would "never even think" to realize that ⇒ in your editor is actually =>, after having installed a programming ligature font where that is always advertised, that's on you.
Sounds like we agree that a font that does this should never be a default. I don't think customized environments to the extent that one developer sees a different view of the code from another are a good idea (partly because I think reviewing and pair-programming are very valuable), but I guess if you want to set up something like that it's fine as long as you're not pushing it on anyone else.
> And any developer should already be well aware that no common language uses symbols beyond ASCII, so seeing ⇒ should be clear enough already that it's a ligature.
I've been using ⇒ in Scala for over a decade, shrug.
I agree it should not be a default. I think much like using the keyboard to navigate the IDE, it's something you can do that brings a benefit once you're familiar with the basics. I don't think vim should be the default terminal editor for the same reason, but I still think vim is worthwhile to use.
Ruby and scala allow using such characters, and there are libraries that use it. Julia actually has special characters in the standard library, although afaik they all have ascii aliases. The repl and many editor plugins support expanding tex style escapes to those special characters.
I use Fira code, and the ligatures for >=, <=, !=, ==, and -> make it so much faster and easier to identify the symbols.
I wouldn’t know where to get the “⇒” codepoint, and getting is probably more effort than just writing “==>” with the added benefit of my teammates not having to use the ligature (or figure out the symbol) if they don’t want to either.
If this wasn't a discussion about monospace fonts, I might be inclined to agree with you. However, I kinda agree with the detractors here; ligatures objectively defeat the purpose of equally-spaced characters. The purpose of monospace fonts is to provide definitive clarity where sans and serif fonts fail to do so. In the world of programming, maintaining that consistency is essential. Having one symbol span several spaces undermines that clarity, you may as well be reading your code with Helvetica at that point. I understand that programming is a career path filled with creature comforts and obscure little things that make you happy; I even enjoy the warp cursor (gasp!) in VS Code, which definitely doesn't contribute to clarity. Let's stop treating ligatures like a direct upgrade over normally printed monospace, though. It's an option, one that shouldn't come enabled by default but one that should be available for people who want them for whatever reason.
Monospace fonts are used mainly because vertical alignment is desirable, and because characters such as ! and . are too narrow to easily read in proportional fonts. Monospace, then, improves clarity. Turning a => into a ⇒ does not affect the vertical alignment nor make anything too narrow to read. It just turns a combination of symbols into its semantic meaning. It allows you to parse a meaningful glyph rather than using a hacky workaround to represent meaning via ascii. This is also the point of emojis: (-_-) is fine, but most people find <expressionless face emoji> to be more clear as to the meaning. Nobody is getting confused about what these ligatures mean. They installed the fonts and selected the fonts in their IDE; they have already been coding; they are not going to see ⇒ where a => used to be and have a brain meltdown.
Is ligature rendering context-sensitive? If I put => in a string literal in JavaScript/TypeScript and the IDE "helpfully" decides to apply ligature to it, I'm gonna go insane.
I am the only one who finds fonts a bit expensive for personal use? It is not a rant, I am not saying it isn't worth it, that font designers can't make money, etc... But that puts it on the same level as tools like Sublime Text or Beyond Compare. For me, it is enough of a turn off not to use a commercial font, especially considering that the free offering is quite good.
I totally understand the higher price for commercial use, here, it is cheap compared to the costs of hiring a designer, and it may have a real impact on your sales and ultimately earn you money.
But why is the price for personal use around $60? Is it some kind of a sweet spot because most people won't buy fonts anyways, even for $1, but those who do expect to pay that kind of money. Does it account for piracy, which I guess is easy and goes unnoticed if you only use it personally?
Selling font direct to consumers is extremely bad business model. This doesn’t work. People are not keen on shelling out 100s of dollars when IDEs already come with decent fonts and other thousands of free fonts readily available. This font looks great but most people would argue about marginal benefit. I would hope they would partner with IDE makers and big tech and give them license to use it for their expected revenue instead.
I also think creators of this font likely have not performed any market testing or studied price-revenue curves. I might take a bet that $5 flat price would produce higher revenues. Another option for them is to bundle many such fonts by forming group with other creators together. That has higher chance of selling a professional fonts as package to IDE makers and big tech.
Sorry, but no IDE comes with a proper 3278-like font. Not even IBM's Developer for z/OS comes with one (they commissioned that other font called Plex... who would take seriously a font named after a media player?).
That is delightful. I remember using 3270's back in "the lab" in high school ("alt-pf2" twice to compile!), and marveling at the individual phosphors on the screen. (When I could see better, for sure.)
A while back, I wanted to try MonoLisa out for a bit before spending all of the money on it. I ended up finding the .zip on a shady website after some creative searching and used it for about a month.
I tried to switch back to another font and found that I was actually really enjoying MonoLisa... I ended up just spending the money since I felt a bit guilty staring at it for 8+ hours a day without paying the creators. Now, installing it is one of my first steps when setting up a new environment.
Wow, the pricing changes my perspective quite a bit. I wouldn't have even considered paying $5 for a font. Think it's just one of those things I'm used to not having to pay for.
I guess if you find the current free offerings problematic then $55 is nothing for prolonged comfort if it does what it says on the tin.
For me i've always found the default in VSC on OSX to be really nice.
Tried ligatures once but it just became confusing tbh
Yeah, unfortunately I can't really see a viable use case for professional (i.e. paid for) fonts for personal use. Like you, I understand that font designers need to make money, but there's just not $60+ of value in a font for me, particularly one where my reaction is "oh, this seems like it might be marginally better than my current font, maybe I'll check it out".
It's just barely hitting the potential value where I'm willing to hit the download button, tacking on another $60 on top of that is just a complete non-starter for me. And trying to make money by shame (i.e. font makers deserve money) doesn't seem like it's viable long-term.
Careful what you say about copyright. While this might be true (up to some degree) in the USA & Japan, it’s definitely not true in many other countries (e.g. Germany, France, Russia & the UK).
In the US it might also be possible to protect a font design with a design patent, so even there you should be careful about assuming it’s safe to copy a font’s design…
No, you aren't. I sympathize with them. Its a lot of work to create, and they should get their money's worth. But it takes time for me to decide whether I really like a font, and I'm not going to pay $60 for the chance to figure that out. I wouldn't pay $6 either, though I might if I had more money to spend care-freely.
Would be wonderful if they could charge 1/x cents per character used up until some fixed price point. but what an intrusive business model that would be.
The font is used on the web page itself. You can trivially yoink it out of there and install it on your system if you really like it. I doubt anyone ever pays for fonts for personal use.
If you're willing to spend money on a font for coding, then do yourself a favor and take a look at PragmataPro as well. I bought a license (checks notes...) 8 years ago and it has served me very well.
If I was not down to pay for a font, then I'd probably use one of Iosevka's forms. Personally, however, it became clear to me that just like my monitor, the font I spend hours looking at every day is also worth some money.
I like narrow fonts. Barlow is excellent. News Gothic is fantastic. Geo Grotesque is super beautiful. But it just doesn't work for me when a coding font is narrow. Fonts like Iosevka and Pragmata are harder to read than needed and for no clear benefit. Especially when used for projects based on C and derivatives. If you ever find yourself needing to cram more symbols per line onto your screen, it's a sign that there's a coding style problem! Lines simply should be short enough to not require horizontal compression.
I keep my code below the 80 column mark, as is common. For me, the reason I like the more narrow Iosevka is because it lets me have more split buffers open on the same monitor. With Iosevka I can have 3 splits with a little over 80 columns each, other fonts only let me have two. I never noticed a decrease in readability but I've been using Iosevka for a very long time now, perhaps it's time to try out a wider font and see if it's worth it.
I like the narrower font so I can fit two side-by-side files with full 120 character width each on a regular 16:9 display. Iosevka is likely my forever font. I find it both beautiful and fit for purpose; I couldn't ask for more.
Re: "lines should be short." I prefer my code font to work even for bad code. It's not always my code that I'm looking at!
Ever tried editing two files side by side on a 13-14" screen? Good luck without a narrow font or tiny font sizes. Meanwhile I find narrow fonts just as readable, so for me it's an easy choice.
Iosevka is my all-time favorite font. MonoLisa seems to sell itself on being "wide", and Iosevka is the opposite of that. Each letter is exactly .5em, which is on the very narrow side of things as monospaced fonts go. So if this thing appeals to you, Iosevka isn't the free alternative you're looking for. But if you want the nicest monospaced font in the world, then Iosevka is ;)
I missed that. The website lets you compare it to IBM Plex and Fira Code as well. Same width, but a little bit more contrast. Compares very favorably if you want wide.
My takeaway is that monospaced fonts are basically a solved problem thanks to Iosevka. It does everything. And you can mix and match individual glyphs to your exact preferences!
Yeah - I paid for Pragmata back in the day and totally forgot about it when Iosevka appeared. Even reminds me a little bit of 6x13 which I used for so long with my Dell 22"...
I'm going to hop on my hobby horse again for a second:
One of their first points is this:
>Designing a monospace font is much harder than a traditional, proportional one: being constrained by the same width of all glyphs can result in a boring or unreadable font.
And they're absolutely right. But it begs the first-principals question-- why code using a monospace font? Today, every major editor that isn't terminal-based supports proportional width fonts beautifully. It's also incredibly rare to see modern style guides that depend on having consistent column widths. In 2022, there's no technical reason to code using monospaced fonts. And there are a ton of beautiful and readable fonts out there -- There are probably a dozen pre-installed on your system that are more beautiful and readable than this font.
You see this tag line time-and-time again. "A font designed by and for software developers." But font design is and art and a discipline. Doing it well is very hard.
Because unlike prose, we don’t reason about code in terms of words, sentences or paragraphs but rather in terms of statements, lines and blocks. Navigating between visual lines vertically makes sense when navigating in code. And to optimize this kind of navigation, monospace fonts are the best choice because where your cursor lands is predictible. It also brings cool features such as block selection which you can’t implement properly with proportional fonts.
I don't quite understand this. I've used proportional fonts in PyCharm and other editors for many years, and vertical navigation and block selection work fine.
For me legibility is more important: unlike prose, for code it's much more important, what's written in those lines, and monospace fonts sacrifice legibility for columns. And no, monospace fonts can't make cursor land where it needs to, because the destination can be anywhere on the line.
> And they're absolutely right. But it begs the first-principals question-- why code using a monospace font? Today, every major editor that isn't terminal-based supports proportional width fonts beautifully.
There was a whole "coding font" family designed around the idea that we should be using proportional fonts for this, and it makes a great case...
...except that just about every time I've tried this, I've quickly run into places where trying to use a proportional font creates visual fails. Here's a simple one:
/**
* Render a given template
*
* @param string $_template
* @param array $_args
* @return string
*/
Put that in a non-proportional font, and the asterisks on the first line probably won't line up with the rest. Now think of someone doing visual alignment of assignment operators in a block of code like you often see in Ruby, or any code following the indentation standard where you line up parameters in a multi-line function header with the character after the open parenthesis like you often see in Python. Speaking of parentheses, can you imagine what will happen with proportional fonts and Lisp indentation? It'd drive the hardiest Emacs user to drink in short order.
Proportional fonts in editors are a good idea whose time probably just hasn't yet come. We'd need (a) to have editors that support "elastic" or variable tabs to keep things aligned in a truly sane fashion, (b) to re-teach a generation or two of programmers that indenting with the tab character is good, actually, and (c) to develop a few new conventions for what makes code look neat and pretty.
I do find it hilarious that using tabs with non static tab stops basically solved this problem. Anyone that ever typed, on a typewriter, almost certainly used controlled tabs to line up data. I recall tables were easily done by just seeing the tabs correctly then proceeding in standard way.
That said, I don't see my lisp coffee caring that much. Let expressions benefit from lining up. Most other code, though? Not sure it matters that much.
FWIW, Verdana aligns those asterisks just fine. I do think deleting those asterisks makes documentation better and I personally write documentation without asterisks. Why they are there at all? It's just noise.
That's a "DocBlock", in this case for PHP, although it comes from JavaDoc and I suspect there are some other languages using the same format. It's a standard convention that API documentation can be automatically generated from, and in many editors the comment block itself can be at least partially automatically generated. (e.g., in Visual Code, if I just type "/*" on a line before a function header and hit TAB, the editor's going to fill in a lot of those details.)
At any rate, while you might be technically correct, in practice, "PHP and Java coders should abandon this long-held convention used by hundreds of thousands of programmers and decades' worth of tooling in order to avoid unsightly alignment issues when using proportional fonts in editors" may be a hard sell. :)
Less a tradition and more of a standard. It's more or less complaining that the way HTML escapes < > is ugly so you're going to substitute your own variant. There's nothing technically stopping you, but if you want your code to be parseable by web browsers you unfortunately need to adhere to standards.
> Put that in a [proportional] font, and the asterisks on the first line probably won't line up with the rest.
You quickly learn not to care about that. So what if the asterisks in the first boilerplate line don't line up with the ones below? And which of those two asterisks should have lined up with the others?
It just doesn't matter. Everything in the meat of the comment still lines up just fine in a proportional font, just as it does in monospace.
> Now think of someone doing visual alignment of assignment operators in a block of code like you often see in Ruby
I gave up that coding style many years ago, even before I switched to proportional fonts. You end up doing stuff like this (making up a contrived example, and not in any particular programming language here):
name = user.name
age = user.age
driver_license_number = dl_database(user).dl_number
Sure, it looks nice to see the "= user.etc" lined up, but does it actually help the readability and maintainability of the code? I used to think so, but I don't any more.
Maybe it is because I am getting older and all that sideways visual scanning is not as pleasant as it used to be. Maybe it is because of the unnecessary commit diffs that this style produces.
Once I stopped doing this, I realized that the code would look fine in any font, mono or proportional.
> or any code following the indentation standard where you line up parameters in a multi-line function header with the character after the open parenthesis like you often see in Python.
It's worth noting that Black, by far the most popular Python formatter, eschews column alignment in favor of a purely indentation-based format. Python code formatted with Black is just as readable in a proportional font as in monospaced.
Here is a more extreme example from Rust, whose rustfmt tool used to rely heavily on the kind of column alignment you're talking about:
(That may not be the exact rustfmt style, but it's pretty close, and it illustrates the benefit of simple indentation vs. column alignment.)
> re-teach a generation or two of programmers that indenting with the tab character is good, actually
Bless you for that! This is another advantage of indentation-only formatting. It stops mattering whether you use tabs or spaces! The code will be just as readable in any font, monospaced or proportional, and it won't matter at all if one dev prefers to render tabs as two spaces and another likes four.
The key to all of this is to abandon the kind of column alignment that monospaced fonts make so tempting.
I do agree with your point about Lisp. Monospaced fonts are so heavily ingrained in that culture that I couldn't begin to imagine how to change it.
Textmate 2 had some support for proportional width and different heights and styles in its early days. Don’t know how it panned out since I’ve since stopped using it.
Proportional fonts break code navigation, moving vertically is much more important in code than normal text. Also it's harder to line things up, and alignment is a good cue when scanning code.
I would argue that most use of column alignment in source code hampers readability and maintainability.
There are some exceptions, of course. If you are writing out hard coded matrices, you may want to line up the numbers.
But how many of us really do that day to day?
Many modern formatters such as Black for Python and rustfmt for Rust avoid column alignment and prefer indentation instead. Then the code is equally easy to read and navigate in any font of choice, proportional or monospaced.
I had never considered using variable width fonts for programming. I can see some minor issues, like vim users(on an environment that support variable-width fonts) now have no consistency on where their cursor will land when using j/k to move up and down lines, but I think I will still try it out.
Since we are talking about our favourite coding fonts, my personal choice is on Comic Code. I find it very easy to read and better than the other mono comic sans fonts.
To wit, Comic Sans is recommended by the British Dyslexia Association and the Dyslexia Association of Ireland. An American Institute of Graphic Arts post from last summer said that it might be the best font for dyslexics, given its "character disambiguation" and "variation in letter heights". While other fonts have been specifically designed to be read by people with dyslexia — Dyslexie and OpenDyslexic are two — they just don’t have the availability of Comic Sans. To hate on Comic Sans is “ableist", Hudgins argues, and doing so discounts the reading difficulties of millions of people.
I’m really using this font everyday since about two years. I remember setting the font in vscode and testing comic sans ms for fun, just to see. To my surprise it wasn’t that bad for me but of course not monospaced. So I looked at monospaced fonts inspired by comic sans ms, you have a few free ones on GitHub, and I ended up with comic code relatively quick.
I honestly can't tell much difference between this, and the new "Cascadia Code" font that Microsoft recently put out. If they didn't put "Comic" in the name, then no one would likely think twice about it. On the other hand, the notoriety of that name probably helps them draw attention, too.
I find that font very beautiful and pleasant to look at.
That said, the licensing seems completely out of touch from reality to me. Today we are living in the cloud area, where data and and workspace are replicated across devices. When I read that you need multiple licences to have it on more than 2 personal devices, that sounds too much of a hassle to consider buying it.
On the topic of fonts: If your font of choice has it, try using the medium weight as the "normal" weight in your editor — I've found I prefer it to the regular weight with most fonts. I started doing this after noticing that the default Xcode font is SF Mono Medium.
I thought I was the only one doing this :P It definitely helps at smaller sizes, narrow fonts like MonoLisa simply become too faint to read easily otherwise
Do people really care that much about editor fonts? I just use SF Mono and call it a day. I've never had a problem where the font, of all things, was the main cause of something not working for me.
If you're looking your day at nothing else but text it's the most obvious thing to spend time and money on to improve. Sure, it's an utilitarian thing at the end of the day, but why should it not look pleasant to your eyes?
I don't think I ever had _a problem_ with a font, but that does not mean I do not want to spend a bit of time and effort to improve my experience. I could probably also get away with a much worse keyboard or monitor and be just as productive. But would I enjoy it just as much? Probably not.
I'm not sure what you're referring to. The font is a one time purchase and significantly cheaper than a new monitor. Both things (a better monitor and a better font) can make you enjoy the things you're doing more.
Yes, there might be billions of free fonts out there, but the cost of that font is also not exactly making a huge impact for me that I have to save money there. Why would I start saving with the font all the sudden when I spend more money on literally everything else? Does not really compute to me.
No, sorry fontographers, but I can't tell the difference between the scores of mono fonts created in the last half dozen years. As long as it's kinda pleasing and can easily see the differences between () and {}, 1iIlL| and oO0, I'm all set.
It’s definitely something some people care about, although I am certainly in the camp of not caring at all. I have no idea what font my IDE uses, and I have never thought about changing it.
I looked at it a few years ago and dismissed it because it’s so similar to Source Code Pro in terms of spacing, size and overall feel. Source Code Pro is an excellent wide font that I’ve been using since its release about a decade ago. And it’s free, and there are Nerd Font variants with ligatures if you’re into that.
I noticed that MonaLisa added script variant last year, so if you want something like that in your editor it’s a very good choice. In fact, I’d recommend it over Operator Mono (the OG monospaced font with scripted italics), because the later has a much smaller character set.
Or, pick a free Victor Mono if you like narrower symbols. Alas, us - wide font users - have to pay for a script italics :)
"But then I can't see as many windows!" That brings us back to the GP's I need to see what I'm looking at, not what I'm not looking at". When you want to look at those other windows, bring them to the foreground and let them obscure this one.
Seems like the same amount of characters that are each wider would be wider? So you would see less characters on a line with the same amount of characters
Well yes and no. The line would visually become longer, but if we're talking enforced line length by IDE's, say 80 characters, then the line would still be 80 characters long, but just take up visually more horizontal space and so whether or not you see the same amount of characters on a line would become an issue of how much horizontal screen space do you afford for code.
That's how I think about it too. I use Anka/Coder Narrow. It takes some getting used to, but may enable using an additional editor window at certain monitor sizes.
Another commenter replied that all editors have word wrap, but the resulting code doesn't look great, IMHO. I prefer full control.
For terminal/console use wide fonts hurt IMHO. I really like Iosevka, it even has a terminal optimized version that's explicitly less wide: https://typeof.net/Iosevka/
Wider fonts are significantly easier to read than narrow fonts which is the main point a programmer typically optimizes for. Since most editors can reflow anyways and programmers are relatively conservatives for max width anyways my general experience is that I have more than enough space on the right unused.
It's strange, I find the complete opposite to be true. A narrower font allows my brain to grasp the line quicker, without having to move my eyes as much.
> being constrained by the same width of all glyphs can result in a boring or unreadable font.
I don't see how "boring" is an issue here. If the whole thing has a goal of functionality, why do I care if it's boring? And what is a "boring" font anyway?
Reminds me of the Apple-induced desire to call everything "stunning" or "beautiful."
> I don't see how "boring" is an issue here. If the whole thing has a goal of functionality, why do I care if it's boring?
Exactly. Or actually, to go even further: On the contrary, "boring" may well be an issue, but in the sense that that's what we want. When you write code -- or prose, marketing copy, poetry, whatever -- what you want to concentrate on is the content of your text, not the esthetic of the letterforms. "Boring" is the opposite of "captures your attention", and if I want to focus my attention on the meaning of groups of letters, "boring" -- not grabbing my attention -- is exactly what I want the shapes of the letters themselves to be.
And yes, I want them all to be the same width, so I can line up repetitive bits of code (or poetry?) below each other and match -- catch -- the non-repetitive bits at a glance. (Sorry, we can't all write in bone-DRY functional languages; SQL is pretty damn verbose and often, yes, repetitive.) IMO that's part of the content I want to focus on.
> As software developers, we always strive for better tools but rarely consider font as such.
Meanwhile, I look at new coding fonts on at least a monthly basis. Nothing beats Input Mono [^1] for me; I actually like wider fonts, so I might take this one out for a spin.
Not a fan of these sharp modern faces in general. However, the small text in this one looks particularly "smudgy".
I stopped hopping monospace fonts when I discovered Go Mono. Go Mono does not seem to get blurry even at small sizes. M, m, n always look impeccable. Not so here.
I'm not sure. Maybe something is wrong with the text-rendering in my browser.
A serif monospace font that doesn't look it came from a typewriter? Very little separation between letters? A font made for specifically for typesetting one programming language? It really doesn't seem like it should work, but it does for me. I have it installed as the system monospace font on every computer I can.
Since these comments just seem to be suggesting alternatives or chiding this font for its price tag, I'll jump in and say that I bought it about a year ago and absolutely love it. There was definitely some sticker-shock at the price at first.
After staring at MonoLisa in editors for 8+ hours a day for over a year, I can say that I _really_ love this font. Installing it is the first thing I do when setting up a new environment. It reads well in code and in the terminal, and I even wrote a significant amount of prose (60k+ words) in it and it was a pleasure. Definitely do not regret spending the money.
I thought this was gonna be yet another monospace font I wouldn't be able to tell from all the others, but fuck me as soon as the page loaded this one just spoke to me. Grabbing this for sure, well done!
Different distributions pick different defaults for `Monospace`. If you are using KDE on ubuntu, `Monospace` might be pointing to `Ubuntu Mono`. On other linux distros if they are sticking to KDE defaults, then Monospace will point to Hack [1]
The site lists increased width of the font as a feature - but after discovering PragmataPro and Iosevka (that is usually mentioned as an open source alternative) I fell in love with how much horizontal space can be saved with those fonts. I often find myself opening two shells/IDEs side by side, and at these moments I truly appreciate how little space they occupy. From my perspective, it's a no for MonoLisa.
> Designing a monospace font is much harder than a traditional, proportional one: being constrained by the same width of all glyphs can result in a boring or unreadable font.
A very ironic statement because I find the font to be absolutely unreadable.
This may seem like a minor nitpick but it's something that popped out at me: italisizing a font shouldn't add or remove serifs. There is a reason why Unicode defines both sans- and serif versions of italics.
Perhaps I'm missing why this is desired for fonts in general, but my tendency when selecting one for editing code is to use one with a smaller vertical line spacing to minimise spacing between lines (and therefore fit more lines on screen).
Why do people appear to prefer the opposite (massive distance between lines)? I'm currently using Input Mono, not because I like it specifically as a font, but because it's relatively narrow, and because its vertical spacing is smaller than many others.
Navigation tools in code editors are generally good enough that I'll sacrifice information density for readability (i.e. I can get where I want to go fairly easily, so it's not really essential that it's on screen). Also the methods in the codebase I'm working in are nearly always < 10 lines long, so the 'unit' of code I need to see at once comfortably fits no matter how much vertical space is used.
Sure, I guess my question is around why people would consider a line in a sea of space more legible than the same x-height font with less space below it.
I guess I could have an unusual take on this, but I find a lot of mono fonts seem to have massive inter-line spacing. So much so that their appearance is almost jarring to me. I find it disruptive to read. If I had issues with the legibility of a font then I'd increase its size, not the spacing between lines.
As mentioned earlier though, I guess I'm an odd-one-out here, I'm seeking to understand how/why my view here is unusual.
I am one of those using this font for ~1 year now, very happy with it. As a designer/developer with penchant for typography I am the perfect target customer I guess.
My favorite font still remains fantasque sans mono. It's loosely based on comic sans, I just need a little playful edge in my coding job. Otherwise it gets too stale.
Another day, another Letter Gothic lookalike "developer font". I do not feel particularly motivated to switch away from the terminal bitmap fonts I normally use. There's something about an 8x8, 8x16, or similar small numbers grid of pixels -- the constraints seemed to breed creativity that you don't see too much of anymore in monospaced fonts for coding/terminal use.
- While the effort to create fonts is not trivial and should be rewarded, this seems expensive. I've bought fonts before, but they were like $5-15, not $100.
- It's fantastic to see the variety of human experience on display in the wide variety of font preferences. I used to thing "why to we need more than one?" LOL
- My favorite so far is Source Code Pro.
The roman (not italic or script, though) “g” is horrible and doesn't fit with the other letters that would normally sit their main body on the baseline but also have a descender. Why is its upper portion raised and squashed, and it's tail so misshapen?
I cannot look at text in this font without the feeling that every “g” is reaching out from the screen and slapping me in the eye.
It’s a bit odd but doesn’t bother me too much. The totally different italicized “a” really throws me off and looks like an “o” to my blurry pre-coffee morning eyes.
> MonoLisa uses open forms and terminals (starting and ending points) that are pointing towards the neighboring letters to let the eye follow the line of text fluently.
Does the lowercase g follow that convention? It seems to make me almost stumble while reading and do a double take on what the letter is. But maybe it's just because I'm new to the font.
I don't understand how they can advertise this font being "wider" than other ones. I skipped all those modern Programming Fonts because none of them is as condensed and readable as "TheSans Mono Condensed".
That font is terrible because its basically still ASCII only, but I use it everywhere. I would pay good money for a Unicode version.
Is this part about terminals actually true? Or a tad exaggerated for marketing?
> MonoLisa uses open forms and terminals (starting and ending points) that are pointing towards the neighboring letters to let the eye follow the line of text fluently.
Regardless, I like the font overall. My go-to is Fira Code but this might be worth a try.
> As software developers, we always strive for better tools but rarely consider font as such.
A quick search of hn shows the opposite: it seems like we're always talking about fonts and releasing fonts and comparing fonts. I practically have monospace font fatigue. But yeah this font looks nice enough
I don't know what they were doing with their javascript, but they broke both the reload button & ctrl-R as well as maxing a CPU for 30s after closing the tab. Possibly something with the canvas, I got a fingerprinting attempt warning for that.
Awe, the script version doesn't have ligatures. Some people think I'm a weirdo but I really like having my keywords in ligatured script and the rest of the code normal.
What do you mean by that? Adding “script” variant only for language-specific keywords? I think we could consider doing this… the tricky part is to know what language you’re using so it looks like different ligatures depending on the language.
After switching a lot of programming fonts and using Fira Code for a long time, I've now ended up using whatever the default font is that comes preset on VS Code
What I like most about this font is that it has a completely different aesthetic from my favorite monospace, JetBrains mono. It has more of the humanist flavor of a Frutiger versus the DIN-like rationalism most monospace fonts adopt.
I wonder how many people glancing at the landing page have browsed over to the download page, and discovered that this a paid font? To the tune of $69 to $239, depending on the options you want.
If this were something really revolutionary, then okay. But this looks like every other Bitstream Vera Sans Mono variant, just tweaked to be a touch wider than Fira Code or Jetbrains Mono. But half of the fonts on https://www.programmingfonts.org are Bitstream Vera Sans Mono variants, a touch wider than Fira Code or Jetbrains Mono. And they're all open source and free.
People charging $199 for a slightly wider Lucida Console, you can't make this shit up. The marketing is so outrageous.
In case someone's seriously considering this, here are an additional two sites that have literally hundreds of CC0 and other free to use fonts, not just monospace:
I love the DIN family but haven't been able to find a monospaced variant for coding/terminal use. I'd add Abstract Fonts[1] to the list, though you have to watch the license (many are only free for personal/non-commercial use).
I wanted to let you know I'm upvoting you, not for the useful links you have provided, but because I also love DIN, to an unreasonable degree, like the kind of feeling that makes someone otherwise totally rational marry a pokemon.
When I was about 20, after the Berlin wall came down, I rode my bike round berlin, then all round east then west Germany for three months, sleeping rough in the forest most of the time, and I think the font, on road signs everywhere, soaked into me as linked to that summer.
But you know what really creeps me about this font. It has a history dating back to the start of the 20th century as letterforms for hand painted signs, but Deutsche Industrienorm 1451 was created in 1936, the year of the of the Berlin Olympics, concentration camps had been open for three years, Triumph of the Will was released the year before. If you've never seen 'Triumph of the Will' it's an experience, I'd never understood how the fascists had managed to appeal to enough people to actually win an election, but in that film you see how they presented themselves to the people of Germany at the time and it was sophisticated. There's a moment in the film in which hilter interacts with an unemployed labourer, and in that interaction he imbues this guy with a sense of purpose, hitler has told him he is a soldier - a soldier with a shovel, it's nonsense, but it is carefully crafted nonsense. It seems to me that DIN is part of this carefully crafted propaganda, a tool to help project an vision of Nazi Germany as rational, orderly, scientific, rigorous and correct. And it does the job, like the unemployed labourer, I respond to it exactly the way goebbels would want me to.
I know I can use a Roman road without endorsing the invasion of Gaul, but there's still a horror there millennia later.
> There's a moment in the film in which hilter interacts with an unemployed labourer, and in that interaction he imbues this guy with a sense of purpose, hitler has told him he is a soldier - a soldier with a shovel, it's nonsense, but it is carefully crafted nonsense.
That's more or less what I'm trying to say, the little morsel of self esteem given to labourer, the sense of purpose and inclusion, comes tangled up in an insane and horrific ideology, if he wants to eat that morsel he needs to swallow the other part too. So the strategy isn't nonsense, it's nasty, but not nonsense. The human need for inclusion and self esteem is real, responding that need is real, the nonsense is the mythology in which that response is served.
It looks like a lovely font, a shame about the price.
They have, however, included it into their website and distributed it to my browser for free, without asking me first:
https://www.monolisa.dev/api/fonts/initial
According to the EULA the font is now mine under the term "by downloading the software accompanying this license".
IMO, this is one of the rare programming fonts that actually looks great to me. I use Operator which is also a paid font. I used Source Code Pro for a short while and never really like any of the other free offerings.
Also, how many people who regularly browse HN have seen a headline like "[Font Name] - A font designed for developers"? As a mild font nerd, I love that people keep making more fonts. But also:
Helvetica, the World's Most Popular Font, Gets a Face-Lift. The 62-year-old typeface that's used everywhere from subway signs to corporate logos has been updated for the 21st century
While I'm here: Victor Mono has been my programming font of choice for a while now: https://rubjo.github.io/victor-mono/
Oh, look at that, the Victor Mono homepage has a font comparison slider that allows you to compare it to MonoLisa! MonoLisa advertises that it's wider than other monospace fonts, and you can really see that in the comparison. One of the things I appreciate about Victor Mono is that it is narrower than many other monospace fonts (while still being very readable), allowing you to fit more code side-by-side.