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 !
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.
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/
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.
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. (I’m on the Berkeley ship and there are flaws in Iosevka that would see me select Monaco over it, but I’m also a fan of For Science™.)
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.
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..
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.
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.
Considering the way `/bin/sh` had a bunch of different implementations before POSIX standardization minimized that in the mid-1990s, I wouldn’t be surprised if one of those distinguished spaces from tabs.
That said, the original UNIX V7 implementation of /bin/sh didn’t distinguish different kinds of whitespace:
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'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.
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 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.
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 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
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.
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!
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. :/
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.
Mostly it strips out ‘math variable names that jerks would use to embolden their spam headlines for emphasis’, which is indeed annoying and results in this:
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.
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)
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.
It is common knowledge among most - if not all - civilizations that you do, in fact, need to learn to read in order to know how to read.
Anyway, since you want a direct representation of the text - presumably, you configured your editor to render EOL sequences explicitly, to distinguish tabs from spaces, etc?
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.
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.
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.
The default spacing is too narrow for my liking but what's really cool is in the amount of customization that's possible, including lookalikes of some popular paid programming fonts (I'm partial to Iosvmata).
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.
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!
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
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!
I have been using a union of Iosevka for most characters and Source Han Sans for CJK characters called Sarasa Gothic[0] for my roguelike (HexWalker)[1]. Iosevka's narrow characters are what originally inspired me to do it. Two Iosevka half-width glyphs literally form a square in the terminal, and if off-set by one characters, can be used to emulate a pointy-side up hexgrid in the terminal. In the end my love for the Iosevka letter shapes made me build HexWalker for the web, because it is easier to set custom fonts there than in the terminal.
If you want to use Iosevka on your webpage there is a variant on google fonts called Iosevka Charon[2] that is really easy to use.
Personally, I use filtered version of Iosevka that just contains the characters and variants I need for my personal website. For HexWalker I filter Sarasa Term to the characters I used, which takes it down to 42kb from 50mb+.
Iosevka is one of those fonts you can tell has had so much work put into it over the years. It is so customizable and works in a lot of contexts, although it’s a little narrow to code in for my taste. I’ve really liked Junicode (serif) for the same reason. Lots of customization options and care in the details.
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.
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).
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
The font looks pretty good, and its compactness seems promising. But with my low screen resolution and high-contrast color scheme, it starts to strain my eyes when reading large blocks of text.
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.
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.)
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
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.
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.
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.
It was such an interesting font that when I saw another font "Ioskeley Mono", I decided to customize it myself: https://github.com/ferronweb/iron-mono :)
For me, Iosevka will always be the one that worked. It got me to abandon bitmap fonts.
Iosevka, a proper fontconfig, and this value `export FREETYPE_PROPERTIES="cff:no-stem-darkening=0 autofitter:no-stem-darkening=0"` are all I ever needed.
I can't say precisely, but it fixed a lot of the blurring and bad rendering in general for me. I found it in a couple articles mentioning it, this is one: https://blog.aktsbot.in/no-more-blurry-fonts.html
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.
> 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.
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?
Fonts from Google have been bland and monotonous. The only nice font that Google released is Spectral(from France), but it is a proportional serif font.
I fell in love with the narrow width of Iosevka which saved quite a bit of screen space for other things. Although there are always some people that loathe whenever I post screenshots of code using the font, "the m looks like a solid block of pixels" and the like.
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.
I've been using Iosevka for years now, it's definitely one of my favorites. What I enjoy the most is that it's narrow, so I can cram more data per line.
I use both the standard/fixed versions and Aile and Etoile for UI.
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’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”.
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.
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.
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!
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.
I don't think LLMs are ever going to take off in the coding space. Even the largest proponents of it have quit due to the exceptionally bad code quality.
The only place it works is dumb boilerplate generation (ie, a smarter replacement for templates), but the real fix for that is just jettisoning languages that beat you to death with boilerplate; its 2026, stop using C++ and Java.
I've extensively tried every LLM model, commercial or not, and for real languages like Rust or Zig, they perform poorly, and for footgun-laden languages like C++ or Java or Python, it just hands you the footgun and helps you aim the thing.
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.
The part you'd all be interested is the table at the bottom: ideal font size to get the most out of your favorite code font, but also ordered by font size (for maximum code density on screen while still being readable).
Even though vector fonts are, well, vectors and not bitmaps, they often are fuzzy or misshapen at some sizes. The only way to objectively judge a font is to view it at it's best. Some fonts are objectively bad.
Iosevka is my daily driver, but not the most dense font on the list.
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!
Possibly something similar to GitHub Monaspace's "texture healing" [1], i.e. variable-width characters individually centered on a fixed grid, for which e.g. an "m" is wider when placed next to an "i"?
...or maybe something much less sophisticated: it just keeps the appearance of the main fixed-width variant you'd use for code, but it's a slightly-variable width variant for plain text, where vertical alignment isn't important.
It's a very good font for me because I care very much about density. Iosevka is by far the highest horizontal density I've ever used. However I have usually fallen back to Consolas, which IMHO the greatest monospace font ever made. The density is very high and it is very readable. There is no doubt that Iosevka is more attractive, but for some reason Consolas "feels" better at similar density.
But let's look at the font used here on HN. Sure, it's monospace, but it's not particularly thin. Mx ... the x-height is pretty close the em-width. So that quote should probably read "for our idea of typical serif fonts".
The SS08 version is influenced heavily by it, but Pragmata is quite horizontally squished I find. Iosevka had a bit more space vertically between the lines.
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
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
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.
Iosevka, my absolutely most loved font for years!
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 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.
[0]: https://usgraphics.com/products/berkeley-mono
Here's an Iosevka config that mimics Berkeley Mono for those who don't want to or can't pay money for it. https://ahatem.github.io/IoskeleyMono/
Wow. Imitation is the sincerest form of flattery, indeed.
Wow. So Gorgeous ! Thanks for sharing this
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 !
Fair enough. With super-compiler add-on, I believe you can adjust the angle of the italics.
I faintly remember about the though process of italics, but I don't remember it now. They don't look uncomfortable to me, anyway.
Looks like the daisywheel typeface that one of the old ACT Sirius Ones at my dad's old work used to use.
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.
wow i love it! 225 bucks for a font though is bonkers
I first bought it for $75, then the updates came. I also got them when they came out, but I don't remember the price.
You can start with $75 package and work your way up if you feel like you need them.
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/
What am I missing: here it lists as SIL OFL [0]
[0] https://www.programmingfonts.org/#iosevka
They're referring to Berkeley, not Iosevka.
Thanks! Should have read more carefully. To make things more confusing there seems to be IoskeleyMono as free alternative btw [0]
[0] https://github.com/ahatem/IoskeleyMono
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.
A huge helping of praise gets lumped onto Iosevka, from me, for the way it is defined in a custom S-expression DSL.
https://github.com/be5invis/PatEL
It’s a real hackers typeface.
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. (I’m on the Berkeley ship and there are flaws in Iosevka that would see me select Monaco over it, but I’m also a fan of For Science™.)
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.
Jetbrains Mono Thin and Roboto Condensed make an excellent pair.
Truth is it requires getting used to, I don't even notice it's narrow anymore, but it was so painful throughout the first day
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.
Give it a week
Iosevka and its family are a true masterpiece. I used it as my main primary monospaced font since it's so clean and pleasing to the eye.
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.
I love it as I can customize it to match the metrics and weights of my main font on web pages. See here for me: https://github.com/vincentbernat/vincent.bernat.ch/blob/main....
Same, I went from being die hard Terminus fan to this. Been a long time daily driver.
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.
> ttf (or better yet, ttc)
Why is ttc better?
It's a package of ttfs, simpler to have all in one file on disk as well as install from one. Customization can generate a lot of font varieties.
That explains all of the .ptl source files, which I didn't recognize straightaway.
Would be curious to see your custom version
Here you go:
https://pastebin.com/WwYY0QqX
Copy and paste into Import Configuration at https://typeof.net/Iosevka/customizer to preview.
Testing whether I am shadow-banned. If you see this message, could you just acknowledge the same?
I see you, my friend!
Thank you! Being shadow-banned is worse than being banned :D.
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 also remember old school bourne shell wanting tabs in some places (case statements?), but bash doesn't have that issue.
These days, I try avoid them outside of makefiles.
Considering the way `/bin/sh` had a bunch of different implementations before POSIX standardization minimized that in the mid-1990s, I wouldn’t be surprised if one of those distinguished spaces from tabs.
That said, the original UNIX V7 implementation of /bin/sh didn’t distinguish different kinds of whitespace:
https://www.in-ulm.de/~mascheck/bourne/v7/
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).
I'm still in the "tabs for indentation, spaces for alignment" camp. If you adhere to it, it makes your code look nice on any tab size.
Typing formulas in Excel
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
Agreed, four is optimal and has luckily been the standard in projects I’ve worked in. Encourages you to avoid deep nesting as well.
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.
> "understand the debate between spaces vs tabs"
The reason spaces won is that it's not (spaces) vs (tabs), it's (spaces) vs (tabs AND spaces).
Oh, for Pete’s sake. The bodies from this holy war are barely cool…
They don't detract from readability for me, so it's just pretty symbols = me more happy
Common complaint.
Personally, I like them. They look pleasing and I never had issues distinguishing between the ligatures for ==, ===, and = itself.
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 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.
https://github.com/samboy/CaulixtlaFonts/tree/main/MiscFonts...
Can't you just use the font feature flags?
In a lot of places, no.
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.
Isn't FiraCode without the ligatures just FiraMono?
https://en.wikipedia.org/wiki/Fira_(typeface)
There are some notable improvements, most visibly the slash in 0.
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.
Fair enough
I logged into HN to upvote your comment. Code Ligations are an absolute abomination.
I like them and use them. But every editor I worked with has an option to disable ligatures.
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
Ligatures suck. That's what Iosevka Fixed is for.
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.
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!
[0] https://rubjo.github.io/victor-mono#ligatures
ligatures, not ligations
I have no idea why they chose 'ligation' instead of just ligature, but it was jarring every time I encountered it.
Interestingly, they are called ligations on the submitted website
"ligation" is the verb-form (i.e. making something with/into ligatures).
I'm not sure however that the verb form makes all that much sense in the context the website uses it...
English is great at exceptions, but I'm nearly sure anything ending in -ation is a noun. Ligation certainly is.
Ligation is (among other things) the act of applying a ligature. So it does make sense.
Yes, technically it is a deverbal noun, but I couldn't put my finger on that term at the time
Ration can be a verb.
This is brought up in every single thread about fonts that have code ligatures. So no, of course it isn't just you.
I love them. I suppose it's personal preference
Yeah, Unicode shipped 35 years ago. If you want a ≠ then use a ≠.
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. :/
Then you just need a programming language that accepts ≠ as a synonym of !=. But who knows, maybe there is already one?
Rakulang has you covered.
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
Julia example: https://juliamono.netlify.app/#fnref:zscode
I can't include an example here because VC News strips out math.
Mostly it strips out ‘math variable names that jerks would use to embolden their spam headlines for emphasis’, which is indeed annoying and results in this:
∂ₓₙ = [(₁ ⊗ ʹ) (₂ ⊗ ʹ) ( ⊗ ₁) ( ⊗ ₂)]
And last I checked, BPL is in the same boat.
Or just pipe your source through a sed script that replaces one with the other before compiling/running.
Yes, but why?
But languages are made by older or less progressive people, so of course you can't use ≠ Unicode in your language enforcing ascii
The 'fixed' variant disables 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.
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 hate them. I disable them in every code editor. I don't need to have to guess if it's a double equals or a triple equals
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.
The job of a font is to show me the text as it actually is. I shouldn't need to use a "skill" to decode what I'm looking at.
It is common knowledge among most - if not all - civilizations that you do, in fact, need to learn to read in order to know how to read.
Anyway, since you want a direct representation of the text - presumably, you configured your editor to render EOL sequences explicitly, to distinguish tabs from spaces, etc?
It's not only you.
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.
They’re “lying” as much as any other character is “lying”.
Care to elaborate? I don’t see what you mean at all.
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.
[1]: https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/A...
I was wondering why it did that. This is really the kind of site where this is not a feature you should use.
Funny. Last I heard everyone wanted to specifically prevent the behavior of showing unstyled content before assets are loaded.
I had thought that was an intentional animation to show the different weights and variants
On my iPad, I’m pretty sure Fira Code and IBM Plex in the example box are displaying as Courier. They’re certainly both identical.
was also confused...
Inconsolata is the one true font.
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.
Another great customizable font is Maple Mono [0]
[0] https://font.subf.dev/en/
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.
Sometimes I catch myself assuming hacker news is representative of the general population and then I read comments like these
(I am excited to try this out)
The default spacing is too narrow for my liking but what's really cool is in the amount of customization that's possible, including lookalikes of some popular paid programming fonts (I'm partial to Iosvmata).
https://github.com/ahatem/IoskeleyMono
https://github.com/shytikov/pragmasevka
https://github.com/N-R-K/Iosvmata
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.
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!
Exactly the same for me! I love it for the terminal especially
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
Well, I was able to do it fairly simply online via github actions with the help of chatgpt.
Chat history (excuse the lazily-constructed prompt): https://chatgpt.com/share/6acf829b-5428-83ec-939c-acbc7805a3...
> fairly simply online via github actions with the help of chatgpt
This is exactly what he's talking about. It's not one-click
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!
Related:
Iosevka typeface for code, from code - https://news.ycombinator.com/item?id=36785409 - July 2023 (76 comments)
Iosevka – Versatile typeface for code, from code - https://news.ycombinator.com/item?id=30014796 - Jan 2022 (36 comments)
Iosevka, Version 3.0.0 - https://news.ycombinator.com/item?id=23230929 - May 2020 (40 comments)
Iosevka – A Typeface for Code, from Code - https://news.ycombinator.com/item?id=14009963 - April 2017 (122 comments)
Show HN: Iosevka Open Source Programming Typeface - https://news.ycombinator.com/item?id=9951989 - July 2015 (27 comments)
(Reposts are fine after a year or so; links to past threads are just to satisfy extra-curious readers)
I have been using a union of Iosevka for most characters and Source Han Sans for CJK characters called Sarasa Gothic[0] for my roguelike (HexWalker)[1]. Iosevka's narrow characters are what originally inspired me to do it. Two Iosevka half-width glyphs literally form a square in the terminal, and if off-set by one characters, can be used to emulate a pointy-side up hexgrid in the terminal. In the end my love for the Iosevka letter shapes made me build HexWalker for the web, because it is easier to set custom fonts there than in the terminal.
If you want to use Iosevka on your webpage there is a variant on google fonts called Iosevka Charon[2] that is really easy to use.
Personally, I use filtered version of Iosevka that just contains the characters and variants I need for my personal website. For HexWalker I filter Sarasa Term to the characters I used, which takes it down to 42kb from 50mb+.
[0] https://github.com/be5invis/sarasa-gothic
[1] https://ytirnity.com/games/hexwalker
[2] https://fonts.google.com/specimen/Iosevka+Charon
Iosevka is one of those fonts you can tell has had so much work put into it over the years. It is so customizable and works in a lot of contexts, although it’s a little narrow to code in for my taste. I’ve really liked Junicode (serif) for the same reason. Lots of customization options and care in the details.
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.
[0] https://github.com/protesilaos/aporetic
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.
[0] https://commitmono.com/
The font might be nice, but that website makes it exceptionally hard to read, so I can’t really say.
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).
Iosevka is also available in Nerd Fonts. https://www.nerdfonts.com/#features
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
Are we in a font renaissance?
Why are there so many new awesome projects like this?
I'm not complaining, just trying to understand what drives the creation of open source fonts.
This project is over a decade old fyi
It is almost like there is a cool new technology that makes shipping projects faster.
Iosevka is very old
I adhered to and finished out my tech career with APL385:
https://apl385.com/fonts/
…IBM Plex and Iosevka were in the running, but the subtle “Comic Sans” effect of the APL font make the code easier to scan, subjectively speaking.
The font looks pretty good, and its compactness seems promising. But with my low screen resolution and high-contrast color scheme, it starts to strain my eyes when reading large blocks of text.
I tried various fonts and settled on Martian Mono VF (https://github.com/evilmartians/mono). At a width of 0.6, it’s quite comfortable to read.
To be very honest: this hurts my eyes
Maybe it's because I'm just too used to DejaVu Sans Mono Book, but I couldn't use this as a daily driver at all.
Luckily we can all have our terminals the way we want :)
Why is it called sans-serif when there is serif on i j etc?
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.
Or, to put it in a way that doesn’t make you sound like a complete ass: serif characters are the exception, so this is considered a sans-serif font.
It's a nice font but the nix package constantly gets reupdated and forces a new build instead of going through binary caches for some reason.
I uninstalled it specifically because it was slowing down my updates and builds
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.)
I like it a lot!
Took them long enough to change!
Both Inter and Iosevka are gorgeous fonts.
Cantarell was so, so ugly.
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.
Thanks, I couldn’t spot a license on the website, but existence of an arch package does probably mean the license is okayish.
Go and read the source code on the GitHub repository that the page links to as "Downloads". There's a LICENSE.md there, and a fair amount besides.
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
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
or drop the releases and go to just https://github.com/be5invis/Iosevka where LICENSE.md file shows up.
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!
In that direction there's
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
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.
Berkeley Mono ruined everything else for me. It’s so, so good.
While I appreciate it's aesthetic, it's too blocky for my personal taste
I was looking forward to their new one (houston something?) for a couple years but seems all reference to it on their website has been removed.
Shame.
Way too wide for me, plus as others mentioned you can get really close with Iosevka, but for free.
You meant Pragmata Pro :)
There's a lot to like about Pragmata Pro, but I'll never use a terminal font that isn't OFL.
why tho, berkeley mono ftw.
There is an iosekeley remix that is nice as well for those who don’t want to splash out for Berkeley mono
I'm partial to Gintronic personally
I use Commit Mono, which is basically a free version of Berkeley Mono
What's the origin of the name?
Any time I point font-seekers to Iosevka's Repo, I never hear from them again. Surely that's a testament to the quality of treatment.
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.
But have you tried Comic Sans Mono?
M PLUS Code https://mplusfonts.github.io/
The most underrated font ever.
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.
It was such an interesting font that when I saw another font "Ioskeley Mono", I decided to customize it myself: https://github.com/ferronweb/iron-mono :)
I love all kinds of monospace fonts, there's just so much you can do with a fixed width font!
My personal daily drivers are SF Mono and Berkeley Mono.
For me, Iosevka will always be the one that worked. It got me to abandon bitmap fonts.
Iosevka, a proper fontconfig, and this value `export FREETYPE_PROPERTIES="cff:no-stem-darkening=0 autofitter:no-stem-darkening=0"` are all I ever needed.
What does that setting do?
I can't say precisely, but it fixed a lot of the blurring and bad rendering in general for me. I found it in a couple articles mentioning it, this is one: https://blog.aktsbot.in/no-more-blurry-fonts.html
"glyphs are exactly 1/2em wide". whut. 1em is the width of the M character. glyphs are exactly 1 em wide, they just happen to have a slim m.
A more useful definition of an em is the nominal font height.
If you are looking for Iosevka with CJK characters, check out Sarasa Gothic.
https://github.com/be5invis/sarasa-gothic
Wish code editors would support different fonts per semantic region. Jetbrains, if you are reading this, implement this: <https://youtrack.jetbrains.com/issue/IJPL-29552/Allow-differ...>.
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.
> 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.
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?
Actually, I hate it. zero is not crossed, right?
Fonts from Google have been bland and monotonous. The only nice font that Google released is Spectral(from France), but it is a proportional serif font.
I fell in love with the narrow width of Iosevka which saved quite a bit of screen space for other things. Although there are always some people that loathe whenever I post screenshots of code using the font, "the m looks like a solid block of pixels" and the like.
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.
Yeah, IBM Plex Mono is near flawless imo
I've been using Iosevka for years now, it's definitely one of my favorites. What I enjoy the most is that it's narrow, so I can cram more data per line.
I use both the standard/fixed versions and Aile and Etoile for UI.
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.
Iosevka can perfectly be either sans-serif, or serif, or a mixture - it's customizable.
Iosevka is more of a parfois-serif I guess.
Slab serif is optional.
Where do you see the serifs?
...In the submitted Title and on the page itself. It says it is a sans-serif font, but then offers also a slab-serif variant.
How does the existence of a serif variant change anything about the original sans-serif font not having serifs?
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".
Impressive. Very nice. Let's see Paul Allen's font...
I really dislike how narrow it is. Fortunately that is customizable! This is my version that I’ve modeled off of Input Mono: https://codeberg.org/ashton314/iosevka-output
For those not aware, Iosevka is the font that gives you perfec vertical alignment in monospace tables/flowcharts with CJK/emojis.
Got introduced to Iosevka through watching Tsoding. Really cool coding font.
Whenever I read it I hear his voice pronounce the name of it in my mind. What a delight.
meta: if you are a heretic like me, use a proportional coding font. (in 2026 we can move past 80-column terminal style coding)
for this, i like Input Sans a lot.
https://input.djr.com/
Have you seen the newer variable demo? https://typeset.djr.com/?ff=input&l=1.362&u=px&s=20&c=85a44d...
Thanks for the link!
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”.
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.
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.
11 years old. Congratulations!
https://news.ycombinator.com/item?id=9951989
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!
Although this may not apply to many, Iosevka is one of the few monospace fonts with excellent support for polytonic Greek.
I ve been using iosevka for 5+ years. Iosevka Extended is my go-t mono font. It's just clean and cool.
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.
Nice that it's specifically designed to be narrow columns, so you can fit more on screen. Will try this for coding.
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.
That's still Iosevka though, just a custom build.
Beautiful font! Only problem is people are not writing code by hand anymore.
I don't think LLMs are ever going to take off in the coding space. Even the largest proponents of it have quit due to the exceptionally bad code quality.
The only place it works is dumb boilerplate generation (ie, a smarter replacement for templates), but the real fix for that is just jettisoning languages that beat you to death with boilerplate; its 2026, stop using C++ and Java.
I've extensively tried every LLM model, commercial or not, and for real languages like Rust or Zig, they perform poorly, and for footgun-laden languages like C++ or Java or Python, it just hands you the footgun and helps you aim the thing.
> I don't think LLMs are ever going to take off in the coding space
Are you living under a rock? o_o
To quote myself and what I just said: "Even the largest proponents of it have quit due to the exceptionally bad code quality."
I am very much paying attention to the current state of LLM acceptance.
I’m still not sure what to think of their capabilities, so I’m curious to see where ambitious vibe-coded projects like Raku++ [1] will go.
[1] https://github.com/ash/rakupp/
Sure buddy
This is such a good font. I like how the process used to make it takes inspiration from Donald Knuth's Metafont.
Nice but I still prefer JuliaMono.
My personal favorite. Very underrated font, judging by this thread.
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.
Same here. There are several pictures on the github page:
https://github.com/be5invis/Iosevka
As a reminder, my manifesto: https://github.com/Diablo-D3/dotfiles/blob/master/fontsizes....
The part you'd all be interested is the table at the bottom: ideal font size to get the most out of your favorite code font, but also ordered by font size (for maximum code density on screen while still being readable).
Even though vector fonts are, well, vectors and not bitmaps, they often are fuzzy or misshapen at some sizes. The only way to objectively judge a font is to view it at it's best. Some fonts are objectively bad.
Iosevka is my daily driver, but not the most dense font on the list.
How did I not know this until today? it's so beautiful, thanks so much!
On iOS, Firefox the text on the page overlaps in places.
Nice one. I used it for some years, mostly in urxvt.
Some time ago I switched to wayland/sway/foot, and I'm on 0xProtoNerdFont, quite pleasant as well.
Have been using this in my terminal, editors, and books for a few years.
Lovely font.
Truly the GOAT font. Nothing else compares.
Great font! Requires some getting-used-to but saves a lot of screen space!
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!
What does “quasi-proportional” mean?
Possibly something similar to GitHub Monaspace's "texture healing" [1], i.e. variable-width characters individually centered on a fixed grid, for which e.g. an "m" is wider when placed next to an "i"?
...or maybe something much less sophisticated: it just keeps the appearance of the main fixed-width variant you'd use for code, but it's a slightly-variable width variant for plain text, where vertical alignment isn't important.
[1] https://github.com/githubnext/monaspace#texture-healing
I had this question. Then I read the bit of the page with the sentence that starts ‘The quasi-proportional families:’
Why is this at the top of hackernews?
Because it’s Hacker News.
I know it’s not all that common, but I still really like Gintronic
It's a very good font for me because I care very much about density. Iosevka is by far the highest horizontal density I've ever used. However I have usually fallen back to Consolas, which IMHO the greatest monospace font ever made. The density is very high and it is very readable. There is no doubt that Iosevka is more attractive, but for some reason Consolas "feels" better at similar density.
> "glyphs are exactly 1/2em wide"
The M is 1/2 of an M wide?
Yes. That is, for a given x-height, the width of an 'M' half of what it "should" be for that x-height. According to this:
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).
> However, as a very rough guideline, an "average" font might have [...] an x-height of 48% of the em
I guess I somehow skipped that, sorry T_T
But let's look at the font used here on HN. Sure, it's monospace, but it's not particularly thin. Mx ... the x-height is pretty close the em-width. So that quote should probably read "for our idea of typical serif fonts".
Victor Mono still the best for dense terminals
Iosevka Fixed Curly is also my favorite font to code and terminal in.
This is really cool looking but it is really heavy on filesize. How did we get from few KBs to hundreds of MB this quickly these past few years?
Mostly codepoint coverage.
InconsolataGo is all that is needed
I've been using Iosevka(custom) and loved it since then.
the font never worked right for me. the variants were not recognized in vscode
Buy the original PragmataPro and support original creators. The rest are ripoffs, plain and simpls, copied by leeches.
Can you elaborate? Are you saying iosevka is a PragmataPro ripoff?
The SS08 version is influenced heavily by it, but Pragmata is quite horizontally squished I find. Iosevka had a bit more space vertically between the lines.
Yes, because it is.
Support independent devs and designers. Pay the money.
So can you elaborate instead of just repeating what the other commenter said?
This set of fonts takes up 2.4 GB (yes, that's Giga, not Mega) bytes when you download the release. Each one is over 50 MB in size.
Iosevka has supplanted Envy Code R as my favorite monospace editor font.
I prefer Pragmasevka
Really awesome. Glad it is being open sourced
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.
Scroll down to where they do that under Spatial Efficient.
You can pry my PragmataPro license from my cold, dead hands.
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
Does tsoding use this font?
Yup! Some examples: https://github.com/rexim/dotfiles/blob/6d5c9213c0bbf30bafd7c... and https://github.com/tsoding/panim/tree/main/assets/fonts
Victor Mono, I believe.
I believe so.
yes
I occasionally try to find a nicer font than Iosevka, but none of them stick and I always go back.
Comic Code ;) You won't regret it, been using it 5 years.
https://tosche.net/fonts/comic-code
Pragmata Pro. The font Iosevka is based on.
Interesting cycle, someone making Iosevka more pragmatapro like here: https://github.com/shytikov/pragmasevka
I've replaced Iosevka with Nokia Sans on KDE and earlier Xfce
input.djr.com, haven't used a different font in many years!
What about Maple Mono?
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
love Maple Mono!
Was a user, its a really nice font. Then i found Berkeley Mono, that has been the daily deiver for the past 5-6 years.
oh thats a good one!
looks amazing
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.
Maybe read again? The font variants are 50 MB, not 500. That seems like an average size for a font with such broad language support.
My build is about 16mb.
It's a google score thing right. That the first font that loads is not their font on a font page?
Used this font for years, even made my own custom build for it because the many many many provided ones were not just quite right for my preference.
These days I'm using Maple Mono though.