A web font that draws nothing

html.blank-font

Text set in a font the page itself embeds, whose glyph for every letter of that text has no outline — laid out, taking up its width, painting nothing.

How the text is hidden

A @font-face rule with a data: URL ships a TrueType font inside the page, and a font-family on some element applies it. Give every glyph in that font a zero-length outline and the browser lays the text out, advances by each character's width, and paints nothing. It does not fall back to another face for a character the font has — fallback happens only for characters the font lacks — so the paragraph is simply not there, while no other signal exists: no display:none, no white colour, no tiny size. PhantomLint's published test set carries exactly this page.

Why a model still reads it

The characters are in the DOM at full size and full contrast. A font is a rendering resource; a text extractor never loads one, so it returns the paragraph as written and a model reads the instruction the reader could not see.

What we do about it

The parser reads every @font-face in the page's own <style> blocks, decodes a data: source and reads it with the same TrueType tables the Office font check uses, and tracks font-family through the cascade — the property, the font shorthand, and the legacy <font face>. For a run set in an embedded face, every letter and digit is looked up in the font's cmap; when each maps to a glyph whose loca span is empty the run's reason is blank-glyph and the rule fires at high with action flag, family A. A character the font lacks makes the run visible — the next face draws it — and punctuation and spaces are not judged. A more specific concealment on the same text keeps its own name. containerVisibility is never, and the instruction-shape escalation applies as to any concealed run.

How often it fires

0% of a broad crawl of 399 real web pages — pages, not documents, measured 2026-09-25.

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