MathML in Chromium

More MathML patches upstreamed to Chromium in 2020 !
29 June 2020

Review of the upstreaming progress during the first half of 2020 and what remains to do.

Screenshot of MathML formulas in Chromium
Evolution of upstream MathML rendering during the first half of 2020

Since the beginning of the year, Igalia has worked with Google engineers from the Rendering Core Team to upstream and improve the MathML implementation we worked on in 2019. Let’s review the status with respect to the 2019 implementation roadmap:

  1. Basic setup
    This part is done. Note that compared to the original plan, all unknown MathML Core elements behave like a grouping <mrow> element as agreed in the MathML Refresh Community Group.
  2. Basic Layout
    Fractions and simple scripts have been upstreamed. A patch for multiple pre and post scripts has been uploaded and mpadded should come soon too. Regarding math tables, Aleks Totic has done excellent progress on the new TableNG implementation. We expect we will be able to update our downstream branch to switch from the legacy table support to this new implementation so that we can then upstream table support.
  3. Operator Dictionary
    Upstreaming for this has not started at all, so expect bugs and missing features with operator spacing, stretching, size, etc. We have worked with the MathML Refresh Community Group to provide a compact form for the MathML operator dictionary in order to avoid the binary size increase and make patches acceptable. Refactoring our downstream implementation accordingly will be straightforward and we can then starting upstreaming this part.
  4. Stretchy operators
    The basic low-level font shaping and measuring logic has been upstreamed and is used to draw radical symbols. The rest depends on the previous step but a lot of the logic in the layout and painting code has already been upstreamed in order to support radicals.
  5. Advanced Style
    This step is essentially done. However, it involves new CSS properties to be discussed with the CSS Working Group so the patch for advanced mathvariant has been put on hold and we expect a few extra refactoring and cleanup patches (e.g. renaming) when we get the feedback from the CSS Working Group.

In addition to the above, some features that were not in the initial roadmap have been discussed in the MathML Refresh Community Group and are implemented or being considered. This includes better DOM API, mixing with SVG/HTML, ink metrics (tighter bound for text), new style for TeX’s “cramped superscript” concept and more. Let’s check again the status at the end of the year !

More news