No, it’s a fair question. As far as I’ve been able to tell, per-glyph kerning rules (the sort that put a period closer to a lowercase r than to a lowercase m) are ignored by too much software to be certain of the result. Theoretically, yes, that’s exactly what they’re for. But in practice, you have to have a lot more control over the software than I do. My goal is to make a toolkit that people can run on god knows what software stack (and clearly we’re not there yet), and where I can swap out major software components with relative impunity (which is what I’m in the middle of).
Unicode’s Private Use Areas can be put to a similar purpose. They’re not unassigned – they’re reserved for custom glyphs like this, or in this case the same glyph with different spacing. And until this bug, I’d never encountered any software that behaved weirdly about them. In this case, ImageMagick’s “-gravity” option triggers text rotation for CJK vertical text layout, but for some reason it’s applying to the PUA as well.
If I was putting this out there as a general-purpose font, I’d probably do the kerning rules in addition to the PUA glyphs, but this is pretty purpose-built. I’m not expecting people to make their résumés in this font – and even if they did, the kerning changes are so minor they wouldn’t be noticeable outside the film context anyway.
This is far from the only weird problem I’ve encountered with the ImageMagick/Pango combo – I’ve been second-guessing the decision to go with that software for years (I’m not saying either Pango or ImageMagick are bad per se, just that the ImageMagick/Pango integration is problematic). So far, Chrome resolves all of those bugs (and yes, I’ve already tested the PUA support and many other things), but the Python itself is still way too buggy. Theoretically, once it’s working 100%, it could work in Chrome/Chromium/Safari/Opera/Edge, but right now, Chrome is all I’m focused on. I could even swap it for Firefox with a little more work. And, thanks to portable Chrome, it’s much, much easier to freeze at a particular version of Chrome indefinitely, should the features I’m relying on stop working for any reason. Basically this whole effort is designed to provide future insurance against exactly what’s happening now.
I was just kinda hoping nobody would trip over it until I was further along with a fix 😉