-
All replies
-
Helpful answers
-
Feb 26, 2016 6:02 AM in response to kmyettby Japib,★HelpfulHi,
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
-
Jun 3, 2016 1:58 PM in response to kmyettby marshallsunnes,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:
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>
-
Aug 29, 2016 8:48 AM in response to marshallsunnesby agowofelora,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.