Intent to Prototype: Mirroring of RTL MathML operators

125 views
Skip to first unread message

Chromestatus

unread,
Jul 8, 2025, 10:12:58 AMJul 8
to blin...@chromium.org, e...@igalia.com

Contact emails

e...@igalia.com, fw...@igalia.com

Explainer

None

Specification

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

Summary

Support for character-level and glyph-level mirroring when rendering MathML operators in right-to-left mode. 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. Some existing implementations mirror the original glyph directly, but this may change the meaning for asymmetrical characters, such as the clockwise contour integral.



Blink component

Blink>MathML

Motivation

Arabic mathematical notations require rendering math operator in right-to-left mode, where operators need to be correctly mirrored. Sometimes, a simple horizontal flip is not enough. In the case of asymmetrical glyphs like a clockwise contour integral doing so would change the meaning of the symbol. That's why both character-level mirroring and glyph-level mirroring is needed to produce a correct mathematical expression in RTL mode. The following explainer shows the different cases to consider when mirroring stretchy characters, as well as the proposed MathML Core spec amendments to support this use case: https://people.igalia.com/fwang/mathml-operator-mirroring-explainer.html



Initial public proposal

None

TAG review

None

TAG review status

Not applicable

Risks



Interoperability and Compatibility

None



Gecko: No signal At the moment doing simple flipping. There is a working implementation of both character-level and glyph-level mirroring.

WebKit: No signal Already has character-level mirroring. rtlm not supported, using flipping as a fallback.

Web developers: No signals

Other signals:

WebView application risks

Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications?

None



Debuggability

None



Is this feature fully tested by web-platform-tests?

Yes

New tests: - Character-level mirroring: checks that when switching text direction the codepoints of the characters change to the corresponding BidiMirrored equivalent (e.g. right to left parentheses) - Glyph-level mirroring: checks that the rtlm font feature is supported and that a specific glyph is used for certain characters when switching text direction.



Flag name on about://flags

None

Finch feature name

None

Non-finch justification

None

Requires code in //chrome?

False

Tracking bug

https://issues.chromium.org/issues/40120782

Estimated milestones

No milestones specified



Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/6317308531965952?gate=5188425870999552

This intent message was generated by Chrome Platform Status.
Reply all
Reply to author
Forward
0 new messages