a:pPr (Paragraph Properties)

Specifies formatting properties for paragraphs, including alignment, indentation, spacing, tabs, and bullet properties.

Description

a:pPr (Paragraph Properties) is the paragraph-level formatting container in DrawingML. It is defined in ECMA-376 Part 1 §20.1.2.2.2 and controls all visual presentation of a complete paragraph within a text body.

Purpose and Scope

Paragraph properties specify formatting that applies to every line and run within the paragraph:

  • Alignment — Left, center, right, justify, or distributed across shape width
  • Indentation — Left margin, first-line indent (positive) or hanging indent (negative)
  • Spacing — Line height, space before paragraph, space after paragraph
  • Bullets and Numbering — Character, font, color, format, level
  • Tab Stops — Custom tab positions for alignment within paragraph
  • Text Direction — Left-to-right (LTR) or right-to-left (RTL) for Arabic, Hebrew, etc.
  • Hierarchy Level — Outline level (0–8) for multi-level lists and nesting

Hierarchy and Precedence

Paragraph properties cascade as follows:

  1. Explicit paragraph properties (a:pPr in a:p) — Most specific
  2. Master slide default properties — Theme or template
  3. Application defaults — Fallback

Run-level properties (a:rPr in a:r) override paragraph properties for specific formatting aspects (e.g., font size, color, bold).

Content Model

a:pPr (attributes + optional children)
├─ a:lnSpc (line spacing)
├─ a:spcBef (spacing before)
├─ a:spcAft (spacing after)
├─ a:buFont (bullet font)
├─ a:buChar (bullet character)
├─ a:buAutoNum (auto-numbered bullet)
├─ a:buClr (bullet color)
├─ a:buSzPct (bullet size)
├─ a:buBlipFill (bullet image)
├─ a:tabLst (tab stops)
├─ a:defRPr (default run properties for paragraph)
└─ ... (other formatting elements)

Attributes

Attribute Type Range Default Description
lvl Integer 0–8 0 Hierarchy/outline level. Controls indentation and bullet style in multi-level lists.
algn Enum l, ctr, r, just, dist Inherited Text alignment: left, center, right, justified, distributed.
marL Integer (EMU) 0–9144000 0 Left margin in EMUs (1 inch = 914400 EMU).
indent Integer (EMU) -9144000–9144000 0 First-line indent (positive = indent, negative = hanging indent).
defTabSz Integer (EMU) 0–51865200 457200 Default tab stop size in EMUs.
rtl Boolean 0, 1, true, false false Right-to-left text direction (for Arabic, Hebrew).
eaLnBrk Boolean 0, 1, true, false true East Asian line breaking behavior.
latinLnBrk Boolean 0, 1, true, false false Latin text line breaking.
hangingPunct Boolean 0, 1, true, false false Hanging punctuation (CJK); punctuation protrudes into margin.

Child Elements for Bullets and Spacing

Element Occurrence Purpose
a:lnSpc 0–1 Line spacing (single, 1.5x, double, or custom).
a:spcBef 0–1 Space before paragraph (in points, percentage, or EMU).
a:spcAft 0–1 Space after paragraph (in points, percentage, or EMU).
a:buChar 0–1 Bullet character (•, ◦, ■, ○, etc.).
a:buAutoNum 0–1 Auto-numbered bullets (1, 2, 3 or a, b, c or i, ii, iii).
a:buFont 0–1 Font family for bullet character.
a:buClr 0–1 Color for bullet (solid fill, theme color, gradient).
a:buSzPct 0–1 Bullet size as percentage of text size.
a:tabLst 0–1 Tab stop positions for alignment.
a:defRPr 0–1 Default run properties for paragraph (font, size, color baseline).

Examples

Basic Left-Aligned Paragraph

<a:p>
  <a:pPr lvl="0" algn="l"/>
  <a:r>
    <a:rPr lang="en-US" sz="2400">
      <a:latin typeface="Calibri"/>
    </a:rPr>
    <a:t>Left-aligned body text with default spacing.</a:t>
  </a:r>
</a:p>

