Shopifont

Shopify Dawn · Free, no signup · Last updated

Dawn Theme Typography CSS Variables

Dawn 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.

Dawn centralizes its entire typography system in six CSS custom properties on `:root`. Because the Shopify OS 2.0 reference theme that ships with every new store and powers the largest install base of any free theme., every page-level heading and paragraph reads from those tokens — meaning a single override block can retarget the whole site.

Generator

Formats
WOFF2 covers ~97% of modern traffic. Add WOFF / TTF only if you need legacy fallbacks.
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

Paste at the bottom of assets/base.css. Uses Liquid's asset_url filter — Shopify resolves the path 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 Dawn

  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. Dawn 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. Selectors like .section-header__heading, .product__title pick up the change without any template edits, and the override survives Dawn updates because you're modifying values, not the cascade chain itself.

Frequently asked questions

  • Which CSS variables control typography in Dawn?

    Dawn 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 Dawn?

    `--font-heading-family` is consumed by every heading-level rule, including .section-header__heading, .product__title. `--font-body-family` is consumed by paragraphs, list items, form copy, and the cart drawer in Dawn. Setting only one lets you mix a display heading face with Assistant on body — a useful split when your custom font is large.

  • How do I override Dawn'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 Dawn'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 Dawn update?

    Yes — provided you append the override at the bottom of `assets/base.css` rather than editing the original token declarations. Dawn 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.