MathML H1 report (2024)
Published on October 9, 2024 by Igalia
Summary
This report covers the period from January 1 - July 24, 2024.
For this year, our general goal has been to focus on improving interoperability of MathML Core in the different browsers by doing changes in WebKit and Firefox and increasing their [WPT score](https://wpt.fyi/results/mathml?label=experimental&label=master&aligned).
As usual, we continue to be review patches from developers and MDN contributors. There has also been a demand for better CSS support on MathML elements (padding/border/margin/width/height properties) and we are prioritizing it.
The main browser highlights for H1:
- Chromium: Fix offset mapping from a DOM text to a rendered text with text-transform: math-auto, which was causing issue with e.g. copy & paste.
- Chromium: Improved support for minsize/maxsize attributes, fixing many related operator stretching bug reported by users.
- WebKit: Landed support for border/padding/margin.
- WebKit: Reviewed patches from Ahmad Saleem to make WebKit's UA sheet more aligned with MathML Core's one.
- WebKit: layout invalid markup as mrow.
- Firefox: Uploaded patches for border/padding/margin.
- Firefox: [Completed conversion of legacy MathML tests to WPT format](https://groups.google.com/a/mozilla.org/g/dev-platform/c/qGqxddNMkOQ/m/vr8OATdeAwAJ), exporting most of them to the upstram WPT repo.
In H2 the plan is to land support for border/padding/margin in Firefox and to implement width/height support.
Chromium
- Uploaded [[mathml] Remove <none/> element](https://chromium-review.googlesource.com/c/chromium/src/+/4061458)
- Landed [CHECK failure with MathML + ::first-letter](https://chromium-review.googlesource.com/c/chromium/src/+/5054276)
- Reviewed [Fix offset mapping from a DOM text to a rendered text with text-transform:math-auto](https://chromium-review.googlesource.com/c/chromium/src/+/5201564)
- [Add non-regressions tests for bugs with stretchy fence](https://chromium-review.googlesource.com/c/chromium/src/+/5433295)
- [mathml minsize/maxsize](https://chromium-review.googlesource.com/c/chromium/src/+/5402478)
WebKit
- Reviewed [Sync and add 'padding-inline' UA stylehseet rules for mfrac in mathml.css](https://github.com/WebKit/WebKit/pull/21012)
- Reviewed [mfrac default padding-inline test case](https://github.com/web-platform-tests/wpt/pull/43449)
- Reviewed [Sync munder & mover (font-size: inherit) UA stylesheet rule as per MathML Spec](https://github.com/WebKit/WebKit/pull/23952)
- [[MathML] Layout invalid markup as an <mrow>](https://bugs.webkit.org/show_bug.cgi?id=123348)
- [[MathML] <mfrac> with out-of-flow numerator/denominator produces unexpected result](https://bugs.webkit.org/show_bug.cgi?id=276026)
- [Adopt more smart pointers in mathml](https://bugs.webkit.org/show_bug.cgi?id=274388)
- [Adopt more smart pointers in rendering/mathml](https://bugs.webkit.org/show_bug.cgi?id=274384)
- [Remove legacy MathML pixel test roots.xhtml](https://bugs.webkit.org/show_bug.cgi?id=276704)
- [MathML <mroot>: clamp RadicalKernBefore/AfterDegree](https://bugs.webkit.org/show_bug.cgi?id=276427)
- [Support padding/border/margin on RenderMathMLToken](https://bugs.webkit.org/show_bug.cgi?id=276317)
- [Support border/padding/margin on RenderMathMLOperator](https://bugs.webkit.org/show_bug.cgi?id=276357)
- [margin and preferred width calculation for MathML elements](https://bugs.webkit.org/show_bug.cgi?id=276358)
- [Remove legacy padding/margin rules from MathML UA stylesheet](https://bugs.webkit.org/show_bug.cgi?id=276360)
- [Support border/margin/padding on msub/msup/msubsup](https://bugs.webkit.org/show_bug.cgi?id=276314)
- [Support border/margin/padding on munderover/munder/mover](https://bugs.webkit.org/show_bug.cgi?id=276307)
- [Support border/padding/margin on RenderMathMLRow and subclasses](https://bugs.webkit.org/show_bug.cgi?id=276227)
- [Support border/margin/padding on mfrac and mspace elements](https://bugs.webkit.org/show_bug.cgi?id=276218)
Firefox
- Resolved as invalid [default space around `<mo>:</mo>`](https://bugzilla.mozilla.org/show_bug.cgi?id=1866569)
- Resolved as wontfix [Export layout/reftests/radicalbar*.html to WPT](https://bugzilla.mozilla.org/show_bug.cgi?id=1850661)
- Landed [Update comment regarding radicalbar*.html reftests](https://phabricator.services.mozilla.com/D199691)
- Landed [Export more MathML reftests to WPT](https://phabricator.services.mozilla.com/D185466)
- Landed [Remove font-family: monospace from some mpadded reftests](https://phabricator.services.mozilla.com/D200457)
- Landed [Remove `random-if(gtkWidget)` for mo-glph-size.html](https://phabricator.services.mozilla.com/D200439)
- Resolve as fixed [MathML maction statusline - status bar text doesn't accurately reflect the target of the link](https://bugzilla.mozilla.org/show_bug.cgi?id=1392258)
- Analyzed and reduced [height of `<munderover>`](https://bugzilla.mozilla.org/show_bug.cgi?id=1866693)
- Landed [Export some MathML mpadded reftests to WPT.](https://phabricator.services.mozilla.com//D200442)
- Landed [Export link-001.html as a tentative WPT.](https://phabricator.services.mozilla.com//D200441)
- Landed [Convert operator-1.xhtml to internal WPT test.](https://phabricator.services.mozilla.com//D200430)
- Landed [Export some dynamic reftests to WPT.](https://phabricator.services.mozilla.com//D199738)
- Landed [Convert mo@accent tests to internal WPT tests.](https://phabricator.services.mozilla.com//D199732)
- Landed [Export MathML dir-* tests to WPT.](https://phabricator.services.mozilla.com//D199702)
- Landed [Export mo-invisibleoperators-*.html reftests to WPT.](https://phabricator.services.mozilla.com//D199698)
- Landed [Export mspace-1.html reftests to WPT.](https://phabricator.services.mozilla.com//D199696)
- Landed [Export mfrac-* reftests to WPT.](https://phabricator.services.mozilla.com//D199693)
- Analyzed stats for [Remove support for the deprecated STIXGeneral set](https://bugzilla.mozilla.org/show_bug.cgi?id=1336058#c14)
- Analyzed [width of empty `<mo>`](https://bugzilla.mozilla.org/show_bug.cgi?id=1872643)
- [Export some MathML mpadded reftests to WPT.](https://phabricator.services.mozilla.com/D200442)
- [Export link-001.html as a tentative WPT.](https://phabricator.services.mozilla.com/D200441)
- [Convert operator-1.xhtml to internal WPT test.](https://phabricator.services.mozilla.com/D200430)
- [Export some dynamic reftests to WPT.](https://phabricator.services.mozilla.com/D199738)
- [Convert mo@accent tests to internal WPT tests.](https://phabricator.services.mozilla.com/D199732)
- [Export MathML dir-- tests to WPT.](https://phabricator.services.mozilla.com/D199702)
- [Export mo-invisibleoperators--.html reftests to WPT.](https://phabricator.services.mozilla.com/D199698)
- [Export mspace-1.html reftests to WPT.](https://phabricator.services.mozilla.com/D199696)
- [Export mfrac-- reftests to WPT.](https://phabricator.services.mozilla.com/D199693)
- [Remove layout.css.math-style.enabled and layout.css.math-depth.enabled prefs](https://phabricator.services.mozilla.com/D202940)
- [Convert subscript-italic-correction.html to internal testharness test.](https://phabricator.services.mozilla.com/D203586)
- [Convert scriptlevel-movablelimits-1.html reftest to internal WPT test.](https://phabricator.services.mozilla.com/D203577)
- [Export reftests for empty scripts to internal WPT tests.](https://phabricator.services.mozilla.com/D203572)
- [Export munderover-align-accent-- tests to WPT.](https://phabricator.services.mozilla.com/D203567)
- [Remove unintentionally landed largeop-1 files.](https://phabricator.services.mozilla.com/D203561)
- [Move reftests for underbar/overbar stretching to internal WPT.](https://phabricator.services.mozilla.com/D203450)
- [Convert reftests for stretching by scaling to internal WPT tests.](https://phabricator.services.mozilla.com/D203439)
- [Convert reftest for stretchy equal sign to an internal WPT.](https://phabricator.services.mozilla.com/D203426)
- [Export stretchy-largeop-- reftests as WPT testharness.js tests.](https://phabricator.services.mozilla.com/D203399)
- [Export a crashtest for bigotimes to WPT.](https://phabricator.services.mozilla.com/D203394)
- [Export mo-glyph-size.html to WPT.](https://phabricator.services.mozilla.com/D203392)
- [Export some mmultiscripts reftests to WPT.](https://phabricator.services.mozilla.com/D203290)
- [Export remaining internal semantics reftests to WPT.](https://phabricator.services.mozilla.com/D203239)
- [Export remaining internal mstyle reftests to WPT.](https://phabricator.services.mozilla.com/D203151)
- [Move remaining mpadded reftests to internal WPT tests.](https://phabricator.services.mozilla.com/D203139)
- [Convert MathML mirror-op tests to WPT](https://phabricator.services.mozilla.com/D203244)
- [Add warnings for MathML regarding new tests](https://phabricator.services.mozilla.com/D203589)
- [Export more MathML crashtests to WPT](https://phabricator.services.mozilla.com/D203614)
- [Export layout/reftests/radicalbar-.html to WPT](https://phabricator.services.mozilla.com/D203728)
- [Export test_math_tabindex_focus.html mochitest to WPT](https://phabricator.services.mozilla.com/D203778)
- [Remove dead code for MathML invalid markup](https://phabricator.services.mozilla.com/D203788)
- [Run infrastructure/reftest-zoom WPT tests with layout.css.zoom.enabled=true](https://phabricator.services.mozilla.com/D204194)
- Landed: [Bug 1890523 - Remove extra space above/below stretchy operators.](https://phabricator.services.mozilla.com/D207014)
- Landed: [Bug 1890531 - Remove automatic adjustment for "centered operators"](https://phabricator.services.mozilla.com/D207026)
- Landed: [Bug 1890958 - Remove android + fission OK/TIMEOUT annotations for MathML.](https://phabricator.services.mozilla.com/D207252)
- Under review: [Bug 1908069 - Introduce PlaceFlags parameter to MathML layout methods.](https://phabricator.services.mozilla.com/D216669)
- Under review: [Bug 1908069 - Add border/padding/margin support to <mfrac>.](https://phabricator.services.mozilla.com/D216670)
- Under review: [Bug 1908069 - Extend and tweak MathML padding/border/margin tests.](https://phabricator.services.mozilla.com/D216684)
- Under review: [Bug 1908069 - Add border/padding/margin support to mrow-like elements.](https://phabricator.services.mozilla.com/D216686)
- Under review: [Bug 1908069 - Add border/padding/margin support to MathML token elements.](https://phabricator.services.mozilla.com/D216855)
- Under review: [Bug 1908069 - Add border/padding/margin support to scripted elements.](https://phabricator.services.mozilla.com/D216924)
- Under review: [Bug 1908069 - Add border/padding/margin support to msqrt, mroot and menclose.](https://phabricator.services.mozilla.com/D216980)
- WIP: [Bug 1890525: Align handling of minsize/maxsize with MathML Core.](https://phabricator.services.mozilla.com/D207016)
Spec & tests
- Reported [Make ::first-letter and ::first-line pseudo-elements not applied to elements with display: math](https://github.com/w3c/mathml-core/issues/211)
- Edited spec [Make ::first-letter and ::first-line pseudo-elements not applied to elements with display: math](https://github.com/w3c/mathml-core/commit/be0f692c3a36048e23945bdde51dd284ba87351a)
- Edited spec [Rewrite section for SVG/HTML](https://github.com/w3c/mathml-core/commit/6d393b52e4d4414004828051f7dba94e4075a652)
- Opened [Add tests for ::first-letter and ::first-line with MathML](https://github.com/web-platform-tests/wpt/pull/43334)
- Reported [Interpretation of spaceAfterScript for mmultiscripts's prescripts](https://github.com/w3c/mathml-core/issues/217)
- Landed [Add tests for Selection.toString() and text-transform](https://github.com/web-platform-tests/wpt/pull/41012)
- Opened [Idea: Consider introducing CSS math-leading-space / math-trailing-space properties](https://github.com/w3c/mathml-core/issues/218)
- Open [MathML support in the HTML Sanitizer API](https://github.com/w3c/mathml-core/issues/227)
- Analyzed [Incorrect test added for text-transform](https://github.com/web-platform-tests/wpt/issues/46490), but the test seems correct per the spec.
- [Provided detail analysis of menclose](https://github.com/w3c/mathml-core/issues/245#issuecomment-2225166285)
- [Work on mo minsize/maxsize](https://github.com/w3c/mathml-core/issues/103)
- [MathML-Core Friday May 24, 2024](https://github.com/w3c/mathml-core/issues/243)
- [MathML-Core April 29, 2024](https://github.com/w3c/mathml-core/issues/239)
- [MathML-Core March 25, 2024 Agenda](https://github.com/w3c/mathml-core/issues/226)
- Spec changes: https://github.com/w3c/mathml-core/commits?since=2024-03-25&until=2024-07-25
- WPT changes: https://github.com/web-platform-tests/wpt/commits/master/mathml?since=2024-01-01&until=2024-07-24
Misc
- Reviewed [Update remaining web area to use latest rgb() and hsl() syntax](https://github.com/mdn/content/pull/31497)
- Reviewed [[ot-math-table] fix a bug in MathKern::get_value()](https://github.com/harfbuzz/harfbuzz/pull/4541)
- Reviewed [Feat add example to MathML mtd page using example given in w3c mathml core](https://github.com/mdn/content/pull/32532)
- [Format block MathML](https://github.com/mdn/content/pull/34751)
- [Format and clean up MathML](https://github.com/mdn/content/pull/34430)
- [Add three missing MathML elements](https://github.com/mdn/browser-compat-data/pull/23426)
- [fix: typo in MathML/mfenced](https://github.com/mdn/content/pull/33757)
- [Spelling/grammar fixes](https://github.com/mdn/content/pull/33400)
- Reviewed [[ot-math-table] fix a bug in MathKern::get_value()](https://github.com/harfbuzz/harfbuzz/pull/4541)
- Reviewed [Feat add example to MathML mtd page using example given in w3c mathml core](https://github.com/mdn/content/pull/32532)
- [Format block MathML](https://github.com/mdn/content/pull/34751)
- [Format and clean up MathML](https://github.com/mdn/content/pull/34430)
- [Add three missing MathML elements](https://github.com/mdn/browser-compat-data/pull/23426)
- [fix: typo in MathML/mfenced](https://github.com/mdn/content/pull/33757)
- [Spelling/grammar fixes](https://github.com/mdn/content/pull/33400)