Living Sans Text: weight and feature review

The companion text family, seven static cuts, reviewed as a web font. This page has nothing to do with the display font: there is no motion axis here, no calt, and unlike the unicase display cut this one has a real lowercase. The version switcher in the other pages' nav does not apply, so it is not on this one.

The weights are correctly set up. All seven files carry the right usWeightClass (100 → 700, in name order Thin → Bold), so one @font-face family addressed with plain font-weight picks the right file every time. Vertical metrics, cap height, x-height, glyph set and cmap are identical across all seven, and the stems step up almost perfectly evenly (34 → 164 units, about +22 per cut). Nothing needs remapping.

Three things to know before using it. There is no 800 or 900 cut, so font-weight: 800 and 900 both land on Bold and browsers may smear synthetic bold on top: see Gaps and synthesis. There are no italics, so <em> gets a synthetic slant. And the family ships 36 rlig icon ligatures on triggers like //search, which are on by default and will fire in body copy: see Icon ligatures.

Display vs Text

two different families

The same string in both, so there is no doubt about which one this page is showing. They are separate releases and they do not resemble each other: the display cut is unicase, so lowercase input comes out as capitals, and its letterforms morph across the MOTN axis. The text family is a conventional lowercase workhorse with no axis and no contextual alternates at all. If the right-hand column below looks like an ordinary sans, that is correct: that is what was delivered.

LIVING SANS: display

Handgloves & Kyoto

MOTN 100 → 1800, TRCK, calt, ss01/ss02, unicase

Living Sans Text: this page

Handgloves & Kyoto

7 static weights, no axes, no calt, ss01 → ss20, real lowercase

Weight ramp

font-weight 100 → 700

Every line below is the same family name with nothing but font-weight changed, so this is the real test: if a cut were mistagged, two lines would render identically or swap places. They do not. The style name on the left is what the file calls itself; the number is what CSS asked for.

Thin100
Handgloves & Kyoto 123
Extralight200
Handgloves & Kyoto 123
Light300
Handgloves & Kyoto 123
Regular400
Handgloves & Kyoto 123
Medium500
Handgloves & Kyoto 123
SemiBold600
Handgloves & Kyoto 123
Bold700
Handgloves & Kyoto 123

Measured off the binaries

1000 upm

Read off the woff2 files rather than by eye. Stem is the width of the I stem in font units; ink is the filled area of n. Both climb monotonically with no plateau or reversal, which is what a correctly mapped ramp looks like. Advance widths widen with weight, so the cuts are not metric-compatible with each other: swapping weight reflows the line.

Cap height 720, x-height 500, ascender 950, descender -244 and line gap 6 are identical in all seven, and USE_TYPO_METRICS is set, so the default line box is a consistent 1.2 em everywhere. fsType is 8 (editable embedding), which permits web use.

Gaps and synthesis

what the browser does off-ramp

The family stops at 700. Asking for anything heavier, or leaning on a tag that implies bold, is where a build silently goes wrong: the browser falls back to Bold and is free to fake the rest. Compare each pair below. If the left and right of a row differ, the browser has synthesised something.

Reading specimen

16px / 1.6

The same paragraph in every cut at a real body size, for judging which weights actually hold up as text. Thin and Extralight are display weights in practice: at 16px they thin out badly on a dark background.

Stylistic sets

ss01 → ss20

All twenty sets, with the names the foundry put in the font. Left is the set off, right is the set on; only the differing characters are worth looking at. Each sample was picked so that the set has something to change, and every row was confirmed against harfbuzz rather than eyeballed. Note ss13 → ss20 are a second complete alternate scheme labelled "Mikola", and ss02, ss03 and ss04 are three competing y designs, so those are mutually exclusive choices rather than things to stack.

Icon ligatures

rlig, 36 triggers

Typing // plus a keyword substitutes an icon. These sit in rlig (required ligatures), which is on by default and which font-variant-ligatures: none does not switch off: only font-feature-settings: 'rlig' 0 does, and that also drops the ff/ft ligatures with it. Anywhere user-entered copy can contain //word, this fires.

The same icons are mapped to emoji codepoints too. Fifteen of them sit at their real Unicode positions (U+1F512 lock, U+1F50E search, U+1F60A smile and so on), so an emoji pasted into copy set in this family renders as the foundry's monochrome icon, not as the system's colour emoji. Turning rlig off does not affect that: it is a straight cmap mapping. Worth knowing before this family goes near user-generated content.

Figures, fractions, ligatures

the remaining features

Everything else the family ships. Each row is the same string with one feature switched, so the difference is the feature.

Character set

426 mapped, 645 glyphs

Read out of the font's own cmap, so everything below is a real glyph rather than a fallback from Inter. Latin Extended: enough for Western and Central European languages, plus arrows, circled figures, vulgar fractions and the icons. No Greek beyond Ω and a few symbols, no Cyrillic. Combining marks and the spacing characters are left out.