(Blitting unicode glyphs to screen is not hard or slow; In this project, the glyph rendering code turned into spaghetti to save on space. Cleaner rendering code is possible if using uncompressed bitmap fonts. If there is a concern about size on disk, you could only install the codepages needed for a given locale? But then again, unless you include the various pages of Chinese characters, we're still talking no more than a few hundred K to store all of Unicode as a bitmap font. True, handling combining modifiers probably would increase binary size and maintenance costs, but again... if it fits on an Arduino it's probably OK for the desktop. And if you're already OK with not supporting unicode, you're probably OK with supporting most of unicode except combining modifiers.)
What about l-r vs r-l text? What about mixtures of l-r and r-l in the same document?
Supporting Unicode half-assed may be relatively easy. Supporting it properly is hard, and requires a team of experts. I doubt even John Cowan is enough an expert in all the fiddly little corner cases to do it all himself.
But you still have to do it.
Thankfully, there is libpango and libharfbuzz, which take care of many of these details for you.
https://crawlingrobotfortress.blogspot.com/2021/10/semigraph...
(Blitting unicode glyphs to screen is not hard or slow; In this project, the glyph rendering code turned into spaghetti to save on space. Cleaner rendering code is possible if using uncompressed bitmap fonts. If there is a concern about size on disk, you could only install the codepages needed for a given locale? But then again, unless you include the various pages of Chinese characters, we're still talking no more than a few hundred K to store all of Unicode as a bitmap font. True, handling combining modifiers probably would increase binary size and maintenance costs, but again... if it fits on an Arduino it's probably OK for the desktop. And if you're already OK with not supporting unicode, you're probably OK with supporting most of unicode except combining modifiers.)