| Id | FormattingCausingSpeechIssues |
| Summary | Irregular casing, spacing, or symbols cause speech synthesis to mispronounce or spell words |
| Severity | Informational |
| Category | Assistive Technologies / Content Descriptions |
| Affects | Resource files and Kotlin and Java files |
| Implementation | Heuristics, or other solutions could be considered to detect ALL CAPS words, unusual casing patterns (snake_case, camelCase, PascalCase), common abbreviations (e.g., FAQ, id, ok, btn), excessive whitespace (multiple spaces or tabs), special characters (e.g., •, >, >>>), and line breaks in text or contentDescription. Manual testing for final validation |
UI text or contentDescription contains formatting issues such as ALL CAPS words, unusual casing patterns (snake_case, camelCase), abbreviations, excessive spacing, special characters, or line breaks that cause screen readers to produce awkward pronunciation, letter-by-letter spelling, or unnatural pauses during speech synthesis.
Creates poor user experience for assistive technology users who hear unnatural speech patterns (technical jargon like "btn_share_action", "A-D-D" instead of "add", awkward pauses from spacing) instead of natural, meaningful pronunciation, slowing down interaction and causing confusion about UI element purpose and function.
<!-- Multiple issues: ALL CAPS, abbreviation, excessive spacing,
special characters, and line breaks -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="USER ID: FAQ >>> ONLINE" />
<!-- Should be: android:text="User ID: Frequently Asked Questions, Online"
OR add android:contentDescription="User ID: Frequently Asked Questions, Online"
to provide proper announcement for screen readers -->
val tab = findViewById<TabLayout.Tab>(R.id.tab)
// Problematic: abbreviated and numeric date format as tab text
// causes screen reader to read: "Sun, 23, Feb."
tab.text = "Sun, 23, Feb."
// To improve screen reader output, add:
// tab.contentDescription = "Sunday, February 23rd"