You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I work with math accessibility, but primarily at the secondary and postsecondary levels. I have a client who has a lot of elementary math content. They want to adhere to MathML specifications for vertical math (for example, using mstack for stacked addition). The educators use MathType for input and are using the symbol it provides for vertical addition which outputs a MathML configuration using mstack, which is not supported, since it is outside of MathML core.
What is best practice right now, in 2026, for formulating elementary vertical math? The particular question I am trying to answer from an educator is not only a stacked addition problem, but one with decimals that must be aligned. Is an mtable based solution the right way to go? Is there another authoring pattern that is recommended instead?
I also am anticipating the question of what happens to this content if later on elementary math is added to core and mstack is supported? Should the legacy formulations then need to be redone so that the screen reader experience is the same for similar vertical math constructions that are coded different ways?
My practical concern is I've got non-technical math educators with MathType as their input tool (not using a LaTeX to MathML workflow which is what I'm used to) trying to create elementary math using the MathType tool, so we need to be able to tell them what will work best, that is also somewhat future-proof. It's hard to explain why MathType includes a tool that allows the exact formulation they need, that is also the formulation recommended by the MathML spec, that they must nevertheless avoid using because it is not supported by browsers.
I'll add here that another issue is that if the publishing environment were only web, I would advise trying the MathJax experimental MML3 elementary math extension to see if that would enable simple mstack formulations (no strike outs or carries, just the vertical math). I'm also evaluating workflows for MathML in PDF and there is EPUB 3 output to consider.
Any current thoughts on this pain point that is elementary math? As there so often is with specifications there is a gap between the ideal and what is actually supported and feasible.
This issue might perhaps be better under MathML than MathML-core (but it doesn't really matter either way, we could move it if needed)
The answer that I'd like to give is that, although the elementary math elements such as <mstack> are not in MathML Core, they can be used in browsers by way of the supplied polyfill
But currently this is only apparently working for the visual display, although the MathML is still available via the shadow-root it's not being passed to AT and testing with NVDA/MathCAT the experience doesn't seem great.
and your message serves as a reminder that we really should fix this if possible.
I also am anticipating the question of what happens to this content if later on elementary math is added to core and mstack is supported?
In principle this should not be a problem, the javascript that is currently implementing the polyfill would be able to detect native browser implementations of mstack if they became available so would be able to adapt to "do the right thing" without documents having to change.
If you need something that works now rather than waiting for us to fix the accessibility of the polyfill you could generate an mtable directly and use intent to guide the screen reader.
The attached HTML produces the following reading with NVDA/MathCAT
heading level 1 mstack example
heading level 2 Image (from MathML4 spec)
graphic stacked 123 + 456 = 579
heading level 2 mstack
mstack of 123 comma msrow of 456 comma plus comma msline comma 579
heading level 1 mtable
123 plus 456 equals 579
so a possibly acceptable reading for the mtable version.
Thank you. A remaining question I have is if the MathJax MML3 extension is loaded, would this eliminate the need for a polyfill to display elementary math? (I'm still hoping there is a path to using the recommended elementary MathML elements, such as mstack, rather than authoring vertical math with mtable, using intent to guide the screenreader.)
I also admit I don't know that much about polyfills. Are LMS administrators or IT/security teams likely to have concerns about deploying them (due to security risks or other considerations?) That said, if the elementary math polyfill is only providing visual rendering and is not yet passing the MathML through to AT, then it wouldn't be a viable option for us at this time, since accessibility is our primary concern.
A remaining question I have is if the MathJax MML3 extension is loaded, would this eliminate the need for a polyfill to display elementary math?
an "alternative" rather than "eliminate the need". A "polyfill" isn't a technical term it's just a conventional name for a javascript library that fills in some gaps in browser capabilities (the name is actually a trade name for a commercial filler paste for filling cracks in walls). MathJaX is a very large and very impressive javascript library.
Are LMS administrators or IT/security teams likely to have concerns about deploying them (due to security risks or other considerations?)
If they object to a small amount of javascript in the elementary math library they will presumably object even more to the much larger mathjax javascript
That said, if the elementary math polyfill is only providing visual rendering and is not yet passing the MathML through to AT, then it wouldn't be a viable option for us at this time, since accessibility is our primary concern.
As I say for authoring you could use the elementary math markup, I would expect that the mathml-polyfills code/mathcat will be able to give accessible readings of that before long. It just doesn't technically work at present.
In the meantime you can use mathjax, and if you decide to change later that should only be a one line change.
I would say that in general (apart from elementary math mstack markup), mathcat reading with native mathml with intent attributes gives the best math readings, so the choice isn't obvious, you just need to weigh your own priorities. But all these system are evolving rapidly and things may be different in a few months.
I know what MathJax is of course and my client is already running MathJax v. 4. I planned to suggest they try loading the mml3 elementary MathJax extension, to see if that would help with the mstack reading, but you mentioned using a mathml polyfill (instead of or addition to MathJax, was my confusion). Logistically I know what a polyfill does but my questions about it have more to do with who authors and maintains it as I would anticipate some resistance to global implementation for security reasons. Sounds like I could go ahead and suggest the MathJax extension, and test to see if that helps. If it doesn't, then they need to use mtable or whatever core mathml formulation gives the best math reading by NVDA/JAWs screen readers (which now both have MathCat integrations).
The mathml-polyfills project has been realized by members of the W3C math working groups and is being maintained on a voluntary basis by them. I expect it to be, by far, lighter weight than MathJax as it has, currently, a single scope: migrate mathml3 to mathml4-core.
Distributions in various modes (scripts, modules, npm...) is available too.
@Joy-Holly if you are generating the mathml from something else, it is easy enough to help the readings with the current polyfill by adding a suitable top level intent, eg the above example, using the w3c math wg polyfill
heading level 2 mstack example
123 plus 456 Equals 579
Of course it's not ideal that you need to duplicate the numbers into the intent, but it would not take too much to generate both from the same source either in a page generator or in javascript within the page.
It seems like the duplication wouldn't be ideal from a maintenance perspective, since if the displayed math is changed by the author using the equation editor, they would also have to remember to update the corresponding intent attribute. I don't think I can consider the polyfill solution for my use case at this point though, based on the earlier comments that it isn't currently passing the MathML through to assistive technology.
What I'm trying to identify is an elementary (vertical) math authoring workflow that:
uses stable, standards-based MathML,
is accessible (now) with current assistive technologies,
is as future-proof as possible, so that as the MathML support landscape evolves, compatibility can ideally be managed in the rendering layer rather than requiring previously authored content to be updated or re-authored.
I appreciate your feedback! Having a better understanding of what is currently possible helps me figure out what direction I can reasonably advise my client to go.
It seems like the duplication wouldn't be ideal from a maintenance perspective, since if the displayed math is changed by the author using the equation editor,
yes of course, agreed, but in the end, the numbers need to be duplicated for the visual rendering and the accessibility tree, so it's just a matter of where that happens.
As I said in my comment above, the duplication could be automated at several levels, Whatever editor is writing the mstack could also add the matching intent, or failing that you could load a few lines of javascript to generate that intent in addition to the existing javascript that is generating the visual layout.
Or of course you could use mathjax if that's making a good reading here although that would also change all the visual rendering of all math on the page so is a somewhat larger change.
The people doing are authoring are mostly math SMEs working with the MathType gui and are never going into the code at all. (There isn't even the LaTeX to MathML workflow I'm more used to.) So whatever production flow we come up with needs to be easy enough for them to implement. I'm not a javascript developer so wasn't thinking of what could be custom-automated using javascript. Also my mindset is more trying to find something that already exists that already functions without too much customization.
I was interested in the MathJax elementary math extension because my client is already using MathJax. I'm foggy on the difference between using the mathml polyfill v. the MathML extension--advantages or disadvantages of each, putting aside for the moment that the polyfill is not working with AT.
At this point in my response, I jumped over to a MathJax users forum where I had asked about the elementary math extension to see if anything there informed the discussion here. A responder informed me that the biggest issue is that the mml3 extension uses XSLT and support for XSLT will be dropped by all major browsers by the end of the year. So it appears the MathJax elementary math extension, unless reworked to not rely on XSLT, is not really an option.
So in your opinion, how likely is it that the elementary math subset will ever be added to MathML core? I'm thinking, extremely unlikely, to maybe never? (Since I can't see it having the high-priority push behind it that higher level math has had.) Assuming it is true that it's unlikely to ever be included in MathML core (at least not anytime soon), the options for elementary vertical math right now are:
Restrict to Core Elements: Give up on elementary, non-core tag MathML and form the vertical math using only elements supported by core. (Is still better than resorting to image and alt text, as is currently still being done in many cases out of necessity.)
Wait for Accessibility of MathML elem-math Polyfill to Improve: Hope that the AT issue with this polyfill gets resolved so it can become an accessible option. (And if/when it does, I'm still not sure whether polyfills can be implemented at the same time as MathJax (which is implemented globally on their platform to support higher-grade math) or if this would cause conflicts? )
Customize/tweak as needed to improve either core or polyfill AT math reading experience, that fits the production reality (writing a script that auto-updates the intent as you describe above, for example).
Resort in some [extreme] cases to using images with alt text. (Ex. for more complex elementary math concepts like cross-outs and carry-overs.)
I feel like I understand better what is actually possible right now, with elementary math MathML, and that's very helpful since I need to be able to explain clearly what the obstacles are. It is frustrating that the elementary MathML elements exist and are , and there is even a tool for vertical addition in the MathType editor, but due to lack of non-core MathML support and AT concerns, implementation of a workflow that includes elementary math elements appears to not be feasible at this time.
This continues to be a major issue for education accessibility. The reality is that during the critical formative years of early education, students with disabilities are not encountering true accessible math in digital educational content. Many of those students won't make it to college, and part of the reason will be because the digital math content they encountered in elementary school won't be accessible to them using the assistive technologies they use to access plain literary text, and much of the educational value that could have helped them along the way simply wasn't there. So, we have this intractable situation where seemingly the only way to move forward is to have the big publishers of elementary educational content fund the technology development work to get elementary math working in MathML and supported in browsers and/or MathJax.
At this point in my response, I jumped over to a MathJax users forum where I had asked about the elementary math extension to see if anything there informed the discussion here. A responder informed me that the biggest issue is that the mml3 extension uses XSLT and support for XSLT will be dropped by all major browsers by the end of the year. So it appears the MathJax elementary math extension, unless reworked to not rely on XSLT, is not really an option.
hmm the original mathjax content mathml extension also was originally based on xslt and sometime (a decade or so ago) I translated that to javascript and donated it to mathjax (who reworked it a bit but basically the same) the same basic technique could be done for the elementary math (basically a few javascript helper functions have enough of a structure that you could more or less directly rewrite the xslt into javascript.
Or they could use a modified version of Neil's elementary math polyfill which similarly rewrites the elementary math into mathml that mathjax would understand (although as the browser would understand it directly as well)
I wrote all the above then something at the back of my head made me check
I did in fact include the elementary math elements as well as the content mathml in the javascript version of my translation, so mathjax could easily pick that up if they wanted to.
So in your opinion, how likely is it that the elementary math subset will ever be added to MathML core? I'm thinking, extremely unlikely, to maybe never?
history shows that if enough people ask for it, then it might happen, or as @Steve-Noble just indicated if people (or companies) pay for the development rather than just asking. We have a MathML-Core level 2 label on issues that can't be addressed in the current mathml core level 1 but never say never. Many people predicted we'd never get mathml into browsers at all, but, in the end, we did.... Big companies behind the browsers never reveal future plans, so probably you won't get any usable predicted future date when that might happen but, no need to be pressimistic. But also in practice it probably doesn't matter in many scenarios whether an element is directly implemented in the browser or if there is a javascript layer filling in the gap, and I expect that the javascript will work (including accessibility layer) rather soon.
Restrict to Core Elements:
this is certainly a possibility, and for basic layouts for addition mtable really isn't that bad, as shown above. If you want to show long division or show "carries" and other things not having the elementary math elements is a bit of a pain, but not impossible.
Wait for Accessibility of MathML elem-math Polyfill to Improve:
As I say I expect someone in the WG will find time to do this over the summer, so I don't expect this will be waiting for years. Perhaps someone just following this thread will feel motivated to having a look....
Customize/tweak as needed to improve either core or polyfill AT math reading experience,
yes well this is just the easier version of the previous one really. It would be trivial to generate intents if you just have 2d addition layouts so you'd just need to add a few lines to handle the cases in the document, but to actually update the polyfill you'd really need to do all the cases and again carries and long division etc are probably harder to generate accessible readings for.
Resort in some cases to using images with alt text.
I don't think you need images ever. Even if it's a complicated expression with crossouts, you can still have it set using mathml and if necessary treat it as if it were an image in that you supply a single top level alttext (or intent) if that is the only way to force the reading that you want.
my example in a previous comment included a "structural" intent that tried to accurately follow the mathematical structure, but if instead you used intent="wibble" then nvda would just read the layout as wibble which isn't that useful but you could replace that with any text that you would put in the alt text of an image, so using an image doesn't help accessibility at all, it just degrades the visual layout.
As @david Carlisle ***@***.***> said there is a polyfill, so
you can get the display. I started work on elementary math support for
MathCAT. It is in the elementary-math-as-grid
<https://github.com/daisy/MathCAT/compare/elementary-math-as-grid> branch.
It's been a while, but the last commit comment says most speech works but
there are problems with navigation. I don't know whether I have tried this
with the polyfill. If it doesn't work (which is likely), I (or someone
else) will work to fix this.
The obvious question is "when". I have a lot on my plate but MathCAT now
has other people working on it. Maybe one of them will pick it up and
prioritize finishing the work. Or maybe someone reading this thread can do
the work...
So this topic "Best Practice for Vertical Math (Elementary) #334 made it into the MathML-Core Agenda for July but it doesn't appear it was directly discussed? I'm checking in to make sure there has been no progress on the accessibility of the elementary Math polyfill since I last checked in. On Wednesday I'm meeting with developers who have questions about whether the elementary math polyfill is an option for them. I'm going to say "no" because of the still unresolved accessibility issue, and tell them for now they must still build elementary vertical math using MathML core elements. Please let me know if this is not correct!
I could mention also David's suggestion to use intent as a possible option if they want to try implementing the elementary math polyfill, but I wonder--what happens in the future to blocks of code with intent after (let's optimistically suppose!) the polyfill is fixed and is working as intended? Will there be double readings of the math or some other undesirable side effect? Would they have to then go back into the code and remove the 'intent' specification for any reason? Just trying to think ahead. My gut says not to implement the polyfill until it's fully working as intended with AT.
As far as I know there hasn't been any change on the polyfill (it's conference and holiday season and relying on volunteer labour) however to answer your question about double readings I don't think that is a possible failure. If explicitly or inserted by a javascript polyfill, there is <mrow intent="something">..... then it's going to be read as something whatever intents or mathml some code may inject into the ....
An intent masks its children except to explicitly referenced nodes with $a .... <mrow arg="a" so if two intents get constructed for some reason, basically the outer one will win, you don't get a double reading.
Thank you. That's helpful (the explanation about how intent works). And I appreciate your confirming the status of the elementary math polyfill. Makes perfect sense and is understandable; just wanted to make sure because when I first brought this up in early July, when the summer seemed to be a long stretch of time ahead still, there was vague hope expressed about it being a summer project for someone! 🙂
Activity
davidcarlisle commentedon Jul 2, 2026
This issue might perhaps be better under MathML than MathML-core (but it doesn't really matter either way, we could move it if needed)
The answer that I'd like to give is that, although the elementary math elements such as
<mstack>are not in MathML Core, they can be used in browsers by way of the supplied polyfillhttps://w3c.github.io/mathml-polyfills/elem-math/index.html
But currently this is only apparently working for the visual display, although the MathML is still available via the shadow-root it's not being passed to AT and testing with NVDA/MathCAT the experience doesn't seem great.
This is an open issue at
w3c/mathml-polyfills#30
and your message serves as a reminder that we really should fix this if possible.
In principle this should not be a problem, the javascript that is currently implementing the polyfill would be able to detect native browser implementations of mstack if they became available so would be able to adapt to "do the right thing" without documents having to change.
If you need something that works now rather than waiting for us to fix the accessibility of the polyfill you could generate an mtable directly and use
intentto guide the screen reader.The attached HTML produces the following reading with NVDA/MathCAT
so a possibly acceptable reading for the mtable version.
em1.html
In Chrome it looks like this
Firefox is similar.
Joy-Holly commentedon Jul 6, 2026
Thank you. A remaining question I have is if the MathJax MML3 extension is loaded, would this eliminate the need for a polyfill to display elementary math? (I'm still hoping there is a path to using the recommended elementary MathML elements, such as mstack, rather than authoring vertical math with mtable, using intent to guide the screenreader.)
I also admit I don't know that much about polyfills. Are LMS administrators or IT/security teams likely to have concerns about deploying them (due to security risks or other considerations?) That said, if the elementary math polyfill is only providing visual rendering and is not yet passing the MathML through to AT, then it wouldn't be a viable option for us at this time, since accessibility is our primary concern.
davidcarlisle commentedon Jul 6, 2026
an "alternative" rather than "eliminate the need". A "polyfill" isn't a technical term it's just a conventional name for a javascript library that fills in some gaps in browser capabilities (the name is actually a trade name for a commercial filler paste for filling cracks in walls). MathJaX is a very large and very impressive javascript library.
If they object to a small amount of javascript in the elementary math library they will presumably object even more to the much larger mathjax javascript
As I say for authoring you could use the elementary math markup, I would expect that the mathml-polyfills code/mathcat will be able to give accessible readings of that before long. It just doesn't technically work at present.
In the meantime you can use mathjax, and if you decide to change later that should only be a one line change.
I would say that in general (apart from elementary math mstack markup), mathcat reading with native mathml with intent attributes gives the best math readings, so the choice isn't obvious, you just need to weigh your own priorities. But all these system are evolving rapidly and things may be different in a few months.
Joy-Holly commentedon Jul 6, 2026
I know what MathJax is of course and my client is already running MathJax v. 4. I planned to suggest they try loading the mml3 elementary MathJax extension, to see if that would help with the mstack reading, but you mentioned using a mathml polyfill (instead of or addition to MathJax, was my confusion). Logistically I know what a polyfill does but my questions about it have more to do with who authors and maintains it as I would anticipate some resistance to global implementation for security reasons. Sounds like I could go ahead and suggest the MathJax extension, and test to see if that helps. If it doesn't, then they need to use mtable or whatever core mathml formulation gives the best math reading by NVDA/JAWs screen readers (which now both have MathCat integrations).
polx commentedon Jul 6, 2026
The mathml-polyfills project has been realized by members of the W3C math working groups and is being maintained on a voluntary basis by them. I expect it to be, by far, lighter weight than MathJax as it has, currently, a single scope: migrate mathml3 to mathml4-core.
Distributions in various modes (scripts, modules, npm...) is available too.
davidcarlisle commentedon Jul 6, 2026
@Joy-Holly if you are generating the mathml from something else, it is easy enough to help the readings with the current polyfill by adding a suitable top level intent, eg the above example, using the w3c math wg polyfill
renders visually as
and reads in nvda/mathcat as
Of course it's not ideal that you need to duplicate the numbers into the intent, but it would not take too much to generate both from the same source either in a page generator or in javascript within the page.
Joy-Holly commentedon Jul 6, 2026
It seems like the duplication wouldn't be ideal from a maintenance perspective, since if the displayed math is changed by the author using the equation editor, they would also have to remember to update the corresponding
intentattribute. I don't think I can consider the polyfill solution for my use case at this point though, based on the earlier comments that it isn't currently passing the MathML through to assistive technology.What I'm trying to identify is an elementary (vertical) math authoring workflow that:
I appreciate your feedback! Having a better understanding of what is currently possible helps me figure out what direction I can reasonably advise my client to go.
davidcarlisle commentedon Jul 7, 2026
yes of course, agreed, but in the end, the numbers need to be duplicated for the visual rendering and the accessibility tree, so it's just a matter of where that happens.
As I said in my comment above, the duplication could be automated at several levels, Whatever editor is writing the
mstackcould also add the matchingintent, or failing that you could load a few lines of javascript to generate that intent in addition to the existing javascript that is generating the visual layout.Or of course you could use mathjax if that's making a good reading here although that would also change all the visual rendering of all math on the page so is a somewhat larger change.
Joy-Holly commentedon Jul 7, 2026
The people doing are authoring are mostly math SMEs working with the MathType gui and are never going into the code at all. (There isn't even the LaTeX to MathML workflow I'm more used to.) So whatever production flow we come up with needs to be easy enough for them to implement. I'm not a javascript developer so wasn't thinking of what could be custom-automated using javascript. Also my mindset is more trying to find something that already exists that already functions without too much customization.
I was interested in the MathJax elementary math extension because my client is already using MathJax. I'm foggy on the difference between using the mathml polyfill v. the MathML extension--advantages or disadvantages of each, putting aside for the moment that the polyfill is not working with AT.
At this point in my response, I jumped over to a MathJax users forum where I had asked about the elementary math extension to see if anything there informed the discussion here. A responder informed me that the biggest issue is that the mml3 extension uses XSLT and support for XSLT will be dropped by all major browsers by the end of the year. So it appears the MathJax elementary math extension, unless reworked to not rely on XSLT, is not really an option.
So in your opinion, how likely is it that the elementary math subset will ever be added to MathML core? I'm thinking, extremely unlikely, to maybe never? (Since I can't see it having the high-priority push behind it that higher level math has had.) Assuming it is true that it's unlikely to ever be included in MathML core (at least not anytime soon), the options for elementary vertical math right now are:
Restrict to Core Elements: Give up on elementary, non-core tag MathML and form the vertical math using only elements supported by core. (Is still better than resorting to image and alt text, as is currently still being done in many cases out of necessity.)
Wait for Accessibility of MathML elem-math Polyfill to Improve: Hope that the AT issue with this polyfill gets resolved so it can become an accessible option. (And if/when it does, I'm still not sure whether polyfills can be implemented at the same time as MathJax (which is implemented globally on their platform to support higher-grade math) or if this would cause conflicts? )
Customize/tweak as needed to improve either core or polyfill AT math reading experience, that fits the production reality (writing a script that auto-updates the
intentas you describe above, for example).Resort in some [extreme] cases to using images with alt text. (Ex. for more complex elementary math concepts like cross-outs and carry-overs.)
I feel like I understand better what is actually possible right now, with elementary math MathML, and that's very helpful since I need to be able to explain clearly what the obstacles are. It is frustrating that the elementary MathML elements exist and are , and there is even a tool for vertical addition in the MathType editor, but due to lack of non-core MathML support and AT concerns, implementation of a workflow that includes elementary math elements appears to not be feasible at this time.
Steve-Noble commentedon Jul 7, 2026
This continues to be a major issue for education accessibility. The reality is that during the critical formative years of early education, students with disabilities are not encountering true accessible math in digital educational content. Many of those students won't make it to college, and part of the reason will be because the digital math content they encountered in elementary school won't be accessible to them using the assistive technologies they use to access plain literary text, and much of the educational value that could have helped them along the way simply wasn't there. So, we have this intractable situation where seemingly the only way to move forward is to have the big publishers of elementary educational content fund the technology development work to get elementary math working in MathML and supported in browsers and/or MathJax.
davidcarlisle commentedon Jul 7, 2026
@Joy-Holly ah interesting
hmm the original mathjax content mathml extension also was originally based on xslt and sometime (a decade or so ago) I translated that to javascript and donated it to mathjax (who reworked it a bit but basically the same) the same basic technique could be done for the elementary math (basically a few javascript helper functions have enough of a structure that you could more or less directly rewrite the xslt into javascript.
Or they could use a modified version of Neil's elementary math polyfill which similarly rewrites the elementary math into mathml that mathjax would understand (although as the browser would understand it directly as well)
I wrote all the above then something at the back of my head made me check
https://github.com/davidcarlisle/web-xslt/blob/e2d0023bd9b0e5f0538e2ec3df34a5ec5872f549/ctop/mml3mml2.js#L2
I did in fact include the elementary math elements as well as the content mathml in the javascript version of my translation, so mathjax could easily pick that up if they wanted to.
history shows that if enough people ask for it, then it might happen, or as @Steve-Noble just indicated if people (or companies) pay for the development rather than just asking. We have a MathML-Core level 2 label on issues that can't be addressed in the current mathml core level 1 but never say never. Many people predicted we'd never get mathml into browsers at all, but, in the end, we did.... Big companies behind the browsers never reveal future plans, so probably you won't get any usable predicted future date when that might happen but, no need to be pressimistic. But also in practice it probably doesn't matter in many scenarios whether an element is directly implemented in the browser or if there is a javascript layer filling in the gap, and I expect that the javascript will work (including accessibility layer) rather soon.
this is certainly a possibility, and for basic layouts for addition mtable really isn't that bad, as shown above. If you want to show long division or show "carries" and other things not having the elementary math elements is a bit of a pain, but not impossible.
As I say I expect someone in the WG will find time to do this over the summer, so I don't expect this will be waiting for years. Perhaps someone just following this thread will feel motivated to having a look....
yes well this is just the easier version of the previous one really. It would be trivial to generate intents if you just have 2d addition layouts so you'd just need to add a few lines to handle the cases in the document, but to actually update the polyfill you'd really need to do all the cases and again carries and long division etc are probably harder to generate accessible readings for.
I don't think you need images ever. Even if it's a complicated expression with crossouts, you can still have it set using mathml and if necessary treat it as if it were an image in that you supply a single top level alttext (or intent) if that is the only way to force the reading that you want.
my example in a previous comment included a "structural" intent that tried to accurately follow the mathematical structure, but if instead you used
intent="wibble"then nvda would just read the layout as wibble which isn't that useful but you could replace that with any text that you would put in the alt text of an image, so using an image doesn't help accessibility at all, it just degrades the visual layout.NSoiffer commentedon Jul 15, 2026
Joy-Holly commentedon Aug 18, 2026
So this topic "Best Practice for Vertical Math (Elementary) #334 made it into the MathML-Core Agenda for July but it doesn't appear it was directly discussed? I'm checking in to make sure there has been no progress on the accessibility of the elementary Math polyfill since I last checked in. On Wednesday I'm meeting with developers who have questions about whether the elementary math polyfill is an option for them. I'm going to say "no" because of the still unresolved accessibility issue, and tell them for now they must still build elementary vertical math using MathML core elements. Please let me know if this is not correct!
I could mention also David's suggestion to use
intentas a possible option if they want to try implementing the elementary math polyfill, but I wonder--what happens in the future to blocks of code withintentafter (let's optimistically suppose!) the polyfill is fixed and is working as intended? Will there be double readings of the math or some other undesirable side effect? Would they have to then go back into the code and remove the 'intent' specification for any reason? Just trying to think ahead. My gut says not to implement the polyfill until it's fully working as intended with AT.davidcarlisle commentedon Aug 18, 2026
As far as I know there hasn't been any change on the polyfill (it's conference and holiday season and relying on volunteer labour) however to answer your question about double readings I don't think that is a possible failure. If explicitly or inserted by a javascript polyfill, there is
<mrow intent="something">.....then it's going to be read assomethingwhatever intents or mathml some code may inject into the....An
intentmasks its children except to explicitly referenced nodes with$a....<mrow arg="a"so if two intents get constructed for some reason, basically the outer one will win, you don't get a double reading.Joy-Holly commentedon Aug 18, 2026
Thank you. That's helpful (the explanation about how
intentworks). And I appreciate your confirming the status of the elementary math polyfill. Makes perfect sense and is understandable; just wanted to make sure because when I first brought this up in early July, when the summer seemed to be a long stretch of time ahead still, there was vague hope expressed about it being a summer project for someone! 🙂