font-synthesis

Controls synthetic font styling (bold, italic, small-caps). Prevents browser from creating fake styles when the font lacks variants.

Quick example

body { font-synthesis: none; /* prevent synthetic bold/italic */ }
.bold { font-weight: bold; }

Syntax

none | [ weight || style || small-caps || position]

Quick facts

Initial value
weight style small-caps position
Inherited
Yes

Examples

Prevent synthetic bold from unrequested font weights

.no-synthetic {
  font-family: "OpenSans", sans-serif;
  font-weight: 700;
  font-synthesis: none;
  /* If 700 weight isn't available, don't fake it */
}

Disable synthetic font creation to ensure only real font weights display.

Allow only italic synthesis

em {
  font-family: "MyFont", serif;
  font-synthesis: style;
  /* Allow synthetic italic but not synthetic bold */
}

Control which font properties can be synthetically created.

Require small-caps

.small-caps {
  font-family: "SourceSerif", serif;
  font-variant: small-caps;
  font-synthesis: weight style small-caps;
}

font-synthesis: small-caps lets the browser synthesize small-caps if unavailable.

font-synthesis Browser Support

Widely available Since 2018 85% global usage

This feature is well established and works across many devices and browser versions. It has been available across browsers since 2018.

Safe to use without fallbacks.

Common pitfalls

Synthetic fonts look worse than real ones

If you set font-synthesis: none and a weight isn't available, the browser falls back to a thinner weight. This can break layouts.

Default behavior creates synthetics

By default, browsers synthesize missing bold/italic. Only set font-synthesis if you want to prevent this.

ESC