Paragraph styles
The ParagraphStyle element — identity, BasedOn parent, character defaults, paragraph geometry and the option families it carries, as InDesign writes them.
A paragraph style carries both the geometry of a paragraph and the character defaults its text starts from.
In short A <ParagraphStyle> sets a paragraph's alignment, indents, spacing,
hyphenation, keeps and lists, and also the font, size and colour its text uses when no
character style says otherwise. InDesign writes most of these as attributes, and a handful as
typed children of a <Properties> block: the font (AppliedFont), the parent (BasedOn), the
leading, the tab stops and the list settings. A paragraph refers to its style through
AppliedParagraphStyle on its <ParagraphStyleRange>.
Where they live
Paragraph styles sit under <RootParagraphStyleGroup> in Resources/Styles.xml, optionally
inside <ParagraphStyleGroup> folders. Two built-ins are always present: the root
ParagraphStyle/$ID/[No paragraph style], which every chain ends at, and
ParagraphStyle/$ID/NormalParagraphStyle, shown in InDesign as [Basic Paragraph], the
style new text gets.
Three paragraph styles. The root carries the font as a typed AppliedFont child; each of the
other two names its parent in a typed BasedOn child.
Attributes and <Properties> children
Most paragraph-style settings are plain attributes. These are written as typed children of the
style's <Properties> block instead:
| Child | Type | Holds |
|---|---|---|
<BasedOn> | object (a Self id) or string (a $ID/ root name) | the parent style |
<AppliedFont> | string | the font family, such as Minion Pro |
<Leading> | unit (points) or enumeration (Auto) | the leading |
<TabList> | list of records | the tab stops; see drop caps and tabs |
<BulletChar>, <NumberingFormat>, <AppliedNumberingList>, <BulletsCharacterStyle>, <NumberingCharacterStyle> | various | list settings; see lists, keep options and span columns |
<SpanSplitColumnCount> | short or enumeration (All) | how many columns a span or split covers |
<AllNestedStyles> | list of records | nested styles; see below |
InDesign ignores an AppliedFont attribute on a paragraph style; the font has to be the typed
child. The rule for BasedOn is the same (see the cascade).
In Paged: the importer reads
Supported · verifiedAppliedFont,BasedOnandLeadingin either form. The exporter writes them as children, the way InDesign reads them.
Character defaults
A paragraph style carries the full set of character attributes, so a run that applies no character style still has a value for each. The common ones:
| Attribute · ParagraphStyle | Values | Paged | paged.set |
|---|---|---|---|
| AppliedFont | ref | read · written | characterFontFamily |
| FontStyle | text | read · written | characterFontStyle |
| PointSize | length (pt) | read · written | characterFontSize |
| FillColor | Color reference | read · written | characterFillColor |
| FillTint | integer | read · written | |
| Tracking | number | read · written | characterTracking |
| Capitalization | Normal | AllCaps | SmallCaps | OTSmallCaps | read · written | characterCase |
| Position | Normal | Superscript | Subscript | OTSuperscript | OTSubscript | OTNumerator | OTDenominator | read · written | characterPosition |
| Ligatures | false | true | not read | |
| KerningMethod | $ID/Metrics | $ID/Optical | not read |
Their meaning is the same as on a character style; see character styles and the typography chapter.
In Paged:
Ligatures,KerningMethodand theOTF…OpenType attributes are read from character styles and ranges but not yet from paragraph styles, where InDesign also writes them; a run whose only source for them is its paragraph style gets the defaults (ligatures on, metric kerning, no extra OpenType features).
Paragraph geometry
| Attribute · ParagraphStyle | Values | Paged | paged.set |
|---|---|---|---|
| Justification | LeftAlign | CenterAlign | RightAlign | LeftJustified | CenterJustified | RightJustified | FullyJustified | ToBindingSide | AwayFromBindingSide | read · written | paragraphJustification |
| LeftIndent | length (pt) | read · written | paragraphLeftIndent |
| RightIndent | length (pt) | read · written | paragraphRightIndent |
| FirstLineIndent | length (pt) | read · written | paragraphFirstLineIndent |
| LastLineIndent | integer | not read | |
| SpaceBefore | length (pt) | read · written | paragraphSpaceBefore |
| SpaceAfter | length (pt) | read · written | paragraphSpaceAfter |
Justification takes LeftAlign, CenterAlign, RightAlign, the justified modes
LeftJustified, CenterJustified, RightJustified and FullyJustified, and the
binding-relative ToBindingSide and AwayFromBindingSide. The justified modes differ in their
last line; see justification and line-breaking.
In Paged:
CenterJustifiedandRightJustifiedare set ragged (centred and flush right) instead of justified, andFullyJustifiedis composed likeLeftJustified. Both are known engine issues.ToBindingSideis set left andAwayFromBindingSideright.
Option families
A paragraph style carries several further families of attributes, each documented with its topic:
- Spacing and composition:
Composer,MinimumWordSpacing/DesiredWordSpacing/MaximumWordSpacing, the letter-spacing and glyph-scaling triples,SingleWordJustification, and the hyphenation family (Hyphenation,HyphenateWordsLongerThan,HyphenateAfterFirst,HyphenateBeforeLast,HyphenateCapitalizedWords,HyphenateLadderLimit,HyphenationZone, …). See justification and line-breaking and composer and OpenType features. - Drop caps and tabs:
DropCapCharacters,DropCapLines,DropCapDetailand the<TabList>. See drop caps and tabs. - Lists, keeps and columns:
BulletsAndNumberingListType,NumberingExpressionand the list children;KeepLinesTogether,KeepAllLinesTogether,KeepFirstLines,KeepLastLines,KeepWithNext,StartParagraph;SpanColumnTypeand its companions. See lists, keep options and span columns. - Rules, shading and borders:
RuleAbove…andRuleBelow…(on, colour, tint, weight, offset, indents, width),ParagraphShading…andParagraphBorder…(on, colour, tint, weight, offsets, per-corner options). Supported · verified Supported · verified Supported · verified - CJK composition:
KinsokuSet,KinsokuType,MojikumiTable/Mojikumi. Parsed, partly rendered Parsed, partly rendered
Nested styles
A nested style applies a character style to the start of each paragraph, up to a delimiter: the
first word, the first tab, everything before a colon. InDesign writes a paragraph style's
nested styles as <Properties><AllNestedStyles type="list">, one record per nested style,
each naming the character style, the delimiter, how many times it repeats and whether the
delimiter itself is included.
In Paged: nested styles are applied when they come as
Supported · untested<NestedStyle>elements under the paragraph style, a form InDesign does not write. The<AllNestedStyles>list InDesign writes is not read yet, so nested styles from an InDesign file are not applied.
NextStyle
NextStyle names the paragraph style InDesign gives the next paragraph when the user presses
Return at the end of this one. It is an authoring setting: it changes nothing about how existing
text looks. A heading style typically has NextStyle set to the body style; a body style
usually points at itself.
In Paged:
NextStyleis read, can be set, and survives a save. It does not affect rendering. Parsed, not rendered
Frequently asked questions
How do I set a paragraph style's font in IDML?
With a typed child: <Properties><AppliedFont type="string">Minion Pro</AppliedFont></Properties>,
plus FontStyle="Bold" as an attribute for the face. InDesign ignores an AppliedFont attribute
on the style.
What is the difference between a paragraph style and a character style? A paragraph style sets whole-paragraph properties (alignment, indents, spacing, keeps, lists) and the character defaults the paragraph's text starts from. A character style applies to a run inside a paragraph and usually sets only the few attributes that differ.
What is [Basic Paragraph]?
The built-in style InDesign applies to new text. Its id is
ParagraphStyle/$ID/NormalParagraphStyle. It is an ordinary, editable style based on the
[No paragraph style] root.
Does NextStyle change how a document renders?
No. It only tells InDesign which style to apply to a new paragraph typed after this one.
The cascade
How BasedOn links a style to its parent, how InDesign writes it as a typed Properties child, and how a chain of styles folds into one set of values.
Character styles
The CharacterStyle element — identity, BasedOn, the attributes it usually sets, and how a range that applies a character style can still override one attribute.