IMO a font specimen site may be the worst place to use font-display: swap. Was wondering why I was looking at what seemed indistinguishable from Courier, turns out what I saw was exactly Courier.
For those not in the know (or who didn't suffer through having to write CSS manually): font-display: swap changes the default behavior from "No text visible until font been loaded" to "Display fallback font until specified font is available", meaning you'll see Courier until Iosevka loaded properly, or Courier forever if the font file failed to load.
I'm guessing the website author added that after some "website performance tool" recommended it, as they make sweeping generalizations that don't always make sense in every context, and "always add font-display: swap so text is readable earlier" is now a dogmatic rule "web developers" (mechanical or wetware ones) add without thinking, so that precious performance number goes up.
I think the dogmatism stems from Google, which delivers this advice as unconditional instruction and often gets parroted, makes the main website grading tool that calls it an error, and says they’ll drive less traffic to you if their grading tool rates you poorly.
Also, I think also led by Google, `font-display: block;` actually behaves the same as swap now, just with a longer wait for the font to load [1]. Iosevka’s webpage does use swap, though.
Have been using it for a couple years. Before that I was using Fira Code/Mono which was also fantastic. However, once I got used to the condensed Iosevka, all the other fonts just felt loose and not space efficient enough in my IDE and terminal.
I am the opposite. I have CommitMono, Iosevka, Source Code Pro installed, but I always come back to Fira Code/Mono. At the same overall density of text, I find that I can skim through the text faster when the font is wider.
It's interesting how personal font choice (among many other things) is!
They're my two favourite! Iosevka edges it as Maple looks slightly fuzzier to me for some reason but they are both great. I have to use the narrow or slim version of it though
Good to know that the age old tradition of calling a font with serifs sans-serif is well alive and kicking.
The reason here is that the basic glyph shape is that of a sans-serif, but still got serifs added afterwards. That doesn't stop it from diluting the meaning of the term.
Where does it say it is a sans-serif font? The very first full sentence on the page starts with "Iosevka is an open-source, sans-serif + slab-serif, monospace + quasi‑proportional typeface family", just like the title here says "sans-serif and slab-serif".
It also has many weights. In my opinion it's one of the best monospaced fonts where you actually can use weight as an additional dimension in syntax highlighting.
I felt like my eyes hurt when I tried this font. It's hard for me to switch away from the standard width monospace fonts. At the moment I use Commit Mono. Extra horizontal space might be nice but it's not worth risking any discomfort
I have been using this font for 3 years now. I can't, and won't get off it. I use it wherever I can - heck there's an Arch package! I'm pleasantly surprised by how much something this simple makes me happy. Legitimately a font has added to my life.
As we are using hypertext, I thought it would be useful to throw a link in here... but following your instructions feels like navigating a paper map. I don't see LICENSE.md here: https://github.com/be5invis/Iosevka/releases
I've been using a custom version - you can customize the font¹ and build your own ttf (or better yet, ttc) using the build system supplied in the repository².
be5invis, the author of the font, deserves a special mention for creating a whole custom DSL called PatEL (Parametric Type Expression Language) to generate the font programmatically!
Renzhi, if you ever come around to read this, thank you so much for Iosevka, man!
Yep. :waves: to ones on similar path.. Switching off from Terminus was hard, but eventually unavoidable. Switched to Jetbrains Mono when Ghostty came out nearly 2 years ago..
oh man I used Terminus for so long till my finger hurt ... recently I was very happy with Cascadia Mono but now I've migrated to (as I was saying in another thread) Pragmasevka (derivative of Iosevka that mimics Pragmata Pro). It's really great.
I am happy it works for you. I am always surprised how much this font is praised, then I try it, and just completely unreadable for me.
I tried it again, quickly set it up in my terminal the "Iosevka Term" version, switching from Jetbrains Mono, and just don't understand how can people read this.
I drove a version of this for a fairly long time, remembering downloading it from GitHub page, not from the customizer. It's not a bad font by any means. I enjoyed Iosevka a lot while I used it.
But, after using Berkeley Mono for three minutes, I switched to it everywhere in a week or so, and never looked back, or looked anywhere else, to be precise.
Yes, it's not free, and yes it's opinionated. I can say that my opinions align with that font pretty much. It's one of the things which I cherish like an expensive hand tool which really does its job very well and makes you happy with its presence.
If you like Berkeley Mono but don't want to pay, here's an Iosevka configuration that attempts to mimic it as closely as possible. https://ahatem.github.io/IoskeleyMono/
Funny enough I paid for Berkeley Mono but its italic is just not up to it (and particularly not to the price). Iosevka Mono has very nice glyphs but just way too narrow for my taste. JetBrains Mono, IBM Plex Mono (or Lilex) or Roboto Mono just seem to work much better for my tired eyes !
I've had the Berkeley Mono trial on my system for a while now and tried it every so often when I changed up my terminal/editor themes, but it never quite clicked with me. I tried Ioskeley and I personally prefer the way it looks on my code. There are enough differences that I'd call it a bad clone if that were the intention, but a good font if you generally like how Berkeley Mono looks but want something different.
(Note: I have paid for fonts before and wouldn't hesitate to buy a coding font if it fit my preferences)
It's the first time I see any of these fonts and I'm more of a bitmap font type but one difference is the parentheses are much more readable in the Ioskeley clone than in the rounded-corner–brackets Berkeley.
It's designed to look like a font from that era, to be honest. It also reminds me some of the older computers I used. Some typewriter, maybe a real VT320 or the older DOS systems I used.
It's a modern yet period correct version of these older fonts, with proper character set support and love for details. It's so perfect for me, it becomes invisible, or as the Berkeley's page says: "It's boring. It's good"*.
Or as I mailed the creator after using it a couple of weeks: "It's so perfect that it transported all my computers to 70s, in a good way".
*: When I was writing this comment, I wondered whether I really set my browser's monospace font to Berkeley. It becomes that transparent after a while.
Iosevka is very configurable and have many options for font and individual glyphs.
Build supports text file config.
At some point I made a config so I can always get preferred setup. It works well for me
The reason it's so popular is it was (one of?) the first fonts to include tons of programming ligatures. So it gained mindshare early, and since font choices are so personal, the more people use a font, the more people will like and post about it.
Once, I also couldn't fathom how people liked this one.
When I asked, somebody said it fits more characters in terminals and code editors. This sounds incredibly obvious, but for whatever reason that was eye-opening for me and helped me appreciate it a lot more when I tried it again. Now I can't use anything else.
To suggest an odd thing, you might try repeating your tests with the customized set to a single weight — either higher or lower than the default 500 that most programs would use. Berkeley for high-PPI displays is at 450 rather than 500 and looks better for it.
Its narrower width definitely takes some getting used. It wasn’t until the third revisit that it clicked for me. I realized I could fit more text in my terminal panes while keeping font size the same. Running one or more coding agents in every terminal window also had something to do with it.
My go-to monospace font in everything I use nowadays. Way back, it used to be JetBrains Mono. When I decided to give Iosevka a try, I actually started with the expanded variant, because I wasn't accustomed to the narrow jump. Took a while, but at some point I took that jump back to the default and it's stuck. Thanks for your efforts on this font Renzhi!
Used Iosevka for a while, now fully on Aporetic for everything monospace. Something about the thin and tall serif just clicks with me, and Aporetic seemed to work better size wise for my terminals and GUIs.
The default font since GNOME 48 is Adwaita Sans (a modified Inter with different l's and I's) and for monospace it is Adwaita Mono (a modified Iosevka.)
Once we use Berkeley mono font, we will never switch to another one :)
Whenever font discussions come up, I will try everyones suggestions to find better than what I have, and always came back to Berkeley. Its almost near perfect for coding!
It has very poor character coverage, especially compared to Iosevka whose author speaks Mandarin as his main language (IIRC), and put a lot of effort into supporting as many languages as possible.
It is interesting that it differentiates between oblique and italic, something that not many fonts aimed at the monospace crowd do, in both the English and Cyrillic alphabets. The list of variants for the letter k is longer than I expected.
Alas, it is oblong, not square.
And 7 thousand-odd code points is not as large a range as it used to be a couple of decades ago. That said, it does have MouseText, the 7-segment LED digits, and suchlike from the Supplementary Plane 1.
First time I used Iosevka I felt really nauseated, kind of like getting motion sickness, it was a really bizarre experience for a font to give me. I was on a smaller screen though and getting some more characters in without getting tiny was actually a selling point, so I gave it another go and eventually got over the feeling.
Now (after ... gosh, 6, 7, 8? years probably) I love it, use it everywhere and other monospace font feels super w i d e and weird.
When I saw it on the website my first thought was a little gasp of recognition from the Apple II days when I used to go into the 80-character mode my dad had installed the expansion card for. The narrower text looked just like this. I had the same experience then: reading text in the wider type felt strange after a while and I preferred the narrow setting.
This is the best font I have ever found, and I have tried a lot of them over the years. The ability to specify your own variations and generate your own fonts is really useful. I am a big fan of the dotted zero, for example.
The readability is excellent, and this font replaced everything else that I tried before. Highly recommended!
Is it only me but I really dislike "Code Ligations"? I have to mark some chars to count how many consecutive "=" simbols there are... or \/ looking like V without having other chars near it to distinguish. Having to copy paste diamond shape to find out it is <>. arrows with squiggly tails, /> being ugly, <. having dot in the middle...
That could be the maximum I'd like out of font to have "proper" greater/less-equal sign.
Code ligatures look like the final desperate attempt of an aging hipster, a Ruby on Rails and Web2.0 early adoptr (sic), the type to wear thick-rimmed fake glasses and a scarf in the middle of summer, to be cool, as he is riding his old Segway, with a glass of soy latte in one hand and an avocado toast in the other, into the void of oblivion.
I don't like them because I never know what they actually stand for in ASCII.
I thought I was the only one! I figured I was either crazy or getting old and stuck in my ways. The first I'm I saw a font with them, I thought it was cool and tried it out. I almost immediately hated it. I've tried a few more times for varying lengths of time, and I've decided that I really do hate them.
I used to hate font ligatures until I discovered Commit Mono (my all time favorite monospace font). They use the ligatures only to adjust spacing and make it look better on a monospace grid. No stupid <=, -> ligatures or anything else.
It is aggressive in its unicode support. You want to use vulgar fractions? Or Mayan numerals? They'll work. You want to use mathematical notation like ∈? It works.
I wish more languages other than Raku did this. But no, not equal is written as surprised equal. And if something ought to be less or equal, you have to write a fat arrow pointing left. :/
I have used Fontforge to remove all ligations from a programming font; e.g. my monospace font of choice is a aggressively subsetted variant of Fira Code with no ligations whatsoever.
For example, ligatures in Fira Code cannot be disabled when using the Cygwin terminal in Windows (mintty). In that application, for example, “===” looks like three continuous long lines atop each other in Fira Code, with no way to make it look like three equal signs again.
“Fira Code is not only about ligatures. Some fine-tuning is done for punctuation and frequent letter pairs.” Note that without ligature support, a lot of that fine tuning is lost.
I personally like them because (to me) it makes a few symbols less ambiguous. (I use Victor Mono [0], so in my mind things like == and === in that font makes mistakes more obvious to me at least.)
But also... I know I have the minority opinion on this. It absolutely should be opt-in, not opt-out. I think the past decade, I've been told the font tweaks I enable are incomprehensable to everyone I work with. The way I like my IDE fonts is far outside the bell curve (ligatures, cursive variants for some syntax, proportional variants for prose) so the fact that most new monospace code-focused fonts seem to align with my opinions should be concerning to font makers! I like that I don't have to patch a different font's italics into my code font anymore, but common sense says I SHOULD still have to do that!
You and me both. Ligatures are a solution to a problem that monospaced fonts don't have. I don't mind if a mono font uses ligatures to harmonize character spacing/alignment a little bit. But I don't want things like a "proper" greater/less-equal sign; if a font goes so far as to replace >= with ≥, then it's lying to me about what characters are actually present in the file.
The VT-340 didn't support ligatures, therefore, we shouldn't use them ;-)
Now, seriously, a programming font has no (and should never have) awareness of the computer language it's representing. Ligatures make sense if they present meaning in a way easier to read than the non-combined characters. I can't type := in APL and expect the REPL to think it's an attribution arrow (←).
I get APL is a rather extreme language to talk about, but this is one example where ligatures would harm the programmer (unless your editor replaces a ":=" with a "←"). Source code is a very precise language and the choice of characters you use matters a lot. A "<-" doesn't mean "←" unless the language declares so.
They are in the tabs vs spaces camp. Choose your preference and walk away, silently. Unless you consider yourself a Real Programmer, in that case, fight to the death about the matter.
(...I also find them annoying to look at, idk why)
I have a custom build of this font, use it everywhere now.
One thing is that the width by default is too compact and the extended is too wide for my taste. Upon searching I found somebody's build that has width 576. I don't know why that number, but I used it in my current builds and it turns out pretty much perfect for terminal use for me, just wide enough.
Even for my own website, with some tighter tracking and it can work okay as a text font.
Re: Width -- Same, default is too narrow and extended is too wide for my taste. The custom build has a default "semi-extended" which is just right for me and has a width of 548. Again no clue why that number, but if Iosevka says that is right then it is :) I do see that when I switch between semi-extended and a "regular" font like Cascadia Code that they seem to be the exact same width.
> Wish code editors would support different fonts per semantic region
They absolutely do. In Emacs I use different faces for comments, tables in literate sections, and code blocks. I use the same font for all those faces, but different attributes (size, weight, etc).
I also have configured different fonts for different unicode code points, so that when I include Cyrillic or Japanese text I can use a font with better code point coverage that my preferred fonts.
It always astounds me how unconfigurable most editors are.
278 comments
[ 0.18 ms ] story [ 13.5 ms ] threadI'm guessing the website author added that after some "website performance tool" recommended it, as they make sweeping generalizations that don't always make sense in every context, and "always add font-display: swap so text is readable earlier" is now a dogmatic rule "web developers" (mechanical or wetware ones) add without thinking, so that precious performance number goes up.
Also, I think also led by Google, `font-display: block;` actually behaves the same as swap now, just with a longer wait for the font to load [1]. Iosevka’s webpage does use swap, though.
[1]: https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/A...
It's interesting how personal font choice (among many other things) is!
https://tosche.net/fonts/comic-code
The reason here is that the basic glyph shape is that of a sans-serif, but still got serifs added afterwards. That doesn't stop it from diluting the meaning of the term.
But alright, I realized you must download the archive to find LICENSE.md in there: https://github.com/be5invis/Iosevka/archive/refs/tags/v34.9....
The license is "SIL Open Font License, Version 1.1." from http://scripts.sil.org/OFL
I've been using a custom version - you can customize the font¹ and build your own ttf (or better yet, ttc) using the build system supplied in the repository².
be5invis, the author of the font, deserves a special mention for creating a whole custom DSL called PatEL (Parametric Type Expression Language) to generate the font programmatically!
Renzhi, if you ever come around to read this, thank you so much for Iosevka, man!
¹https://typeof.net/Iosevka/customizer
²https://github.com/be5invis/Iosevka/blob/master/doc/custom-b...
Why is ttc better?
Are you sure it isn't an issue where a specific app just doesn't know how to use ttc?
I tried it again, quickly set it up in my terminal the "Iosevka Term" version, switching from Jetbrains Mono, and just don't understand how can people read this.
But, after using Berkeley Mono for three minutes, I switched to it everywhere in a week or so, and never looked back, or looked anywhere else, to be precise.
Yes, it's not free, and yes it's opinionated. I can say that my opinions align with that font pretty much. It's one of the things which I cherish like an expensive hand tool which really does its job very well and makes you happy with its presence.
[0]: https://usgraphics.com/products/berkeley-mono
[0] https://www.programmingfonts.org/#iosevka
[0] https://github.com/ahatem/IoskeleyMono
(Note: I have paid for fonts before and wouldn't hesitate to buy a coding font if it fit my preferences)
It's a modern yet period correct version of these older fonts, with proper character set support and love for details. It's so perfect for me, it becomes invisible, or as the Berkeley's page says: "It's boring. It's good"*.
Or as I mailed the creator after using it a couple of weeks: "It's so perfect that it transported all my computers to 70s, in a good way".
*: When I was writing this comment, I wondered whether I really set my browser's monospace font to Berkeley. It becomes that transparent after a while.
https://github.com/be5invis/PatEL
It’s a real hackers typeface.
When I asked, somebody said it fits more characters in terminals and code editors. This sounds incredibly obvious, but for whatever reason that was eye-opening for me and helped me appreciate it a lot more when I tried it again. Now I can't use anything else.
I now switched to Ioskeley Mono, which is an Iosevka configuration made to look similar to Berkeley Mono:
https://github.com/ahatem/IoskeleyMono
Either the Iosevka originals or Ioskeley are gorgeous fonts. I'm grateful to its creator.
Some time ago I switched to wayland/sway/foot, and I'm on 0xProtoNerdFont, quite pleasant as well.
I like it a lot!
Both Inter and Iosevka are gorgeous fonts.
Cantarell was so, so ugly.
Whenever font discussions come up, I will try everyones suggestions to find better than what I have, and always came back to Berkeley. Its almost near perfect for coding!
https://github.com/ahatem/IoskeleyMono
>Iosevka configuration to mimic the look and feel of Berkeley Mono as closely as possible.
Discussed recently https://news.ycombinator.com/item?id=49161743
Shame.
Alas, it is oblong, not square.
And 7 thousand-odd code points is not as large a range as it used to be a couple of decades ago. That said, it does have MouseText, the 7-segment LED digits, and suchlike from the Supplementary Plane 1.
One thing I definitely love is it's easy to access. It has been packed for many package managers. I can just brew install or yay -S to get it.
Now (after ... gosh, 6, 7, 8? years probably) I love it, use it everywhere and other monospace font feels super w i d e and weird.
The readability is excellent, and this font replaced everything else that I tried before. Highly recommended!
That could be the maximum I'd like out of font to have "proper" greater/less-equal sign.
Personally, I like them. They look pleasing and I never had issues distinguishing between the ligatures for ==, ===, and = itself.
I don't like them because I never know what they actually stand for in ASCII.
It is aggressive in its unicode support. You want to use vulgar fractions? Or Mayan numerals? They'll work. You want to use mathematical notation like ∈? It works.
You can literally do this:
`my $var = ⅒ + 2 + Ⅻ;`
https://docs.raku.org/language/unicode_ascii
say 42 ≤ 666; # True
say 42 ≠ 666; # True
say 42 ≥ 666; # False
For a full list, see https://docs.raku.org/language/unicode_ascii#Other_acceptabl...
https://github.com/samboy/CaulixtlaFonts/tree/main/MiscFonts...
For example, ligatures in Fira Code cannot be disabled when using the Cygwin terminal in Windows (mintty). In that application, for example, “===” looks like three continuous long lines atop each other in Fira Code, with no way to make it look like three equal signs again.
https://en.wikipedia.org/wiki/Fira_(typeface)
From https://github.com/tonsky/FiraCode
“Fira Code is not only about ligatures. Some fine-tuning is done for punctuation and frequent letter pairs.” Note that without ligature support, a lot of that fine tuning is lost.
But also... I know I have the minority opinion on this. It absolutely should be opt-in, not opt-out. I think the past decade, I've been told the font tweaks I enable are incomprehensable to everyone I work with. The way I like my IDE fonts is far outside the bell curve (ligatures, cursive variants for some syntax, proportional variants for prose) so the fact that most new monospace code-focused fonts seem to align with my opinions should be concerning to font makers! I like that I don't have to patch a different font's italics into my code font anymore, but common sense says I SHOULD still have to do that!
[0] https://rubjo.github.io/victor-mono#ligatures
Now, seriously, a programming font has no (and should never have) awareness of the computer language it's representing. Ligatures make sense if they present meaning in a way easier to read than the non-combined characters. I can't type := in APL and expect the REPL to think it's an attribution arrow (←).
I get APL is a rather extreme language to talk about, but this is one example where ligatures would harm the programmer (unless your editor replaces a ":=" with a "←"). Source code is a very precise language and the choice of characters you use matters a lot. A "<-" doesn't mean "←" unless the language declares so.
(...I also find them annoying to look at, idk why)
[1] https://github.com/githubnext/monaspace#texture-healing
Even for my own website, with some tighter tracking and it can work okay as a text font.
Another great customizable font is [Maple Mono](https://font.subf.dev/en/).
(I am excited to try this out)
They absolutely do. In Emacs I use different faces for comments, tables in literate sections, and code blocks. I use the same font for all those faces, but different attributes (size, weight, etc).
I also have configured different fonts for different unicode code points, so that when I include Cyrillic or Japanese text I can use a font with better code point coverage that my preferred fonts.
It always astounds me how unconfigurable most editors are.