Intent to ship: Mirroring of RTL MathML operators

49 views
Skip to first unread message

Eri Pazos Pérez

unread,
Oct 14, 2025, 10:14:53 AMOct 14
to dev-pl...@mozilla.org

As of today (2025-10-14), I intend to turn support for mirroring RTL MathML stretchy operators using the rtlm feature on by default. It has been developed behind the mathml.rtl_operator_mirroring.enabled preference.

Summary: When using RTL mode some operators can be mirrored by changing them to another code point (e.g. a right parentheses becomes a left parentheses). This is character-level mirroring, with equivalences defined by Unicode’s Bidi_Mirrored property.

There are operators that have no appropriate mirroring character. Glyph-level mirroring applies in this case, with the rtlm font feature, where another glyph can replace it in a mirrored context. Firefox previous implementation mirrored the original glyph using a reflection on a vertical axis, but this may change the meaning for asymmetrical characters, such as the clockwise contour integral.

Correct mirroring when writing RTL math is important for Arabic mathematical notation.

See the following explainer by Frédéric Wang for an overview of the different cases: https://people.igalia.com/fwang/mathml-operator-mirroring-explainer.html

Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=945183

Bug to turn on by default: https://bugzilla.mozilla.org/show_bug.cgi?id=1994172

Standard: https://w3c.github.io/mathml-core/#layout-of-operators

Standards Body: W3C.

Platform coverage: All platforms.

Preference: mathml.rtl_operator_mirroring.enabled

Other browsers:

  • Blink: shipped in version 140 under the experimental MathMLOperatorRTLMirroringEnabled flag, planning an intent to ship as well.
  • WebKit: work in progress.

web-platform-tests:

Reply all
Reply to author
Forward
0 new messages