MathML in Chromium

42 MathML Patches Upstreamed
23 April 2020

Basic support for fractions and scripts is implemented.

Since our last update in February, Igalia has upstreamed MathML patches to Chromium at a good pace: already 42 patches! Thanks to very helpful review from Google’s rendering core team, we have been able to refine our implementation both for upstreamed patches and for our downstream branch. Here are some highlights of what has landed:

  • MathML integration with DOM/IDL and CSS.

  • The low-level OpenType MATH support (layout parameters and shaping of stretchy operators) is completely upstreamed and will be used by the MathML layout for radicals and operators.

  • Experimental CSS properties corresponding to TeX’s concepts of displaystyle and cramped are implemented. We are currently working on extending the font-size and text-transform properties to implement scriptlevel and mathvariant changes.

  • Basic layout is implemented for grouping, spacing, fractions and scripts (<mrow>-like elements, <mspace>, <mfrac>, <msub>, <msup>, <msubsup>, <munder>, <mover>, <munderover>).

Although this is still work in progress, one can already notice some improvements. For example, the LaTeX formula \sum_{n=1}^{+\infty} \frac{1}{n^4} = \frac{\pi^4}{90} converted to MathML is rendered by your browser as


In Chromium upstream (Canary, experimental web features enabled) and in our downstream branch, it currently looks like this:

Screenshot of a MathML formula in Chromium
A mathematical formula rendered by Chromium (left: upstream, right: downstream)

We would like to thank all the people who have written encouragements and supported this work, including our fellow Igalians who have helped invest funding. If, like them, you believe in this project and the broader work that we do please consider becoming a sponsor. You can reach us with comments or questions via email or Twitter.

More news