For those fortunate enough to remain blissfully unaware of «nerd fonts», I define them as:
nerd font — n. A font which has spliced¹ into a release² of a free software font project a set of standardized³ glyphs which are mostly used by those seen as “nerds” and not the general population of the font's users. .
- Likely poorly.
- Likely an outdated release.
- Not really. In practice decided by Ryan McIntyre. I don't have any issue with Ryan, but I don't think his solution is very elegant at all (or elegent at all) and so this is written as technical criticism, any humor is just to make this text not boring. I believe McIntyre did the best he could with what existed presuming he was not willing to take the radical steps I will herein propose.
Nerd fonts cause all sorts of harms that I'm beyond considering and into proclaiming:
- Nerd fonts break without warning. If you launch someone's fancy shell application, it breaks. If you don't know what they are, bless you for your ignorance, how do you know what's wrong? Only by reading it somewhere.
- If you use a monospaced font that few use, it's likely there's no good «nerd» font for it. Or, that font is old, in both ways: the version of the font itself is old, as is the version of the semi-standardized glyph set it contains.¹ Applications break.
- If you develop fonts, McIntyre's chosen PUA space¹ often collides with your glyphs. This can lead to fallback issues causing breakage even when you have multiple “nerd” fonts installed.
- If you design monospace fonts, people complain about the Nerd Fonts Project's version of your font and not your actual font, yet naturally, being users, still expect you to fix it.
Down with nerd fonts.
OK, now that I've said that, here is my proposal:
Just extend the terminal emulator!
kitty
, the best terminal emulator currently available, already sends images. In January of 2020, I suggested we let apps
send fonts too. While at the time Kovid Goyal rejected this (see kovidgoyal/kitty№2259)
I will be bringing this back up for discussion in that same issue after I post this thread. (Edited 2023-03-08 14:39:15Z: We've come to a consensus and I'm writing a full proposal for inclusion into Kitty which will be forthcoming.)
I'm happy to do some of the work on this. And we mustn't all stop using nerd fonts right away, no, rather, it will be a slow (and likely painful) process of change, but it's one that is worth it because the current situation is just ridiculous.
If the Nerd Fonts PUA space was shifted from touching the U+E000..U+F8FF main range into the code points on Planes 15 and 16: U+F0000..U+FFFFD and U+100000..U+10FFFD, would that be better? I'm trying to collect into my personal Nerd Fonts patch all the semigraphics characters I can find for nostalgic reasons, and am thinking of using a higher range that starts after U+F8FF with an unused block for a future relocated Nerd Fonts then adding the semigraphics characters. What I really hope for more longer-term is more broad Sixel support in terminals, so I can represent the semigraphics as sequences of Sixel characters instead of Unicode glyphs.