Posted by otobrglez 13 hours ago
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.
I faintly remember about the though process of italics, but I don't remember it now. They don't look uncomfortable to me, anyway.
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.
You can start with $75 package and work your way up if you feel like you need them.
https://github.com/be5invis/PatEL
It’s a real hackers typeface.
When I asked, somebody said it fits more characters in terminals and code editors. This sounds incredibly obvious, but for whatever reason that was eye-opening for me and helped me appreciate it a lot more when I tried it again. Now I can't use anything else.
I now switched to Ioskeley Mono, which is an Iosevka configuration made to look similar to Berkeley Mono:
https://github.com/ahatem/IoskeleyMono
Either the Iosevka originals or Ioskeley are gorgeous fonts. I'm grateful to its creator.
Why is ttc better?
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 :("
These days, I try avoid them outside of makefiles.
That said, the original UNIX V7 implementation of /bin/sh didn’t distinguish different kinds of whitespace:
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
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).
Personally, I like them. They look pleasing and I never had issues distinguishing between the ligatures for ==, ===, and = itself.
https://github.com/samboy/CaulixtlaFonts/tree/main/MiscFonts...
For example, ligatures in Fira Code cannot be disabled when using the Cygwin terminal in Windows (mintty). In that application, for example, “===” looks like three continuous long lines atop each other in Fira Code, with no way to make it look like three equal signs again.
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.
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.
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'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.
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 + Ⅻ;`
I can't include an example here because VC News strips out math.
∂ₓₙ = [(₁ ⊗ ʹ) (₂ ⊗ ʹ) ( ⊗ ₁) ( ⊗ ₂)]
And last I checked, BPL is in the same boat.
(...I also find them annoying to look at, idk why)
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?
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...
https://github.com/ahatem/IoskeleyMono
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]
(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!
Chat history (excuse the lazily-constructed prompt): https://chatgpt.com/share/6acf829b-5428-83ec-939c-acbc7805a3...
This is exactly what he's talking about. It's not one-click
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)