← Chrome 148 reference

v148 · fonts · shipped

Open Font Format avar2 text shaping and glyph rendering

Chrome 148 adds rendering support for OpenType's avar table version 2, which lets variable font designers define axis relationships — a "temperature" slider that simultaneously adjusts weight, contrast, and optical size — producing richer, more coherent designs without extra masters.

at a glance

Shipped inChrome 148 (desktop, Android, WebView)
StatusEnabled by default
FlagNone
StandardsOpenType Specification (Microsoft) — avar version 2; Boring Expansion Spec (HarfBuzz)
SpecOpenType — avar Axis Variations table
ExplainerBoring Expansion Spec — avar2
ChromeStatus5169590743203840 — Open Font Format avar2

why it exists

OpenType Variable Fonts (avar version 1) let a single font file interpolate along axes like weight, width, and slant. But axes are independent: changing weight doesn't affect how slant is rendered, even if the design calls for it. avar version 2 adds axis remapping: each axis's value is further modified by contributions from one or more other axes, expressed using the font's own variation mechanism. This lets a designer create a single "expression" slider that meaningfully adjusts a dozen underlying axes in concert — something that was only possible through hand-authored multiple masters before. For web developers, avar2 means fonts that use it will render as intended in Chrome 148+ without any CSS changes. For font designers, avar2 unlocks a new tier of expressive variable fonts.

Source: Boring Expansion Spec, OpenType avar table spec, blink-dev Intent to Ship, May 2026.

using avar2 fonts on the web

No new CSS is required. If a font uses avar2 internally, Chrome 148+ will honour its axis relationship tables automatically when you use font-variation-settings or higher-level font-feature properties.

Example: a font with a semantic "expression" axis

@font-face {
  font-family: 'AVar2Font';
  src: url('/fonts/avar2-demo.woff2') format('woff2');
}

.expressive {
  font-family: 'AVar2Font', sans-serif;
  /* Setting a single custom axis, the font's avar2 tables
     coordinate weight, contrast, and x-height automatically */
  font-variation-settings: 'EXPR' 0.8;
}

Inspecting variable font axes

/* You can still set individual axes directly; avar2 remapping
   is applied on top of the values you specify */
.fine-control {
  font-family: 'AVar2Font', sans-serif;
  font-variation-settings: 'wght' 700, 'wdth' 85, 'opsz' 18;
}

Detecting avar2 support (CSS)

Chrome 148 added support via tech(avar2) in @font-face src::

@font-face {
  font-family: 'AVar2Font';
  /* prefer the avar2 version when the browser supports it */
  src: url('/fonts/avar2.woff2') format('woff2') tech(avar2),
       url('/fonts/fallback.woff2') format('woff2');
}
Source: blink-dev Intent to Ship thread, w3c/csswg-drafts issue #10599, May 2026.

browser support

BrowserSupport
Chrome 148+ (desktop, Android, WebView)Enabled by default
FirefoxShipped
SafariShipped
Source: blink-dev Intent to Ship and chromestatus.com, May 2026.

see also