My go version: https://github.com/BigJk/imeji
My go version: https://github.com/BigJk/imeji
Edit: nvm, confused by the libraries purpose. Thought it was primarily character based rendering focused based on the subject under discussion.
[1] https://en.wikipedia.org/wiki/List_of_8-bit_computer_hardwar...
Note: If you happen to know how to do multi-color dithering with some of these that would actually make significant improvements on some of these old picture hardware tests.
But maybe I didn't understand your real problem yet
However, for many the result is that the color choices are akin to a posterization filter in photoshop, where the nearest color is simply chosen. Often, there's actually the freedom 'available' to define a character set and choose at least a background / foreground color, with some kind of dithering pattern.
Sometimes the character set that can be defined is limited, so it has to be chosen carefully. Yet there's improvement from a 'large blobs of color' poster result to a smooth dither tone change.
The problem with the quantization result, is it just snaps to the 'nearest'. So even for relatively large areas of slowly gradiating color, if you only have one 'nearby' color, everything inbetween just snaps to that single color choice. You might have red, with slowly increasing green / yellow, yet it will always just snap to solid red.
This example from the Vic-20 kind of shows that issue. Large areas where it posterizes severely.
https://upload.wikimedia.org/wikipedia/commons/3/32/Screen_c...
Dithering suggested is something like this (greyscale example) except with choosable foreground / background (maybe 3-4, although less frequently)
https://araesmojo-eng.github.io/images/GreyScale_Dithering.p...
This example from the Vic-20 game Tutankarman shows that kind of approach. Varying amounts of dither and color used in dithing give the impression of changing skin tones.
https://www.neilhuggett.com/vic20/tutankarman03.png
They're both the Vic-20