A font whose digits draw other digits
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. Since 0.348.0 letters are checked for the exact signal only: a glyph that three or more different letters draw with, case-folded so a unicase face is not accused. 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.
Check your own file
Three commands: a key, credit, a verdict.
Start with the API