Zach’s ugly mug (his face) Zach Leatherman

The Web Font Loading Glossary

August 13, 2017 On Twitter (archived)

After publishing The Comprehensive Guide to Font Loading Strategies, I had a few requests to define a few terms used there. This document is a response to those requests. If something is missing below, please let me know on Twitter @zachleat or in the comments.

@font-face Descriptors
Descriptors are key-value pairs inside of the font-face block. Often incorrectly referred to as properties (properties are on the DOM elements themselves). Examples include font-display, font-weight, font-style, and a few others.
Font Matching Algorithm
How the browser matches a font-family CSS property on an element to an appropriate @font-face block. Not all the properties have to match exactly to descriptors—just the font-family. The rest are fuzzy-matched. If there isn’t an exact match, this may result in font synthesis. Read more at Lazy Loading Web Fonts is Probably Not What You Want and the W3C specification.
Font Synthesis, also Faux-bold and Faux-italic
Controls how bold and italic variations of a roman web font are rendered, if independent web fonts for these variations don’t have appropriately matched @font-face blocks. Also known as Faux-bold or Faux-italic rendering. Use the Faux-pas project to highlight when this happens on your site. A few browsers support the font-synthesis CSS property to control this (see the MDN Browser Compatibility for font-synthesis). Read more at the W3C Specification.
System Fonts
Fonts that are available locally on an operating system without making any network requests. Think Helvetica or Arial, Times or Times New Roman. Availability varies by operating system. Search for compatibility information.
Modifying the font file to include only a small portion of the original glyphs and features, typically used to optimize a font file for a single language on the web. This can be dangerous because no language is an island—proper nouns can crop up in many different places! This results in smaller font files but may also violate your font’s license agreement. Use with the unicode-range descriptor for even better results. The glyphhanger tool can help you diagnose what characters you need on a statically generated site to better subset your web font files.
Roman font
Traditionally lowercased, roman is used to mean non-italic but in my experience (while perhaps not pedantically correct) it’s usually extended to non-bold as well. The “regular” font. Read a Non-italicized FAQ on Stack Exchange or Emphasis on Wikipedia.


Flash of Invisible Text: Default browser behavior to render text invisible while the web font is loading. In modern browsers, FOIT lasts a maximum of three seconds. Sometimes when I’m being incredibly accurate (pedantic), I’ll differentiate between FOIT ∞ and FOIT 3s by including the timeout as a suffix. When people say that web fonts are blocking resources, they are likely referring to FOIT. FOIT is our enemy.
Flash of Unstyled Text: Default behavior to render text with the fallback system font while the web font has loaded. Fallback text renders after the FOIT timeout has passed—usually three seconds. Internet Explorer and Edge don’t wait—they render fallback text immediately ❤️. FOUT is preferable to FOIT but care must be taken to minimize its reflow effect.
Flash of Faux Text: A font loading strategy to render a roman web font first, and then use font-synthesis to render bold and italic variations immediately while the remaining true bold and true italic web font variations continue to load.

< Newer
The Ten Twitter Commandments
Older >
I made a style guide for my personal web site and you should too.

Zach Leatherman IndieWeb Avatar for a builder for the web at IndieWeb Avatar for He is the creator and maintainer of IndieWeb Avatar for https://www.11ty.devEleventy (11ty), an award-winning open source site generator. At one point he became entirely too fixated on web fonts. He has given 79 talks in nine different countries at events like Beyond Tellerrand, Smashing Conference, Jamstack Conf, CSSConf, and The White House. Formerly part of Netlify, Filament Group, NEJS CONF, and NebraskaJS. Learn more about Zach »


Lukas GrebeIndieWeb Avatar for https://www.albjov.comIndieWeb Avatar for

1 Like

Dash 🍜
Shamelessly plug your related post

These are webmentions via the IndieWeb and

Sharing on social media?

This is what will show up when you share this post on Social Media:

How did you do this? I automated my Open Graph images. (Peer behind the curtain at the test page)