Contact emails
fw...@chromium.org, rb...@chromium.org, bkard...@igalia.com
Explainer
https://github.com/mathml-refresh/mathml-core/blob/master/docs/explainer.md
https://people.igalia.com/fwang/explainer-font-family-math
Specification
https://mathml-refresh.github.io/mathml-core
Design docs
https://drafts.csswg.org/css-fonts-4/#valdef-font-family-math
https://w3c.github.io/mathml-aam
https://docs.google.com/document/d/1biGEaWN8ThNTDtAbT1M5GIf6N5uQLWdxh2QhrG9uN5c
https://docs.google.com/document/d/1bvY_Npe2zLW_705KXdmecsH6P9I9wBMpHRsZ9CxWNOI/edit#heading=h.u9hwm9tp8nuy
Summary
Adds native DOM/IDL, accessibility support and CSS-compatible
OpenType-based layout of mathematical formulas. The reference
specifications are MathML Core (which describes in extensive details a
fundamental subset of the MathML 3 recommendation), MathML AAM (which
describes mapping to platform accessibility APIs). This includes the
"math" font-family as well as features included in section "CSS
Extensions for Math Layout".
Blink component
Blink <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink>
Search tags
mathml <https://chromestatus.com/features#tags:mathml>
TAG review
https://github.com/w3ctag/design-reviews/issues/438
https://github.com/w3ctag/design-reviews/issues/313#issuecomment-460523527
TAG review status
Issues addressed
Risks
Interoperability and Compatibility
- This is not implementing the complete list of MathML3, OpenType MATH
or accessibility features that one can find in other browsers.
- New enhancements (e.g. clarification regarding CSS interoperability)
may not be implemented in other browsers yet.
- MathML Core and MathML AAM are still working drafts.
/Gecko/: Shipped/Shipping
/WebKit/: Shipped/Shipping
/Web developers/: Positive
(https://twitter.com/search?q=mathml%20chrome&f=live
<https://twitter.com/search?q=mathml%20chrome&f=live>) Users have
recently been excited about it, experimented exiting implementation
under a flag and are eager to see it shipped soon. It is currently the
5th most starred Blink issue, see
https://bugs.chromium.org/p/chromium/issues/list?can=2&q=component:Blink&sort=-stars&colspec=ID%20Stars%20Pri%20Status%20Component%20Opened%20Summary
<https://bugs.chromium.org/p/chromium/issues/list?can=2&q=component%3ABlink&sort=-stars&colspec=ID+Stars+Pri+Status+Component+Opened+Summary>
/Other signals/:
Ergonomics
In the past, MathML trees were not treated specially at all and this was
fast ! Now, more work is needed for pages that do math rendering e.g.
accessing data from the MATH table, handling operator dictionary, using
ink text bounds, performing low-level shaping of stretchy operators,
loading and applying CSS UA sheet, or exposing an accessibility tree.
However, the only performance report we received so far was issue
#1073760, which was discarded after further analysis. In any case,
performance is definitely better than existing non-native technologies.
Additionally, pages will likely need loading WOFF fonts on operating
systems that don't ship math fonts. Work is in progress here, see
https://frederic-wang.fr/update-on-open-type-math-fonts.html for recent
status.
Activation
- Editing MathML source is difficult but special authoring tools &
converters do exist.
- Implementation may not be as complete as expected by users but the
spec tries to allow extensibility and the Math WG provides polyfills at
https://github.com/mathml-refresh/mathml-polyfills
- Users may require WOFF fonts to properly render formulas (see above).
Security
There is a risk due to the new attack surface:
- Relatively large amount of new code.
- Newly exposed APIs.
- Interacting with several parts of the web platform.
However, risks related to violation of layout algorithm are reduced now
that the specification clarifies how to perform it in a CSS-compatible
way. We've fixed 17 issues reported during 2.5 years of development and
there are currently 0 open security issues (last report was in March).
Finally, similar security & privacy considerations as existing layout
specifications apply, see the relevant sections from the MathML Core
spec: https://w3c.github.io/mathml-core/#security-considerations
https://w3c.github.io/mathml-core/#privacy-considerations
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?
No.
Debuggability
- Nothing particular expected besides what is already provided for SVG
and HTML.
- Existing devtools API was extended to handle "font-family: math", see
https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-setFontFamilies
Will this feature be supported on all six Blink platforms
(Windows, Mac, Linux, Chrome OS, 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
Flag name
MathMLCore
Requires code in //chrome?
True (this is only to implement support for “font-family: math”, which
has a user preference menu for math font, see
https://docs.google.com/document/d/1bvY_Npe2zLW_705KXdmecsH6P9I9wBMpHRsZ9CxWNOI/edit#heading=h.u9hwm9tp8nuy).
Tracking bug
http://crbug.com/6606
Sample links
https://people.igalia.com/fwang/2022-06-igalia-week-shipping-mathml-in-chromium/#/12
https://fred-wang.github.io/MathFonts
Estimated milestones
DevTrial on desktop 103
DevTrial on Android 103
Anticipated spec changes
Open questions about a feature may be a source of future web compat or
interop issues. Please list open issues (e.g. links to known github
issues in the project for the feature specification) whose resolution
may introduce web compat/interop risk (e.g., changing to naming or
structure of the API in a non-backward-compatible way).
https://github.com/w3c/csswg-drafts/issues/5866
https://github.com/w3c/mathml-core/issues/74
https://github.com/w3c/mathml-core/issues/75
https://github.com/w3c/mathml-core/issues/76
https://github.com/w3c/mathml-core/issues/77
Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5240822173794304
Links to previous Intent discussions
Intent to prototype:
https://groups.google.com/a/chromium.org/g/blink-dev/c/OOZIrtSPLeM
This intent message was generated by Chrome Platform Status
<https://chromestatus.com>.
--
Frédéric Wang
--
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 blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6234d4e1-208b-d3d1-10b3-dddb164c010f%40igalia.com.