Do not fake text with look-alike characters
Characters that merely look like the letters they stand for get used as though they were those letters, and the text underneath says something else. F71 is the failure technique covering it, so a match is a defect rather than a method. W3C's own case is cross-alphabet, where a Greek or Cyrillic character lands inside an English word because the glyph matches. Spell cook with a Greek lunate sigma and a Cyrillic o and it looks perfect and is not the word. The decorative version is the one most sites hit, where a social-media font generator turns a headline into mathematical symbols shaped like script letters. Character entities count the same as pasted characters, because the failure is the wrong character rather than the route it took in. And the cure W3C names is a text alternative, so replacing the characters is the better answer and not the only one.
How we find it in an audit
We scan audited pages for characters from the Unicode math-alphanumeric and fullwidth ranges, which catches the decorative fonts on sight. Homoglyphs need the language test that comes with them, since a Greek sigma inside Greek text is just Greek. So the question is whether the characters match the language the content says it is written in, and a reviewer confirms each hit in a screen reader, because some symbols get spelled out at length and others are skipped without a sound.
How affected users experience it
The two halves of this failure sound nothing alike, and the quiet one does more damage. Decorative fonts make a screen reader announce mathematical bold script capital G for every letter, or say nothing at all, and braille users get the same wreckage cell by cell. A homoglyph inside an ordinary word makes no noise whatsoever. The word is just read wrong, fluently, with nothing to tell anyone it happened.
Passes vs. fails
Passes
<h2 class="fancy">Grand Opening</h2>
.fancy { font-family: "Lobster", cursive; }Fails
<h2>𝓖𝓻𝓪𝓷𝓭 𝓞𝓹𝓮𝓷𝓲𝓷𝓰</h2>How this gets tested
The W3C publishes test rules that define what a checker looks for here.
- Element marked as decorative is not exposedA tool can check this
- Image accessible name is descriptiveA tool finds candidates, you decide
- Image button has non-empty accessible nameA tool can check this
- Image has non-empty accessible nameA tool can check this
- Link has non-empty accessible nameA tool can check this
- Object element rendering non-text content has non-empty accessible nameA tool can check this
- SVG element with explicit role has non-empty accessible nameA tool can check this
- Image not in the accessibility tree is decorativeA tool can check this
The other techniques filed under this rule
39 guides on this site are filed under 1.1.1 Non-text Content. W3C documents this one as a failure of that rule, so it describes a way the rule gets broken rather than a way to pass it.
- ARIA6sufficientName icon-only controls with aria-label
- ARIA9sufficientAssemble one label from several text pieces
- ARIA10sufficientName images and charts with aria-labelledby
- ARIA15sufficientLink complex images to longer descriptions
- C9sufficientPut decorative images in CSS backgrounds
- G68sufficientDescribe the purpose of live-only streams
This guide is our interpretation of W3C technique F71: Failure of Success Criterion 1.1.1 due to using text look-alikes to represent text without providing a text alternative. W3C publishes its techniques as guidance rather than as the standard, and says so on every one of them. The success criterion is what conformance is measured against, and a technique is one documented way to meet it.