I have a different opinion. I had access to real terminals when I was young and they had amazingly sharp fonts. They had hardwired optically etched fonts and were incredible. 100% smooth.
I had to work with DOS screens that were sketched to different aspect ratios and blurred and it was so painful, specially after having seen proper fonts on the screen.
One of the reasons for starting to use Linux was using high quality fonts with the terminal.
> One of the reasons for starting to use Linux was using high quality fonts with the terminal.
Yes! Speaking of Linux, I'm personally very font of Terminus.
I like it so much my main coding font is a modified, pixel-perfect (no AA at all) version of Terminus since forever (I modified a few letters like the 'l' and the 's' and took a few glyphs from a pixel-perfect Monaco font [like %, &, @ and modified those a bit too). I did it so many years ago I don't remember the process (but I've got notes about it, so I could redo it).
I'm on a (non-retina / non 4K) 38" ultra-wide display that does 3840x1600 natively (and it's the resolution I use). I love it for I can have three 1280x1600 "columns" side by side (but I'm using a tiling WM so I've got many preset layouts anyway). YMMV.
A few years ago, when I wrote my own Invaders-like game [1], I was quite unhappy with the rendering quality of the HTML Canvas fillText() method. The antialiasing introduced multiple shades of green, whereas I wanted to render the text in a solid monochrome green while the glyphs retained their crisp, jagged edges. Although canvas { image-rendering: pixelated } improved the crispness and jaggedness, it could not entirely eliminate the multiple shades of green.
I finally decided to take the matter into my own hands. I looked for IBM PC OEM fonts [2] and similar ones [3], stored the bitmaps as integer arrays within my code [2], and used them to render each character cell by cell. I am very happy with the results.
It was a childhood dream of mine to write a game like this, but I did not have sufficient access to computers as a child. So I could fulfil this dream only as an adult, a few years ago. The implementation is very simple, and everything on the canvas, including the text, is drawn using fillRect().
By the way, if you happen to do something similar, I have made all the bitmaps available as integer arrays in a separate, standalone project [5].
Note, if you're going to use the EGA 8x14 or VGA 9x16 fonts for rendering, your best bet is to also render each pixel 3 pixels wide and 4 pixels tall, then scale to your desired size... I do this, then the 50% of the scaled render looks pretty good, this corrects for the original 4:3 non-square aspect ratio of EGA and VGA level text.
I did this for my canvas renderer for BBS Ansi... Though, I need to get the next step(s) so I can start testing against a websocket based door server I'm also working on.
I loved the look of the fonts on DOS after I upgraded from a C64. My favorite was the exclamation mark on 1024x768 (VGA). It had curves! Pointy at the bottom right above the dot, and the rounded curve at the top. I've never found a monospace non-bitmapped font that had the same character. (ha!)
I am eternally annoyed at GNOME Project for, among many many other reasons, forcing the removal of bitmap font support as of Pango 1.44 due to forcing Harfbuzz as the only supported shaping library:
I use Terminus TTF for my terminal and text editor. I fully agree with their description of it as a workhorse font. The Gohu font they mention also seem interesting.
In general bitmap fonts avoid the blurryness of modern font rendering made for high DPI monitors, which fails spectacularly on low DPI monitors (which is what I still have). And blurry text give me literal headaches. And this is why I gave up on anything but bitmap fonts in recent years.
Well-hinted fonts such as Consolas are indeed very rare.
I think I've only found Liberation and Hack to appear decent on standard density display. Roboto Mono is nicely shaped but blurry. I think Noto Mono used to have hints but dropped them. It was hours spent trying out different fonts only to ultimately go back to msttcore-fonts for me.
I have to show people extremely zoomed-in screenshots of how $VENDOR default monospaced fonts get rendered compared to Terminus at the correct size in order for them to understand my pain. The hinting is just blurry bleh.
These days, because I am also old, I want a comparatively large pixel-perfect font. I've yet to find a good one but haven't looked much beyond Terminus honestly. Maybe I can render it an acceptable integer multiple without it being too large?
I've dabbled a few times in writing bitmap font parsers for both technically constrained and artistic projects. There is a reason that design has resolved to the same few cliches, because expectability, latent understanding, and 'obviousness' reduces onboarding curve and fatigue. It's a cognitive accessibility issue before you even get to legitimate accessibility concerns. Render a .F16 at anything larger than 16px in a modern application and you're introducing issues which are solved, quantitatively and qualitatively, by vector graphics and antialiasing. There's an optimistic naivety which is nice to have, but misunderstands design as a conduit for informed action vs design as an aesthetic function independent of intent is legitimately dangerous if you're doing anything other than building narrative products emulating older tech.
Conspicuously missing to this list is uwe's ttyp0 [0].
One of the few bitmap fonts (with terminus) having somewhat complete unicode support and going to very large pixel sizes, so that they are visible on modern screens with tiny pixels.
Bitmap fonts are the ones that look perfect at their intended resolution.
This seems to be the center of the author's argument.
But I prefer legibility, readability, being easy on the eye. I also prefer antialiasing for its smoothness.
Every screen I have has been Retina for a long time. I greatly appreciate that text is now as legible as it is in books. No distracting jaggies.
I don't want my computer to feel like some nostalgic 1980's computer. I just want to get my work done, which involves a lot of reading and writing, both code and non-code, which is just more legible with vector fonts on a retina screen.
At the end of the day, jaggies are a visual distraction. They're cool if you want a retro vibe that distracts and calls attention to itself for aesthetic purposes. But not for general computer usage.
I still use Amiga Topaz (depending on my mood, either the 1.x or 2/3.x variants) across multiple programs on my computer, from terminals to IDEs and text editors. I even have it set in my browser as the monospace font, which isn't perfect, but is quite nostalgic.
85 comments
I had to work with DOS screens that were sketched to different aspect ratios and blurred and it was so painful, specially after having seen proper fonts on the screen.
One of the reasons for starting to use Linux was using high quality fonts with the terminal.
> One of the reasons for starting to use Linux was using high quality fonts with the terminal.
Yes! Speaking of Linux, I'm personally very font of Terminus.
I like it so much my main coding font is a modified, pixel-perfect (no AA at all) version of Terminus since forever (I modified a few letters like the 'l' and the 's' and took a few glyphs from a pixel-perfect Monaco font [like %, &, @ and modified those a bit too). I did it so many years ago I don't remember the process (but I've got notes about it, so I could redo it).
I'm on a (non-retina / non 4K) 38" ultra-wide display that does 3840x1600 natively (and it's the resolution I use). I love it for I can have three 1280x1600 "columns" side by side (but I'm using a tiling WM so I've got many preset layouts anyway). YMMV.
canvas { image-rendering: pixelated }improved the crispness and jaggedness, it could not entirely eliminate the multiple shades of green.I finally decided to take the matter into my own hands. I looked for IBM PC OEM fonts [2] and similar ones [3], stored the bitmaps as integer arrays within my code [2], and used them to render each character cell by cell. I am very happy with the results.
It was a childhood dream of mine to write a game like this, but I did not have sufficient access to computers as a child. So I could fulfil this dream only as an adult, a few years ago. The implementation is very simple, and everything on the canvas, including the text, is drawn using fillRect().
By the way, if you happen to do something similar, I have made all the bitmaps available as integer arrays in a separate, standalone project [5].
[1] https://susam.net/invaders.html
[2] https://int10h.org/oldschool-pc-fonts/fontlist/
[3] https://www.dafont.com/modern-dos.font
[4] https://codeberg.org/susam/invaders/src/branch/main/invaders...
[5] https://codeberg.org/susam/pcface#readme
I did this for my canvas renderer for BBS Ansi... Though, I need to get the next step(s) so I can start testing against a websocket based door server I'm also working on.
https://bbs-land.github.io/webterm-dos-ansi/
- https://blogs.gnome.org/mclasen/2019/05/25/pango-future-dire...
- https://gitlab.gnome.org/GNOME/pango/-/issues/386
In general bitmap fonts avoid the blurryness of modern font rendering made for high DPI monitors, which fails spectacularly on low DPI monitors (which is what I still have). And blurry text give me literal headaches. And this is why I gave up on anything but bitmap fonts in recent years.
I think I've only found Liberation and Hack to appear decent on standard density display. Roboto Mono is nicely shaped but blurry. I think Noto Mono used to have hints but dropped them. It was hours spent trying out different fonts only to ultimately go back to msttcore-fonts for me.
I have to show people extremely zoomed-in screenshots of how $VENDOR default monospaced fonts get rendered compared to Terminus at the correct size in order for them to understand my pain. The hinting is just blurry bleh.
These days, because I am also old, I want a comparatively large pixel-perfect font. I've yet to find a good one but haven't looked much beyond Terminus honestly. Maybe I can render it an acceptable integer multiple without it being too large?
But the bitmaps do make me nostalgic, maybe useful to read my own old code and cringe a little less.
One of the few bitmap fonts (with terminus) having somewhat complete unicode support and going to very large pixel sizes, so that they are visible on modern screens with tiny pixels.
[0] https://people.mpi-inf.mpg.de/~uwe/misc/uw-ttyp0/
>
Bitmap fonts are the ones that look perfect at their intended resolution.This seems to be the center of the author's argument.
But I prefer legibility, readability, being easy on the eye. I also prefer antialiasing for its smoothness.
Every screen I have has been Retina for a long time. I greatly appreciate that text is now as legible as it is in books. No distracting jaggies.
I don't want my computer to feel like some nostalgic 1980's computer. I just want to get my work done, which involves a lot of reading and writing, both code and non-code, which is just more legible with vector fonts on a retina screen.
At the end of the day, jaggies are a visual distraction. They're cool if you want a retro vibe that distracts and calls attention to itself for aesthetic purposes. But not for general computer usage.
The fonts presented do look amazing, so absolutely will ck figure my terminal with one of them.
> Not because they are retro.
> Because they still work.
I find this writing style so viscerally infuriating.