Support for Unifont 16? (Truetype files can be generated)
Closed this issue · 5 comments
On your webpage, you mention that you used Unifont 15.0.06 because it is the "last truetype version of unifont". However, the unifont release notes say the following: "It will still be possible to manually build the TrueType fonts in the future with the "make truetype" command in the font directory. That make command is already implemented and so is available for experimentation."
Given that you can generate the TTF version of the font, is there any reason not to update this project to support the latest Unifont version, 16.0.01?
For a whole year I had not been able to compile Unifont from source across multiple computers. I recently managed to get WSL to do so. Now here's the thing: the highest possible Plane0 upgrade is Unifont 15.1.01, because 15.1.02+ integrated more Plane 2 and Plane 3 glyphs than can fit in non-HarfBuzz 65,535 glyphs. The 306 in Unifont-JP 15.0.06 fit fine, but 15.1.02 added CJK Extension I, which is over 600 glyphs, which won't fit, and that's without JP 306 and the other added Plane 2 and 3 stuff.
Unifont 15.0.06-JP not only was the end of TrueType prebuilts but it was also just before the glyph count exited certain "soft" limits (soft in HarfBuzz).
Also FontForge hated the manually-compiled TrueType enough to crash when trying to view the Unicode ranges of it, and break loading stock 15.0.06-JP from then on. (So 15.1 TrueTypes while they DO load are a memetic cognitohazard to FontForge.)
Now 15.0.06-JP in my view is visually better: it has Izumi16 Univers-inspired fullwidth (blame 2023 me for why Unifont-JP 15.1+ lacks it, long story short, I consulted with Paul Hardy on Unifont's path when they announced TrueType decommissioning, partly because I felt exhausted updating endlessly, as far back as 2022), which looks better as a UI font and isn't a homoglyph with Mathematical Monospaced in Plane 1, and Unifont 15.0.06's Hangul are Galmuri Gothic's Hangul contributed by their creator. Galmuri Gothic is inspired by the DS Korean font. Looking at UnifontEX's Hangul evokes Korean DS but is actually also partially Paul Hardy's handmade Hangul. It's no direct ripoff nor is the fullwidth.
Part of it is preference, but not all.
In Unifont 15.1.01, the authors widened the Miscellaneous Symbols stars to match the half-stars, which had a good reason, but there's collateral. XahLee's section on Twitter Unicode art features historic (~2012) Twitter art that relies on the stars being halfwidth.
So upgrading the Unifont version even by one build will break text art, one of the font's targets. (Especially given that I want it on Sharkey/etc. as a viable emoji or message font.)
I DID try and copy the 5 Ideographic Description Characters introduced in Unicode 15.1 into UnifontEX (which was not an easy thing to do due to extremely-pesky FontForge crashes), and while it DID work, the resulting WOFF1 was no longer a multiple of 16 bytes, meaning extracting the last 80 bytes of the file (an Easter egg) is harder to do in a hex editor (currently in hex editors that group in 16byte groups like HxD and I think 0xED, you can extract the Easter egg from the WOFF1 version by simply copying out the last 5 rows in case you don't have a WOFF1 decoder that understands the arbitrary-data-on-end feature probably intended for certificates beyond DSIG table powers.) I've also found that metadata edits or using FontTools on the post table will do this too. Somehow I got really lucky with the compression and most changes break that.
So for peak nerdiness in glyph style and the Easter egg in the webfont version (a Pokemon one), as well as headaches, I can't upgrade past 15.0.06-JP+11.0.01 Upper except in the HarfBuzz extension-based UnifontEX2, which isn't possible to make right now because FontForge doesn't support these extensions yet, and in fact its generations of certain legacy formats is bugged, with fixes very slow to come. Not to mention that currently FontForge is very crashy before going into glyph counts that require HarfBuzz extensions, BDF, hex, SVG, or SVGZ (and TTF2PNG because I have contact with the author and said individual is open to adding support for HarfBuzz TTFs) font formats (and derivatives that aren't PCF).
Basically, for countless technical reasons, I can't do this.
This gets a CANTFIX codetag.
UnifontEX2 will be a separate repository from this one, and will likely happen when I can generate a build unless I want to do a sort of readme-only repo. UnifontEX2 will graft everything on top of the existing UnifontEX TrueType to prevent the text art breakage mentioned earlier. No glyphs will be overwritten. Also to noncompliant renderers unaware of HarfBuzz extensions, UnifontEX2 will behave like UnifontEX. I wish that the engineers were capable of making older renderers load the extra glyphs beyond 2^16. TrueType had to be muscled to support them without breaking older renderers.
UnifontEX2 will be useful in Linux/BSD/Hurd/OpenDarwin as well as Blink, Gecko, and potentially WebKit browsers. So even Windows can have fun with this, albeit in Edge.
HarfBuzz extensions are already integrated, and unlike the WebAssembly Shaper ones do not need to be enabled during compilation. Cubic glyf and beyond-64k are already supported by browsers and HarfBuzz implementations from 2022 or newer. Nothing currently targets them yet though. Hopefully that changes.
UnifontEX2 will be updated every Unifont release, and if for whatever reason I'm indisposed I will allow people to carry the torch.
I'm not saying regular UnifontEX gets to be "Public Archive". There's still stuff I add to the readme and I've enabled discussions and Wiki so people can more freely discuss it. And I have the FontForge patch integrations to add, and the non-FontTools IsFixedPitch setting to do which also lacks software. So this project isn't dead, it's more that the tools needed to go further do not exist yet, but a lack of known solutions now doesn't mean they won't be developed. It's a waiting game .
Also feel free to use UnifontEX while waiting for UnifontEX2 even if you aren't on legacy systems because it will be a while.
This isn't me closing the issues of any critics, I just literally can't do this, and I've tried. It's not that I don't want to fix this per se, I just can't.
Thanks for the detailed response, I appreciate all the work you've put into this project!
Thanks for the detailed response, I appreciate all the work you've put into this project!
You're welcome!
I spent the past day doing some edits to the Github to make it and the site look better. The amount of things I had to do was quite significant.
I've managed to get Unicode 15.1 support to work @Patronics via sheer luck, but due to a whole host of reasons, anything higher still requires UnifontEX2.