The Characters That Extract Wrong
Layout failures are loud. When a two-column resume shreds, you can see it happen. Character-level failures are quiet: the sections are all in the right order, the fields fill correctly, and one word in your skills list is spelled nancial instead of financial. Nothing looks broken enough to investigate, and the skill no longer matches a search for it.
This post is about that class of damage — where extraction returns text, but not quite the text you wrote.
Why a character can come out wrong
Text extraction reads a character code and a font reference for each glyph and reconstructs a character stream. In a well-behaved file, the code is a standard one and the mapping is obvious. Two things can break that.
The font is subsetted. To keep files small, exporters often embed only the glyphs actually used, and sometimes renumber them internally: glyph 3, glyph 7, glyph 12. A properly built subset also embeds a table saying “glyph 7 means the character f.” When that table is missing or incomplete, the extractor has a shape and no name for it. Depending on the extractor, you get a substitute character, a blank, or a wrong letter.
The glyph is a ligature. Typographic fonts merge certain letter pairs into one glyph for looks: fi, fl, ffi, ff. That single glyph should map back to two characters. If it doesn’t, fi becomes nothing at all, and words lose letters in the middle.
Neither is your fault and neither is visible on screen. The rendering is beautiful. The character stream underneath it is not.
The recurring cast
Ligature dropouts. Watch for words containing fi, fl, or ff: financial, certified, qualified, workflow, staff, office, profile, field. These are exactly the words a resume is full of.
Icon glyphs. Contact blocks frequently use a symbol font for the little phone, envelope, pin and profile icons. Those icons are letters in a symbol font — the envelope might be codepoint e, the phone H. Extraction has no idea it’s an icon and hands over the letter. Your contact line arrives as H +1 614 555 0100 e ada@example.com, and now there is a stray letter glued to fields the parser is trying to pattern-match.
Smart punctuation. Curly quotes, en and em dashes, and the ellipsis character usually survive intact. Where they cause trouble is on the other side: pasted into a form field or read by a strict importer, they can arrive as replacement characters — the classic ’ mess — or as a literal question mark inside a job title.
Non-breaking spaces and non-breaking hyphens. Invisible in the document, different characters underneath. A skill written with a non-breaking hyphen does not match a search using an ordinary hyphen, and a non-breaking space between a number and a unit can defeat a pattern expecting a plain space.
Soft hyphens and manual hyphenation. A word broken across a line with a discretionary hyphen may extract as deve- lopment. If you hyphenated by hand at a line end, the hyphen is a real character and will be there forever, even when the line reflows.
Diacritics and non-Latin characters. Accented letters in your own name — Ó, ü, ç, ł — normally survive, but they are the characters most likely to be affected by a bad subset, and they are the ones you cannot afford to lose. Names written in a non-Latin script are more exposed still. Check yours specifically rather than assuming.
Decorative bullet characters. Fancy bullets — arrows, squares, checkmarks, custom dingbats — often come from a symbol font and extract as arbitrary letters, prefixing every one of your bullet points with a q or a Ø.
What the damage actually costs
Being precise matters here, because it is easy to either ignore this or panic about it.
A corrupted character inside prose is close to harmless. A recruiter reading nancial reporting reads it as a typo and moves on.
A corrupted character inside a field or a searchable term is expensive:
- A skill name that no longer matches the skill. Parsers work on presence of the term, not on how often you wrote it — see keyword density is not what parsers measure — so one broken instance of a term you named once means the term is gone.
- An email address with a stray icon letter attached, which fails validation or bounces.
- A certification or degree name that a filter is looking for exactly.
- A job title with a replacement character in it, which then normalises badly, as in how your job title gets normalised.
So the triage rule is: don’t chase every artefact. Chase the ones inside names, addresses, titles, credentials and skills.
The fixes, in order of how much they buy you
- Use a common, well-built font. The fonts shipped with your operating system and office suite have complete character maps and are subsetted correctly by every exporter. Downloaded display fonts are where the mapping problems live.
- Turn off discretionary ligatures in your editor’s typography settings. Standard
fi/flligatures from a good font are usually fine; the optional stylistic ones are not worth the risk on a document you need extracted. - Write contact icons as words or drop them.
ada@example.comneeds no envelope. If you love the icons, keep them and check the extracted text for stray letters. - Use plain round or square bullets from the list formatting menu, not a symbol-font character you typed.
- Never hyphenate by hand, and switch off automatic hyphenation.
- Type plain hyphens and plain spaces in skill names and compound terms. If your editor auto-converts a hyphen to a dash, undo it in those places specifically.
- Keep a plain-text copy for form fields, so you never paste smart punctuation into an input that mishandles it.
None of this constrains how the document looks in any way a reader would notice. It is the cheapest category of parsing fix there is.
Check it
Copy the whole resume into a plain text editor — the same baseline extraction check used throughout this site — and then do three targeted searches rather than reading it through.
- Search for your surname, your email address, and your phone number. Each must appear exactly once, exactly correct, with no letters glued to it.
- Search for
fi,flandff. Confirm the words containing them are complete. Then scan for words that look short a letter in the middle:nancial,certi ed,work ow. - Search for every skill and credential name you care about, one at a time. This is tedious and it is the part that pays, because it is the only way to learn that a term you rely on is not actually present.
If the plain-text copy is clean, the character layer is fine and any remaining problem is structural — the ordering and sectioning issues in why the same resume parses differently.