-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
"OpenType Classic" and multiple concurrent versions #780
Comments
Do you have a list of such fonts from MS? In the fonts we’ve made for them, we have avoided any nested components and also any scaled or flipped components, even though the spec allows for such things, because they were known to cause problems in some environments. We recently discovered that some nested components had snuck into Sitka due to a change in the toolchain for some revisions, and have been removing those after consultation with MS. [Coincidentally, you find me this afternoon fixing sources from another designer that used flipped components for /questiondown/ and /exclamdown/—particularly annoying when they are also used, offset, for .case variants.] |
On the broader subject: I always liked Adam’s idea of tailored OT subset specs. As I recall, the parallel was to things like colour space standards for PDF output, suggesting that one could use export filters in a font tool to target specific environments or uses. In fact, we already do this by setting up export profiles in our tools and options in our build scripts, but these are based on local understanding, informally shared information, or prayer, and having them standardised somewhere—by which I mean subject to a standards process, not just documented by someone e.g. in FontBakery—would be great. |
Here is the list of MS Windows 10 build 19041 fonts and their nested components glyphs:
|
Thanks, Denis. That is very interesting. Other than Bahnschrift—which I suspect is the only family on the list that was developed in Glyphs—those are old or very old fonts, and looking at which glyphs ended up as nested components, I suspect these may often be the byproduct of tools and carelessness—e.g. the /Beta/ in palai.ttf being a nested component of the Cyrillic Be rather than a straight component of the Latin B, as in the other fonts in that family—rather than planned. This is one of the problems with nested components, on the development side: it is very easy in some tools to accidentally create nested components without actually realising that one is doing so. I have a request in to FontLab for a preference setting to never use nested components, because at the moment it will default to nesting when it can, and I suspect Glyphs might do likewise. [FLS5 never didn’t make nested components, which explains why there is a long period of MS fonts not containing nested components when that was the common development tool.] |
@davelab6 If you could open an issue on the 'glyf' table, a note can be added to mention that in that page. Or, alternately, this could be mentioned in the Recommendations page. |
I'm not sure about multiple concurrent versions (does that actually advance clarity and better interoperability)? But I do support steering things toward better interoperability. Since (i) the OT spec currently doesn't say anything about nesting, but should; (ii) clearly it has been permitted since the beginning of TT (so can't be prohibited now); and (iii) also clearly it has long been an issue for broad interop; I propose adding the following in the 'glyf' chapter:
(In OFF, notes can mention things that are possible but cannot include requirements or recommendations. ) |
There are already multiple concurrent versions implemented, that is the
reality. The documentation can reflect that honestly, or not.
|
I'm not sure what it would look like to "reflect that honestly" or what it would gain. |
For OT 1.9, the following addition to the 'glyf' chapter related to this issue is proposed:
|
It would be useful to mention maxp.maxComponentDepth at this point. |
The gain is clarity on what works where
|
@Lorp Thanks for the suggestion. I've added a sentence in the first paragraph shown in the earlier comment.
|
The note regarding compatibility is a good addition. I wonder if we have somewhere a similar note regarding composite transformations (scaling, flipping) which I see being used in a lot of sources now but which have long caused problems in software (such that MS always required we not use them in fonts for them)? |
@tiroj If you'd like to see something on that in a future OT version, please open an issue for the glyf chapter with background and suggestions. |
Addressed in OpenType 1.9. Closing. |
A few months ago, the folks commissioned by Google to onboard fonts and write fontbakery linter checks for fonts discussed that nested truetype components are not correctly rendered by many PostScript based printers (eg a nice one from Xerox) and some other software that is not compliant with the spec (fonttools/fontbakery#2961)
In the fontbakery project, we aim to have good rationale statements to explain why checks are the way they are; https://github.com/googlefonts/fontbakery/pull/3082/files explains in more detail why Google Fonts is no longer accepting fonts with nested components, and at fonttools/fontbakery#3181 I posted some longer term thinking about how GF could do better than simply flattening all components.
However, I now understand that, for a long time, MS fonts have shipped with nested components. It seems updating "the" OpenType spec to recommend against nested components would be unlikely, since the MS implementations handle this correctly for a long time.
Still, it does make sense to me that PS based systems don't handle them even today, as they are really translating TT fonts into PS fonts on the fly, and often have other bugs related to that process... such bugs were so notorious when I was a student 20 years ago that I was taught "TTFs are not for print, only Type1," but they have all got a lot better since then.
I remember the way CSS 2.1 and 3 went, where the bits of CSS 2 that never shipped were dropped from 2.1, and most were reintroduced in 3. For fonts, since OT 1.8.4 isn't fully implemented everywhere, the burgeoning 1.9 will push that further, and subsequent releases will go further and further from shipped/stranded implementations (in printers and old software that people won't upgrade), we are going to end up with a more heterogeneous world for sure.
So, I would like to propose an "OpenType Classic" that essentially does what CSS2.1 did, and does update the spec, to clearly explain what really has been implemented absolutely everywhere, so people can make fonts to that format standard, as well as other (newer) ones.
Of course, fontbakery can offer such a check profile that is "overly strict" in this way, and there's no strong need for OpenType to do this... But, if the spec evolves in the next few years, with changes that are not suitable for incrementing the patch or minor versions in the semver model, it might be best to "evolve backwards" as well as forwards :)
(In many ways, I am repeating what Adam Twardoch wrote many years ago, at
https://lists.w3.org/Archives/Public/public-webfonts-wg/2013Jun/0027.html)
The text was updated successfully, but these errors were encountered: