UnifontEX: The Journey


Regarding what went right when making UnifontEX, well I would have to say that it sort of gained a following, and ultimately, it seems to be the ultimate polyglot. Also, it’s a great font to agree upon due to high glyph support and consistent shapes.

Funnily-enough, UnifontEX’s Han characters are Kanji, but Chinese people haven’t complained. Many Japanese people complain about Hanzi being used as Kanji. Oh, and the Japanese version was used due to more Han support.

It successfully avoids the Inkscape crash and actually shows up in IDEs, terminals, Winamp, and JPEXS, stuff that regular Unifont can’t do, and I’m impressed I got it to work on SO many formats not supported by upstream, most of which never were to begin with. It also works well in print and even OCR. (How about an OCR-U standard using UnifontEX perhaps? /hj). Another thing I did was account for as many renderer glitches and corner cases as possible to please every system.

I also am glad it has extreme Unicode support and works better for more sites than default Unifont, and that I successfully made versions for all webfont formats and such. Also I made it accessible.

I also threw in a Lord of The Rings Easter egg into the Sample Text field of the name table, and a Pokemon Emerald Easter egg into the WOFF1 version. Ironically WOFF1 in this font compresses FAR better than WOFF2, and that’s without Zopfli-Krzymod, which has not been ported to WOFF like regular Zopfli has.

What went wrong: Well, firstly, I ran out of room for UCSUR and CSUR glyphs around Unicode 10, and then I ran out of room for Unifont Upper versions beyond 11.0.01. I also had LOTS of trouble with AAT features so I gave up, and bitmaps break in browsers so only DFONT gets those.

Adding SVG-in-OpenType tables worked but made a large file and the text black-only, so that went out the window. Hinting was… Not fixing the issues it was intended to, and it poses a flicker risk, and later on I learned that hinting makes CacheTT output tables that make using it on Android 14 inaccessible to people who are almost completely blind like Lexi from EmKay. So hinting and its tables (including LTSH, hdmx, TTFA, cvt, fpgm, and such) go out the window too.

I also had issues with FontForge being a crashy, glitchy piece of junk, and I had issues with dyslexia on the giant glyph pool. FontForge somehow on the September 12th, 2023 version omitted tables in regular Unifont when making UnifontEX, but in December when adding JSTF it magically restored those and added extras like GDEF, accidentally fixing Winamp and JPEXS. Funnily enough, at the time, BASE and MATH tables refused to generate and destroyed quite a few tables but older FontForge didn’t. Mysteriously, in February, I repeated the same operations and the MATH and BASE tables generated fine and so did JSTF and everything else. Editing font metadata to reflect credit info did not break this.

Also, people get the font name wrong. It’s called UnifontEX. Additionally, apparently the bottom pixel on the last Plane 14 glyphs breaks in TTF2PNG unless it tries to read bitmap UnifontEX, you know, the one unusable on browsers. Also, the TTF2PNG output directly was not 1bpp, but GIMP fixed that AND made block and chunk size/count perfect for low-level decoding by sheer accident, also bypassing DEFLATE lacking random access. Also fast font revision swapping across OSes is painful.

What I learned from this project: Make something for everyone, and the world will beat a path to your door. Also, if you think someone isn’t good enough, try your hand at it and see what happens. Also, research, support, and test all corner cases, and work around stuff. Additionally, optimize everything, and be nondestructive. Also, not everyone uses Mac or Windows. Some people use Linux/BSD/Hurd (yes, I know what that is). Also, fonts don’t have to be pretty to be readable. Also, the lines of code you don’t write are just as important as the ones you do. Additionally, accessibility matters.

Also, yes, I have a metadata update coming up that doesn’t change functionality, so this is an almost-postmortem. also I turn 22 in 6 days. This project started on March 9th, 2015, so it went from middle school into my 4th year of college. I poured my soul into this 9-year project, in an almost-unfettered way. It was definitely worth it though, so that’s good.

Get UnifontEX

Leave a comment

Log in with itch.io to leave a comment.