stgiga's profile picture

Published by

published

Category: Web, HTML, Tech

Unicode 16 and UnifontEX(2)

So I know I haven't posted in a while, but a lot of that is due to a computer switchover I made due to fan and battery problems.

Firstly, on February 2nd, 2024, I released an additional update to UnifontEX that adds the Microsoft CacheTT VDMX table (the program didn't want to generate an hdmx or LTSH table, but due to Android 14 that's actually desirable), a table that helps rendering on supported environments, such as Windows as well as Chromium on Windows and Linux. In the past few months after, I've ported UnifontEX to several wildly-obscure formats. I've made versions for ALL webfont formats (TTF, EOT, WOFF, WOFF2, SVG), Mac DFONT, Linux BDF and OTB, and SVGZ (the SVG version in a officially-sanctioned GZipped SVG, which if used and given a proper MIMEtype could have saved SVG webfonts). But then after all that I made WOFF3 (hypothetical TrueType inside a BWTC32Key B3K file), a CSS sheet, and then some really obscure ones. I made versions for the UCGLIB, U8G2, Adafruit_GFX, and LVGL Arduino display libraries to allow UnifontEX to be used on dot-matrix LCDs, VFDs, and OLEDs, though you most likely will have the best results code-wise if you use the LVGL or U8G2 versions. The latter needs an Arduino Portenta H7 or better, and I've provided BOTH C and binary editions of the LVGL one. Of course, the other versions exist because of varying display support amongst display libraries. The hardest to pull off would be the Adafruit_GFX version, and you'd probably need to compile it. I also made Typeface.js builds for BOTH json and js types. I also used "Font-Converter" by Github user 99Anvar99 to create a C++ version that is a C++ wrapper around the TrueType. This is a developer-tailored version. I ALSO made a DOS/V+Japanese Linux FontX2 version, for both ASCII and Japanese, as well as a PostScript Type42 version (note that this is the ONLY PostScript version I can make due to PostScript Type42 fonts literally being TrueType fonts encapsulated in a PostScript file, which is essentially the exact inverse of a CFF1 OTF. Why can't I do other PostScript types? It's because TrueType has a different em size than PostScript.)

I ALSO made a LibreCAD LFF version (which got cited on Ukrainian Wikipedia's entry for LibreCAD), which is handy if you're in the 3D sector, and the last format I made is an iOS mobileconfig version (a TrueType in a special XML that iOS can understand from iOS 7 onwards, and installing it will grant captions, as well as Pages and MSWord on iOS, the ability to use UnifontEX).

Due to OpenGameArt having an allowlist of file extensions, to distribute UnifontEX there I had to package everything into a zip or 7z. Everything uncompressed (some stuff needed to be compressed for Github) including ALL formats, the FontForge extra files, the license, README, the logo and favicon, the PNG of the favicon, the PhotoPea PSDs for the favicon and logo, some sample documents, and the FontForge SFD project file, was 863MiB (a 99-minute CD minus 7MiB). Via 7-Zip I was able to create a 50MiB 7z of everything, and a 99.51MiB zip version, which I was pleasantly surprised to see it fit in OpenGameArt, and then I made a B3K tarball for the lulz (that's on SourceForge).

I later made some HarfBuzz WebAssembly Shaper builds via ftxdumperfuser on Mac, as well as Minecraft resource pack versions to upgrade the Unicode support of pre-1.20 Minecraft by varying degrees.

Recently I was able to compile Unifont 15.1.01 as a TrueType and it lacked the overfilling Plane 2 Hanzi beyond Unifont-JP's 306 Kanji. But there's a problem: Twitter text art breaks because the stars there are fullwidth, and ALL Hangul become no longer as nerdy as 15.0.06's Hangul made by Galmuri Gothic's creator. He made them as a sort of conglomerate of Paul Hardy's handmade Hangul and the Nintendo DS Korean fonts by editing around 3 components of Paul's. Unifont 15.1 and above use less-cool Hangul. I had campaigned in 2023 for Paul to use the Serif fullwidth in both Unifont and Unifont-JP, but that was before I used UnifontEX as a UI font and then recently learned that Unifont-JP 15.0.06's fullwidth ASCII from Izumi16.bdf was, according to Izumi's maker, inspired by Univers, even though it's NOT lifted. I tried copying the Unifont 15.1-added Ideographic Description Characters into existing UnifontEX, but the problem I faced is that this made the WOFF1 file size after ttf2woff no longer a multiple of 16, meaning that obtaining the 80-byte Pokemon data Easter egg by extracting the last 5 rows of the WOFF1 in something like HxD isn't doable to get it. This same factor is also why metadata is uneditable. Also, changing the readme inflates the 7zip version, even by trimming parts. Using the only working IsFixedPitch toggle program for me had the side effect of altering the size of the post table, and the other program had the same dependencies and didn't work.
Also the 15.1 glyphs could only be added without "Preserve Cross-Font Kerning", AND it's cherry-picking.

Essentially for several factors, the February 2nd, 2024 TTF is final due to lack of a safe IsFixedPitch bit-flipper. ALL FontTools-involving methods don't work.

AND then I learned about HarfBuzz beyond-64k extensions. UnifontEX2 will use those and HarfBuzz cubic glyf to bundle stuff newer than Unifont-JP 15.0.06 and Unifont 11.0.01 Upper. Older devices will see UnifontEX's 65417 quadratic outlines and the 15.1.01 Ideographic Description Characters, but newer devices will see EVERYTHING. It's all still grafted onto the existing outlines.

On the topic of newer Unifont: Unicode 16 dropped yesterday, with all its Space Invaders, Pac-Man, Tetris, and Frogger sprite glyphs in Symbols For Legacy Computing Supplement, and Unifont 16 has those, and they're somewhat of a hybrid between Unicode's code charts and the legacy computers they came out of, with a more-generic feel compared to the relevant games, but they DO have an accurate Pac-Man ghost as the ghost emoji (UnifontEX also has this, and it's a nerd font due to it, plus the DS Hangul). Also they redrew Biang the same way I drew my 533-stroke and 1319-stroke Han characters in 16x16.

I ALSO want to standardize UnifontEX. Oh and as a side note: it turns out that UnifontEX took 10 years (June 29th or July 20th, 2014 to February 2nd 2024 for the TTF.)

I also made a Wii HBC theme version. When HarfBuzz syntax highlighting happens I want to add it.

Basically, apart from safer post table edits, as well as fixes in FontForge for BDF, OTB, and DFONT, UnifontEX is finished. The software for these fixes isn't available. FontForge also lacks HarfBuzz beyond-64k and stable large font edits. So UnifontEX2 right now is purely theoretical because the software needed to make it does not actually exist.

Here's the Plane 1 chart of Unifont 16 so you can see the Legacy Computing Supplement. It's in the middle roughly, and if you look for a Space Invader you can see it: https://unifoundry.com/pub/unifont/unifont-16.0.01/unifont_plane1-16.0.01.bmp

UnifontEX can be found at http://stgiga.github.io/UnifontEX or http://UnifontEX.sourceforge.io among other places.

Hopefully you enjoy this post!


0 Kudos

Comments

Displaying 0 of 0 comments ( View all | Add Comment )