nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
Other
2.07k stars 624 forks source link

NVDA double reads all MathJax math expressions in Chrome and Edge after latest Chromium update #13218

Closed Steve-Noble closed 1 year ago

Steve-Noble commented 2 years ago

Steps to reproduce:

Go to any page using MathJax to display MathML content. Please keep in mind that MathJax has become a standard method for serving MathML on the web. This behavior occurs with both the current MathJax 3 version, as well as the legacy MathJax 2 version still used on many websites. Here are two examples: Math Equations in HTML (uses MathJax 3) and MULTI-STEP EXPONENT LAW PRACTICE (uses MathJax 2) Navigate to a math expression.

Actual behavior:

As I arrow down the page, I first get an incorrect flat reading of just the inline characters. Then, after arrowing down again, I get the proper reading which identifies fractions and roots and other types of 2D math

Expected behavior:

You should only hear one proper reading of the math expression which identifies fractions and roots and other types of 2D math. The incorrect flat reading should not be heard.

System configuration

NVDA installed/portable/running from source:

Installed

NVDA version:

release 2021.3.1

Windows version:

Windows 10 Version 10.0.19043 Build 19043

Name and version of other software in use when reproducing the issue:

Either... Chrome version: 97.0.4692 (or) Edge version 96.0.1054 (same double speak behavior regardless of which browser is used) Either... MathPlayer version 4 (or) Access8Math version 3.1 (same double speak behavior regardless of which math speech engine is selected)

Other information about your system:

This behavior does not occur when using JAWS with the same browsers and the referenced MathJax test pages. This behavior does not occur when using the NVDA with the Firefox browser. It only occurs with Chrome and Edge. This behavior seems to have begun after the recent Chrome 97 Stable Release (Jan 4, 2022) which was supposed to fix Chrome Issue 1272563. That Chrome issue was also noted as the origin of NVDA issue 13076, which has since been closed. That issue closure may have been premature, as the test page in the issue was a Wikipedia page which does not use a standard MathJax implementation. Wikipedia's MathML implementation is very sophisticated and is not commonly used in other websites which host math content, so that page is not suitable for testing NVDA's reading of MathML content which is served via MathJax.

Other questions

Does the issue still occur after restarting your computer?

Yes

Have you tried any other versions of NVDA? If so, please report their behaviors.

Same error was noted in the previous release version of NVDA

If NVDA add-ons are disabled, is your problem still occurring?

Math speech is only possible when either MathPlayer or Access8Math is used, so these tools cannot be disabled

Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?

Yes

Steve-Noble commented 2 years ago

I just retested with the latest versions of Chrome and Edge, and the broken behavior is still heard.

NSoiffer commented 2 years ago

Since it works in Firefox but not in Chrome/Edge, it seems unlikely the problem is with MathJax.

In the last few days, there have been a few commits involving MathML elements when MathML rendering is not enabled. This may be the source of the problem because I hear the problem in the regular Chrome release but not in Chrome Canary.

Steve-Noble commented 2 years ago

Thanks @NSoiffer

So, would you suggest I reach out to the Chrome developers? Unlike the earlier Chromium bug, this only happens with NVDA (not with JAWS)

Adriani90 commented 2 years ago

cc: @feerrenrut

Steve-Noble commented 2 years ago

One additional observation I would like to mention is that if I create a plain HTML5 page containing MathML (no MathJax code), NVDA reads the math perfectly in all browsers, including Chrome and Edge. Of course, without MathJax, the visual display will be lacking in the current shipping versions of Chrome or Edge. The "double speak" issue only occurs when MathJax is serving the math. However, JAWS reads plain HTML+MathML pages and HTML+MathJax pages in Chrome and Edge without the "double speak" issue.

This may suggest that NVDA needs to make changes to parse MathJax rendered content correctly. Since MathJax is ubiquitous these days, I would sure like to see this issue be resolved.

feerrenrut commented 2 years ago

@Steve-Noble Could you please update the steps to reproduce and the actual behavior sections with specifics.

Here is my testing in Edge (Version 99.0.1150.46) with NVDA (Version 2021.3.4)

This shows only one copy of the math content spoken, it includes start and end fraction fragments.

Steve-Noble commented 2 years ago

@feerrenrut I revised my original post with updated details. I am using the same version of NVDA and Edge as you used. However, what I (and others) are hearing adds an additional line of text. --start snip-- down arrow Root of quadratic equation down arrow clickable −b+b2−4ac2a down arrow fraction negative b plus the square root of quantity b squared minus 4 a c end root over 2 a end fraction down arrow The Lorenz Equations --end snip--

The difference (which is the root of the problem) is this confusing line of text which is first heard: "clickable −b+b2−4ac2a" A similarly confusing string of text will be heard before every expression on any page using MathJax

feerrenrut commented 2 years ago

I still can't reproduce this.

Can you please attach a debug level NVDA log. This will include your NVDA config which may highlight some setting that I'm overlooking. It will also give me an exact recording of the keyboard inputs and speech output of NVDA.

Steve-Noble commented 2 years ago

@feerrenrut I am attaching the debug level log as requested. I have 3 different PCs at home, and each one exhibits the same behavior. I decided the best PC to get a good debug file from was a PC that had never had NVDA or MathPlayer installed before, so that is the one I used. All the MathPlayer and NVDA factory defaults are in place on that one, since it is a clean install with no legacy settings. Besides the 3 PCs that I am getting this error on, I have heard from two of my coworkers in other locations that they are hearing the same thing. Plus of course, there is the person who posted https://github.com/nvaccess/nvda/issues/13475. So this issue is widespread. nvda-VirginInstall-debug-28March2022.log

NSoiffer commented 1 year ago

I think it is a Chrome (blink) bug.

On Tue, Mar 22, 2022 at 7:42 PM Steve Noble @.***> wrote:

Thanks @NSoiffer https://github.com/NSoiffer

So, would you suggest I reach out to the Chrome developers? Unlike the earlier Chromium bug, this only happens with NVDA (not with JAWS)

— Reply to this email directly, view it on GitHub https://github.com/nvaccess/nvda/issues/13218#issuecomment-1075857198, or unsubscribe https://github.com/notifications/unsubscribe-auth/AALZM3DZ4MQQQLIVNRRSUNLVBKAK5ANCNFSM5LM5VWZQ . You are receiving this because you were mentioned.Message ID: @.***>

Steve-Noble commented 1 year ago

Most likely it was a Chrome bug. However, I should update this issue thread to indicate that this issue no longer exists. At some point, one of the Chrome updates finally made it out that fixes this problem. So, we can close this issue.