Centered Paragraph with Custom Spacing

<a:p>
  <a:pPr lvl="0" algn="ctr">
    <a:spcBef>
      <a:spcPts val="1200"/>
    </a:spcBef>
    <a:spcAft>
      <a:spcPts val="1200"/>
    </a:spcAft>
  </a:pPr>
  <a:r>
    <a:rPr lang="en-US" sz="4400" b="1">
      <a:latin typeface="Calibri"/>
    </a:rPr>
    <a:t>Centered Heading</a:t>
  </a:r>
</a:p>

Bulleted Paragraph (Simple Bullet)

<a:p>
  <a:pPr lvl="0">
    <a:buChar char="•"/>
    <a:buFont typeface="Arial"/>
  </a:pPr>
  <a:r>
    <a:rPr lang="en-US" sz="2400">
      <a:latin typeface="Calibri"/>
    </a:rPr>
    <a:t>First bullet point in the list.</a:t>
  </a:r>
</a:p>

Multi-Level Hierarchy with Nested Bullets

<a:txBody>
  <a:bodyPr/>
  <a:lstStyle/>
  <a:p>
    <a:pPr lvl="0">
      <a:buChar char="•"/>
      <a:buFont typeface="Arial"/>
    </a:pPr>
    <a:r><a:t>Level 0: Main bullet</a:t></a:r>
  </a:p>
  <a:p>
    <a:pPr lvl="1">
      <a:buChar char="◦"/>
      <a:buFont typeface="Arial"/>
    </a:pPr>
    <a:r><a:t>Level 1: Sub-bullet</a:t></a:r>
  </a:p>
  <a:p>
    <a:pPr lvl="2">
      <a:buChar char="■"/>
      <a:buFont typeface="Arial"/>
    </a:pPr>
    <a:r><a:t>Level 2: Sub-sub-bullet</a:t></a:r>
  </a:p>
  <a:p>
    <a:pPr lvl="0">
      <a:buChar char="•"/>
      <a:buFont typeface="Arial"/>
    </a:pPr>
    <a:r><a:t>Back to level 0</a:t></a:r>
  </a:p>
</a:txBody>

Hanging Indent (List-Style Indentation)

<a:p>
  <a:pPr lvl="0" marL="914400" indent="-457200">
    <a:buChar char="•"/>
  </a:pPr>
  <a:r>
    <a:rPr lang="en-US" sz="2400">
      <a:latin typeface="Calibri"/>
    </a:rPr>
    <a:t>Bullet with hanging indent: main paragraph text continues on second and subsequent lines, indented from the bullet.</a:t>
  </a:r>
</a:p>

Paragraph with Line Spacing (1.5 Line Height)

<a:p>
  <a:pPr lvl="0">
    <a:lnSpc>
      <a:spcPct val="150000"/>
    </a:lnSpc>
  </a:pPr>
  <a:r>
    <a:rPr lang="en-US" sz="2400">
      <a:latin typeface="Calibri"/>
    </a:rPr>
    <a:t>Text with 1.5 line spacing for improved readability. Multiple lines of text will be rendered with increased vertical space between each line.</a:t>
  </a:r>
</a:p>

Right-Aligned with Negative Margin (Odd Layout)

<a:p>
  <a:pPr lvl="0" algn="r" marL="1371600"/>
  <a:r>
    <a:rPr lang="en-US" sz="2400">
      <a:latin typeface="Calibri"/>
    </a:rPr>
    <a:t>Right-aligned text with left margin offset.</a:t>
  </a:r>
</a:p>

Alignment Reference

Value Name Effect Use Case
l Left Flush to left edge Default, body text, left-to-right documents
ctr Center Centered horizontally Titles, centered headings, emphasis
r Right Flush to right edge Right-aligned layouts, right-to-left document support
just Justified Stretched to fill width Formal documents, newspaper-style columns
dist Distributed Stretched with uniform character spacing Compact layouts, East Asian typography

Hierarchy Levels and Indentation

