Best way to un-nest nested TTF components?

fontbakery complains about nested components which cause problems in some ancient versions of macOS. What would be the smartest way to resolve this? (Other than manually changing the sources, e.g. changing the recipe for Alphatonos from "tonos_Alpha" to "tonos_A" etc.)
I tried this fontTools snippet https://github.com/fonttools/fonttools/issues/1506 but I don't think it worked.
Can tools like fontmake / gftools fix this automagically?
Flattening the entire FontLab source before exporting to UFO bumps the font size from 136 to 221 kB. I could re-detect composites but FontLab does a nasty job here reordering some contours and variable compatibility goes away.

Comments

  • Simon Cozens
    Simon Cozens Posts: 740
    edited December 2020
    It's not just ancient versions of MacOS - these often don't print properly on PostScript printers, and sometimes the positioning goes wrong in variable fonts.

    I have a pull request to fontmake which adds a "-f" flag to flatten components, but it's not been merged yet. (Future readers who come upon this post via Google should try running "fontmake -f".) For now, add this to your UFO's lib.plist:
        <key>com.github.googlei18n.ufo2ft.filters</key>
        <array>
          <dict>
            <key>name</key>
            <string>flattenComponents</string>
            <key>pre</key>
            <integer>1</integer>
          </dict>
        </array>
    

    For full details, please read the relevant issue.

  • Thanks, @anthrotype just pointed me in the right direction.