Mozilla MathML Project: Roadmap
That's not a secret, native MathML support is not really available in layout engines other than Gecko: Webkit implementation is not mature yet and still disabled in Chrome, Opera's CSS-based implementation is of really poor quality, Internet Explorer does not implement MathML at all. As a consequence, it does not really make sense to compare the different MathML supports to motivate Gecko's development. In constrast to the very limited interest of browser vendors for MathML, users have shown a great enthusiasm for reading and writing mathematical notations on the Web. Since I got involved in the MathJax project, I have been able to discover an increasing use of mathematics on the Web and related technologies (Wikipedia, e-books, handwriting recognition and many other use cases). When Firefox's native MathML was enabled by default on MathJax, we received important bug reports and enhancement requests, collected in some tracking bugs like MathML2 support, MathML3 support, MathML in MathJax, MathML demo pages. Hence I have preferred to base a roadmap for the Mozilla MathML Project on user feedback The table below summarizes what I think are the most important areas to work on in order to improve user experience. For each of these areas, I give the rationale and a more detailed description with recent, short-term and long-term work.
|Font support||See for example about mathematical fonts.||The Fonts for Mozilla's MathML engine page has been reorganized and now includes a new test page, a Windows installer and quick instructions. Thanks to my brother François Wang, Web authors can use @font-face rules to workaround font installation issues. The MathML add-on is now fully compatible with Desktop and Android versions of Firefox. MathJax fonts are now well supported and we will have a complete support after MathJax fonts are updated. In the future, adding a generic support for Open Type fonts will at least offer support for Cambria Math, Neo Euler, STIX 1.1, Latin Modern Math, Lucida fonts and Asana Math.|
|Spacing||Esthetic of formulas, advanced layout.||
Xuan Hu is currently working on a better computation of vertical metrics in <mpadded>. In view of this analysis of Browsers' rendering of MathJax's LaTeXToMathML tests, the most serious spacing issues are the lack of support for mtable@rowspacing/columnspacing and negative spaces. In the future, using the data from the Open Type MATH table could also give better positioning than our current heuristic TeX-based rules.
|<mlabeledtr>||Labels, numbering and cross-references.||Labels, numbering and cross-references are essential for scientists
to publish papers or similar documents on the Web. Since Firefox 9,
authors can override our default rendering of
|Linebreaking||Reading on small screens, printing.||
The Mozilla Corporation has recently concentrated some efforts on mobile devices (smartphones, tablets, e-readers, etc) for which linebreaking inside and around equations is important. This is also obviously necessary to correctly print pages containing mathematical formulas. BTW, some work is in progress to fix printing issues when @font-face is used.
|Operator Stretching||Commutative diagram, chemistry formulas.||Stretching
operators in table cells is crucial to draw basic commutative
diagrams (e.g. those provided by the
|Tabular elements||Advanced mathematical layout, code refactoring.||
Quentin Headen has worked this summer on refactoring the <mtable> code and I hope he could use his work to implement mtable@rowspacing/columnspacing. In general, there is a lot of missing tabular attributes that are important for advanced mathematical layout. Probably related is the support for elementary math layouts that some people have asked on the MathJax mailing list and others voted for on Bugzilla.
|Token elements||Better rendering of text in mathematical formulas, code refactoring.||Just as the tabular math code, the code for token elements needs a
serious rewriting. Ehsan Akhgari recently fixed a general issue with
token elements and I prepared a patch for
the <ms> element. In general, I think we should move special
treatments of MathML token elements to the style system (or at
least outside of
|Documentation||Inform MathML users and developers.||
We continue to improve our MathML documentation. With the release of Kuma and the work of Jean-Yves Perrier and Florian Scholz on MathML embedding, I hope we could eventually migrate the old demo pages to MDN soon.