Slide Design
A slide's design: every Design field except dimensions. A PPTX has one slide size, so the size is set once, on the deck's design.dimensions (or its theme), and a slide's design cannot set it. A slide-level theme whose resolved dimensions differ from the deck's is a validate warning (opf/slide-theme-dimensions); exporting such a deck to PPTX fails with mixed-slide-dimensions.
Metadata
Field index
This definition uses the forms or value constraints below.
allOf 1 · ref:Design
Referenced Design · object
Visual design system applied to the presentation; individual slides may override fields via Slide.design.
| Field | Type | Req. | Default | Description |
|---|---|---|---|---|
| theme | ref:CatalogReference | — | — | Theme for the deck: a themes reference, a bare id ('minimal') or 'name:id' ('acme:brand'). The theme supplies the default colour scheme, font scheme, background and dimensions; design.colorScheme, design.fontScheme, design.background and design.dimensions override it field by field. A reference that resolves nowhere is the warning opf/unresolved-reference and engines use the engine default theme. |
| colorScheme | string | ref:ColorScheme | — | — | Color scheme for the presentation. Accepts two forms: - A colorSchemes reference: a bare id ('cool-horizon') or 'name:id' ('acme:ocean'). - Object form: a ColorScheme with an optional 'id' reference as the base plus slot/role overrides. Without 'id', the overrides apply on top of the engine default colour scheme. Without either, the theme's colorScheme applies, then the engine default colour scheme. |
| fontScheme | string | ref:FontScheme | — | — | Font scheme for heading, body, accent, and code text. Accepts two forms: - A fontSchemes reference: a bare id ('aptos') or 'name:id' ('acme:inter'). - Object form: a FontScheme with an optional 'id' reference as the base plus pair/role overrides. Without either, the theme's fontScheme applies, then the engine default font scheme. |
| dimensions | ref:DimensionPreset | ref:Dimensions | — | — | Slide dimensions and aspect ratio. String shorthand such as 'widescreen' is equivalent to { preset: 'widescreen' }.
|
| background | ref:BackgroundShortcut | ref:Background | — | — | Default slide background applied across the deck unless overridden on a slide (slides.N.design.background); the resolved theme's background is the fallback. A background is the only canvas fill and never moves content. String shorthand accepts theme slots ('light1', 'light2', 'dark1', 'dark2'), hex colors, or an image source starting with 'asset:', 'https://', 'data:', './' or '../' (a cover image); object forms support theme, solid, gradient, image, or pattern fills.
|
| logo | string | const | — | — | Which logo covers, section dividers and picture bullets draw. Logos live on the organization (Organization.logo); without this field covers and sections draw the primary organization's full logo and picture bullets its icon. A logo reference overrides that: 'var:organization.beta.logo' draws organization beta's logo, and a reference that names a shape ('var:organization.logo.wordmark') draws that shape everywhere this field applies. false draws no logo. A slide's design.logo overrides the deck's; absence inherits. An override naming an organization without a logo draws nothing (validation warns). Placement (reference engines, vetoable): on a cover or section slide (no body payload on a heading-only layout such as title, title-subtitle or section-divider, or no layout) the logo is drawn at the top-left of the free area, inside the slide padding and below any header furniture, in a box 56 reference pixels tall and at most four times as wide; the tag/title/subtitle group then centers in the remaining span. Content slides never get an automatic logo; a header or footer zone places one with image: 'var:organization.logo.icon'. composeSlide returns the cover box as geometry.logo.
|
| watermark | const | ref:Asset | ref:Watermark | — | — | Optional decorative watermark applied across slides: an image or a text stamp, in the fixed frame and at the opacity described on Watermark. Use false to suppress an inherited watermark in slide-level design; a string or Asset is the image at opacity 0.08.
|
| header | const | ref:HeaderFooter | — | — | Repeated header furniture rendered outside the main slide content. Use false to suppress an inherited header.
|
| footer | const | ref:HeaderFooter | — | — | Repeated footer furniture rendered outside the main slide content. Use false to suppress an inherited footer.
|
| titleAlignment | enum | — | — | Default horizontal alignment for the title heading area in resolved layouts. Effective value: the slide's design, then the deck's design, then the theme's design.titleAlignment, then the layout record's design.titleAlignment, then the engine default.
|
| contentAlignment | enum | — | — | Default horizontal alignment for body/content regions in resolved layouts. Effective value: the slide's design, then the deck's design, then the theme's design.contentAlignment, then the layout record's design.contentAlignment, then the engine default. A cover's tag and subtitle follow titleAlignment unless the slide's own design sets contentAlignment.
|
| contentBox | boolean | — | — | Whether body/content regions are rendered inside a visible card or surface. Effective value: the slide's design, then the deck's design, then the theme's design.contentBox, then the layout record's design.contentBox, then the engine default. |
| contentDirection | enum | — | — | Axis along which parallel body content is arranged: 'vertical' is a column, 'horizontal' a row. Effective value: the slide's design, then the deck's design, then the theme's design.contentDirection, then the layout record's design.contentDirection. On a slide with a template layout (OPF 0.19) it turns every flowing region of the slide into one row or one column, below the slide's own composition.mode, columns and weights, which arrange its first primary flowing region. On an automatic slide (and a 0.18 record) it sets the root arrangement mode when no composition.mode is set on the slide or on its layout record. Promoted regions (left, top:left, ...) keep their explicit geometry and nested groups keep their own composition.
|
| chartPrimary | enum | — | — | Where the primary chart sits relative to supporting content. Effective value: slide design, then deck design, then the layout record's design.chartPrimary. It applies to automatic slides only; a template layout says the same with its regions (chart-beside). When the slide has no promoted regions and no composition.mode of its own, and its root nodes mix at least one chart with other content, the first chart becomes a primary track and the other nodes form one synthetic sub-grid: 'left'/'right' is a two-track row and 'top'/'bottom' a two-track column, weighted 3:2 in favor of the chart; explicit root columns and weights are ignored while it applies. 'none' (the default) keeps the ordinary automatic grid with equal weight. Automatic composition builds direct content groups; template regions remain authoritative.
|
| imageFit | enum | — | — | Default fit of image blocks (and Slide.image) that set no fit of their own: 'cover' fills the frame and crops what overflows around the block's focus, 'contain' shows the whole picture centered in the frame, 'stretch' scales it to the frame exactly. Effective value: the slide's design, then the deck's design, then the theme's design.imageFit, then the layout record's design.imageFit, then 'cover'. Backgrounds set their own fit.
|
| listBullet | enum | — | — | Marker style for items and bullets lists. Effective value: the slide's design, then the deck's design, then the theme's design.listBullet, then the layout record's design.listBullet, then 'character'. 'character' (the default) draws the glyph marker. 'image' draws the primary organization's icon logo (or the organization and shape design.logo names; the onDark value on dark backgrounds) as a picture bullet: a square of the marker's font size whose bottom sits on the marker baseline, so list geometry does not change. Without a logo the glyph is drawn and the engine reports unresolved-content at this field.
|
| mirror | boolean | — | — | Draw the slide's template layout mirrored (OPF 0.19): each row's cells and the column sizes reversed, so a 'beside' layout puts its picture, chart or table at the end. Logical: a right-to-left deck mirrors on top. Binding and reading order do not change. Effective value: the slide's design, then the deck's design, then the layout record's design.mirror, then false. Slides without a template layout ignore it. |
theme
typeref:CatalogReferencerequirednodefault—
Theme for the deck: a themes reference, a bare id ('minimal') or 'name:id' ('acme:brand'). The theme supplies the default colour scheme, font scheme, background and dimensions; design.colorScheme, design.fontScheme, design.background and design.dimensions override it field by field. A reference that resolves nowhere is the warning opf/unresolved-reference and engines use the engine default theme.
{
"theme": "minimal"
}colorScheme
typestring | ref:ColorSchemerequirednodefault—
Color scheme for the presentation. Accepts two forms: - A colorSchemes reference: a bare id ('cool-horizon') or 'name:id' ('acme:ocean'). - Object form: a ColorScheme with an optional 'id' reference as the base plus slot/role overrides. Without 'id', the overrides apply on top of the engine default colour scheme. Without either, the theme's colorScheme applies, then the engine default colour scheme.
{
"colorScheme": "cool-horizon"
}fontScheme
typestring | ref:FontSchemerequirednodefault—
Font scheme for heading, body, accent, and code text. Accepts two forms: - A fontSchemes reference: a bare id ('aptos') or 'name:id' ('acme:inter'). - Object form: a FontScheme with an optional 'id' reference as the base plus pair/role overrides. Without either, the theme's fontScheme applies, then the engine default font scheme.
fontScheme (oneOf 2).type· Allowed values"sans-serif""serif""monospace"fontScheme (oneOf 2).app· Allowed values"powerpoint""google-slides"fontScheme (oneOf 2).languageFamily· Allowed values"latin""ea""cs""eastAsian""complexScript"
{
"fontScheme": "aptos"
}dimensions
typeref:DimensionPreset | ref:Dimensionsrequirednodefault—
Slide dimensions and aspect ratio. String shorthand such as 'widescreen' is equivalent to { preset: 'widescreen' }.
dimensions· Named choices (see schema for other values and constraints)"16:9""4:3""16:10""1:1""4:5""9:16""letter""a4""widescreen""standard"dimensions (oneOf 2).preset· Allowed values"16:9""4:3""16:10""1:1""4:5""9:16""letter""a4""widescreen""standard"
{
"dimensions": "widescreen"
}background
typeref:BackgroundShortcut | ref:Backgroundrequirednodefault—
Default slide background applied across the deck unless overridden on a slide (slides.N.design.background); the resolved theme's background is the fallback. A background is the only canvas fill and never moves content. String shorthand accepts theme slots ('light1', 'light2', 'dark1', 'dark2'), hex colors, or an image source starting with 'asset:', 'https://', 'data:', './' or '../' (a cover image); object forms support theme, solid, gradient, image, or pattern fills.
background· Named choices (see schema for other values and constraints)"light1""light2""dark1""dark2"background (oneOf 2) (oneOf 1).type· Allowed values"theme"background (oneOf 2) (oneOf 1).slot· Allowed values"light1""light2""dark1""dark2"background (oneOf 2) (oneOf 2).type· Allowed values"solid"background (oneOf 2) (oneOf 2).color· Named choices (see schema for other values and constraints)"accent1""accent2""accent3""accent4""accent5""accent6""dark1""dark2""light1""light2""hyperlink""followedHyperlink""primary""secondary""accent""background""surface""surfaceAlt""text""textSecondary"background (oneOf 2) (oneOf 3).type· Allowed values"gradient"background (oneOf 2) (oneOf 3).gradient.stops[].color· Named choices (see schema for other values and constraints)"accent1""accent2""accent3""accent4""accent5""accent6""dark1""dark2""light1""light2""hyperlink""followedHyperlink""primary""secondary""accent""background""surface""surfaceAlt""text""textSecondary"background (oneOf 2) (oneOf 4).type· Allowed values"image"background (oneOf 2) (oneOf 4).fit· Allowed values"cover""contain""stretch""tile"background (oneOf 2) (oneOf 4).recolor· Named choices (see schema for other values and constraints)"grayscale"background (oneOf 2) (oneOf 4).recolor (oneOf 2).dark· Named choices (see schema for other values and constraints)"accent1""accent2""accent3""accent4""accent5""accent6""dark1""dark2""light1""light2""hyperlink""followedHyperlink""primary""secondary""accent""background""surface""surfaceAlt""text""textSecondary"background (oneOf 2) (oneOf 4).recolor (oneOf 2).light· Named choices (see schema for other values and constraints)"accent1""accent2""accent3""accent4""accent5""accent6""dark1""dark2""light1""light2""hyperlink""followedHyperlink""primary""secondary""accent""background""surface""surfaceAlt""text""textSecondary"background (oneOf 2) (oneOf 4).overlay.color· Named choices (see schema for other values and constraints)"accent1""accent2""accent3""accent4""accent5""accent6""dark1""dark2""light1""light2""hyperlink""followedHyperlink""primary""secondary""accent""background""surface""surfaceAlt""text""textSecondary"background (oneOf 2) (oneOf 4).overlay.edge· Allowed values"top""bottom""left""right"background (oneOf 2) (oneOf 5).type· Allowed values"pattern"background (oneOf 2) (oneOf 5).pattern.foregroundColor· Named choices (see schema for other values and constraints)"accent1""accent2""accent3""accent4""accent5""accent6""dark1""dark2""light1""light2""hyperlink""followedHyperlink""primary""secondary""accent""background""surface""surfaceAlt""text""textSecondary"background (oneOf 2) (oneOf 5).pattern.backgroundColor· Named choices (see schema for other values and constraints)"accent1""accent2""accent3""accent4""accent5""accent6""dark1""dark2""light1""light2""hyperlink""followedHyperlink""primary""secondary""accent""background""surface""surfaceAlt""text""textSecondary"
{
"background": "dark1"
}logo
typestring | constrequirednodefault—
Which logo covers, section dividers and picture bullets draw. Logos live on the organization (Organization.logo); without this field covers and sections draw the primary organization's full logo and picture bullets its icon. A logo reference overrides that: 'var:organization.beta.logo' draws organization beta's logo, and a reference that names a shape ('var:organization.logo.wordmark') draws that shape everywhere this field applies. false draws no logo. A slide's design.logo overrides the deck's; absence inherits. An override naming an organization without a logo draws nothing (validation warns). Placement (reference engines, vetoable): on a cover or section slide (no body payload on a heading-only layout such as title, title-subtitle or section-divider, or no layout) the logo is drawn at the top-left of the free area, inside the slide padding and below any header furniture, in a box 56 reference pixels tall and at most four times as wide; the tag/title/subtitle group then centers in the remaining span. Content slides never get an automatic logo; a header or footer zone places one with image: 'var:organization.logo.icon'. composeSlide returns the cover box as geometry.logo.
logo· Named choices (see schema for other values and constraints)false
{
"logo": "var:organization.logo.wordmark"
}watermark
typeconst | ref:Asset | ref:Watermarkrequirednodefault—
Optional decorative watermark applied across slides: an image or a text stamp, in the fixed frame and at the opacity described on Watermark. Use false to suppress an inherited watermark in slide-level design; a string or Asset is the image at opacity 0.08.
watermark· Named choices (see schema for other values and constraints)false
{
"watermark": false
}header
typeconst | ref:HeaderFooterrequirednodefault—
Repeated header furniture rendered outside the main slide content. Use false to suppress an inherited header.
header· Named choices (see schema for other values and constraints)false
{
"header": false
}titleAlignment
typeenumrequirednodefault—
Default horizontal alignment for the title heading area in resolved layouts. Effective value: the slide's design, then the deck's design, then the theme's design.titleAlignment, then the layout record's design.titleAlignment, then the engine default.
titleAlignment· Allowed values"left""center""right"
{
"titleAlignment": "left"
}contentAlignment
typeenumrequirednodefault—
Default horizontal alignment for body/content regions in resolved layouts. Effective value: the slide's design, then the deck's design, then the theme's design.contentAlignment, then the layout record's design.contentAlignment, then the engine default. A cover's tag and subtitle follow titleAlignment unless the slide's own design sets contentAlignment.
contentAlignment· Allowed values"left""center""right"
{
"contentAlignment": "left"
}contentBox
typebooleanrequirednodefault—
Whether body/content regions are rendered inside a visible card or surface. Effective value: the slide's design, then the deck's design, then the theme's design.contentBox, then the layout record's design.contentBox, then the engine default.
contentDirection
typeenumrequirednodefault—
Axis along which parallel body content is arranged: 'vertical' is a column, 'horizontal' a row. Effective value: the slide's design, then the deck's design, then the theme's design.contentDirection, then the layout record's design.contentDirection. On a slide with a template layout (OPF 0.19) it turns every flowing region of the slide into one row or one column, below the slide's own composition.mode, columns and weights, which arrange its first primary flowing region. On an automatic slide (and a 0.18 record) it sets the root arrangement mode when no composition.mode is set on the slide or on its layout record. Promoted regions (left, top:left, ...) keep their explicit geometry and nested groups keep their own composition.
contentDirection· Allowed values"horizontal""vertical"
{
"contentDirection": "horizontal"
}chartPrimary
typeenumrequirednodefault—
Where the primary chart sits relative to supporting content. Effective value: slide design, then deck design, then the layout record's design.chartPrimary. It applies to automatic slides only; a template layout says the same with its regions (chart-beside). When the slide has no promoted regions and no composition.mode of its own, and its root nodes mix at least one chart with other content, the first chart becomes a primary track and the other nodes form one synthetic sub-grid: 'left'/'right' is a two-track row and 'top'/'bottom' a two-track column, weighted 3:2 in favor of the chart; explicit root columns and weights are ignored while it applies. 'none' (the default) keeps the ordinary automatic grid with equal weight. Automatic composition builds direct content groups; template regions remain authoritative.
chartPrimary· Allowed values"none""top""bottom""left""right"
{
"chartPrimary": "none"
}imageFit
typeenumrequirednodefault—
Default fit of image blocks (and Slide.image) that set no fit of their own: 'cover' fills the frame and crops what overflows around the block's focus, 'contain' shows the whole picture centered in the frame, 'stretch' scales it to the frame exactly. Effective value: the slide's design, then the deck's design, then the theme's design.imageFit, then the layout record's design.imageFit, then 'cover'. Backgrounds set their own fit.
imageFit· Allowed values"cover""contain""stretch"
{
"imageFit": "cover"
}listBullet
typeenumrequirednodefault—
Marker style for items and bullets lists. Effective value: the slide's design, then the deck's design, then the theme's design.listBullet, then the layout record's design.listBullet, then 'character'. 'character' (the default) draws the glyph marker. 'image' draws the primary organization's icon logo (or the organization and shape design.logo names; the onDark value on dark backgrounds) as a picture bullet: a square of the marker's font size whose bottom sits on the marker baseline, so list geometry does not change. Without a logo the glyph is drawn and the engine reports unresolved-content at this field.
listBullet· Allowed values"character""image"
{
"listBullet": "character"
}mirror
typebooleanrequirednodefault—
Draw the slide's template layout mirrored (OPF 0.19): each row's cells and the column sizes reversed, so a 'beside' layout puts its picture, chart or table at the end. Logical: a right-to-left deck mirrors on top. Binding and reading order do not change. Effective value: the slide's design, then the deck's design, then the layout record's design.mirror, then false. Slides without a template layout ignore it.
Exact constraints for Referenced Design
{
"type": "object",
"description": "Visual design system applied to the presentation; individual slides may override fields via Slide.design.",
"properties": {
"theme": {
"$ref": "#/$defs/CatalogReference",
"description": "Theme for the deck: a themes reference, a bare id ('minimal') or 'name:id' ('acme:brand'). The theme supplies the default colour scheme, font scheme, background and dimensions; design.colorScheme, design.fontScheme, design.background and design.dimensions override it field by field. A reference that resolves nowhere is the warning opf/unresolved-reference and engines use the engine default theme.",
"examples": [
"minimal",
"classic",
"dark",
"bold",
"acme:brand"
]
},
"colorScheme": {
"oneOf": [
{
"type": "string"
},
{
"$ref": "#/$defs/ColorScheme"
}
],
"description": "Color scheme for the presentation. Accepts two forms:\n- A colorSchemes reference: a bare id ('cool-horizon') or 'name:id' ('acme:ocean').\n- Object form: a ColorScheme with an optional 'id' reference as the base plus slot/role overrides. Without 'id', the overrides apply on top of the engine default colour scheme.\n\nWithout either, the theme's colorScheme applies, then the engine default colour scheme.",
"examples": [
"cool-horizon",
"boost",
"burnt-orange",
{
"id": "cool-horizon",
"accent1": "#FF6F61"
}
]
},
"fontScheme": {
"oneOf": [
{
"type": "string"
},
{
"$ref": "#/$defs/FontScheme"
}
],
"description": "Font scheme for heading, body, accent, and code text. Accepts two forms:\n- A fontSchemes reference: a bare id ('aptos') or 'name:id' ('acme:inter').\n- Object form: a FontScheme with an optional 'id' reference as the base plus pair/role overrides.\n\nWithout either, the theme's fontScheme applies, then the engine default font scheme.",
"examples": [
"aptos",
"tenorite",
{
"id": "aptos",
"heading": "Inter"
}
]
},
"dimensions": {
"oneOf": [
{
"$ref": "#/$defs/DimensionPreset"
},
{
"$ref": "#/$defs/Dimensions"
}
],
"description": "Slide dimensions and aspect ratio. String shorthand such as 'widescreen' is equivalent to { preset: 'widescreen' }.",
"examples": [
"widescreen",
"16:9",
{
"preset": "16:10"
}
]
},
"background": {
"oneOf": [
{
"$ref": "#/$defs/BackgroundShortcut"
},
{
"$ref": "#/$defs/Background"
}
],
"description": "Default slide background applied across the deck unless overridden on a slide (slides.N.design.background); the resolved theme's background is the fallback. A background is the only canvas fill and never moves content. String shorthand accepts theme slots ('light1', 'light2', 'dark1', 'dark2'), hex colors, or an image source starting with 'asset:', 'https://', 'data:', './' or '../' (a cover image); object forms support theme, solid, gradient, image, or pattern fills.",
"examples": [
"dark1",
"#ffff00",
{
"type": "theme",
"slot": "light1"
}
]
},
"logo": {
"oneOf": [
{
"type": "string",
"pattern": "^var:organization(\\.[A-Za-z0-9_-]+)?\\.logo(\\.(full|stacked|icon|wordmark))?$"
},
{
"type": "boolean",
"const": false
}
],
"description": "Which logo covers, section dividers and picture bullets draw. Logos live on the organization (Organization.logo); without this field covers and sections draw the primary organization's full logo and picture bullets its icon. A logo reference overrides that: 'var:organization.beta.logo' draws organization beta's logo, and a reference that names a shape ('var:organization.logo.wordmark') draws that shape everywhere this field applies. false draws no logo. A slide's design.logo overrides the deck's; absence inherits. An override naming an organization without a logo draws nothing (validation warns). Placement (reference engines, vetoable): on a cover or section slide (no body payload on a heading-only layout such as title, title-subtitle or section-divider, or no layout) the logo is drawn at the top-left of the free area, inside the slide padding and below any header furniture, in a box 56 reference pixels tall and at most four times as wide; the tag/title/subtitle group then centers in the remaining span. Content slides never get an automatic logo; a header or footer zone places one with image: 'var:organization.logo.icon'. composeSlide returns the cover box as geometry.logo.",
"examples": [
"var:organization.logo.wordmark",
"var:organization.beta.logo",
false
]
},
"watermark": {
"oneOf": [
{
"type": "boolean",
"const": false
},
{
"$ref": "#/$defs/Asset"
},
{
"$ref": "#/$defs/Watermark"
}
],
"description": "Optional decorative watermark applied across slides: an image or a text stamp, in the fixed frame and at the opacity described on Watermark. Use false to suppress an inherited watermark in slide-level design; a string or Asset is the image at opacity 0.08.",
"examples": [
false,
"asset:watermark",
{
"src": "asset:watermark",
"opacity": 0.08
},
{
"text": "DRAFT",
"opacity": 0.1
}
]
},
"header": {
"oneOf": [
{
"type": "boolean",
"const": false
},
{
"$ref": "#/$defs/HeaderFooter"
}
],
"description": "Repeated header furniture rendered outside the main slide content. Use false to suppress an inherited header.",
"examples": [
false,
{
"left": {
"text": "{{slide.section}}"
},
"right": {
"image": "var:organization.logo.icon"
}
}
]
},
"footer": {
"oneOf": [
{
"type": "boolean",
"const": false
},
{
"$ref": "#/$defs/HeaderFooter"
}
],
"description": "Repeated footer furniture rendered outside the main slide content. Use false to suppress an inherited footer.",
"examples": [
false,
{
"left": {
"image": "var:organization.logo.icon"
},
"center": {
"text": "Confidential"
},
"right": {
"text": "{{slide.number}}"
}
}
]
},
"titleAlignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
],
"description": "Default horizontal alignment for the title heading area in resolved layouts. Effective value: the slide's design, then the deck's design, then the theme's design.titleAlignment, then the layout record's design.titleAlignment, then the engine default."
},
"contentAlignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
],
"description": "Default horizontal alignment for body/content regions in resolved layouts. Effective value: the slide's design, then the deck's design, then the theme's design.contentAlignment, then the layout record's design.contentAlignment, then the engine default. A cover's tag and subtitle follow titleAlignment unless the slide's own design sets contentAlignment."
},
"contentBox": {
"type": "boolean",
"description": "Whether body/content regions are rendered inside a visible card or surface. Effective value: the slide's design, then the deck's design, then the theme's design.contentBox, then the layout record's design.contentBox, then the engine default."
},
"contentDirection": {
"type": "string",
"enum": [
"horizontal",
"vertical"
],
"description": "Axis along which parallel body content is arranged: 'vertical' is a column, 'horizontal' a row. Effective value: the slide's design, then the deck's design, then the theme's design.contentDirection, then the layout record's design.contentDirection. On a slide with a template layout (OPF 0.19) it turns every flowing region of the slide into one row or one column, below the slide's own composition.mode, columns and weights, which arrange its first primary flowing region. On an automatic slide (and a 0.18 record) it sets the root arrangement mode when no composition.mode is set on the slide or on its layout record. Promoted regions (left, top:left, ...) keep their explicit geometry and nested groups keep their own composition."
},
"chartPrimary": {
"type": "string",
"enum": [
"none",
"top",
"bottom",
"left",
"right"
],
"description": "Where the primary chart sits relative to supporting content. Effective value: slide design, then deck design, then the layout record's design.chartPrimary. It applies to automatic slides only; a template layout says the same with its regions (chart-beside). When the slide has no promoted regions and no composition.mode of its own, and its root nodes mix at least one chart with other content, the first chart becomes a primary track and the other nodes form one synthetic sub-grid: 'left'/'right' is a two-track row and 'top'/'bottom' a two-track column, weighted 3:2 in favor of the chart; explicit root columns and weights are ignored while it applies. 'none' (the default) keeps the ordinary automatic grid with equal weight. Automatic composition builds direct content groups; template regions remain authoritative."
},
"imageFit": {
"type": "string",
"enum": [
"cover",
"contain",
"stretch"
],
"description": "Default fit of image blocks (and Slide.image) that set no fit of their own: 'cover' fills the frame and crops what overflows around the block's focus, 'contain' shows the whole picture centered in the frame, 'stretch' scales it to the frame exactly. Effective value: the slide's design, then the deck's design, then the theme's design.imageFit, then the layout record's design.imageFit, then 'cover'. Backgrounds set their own fit."
},
"listBullet": {
"type": "string",
"enum": [
"character",
"image"
],
"description": "Marker style for items and bullets lists. Effective value: the slide's design, then the deck's design, then the theme's design.listBullet, then the layout record's design.listBullet, then 'character'. 'character' (the default) draws the glyph marker. 'image' draws the primary organization's icon logo (or the organization and shape design.logo names; the onDark value on dark backgrounds) as a picture bullet: a square of the marker's font size whose bottom sits on the marker baseline, so list geometry does not change. Without a logo the glyph is drawn and the engine reports unresolved-content at this field."
},
"mirror": {
"type": "boolean",
"description": "Draw the slide's template layout mirrored (OPF 0.19): each row's cells and the column sizes reversed, so a 'beside' layout puts its picture, chart or table at the end. Logical: a right-to-left deck mirrors on top. Binding and reading order do not change. Effective value: the slide's design, then the deck's design, then the layout record's design.mirror, then false. Slides without a template layout ignore it."
}
}
}Exact constraints for allOf 1
{
"$ref": "#/$defs/Design"
}allOf 2 · restriction
Exact constraints for allOf 2
{
"not": {
"required": [
"dimensions"
]
}
}Complete definition constraints
{
"description": "A slide's design: every Design field except dimensions. A PPTX has one slide size, so the size is set once, on the deck's design.dimensions (or its theme), and a slide's design cannot set it. A slide-level theme whose resolved dimensions differ from the deck's is a validate warning (opf/slide-theme-dimensions); exporting such a deck to PPTX fails with mixed-slide-dimensions.",
"allOf": [
{
"$ref": "#/$defs/Design"
},
{
"not": {
"required": [
"dimensions"
]
}
}
]
}