MathML in LayoutNG

BlinkOn 10 - Toronto, Ontario, Canada
April 09 - 10, 2019 n=1+1n2=π26 Frédéric Wang (fwang@igalia.com)
Rob Buis (rbuis@igalia.com)
NISO logo Igalia Logo

Project overview

Igalia's MathML effort

MathML refresh CG

  • New community group: browser implementers, Math WG, scholars, publishers, a11y, authoring...
  • "More standard standardization" : GitHub, Web Platform Tests, specification's content & style, ...
  • MathML Core specification
    • Minimal subset
    • Implementation details
    • Alignment with CSS/HTML5

Project Workflow

Implementation Roadmap

  1. Basic setup (text, row layout, basic style...): DONE
  2. Basic layout (fractions, scripts, table...): DONE
  3. Operator Dictionary: WIP
  4. Stretchy operators: TODO
  5. Advanced style (new CSS properties/values): WIP

Implementation Design

Class Hierarchy

Demos

Basic layout

Mixing with HTML / SVG

  • 2 + 3 4 = 13 4 (<input>)
  • h=ρ h = \sqrt{ρ} 1 1 ρ ρ (<foreignObject>)

Line breaking

1 + 2 + 3 + 4 + 6 + 7 + 8 + 9 + 10 + 11 + 12 blah blah blah 1 + 2 + 3 + 4 + 6 + 7 + 8 + 9 11 + 12 + 13 + 14 + 16 + 17 + 18 + 19

Inline / Display math
Vertical alignment

__baseline__ n=1+1n2=π26 __baseline__

blah blah blah blah blah blah n=1+1n2=π26 blah blah blah blah blah blah

DOM/IDL

  • α + β γ + δ (href, dynamic change)
  • α + β γ + δ (GlobalEventHandlers::onclick, ElementCSSInlineStyle::style)

CSS

direction / writing-mode

blah blah blah blah blah blah

direction: rtl
العَرَبِيَّة‎‎ العَرَبِيَّة‎‎ العَرَبِيَّة‎‎ العَرَبِيَّة‎‎
Arabic mathematical notation

writing-mode: vertical-lr
ᠮᠣᠨᠭᠭᠣᠯ ᠬᠡᠯᠡ ᠮᠣᠨᠭᠭᠣᠯ ᠬᠡᠯᠡ
mozilla #1077525

Advanced tests

¿Questions?