Complete guide to screen reader, Braille, and ARIA accessibility features.
Accessible Math Reader is designed with accessibility as a core principle:
- Screen Reader Support: NVDA, JAWS, VoiceOver, Narrator
- Braille Displays: Nemeth and UEB notation
- Keyboard Navigation: Full keyboard access with ARIA support
- Visual Accessibility: High contrast mode, zoom controls
Control how much detail is spoken:
| Level | Description | Example Output |
|---|---|---|
| Verbose | Full structural description | "start fraction a over b end fraction" |
| Concise | Shortened descriptions | "a over b" |
| Superbrief | Minimal output | "fraction a b" |
from accessible_math_reader import MathReader, VerbosityLevel
reader = MathReader()
reader.set_verbosity(VerbosityLevel.CONCISE)Or via environment variable:
export AMR_SPEECH_STYLE=conciseThe standard for mathematics Braille in North America.
| Expression | Nemeth Braille |
|---|---|
| a/b | ⠹⠁⠌⠃⠼ |
| x² | ⠭⠘⠆ |
| √x | ⠜⠭⠻ |
International standard for English Braille.
| Expression | UEB Braille |
|---|---|
| a/b | ⠷⠁⠌⠃⠾ |
| x² | ⠭⠔⠃ |
| √x | ⠩⠭ |
# Nemeth (default)
reader.to_braille(r"\frac{a}{b}", notation="nemeth")
# UEB
reader.to_braille(r"\frac{a}{b}", notation="ueb")The Unicode Braille output is compatible with refreshable Braille displays. Copy the output directly to use with your Braille hardware.
| Shortcut | Action |
|---|---|
Ctrl + Enter |
Convert expression |
Ctrl + L |
Clear input |
Ctrl + B |
Toggle sidebar |
Ctrl + Shift + T |
Toggle theme |
Alt + 1 |
Formula tab |
Alt + 2 |
Speech tab |
Alt + 3 |
Braille tab |
Alt + 4 |
Accessible tab |
Navigate within mathematical expressions:
| Key | Action |
|---|---|
Enter |
Drill down into element |
Escape |
Go up to parent |
← / → |
Move between siblings |
Home |
Jump to first sibling |
End |
Jump to last sibling |
Space |
Announce current position |
Linear navigation through the expression.
"start fraction, a, over, b, end fraction"
Interactive exploration with drill-down.
"Fraction" → [Enter] → "a" → [→] → "b"
Extra context for learning math structure.
"Fraction: The numerator a is divided by the denominator b"
reader.set_nav_mode("explore") # or "browse", "verbose"- Enable "Speak typed characters" for input feedback
- Use browse mode (NVDA+Space) for linear reading
- Focus mode (NVDA+Space again) for ARIA navigation
- Use virtual cursor for reading formula output
- PC cursor for ARIA navigation
- Enable "Math processing" if available
- Use VO+Shift+↓ to enter web content
- Navigate with VO+← and VO+→
- Interact with VO+Shift+↓ for ARIA elements
- Use Scan mode (Caps+Space) for reading
- Exit Scan mode for ARIA interaction
- Arrow keys for navigation within math
- Dark Mode: Reduced eye strain, high contrast text
- Light Mode: Traditional appearance
- High Contrast: Maximum visibility for low vision
// Web interface
zoomIn() // +10%
zoomOut() // -10%
resetZoom() // 100%The interface respects browser font size settings.
Status messages announce automatically:
<div role="status" aria-live="polite">Copied to clipboard</div><div role="math" aria-label="a divided by b">
...
</div>Proper focus order and visible focus indicators throughout.
We test with:
- Screen Readers: NVDA, JAWS, VoiceOver, Narrator
- Tools: axe DevTools, WAVE, Lighthouse
- Manual Testing: Keyboard-only navigation
- User Testing: Feedback from blind and low-vision users