Overview
Font pairings combine three fonts (heading, body, and mono) with complete CSS configurations for typography across all HTML elements. Each pairing includes metadata, dependencies, CSS variables, and styles.Schema Structure
Root Fields
string
required
Unique identifier for the pairing, typically prefixed with
pairing-Example: "pairing-minimal", "pairing-brutalist"string
required
Registry type identifier. Always
"registry:style" for pairings.string
required
Base style to extend from. Use
"none" for standalone pairings.string
required
Human-readable title showing the pairing name and font combinationFormat:
"{Name} — {Heading} + {Body} + {Mono}"Example: "Minimal — Geist + Geist + Geist Mono"string
required
Descriptive text explaining the pairing’s aesthetic and design philosophy
string[]
required
Array of category tags for filtering and discoveryCommon categories:
"sans-serif", "serif", "minimal", "modern", "brutalist", "display", "bold"Dependencies
string[]
required
Array of URLs pointing to font configurations in the registryEach URL typically references 2-3 fonts:
- Heading font
- Body font
- Monospace font
"https://www.fonttrio.xyz/r/{font-name}.json"CSS Variables
object
required
Defines CSS custom properties for theme integration
CSS Styles
object
required
Complete typography styles for all HTML elements. Keys are CSS selectors, values are style objects.
object
required
Styles for primary headings
string
required
Font family, typically referencing
var(--font-heading)string
required
Font size in rem, em, or pxExample:
"2.25rem"string
required
Unitless line height valueExample:
"1.15"string
required
Letter spacing in em unitsExample:
"-0.025em"string
required
Font weight value (100-900)Example:
"700"object
Similar structure to h1, can target multiple selectors
object
required
Metadata
object
Additional metadata for preview and categorization
string
Sample text for font previewDefault:
"The quick brown fox jumps over the lazy dog"string[]
Array of mood descriptorsExamples:
["modern", "minimal"], ["raw", "brutalist"]string[]
Suggested use cases for the pairingExamples:
["SaaS", "developer tools"], ["portfolio", "art"]Complete Examples
Minimal Pairing
A clean, modern single-font pairing using Geist:Brutalist Pairing
A bold, high-contrast pairing with Archivo Black:CSS Override Behavior
When query parameters are provided to the API endpoint, the CSS properties are dynamically overridden:Example Request
Resulting CSS
The returned JSON will have modified CSS:app/api/r/[name]/route.ts:47-85
Usage in Next.js
See Also
Font Schema
Schema for individual font configurations
API Endpoints
Complete endpoint reference with examples