Is there an easy to implement way of exporting fonts (OTF) that have fully AGL-compatible glyph names (or, at least “as compatible as possible”, of course)?
Example: I have a glyph named twosuperior with Unicode 00B2, which gets exported as uni00B2. This creates problems in use cases that rely on AGL naming. Can this be changed easily on export? Or, am I missing something and there is a benefit in naming it uni00B2?
Checking back with the Adobe Glyph List, I believe this is an error in the default GlyphData.xml. Because for the production names, we fall back to the AGL wherever possible. I vaguely remember we made a change once for a very specific reason, but I don’t think this was it. Need to check.
Thanks, Rainer. I was secretly hoping there would be an easier solution that doesn’t require me to check all glyphs individually, identify the AGL-incompatible ones, then set up the correction for each of them manually, and eventually go through this again for new projects I work on.
[I know this can be scripted. Working on something right now but it still feels unelegant.]
I’d ask in reverse. The official recommendation is the former. I would only pick the latter if there is a good reason to do so, like a client who needs to support old software. That is why I asked which specific issue you ran into.
My expectation is that you are more likely to run into a compatibility issue when you’re deviating from AGLFN. But really it should not matter at all.
The only thing I can remember (but I would test it) is that macOS 10.4 Tiger would try to access glyphs by their names, an obvious bug that was fixed in 10.5 for good. IIRC (ugh it has been 20 years) it would accept both uniXXXX and nice name schemes. AGLFN was first released in 2003 and predates 10.4 Tiger (the version on GitHub has a version history), so I assume it was supported because Adobe had implemented AGLFN already in their fonts.
My customer is using a service that fails with glyphs that don’t adhere to the AGL. It’s a real-world scenario from a large company. I am not much interested in who’s to blame here but as a matter of fact, the font would work properly in that context if it had AGL-compatible names. “Tell them to get up to date” is one possible reaction, simply using AGL names is the other possibility. I’d prefer the latter. Customer is king, and they are not even to blame directly.
Just had a look at a number of Adobe fonts (.otf) I could find, and none of them uses uni00B2. Including families that were not released before the 2010s, such as Source Sans, Source Serif and Trajan 3.
Can I ask again, what is the benefit of using uni00B2 instead of twosuperior?
It’s Adobe’s recommendation, so adopting it is a benefit in terms of following recommendations. You found a situation where the old list works best and you can adjust your project to match the old list. If there are more reports in this regard, it might be interesting investing whether adopting the old list by default would be better or if that causes other unforeseen issues with different software that expects the new list.
Adobe is very clear that fonts are not invalid if they are not using the uni prefix. And even Adobe is deviating from the recommendation. Why is this recommendation so important then, more important than getting stuff to work? Strange but seems like I won’t be able to convince the team.
Your report is a valuable input, but it’s just not enough information to make informed changes. Maybe when you changed the glyph names you also changed something else and that make the font work with the client’s software. Or the software does not expect the old AGL and instead another naming scheme that happens to overlap with the old AGL in some cases. Or there might be another bit that could be flipped to make the software work with the new list. Without more details it’s not clear whether we should change the default production names, or offer a setting, or make a script, or change the compiler, or some other action. There is not a single thing yet to be convinced about.
Just had a look myself. It is called two.u in Source Sans, which is AGLFN compliant (yes, it does not need to be uni00B2, any OT variant of another glyph can use the original glyph’s name with a suffix), and contradicts AGL (where there is an established 1:1 relation between name and Unicode value):
Why is this recommendation so important then, more important than getting stuff to work? Strange but seems like I won’t be able to convince the team.
Convince the team? Why? If it works for that specific use case (circumventing an apparent bug in an unnamed third-party software), nobody is stopping you from changing the production names. It is easy to script, just set GSGlyph.productionName. What exactly is the issue?
I just have not read a convincing argument for making an apparently exceptional use case the default for everyone. It is like saying to not use GPOS because Word on Windows 98 does not support it. I can show you how to switch to an old-style kern table alright, and it is OK to support that specific use case if the client must use that software, but I would not recommend it as a default for modern OpenType production in general.