Interface: ObjectOptions
PositionProps for an object that can fill a layout placeholder: text, an image, a table or a chart. Each axis also takes null, which leaves it unstated, as omitting it does. With placeholder, an unstated axis comes from the layout placeholder; without one, it takes the object's default. null is how a computed value says "unset" where exactOptionalPropertyTypes refuses undefined.
Example
ts
{ placeholder: 'body', x: indent ?? null } // the placeholder's left edge unless indentedExtends
ImageBaseProps.Omit<ShapeProps, keyofPositionProps>.TableCellProps.TextPropsOptions
Properties
adjustHandles?
optionaladjustHandles?:ShapeAdjustHandle[]
Adjust handles (<a:ahLst>) for a custGeom shape: draggable handles (XY or polar), optionally bound to guides via gdRef*.
Inherited from
align?
optionalalign?:HAlign
Horizontal alignment
Default
ts
'left'Inherited from
altText?
optionalaltText?:string
Alt Text value ("How would you describe this object and its contents to someone who is blind?")
- PowerPoint: [right-click on an image] > "Edit Alt Text..."
- omitted, the picture's
descris empty, as PowerPoint writes it; the source path or URL is never used
Inherited from
anchorCtr?
optionalanchorCtr?:boolean
Centre the cell's whole text block horizontally within the cell (a:tcPr/@anchorCtr), independent of each paragraph's own align.
The two do different things and compose: align decides where each line sits inside the text block, anchorCtr decides where that block sits inside the cell. With left-aligned text in a wide cell, anchorCtr: true centres the ragged-right column of lines as a unit while keeping their left edges flush with each other.
false is the schema default, so it emits nothing, the same reasoning as horzOverflow: 'clip'.
Default
ts
falseInherited from
angleRange?
optionalangleRange?: [number,number]
Radius (only for ShapeType.pie, ShapeType.arc, ShapeType.blockArc)
- In the case of ShapeType.blockArc you have to setup the arcThicknessRatio
- values: [0-359, 0-359]
Default
ts
[270, 0]Inherited from
arcThicknessRatio?
optionalarcThicknessRatio?:number
Radius (only for ShapeType.blockArc)
- You have to setup the angleRange values too
- values: 0.0-1.0
Default
ts
0.5Inherited from
autoPageCharWeight?
optionalautoPageCharWeight?:number
Auto-paging character weight
- adjusts how many characters are used before lines wrap
- range: -1.0 to 1.0
Default
ts
0.0Example
ts
0.5 // lines are longer (increases the number of characters that can fit on a given line)Inherited from
TableCellProps.autoPageCharWeight
baseline?
optionalbaseline?:number
Baseline shift, as TextPropsOptions.baseline takes it on a text run: above zero raises the text, below zero lowers it. On a cell it applies to every run that states none.
Inherited from
biLevel?
optionalbiLevel?:object
Recolor the image to two-level black & white (<a:biLevel thresh="…"/>)
- every pixel at/above the luminance threshold becomes white, everything below it black (MS-PPT > Format Picture > Picture Color > Recolor > Black and White …%)
threshold
threshold:
number
Luminance split point as a 0.0–1.0 fraction (serialized to thresh, the 0–1 fraction ×100000).
Example
ts
{ threshold: 0.5 } // split at 50% luminanceInherited from
bold?
optionalbold?:boolean
Bold style
Default
ts
falseInherited from
border?
optionalborder?:StrokeProps| [StrokeProps|null,StrokeProps|null,StrokeProps|null,StrokeProps|null]
The cell's four edge borders (a:tcPr/a:lnT|lnR|lnB|lnL).
- a single
BorderPropsis broadcast to all four sides - an array is read in TRBL order (
[top, right, bottom, left])
Overrides the table-level TableProps.border default entirely; the two do not merge per side. A null entry is a hole: that edge is left out of a:tcPr and keeps inheriting from the table style, while { type: 'none' } writes an explicit no-line that overrides it. For the two corner-to-corner rules see diagonal; for the table's outside edge see TableProps.outerBorder.
Inherited from
breakLine?
optionalbreakLine?:boolean
Add a line-break
Default
ts
falseInherited from
bullet?
optionalbullet?:boolean|"inherit"|TextBulletProps
Add standard or custom bullet
- use
truefor standard bullet - pass object options for custom bullet
falseis the explicit off: it writes<a:buNone/>plusmarL="0" indent="0", which overrides whatever bullet the layout's or master's list style sets for this level'inherit'states nothing at all (no bullet child and no margin attributes), so the list style keeps reaching the paragraph- omitting the option means
'inherit'on a placeholder definition (defineSlideMaster({ objects })), and on text filling a placeholder the layout defines, which takes the definition's bullet. Anywhere else it meansfalse
The margins are only a default of the bullet state: paraMarginLeft and paraIndent state @marL/@indent independently in any of the three, including an inherited margin under a drawn bullet.
When a shape's text is an array of runs, state this on the opening run only. A run that draws a bullet starts a new paragraph by itself, so repeating it (the placement that align requires) turns one three-run paragraph into three one-run paragraphs. A paragraph takes its properties from its first run.
Default
false, or 'inherit' on a placeholder
Inherited from
caps?
optionalcaps?:"small"|"all"|"none"
Text capitalization (a:rPr/@cap, ST_TextCapsType)
'all'= ALL CAPS'small'= Small Caps'none'= the explicit off: it writescap="none", which overrides a capitalization the run would otherwise inherit. Omitting the option states nothing and lets that inheritance stand- PowerPoint: Font > Effects > All Caps / Small Caps
Default
ts
(unset) inheritInherited from
cell3D?
optionalcell3D?:TableCell3DProps
A 3-D bevel on the cell (a:tcPr/a:cell3D). Niche: PowerPoint's table UI has no control for it, so it reaches a deck from a theme or another producer, and this exists to author and reproduce one. See TableCell3DProps.
Inherited from
charSpacing?
optionalcharSpacing?:number
Character spacing in points, as TextPropsOptions.charSpacing. On a cell it applies to every run that states none.
Inherited from
clrChange?
optionalclrChange?:object
Recolor the image by mapping one source color to another (<a:clrChange>)
- every pixel matching
fromis repaintedto: the classic "swap the flat background out" recolour (MS-PPT > Format Picture > Picture Color > Set Transparent Color is the single-colour sibling) - colors accept
HexColororThemeColor, same as fills /duotone
from
from:
string
Source color to replace (<a:clrFrom>).
to
to:
string
Replacement color (<a:clrTo>).
Example
ts
{ from: '000000', to: 'FF0000' } // turn black pixels redInherited from
color?
optionalcolor?:string
Text color
HexColororThemeColor- MS-PPT > Format Shape > Text Options > Text Fill & Outline > Text Fill > Color
Examples
ts
'FF0000' // hex color (red)ts
SchemeColor.text1 // Theme color (Text1)Inherited from
colspan?
optionalcolspan?:number
Cell colspan
Inherited from
columns?
optionalcolumns?:number
Number of text columns in the text body
- PowerPoint: Format Shape > Shape Options > Size & Properties > Text Box > Columns > "Number"
- range: 1-16
Default
ts
1Example
ts
2 // flow text into two columnsInherited from
columnSpacing?
optionalcolumnSpacing?:number
Spacing between text columns (points)
- PowerPoint: Format Shape > Shape Options > Size & Properties > Text Box > Columns > "Spacing"
- only applies when
columns> 1
Default
ts
0Example
ts
10 // 10pt gap between columnsInherited from
TextPropsOptions.columnSpacing
colW?
optionalcolW?:number|number[]
connectionSites?
optionalconnectionSites?:ShapeConnectionSite[]
Connection sites (<a:cxnLst>) for a custGeom shape: the points a connector can attach to. Positions are absolute in the object's own space (like points); a startShapeIdx/endShapeIdx on an addConnector indexes into this list.
Example
ts
[{ ang: 0, x: 1, y: 0 }, { ang: 180, x: 0, y: 1 }]Inherited from
crop?
optionalcrop?:object
Crop the source image to a sub-region by percentage edge insets, emitted verbatim as OOXML <a:srcRect>.
- each value is the percent (at most 100) trimmed off that edge of the source image, the same model PowerPoint's Picture Format > Crop uses;
l+randt+bmust each be < 100 - a negative value pads that edge with empty space instead, as PowerPoint's Fit crop and
sizing: 'contain'do - the remaining sub-region is stretched to fill the picture's displayed
w×hbox, so this is the faithful way to reproduce a deck that maps several icons out of one composite raster - operates on the source image directly (independent of natural-pixel measurement), so unlike
sizing: 'crop'(which crops in displayed inches) it works for SVG and unmeasurable formats - mutually exclusive with sizing; if both are set
cropwins andsizingis ignored
b?
optionalb?:number
Percent trimmed from the bottom edge of the source image; negative pads it.
Default
ts
0l?
optionall?:number
Percent trimmed from the left edge of the source image; negative pads it.
Default
ts
0r?
optionalr?:number
Percent trimmed from the right edge of the source image; negative pads it.
Default
ts
0t?
optionalt?:number
Percent trimmed from the top edge of the source image; negative pads it.
Default
ts
0Example
ts
{ l: 0, t: 0, r: 50, b: 50 } // keep the top-left quadrant of the source imageInherited from
cx?
optionalcx?:Coord
cy?
optionalcy?:Coord
data?
optionaldata?:string
base64-encoded string
- Useful for avoiding potential path/server issues
Example
ts
'image/png;base64,iVtDafDrBF[...]=' // pre-encoded image in base-64Inherited from
diagonal?
optionaldiagonal?:TableCellDiagonals
The cell's corner-to-corner rules: PowerPoint's "Diagonal Down/Up Border".
Kept off border's tuple on purpose: see TableCellDiagonals. A diagonal on a merged cell is one stroke across the whole region, so only the span origin carries it. The covered cells inherit the origin's edges but never its diagonals.
Example
ts
diagonal: { tlToBr: { type:'solid', color:'C00000' } } // strike the cell outInherited from
duotone?
optionalduotone?:object
Recolor the image as a two-tone (duotone) effect
- maps the image's shadows to
shadowand its highlights tohighlight - serializes
<a:duotone>inside the picture's<a:blip>(MS-PPT > Format Picture > Picture Color > Recolor) - colors accept
HexColororThemeColor, same as fills - the classic brand treatment: tint stock photography into a single brand hue
highlight
highlight:
string
Color mapped to the image's light/highlight tones.
shadow
shadow:
string
Color mapped to the image's dark/shadow tones.
Example
ts
{ shadow: '250F6B', highlight: 'FFFFFF' } // deep-blue duotoneInherited from
fill?
optionalfill?:FillOption
Shape fill color properties, or a bare Color as shorthand for a solid fill (FillOption).
Examples
ts
'FF0000' // hex color (red), shorthand for { color:'FF0000' }ts
{ color:'FF0000' } // hex color (red)ts
{ color:'0088CC', transparency:50 } // hex color, 50% transparentts
{ color:SchemeColor.accent1 } // Theme color Accent1Inherited from
fit?
optionalfit?:"resize"|"none"|TextFitShrinkProps|"shrink"
Shrink cell text to fit when it would overflow the cell's fixed height.
'shrink'measures the wrapped text and bakes a reduced literal font size onto the cell's runs so the text fits. PowerPoint does not support text autofit (normAutofit) inside table cells, so there is no font-scale flag to set; the size itself is lowered, which both PowerPoint and LibreOffice render identically with no edit/resize.- Requires the cell font registered via PptxTs.registerFontMetrics. With no metrics registered at all it is a silent no-op (the cell keeps its authored size); once any face is registered, an unregistered face is estimated and warns once per write.
- Only triggers when the cell's row has a fixed height that the text exceeds. With auto-height rows (no
rowH/h), the row simply grows, so nothing shrinks. - Only
'shrink'is acted on for cells.'resize'and the object form are ignored here: a table row already auto-grows to fit its tallest cell (the cell equivalent ofspAutoFit), so there is nothing to bake. (The wider union is shared with TextPropsOptions.fit so table-levelfitcan cascade to cells.)
Example
ts
'shrink' // measured when the cell font is registered; else no-opInherited from
flipH?
optionalflipH?:boolean
Flip horizontally?
Default
ts
falseInherited from
flipV?
optionalflipV?:boolean
Flip vertical?
Default
ts
falseInherited from
fontFace?
optionalfontFace?:string
Font face name
Applied to the Latin (<a:latin>) and complex-script (<a:cs>) font slots, matching how PowerPoint writes a font picked from the UI. The East Asian slot (<a:ea>) is left to inherit from the theme unless fontFaceEA is set. Forcing a Latin-only face into the East Asian slot duplicates/ghosts text in Office 365.
Example
ts
'Arial' // Arial fontInherited from
fontFaceEA?
optionalfontFaceEA?:string
East Asian font face name (<a:ea> slot), used to render CJK (Chinese/Japanese/Korean) glyphs
Independent of fontFace: set alone, it writes only <a:ea> and the Latin and complex-script slots keep inheriting. When omitted, <a:ea> inherits the theme East Asian font, which is what PowerPoint does for Latin fonts.
Example
ts
'微軟正黑體' // render East Asian glyphs with Microsoft JhengHeiInherited from
fontSize?
optionalfontSize?:number
Font size
Example
ts
12 // Font size 12Inherited from
glow?
optionalglow?:TextGlowProps
Inherited from
grayscale?
optionalgrayscale?:boolean
Recolor the image to grayscale (<a:grayscl/>)
- maps every pixel to its luminance grey (MS-PPT > Format Picture > Picture Color > Recolor > Grayscale)
- the cheapest recolour: no payload
- mutually exclusive with the other recolour modes (
duotone/biLevel/clrChange); if several are set, the first present in document order wins on read-back
Default
ts
falseExample
ts
true // desaturate the imageInherited from
guides?
optionalguides?:ShapeGuide[]
Geometry guides (<a:gdLst>) for a custGeom shape: named construction formulas that connection sites / adjust handles can reference. Advanced: each formula is emitted verbatim.
Example
ts
[{ name: 'w2', formula: 'val 10800' }]Inherited from
h?
optionalh?:Coord|null
Height, as PositionProps.h. null leaves it unstated: the layout placeholder's, with placeholder.
Inherited from
hasBandedColumns?
optionalhasBandedColumns?:boolean
hasBandedRows?
optionalhasBandedRows?:boolean
hasFirstColumn?
optionalhasFirstColumn?:boolean
hasFooter?
optionalhasFooter?:boolean
hasHeader?
optionalhasHeader?:boolean
hasLastColumn?
optionalhasLastColumn?:boolean
highlight?
optionalhighlight?:string
Text highlight color (hex format)
Example
ts
'FFFF00' // yellowInherited from
horzOverflow?
optionalhorzOverflow?:"clip"|"overflow"
What happens to a single glyph wider than the cell's text width (a:tcPr/@horzOverflow).
'clip'(PowerPoint's default) cuts the glyph off at the cell edge'overflow'lets it draw past the edge, over whatever is beside it
This is not a text-wrap switch, despite the name. Lines always wrap to the column width; only an individual character too wide to fit on a line by itself is affected, so it matters for oversized display type, wide CJK/emoji glyphs, and icon fonts in a narrow column. PowerPoint has no per-cell no-wrap at all: wrap="none" on a cell's a:bodyPr is discarded on the next save (probe: test/read/fixtures/authoring/probe-table-cell-wrap.ps1). 'clip' is written as asked but is the schema default, so PowerPoint drops the attribute again the first time it saves the deck. The visible result is the same either way, and leaving this unset emits nothing at all.
Default
ts
(unset; PowerPoint clips)Example
ts
'overflow' // a 60pt glyph in a 0.5in column draws whole instead of being cutInherited from
hyperlink?
optionalhyperlink?:HyperlinkProps
Inherited from
indentLevel?
optionalindentLevel?:number
Outline level of the paragraph a run starts, as TextPropsOptions.indentLevel.
Inherited from
isTextBox?
optionalisTextBox?:boolean
Inherited from
italic?
optionalitalic?:boolean
italic style
Default
ts
falseInherited from
kerning?
optionalkerning?:number
Kerning threshold in points, as TextPropsOptions.kerning. On a cell it applies to every run that states none.
Inherited from
lang?
optionallang?:string
language
- ISO 639-1 standard language code
Default
ts
'en-US' // english USExample
ts
'fr-CA' // french CanadianInherited from
line?
optionalline?:ShapeLineProps
Border line (<a:ln> outline) drawn around the image
- same options as a shape outline; a picture supports a single outline, not per-side borders
- MS-PPT: Format Picture > Line
Examples
ts
{ color: '0088CC', width: 2 } // 2pt blue borderts
{ color: '666666', width: 1, dashType: 'dash' } // dashed gray borderInherited from
lineSpacing?
optionallineSpacing?:number
Line spacing in points, as TextPropsOptions.lineSpacing.
Inherited from
lineSpacingMultiple?
optionallineSpacingMultiple?:number
Line spacing as a multiple of single spacing, as TextPropsOptions.lineSpacingMultiple.
Inherited from
TableCellProps.lineSpacingMultiple
margin?
optionalmargin?:Margin
Cell margin (inches), in [top, right, bottom, left] order
Default
ts
[0.05, 0.1, 0.05, 0.1]Overrides
objectLock?
optionalobjectLock?:ObjectLockProps
Object lock flags (DrawingML a:spLocks / a:picLocks / a:graphicFrameLocks)
- restrict how the object can be manipulated in PowerPoint (e.g. prevent moving, resizing, or grouping)
- each flag maps 1:1 to the OOXML attribute of the same name; only flags set to
trueare emitted - PowerPoint UI: Selection Pane / right-click protections (most locks are honored at edit time, not as a password)
- flags only apply to the object types that support them (see each flag); flags set on an unsupported object type are ignored with a console warning
Examples
ts
{ noMove: true, noResize: true } // pin an object in placets
{ noGrp: true } // exclude from groupingInherited from
objectName?
optionalobjectName?:string
Object name
- used instead of the default name for the object's kind:
Text 1,Shape 2,Image 1and so on, numbered per kind (seedocs/reference/object-names.md) - PowerPoint: Home > Arrange > Selection Pane...
Example
ts
'Antenna Design 9'Inherited from
outerBorder?
optionalouterBorder?:StrokeProps| [StrokeProps?,StrokeProps?,StrokeProps?,StrokeProps?]
Table perimeter border. addTableDefinition normalizes it to a 4-tuple (TRBL, sides left unset as undefined) before it reaches the emitter, so the serializer never has to re-handle the single-BorderProps form.
outline?
optionaloutline?:object
color
color:
string
size
size:
number
Inherited from
paraIndent?
optionalparaIndent?:number|"inherit"
First-line indent (points): a:pPr/@indent, the offset of the paragraph's FIRST line from paraMarginLeft. Negative hangs the first line to the left of the body, which is what a bulleted paragraph does; positive indents it to the right, the "first line indented" prose form. PowerPoint: Paragraph > Indentation > Special.
'inherit'writes no@indentat all, so the paragraph takes whatever its list style (a:lstStyle→ placeholder → layout → master) sets: the same third state bullet spells, on the attribute beside it- omitting the option keeps the bullet-derived default: a drawn bullet hangs the first line by its margin,
bullet: falsewritesindent="0",bullet: 'inherit'writes nothing - a value here overrides all of those, in every bullet state
Examples
ts
-18 // hang the first line 18pt left of the body textts
18 // indent the first line 18pt, prose stylets
'inherit' // keep the list style's indent, even on a bulleted paragraphRemarks
Read from the opening run of a paragraph, like bullet and unlike align; a value on a continuation run is ignored.
Inherited from
paraMarginLeft?
optionalparaMarginLeft?:number|"inherit"
Left margin of the paragraph (points): a:pPr/@marL, where the paragraph's body text starts. This is the paragraph's own margin, not the text frame's internal padding (margin) and not the discrete outline level (indentLevel, which writes a:p/@lvl). PowerPoint: Paragraph > Indentation > Before text.
'inherit'writes no@marLat all, so the paragraph takes whatever its list style (a:lstStyle→ placeholder → layout → master) sets, the third state that omission cannot spell, since omitting it writes the bullet-derived default- omitting the option keeps that default: a drawn bullet writes its own margin (see
bullet.indent),bullet: falsewritesmarL="0",bullet: 'inherit'writes nothing - a value here overrides all of those, in every bullet state
Examples
ts
36 // body text starts 36pt (0.5in) from the frame's text edgets
'inherit' // keep the list style's margin, even on a bulleted paragraphRemarks
Read from the opening run of a paragraph, like bullet and unlike align; a value on a continuation run is ignored.
Inherited from
paraSpaceAfter?
optionalparaSpaceAfter?:number
Space after the paragraph in points, as TextPropsOptions.paraSpaceAfter.
Inherited from
paraSpaceBefore?
optionalparaSpaceBefore?:number
Space before the paragraph in points, as TextPropsOptions.paraSpaceBefore.
Inherited from
TableCellProps.paraSpaceBefore
path?
optionalpath?:string
URL or relative path
Example
ts
'https://onedrives.com/myimg.png` // retrieve image via URL
@example '/home/user/images/myimg.png` // retrieve image via local pathInherited from
placeholder?
optionalplaceholder?:PlaceholderOption
Name of a picture placeholder defined on the slide layout/master to populate, or a PlaceholderBinding that states the p:ph to write
- when it matches a layout/master placeholder, the image inherits that placeholder's position and size for any of
x/y/w/hnot supplied explicitly; explicit values always win - a name that matches none writes no
p:ph; a binding'sidxortypewrites one regardless
Examples
ts
'picph'ts
{ type: 'pic', idx: 13 }See
https://docs.microsoft.com/en-us/office/vba/api/powerpoint.ppplaceholdertype
Inherited from
points?
optionalpoints?:GeometryPoint[]
Clip the image to an arbitrary freeform path (custGeom)
- takes precedence over
shape/roundingwhen present - coordinates are authored in the image's own inch/EMU space (0..w, 0..h), not slide-relative and not normalized
- supports the same path DSL as freeform shapes:
moveTo/lnTo/cubicBezTo/quadBezTo/arcTo/close
Example
ts
[{ x: 1, y: 0 }, { x: 2, y: 2 }, { x: 0, y: 2 }, { close: true }] // triangular photo clipInherited from
rectRadius?
optionalrectRadius?:number
Corner radius (inches) of the clip shape, for 'roundRect' and the other rounded presets
- resolved against the shorter side of the box and written as the preset's corner guide
- not clamped: a radius past half the shorter side is written as given, and PowerPoint draws the corner at its limit
- omitted, the preset keeps its own radius
Inherited from
rotate?
optionalrotate?:number
Image rotation (degrees)
- range: -360 to 360
Default
ts
0Example
ts
180 // rotate image 180 degreesInherited from
rounding?
optionalrounding?:boolean
Enable image rounding (clips the image to a circle/ellipse)
- shorthand for
shape: 'ellipse';shapetakes precedence when both are set
Default
ts
falseInherited from
rowH?
optionalrowH?:number| (number|null)[]
rowspan?
optionalrowspan?:number
Cell rowspan
Inherited from
rtl?
optionalrtl?:boolean
rtlMode?
optionalrtlMode?:boolean
Whether to enable right-to-left mode
Default
ts
falseInherited from
shadow?
optionalshadow?:ShadowProps
Shadow Props
- MS-PPT > Format Picture > Shadow
Example
ts
{ type: 'outer', color: '000000', transparency: 50, blur: 20, offset: 20, angle: 270 }Inherited from
shape?
optionalshape?:SHAPE_NAME
Clip the image to a preset shape geometry ("fit image into shape")
- accepts any PowerPoint preset geometry name, e.g.
'roundRect','hexagon','ellipse' - combine with
sizing: { type: 'cover', ... }for an aspect-correct fill of the shape box - use
rectRadiusto set the corner radius for'roundRect'
Examples
ts
'roundRect' // rounded-rectangle avatarts
'hexagon' // hexagonal photoInherited from
shapeAdjust?
optionalshapeAdjust?:ShapeAdjustValue|ShapeAdjustValue[]
Preset-geometry adjustment handles (<a:avLst> guides) for the clip shape.
- tune adjustment handles that lack a dedicated option, e.g. chevron point depth
- accepts a single guide or an array; each
valueis a0.0–1.0fraction (see ShapeAdjustValue)
Example
ts
{ name: 'adj', value: 0.25 }Inherited from
sizing?
optionalsizing?:object
Image sizing options
- omit entirely for the default: a raster fills the
w×hbox, a vector (SVG) source is letterboxed to its own aspect ratio inside that box
h?
optionalh?:Coord
Image height
- inches or percentage
- defaults to the picture's own
h
Examples
ts
10.25 // position in inchests
'75%' // position as percentage of slide sizetype
type:
"contain"|"cover"|"crop"|"stretch"
Sizing type
cover/containfit the image into thew×hbox using the image's natural aspect ratio, read from the embedded PNG/JPEG/GIF/BMP/WebP header, or from an SVG'swidth/heightorviewBox. If the natural size cannot be determined (an unrecognized format, or an SVG carrying neither) the displayedw/hratio is used as a fallback and a warning is logged.cropcuts a window out of the displayed image using thex/y/w/hoffsets.stretchfills the box regardless of aspect ratio. This is what a raster does anyway; name it explicitly to opt a vector source out of its aspect-correct default.
w?
optionalw?:Coord
Image width
- inches or percentage
- defaults to the picture's own
w, which is whatcover/containalmost always want
Examples
ts
10.25 // position in inchests
'75%' // position as percentage of slide sizex?
optionalx?:Coord
Offset from left to crop image
croponly- inches or percentage
Examples
ts
10.25 // position in inchests
'75%' // position as percentage of slide sizey?
optionaly?:Coord
Offset from top to crop image
croponly- inches or percentage
Examples
ts
10.25 // position in inchests
'75%' // position as percentage of slide sizeInherited from
softBreakBefore?
optionalsoftBreakBefore?:boolean
Add a soft line-break (shift+enter) before line text content
Default
ts
falseInherited from
TableCellProps.softBreakBefore
strike?
optionalstrike?:NonNullable<boolean|"noStrike"|"sngStrike"|"dblStrike"|undefined>
Strikethrough, as TextPropsOptions.strike takes it on a text run. On a cell it applies to every run that states none; on a run inside a cell's text, to that run.
Inherited from
subscript?
optionalsubscript?:boolean
Inherited from
superscript?
optionalsuperscript?:boolean
Inherited from
svg?
optionalsvg?:string
Raw SVG markup to embed as the image source
- convenience for
data: 'data:image/svg+xml;base64,...'; pptx-ts encodes it for you - ignored when
dataorpathis also provided
Example
ts
'<svg viewBox="0 0 24 24">...</svg>'Inherited from
tableFill?
optionaltableFill?:FillOption
Table background (a:tblPr fill), as distinct from fill, which is stamped onto each cell.
tableStyle?
optionaltableStyle?:`{${string}}`
tabStops?
optionaltabStops?:object[]
tab stops
- PowerPoint: Paragraph > Tabs > Tab stop position
alignment?
optionalalignment?:"r"|"ctr"|"l"|"dec"
position
position:
number
Example
ts
[{ position:1 }, { position:3 }] // Set first tab stop to 1 inch, set second tab stop to 3 inchesInherited from
textDirection?
optionaltextDirection?:"horz"|"vert"|"vert270"|"wordArtVert"
text direction horz = horizontal vert = rotate 90^ vert270 = rotate 270^ wordArtVert = stacked
Default
ts
'horz'Inherited from
textWarp?
optionaltextWarp?:"textNoShape"|"textPlain"|"textStop"|"textTriangle"|"textTriangleInverted"|"textChevron"|"textChevronInverted"|"textRingInside"|"textRingOutside"|"textArchUp"|"textArchDown"|"textCircle"|"textButton"|"textArchUpPour"|"textArchDownPour"|"textCirclePour"|"textButtonPour"|"textCurveUp"|"textCurveDown"|"textCanUp"|"textCanDown"|"textWave1"|"textWave2"|"textDoubleWave1"|"textWave4"|"textInflate"|"textDeflate"|"textInflateBottom"|"textDeflateBottom"|"textInflateTop"|"textDeflateTop"|"textDeflateInflate"|"textDeflateInflateDeflate"|"textFadeRight"|"textFadeLeft"|"textFadeUp"|"textFadeDown"|"textSlantUp"|"textSlantDown"|"textCascadeUp"|"textCascadeDown"
Preset text warp / WordArt shape (<a:bodyPr><a:prstTxWarp prst="..">), which bends the text along a preset path (arch, circle, wave, …): the whole ST_TextShapeType set.
Examples
ts
'textArchUp' // bend text along an upward arch (e.g. a label following a ring/arc)ts
'textCircle'Inherited from
transparency?
optionaltransparency?:number
Transparency (percent)
- MS-PPT > Format Picture > Picture > Picture Transparency > Transparency
- range: 0-100
Default
ts
0Example
ts
25 // 25% transparentInherited from
underline?
optionalunderline?:boolean| {color?:string;style?:"none"|"words"|"sng"|"dbl"|"heavy"|"dotted"|"dottedHeavy"|"dash"|"dashHeavy"|"dashLong"|"dashLongHeavy"|"dotDash"|"dotDashHeavy"|"dotDotDash"|"dotDotDashHeavy"|"wavy"|"wavyHeavy"|"wavyDbl"; }
underline properties
- PowerPoint: Font > Color & Underline > Underline Style/Underline Color
styleis the fullST_TextUnderlineTypeenumeration (ECMA-376 §20.1.10.81)'none'is the explicit off: it writesa:rPr/@u="none", which overrides an underline the run would otherwise inherit from its list style, placeholder, layout or master. Omitting the option instead states nothing and lets that inheritance stand. The two are different facts, not two spellings of one.trueis shorthand for{ style: 'sng' }, a single line.falsestates nothing, as omitting the option does, so an inherited underline stands;{ style: 'none' }is the explicit off.
Default
ts
(unset) inheritExamples
ts
underline: true // single underlinets
underline: { style: 'dbl', color: 'FF0000' } // red double underlineInherited from
valign?
optionalvalign?:VAlign
vertical alignment
Default
ts
'top'Inherited from
vert?
optionalvert?:"horz"|"vert"|"vert270"|"wordArtVert"|"eaVert"|"mongolianVert"|"wordArtVertRtl"
Advanced/legacy escape hatch for the full ST_TextVerticalType range (e.g. eaVert, mongolianVert, wordArtVert). Prefer TextBaseProps.textDirection for the common cases; both map to a:bodyPr@vert.
Inherited from
w?
optionalw?:Coord|null
Width, as PositionProps.w. null leaves it unstated: the layout placeholder's, with placeholder.
Inherited from
wrap?
optionalwrap?:boolean
Text wrap
Default
ts
trueInherited from
x?
optionalx?:Coord|null
Horizontal position, as PositionProps.x. null leaves it unstated: the layout placeholder's, with placeholder.
Inherited from
y?
optionaly?:Coord|null
Vertical position, as PositionProps.y. null leaves it unstated: the layout placeholder's, with placeholder.