Shopifont

Shopify Refresh · Free, no signup · Last updated

Refresh Theme Typography CSS Variables

Refresh exposes `--font-heading-family`, `--font-heading-style`, `--font-heading-weight`, and the matching `--font-body-*` tokens on `:root` — overriding them is the cleanest way to swap typography without forking core theme files.

Refresh centralizes its entire typography system in six CSS custom properties on `:root`. Because a sport- and energy-leaning free theme tuned for high-saturation imagery and bold supporting copy., every page-level heading and paragraph reads from those tokens — meaning a single override block can retarget the whole site.

Sport and energy brands can carry a heavier, higher-contrast display face for headings to convey momentum — just keep the body face utilitarian so spec and price copy stays readable at a glance.

Generator

Faces(1 face)

Face 1·Regular 400

Formats

Each face becomes its own @font-face block. The filename field on each row defaults to a clean pattern, but you can paste the exact filename you uploaded if your foundry shipped it with a different name — no renaming required.

Apply to
Controls which Dawn typography roots the CSS variable block overrides.

Live preview

Add to cart · Free shipping · 30-day returns

Drop a WOFF2 / WOFF / TTF file here to preview your actual font. The file stays in your browser — nothing is uploaded.

Paste these three blocks in order. They're independent files in your theme — copying one without the others won't break the store.

Step 1: @font-face CSS

Upload your font files to the theme's assets/ folder, then paste this at the bottom of assets/base.css. Shopify's asset_url filter resolves the file paths at render time.

@font-face {
  font-family: "My Brand Sans";
  src: url({{ 'my-brand-sans.woff2' | asset_url }}) format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

How to use this on Refresh

  1. The six tokens are: `--font-heading-family`, `--font-heading-style`, `--font-heading-weight`, `--font-body-family`, `--font-body-style`, and `--font-body-weight`.

  2. Refresh sets them in `base.css` from the values configured in the Theme Editor.

  3. To swap them, you append a `:root { ... }` override to the bottom of `assets/base.css` — that override loads after the theme's defaults and wins by source order.

  4. Every heading and body selector picks up the change without any template edits, and the override survives Refresh updates because you're modifying values, not the cascade chain itself.

Typography Kit

Skip straight to a finished result

Every step above, already done for you on Refresh — a proven font pairing, the install code pre-built, the licensing confirmed, and a specimen so you see it before you ship it. One-time, instant download, no account.

See the Typography Kits$19 · one-time · instant download

Frequently asked questions

  • Which CSS variables control typography in Refresh?

    Refresh sets six tokens on `:root`: `--font-heading-family`, `--font-heading-style`, `--font-heading-weight`, `--font-body-family`, `--font-body-style`, and `--font-body-weight`. Heading selectors read the heading triplet, body selectors read the body triplet — there's no per-section override.

  • What's the difference between --font-heading-family and --font-body-family in Refresh?

    `--font-heading-family` is consumed by every heading-level rule. `--font-body-family` is consumed by paragraphs, list items, form copy, and the cart drawer in Refresh. Setting only one lets you mix a display heading face with the theme's default body face on body — a useful split when your custom font is large.

  • How do I override Refresh's typography without touching base.css directly?

    Add a `:root { --font-heading-family: ... }` block at the bottom of `assets/base.css`. The cascade resolves the later declaration as the winner, so Refresh's defaults are overridden without removing them. This pattern survives Shopify's quarterly theme updates, which often modify `base.css` but rarely touch the trailing customization region.

  • Will a CSS-variable typography override survive a Refresh update?

    Yes — provided you append the override at the bottom of `assets/base.css` rather than editing the original token declarations. Refresh ships theme updates that may rewrite the `base.css` defaults, but appended override blocks are preserved as long as they live below the auto-generated section. As a hardening step, paste the override behind a clearly marked comment so future you (or a subsequent developer) recognizes it as customization.

Still choosing a font?

Browse the best free fonts for Shopify with performance and licensing notes, the Shopify font pairings that work, or run the 30-second typography audit to get a recommendation for your store.