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!
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.
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 !
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
I'm also not a fan of the narrow width, but there is an "extended" width version that's more like other mono fonts, which is what I personally use, albeit customized.
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..
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.
They always seemed to me like solutions to a nonexistent problem. They make the code less readable, but ligatures exist and they seemed like a cool tech thing to implement, and they might look cool in screenshots. But in practice, in my opinion, they're worse than just having the normal characters. But I guess it's a matter of opinion, no harm in other people using them.
We have studies since ages ago that consistency in code style is one of the most important requirements for code quality.
This goes down to the details like that you should either use spaces over tabs OR prescribe editor config such that the code looks similar on each machine.
Of course this doesn't automatically mean that code ligatures are harmful, but I would be quite wary of using them. At the very least it introduces some friction, not sure if the arguably lower mental load of using real mathematical symbols instead of the ASCII symbols makes up for it.
I'v been coding now for like 15 years and I'm not old enought to understand the debate between spaces vs tabs :)
I guess my IDE choices never surface the issue for me... visually they just look the same. I cannot say which codebase uses spaces which uses tabs. I never even think about it. I just smash tab character and don't care that there have been spaces. Or enter or { and IDE does the indentation. I just choose not to press space 2-4-8-16 times in a row.
Now I hope I won't get bulldozed over by HN crowd...
One of the main arguments for tabs over spaces was always that people wanted to configure how much space a level of indentation makes up on screen.
With tabs pretty much every editor except something like notepad.exe could do it since ancient times, with spaces the editor needs to do a bit more processing, so you were a bit more restricted in editor choice, if you really were bothered so much by the indents chosen in the project.
So it is actually quite similar to the ligature discussion. It would be good if the code looked the same for everybody but now instead of saying "But 8-space indents waste so much space on the screen :(" some people now go "But I don't like seeing things like != or -> instead of modern Unicode symbols :("
Spaces vs. tabs causes a lot of issues for Python programmers who share their code with other programmers. The other place where spaces vs. tabs is an issue is with makefiles, probably one of the most annoying features of POSIX.
I'm in the same boat, I always just press tab and let my IDE or text editor fill in with N spaces.
Granted, I'm also someone who heavily encourages the use of Black as the Python formatter in projects I'm on, specifically because it has no configurable options - can't have a holy war about formats if nothing can be changed.
Well, the tabs vs spaces had been mostly resolved and spaces won. But obviously it was never about what physical keys to press, nobody on the spaces side would spam the space bar to indent stuff (except maybe in the unfortunate situations of having to use an editor with no choice of setting the tabulator to emit spaces, or a textfield in a non-editor UI where the tabulator cycles the focus instead).
It's too bad spaces won, tabs is just correct I think, since one can configure the tabstop to use any indent size they would like. I'm quite tired of reading 2-space indent. Seems everything has moved this way now except python. I'm even seeing C with it, which is especially jarring. I think the languages that use braces for indentation particularly need 4. Python needs it least, and I can read Ruby because its blocks are delimited by words and it's bad style to write long methods
I have used Fontforge to remove all ligatures from a programming font; e.g. my monospace font of choice is a aggressively subsetted variant of Fira Code with no ligatures whatsoever.
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 wish editors had the option to disable certain ligatures. I use jetbrains mono, and the >> ligature breaks bracket highlighting in visual studio, making them both the same colour
Some fonts use three lines to draw a triple equals ligature. That, and it is, well, triple long. I’ve never had any problems with distinguishing anything with ligatures. They’re nice to look at, and very easy to read once you’re used to them. Skill issue, guys.
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.
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.
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.
Emacs heads will know Prot. Mandatory shout out to his Iosevka customized version Aporetic [0], previously called 'Iosevka Comfy', which has become my daily driver.
Kids, gather 'round, story time: my first computer when I was a kid was a communist hacky clone of a ZX Spectrum; and at one point I managed to install CP/M on it (I had no idea at the time what an OS was, I just intuit that it was a 'big deal'); and for whatever reason, this OS used a very tall and narrow font and I loved it sooo much that ever since then, I associate the tall narrow fonts with the halcyon time of excitement and exploration of those innocent days.
I put Iosevka everywhere, not only in text editors but browsers and other desktop apps. It's one of the first things to do on a fresh machine. Thank you very much, @be5invis!
I know it's a ridiculous thing to say, but the fact that I can customise the font so well on the website only to then not be able to download it like that is a crime. I don't want to muck about with npm just to build a font - do it on the site! /rant
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.
The hookiest tail for lowercase l man, love it.
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.
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.
I've been using Iosevka for more than 5 years now, it seems odd using anything else. The author is prolific and has made it really easy to build your own customised version. I don't think I'll ever move from using it.
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!
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!
A friend pointed me to a derivative of Iosevka that tries to mimic the historical (and commercially licensed) Pragmata Pro and the result is an insanely great font I've migrated to recently: https://github.com/shytikov/pragmasevka
I've been using Droid Sans Mono for everything mono for a long time and can recommend it. But this font might be great too. Any Droid Sans Mono lovers out there?
It's a descriptive label of the general lineage the designer considers their font to be in, not an ISO spec.
A little bit of looseness here is a pretty strong signal for careful font design actually. It means the creator considered some other factor (in this case char disambiguation) to be more important than rigid adherence to the category.
I’ve used Iosevka for years but recently switched to Commit Mono [0]. It hits all the right spots for me, is customizable, and does smart kerning which is neat.
Hadn't seen this one yet, but that's exactly the type of sensibility I personally prefer in a monospace (Menlo has remained my daily driver for years).
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
Their examples of their font made me fall in love with an alternative, IBM Plex, that they showed. IBM Plex shows more of their example assembly code than any of the other three, and quite clearly.
It’s nice to see this font have a slab serif, because monospace serif fonts are quite rare (I don’t consider Courier a serif). The only other monospace serif font I can think of is Monaspace Xenon. [1]
[1] There was also at one point a monospace variant of Bitstream Vera Serif called “Verily Serif”.
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.)
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.
The heading of Iosevka doesn't do the font right, my first thought was that this would be yet another soulless sans-serif. But it has tons of interesting variants. Hats of to Iosevka Etoile. See also <https://monaspace.githubnext.com> if you like big versatile font families.
I remember falling in love with PragmataPro many years ago, I really like narrow fonts, but I couldn’t afford it (I don’t remember how much it was at the time but it was something insane, at least for my wallet). Then Iosevka entered the scene, and I never looked back. Really awesome project, especially the customization part.
Fabrizio has dropped the price by 40% typically on Black Friday sales. I missed that window and bough full price though, no regrets, it's one of the first customizations to go on a new OS install for me.
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.
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 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.
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 there a PDF specimen? I disable font substitution in my browser, but I do want to have a peek. But not a peek that requires reconfiguring my browser.
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.
What does it mean for a font (or typeface) to be "quasi‑proportional"?
Also, whoever said that fonts intended for a terminal need to be narrower? Some terminals have narrower chars, some wider. And terminal emulators often allow for multiple char aspect ratios - e.g. via bitmap fonts of different aspect ratio.
Anyway, the typeface looks interesting, but I would have liked for the creators to compare and contrast it with existing (and popular) monospace / terminal-oriented typefaces.
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
Half a gig for a single variant of this font? No, thank you. That just doesn't make any sense. Perform some minification and/or publish just TTF or OTF.
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...
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
I faintly remember about the though process of italics, but I don't remember it now. They don't look uncomfortable to me, anyway.
You can start with $75 package and work your way up if you feel like you need them.
Why is ttc better?
https://pastebin.com/WwYY0QqX
Copy and paste into Import Configuration at https://typeof.net/Iosevka/customizer to preview.
That could be the maximum I'd like out of font to have "proper" greater/less-equal sign.
This goes down to the details like that you should either use spaces over tabs OR prescribe editor config such that the code looks similar on each machine.
Of course this doesn't automatically mean that code ligatures are harmful, but I would be quite wary of using them. At the very least it introduces some friction, not sure if the arguably lower mental load of using real mathematical symbols instead of the ASCII symbols makes up for it.
I guess my IDE choices never surface the issue for me... visually they just look the same. I cannot say which codebase uses spaces which uses tabs. I never even think about it. I just smash tab character and don't care that there have been spaces. Or enter or { and IDE does the indentation. I just choose not to press space 2-4-8-16 times in a row.
Now I hope I won't get bulldozed over by HN crowd...
With tabs pretty much every editor except something like notepad.exe could do it since ancient times, with spaces the editor needs to do a bit more processing, so you were a bit more restricted in editor choice, if you really were bothered so much by the indents chosen in the project.
So it is actually quite similar to the ligature discussion. It would be good if the code looked the same for everybody but now instead of saying "But 8-space indents waste so much space on the screen :(" some people now go "But I don't like seeing things like != or -> instead of modern Unicode symbols :("
Granted, I'm also someone who heavily encourages the use of Black as the Python formatter in projects I'm on, specifically because it has no configurable options - can't have a holy war about formats if nothing can be changed.
The reason spaces won is that it's not (spaces) vs (tabs), it's (spaces) vs (tabs AND spaces).
It's too bad spaces won, tabs is just correct I think, since one can configure the tabstop to use any indent size they would like. I'm quite tired of reading 2-space indent. Seems everything has moved this way now except python. I'm even seeing C with it, which is especially jarring. I think the languages that use braces for indentation particularly need 4. Python needs it least, and I can read Ruby because its blocks are delimited by words and it's bad style to write long methods
https://github.com/samboy/CaulixtlaFonts/tree/main/MiscFonts...
Personally, I like them. They look pleasing and I never had issues distinguishing between the ligatures for ==, ===, and = itself.
I'm not sure however that the verb form makes all that much sense in the context the website uses it...
Ligation is (among other things) the act of applying a ligature. So it does make sense.
I don't like them because I never know what they actually stand for in ASCII.
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.
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...
[0] https://github.com/protesilaos/aporetic
I put Iosevka everywhere, not only in text editors but browsers and other desktop apps. It's one of the first things to do on a fresh machine. Thank you very much, @be5invis!
Chat history (excuse the lazily-constructed prompt): https://chatgpt.com/share/6acf829b-5428-83ec-939c-acbc7805a3...
The hookiest tail for lowercase l man, love it.
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 [0]
[0] https://font.subf.dev/en/
(I am excited to try this out)
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.
It's interesting how personal font choice (among many other things) is!
A little bit of looseness here is a pretty strong signal for careful font design actually. It means the creator considered some other factor (in this case char disambiguation) to be more important than rigid adherence to the category.
[0] https://commitmono.com/
https://github.com/be5invis/sarasa-gothic
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
[1] There was also at one point a monospace variant of Bitstream Vera Serif called “Verily Serif”.
I like it a lot!
The heading of Iosevka doesn't do the font right, my first thought was that this would be yet another soulless sans-serif. But it has tons of interesting variants. Hats of to Iosevka Etoile. See also <https://monaspace.githubnext.com> if you like big versatile font families.
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.
Lovely font.
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.
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.
The readability is excellent, and this font replaced everything else that I tried before. Highly recommended!
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.
https://github.com/be5invis/Iosevka
Some time ago I switched to wayland/sway/foot, and I'm on 0xProtoNerdFont, quite pleasant as well.
The M is 1/2 of an M wide?
https://en.wikipedia.org/wiki/Em_(typography)
it seems the width of an M should be exactly equal to the x-height in points (IIUC).
Also, whoever said that fonts intended for a terminal need to be narrower? Some terminals have narrower chars, some wider. And terminal emulators often allow for multiple char aspect ratios - e.g. via bitmap fonts of different aspect ratio.
Anyway, the typeface looks interesting, but I would have liked for the creators to compare and contrast it with existing (and popular) monospace / terminal-oriented typefaces.
https://tosche.net/fonts/comic-code