kmyett

Q: VoiceOver not reading Math correctly

I am running OS X Yosemite 10.10.4 on a Macbook Pro and using VoicOver with Safari 8.0.7


I am experiencing a couple of issues when Math is being read.

  1. the Parenthesis are not being read
  2. superscripts are read as "4 2" instead of "4 squared"
  3. the "minus" sign is read in English while the plus and division signs are read in Spanish (which is good)


Evalúa 20 + (30 − 10) ÷ 5.  <p>Evalúa 20 + (30 − 10) ÷ 5.</p>

Evalúa 42 − (4 + 6) ÷ 2.  <p>Evalúa 4<sup>2</sup> − (4 + 6) ÷ 2.</p>

<html lang="es">

 

Any thoughts on changes I could make is settings to have these read better? Please, we are moving towards MathML, so this really is a VoiceOver question.

 

Best,

kmyett

Posted on Feb 26, 2016 5:48 AM

Close

Q: VoiceOver not reading Math correctly

  • All replies
  • Helpful answers

  • by Japib,Helpful

    Japib Japib Feb 26, 2016 6:02 AM in response to kmyett
    Level 4 (2,791 points)
    Desktops
    Feb 26, 2016 6:02 AM in response to kmyett

    Hi,

    Apple has not engineered math voiceover reading yet, mainly because it is something very few people will ever use, and which takes a significant amount of time and energy to implement. To show Apple that some customers need it to be implemented, please submit a feedback to Apple OS X development teams : http://www.apple.com/feedback/macosx.html

    Good Day

    James

  • by marshallsunnes,

    marshallsunnes marshallsunnes Jun 3, 2016 1:58 PM in response to kmyett
    Level 1 (4 points)
    Mac OS X
    Jun 3, 2016 1:58 PM in response to kmyett

    VoiceOver does support math content.

     

    The math must be entered as MathML. MathML Cloud is a great resource that helps write the code for you.

     

    MathML Code:

    <math xmlns="http://www.w3.org/1998/Math/MathML" alttext="4 squared minus left-parenthesis 4 plus 6 right-parenthesis division-sign 2">

      <mstyle displaystyle="true">

        <msup>

          <mn>4</mn>

          <mn>2</mn>

        </msup>

        <mo>-</mo>

        <mrow>

          <mo>(</mo>

          <mn>4</mn>

          <mo>+</mo>

          <mn>6</mn>

          <mo>)</mo>

        </mrow>

        <mo>÷</mo>

        <mn>2</mn>

      </mstyle>

    </math>

     

    How the equation looks when Safari Renders it:

    Equation.png

     

    To get VoiceOver to read it:

    iOS: Should work automatically when VoiceOver is turned on.

    OS X: Enable Quick Nav

     

    MathML Browser Support

    Note that Chrome and Microsoft Edge to not support native MathML (despite it being the W3C standard since 1998). MathJax can take the content and render it for those browser, but then it doesn't work with VoiceOver. I wrote a short javascript you can have trigger in the head of the page, which will detect the browser and make the correct decision:

     

     

    <script type="text/javascript">

     

    //converts MathML to MathJax if necessary, along with any other browser-specific considerations

     

    function automathjax()

    {

     

    //determine which browser is being used

    var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;

        // Opera 8.0+ (UA detection to detect Blink/v8-powered Opera)

    var isFirefox = typeof InstallTrigger !== 'undefined';   // Firefox 1.0+

    var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;

        // At least Safari 3+: "[object HTMLElementConstructor]"

    var isChrome = !!window.chrome && !isOpera;              // Chrome 1+

    var isIE = /*@cc_on!@*/false || !!document.documentMode; // At least IE6

     

     

     

    //decide if math needs to be set in block format and if MathJax needs to be run

    if (isChrome || isOpera) {

     

    RunMathJax();

     

    } else if (isSafari || isFirefox || isIE) {

     

        //nothing needs to be done, Safari properly reads/displays MathML

     

    } else {

     

    RunMathJax();

     

    }

    }

     

    function RunMathJax()

    {

    var sr = document.createElement('script');

    var scr = 'http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML';

    var t = 'text/javascript'

    sr.src = scr;

    sr.type = t

    var hh = document.getElementsByTagName('head')[0];

    hh.appendChild(sr);

    }

    </script>

  • by agowofelora,

    agowofelora agowofelora Aug 29, 2016 8:48 AM in response to marshallsunnes
    Level 1 (4 points)
    Aug 29, 2016 8:48 AM in response to marshallsunnes

    Thanks for your detailed reply, Marshall.

    I am using VoiceOver with an iPad to test MathML.  I am finding like kmyett that it does not vocalize brackets, braces or parentheses, even when VO is set to read all punctuation.  Moreover, when you double tap to view the MathML content in full screen mode, brackets, braces and parentheses visually drop out of the formula or equation.  This is very frustrating since VO can read much more complicated math expressions flawlessly.  However, given the importance of brackets, etc., to mathematical content, I can't use iOS for student math support and it sounds from kmyett's experience that the same may apply to VO on the Mac desktop.  Is there a setting somewhere that I'm missing?

    BTW, I am adding a link to a Mathjax Library in the HTML and this makes no difference to the problem.