playground blog support

Blog posts

Article: Categorizing axes according to their effect on font metrics

Posted 25 November, 2016

All axes in variable fonts work in a piecewise linear manner, including their effect on metrics. However, it may turn out to be useful for variable font clients to know something more about the way a particular axis affects a font’s metrics.

I therefore propose the following four classes — all subcategories of piecewise linear, of course — reflecting different ways that metrics can change as an axis is adjusted. Once a client has determined which type of metrics-effect the axis has, it might offer a more suitable user interface for axis adjustment, or switch to a more efficient algorithm.

  1. Thanatometric: The metrics do not change as this axis is adjusted
  2. Linear: a) The metrics get wider in proportion to the axis setting. Many wdth axes work this way. b) The metrics get narrower in proportion to the axis setting. A wdth axis that worked in the (b) manner would be perverse. We need to know if we are talking about all glyphs adjusting at the same rate, or just that the axis is linear on a per-glyph basis.
  3. Monotonic: Either a) the metrics never decrease as the axis value increases, or b) they never increase as the axis value increases. Many wdth axes work in the (a) manner: every increase in the axis results in either an increase or no change in metrics. A wdth axis that worked in the (b) manner would be perverse.
  4. Non-monotonic: No holds barred. This includes piecewise linear simulations of sinusoidal and random functions.

Note that each category is a superset of the previous categories.

Using this categorization in practice:

  1. All axes of Zycon. All axes of Buffalo Gal. All axes of Lab. All axes of Jam. The Grade axis in all fonts, if it behaves as users would expect.
  2. Gingham’s wght axis. Gingham’s wdth axis. In general, all fonts made with just one set of gvar deltas for the metrics are linear on a per-glyph basis (in other words, fonts with no intermediate masters… in other words, fonts where the default instance is at the axis’s minimum or maximum).
  3. San Francisco’s wght axis. Zeitung’s wght axis. Many wdth axes and most wght axes would be expected to behave this way.
  4. No known examples, but there’s nothing wrong with them.

2b and 3b: The optical size axis often acts this way.

Storing some of this information inside the font is a potential next step. For example, it may turn out to be very useful to know that an axis does not affect metrics at all. There exist unused flags in the fvar table’s axis records, and one of them might be used to declare “this axis is thanatometric”. A client reading the flag would then be free to avoid potentially expensive text reflow when the relevant axis was adjusted. Finding the flag set could be a cue that the font is suitable for animation (like Zycon) or layering (like Jam and Lab).

In October I started a discussion on TypeDrawers about including the bit for thanatometry (which I called “static metrics”) in fvar axis records:

TypeDrawers: Suggestion to record in the font whether an axis affects metrics or not

Hrant Papazian notes that “thanatometric” is an awkward term for category 1. True, I didn’t really think it would catch on. Another candidate might be “static metrics”. But most established, perhaps, is “uniwidth”, as used by David Sudweeks in his excellent review of the history of these typefaces and why they are are useful, Uniwidth Typefaces, written for FontShop in 2015.