A font whose digits draw other digits

ooxml.embedded-font-remap

An embedded font maps a digit to a glyph that cannot be that digit, so a reader sees different numbers from the ones the document stores.

How the text is hidden

The embedded font's cmap points each character at a glyph outline. Point the glyph for 5 at the outline that draws 0 and the stored text still reads $50,000 while the page reads $500,000. Nothing is hidden, nothing is added, and no family-A signal exists to find — the divergence lives entirely inside the font.

Why a model still reads it

The text is ordinary Unicode and extracts perfectly; that is the attack rather than an accident of it. The human reads one number and every machine downstream reads another, which is the same divergence as pdf.cmap-divergence one layer down.

What we do about it

Three signals over the ten digits, read from the font's own tables with nothing rendered. Two are topological and exact: a 0 or 8 drawn with fewer than two contours cannot be that digit, and two digits never legitimately share a glyph id (4, 6 and 9 are excluded from the contour rule because open-top and single-storey designs are real). The third rasterises the drawn glyph and compares it against a per-digit reference, accusing only when a rival digit both clears limits.embeddedGlyphRivalFloor and beats the claimed digit by more than limits.embeddedGlyphShapeMargin, and declining any glyph narrower than limits.embeddedGlyphMinAspect. high, family B, action: "flagged" — nothing is stripped, because the text was never wrong — with a divergence pair carrying source: "structure" attached only where both halves can actually be named.

How often it fires

Not measured. We publish a rate only where one has been measured against a named corpus of the right format, and no figure exists for this technique yet. Absence means unknown — never low.

next

Check your own file

Three commands: a key, credit, a verdict.

Start with the API