Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
Fix "Axis Mappings" interpretation #1040
base: main
Are you sure you want to change the base?
Fix "Axis Mappings" interpretation #1040
Changes from 2 commits
8f02119
ef4a21f
473bfea
39c3331
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i'm confused, I thought older versions (< 3168?) would interpret it as design->user and thus require flip, whereas newer versions have aligned with fontmake's interpretation and already have user->design? This block seems to contradict my understanding, for it's using an inverted mapping if the version is more recent.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Interpret as" is perhaps not helpful here. :-) I just opened Nunito source, converted to Glyphs 3 file format and saved under Glyphs 3310. The custom parameter is stored as:
i.e. designspace to userspace.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
now I am extremely confused
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thankfully the code has comments and the tests are passing. :-) (And I can compile fonts that were not compiling before.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
well, I for one don't understand this whole mess. It would be nice to have a recap.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
good, what I'm worried about are the other fonts that were compiling before and may not after this.
Right now (tested with 3324) on a newly created glyphs3 file, the Axis Mappings is already stored in the source as user->design (or external->internal, as Glyphs calls them), so it is correct and matches fontmake. Wouldn't this PR invert it? I'm seeing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You are going to love this.
Glyphs now stores user->design for new fonts, but it "upgrades" old fonts by simply inverting them. Take your new font, manually edit "appVersion" to (say) 3110, open it in Glyphs and save it again - the mappings will be flipped.
So I guess this means we can't trust the app version number, and we have to probe against the instance mapping.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could have went with my suggestion (back in #745) and made glyphsLib match (old) GlyphsApp behavior and fixed the few fonts that would have been broken by this. Now it is even a bigger mess...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't deny that it's stupid and wrong and there may have been questionable choices on both sides, but in 95% of cases the interpretation is completely obvious. Do you have a weight uservalue of 7? You did something wrong. Did all the master locations suddenly fall outside of the design space and you have no valid masters any more? You got the axis mappings backwards. Compare against the instance locations, because we know which way round they are, and if the ranges are wildly different, switch it. It's a mess, but it's not a hard mess to clean up.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hm i'm a bit skeptical we need to go "heuristical".. Can't we simply check the version and do accordingly? If the source file doesn't match the interpretation for the version it was saved with, we can say it's not our problem
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think there were some fonts that would set it "wrong" in Glyphs to make it work with fontMake.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Exactly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
how about fixing the actual sources instead?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this Rubik.glyphs seems to already have a correct user->design mapping even if it was saved with an old version:
https://github.com/googlefonts/glyphsLib/blob/1cb4fc5ae2cf385df95d2b7768e7ab4eb60a5ac3/tests/data/gf/Rubik.glyphs#L49-L59
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Right, because it was a format 2 file.