Skip to content

API reference / Common / Engine types / TextBodyProperties

Interface: TextBodyProperties ​

Body-level layout properties (a:bodyPr, CT_TextBodyProperties) — anchor, insets (lIns/rIns/tIns/bIns), wrap, autofit, and columns. What it does not model yet is listed after the last field.

The body's owner (the shape layout) consumes these: insets shrink the frame it sizes, wrap decides whether a width constrains at all, numCol says how the frame divides, autofit drives the compose context's scale knobs, and anchor drives the post-compose vertical alignment the frame settles per column (WaxFrameSettings::anchor).

Properties ​

PropertyDescription
anchor?
TextAnchor
anchor — vertical anchoring of the content in the frame.
insetLeft?
number
lIns — left inset in points (default 0.1", 7.2pt, applied by the host).
insetRight?
number
rIns — right inset in points.
insetTop?
number
tIns — top inset in points (default 0.05", 3.6pt).
insetBottom?
number
bIns — bottom inset in points.
wrap?
TextWrap
wrap — whether text wraps at the frame's width (square) or runs unbounded (none).
autoFit?
TextAutoFit
noAutofit / normAutofit / spAutoFit — how the frame and the text negotiate when content outgrows the frame.
spacingFirstLastParagraph?
boolean
spcFirstLastPara — whether the body honors the spacing at its two ends: the first paragraph's space-before and the last's space-after. None is unspecified, leaving the format's own rule (PowerPoint drops both). Only the leading half is observable in this layout. A block is as tall as its last line, so a trailing space-after never reaches the measured content height and neither the anchor nor the autofit fit ever sees it — the flag reduces to whether the first paragraph's space-before survives at the top of the frame.
columnCount?
number
numCol — how many columns the frame divides into, the story filling each before it moves to the next. None (and 1) is the undivided frame. Every column is the frame's full inner height and they share its width equally, less a column_spacing gutter between each pair.
columnSpacing?
number
spcCol — the gutter between two columns, in points. Unset is none, which is what PowerPoint leaves a body that divides without saying.
columnRtl?
boolean
rtlCol — the columns run right to left, so the story starts in the rightmost one. Independent of a paragraph's own rtl: which way the columns are ordered and which way its text reads are separate questions.
rotation?
number
rot — the text's rotation within its box, clockwise in degrees, on top of the shape's own (§21.1.2.1.1), as written. The only rotation a chart gives a title, an axis's labels or a data label. None is unspecified: the standard implies 0, but Office inherits it (MS-OI29500 §2.1.1379), and an axis title left unspecified is turned to read up an axis that runs up the plot.
warp?
TextWarp
a:prstTxWarp — the preset warp the body's text is drawn through, over the shape's text rect. None is unwarped, which nearly every body is, so it is boxed rather than widening every body by its adjust list.
scene3d?
PaintScene3d
a:scene3d — the camera and light rig the text is seen under. Only where its shape has no a:scene3d of its own: a shape that does holds its text in that scene, and PowerPoint reads nothing of this one.
text3d?
Text3d
a:sp3d
direction?
TextDirection
vert — which way the lines run and the glyphs stand. None is unspecified, which reads as horizontal.
verticalOverflow?
TextVerticalOverflow
vertOverflow — what text past the box's bottom does. None is unspecified, which reads as Overflow. Only a chart's data label reads it, where its box stops growing at half the chart's height; a shape's body overflows whatever it says.