Level Name Purpose Typical Bullet
0 Main Primary/top-level bullets • (solid circle)
1 First First sub-level indent ◦ (hollow circle)
2 Second Second sub-level indent ■ (solid square)
3–8 Deeper Additional nesting Varies by theme/template

EMU to Inches/Points:

  • 1 inch = 914400 EMU
  • 1 point = 12700 EMU
  • Typical level-to-level indent: 457200–914400 EMU (0.5–1.0 inch)

Spacing Units Reference

Unit Type Example Meaning
EMU Direct marL="914400" 1 inch; used for margins/indents
Points Via spcPts <a:spcPts val="1200"/> 1200/100 = 12pt
Percentage Via spcPct <a:spcPct val="120000"/> 120% of line height
Percent of Font Via spcPct <a:spcPct val="100000"/> 100% = 1x font size

Common Bullet Character Reference

Character Code Use Case
• • (U+2022) Standard bullet (most common)
◦ ◦ (U+25E6) Hollow circle (secondary level)
■ ■ (U+25A0) Solid square (tertiary level)
○ ○ (U+25CB) Circle outline (alternative)
– – (U+2013) En dash (numbered/dash lists)
‣ ‣ (U+2023) Triangular bullet
→ → (U+2192) Arrow (navigation/flow)

Common Formatting Patterns

Professional Heading (Centered, Larger Font, Extra Spacing)

<a:pPr lvl="0" algn="ctr">
  <a:spcBef><a:spcPts val="1800"/></a:spcBef>
  <a:spcAft><a:spcPts val="600"/></a:spcAft>
</a:pPr>

Bullet List with First-Line Hanging Indent

<a:pPr lvl="0" marL="914400" indent="-457200">
  <a:buChar char="•"/>
  <a:buFont typeface="Arial"/>
</a:pPr>

Justified Body Text with 1.5 Line Spacing

<a:pPr lvl="0" algn="just">
  <a:lnSpc><a:spcPct val="150000"/></a:lnSpc>
</a:pPr>

Multi-Level Outline (0, 1, 2 Hierarchy)

<!-- Level 0 -->
<a:pPr lvl="0"><a:buChar char="•"/></a:pPr>
<!-- Level 1 -->
<a:pPr lvl="1"><a:buChar char="◦"/></a:pPr>

```

Notes

Element Relationships

  • Parent: Direct child of a:p (paragraph). Must be the first child if present (0–1 occurrence).
  • Children (optional formatting elements):
    • Spacing: a:lnSpc (line spacing), a:spcBef (space before), a:spcAft (space after)
    • Bullets/Numbering: a:buChar (bullet character), a:buAutoNum (auto-numbered), a:buFont (bullet font), a:buClr (bullet color)
    • Layout: a:tabLst (tab stops), a:defRPr (default run properties for paragraph)

General Notes

  • Container for Formatting: Paragraph properties is the central element for controlling paragraph-wide layout and formatting in DrawingML.
  • Optional Element: a:pPr is optional (0–1). If omitted, defaults to left-aligned, no bullets, with font/size inherited from the text body or theme.
  • EMU Conversion: 914400 EMU = 1 inch = 72 points. Common conversions: 457200 EMU = 0.5”, 228600 EMU = 0.25”.
  • Hierarchy Levels: Levels 0–8 control indentation and bullet style; level 0 is top level, level 1 is first indent, etc. No explicit nesting is required; all paragraphs are siblings.
  • Alignment Scope: Applies to entire paragraph; individual runs cannot have different alignment.
  • Bullet Inheritance: If a:buChar is not specified, the paragraph inherits bullet style from master/theme or is rendered without bullet.
  • Tab Stops: Define custom tab positions with a:tabLst for alignment at specific distances within the paragraph.
  • Right-to-Left: Set rtl="1" for Arabic, Hebrew, or other RTL languages to control text direction and alignment.
  • Line Spacing Options: Single, proportional (%), fixed points, or automatic (default). Most common: 100% (single), 120% (1.2x), 150% (1.5x), 200% (double).
  • Compatibility: DrawingML paragraph properties mirror WordML w:pPr and PresentationML p:pPr structures, enabling consistent layout across Office formats.