Skip to content

"Thin" instance not selectable in macOS Pages #8

@thundernixon

Description

@thundernixon

The problem

As originally described in the docs of this repo (Problem: in split VFs, it is impossible to select "Thin" in Apple Pages) and then re-flagged by @m4rc1e, it is impossible to select the "Thin" weight of Encode Sans in macOS Pages.

pages-issue-encode-sans-thin

One issue that this helped me catch: the name IDs weren't quite as they should have been, in the Encode Sans variable fonts. These should follow this format:

name 1:  Encode Sans Thin # (default instance is "Thin"), so this should show up in apps that don't support VFs
name 2:  Regular
name 16: Encode Sans
name 17: Thin

This fix does allow the Thin style to be selected in MS Word:

ms_word-encode_sans_thin

  • (Note, I still do need to adjust the Encode Sans build process to ensure that variable fonts are receiving the correct naming)

However, even after changing this and triple-checking that the STAT table is made to correctly link to all instance values and names, "Thin" remains unselectable in macOS Pages.

It's not just Encode Sans

@mjlagatutta has pointed out that Hepta Slab also has a similar issue: it's "Hairline" weight is also unselectable, and instead shows up as the Medium weight.

pages-issue-hepta-slab-hairline

Deliberate testing with a test font

I wanted to reduce the number of variables and see whether a simpler font still demonstrated the issue. So, I made a quick test font and built it into a variable font with FontMake, from scratch and with no build process other than fontmake -o variable -g <file_path>.

The test fonts and other files are located at https://github.com/thundernixon/Encode-Sans/tree/master/docs/tests/macos-pages-vf-test-thin-2018-02-11.

However, when a font has both "Thin" at 100 and "Medium" at 500, Pages won't allow the user to access a thin.

pages-issue-thin-testfont

The actual "Thin" for this font should be this weight:
image

I wanted to push on this a bit, to understand when, exactly, Pages would respect a Light style. Given that Hepta Slab fails, while things work for fonts like Comfortaa or Signika with "Light" styles at 300, my guesses were:

  • It could be an issue of instance weight value – if the "weight" axis is lower than 300, it would fail.
  • It could be an issue of font style naming – if the name isn't a recognized value like "Regular" or "Light", maybe it wouldn't work
  • It could be a combination of the above two factors.
  • It could be that fonts only fail when there is a Thin and a "Medium" instance.

Hypothesis: A "weight" axis is lower than 300 causes failure

❌Nope. ❌

It's not a weight value issue, based on tests of fonts with their minimum weights at 100, 200, and 300.

100–900 weight range:
pages-issue-thin-100_900-testfont

200-900 weight range:
pages-issue-thin-200_900-testfont

300–900 weight range (the Regular looks light, because the thin master is now set to 300, so 400 is very close to that):
pages-issue-thin-300_900-testfont

Hypothesis: unsupported font style naming causing failure

❌Nope. ❌

It's not that using the name "Light" rather than "Thin" or "Hairline" makes things work, even if the lightest weight value is 300:

pages-issue-thin-300light_900-testfont

Hypothesis: A font having both "Thin" and "Medium" weight names causes failure

❌Nope. ❌

It also fails if there is no "Medium" font name, but now the Thin value calls the "Regular" instance instead:

pages-issue-thin-100_no_med_900-testfont


With these tests failing, I'm not quite sure what to test next ... Could it be that Pages somehow measures the weight / density of fonts, and simply won't allow something that is too light?

  • once we have identified the core issue (if possible), I will file this issue with Apple (unless there really is a problem we can find in the files we're building)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions