· unicode, glyphs, measurements
The character map lies: symbol cmaps, wrong slots, and fonts whose letters are not where the file says they are

A character map is the table that promises what a font contains: type a character, get its drawing. That promise can fail in both directions. Glyphs can sit in the file with no address at all, and addresses can hold the wrong drawings entirely: pictures, stamps, or another alphabet.
The address book inside every font

Every font carries a cmap table, a lookup pairing character codes with glyph numbers. It is rarely one table: a cmap is a shelf of subtables, each labeled with a platform and encoding pair, one for Windows Unicode, one for the Mac, sometimes a legacy one, each in one of several numbered formats. Format 4 covers the basic multilingual plane in segments; format 12 reaches the full Unicode range. Software picks the best subtable it understands, and trusts it completely.
That trust is the whole story of this post. Nothing downstream checks the answer: if the cmap says A is glyph 87, the screen shows glyph 87, whether it is a letter, a star, or an advertisement. Our companion post on hidden glyphs covers drawings no address reaches. This one covers the opposite failure: addresses that reach the wrong drawings, and one address system designed to be unreadable.
The symbol cmap: pictures under a false flag
The strangest subtable on the shelf is the symbol cmap, platform 3, encoding 0. A font that declares it makes a private arrangement with Windows: my glyphs are not characters, so do not file them under character codes. They park instead in a block from U+F000 to U+F0FF, and the system reaches each one by taking the small code you typed, 0x20 through 0xFF, and adding 0xF000: about 224 usable slots, reached by arithmetic rather than by name.
Because the arrangement claims the glyphs are not text, Windows believes it. Text set in a symbol font cannot be spellchecked, searched, or copied back out as characters; paste it elsewhere and it arrives as private use codes meaning nothing to any other font. In the 1990s this was how a picture font stayed a picture font: Marlett, which still draws the arrows, check marks, and window ornaments of the Windows interface itself, and Wingdings and Webdings, whose telephones and envelopes lived at letter codes but answered only through the offset.
The technique is dead now, though the subtable still works everywhere. Unicode absorbed most of the Wingdings and Webdings repertoires as real characters in 2014, and modern icon fonts file their art in the private use area under an ordinary Unicode cmap. Names mislead the other way, too: Segoe UI Symbol is an ordinary Unicode font with a large repertoire, despite its name.
One more trick bites anyone who inspects fonts with code. Lucida Bright Math Symbol ships only a symbol cmap as its Windows subtable, all 223 entries parked in the F0 block. Ask the standard fontTools call for the font’s best character map and it comes back empty, because that call declines symbol subtables. The font has a perfectly good map, written in the one dialect the usual question refuses to hear.
Letters that are not letters

The plainest lie is the Latin mapped dingbat. Dingbat One, sold on a 1993 font CD, maps a full alphabet: all 26 capitals and all 26 lowercase letters answer. What answers is a star, a snowflake, a sun, a crescent moon. The cmap is honest about addresses and silent about contents, so any tool trusting coverage statistics reports a complete text alphabet. Our measurement pipeline names the class directly: latin-mapped-pictorial.
Older and subtler are the pre-Unicode script fonts. Before Unicode reached the desktop, a Cyrillic or Greek font was often built by parking the needed letters in the first 128 or 256 codepoints under a legacy charset and letting the system believe they were Latin. The B slot holds the Cyrillic letter be, shaped like a small 6 with a flat top. The R slot holds ya, shaped like a backwards R. Read with the right legacy charset, the text is Russian; read as the Unicode the cmap claims, it is gibberish Latin. CP437 era fonts mislead the same way in reverse: positions that once held box drawing blocks and shades now sit where Unicode keeps punctuation and accented letters, a story told in the archaic formats post and the dead and deprecated formats post.
And one class of lie no instrument can catch at all: the look alike twin. A Cyrillic А is not similar to a Latin A; in most designs it is the same drawing, legitimately shared by three alphabets. Park it in the A slot and no shape test can convict it, because nothing is wrong with the shape. Detection works on the set, not the slot: a hack font must also file the letters Latin lacks somewhere, in slots whose claimed letters they do not resemble, and that is where it gives itself away.
Three witnesses, and a person
Catching a lying map takes evidence in layers, and our measurement work settled on three. The first is the documentary witness: the font’s own declarations, its OS/2 coverage bits and codepage claims, checked against the cmap it actually ships. A file that claims a Cyrillic codepage and contains no Cyrillic codepoints, or the reverse, has contradicted itself in writing. Documents alone never convict; they open the file for a closer look.
The second is the geometric witness: each capital slot is asked whether its drawing has the counters, the enclosed spaces, its claimed letter must have, with a second count after dilating the outlines to tell a stencil bridge from a genuinely wrong structure. This witness is provisional, and the record says so plainly. We scanned 21,121 font files looking for a genuine pre-Unicode script hack to calibrate it against, and found none. It is proven on the negative side, against the honest faces it must not convict, and it has never yet met the exhibit it was built for.
The third level is not an instrument at all: a human moderator with the character map open, making the call the first two levels can only support. Every verdict here tops out at suspicion, on purpose.
Graffiti PTx: 158 slots, one watermark

The fullest lie we have measured arrived in the demo build of Graffiti PTx. Its cmap lists 209 encoded characters and 206 draw. Count the distinct drawings and the number collapses: the whole file holds 51 different geometries. One drawing, a microtext watermark reading “pedro teixeira foundry .com”, occupies 156 slots point for point identically: every digit, all the punctuation, nearly the whole Latin 1 supplement, and six letters, A, H, O, and their lowercase forms.
Two more slots hide the stamp in disguise. À and  carry the same watermark recontoured, with the letter’s accent scribbled over it, invisible to an exact geometry match. A second census that renders every glyph and matches ink against the stamp catches both: À at recall 0.996 and precision 0.903,  at 0.996 and 0.852. Together the stamp census names 158 of the 209 encoded slots. What is left is the honest font: 46 real letters and two private use brand marks, a portrait and a monogram the ink test acquits. The renderable character set, the characters this file can actually set, is 48.

A second, independent witness convicts the same file from another direction. The average form witness compares every core glyph against an atlas built from 176 ordinary text faces, across 124 core codepoints, asking how far each drawing sits from its claimed character’s average form. A slot scoring under 0.30 is flagged; a font is suspect when 30 percent of its tested slots flag. Honest faces pass untouched: DejaVu Sans scores zero deviant slots. Graffiti PTx flags 83.5 percent of its 121 tested slots. The gray zone is honest: Kranky, a distressed display face whose erosion eats its own letterforms, trips the line at 0.339 and is cleared by a person glancing at its map. That is what the third level is for.

The lesson mirrors the hidden glyphs one. A font is not its cmap, in either direction. The map can promise letters the file does not hold, hold pictures it calls letters, and sell a demo whose addresses mostly open the same door. The drawings are the truth. The map is just the claim, and claims can be checked.