I see - thank you very much for the explanation and test cases! Sounds good
to me. :)


☆*PhistucK*


On Mon, Oct 20, 2025 at 8:15 AM Frédéric Wang <[email protected]> wrote:

> Hi,
> Le 18/10/2025 à 19:51, PhistucK a écrit :
>
> Hmmm how does it know whether to mirror or not to mirror? And what will be
> mirrored?
> Is there an example/demo of failure, success and fix-dependent success
> renderings?
>
> First note that right-to-left layout of MathML formulas as well as text
> mirroring inside MathML formulas is already supported. For example Chromium
> lays out the following formula from right-to-left and mirrors summation,
> "element of" and right/left fences (but not the rest of the text):
>
> <!DOCTYPE html>
> <meta charset="utf-8"/>
> <link rel="stylesheet" href=
> "https://fred-wang.github.io/MathFonts/XITS/mathfonts.css";
> <https://fred-wang.github.io/MathFonts/XITS/mathfonts.css>>
> <math dir="rtl" display="block">
>   <mrow>
>     <munderover>
>       <mo largeop="false">∑</mo>
>       <mrow>
>     <mi>n</mi>
>     <mo>=</mo>
>     <mn>1</mn>
>       </mrow>
>       <mn>∞</mn>
>     </munderover>
>     <mfrac>
>       <mn>1</mn>
>       <msup>
>     <mi>n</mi>
>     <mn>2</mn>
>       </msup>
>     </mfrac>
>   </mrow>
>   <mo>∊</mo>
>   <mrow>
>     <mo stretchy="false">(</mo>
>     <mfrac>
>       <mn>3</mn>
>       <mn>2</mn>
>     </mfrac>
>     <mo>,</mo>
>     <mfrac>
>       <mn>7</mn>
>       <mn>4</mn>
>     </mfrac>
>     <mo stretchy="false">]</mo>
>   </mrow>
> </math>
>
> Attached file rtl-math.html uses largeop="true" and stretchy="true"
> instead: the summation symbol is drawn bigger, the fences are stretched
> vertically but mirroring no longer happens (see attached screenshot
> rtl-math-chrome-canary-experimental-web-platform-features-disabled.png).
> This intent is trying to fix the latter while still preserving the
> largeop/stretchy feature (see
> rtl-math-chrome-canary-experimental-web-platform-features-enabled.png for
> how it should look like). I believe that gives you an example of failure,
> success and fix-dependent success renderings.
>
> As I said, right-to-left layout of formulas is described in the MathML
> Core spec, covered by tests and already implemented in Chromium. Regarding
> mirroring technique of text (character-level and glyph-level mirroring)
> they are described outside MathML Core, and that spec was amended to use
> these techniques for largeop/stretchy operators. You can find demos and
> more details on the explainer:
> https://people.igalia.com/fwang/mathml-operator-mirroring-explainer.html
>
> Does the dir="rtl" attribute have to be specified specifically on <math>,
> or will it inherit the directionality of the ancestor?
> Hebrew, as far as I am aware, uses left-to-right for written math, so
> inheriting regardless of the language would not be correct for Hebrew, I
> think?
>
> You are right regarding Hebrew. Actually even in some Arabic countries
> text is written from right-to-left but mathematical formulas remain in
> left-to-right direction. That's why the default UA sheet for MathML sets
> "direction: ltr" on the <math> element:
> https://w3c.github.io/mathml-core/#user-agent-stylesheet ; so indeed it's
> necessary to use an explicit dir="rtl" (which is mapped to direction: rtl).
>
> Hope that answers your questions,
>
> Frédéric
>
>
> ☆*PhistucK*
>
>
> On Tue, Oct 14, 2025 at 2:53 PM Chromestatus <
> [email protected]> wrote:
>
>> *Contact emails*
>> [email protected], [email protected]
>>
>> *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
>> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EMathML%22>
>>
>> *Web Feature ID*
>> mathml <https://webstatus.dev/features/mathml>
>>
>> *TAG review*
>> None
>>
>> *TAG review status*
>> Not applicable
>>
>> *Risks*
>>
>>
>> *Interoperability and Compatibility*
>> None
>>
>> *Gecko*: Shipped/Shipping (
>> https://bugzilla.mozilla.org/show_bug.cgi?id=945183) Working
>> implementation shipping under the `mathml.rtl_operator_mirroring.enabled`
>> feature. Planning to send an intent to ship.
>>
>> *WebKit*: In development Already has character-level mirroring. rtlm
>> support is being worked on for the harfbuzz ports.
>>
>> *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
>>
>>
>> *Goals for experimentation*
>>
>>
>> *Ongoing technical constraints*
>> None
>>
>> *Debuggability*
>> None
>>
>> *Will this feature be supported on all six Blink platforms (Windows, Mac,
>> Linux, ChromeOS, Android, and Android WebView)?*
>> Yes
>>
>> *Is this feature fully tested by web-platform-tests
>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?*
>> 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*
>> MathMLOperatorRTLMirroring
>>
>> *Requires code in //chrome?*
>> False
>>
>> *Tracking bug*
>> https://issues.chromium.org/issues/40120782
>>
>> *Estimated milestones*
>> DevTrial on desktop 140
>> DevTrial on Android 140
>>
>> *Link to entry on the Chrome Platform Status*
>> https://chromestatus.com/feature/6317308531965952
>>
>> *Links to previous Intent discussions*
>> Intent to Prototype:
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/686d2758.170a0220.a35ba.00d7.GAE%40google.com
>>
>>
>> This intent message was generated by Chrome Platform Status
>> <https://chromestatus.com>.
>> --
>> You received this message because you are subscribed to the Google Groups
>> "blink-dev" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion visit
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/68ee55b8.050a0220.2a8282.0245.GAE%40google.com
>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/68ee55b8.050a0220.2a8282.0245.GAE%40google.com?utm_medium=email&utm_source=footer>
>> .
>>
> --
> You received this message because you are subscribed to the Google Groups
> "blink-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion visit
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CABc02_JdGb5qv3A3JEs0SCbkK7NtJ3F74HN1EeyODbavy9YkcQ%40mail.gmail.com
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CABc02_JdGb5qv3A3JEs0SCbkK7NtJ3F74HN1EeyODbavy9YkcQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
> --
> You received this message because you are subscribed to the Google Groups
> "blink-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion visit
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/fe9dd258-93dc-4104-baca-5cee655f393e%40igalia.com
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/fe9dd258-93dc-4104-baca-5cee655f393e%40igalia.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CABc02_JSNjfQ-pKSNZsJa6JsXw11dbXmxxLhcCvFR%2B3iX9VeOA%40mail.gmail.com.

Reply via email to