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:
MathMLOperatorRTLMirroringEnabled
flag, planning an intent to ship as well.web-platform-tests: