Skip to content

Consider Red Hat Text for body copy (and re-evaluate Outfit after the cascade-layers fix) #65

Description

@SckyzO

Context

nauth.dev uses Red Hat Text and it reads noticeably better in body copy. Worth considering here.

What that site actually does:

nauth.dev this theme
Base / UI Red Hat Text (variable 300-700 + italics) Outfit
Headings inherits Red Hat Text Outfit
Mono system stack (SFMono / Menlo / Consolas) IBM Plex Mono
Loading Google Fonts CDN self-hosted woff2

Important caveat before deciding

The live demo was not rendering Outfit at all between v2.2.2 and v2.2.4. future.v4.useCssCascadeLayers made Lightning CSS inflate Infima's specificity (:not(#\#):not(#\#)), so Infima's --ifm-font-family-base: system-ui, ... outranked the theme's :root declaration. The self-hosted fonts were fine the whole time (6 @font-face, all woff2 served 200), but nothing ever requested Outfit, so the browser never downloaded it.

Fixed in #64 / v2.2.4. So any "Red Hat Text looks better" impression formed on the live site was comparing it against system-ui, not against Outfit. Re-judge once the demo redeploys before committing to a swap.

Why Red Hat Text could still win

Outfit is a geometric display face: strong for headings, less comfortable for long paragraphs. Red Hat Text is a humanist face designed for running text at small sizes. That is a real readability argument independent of the bug above.

Feasibility

  • License: SIL OFL 1.1 (Copyright 2024 The Red Hat Project Authors), same as Outfit and IBM Plex Mono, so it can be bundled under the existing self-hosting setup.
  • Variable font (weight axis 300-700), so one woff2 per subset, same shape as the current Outfit bundle. Added weight is comparable.

Options

  1. Split (preferred): keep Outfit for headings, Red Hat Text for body. Preserves the theme's visual identity, gains readability.
  2. Full swap: Red Hat Text everywhere, closest to nauth.dev, loses Outfit's display character.
  3. Opt-in: bundle both, switch via a variable. More package weight and more surface for little gain.

Impact

Any of these changes the default rendering for every consumer, so it warrants a minor release (v2.3.0) with an explicit CHANGELOG entry, not a quiet patch.

Next step

Re-check the demo after the v2.2.4 redeploy (Outfit actually visible), then decide between options 1 and 2. Happy to prototype option 1 on a branch for a side-by-side.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions