Measurement keys

Proposal of an extensible syntax for measurement names.

draft

Context

Because measurements are tied to variation axes, it is common for measurement names to follow the same convention of 4-letter tags (XOPQ, XTRA, etc). This system, however, works only until a certain level of complexity; as the number of axes/measurements increases (think of multi-script fonts), it gets harder to create meaningful names with only 4 letters – measurement names become cryptic, arbitrary, and hard to remember.

The measurements format itself allows strings of arbitrary length as measurement names.

The syntax below is a more expressive alternative to the 4-letter tags. It was sketched as a response to a proposal to store named values in the font lib, but could have other uses too.

Level 1

The simpler 3-part syntax is sufficient for naming measurements in single-script fonts:

measurement.direction.glyph

This syntax can be used to name global measurements, case-specific measurements, and subgroup-specific measurements.

Global measurements

tag key description
XOPQ stem.x.H general x opaque
YOPQ stem.y.H general y opaque
XTRA counter.x.H general x transparent
YTOS overshoot.y.O overshoot
XSHA hserif.x.H general x horizontal serifs
YSHA hserif.y.H general y horizontal serif
XSVA vserif.x.T general x vertical serifs

Case-specific measurements

tag key description
XTUC counter.x.H x transparent uppercase
XTLC counter.x.n x transparent lowercase
XTFI counter.x.zero x transparent figures

Subgroup-specific measurements

tag key description
XTUC counter.x.H x transparent uppercase straight
XTUR counter.x.O x transparent uppercase round
XTUD counter.x.V x transparent uppercase diagonal

Level 2

The 4-part syntax is intended for multi-script fonts. It extends the 3-part syntax above with a script prefix:

script.measurement.direction.glyph

Script-specific measurements

tag key description
XOUC latin.stem.x.H latin x opaque uppercase
YOUC latin.stem.y.H latin y opaque uppercase
XOAR arabic.stem.x.?? arabic x opaque
YOAR arabic.stem.y.?? arabic y opaque
XOCH chinese.stem.x.?? chinese x opaque
YOCH chinese.stem.y.?? chinese y opaque