Why negative values for Slant axis?

Looking into that file raises a question I had several times, and maybe you know as you seem to contribute to MonaSans(?)
What is the deal with negative italic angles? The font has its full slant at -12 and no slant at 0. I have seen this several times, but also the opposite. Do you have any information on best practices?

(I even saw fonts slanting their shapes in the opposite direction of the slant angle that is stored in the file – giving some odd looking previews in a test app, that I built).

What do you mean? Are you referring to the latest file I pushed in the v1.1 branch? I currently have it set up with a 0–1 italic axis. However, we are in the process of onboarding the font with Google Fonts and they are pointing out the same question. They instead want a slnt axis with 0 to -12 as values, which I have always found odd. I don’t see a problem with a 0–1 italic axis.

No, I checked the official repo that you forked from, which seems to be the “live” version from a user pov :slight_smile:

What is Google’s reasoning? I really need to know that, it puzzles me so much, it is so counter intuitive:

VFP Mona Sans

I’m confused. The variable font file I committed yesterday has an italic axis from 0 to 1.

Are you 100% sure you are on the correct branch?

Note that the official repo also has a v1.1 branch, which only just merged my pull request. Maybe you need to update your repository.

As I said, I downloaded from the original repo GitHub - github/mona-sans: Mona Sans, a variable font from GitHub
not your fork :slight_smile:

From the v1.1 branch? With my merged pull request from yesterday?

No, main branch. Default in the original repo.

A slant to the right is expressed in OpenType with negative numbers. The italic angle field in Glyphs is inverted on export. So if you enter an italic angle of 11, it’s exported as −11. The slnt axis follows the same logic within the OpenType standard.

1 Like

I see. My work is in the v1.1 branch. I will let you know what Google says about the axis choice, they are complaining, as I mentioned :wink:
Maybe, in the meantime, somebody else has a better reasoning.

1 Like

Thank you! So this is specific to the slnt axis? I cannot recall having seen my ital axes reversed on export (not used the slnt in a proper project yet)

That makes sense, on a technical level, thanks. However, from a user perspective, it’s mighty confusing. 99% of people call a slanted font “italic”, especially if it’s optically corrected and everything. Using an italic axis thus makes sense, especially if it’s interpolatable.

Anyway, I know this is not your job to defend :wink:

100% yes to that! I really dislike that. It is so odd in the UI, and I still don’t get why that “logic” has been set up that way in the first place.

Also yes to that! :slight_smile:

Glyphs matches most user’s expectations by inverting the italic angle in the master settings. For axis values, however, Glyphs does not interfere. The slnt spec reads:

Note that the scale for the Slant axis is interpreted as the angle of slant in counter-clockwisedegrees from upright. This means that a typical, right-leaning oblique design will have a negative slant value. This matches the scale used for the italicAngle field in the ‘post’ table.

2 Likes

Thanks!

(That spec part with the ccw reads like “because that day we thought its funny” ¯\_(ツ)_/¯ :sweat_smile:
I think a UX perspective would have made way more sense than forcing it to match the way a value is stored in another table field.)

So to sum up my question (sorry for highjacking the thread)
For a slant axis it is advised to use negative values for the slanted shapes, and 0 for the upright

Yes, you need positive slnt axis locations only in rare circumstances.

1 Like

Are there any known issues with ital and slnt not following the specs? Seems like about a half of fonts don’t follow it, especially with the ital axis being all over the place.

I strongly believe anything other than the actual positive angle makes no sense, and feel inclined to support anarchy and chaos, so that software developers don’t rely on the silly specs either.

1 Like

Why do you think the spec is silly? In mathematics, all angles are measured positive in counterclockwise direction.

(Engineers apparently measure differently, e.g. what we would call a 15° slant to the right is called a 75° slant measured from the baseline in the case of Normschrift standard lettering) :wink:

I would argue that very few fonts need a Slant axis to begin with. For most Latin designs, an Italic axis suffices.

It is a good idea to follow the spec recommendations because an app may rely on you following the specs, in this case e.g. for drawing a slanted cursor or a slanted highlight rectangle that fits the slant of your font.

Please convince Google of this. Currently, if you have an italic axis, Google Fonts require you to split the variable font into two versions: Roman and Italic. That somewhat defeats the purpose of the axis.

I believe there is a GitHub issue about this somewhere, possibly in the fontbakery repo; that might be the most actionable place for discussion

Edit: nevermind, I believe the issue I was thinking is that it is in the universal fontbakery profile, rather than the GF profile [com_google_fonts_check_STAT_strings] Should "Italic" be allowed for 'slnt' axis? · Issue #4199 · fonttools/fontbakery · GitHub

but the original decision was here: Add check for STAT table misplaced "Italic" strings · Issue #2863 · fonttools/fontbakery · GitHub

and it seems lightly discussed at the time. Perhaps creating a meta-issue pointing to these two issues is the way to go? My inclination would be to try and get #4199 solved first and then slowly drift into a new issue regarding the GF check specifically