Font Scheme
Schema for font-scheme records in the pptx.gallery library. Each scheme pairs a major (heading) and minor (body) font family in the OOXML majorFont/minorFont sense, scoped to a target app (PowerPoint or Google…
https://openpresentation.org/schema/opf-font-scheme/v1
spec/schemas/font-scheme.schema.json
Field index
| Field | Type | Req | Default | Description |
|---|---|---|---|---|
| $schema | const | yes | — | Identifies this record as a font scheme in the openpresentation.org catalog. |
| id | string | yes | — | Stable slug used by OPF documents to reference this font scheme. Lowercase kebab-case. |
| name | string | yes | — | Human-readable scheme name shown in pickers. |
| major | string | yes | — | Heading (major) font family — mirrors the OOXML majorFont entry. |
| minor | string | yes | — | Body (minor) font family — mirrors the OOXML minorFont entry. |
| type | enum | — | — | High-level typographic class of the scheme. |
| app | enum | — | — | Target application this font pairing is intended for. |
| languageFamily | enum | — | — | OOXML font-language family this scheme is intended for: 'latin' for Latin-script content, 'ea' for East Asian scripts, 'cs' for Complex Scripts. |
| languages | array<string> | — | — | Optional list of human-readable language names this scheme is curated for. Useful for picker UIs that group fonts by language coverage. |
| textSample | string | — | — | Short specimen string used by picker UIs to preview the scheme. |
| summary | string | — | — | One-sentence positioning of the font pairing. |
| description | string | — | — | Longer prose describing the font scheme and where it shines. |
| tags | array<string> | — | — | Free-form labels for filtering and search. |
| preview | object | — | — | Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional; engines fall back gracefully when previews aren't available. |
$schema
Type: const · Required · Default: —
Identifies this record as a font scheme in the openpresentation.org catalog.
{
"$schema": "https://openpresentation.org/schema/opf-font-scheme/v1"
}id
Type: string · Required · Default: — · Pattern: ^[a-z][a-z0-9-]*$
Stable slug used by OPF documents to reference this font scheme. Lowercase kebab-case.
{
"id": "aptos"
}name
Type: string · Required · Default: —
Human-readable scheme name shown in pickers.
{
"name": "Aptos"
}major
Type: string · Required · Default: —
Heading (major) font family — mirrors the OOXML majorFont entry.
{
"major": "Aptos Display"
}minor
Type: string · Required · Default: —
Body (minor) font family — mirrors the OOXML minorFont entry.
{
"minor": "Aptos"
}type
Type: enum · Optional · Default: —
High-level typographic class of the scheme.
{
"type": "sans-serif"
}app
Type: enum · Optional · Default: —
Target application this font pairing is intended for.
{
"app": "PowerPoint"
}languageFamily
Type: enum · Optional · Default: —
OOXML font-language family this scheme is intended for: 'latin' for Latin-script content, 'ea' for East Asian scripts, 'cs' for Complex Scripts.
{
"languageFamily": "latin"
}languages
Type: array<string> · Optional · Default: —
Optional list of human-readable language names this scheme is curated for. Useful for picker UIs that group fonts by language coverage.
{
"languages": [
"Chinese (simplified)",
"Chinese (traditional)",
"Japanese",
"Korean"
]
}textSample
Type: string · Optional · Default: —
Short specimen string used by picker UIs to preview the scheme.
{
"textSample": "Smooth professional look"
}summary
Type: string · Optional · Default: —
One-sentence positioning of the font pairing.
{
"summary": "PowerPoint-default sans-serif curated for general business decks."
}description
Type: string · Optional · Default: —
Longer prose describing the font scheme and where it shines.
{
"description": "Aptos is the default Microsoft 365 sans-serif. The major (display) cut adds optical weight for headings, and the minor (text) cut keeps body copy readable at smaller sizes."
}preview
Type: object · Optional · Default: —
Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional; engines fall back gracefully when previews aren't available.
{
"preview": {}
}