Ollie typography

Ollie Fonts Not Loading: theme.json, Mona Sans and the Font Library

Ollie never asks Google for a font. Every typeface it uses sits in the theme folder as a local .woff2 file, declared in theme.json. So when your headings turn up in Times New Roman, or stay blank for a beat on a phone, the usual suspects in other themes are already off the list, and the real ones are easier to find.

October 16, 2026 · 8 min read

The short answer

When Ollie's fonts seem not to load, the file is usually fine and something else is wrong: theme.json's fontDisplay block setting hides text until the file arrives, a typography preset switch left a style pointing at a family that no longer exists, a Font Library file was lost in a migration, or styles were set under a different theme. Check them in that order.

On this page
  1. Blank, borrowed or swapped: which font failure you have
  2. One variable file doing the work of four families
  3. What stops Ollie's type, ranked for this theme
  4. Putting Ollie's typography back
  5. A typography routine that survives redesigns
  6. Fonts decided in an admin screen, or in code

Blank, borrowed or swapped: which font failure you have

Font trouble on an Ollie site comes in three shapes, and each shape points somewhere different. Test logged out, in a private window, on a phone as well as a laptop, and note which one you see.

  • Text is invisible for a moment, then appears in the right font. The font loads; the theme tells the browser to hide text while it waits.
  • Text appears in a system font and stays that way. Either the file failed, or the style asks for a family the site no longer defines.
  • Headings changed typeface after a redesign, while body text still looks right. A preset or style variation switch is the prime suspect.
  • A font from the Font Library works in the editor but not live, or broke after moving the site. That is a file path problem.

The general guide to theme fonts not loading covers Google Fonts blocking, icon fonts and CORS across every theme. This page sticks to the parts only an Ollie site has.

One variable file doing the work of four families

Ollie 1.6.3's theme.json declares four families, Mona Sans, Mona Sans Expanded, Mona Sans Condensed and Mona Sans Narrow, and all four point at the same file: assets/fonts/mona-sans/Mona-Sans.woff2. They differ only in font-stretch. Body text uses weight 430, headings 600, both cut from that one variable file. WordPress turns these declarations into @font-face rules and prints them inline in the page head, in a style element with the class wp-fonts-local.

Every face carries fontDisplay set to block. So do the ten typography presets in the styles/typography folder, which swap in the other bundled typefaces. That single file has a useful consequence for diagnosis. If body text and headings both fall back at once, suspect the file or its @font-face rule. If only headings changed, suspect the family definition.

Ollie 1.6.3 typography presets and the local files each one loads (all set to font-display: block)
Body textHeadings
Preset 1Mona SansMona Sans Expanded (same file)
Preset 2DM SansDM Sans
Preset 3Mona SansBig Shoulders
Preset 4Space GroteskSpace Grotesk
Preset 5Source Serif 4Montagu Slab
Preset 6Mona SansFraunces
Preset 7Source Serif 4Source Serif 4
Preset 8Mona SansMona Sans
Preset 9Mona SansMona Sans Narrow (same file)
Preset 10GeistGeist

What stops Ollie's type, ranked for this theme

1. The font is loading, just behind a curtain

Block tells the browser to keep text invisible until the font file lands. On office Wi-Fi with a warm cache that takes no time. On a phone with a weak signal, the hero headline is simply absent for a while, and an owner reasonably reports that fonts are broken. Check: in Chrome's developer tools, throttle the network to a slow mobile profile and reload. Text that appears late in the correct font is a display problem, not a loading one. The Ollie speed guide covers what it does to Largest Contentful Paint.

2. A preset switch orphaned a font choice

Each preset and style variation redefines the site's font families. A heading you set to Fraunces under Preset 6 keeps asking for Fraunces after you move to Preset 1, which does not define it. The browser cannot resolve a font variable that has no value, so the text inherits from its parent or drops to the browser default. Check: inspect the text. A class such as has-fraunces-font-family with no matching rule, or an empty font variable in the computed styles, confirms it.

3. A Font Library file went missing

Fonts added through the Font Library, available since WordPress 6.5, are stored by default in wp-content/uploads/fonts, a location the font_dir filter can change. A migration that copied the theme but skipped that folder, or a move from staging that kept the old domain in the stored font addresses, leaves the @font-face rule aiming at nothing. Check: filter the Network tab by Font and reload. A 404, or a font address on the old domain, names the problem.

4. The styles were saved under another theme

WordPress saves Global Styles, including typography choices and the fonts you activated, against the theme that was active at the time. Switch from Ollie to an Ollie child theme, or back, and those choices stay behind. Check: open Styles in the Site Editor. If typography shows Ollie's defaults rather than your settings, you are looking at a different theme's record.

5. An optimizer or CDN got between the page and the file

