Bitmap fonts make computers feel like computers again (korigamik.dev)

by speckx 85 comments 111 points
Read article View on HN

85 comments

[−] cladopa 36d ago
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.

[−] TacticalCoder 36d ago

> 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.

[−] susam 36d ago
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].

[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

[−] tracker1 35d ago
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.

https://bbs-land.github.io/webterm-dos-ansi/

[−] jamiejquinn 36d ago
Absolutely sublime attention to detail. Reminds me of the series on fonts in Josh Ge's blog on Cogmind (https://www.gridsagegames.com/blog/2014/09/cogmind-fonts/)
[−] UI_at_80x24 36d ago
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!)
[−] Lammy 36d ago
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:

- https://blogs.gnome.org/mclasen/2019/05/25/pango-future-dire...

- https://gitlab.gnome.org/GNOME/pango/-/issues/386

[−] snvzz 36d ago
I stopped using GNOME at that point, over this.
[−] VorpalWay 36d ago
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.

[−] noisem4ker 36d ago
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.

[−] cmdrk 36d ago
100% the same problem here.

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?

[−] kps 36d ago
This is like the (fortunately brief) fad of ‘shabby chic’ — it's a signal that you've never had to suffer the real thing.
[−] addycb 36d ago
Ai writing
[−] 0907 36d ago
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.
[−] CodesInChaos 36d ago
Why is Greybeard listed as "License: Custom, double-check before reuse" when the LICENSE file in the repo is MIT?
[−] 6thbit 36d ago
I'm good with my Iosevka ExtraLight with iTerm2's thin strokes enabled.

But the bitmaps do make me nostalgic, maybe useful to read my own old code and cringe a little less.

[−] beej71 35d ago
A little weird, but lately I've found myself craving lower-res monitors with chunky pixels. I think maybe I'm just nostalgic in my older age. :D
[−] enriquto 36d ago
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.

[0] https://people.mpi-inf.mpg.de/~uwe/misc/uw-ttyp0/

[−] agumonkey 36d ago
I often question myself on why the aesthetics of personal computing were so special our brains that it sticks to this day.
[−] crazygringo 36d ago

>

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.

[−] LocalH 35d ago
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.
[−] tommica 36d ago
Well written article, a great eye opener. I did not at all consider the bitmap fonts in context of aesthetics, which is such an oversight.

The fonts presented do look amazing, so absolutely will ck figure my terminal with one of them.

[−] CarVac 36d ago
I made a bitmap font for the PhobGCC project for use in its video output but I don't know how to make it into a bitmap font for use on computers.
[−] KronisLV 36d ago
Can confirm that Terminus is pretty nice, used it as my main programming font for a little bit, before moving over to Iosevka!
[−] pb060 35d ago
I like to flirt with new fonts every now and then but for me all roads lead to Monaco.
[−] jibal 36d ago
Glad I have a good font in my browser to read such nonsense.
[−] zeckalpha 36d ago
Yet the article is not using a bitmap font
[−] sssilver 36d ago

> Not because they are retro.

> Because they still work.

I find this writing style so viscerally infuriating.

[−] Animats 36d ago
Sometimes I think all the HN "get off my lawn" postings need to be moved to another site.
[−] nice_byte 36d ago
ai slop
[−] vdelpuerto 36d ago
[flagged]