Current State of MathML Accessibility
Support
- Windows: NVDA(+MathPlayer) and JAWS
- Apple: macOS and iOS (Safari+VoiceOver)
- Linux: Orca
Speech, Braille, Navigation
Example:
$2 \frac{1}{3} \cdot 9 \frac{5}{8} > 22$
Ambiguity of Notation
Many ways to speak an expression
- $(0,5)$ "open paren 0 comma 5 close paren" vs "point 0 comma 5" vs "open interval from 0 to 5" vs "gcd" vs …
- $x'$ – “x prime" vs “first derivative of x” vs "x feet" vs "x minutes"
- $x^2$ – “x squared” vs “x superscript 2 end superscript”
- $\hat{x}$ – “x hat” vs “x modified above with circumflex”
Authors know what they mean
Accessibility Tree
- Windows – no mappings
- macOS/iOS – recently add MathML-equivalent roles (attributes?)
- Linux – some math roles
- Android – ???
What should be in the accessibility tree???
Adding Author Intent
- ARIA
- CSS
- Structured Data
- Parallel Markup
- Intent/Subject Area
ARIA
<math aria-label="the point 0 comma 5">
<mrow >
<mo>(</mo>
<mn class="arg1">0</mn>
<mo>,</mo>
<mn class="arg2">5</mn>
<mo>)</mo>
</mrow>
</math>
Navigation: nested tagging
ARIA: if only...
- Plain text:
Long A:
Short A:
- Separate braille code (Nemeth/UEB)
- User-specific text $\frac{1}{x+1}$
- Long text strings
CSS
<mrow data-intent="point">
<mo>(</mo>
<mn class="arg1">0</mn>
<mo>,</mo>
<mn class="arg2">5</mn>
<mo>)</mo>
</mrow>
[data-intent="point"] {
--speech: "the point " text(.arg1) "comma" text(.arg2);
};
User-stylesheets for user-specific text
Structured data via schema.org RDFa annotations
- Experiment that failed
- Ideas???
Parallel Markup
<semantics>
<mrow id="x">
<mo id="x.1">(</mo>
<mn id="x.2">0</mn> <mo id="x.3">,</mo>
<mn id="x.4">5</mn>
<mo id="x.5">)</mo>
</mrow>
<annotation-xml encoding="MathML-Content">
<apply xref="x"> <csymbol>point</csymbol>
<cn xref="x.2">0</cn>
<cn xref="x.4">5</cn>
</apply>
Parallel Markup (2)
Cons
</annotation-xml>
</semantics>
- Complexity
- Even less well used than Content MathML
Pros
- Part of MathML
- csymbol & Wikidata: accessibility + computability
New: @intent
<mrow intent="point($1,$2)">
<mo>(</mo>
<mn arg="1">0</mn>
<mo>,</mo>
<mn arg="2">5</mn>
<mo>)</mo>
</mrow>
- Open-ended
- Defaults
- AT generates speech
New: @subject
<math subject="geometry">
...
<math>
- Change defaults
- Easy remediation: $ \ce{ -CH =CH -C H2 } $
- Classification is hard
Summary
Looked At:
- Existing: ARIA, CSS, RDFa, Parallel Markup
- Additions: @intent, @subject, and defaults
What did we miss???
What did we get wrong???