Ignore one feature in another feature

I have an italic font where the default set also has a ‘cursive forms’ feature for certain glyphs. It also has a ‘grotesque’ feature, but the cursive forms don’t fit with the grotesque style, so I’d like them not to be applied when the grotesque is activated.
What would be the correct way to code this?

![Screenshot 2023-04-27 at 11.57.30|690x336]
(upload://2Qe8mw9moFlpy3FryGSHNm4scKi.png)
Default set


Default set with cursive

Grotesque

Grotesque with cursive

Static or variable fonts?

Both.

For the static fonts, would you prefer to handle this with stylistic sets in a single font, or generate separate font files for the cursive and grotesque styles?

For the variable font, it would be possible to have the cursive - default - grotesque alternates on a (stepped) variation axis so they switch forms at different values.

I want all to be contained within one font.

The default is a humanist italic, (not shown above, now below).
Two of the style sets are ‘Grotesque’ and ‘Cursive forms’. But I don’t want either to work while the other is activated.

Have you tried simply adding the reversed substitutions?
Cursive: sub x by x.cursive
Grotesque: sub x.cursive by x

1 Like

Does this approach work for your font if you put the relevant glyphs in each class?

ss01 # cursive forms
 sub @defaultforms by @cursiveforms;

ss02 # grotesque forms
 sub @defaultforms by @grotesqueforms;
 sub @cursiveforms by @grotesqueforms;

I don’t want either to work while the other is activated.

I don’t think you can have one feature disable another. Stylistic sets’ architecture means you can apply more than one at a time. So we just need to decide the font’s behaviour if ss01 and ss02 are applied together