Frames & paths
The page-item family in IDML — the rectangles, ovals, lines, polygons, text frames, and groups that hold every mark on a page.
Everything you see on an IDML page is a page item — one of a small family of elements that hold every mark on a spread.
In short: A page item is the IDML element that places content on a page: a
block of body copy, a photo, a tinted background panel, a hairline rule, a logo
cluster. They are a small, closed family — text frames, rectangles, ovals,
graphic lines, polygons, and groups — and each lives as a direct child of a
Spread. Learn the family and you can
read any spread; the rest is just which attributes each member carries. This
page introduces the family, the two jobs it splits into, and the skeleton every
member shares.
One family, two jobs
The page items split cleanly by what they hold:
- Frames that hold text. A
TextFramepoints at a story (itsParentStory) and the composer flows that story's paragraphs into the frame's outline. - Frames that hold graphics or nothing. A
Rectangle,Oval,GraphicLine, orPolygonis a vector shape. With aFillColorit is a colour panel; with a nested<Image>it is a picture frame; with neither it is an empty outline.
That split is not rigid in InDesign — the same underlying object becomes a graphic frame, a text frame, or an empty shape depending on its content. But in the IDML on disk each item is written under a named element that tells you its current role, and that is the name our parser dispatches on.
The members
| Attribute · Page-item elements | Type / values | Support | Notes |
|---|---|---|---|
| TextFrame | element | Supported | A frame bound to a story via ParentStory. Text flows into its outline. |
| Rectangle | element | Supported | Four-corner shape. The workhorse: colour panels and most picture frames. |
| Oval | element | Supported | The ellipse inscribed in the shape’s bounding box. |
| GraphicLine | element | Supported | A straight stroke — no fill region, just two endpoints. |
| Polygon | element | Supported | An arbitrary closed outline (charts, stars, cut-outs). |
| Group | element | Parsed, not yet rendered | A container that clusters several items so one transform / opacity applies to all. See below. |
The same shape can carry any of three content roles, which IDML records on a
ContentType attribute: TextType (a text frame), GraphicType (a graphics
frame), or Unassigned (an empty shape). Our parser does not read that
attribute directly — it infers the role from the element name and from
whether a ParentStory or image link is present. A <TextFrame> with a
ParentStory is text; a <Rectangle> with a FillColor and no story is a
graphic.
How a page item is built
Every member shares the same skeleton. Strip a Rectangle and a TextFrame
down and they look nearly identical — that is by design, and it is why the
reference page can describe them together:
- a
Selfid, so other parts can point at it; - an
ItemTransformthat places it on the page; - a
PathGeometry(or, on older exports, aGeometricBounds) that gives its outline; - paint attributes —
FillColor,StrokeColor,StrokeWeight; - an
AppliedObjectStylethat supplies defaults for everything left unset.
The shape's outline lives in its own inner coordinate space, authored from the
origin; the ItemTransform slides and rotates that outline onto the page. This
is the same coordinate story the
geometry chapter tells in full — page items are
where it pays off.
Where to go next
- Page-item types — the reference: one attribute table per member, with exactly which attributes our renderer honours.
- Text frames — the
TextFramePreferenceblock that controls insets, vertical justification, auto-sizing, and the first baseline. - Groups — how membership and group-level transparency work, and one thing the renderer does not yet do inside them.
Frequently asked questions
What is a page item in IDML?
A page item is any element that places content on a page — a TextFrame,
Rectangle, Oval, GraphicLine, Polygon, or Group. Each is written as a
direct child of a Spread and carries its own placement, outline, and paint.
What is the difference between a text frame and a graphic frame?
A TextFrame points at a story through its ParentStory, and the composer flows
that story's paragraphs into the frame's outline. A graphic frame — a
Rectangle, Oval, GraphicLine, or Polygon — holds a vector shape that
paints as a colour panel (with a FillColor), a picture frame (with a nested
<Image>), or an empty outline (with neither).
How does the parser know what kind of page item it is reading?
It dispatches on the element name and on whether a ParentStory or image link
is present, not on the ContentType attribute. A <TextFrame> with a
ParentStory is treated as text; a <Rectangle> with a FillColor and no story
is treated as a graphic.
Conflict resolution
How the parser computes a run's effective formatting — local range override, then the applied character style's BasedOn chain, then the applied paragraph style's chain — the ambiguous cases, and the style constructs that are parsed but not yet enforced.
Page-item types
The six IDML page-item elements — TextFrame, Rectangle, Oval, GraphicLine, Polygon, and Group — the key attributes of each, and which ones the renderer honours.