These layers influence what a screen reader or braille device presents to a user.
1. Browser parsing
The browser turns your HTML into a DOM structure.
e.g. elements, attributes, text nodes.
2. Browser engine internal structures
The engine combines the DOM with CSS to build internal models for layout and rendering.
e.g. render tree, frame/render objects.
3. Browser accessibility tree
The engine maps eligible elements and properties into an accessibility tree for the OS.
e.g. Blink AXObject/AXNode, WebKit AXObject, Gecko Accessible.
4. OS accessibility API
The operating system exposes accessibility information to assistive technologies.
e.g. UIA (Windows), AX API (macOS/iOS), ATK/AT-SPI (Linux), AXNodeInfo (Android).
5. Assistive technology interpretation layer
The screen reader interprets the API data using its own rules and heuristics.
e.g. VoiceOver, NVDA, JAWS, Orca, TalkBack.
6. AT user settings
User preferences impact how information is announced or displayed.
e.g. verbosity, punctuation, typing echo, custom dictionaries.
7. Screen reader speech queue
The screen reader queues and orders speech or braille output before it is presented.
e.g. buffering, interruptions, overlap prevention, dropped or skipped messages.
8. Speech output / Braille output
The AT delivers the final output via speech or braille.
e.g. text-to-speech engine, braille display, braille tables.
Conclusion
What starts as simple HTML passes through many layers before it becomes speech or braille. Understanding these layers helps explain why behaviour can vary across platforms, browsers, and assistive technologies.