Below is the project roadmap that was completed in 2019 on Igaliaโs downstream branch of Chromium. Since then, a huge effort has been made to upstream that code so that they are shipped in all Chromium-based browsers. Goals have been slightly adapted according to feedback from Chromium reviewers and agreement in standardization groups. Such changes are indicated by a pen symbol โ๐โ๏ธ together with the amendment details.
As of January 2023, the MathML implemention described in this roadmap is shipped in official Chrome releases. New developments and maintenance continue via the Open Collective project.
<math>
(with its display
attribute), <mrow>
, <mstyle>
, <merror>
(with special CSS style), <mpadded>
, <mphantom>
(with visibility: hidden
).
<menclose>
, but this has been generalized to all unknown elements.<mi>
, <mn>
, <mo>
, <mtext>
and <ms>
.<mspace>
element with width
, depth
, height
attributes.dir
, mathcolor
, mathbackground
and mathsize
attributes.
dir
attribute is properly mapped to the CSS direction
property and that property taken into account for MathML layout, mirroring of stretchy operators is currently not supported.semantics
: just display the first child and hide annotations.<mfrac>
), with its linethickness
attribute.<msub>
, <msup>
, <msubsup>
<munder>
, <mover>
, <munderover>
<mmultiscripts>
mtable
.mpadded
with simplified interpretation of width
, depth
, height
, lspace
and voffset
.form
(for selecting an entry in the dictionary)largeop
and movablelimits
(to perform spacing in under and over scripts)
accent
property/attribute but this has been removed in favor of suppporting accent/accentunder attributes on underover scripts.lspace
and rspace
(to perform spacing in <mrow>
-like elements).MathVariants
table.largeop
operators in under and over scripts<mrow>
-like elements and under and over scripts.
stretchy
and symmetric
attributes.msqrt
, mroot
)mathvariant
mathvariant
values from MathML 3. However we were only able to get one text-transform
value accepted by the CSSWG. This provides automatic italic of variables ; authors are encouraged to directly use the relevant Unicode characters for other math variants.displaystyle
scriptlevel
๐ 2019/10/15: Initial roadmap was focusing on MathML rendering but after sending the intent-to-implement, we were asked to coordinate with the accessibility team. The goal is to get parity with Gecko and WebKit on two platforms:
In MathML Core, the min-content โwidthโ and max-content โwidthโ of a stretchy operator are the same : either the maximum โwidthโ of all its sizes (vertical operators) or the โwidthโ of its base size (horizontal operators).
This is obviously not the same as the actual โwidthโ calculated during layout e.g. small, medium and big (vertical) fences can take different widths while a stretched (horizontal) accent is normally much wider than its base size.
Currently, Chromiumโs layout implementation must use the min/max-content โwidthโ as the actual โwidthโ of bounding boxes. For MathML, this means that:
Note that Igaliaโs downstream branch did not have this problem since it was not respecting Chromiumโs limitation. Also, the issue is slightly mitigated upstream by splitting the extra space or overflow evenly on both sides.
Googleโs rendering core has a plan to rewrite how the layout steps work but this is a big effort. Until that is resolved, one cannot properly implement stretchy operators as described in MathML Core and these operators will continue to cause serious rendering bugs.
๐ 2022/05/09: This list used to contain more items but has been updated to only include the ones that are expected to be in the initial release.
The following features have been discussed with Chromium reviewers or Math/CSS WG members during the implementation phase but they were not part of the initial roadmap:
display: math
text-transform: auto
math-style
propertymath-shift
propertymath-depth
propertyfont-family: math
valueminsize
and maxsize
attributes for vertical operator stretchingBesides these tasks, Igalia continues to keep an eye on security bugs, interoperability issues as well as compatibility with CSS.