vocab.design

typography

Stylistic set

also called stylistic sets, ss01 (opentype), character variants (opentype), alternate glyphs

A numbered bundle of alternate glyphs inside a font, switched on as a group to change the look of certain letters.

Most letters in a font have more than one drawing available. The double-storey a has a single-storey twin, the two-storey g a single-storey one, the l a version with a tail, the zero a version with a slash. A stylistic set is how a type designer bundles those alternates: ss01, ss02, up to ss20, each a numbered group that swaps in a coherent handful of shapes when you switch it on. The grouping is the point. A face’s “code” set might slash the zero, put a foot on the 1 and a tail on the l all at once, because those three decisions only make sense together, and no interface should make you turn them on one at a time.

The numbers carry no meaning. ss01 in one family is a single-storey a and in another it is old-fashioned quotes, because the OpenType specification reserves the tags and leaves their contents entirely to the designer. The only way to know what a set does is the family’s own specimen or documentation, which is why CSS gives the tag a human-readable wrapper: font-variant-alternates: styleset(code) reads the names out of the font’s own table, while font-feature-settings: "ss01" 1 just asks for the number. Character variants (cv01 to cv99) are the finer-grained cousin, one letter each rather than a bundle, for when you want the tailed l without the slashed zero.

Neighbouring features do related but distinct work, and the distinction is worth keeping straight. A ligature fuses two adjacent letters into one drawing to fix a collision, and it fires wherever that pair occurs. Contextual alternates swap a shape based on what sits beside it, automatically, with no decision from you. A swash is a specific kind of alternate, the ornate extended one, usually parked in its own swsh feature. A stylistic set is the only one of the four that is a deliberate editorial choice about the voice of the text: nothing is broken, nothing is contextual, you simply prefer the other a.

The trap is asking for a set the file does not have. There is no error, no warning, no fallback: the request is silently ignored and the default glyphs render, so a stylesheet full of "ss02" 1 can look exactly like a stylesheet without it. Check the face before the CSS, and be aware that most system fonts carry no sets at all. The specimen above says so out loud: none of the faces this site ships carry a stylistic set, so the alternates in it are drawn on rather than substituted, and the switch stands for the swap.

Which word?

If you wantsay
switching a font's single-storey a onstylistic set
a script font changes shape depending on its neighbourscontextual alternates
reaching for a font capability that is off by defaultopentype features
naming the decorative tail on a fancy capitalswash

Sources