How to identify a 'OTC collection' font type?

According to 'READ THIS FIRST: The TypeDrawers Rules' the following question may not exactly be
a subject suitable for Typedrawers. I posted (or I think I did) this question to the OpenType
list and I think I got no answer -- OTOH I've seen almost no traffic on the OpenType mailing
list for a long while, so I might somehow have become untethered from it. Either it's dead,
or I'm doing something grievously wrong. Can't figure it out ...

Does anyone have suggestions for alternative lists for questions of this ilk?

Here is the topic question:

The OpenType standard says that the nature/properties/characteristics of an OpenType font
file should be determined only by checking its internal gizzards, and not by the font file
extension: .ttf, .ttc, .otf, and so on. Very good!

But in the case of OpenType/CFF Collection (OTC) fonts, what is the table and property
combination that uniquely identifies the font type as OTC?

For example, I think this font file is an example of an OpenType/CFF Collection (OTC) font:

        NotoSansCJK-Regular.ttc

What should a developer look for while parsing the gizzards of that file to determing its special
format? Maybe OTTO, I guess, but what else is needed to differentiate it from a 'normal' .otf font?

And as a related sub-question, there are references to 'OTC' collection fonts and also to
'Super OTC' collection fonts. Are the differences formally described anywhere?

If anyone can provide some guidance about the above it would be a huge help!


Comments

  • John Hudson
    John Hudson Posts: 3,186
    For example, I think this font file is an example of an OpenType/CFF Collection (OTC) font:        NotoSansCJK-Regular.ttc
    More likely a TrueType flavour font collection. That distinction is one of the easier ones to detect: does the font have a glyf table or a CFF/CFF2 table?

    The easiest way to spot a TTC or OTC from its internal data is the presence of a TTC Header table.

    There are many different ways in which one can build a collection font, so other than the presence of the header table, it isn’t possible to define a single criterion of detection. I have seen TTCs that are used solely for the purposes of combining multiple fonts with no shared data into single binaries (Apple does this for system fonts). But most collection fonts contain at least some shared data, most typically a shared glyf or CFF table.
  • Dave Crossland
    Dave Crossland Posts: 1,429
    Which mailing list exactly were you trying?

  • Thanks John.

    I had not realized that Apple MacOS does that. Very interesting. And yes I can see now that the TTC Header is the key, as you kindly mentioned. Thanks for that too.

    Wrt NotoSansCJK-Regular.ttc, I think the glyph outlines are PostScript / CFF, notTrueType.

    This is because ttx shows a component font (1 of 8) begins with:

            <ttFont sfntVersion="OTTO" ttLibVersion="3.17">

    AFAICS the .ttc file extension is used both for the old TrueType collection fonts, e.g.
    msmincho.ttc containing MS Mincho and MS PMincho (with fixed-width and proportional-width Latin characters respectively), and the newer OTC fonts that have PostScript / CFF outlines.

    I was hoping there would be a super-easy way to detect if a font was TTC versus OTC. I was assuming that an OpenType collection font could contain fonts all with PostScript / CFF outlines or all with TrueType outlines, not a mixture of the two. But now I think this assumption was wrong--in other words it's perfectly legitimate (if maybe very unusual?) for an OpenType collection font to contain fonts with different outline types, CFF or TrueType for the different fonts in the collection.

    In that case I'm guessing the answer to my question goes like this:

            1) Check if the font file begins with the string 'ttcf'

            2) If yes, it's an OpenType collection font, so loop through each font in the
                    collection to check the sfntVersion value.


    The mailing list I was referring to is this private one:

            https://learn.microsoft.com/en-us/typography/opentype/otspec140/otlist

    AFAICS it has no viewable archives. I could be wrong tho' ...

    I love the Typedrawers forum--it's packed with fascinating discussions that provide delight and interest--to say nothing of everyone's endless civility. OTOH it would be great to find a forum that discusses technical details of the OpenType format publicly, that's not tied to e.g. FL, FontForge, Harfbuzz, FreeType and so on. (Regretfully, all my posts on Typedrawers must rate among the dullest 0.001%. But all have gotten helpful and interesting responses.)

    Thank you everyone.