More than 20 stylistic sets (for different scripts) possible?

I’m expanding a latin typeface with cyrillic glyphs and as this is my first-time excursion into a »non-latin« script I wonder if it is possible to have stylistic sets seperated for the different scripts, e.g. let’s say I built 17 stylistic sets for latin, and now I want to make 5 sets just for cyrillic (which would sum up to more than 20 sets in total).
Or is (as I suspect) the number of sets limited to 20, no matter how many scripts are included in the typeface?
I don’t actually plan to build that many sets, this is more a theoretical question.

I believe a font can’t contain more than 20 stylistic sets per se; however, you could also use the character variant feature, which allows cv01 to cv99. Or, if you really want to do it with stylistic sets, they can be combinatorial, so if you’ve used ss01 to ss20, you could obtain further variations by applying ss01 + ss02 together. It’s a bit messy to keep track of which combinations would produce which glyphs, though.

Do those 22 stylistic sets not have any overlap? For example, if Latin lowercase a changes, so should the Cyrillic a in the same feature.

@Bendy, thanks for mentioning the character variant feature, I wasn’t aware of this at all, probably because I never noticed any option to access cv in any app where I would use fonts. Just had a quick look into InDesign and it seems the only way to access cv is doing it manually via the glyphs palette/access all alternates, or via search and replace, which is both somewhat cumbersome compared to simply activate stylistic sets. Nevertheless this is an interesting new finding for me.

@Tosche, yes, of course, but as mentioned above I do not plan to employ that many stylistic sets in the finished font. I always build a lot of sets during design process, so I can compare/toggle between different versions of a glyph, which helps a lot in deciding which variant fits best. And now with the Cyrillics (and due to decision-postponing …) I came to a point where I ran out of available sets.

In this use case, i would put the Cyrillic variants into ss01–ss06.

I believe you missed Toshi’s point. The whole idea of a set is that it encompasses all glyphs that share a common design feature. And From what you write, I don’t see a compelling reason why you would need to separate them by script.

Otherwise, if that is not the case, you would indeed use .cvXX, the glyphs of which are accessible through the respective OT features interfaces in CoreText apps and Adobe CC apps. Not in MS Word. But if they are not meant to be kept, where do you plan to test them?

1 Like

If you’re just creating alternates for testing in InDesign, and don’t want to use the glyph palette, you could also get a few extra sets by putting the variants into any other OpenType feature that’s accessible to InDesign (liga, smcp etc). These days I mainly test in the browser so cvxx works fine.

@mekkablue, no, I totally understand what tosche was saying, it’s just in my special case that I kind of »misuse« the sets for testing purposes (I’m testing inside glyphsapp, InDesign and Fontgoggles).

By the way, would it be possible to add names to .cvXX features, similar to what one can do with .ssXX, e.g. Name: be-cy curved ?

One more question regarding .cvXX:
I couldn’t find a way to activate .cvXX in adobe apps’ OT feature panels (Indesign CC2020, Illustrator CC2019), do you know how to achieve this? What I mean is not for a single, selected glyph, but for whole paragraphs/paragraph styles.

The structure of the names for chacater variants is very different from the names for stylistic sets. I din’t figure out how to properly implement them.

I see. Never mind, it doesn’t matter as it’s not really important. But thanks for having a look, Georg!

Yes it is different, but more sophisticated. You can provide names for the features themselves and also for the values. Note that character variants can utilize either GSUB type 1 Simple substitution or GSUB type 3 Alternate substitution, so cvxx features can be either binary or multi-valued – and you can give names to each value.

You can provide other data as well, such as a tool-tip and sample text. For complete details, see the FeatureParams field description within the cvxx specification.

It is simple to write the fea to define these names. For reference and examples see UI Label names for Character Variant features ( cv01 - cv99 ) in the Adobe FEA specification.

And more on the design aspect of the discussion, usually you don’t need that many stylistic sets in the final fonts (I’ve only hit the maximum in a Lat-Grk-Cyr display font once). It usually speaks to your indecision especially if the difference is minor. Even for testing purpose, you probably don’t need to test 20+ variations all at once.

There are less conventional options like cvXX to put your alternates, but I am more interested in grouping & cutting down your contents. It’s like in film editing; the first cut of a theatrical film is often 50% or 100% longer than the final product. A creator needs to learn not to put everything they make.

1 Like

Exactly. That’s the reason why running out of stylistic sets does not feel like a »problem« to me, it’s more a kind of friendly reminder to finally make some long-postponed decisions.

To answer the theoretical question that started this thread: The GSUB tables contain lookup tables for substitutions. These are grouped and given a meaning by linking them to a feature tag in the feature table. These features are given a context for use, by linking them to a script or a particular script-language combination in the script table. Which means that for each script or script/language you can have 20 stylistic sets, that can be all different from each other.