Glyphs collapsed to no area

pdf.zero-area-glyph

Text scaled by the text matrix until it puts no resolvable mark on the page, in either dimension.

How the text is hidden

A glyph has two dimensions and the text matrix can collapse either. A run set at a normal size and scaled to a fraction of a percent horizontally is a full-height hairline: invisible to a reader, perfectly extractable, and it answers "no" to any test that only asks about height. Tz takes a plain percentage and is in every producer's vocabulary, so this is not an exotic construction; it was an axis nobody had asked about.

Why a model still reads it

The text matrix is a drawing instruction. Extraction returns the string the show operator was handed, with no notion of the area it covered.

What we do about it

marksNothing tests the rendered height against limits.zeroAreaMaxRenderedSizePt, then the composed horizontal scale against a degenerate-matrix floor, then the advance width times that scale against the same published threshold — one rule rather than two, because a mark thinner than the threshold in either direction is not a mark. It sets zeroArea on the run and also yields invisibleReason: 'sub-readable'. The rule pdf-zero-area-glyph fires on the flag at high, action flag; the technique is also one of the labels the cleaner uses in cleanFile.transforms when a run is removed on other grounds.

How often it fires

0.50% of 400 real UK public-sector contract PDFs (Contracts Finder, 2019–2023) — Word, Adobe, Nitro, office copiers, measured 2026-08-23.

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