Ollie's fonts arrive through an inline style block, so a plugin that strips or delays inline CSS can remove them. Serving theme files from a CDN hostname without the right CORS header makes browsers refuse the font. Check: view source and search for wp-fonts-local; then read the console for a blocked-by-CORS message.

Putting Ollie's typography back

  1. 1

    Reproduce it logged out

    Private window, cache warm, real phone if the complaint came from one. Note which text fails: everything, or headings only.

  2. 2

    Read the Network tab

    Filter by Font. You should see Mona-Sans.woff2 or your preset's file with status 200 from your own domain. Note every 404, redirect or foreign domain.

  3. 3

    Confirm the @font-face rules exist

    View source and find the wp-fonts-local style block. If it is missing, turn off your optimizer's CSS features and reload.

  4. 4

    Reapply typography in Styles

    In the Site Editor, open Styles, then Typography. Reselect the preset you want, then reset any individual block whose font was set by hand under an older preset.

  5. 5

    Repair Font Library files

    Reinstall a missing family from the Font Library, or restore the uploads/fonts folder from backup. After a domain move, update any stored font addresses that still name the old site.

  6. 6

    Decide on block or swap

    If the complaint is a blank headline on slow phones, change fontDisplay to swap for the families you use, through the wp_theme_json_data_theme filter in a small site plugin. Keep the edit outside Ollie's own files so updates do not erase it.

  7. 7

    Purge caches and retest

    Clear the page cache, the host cache and any CDN, then check three page types on a throttled phone profile.

Swap has a cost. When the real font replaces the fallback, lines can rewrap and nudge the page; layout shift on WordPress themes shows how a closely matched fallback stack keeps that small. If CSS edits of any kind refuse to show, see CSS changes not showing.

A typography routine that survives redesigns

  • Choose fonts in Styles, not block by block. A font set on one heading is the one that gets orphaned at the next preset change.
  • Before switching presets or style variations, list the blocks where you overrode the font, so you can recheck them after.
  • Decide on a child theme before you customize anything in the Site Editor, not after.
  • Add wp-content/uploads/fonts to your backup and migration checklist alongside the rest of uploads.
  • Keep the family count low. Every Ollie preset uses one or two font files; adding Font Library families on top adds downloads, not just choices.

The rest of Ollie's quirks live on its sibling pages: mobile menus and broken layouts. The Ollie review covers the theme as a whole, and Twenty Twenty-Five's font guide shows the same theme.json mechanism on WordPress's default theme. Every other theme's problems are filed in the troubleshooting section.

Fonts decided in an admin screen, or in code

Ollie handles fonts better than most WordPress themes: local files, no Google request, one variable file for the default look. What it cannot control is the admin screen. Anyone with Site Editor access can switch presets, install a family from the Font Library or set a heading's font by hand, and nothing checks the result on a slow phone before visitors see it.

In a Next.js build, next/font downloads the files at build time, serves them from the site's own domain and generates a fallback matched to the real font's proportions, and typography changes are reviewed before deploy. It costs more up front and needs a developer for design changes. Ollie vs Next.js weighs the trade, and moving from Ollie to Next.js explains the move. To stay on Ollie with the fonts tuned properly, our theme speed optimization service handles display settings, preloads and fallbacks as one job.

Questions people ask before they call

Not from Google's servers. Ollie bundles its typefaces, Mona Sans by default plus seven others for its presets, as local .woff2 files in the theme folder and declares them in theme.json. Fonts you install later from the Font Library's Google Fonts collection are downloaded to your own server too, so no visitor request goes to Google either way.

Ollie's theme.json sets fontDisplay to block for every bundled font, so the browser hides text until the font file arrives. On a slow connection that gap shows. Changing fontDisplay to swap through a small plugin shows a fallback font immediately. Keep the change outside Ollie's own files so theme updates leave it alone.

Style variations and typography presets redefine which font families exist on the site. Anything you set by hand under the old choice may now point at a family the new one does not define, and it falls back. Reselect fonts in Styles, then check headings and buttons where you had overridden the font individually.

WordPress stores Font Library files in wp-content/uploads/fonts by default. If the migration skipped that folder, or the stored font addresses still name the old domain, the browser requests files that are not there. Restore the folder or reinstall the families, then purge caches and check the Network tab for 404s.

Usually not, and switching can cause one. Global Styles, including typography and activated fonts, are saved against the theme that was active when you set them. Move to a child theme after customizing and your choices stay with the parent. Decide on a child theme before customizing, or plan to reapply styles. Our troubleshooting team can do it for you.

Keep reading

Free · No obligation

Get your Ollie typography loading on every phone

Tell us which text looks wrong and where. We will trace the font from theme.json to the browser, fix it on a copy of your site and leave a short note of what changed.

Which of these sounds like you? (pick any)

Rather talk now? Call (210) 346-0848.

CallGet a quote