Users can easily get confused between the different browsers, web engines and MathML statuses. This blog post provides an overview and summary in order to clarify things. For each MathML implementation, a screenshot of the same formula involving the Gamma Function is provided so that one can easily compare their rendering quality. Here is what it looks like in LaTeX:
The rendering engine is one (primary) component of a browser. Rendering web content is very complex business, so there are only a few. Today, the three rendering engines are: WebKit, Blink and Gecko. Each of these is open source, and can be used in several browsers. Along the way, however, there have been some other notable ones: Presto, Trident and EdgeHTML. Each of these was proprietary. Each has (or had) markedly different architectures and evolutions.
The WebKit rendering engine is used by several browsers, notably: Apple’s Safari browser or GNOME Web. An initial implementation of MathML in WebKit happened around 2010 and was later improved in 2012. Back then, Google Chrome was also using WebKit and MathML was enabled in Chrome 24. Here is how it rendered:
A few months later, Google announced a fork of WebKit, which they would re-factor into a new web engine called Blink. Blink is used for the Chromium browser. Chromium is really the same as Google Chrome modulo minor differences. During this refactoring, MathML was disabled and Blink has remained without support ever since. The latest version of Chromium does not support MathML rendering, so basically it renders text without any math layout:
This is, more or less, how Microsoft’s Trident and EdgeHTML engines would have rendered as well.
Older versions of Opera used the proprietary Presto engine which supported the MathML for CSS Profile (effectively just default User Agent styles). This would have rendered very much like this:
However, today, many browser projects are based on Blink/Chromium, including both Opera and, more recently, Microsoft’s Edge.
During the first semester of 2016, Igalia engineers worked on a complete refactoring of the MathML code in Webkit to address main design and rendering issues. This is more or less the implementation in recent releases of WebKit, and it renders like this:
As part of the MathML in Chromium project, Igalia has also been implementing MathML on top of a new layout system for Blink currently being developed by Google. In Igalia’s Chromium build, MathML is currently rendered like this:
Finally, Gecko is another web engine which is best known for being used by Mozilla Firefox. The Mozilla MathML project started 20 years ago and support was released in Mozilla’s 1.0, two years before Firefox 1.0 was actually released. MathML is still supported in the latest versions of Firefox:
Although the history of browsers and native MathML implementations is a bit complicated, the summary is: