Text covered by a later shape

pptx.occluded-text

A text box with an opaque shape or picture drawn on top of it, hiding the words behind an object.

How the text is hidden

A slide is painted in document order, so a shape appearing later in p:spTree is drawn over anything earlier that it overlaps. Typing the text, then dropping a filled rectangle or an image across it, conceals the words without touching the run at all — the text keeps its normal colour, size and position.

Why a model still reads it

Stacking order is a property of the slide, not of the run. The run's own styling says perfectly visible, so an extractor walking the text has nothing to go on and returns the covered words alongside the rest.

What we do about it

p:sp and p:pic elements are interleaved and sorted by document position, which is paint order. A candidate covers a text shape only when it appears strictly later, resolves a rectangle in slide space, fully CONTAINS the text shape's rectangle, and is opaquely filled — isOpaqueFill accepts only a prstGeom of rect, never a custom geometry, rejects noFill and any partially transparent solid fill and gradients, and accepts a picture fill in either namespace or a theme fill reference. The flag is set only on slide body shapes, never on a layout or master, and the rule additionally requires run.visible == true, so a run already concealed by its own styling reports under that technique instead. Severity high, flagged and never stripped.

How often it fires

13.3% of 120 real Zenodo conference decks (corpus-zenodopptx as re-fetched 2026-08-23), measured 2026-08-24.

This is an alert-volume number and nothing else. It says how often the alarm sounds on documents as found — not how often it is right, and not whether what it found was harmless. Documents as found may themselves carry concealment. Read it against the population named above rather than as a property of documents in general.

next

Check your own file

Three commands: a key, credit, a verdict.

Start with the API