mathjax / mathjax/MathJax

[v4.1.0] Speech output misreads adjacent identifiers (e.g., "F C right arrow up tack F D right arrow" instead of " Ray FC up tack ray FD" )

Open
#3,535 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Expected Behavior v4
Dominant language
JavaScript
Stars
10.9k
Forks
1.2k
PR merge metrics
No merged PRs in 30d

Description

[v4.1.0] Speech output misreads adjacent identifiers (e.g.,
. "F C right arrow up tack F D right arrow" instead of "Ray FC up tack ray FD" )

Issue Summary

In MathJax 4.1.0, the speech output (screen‑reader rendering) incorrectly interprets adjacent MathML identifiers in certain cases.
For consecutive elements:

Image ==> read incorrectly as "F C right arrow up tack F D right arrow".

In MathJax v2.7.4, the same expression is read correctly in speech output.
With the newer MathJax v4.1.0, the speech output begins misreading adjacent identifiers, specifically interpreting:

This behavior appears only in v4.x and seems related to changes in the updated Speech Rule Engine integration.

Could you please advise whether any configuration changes, settings, or recommended overrides are available in v4.1.0 to prevent this incorrect interpretation?

Steps to Reproduce:
  1. Load the HTML example below using MathJax 4.1.0
  2. Enable speech or screen‑reader output (e.g., ChromeVox, NVDA, JAWS).
  3. Listen to how MathJax reads the expression.
  4. Compare the spoken output for below math
Image

Expected Behavior
MathJax should read adjacent MathML identifiers literally and consistently, without injecting extra semantic meaning.
For this expression, the expected reading is something like:

  • "Ray FC up tack ray FD" —not “F C right arrow up tack F D right arrow” or similar interpretations.
Technical details:
  • MathJax Version: 4.1.0
  • Client OS: Windows 10
  • Browser: Chrome/Firefox/Edge

I am using the following MathJax configuration:

MathJax = {
...
};

and loading MathJax via

<script src="https://cdn.jsdelivr.net/npm/mathjax@4.1.0/tex-mml-chtml.js"></script>
Supporting information:

HTML test case and screenshot are attached:
Sample HTML File:
FC_right_arrow_up_tack_FD_right_arrow.html

Screenshot:
Image

Request for Guidance
Could you please suggest a MathJax configuration, script, or global setting that would prevent adjacent identifiers—such as above math —from being read incorrectly as
F C right arrow up tack F D right arrow” in speech output?

Additional Information:
Its works with MathJax v2.7.4 the same expression is read correctly in speech output:
Sample HTML File:
Mathjax-2.7.4-math-speech-issue-Ray-AB.html

Screenshot:
Image

We are specifically looking for a global and dynamic solution, since modifying or rewriting the source MathML is not an option in our environment.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the attached FC_right_arrow_up_tack_FD_right_arrow.html example and reproduce the speech output using MathJax 4.1.0, then compare it with the MathJax 2.7.4 sample. Trace the updated Speech Rule Engine integration and MathJax configuration entry points to determine whether a global override exists; done means identifying a supported configuration or documenting the required source-level fix.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
accessibility
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.