{}OPF
DocsSchema referenceEdit on GitHub

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…

Schema $id

https://openpresentation.org/schema/opf-font-scheme/v1

Source

spec/schemas/font-scheme.schema.json

Field index

FieldTypeReqDefaultDescription
$schemaconstyesIdentifies this record as a font scheme in the openpresentation.org catalog.
idstringyesStable slug used by OPF documents to reference this font scheme. Lowercase kebab-case.
namestringyesHuman-readable scheme name shown in pickers.
majorstringyesHeading (major) font family — mirrors the OOXML majorFont entry.
minorstringyesBody (minor) font family — mirrors the OOXML minorFont entry.
typeenumHigh-level typographic class of the scheme.
appenumTarget application this font pairing is intended for.
languageFamilyenumOOXML font-language family this scheme is intended for: 'latin' for Latin-script content, 'ea' for East Asian scripts, 'cs' for Complex Scripts.
languagesarray<string>Optional list of human-readable language names this scheme is curated for. Useful for picker UIs that group fonts by language coverage.
textSamplestringShort specimen string used by picker UIs to preview the scheme.
summarystringOne-sentence positioning of the font pairing.
descriptionstringLonger prose describing the font scheme and where it shines.
tagsarray<string>Free-form labels for filtering and search.
previewobjectVisual 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.json
{
  "$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.json
{
  "id": "aptos"
}

name

Type: string · Required · Default:

Human-readable scheme name shown in pickers.

name.json
{
  "name": "Aptos"
}

major

Type: string · Required · Default:

Heading (major) font family — mirrors the OOXML majorFont entry.

major.json
{
  "major": "Aptos Display"
}

minor

Type: string · Required · Default:

Body (minor) font family — mirrors the OOXML minorFont entry.

minor.json
{
  "minor": "Aptos"
}

type

Type: enum · Optional · Default:

High-level typographic class of the scheme.

type.json
{
  "type": "sans-serif"
}

app

Type: enum · Optional · Default:

Target application this font pairing is intended for.

app.json
{
  "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.json
{
  "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.json
{
  "languages": [
    "Chinese (simplified)",
    "Chinese (traditional)",
    "Japanese",
    "Korean"
  ]
}

textSample

Type: string · Optional · Default:

Short specimen string used by picker UIs to preview the scheme.

textSample.json
{
  "textSample": "Smooth professional look"
}

summary

Type: string · Optional · Default:

One-sentence positioning of the font pairing.

summary.json
{
  "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.json
{
  "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."
}

tags

Type: array<string> · Optional · Default:

Free-form labels for filtering and search.

tags.json
{
  "tags": [
    "latin",
    "sans-serif",
    "default"
  ]
}

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.json
{
  "preview": {}
}