# Planet MathML

The Planet MathML aggregates posts from various blogs that concern MathML. Although it is hosted by W3C, the content of the individual entries represent only the opinion of their respective authors and does not reflect the position of W3C.

## [MathOnWeb] Reminder: Meeting today

Source: public-mathonwebpages@w3.org Mail Archives • Peter Krautzberger (peter@krautzource.com) • October 12, 2017 • Permalink

Hi everyone,

A uick reminder that we are scheduled to meet today, Oct 12, 12pm Eastern
time on appear.in.

We'll focus on polyfill ideas for layout (e.g., Dani's vertical align,
MathJax v3's new approach to stretchy) .

Best,
Peter.


## Vertical align polyfil

Source: public-mathonwebpages@w3.org Mail Archives • Daniel Marques (dani@wiris.com) • October 12, 2017 • Permalink

HI,

Just uploaded the vertical-align polyfill to codepen.io
https://codepen.io/daniwiris/pen/rGKENd/

Tomorrow (or today depending on the time zone) during the meeting I would
appreciate any feedback!

Dani

--

------------------------------
WIRIS and Design Science, makers of MathType, have joined forces!
Thank you for your patience as we transition from dessci.com to wiris.com.


## Setting and Getting Math Speech, Braille, UnicodeMath, LaTeX…

Source: Murray Sargent: Math in Office • MurrayS3 • September 28, 2017 • Permalink

This post augments the post Inserting and Getting Math Text in RichEdit by documenting the RichEdit options for ITextRange2::SetText2(options, bstr) and ITextRange2::GetText2(options, pbstr) including those for math speech and math braille. As such, this post is for programmers. But more generally, it reveals that RichEdit supports Nemeth math braille (!). All options work in the current Microsoft Office RichEdit (riched20.dll in an Office subdirectory); the Windows RichEdit (msftedit.dll) hasn’t exposed math functionality yet. The options are defined in the following table in which s/g stands for SetText2/GetText2. For convenience, non-math-specific flags are also included

 Option Value s/g Meaning tomUnicodeBiDi 0x00000001 s Use Unicode BiDi algorithm for inserted text tomAdjustCRLF 0x00000001 g If range start is inside multicode unit like CRLF, surrogate pair, etc., move to start of unit tomUseCRLF 0x00000002 g Paragraph ends use CRLF (U+000D U+000A) tomTextize 0x00000004 g Embedded objects export alt text; else U+FFFC tomAllowFinalEOP 0x00000008 g If range includes final EOP, export it; else don’t tomUnlink 0x00000008 s Disables link attributes if present tomUnhide 0x00000010 s Disables hidden attribute if present tomFoldMathAlpha 0x00000010 g Replace math alphanumerics with ASCII/Greek tomIncludeNumbering 0x00000040 g Lists include bullets/numbering tomCheckTextLimit 0x00000020 s Only insert up to text limit tomDontSelectText 0x00000040 s After insertion, call Collapse(tomEnd) tomTranslateTableCell 0x00000080 g Export spaces for table delimiters tomNoMathZoneBrackets 0x00000100 g Used with tomConvertUnicodeMath and tomConvertTeX. Set discards math zone brackets tomLanguageTag 0x00001000 s/gg Sets BCP-47 language tag for range; gets tag tomConvertRTF 0x00002000 s/g Set or get RTF tomGetTextForSpell 0x00008000 g Export spaces for hidden/math text, table delims tomConvertMathML 0x00010000 s/g Set or get MathML tomGetUtf16 0x00020000 g Causes tomConvertRTF, etc. to get UTF-16. SetText2 accepts 8-bit or 16-bit RTF tomConvertLinearFormat 0x00040000 s/g Alias for tomConvertUnicodeMath tomConvertUnicodeMath 0x00040000 s/g UnicodeMath tomConvertOMML 0x00080000 s/g Office MathML tomConvertMask 0x00F00000 s/g Mask for mutually exclusive modes tomConvertRuby 0x00100000 s See Inserting and Getting Math Text… tomConvertTeX 0x00200000 s/g See LaTeX Math in Office tomConvertMathSpeech 0x00300000 g Math speech (English only here) tomConvertSpeechTokens 0x00400000 g Simple Unicode and speech tokens tomConvertNemeth 0x00500000 s/g Nemeth math braille in U+2800 block tomConvertNemethAscii 0x00600000 g Corresponding ASCII braille tomConvertNemethNoItalic 0x00700000 g Nemeth braille in U+2800 block w/o math italic tomConvertNemethDefinition 0x00800000 g Fine-grained speech in braille tomConvertCRtoLF 0x01000000 g Plain-text paragraphs end with LF, not CRLF tomLaTeXDelim 0x02000000 g Use LaTeX math-zone delimiters $$...$$ inline, $...$ display; else $...$, $$...$$. Set handles all

## Mutually exclusive options

Nonzero values within the mask defined by tomConvertMask (0x00F00000) are mutually exclusive, that is, they cannot be combined (OR’d) with one another. These options include setting text as UnicodeMath, [La]TeX (tomConvertTeX), and Nemeth math braille (tomConvertNemeth). You can set only one at a time. But other options can be OR’d in if desired.

## Nemeth math braille options

A string bstr of Nemeth math braille coded in the Unicode range U+2800..U+283F can be inserted and built up by calling ITextRange2::SetText2(tomConvertNemeth, bstr). If the string is valid, you can get it back in any of the math formats including Nemeth math braille. For example, if you insert the string

⠹⠂⠌⠆⠨⠏⠼⠮⠰⠴⠘⠆⠨⠏⠐⠹⠨⠈⠈⠙⠨⠹⠌⠁⠬⠃⠀⠎⠊⠝⠀⠨⠹⠼⠀⠨⠅⠀⠹⠂⠌⠜⠁⠘⠆⠐⠤⠃⠘⠆⠐⠻⠼

you see

You can also input braille with a standard keyboard by typing a control word \braille assigned to the Unicode character U+24B7 (Ⓑ). (See LaTeX Math in Office for how to add commands to math autocorrect). The \braille command causes math input to accept braille input via a regular keyboard using the braille ASCII codes sometimes referred to as North American Braille Computer Codes. The character ~ (U+007E) disables this input mode. These braille codes are described in the post Nemeth Braille—the first math linear format and can be input using refreshable braille displays. Alternatively, such input can be automated by calling ITextSelection::TypeText(bstr). Just as in entering UnicodeMath, the equations build up on screen as soon as the math braille input becomes unambiguous. The implementation includes the math braille UI that cues the user where the insertion point is for unambiguous editing of math zones using braille. Note that as of this posting, the math braille facility isn’t hooked up to Narrator or other screen readers.

## Getting (and Setting?) Math Speech

The tomConvertMathSpeech currently only gets math speech in English. Microsoft Office apps like Word, PowerPoint and OneNote deliver math speech in over 18 languages to the assistive technology (AT) program Narrator via the UIA ITextRangeProvider::GetText() function. Other ATs could also get math speech this way. Dictating (setting) math speech would be nice for both blind and sighted folks. Imagine, you can say a² + b² = c² faster than you can type it or write it! The SetText2(tomConvertMathSpeech, bstr) is ready to handle such input, but it’s not implemented yet anyhow.

## [MathOnWeb] skip meeting Sept 28 / next meeting Oct 12

Source: public-mathonwebpages@w3.org Mail Archives • Peter Krautzberger (peter@krautzource.com) • September 28, 2017 • Permalink

Hi MathOnWebCG,

The next meeting will be on Oct 12.

I suspect "recent news" will be a sufficient topic for the next meeting but
please suggest another one if you prefer.

Best wishes,
Peter.


## [mathonweb] Reminder: Meeting today

Source: public-mathonwebpages@w3.org Mail Archives • Peter Krautzberger (peter@krautzource.com) • September 14, 2017 • Permalink

Hi everyone,

We are scheduled to meet today, Sept 14, 12pm Eastern time.

Best,
Peter.


## Introduction

For many years Igalia has been committed to and dedicated efforts to the improvement of Web Platform in all open-source Web Engines (Chromium, WebKit, Servo, Gecko) and JavaScript implementations (V8, SpiderMonkey, ChakraCore, JSC). We have been working in the implementation and standardization of some important technologies (CSS Grid/Flexbox, ECMAScript, WebRTC, WebVR, ARIA, MathML, etc). This blog post contains a review of these activities performed during the first half (and a bit more) of 2017.

## Projects

### CSS

A few years ago Bloomberg and Igalia started a collaboration to implement a new layout model for the Web Platform. Bloomberg had complex layout requirements and what the Web provided was not enough and caused performance issues. CSS Grid Layout seemed to be the right choice, a feature that would provide such complex designs with more flexibility than the currently available methods.

We’ve been implementing CSS Grid Layout in Blink and WebKit, initially behind some flags as an experimental feature. This year, after some coordination effort to ensure interoperability (talking to the different parties involved like browser vendors, the CSS Working Group and the web authors community), it has been shipped by default in Chrome 58 and Safari 10.1. This is a huge step for the layout on the web, and modern websites will benefit from this new model and enjoy all the features provided by CSS Grid Layout spec.

Since the CSS Grid Layout shared the same alignment properties as the CSS Flexible Box feature, a new spec has been defined to generalize alignment for all the layout models. We started implementing this new spec as part of our work on Grid, being Grid the first layout model supporting it.

Finally, we worked on other minor CSS features in Blink such as caret-color or :focus-within and also several interoperability issues related to Editing and Selection.

### MathML

MathML is a W3C recommendation to represent mathematical formulae that has been included in many other standards such as ISO/IEC, HTML5, ebook and office formats. There are many tools available to handle it, including various assistive technologies as well as generators from the popular LaTeX typesetting system.

After the improvements we performed in WebKit’s MathML implementation, we have regularly been in contact with Google to see how we can implement MathML in Chromium. Early this year, we had several meetings with Google’s layout team to discuss this in further details. We agreed that MathML is an important feature to consider for users and that the right approach would be to rely on the new LayoutNG model currently being implemented. We created a prototype for a small LayoutNG-based MathML implementation as a proof-of-concept and as a basis for future technical discussions. We are going to follow-up on this after the end of Q3, once Chromium’s layout team has made more progress on LayoutNG.

### Servo

Servo is Mozilla’s next-generation web content engine based on Rust, a language that guarantees memory safety. Servo relies on a Rust project called WebRender which replaces the typical rasterizer and compositor duo in the web browser stack. WebRender makes extensive use of GPU batching to achieve very exciting performance improvements in common web pages. Mozilla has decided to make WebRender part of the Quantum Render project.

We’ve had the opportunity to collaborate with Mozilla for a few years now, focusing on the graphics stack. Our work has focused on bringing full support for CSS stacking and clipping to WebRender, so that it will be available in both Servo and Gecko. This has involved creating a data structure similar to what WebKit calls the “scroll tree” in WebRender. The scroll tree divides the scene into independently scrolled elements, clipped elements, and various transformation spaces defined by CSS transforms. The tree allows WebRender to handle page interaction independently of page layout, allowing maximum performance and responsiveness.

### WebRTC

WebRTC is a collection of communications protocols and APIs that enable real-time communication over peer-to-peer connections. Typical use cases include video conferencing, file transfer, chat, or desktop sharing. Igalia has been working on the WebRTC implementation in WebKit and this development is currently sponsored by Metrological.

This year we have continued the implementation effort in WebKit for the WebKitGTK and WebKit WPE ports, as well as the maintenance of two test servers for WebRTC: Ericsson’s p2p and Google’s apprtc. Finally, a lot of progress has been done to add support for Jitsi using the existing OpenWebRTC backend.

Since OpenWebRTC development is not an active project anymore and given libwebrtc is gaining traction in both Blink and the WebRTC implementation of WebKit for Apple software, we are taking the first steps to replace the original WebRTC implementation in WebKitGTK based on OpenWebRTC, with a new one based on libwebrtc. Hopefully, this way we will share more code between platforms and get more robust support of WebRTC for the end users. GStreamer integration in this new implementation is an issue we will have to study, as it’s not built in libwebrtc. libwebrtc offers many services, but not every WebRTC implementation uses all of them. This seems to be the case for the Apple WebRTC implementation, and it may become our case too if we need tighter integration with GStreamer or hardware decoding.

### WebVR

WebVR is an API that provides support for virtual reality devices in Web engines. Implementation and devices are currently actively developed by browser vendors and it looks like it is going to be a huge thing. Igalia has started to investigate on that topic to see how we can join that effort. This year, we have been in discussions with Mozilla, Google and Apple to see how we could help in the implementation of WebVR on Linux. We decided to start experimenting an implementation within WebKitGTK. We announced our intention on the webkit-dev mailing list and got encouraging feedback from Apple and the WebKit community.

### ARIA

ARIA defines a way to make Web content and Web applications more accessible to people with disabilities. Igalia strengthened its ongoing committment to the W3C: Joanmarie Diggs joined Richard Schwerdtfeger as a co-Chair of the W3C’s ARIA working group, and became editor of the Core Accessibility API Mappings, [Digital Publishing Accessibility API Mappings] (https://w3c.github.io/aria/dpub-aam/dpub-aam.html), and Accessible Name and Description: Computation and API Mappings specifications. Her main focus over the past six months has been to get ARIA 1.1 transitioned to Proposed Recommendation through a combination of implementation and bugfixing in WebKit and Gecko, creation of automated testing tools to verify platform accessibility API exposure in GNU/Linux and macOS, and working with fellow Working Group members to ensure the platform mappings stated in the various “AAM” specs are complete and accurate. We will provide more information about these activities after ARIA 1.1 and the related AAM specs are further along on their respective REC tracks.

### Web Platform Predictability for WebKit

The AMP Project has recently sponsored Igalia to improve WebKit’s implementation of the Web platform. We have worked on many issues, the main ones being:

• Frame sandboxing: Implementing sandbox values to allow trusted third-party resources to open unsandboxed popups or restrict unsafe operations of malicious ones.
• Frame scrolling on iOS: Addressing issues with scrollable nodes; trying to move to a more standard and interoperable approach with scrollable iframes.
• Root scroller: Finding a solution to the old interoperability issue about how to scroll the main frame; considering a new rootScroller API.

This project aligns with Web Platform Predictability which aims at making the Web more predictable for developers by improving interoperability, ensuring version compatibility and reducing footguns. It has been a good opportunity to collaborate with Google and Apple on improving the Web. You can find further details in this blog post.

### JavaScript

Igalia has been involved in design, standardization and implementation of several JavaScript features in collaboration with Bloomberg and Mozilla.

In implementation, Bloomberg has been sponsoring implementation of modern JavaScript features in V8, SpiderMonkey, JSC and ChakraCore, in collaboration with the open source community:

• Implementation of many ES6 features in V8, such as generators, destructuring binding and arrow functions
• Async/await and async iterators and generators in V8 and some work in JSC
• Optimizing SpiderMonkey generators
• Ongoing implementation of BigInt in SpiderMonkey and class field declarations in JSC

On the design/standardization side, Igalia is active in TC39 and with Bloomberg’s support

In partnership with Mozilla, Igalia has been involved in the specification of various JavaScript standard library features for internationalization, in specification, implementation in V8, code reviews in other JavaScript engines, as well as working with the underlying ICU library.

## Other activities

### Preparation of Web Engines Hackfest 2017

Igalia has been organizing and hosting the Web Engines Hackfest since 2009. This event under an unconference format has been a great opportunity for Web Engines developers to meet, discuss and work together on the web platform and on web engines in general. We announced the 2017 edition and many developers already confirmed their attendance. We would like to thank our sponsors for supporting this event and we are looking forward to seeing you in October!

### Coding Experience

Emilio Cobos has completed his coding experience program on implementation of web standards. He has been working in the implementation of “display: contents” in Blink but some work is pending due to unresolved CSS WG issues. He also started the corresponding work in WebKit but implementation is still very partial. It has been a pleasure to mentor a skilled hacker like Emilio and we wish him the best for his future projects!

### New Igalians

During this semester we have been glad to welcome new igalians who will help us to pursue Web platform developments:

• Daniel Ehrenberg joined Igalia in January. He is an active contributor to the V8 JavaScript engine and has been representing Igalia at the ECMAScript TC39 meetings.
• Alicia Boya joined Igalia in March. She has experience in many areas of computing, including web development, computer graphics, networks, security, and software design with performance which we believe will be valuable for our Web platform activities.
• Ms2ger joined Igalia in July. He is a well-known hacker of the Mozilla community and has wide experience in both Gecko and Servo. He has noticeably worked in DOM implementation and web platform test automation.

# Conclusion

Igalia has been involved in a wide range of Web Platform technologies going from Javascript and layout engines to accessibility or multimedia features. Efforts have been made in all parts of the process:

• Participation to standardization bodies (W3C, TC39).
• Elaboration of conformance tests (web-platform-tests test262).
• Implementation and bug fixes in all open source web engines.
• Discussion with users, browser vendors and other companies.

Although, some of this work has been sponsored by Google or Mozilla, it is important to highlight how external companies (other than browser vendors) can make good contributions to the Web Platform, playing an important role on its evolution. Alan Stearns already pointed out the responsibility of the Web Plaform users on the evolution of CSS while Rachel Andrew emphasized how any company or web author can effectively contribute to the W3C in many ways.

As mentioned in this blog post, Bloomberg is an important contributor of several open source projects and they’ve been a key player in the development of CSS Grid Layout or Javascript. Similarly, Metrological’s support has been instrumental for the implementation of WebRTC in WebKit. We believe others could follow their examples and we are looking forward to seeing more companies sponsoring Web Platform developments!

## [math-on-web] CG meeting minutes, 2017/08/31

Source: public-mathonwebpages@w3.org Mail Archives • Peter Krautzberger (peter@krautzource.com) • September 01, 2017 • Permalink

Hi everyone,

Below are the minutes from the last CG meeting.

The next meeting will be on Sep14. We'll continue the discussion around CSS
polyfills.

Best,
Peter.

# [math on web CG] minutes 2017-08-31

* Dani, Neil, Peter, Volker
* Dani: new stretchy polyfill at
https://w3c.github.io/mathonwebpages/examples/display/stretchy1.html
* splits up vertical vs horizontal
* also probably need to separate serif vs sans-serif, so we should have a
custom attribute for that
* Neil: not sure how serifs would show up in stretchy chars
* Dani: horizontal lines can be thinner, vertical more bold
* publishers will want distinction.
*  ideally, match fonts in terms of thickness
* Peter: do you want to go thorough the polyfill?
* Dani: prefer for people to take a closer look first
* Dani: I'm thinking we should create a collection of such polyfills
* Dani: it would be good to have something like a Unicode point for
"fraction line"
* [discussion about exposing fraction lines to AT]
* Peter: in MathJax v3, stretchy will be done purely in CSS, no JS
required, just growing with the box
* JS still necessary for choosing between the available sizes in a font
vs the truly stretchy constructoin
* CSS element queries could help solve that.
* Neil: can you share?
* [screenshare]
* Peter: ACTION yes, will have a public sample by next meeting
* Peter: of course all approaches have drawbacks
* [discussion about CSS approaches to stretchy]
* Peter: variable fonts could solve a lot of issues
* and even more so things like https://spectral.prototypo.io/
* Peter: Dani can you post to the CSS tracker on vertical-align?
* Dani: ACTION yes but want to publish polyfill first
* Dani: it would be good to get feedback for stretchy and fraction
construction


## RE: [math-on-web] CG meeting minutes, 2017/08/17

Source: public-mathonwebpages@w3.org Mail Archives • Daniel Marques (dani@wiris.com) • August 31, 2017 • Permalink

Hi Everybody,

I updated a new proof-of-concept “polyfil” with stretchy square brackets

https://w3c.github.io/mathonwebpages/examples/display/stretchy1.html

Planning to put all the examples at https://codepen.io

See you in a few minutes!

Dani

*From:* Peter Krautzberger [mailto:peter@krautzource.com]
*Sent:* lunes, 28 de agosto de 2017 10:41
*To:* mathonweb
*Subject:* [math-on-web] CG meeting minutes, 2017/08/17

Hi everyone,

Sorry for the very long delay in posting this.

Below are the minutes from the last CG meeting.

The next meeting will be on August 31 and we'll be focusing (and deciding)
on a TPAC meeting.

Best,

Peter.

# [math on web CG] minutes 2017-08-17

* first approach done

* https://w3c.github.io/mathonwebpages/examples/display/fraction1.html

* Peter: only concern about polyfilling is that I can't see a JS math
rendering engine using this polyfill because of its complexity

* Peter: do you want to post this to the CSSWG thread?

* Daniel: let me clean it up first

* TPAC

* Peter: not many people at TPAC, those who are seem very busy

* Tzviya: if focus is on CSSWG, maybe meet them outside TPAC

* Daniel: call sounds a good idea

* Daniel: if we publish the polyfill and get some feedback, that's great

* if I manage to get to TPAC and can talk to folks in person, that
would be worth it

* ACTION Daniel will try to organize something with CSSWG

* ACTION: Peter to write intro email to Alan

* once we know more, we will update group

* otherwise just spontaneous meeting

* Tzviya: get Alan or Rawson today and announce as soon as possible.

* [DONE]

* Tzivya: where is the group at accessible math

* getting lots more request

* accessibility object model

* now in Chrome

* Peter: AOM is very interesting

* Peter: but generally it seems the web platform is sufficient, cf.
speech-rule-engine, Desmos's accessible editing interface etc

* personally I'd recommend simply using alt-text generated by
speech-rule-engine to annotate HTML or SVG equation rendering -- anyone can
do this.

* advanced: adding aria labels on MathML and expose them in HTML or SVG
rendering to fix a11y tree

* but that's obviously expensive right now though MathJax is doing
research to automate that.


## TL;DR

The AMP Project and Igalia have recently been collaborating to improve WebKit’s implementation of the Web platform. Both teams are committed to make the Web better and we expect that all developers and users will benefit from this effort. In this blog post, we review some of the bug fixes and features currently being considered:

• Frame sandboxing: Implementing sandbox values to allow trusted third-party resources to open unsandboxed popups or restrict unsafe operations of malicious ones.

• Frame scrolling on iOS: Trying to move to a more standard and interoperable approach via iframe elements; addressing miscellaneous issues with scrollable nodes (e.g. visual artifacts while scrolling, view not scrolled when using “Find Text”…).

• Root scroller: Finding a solution to the old interoperability issue about how to scroll the main frame; considering a new rootScroller API.

Some demo pages for frame sandboxing and scrolling are also available if you wish to test features discussed in this blog post.

## Introduction

AMP is an open-source project to enable websites and ads that are consistently fast, beautiful and high-performing across devices and distribution platforms. Several interoperability bugs and missing features in WebKit have caused problems to AMP users and to Web developers in general. Although it is possible to add platform-specific workarounds to AMP, the best way to help the Web Platform community is to directly fix these issues in WebKit, so that everybody can benefit from these improvements.

Igalia is a consulting company with a team dedicated to Web Platform developments in all open-source Web Engines (Chromium, WebKit, Servo, Gecko) working in the implementation and standardization of miscellaneous technologies (CSS Grid/flexbox, ECMAScript, WebRTC, WebVR, ARIA, MathML, etc). Given this expertise, the AMP Project sponsored Igalia so that they can lead these developments in WebKit. It is worth noting that this project aligns with the Web Predictability effort supported by both Google and Igalia, which aims at making the Web more predictable for developers. In particular, the following aspects are considered:

• Interoperability: Effort is made to write Web Platform Tests (WPT), to follow Web standards and ensure consistent behaviors between web engines or operating systems.
• Compatibility: Changes are carefully analyzed using telemetry techniques or user feedback in order to avoid breaking compatibility with previous versions of WebKit.
• Reducing footguns: Removals of non-standard features (e.g. CSS vendor prefixes) are attempted while new features are carefully introduced.

Below we provide further description of the WebKit improvements, showing concretely how the above principles are followed.

## Frame sandboxing

A sandbox attribute can be specified on the iframe element in order to enable a set of restrictions on any content it hosts. These conditions can be relaxed by specifying a list of values such as allow-scripts (to allow javascript execution in the frame) or allow-popups (to allow the frame to open popups). By default, the same restrictions apply to a popup opened by a sandboxed frame.

Figure 1: Example of sandboxed frames (Can they navigate their top frame or open popups? Are such popups also sandboxed?)

However, sometimes this behavior is not wanted. Consider for example the case of an advertisement inside a sandboxed frame. If a popup is opened from this frame then it is likely that a non-sandboxed context is desired on the landing page. In order to handle this use case, a new allow-popups-to-escape-sandbox value has been introduced. The value is now supported in Safari Technology Preview 34.

While performing that work, it was noticed that some WPT tests for the sandbox attribute were still failing. It turns out that WebKit does not really follow the rules to allow navigation. More specifically, navigating a top context is never allowed when such context corresponds to an opened popup. We have made some changes to WebKit so that it behaves more closely to the specification. This is integrated into Safari Technology Preview 35 and you can for example try this W3C test. Note that this test requires to change preferences to allow popups.

It is worth noting that web engines may slightly depart from the specification regarding the previously mentioned rules. In particular, WebKit checks a same-origin condition to be sure that one frame is allowed to navigate another one. WebKit always has contained a special case to ignore this condition when a sandboxed frame with the allow-top-navigation flag tries and navigate its top frame. This feature, sometimes known as “frame busting,” has been used by third-party resources to perform malicious auto-redirecting. As a consequence, Chromium developers proposed to restrict frame busting to the case where the navigation is triggered by a user gesture.

According to Chromium’s telemetry frame busting without a user gesture is very rare. But when experimenting with the behavior change of allow-top-navigation several regressions were reported. Hence it was instead decided to introduce the allow-top-navigation-by-user-activation flag in order to provide this improved safety context while still preserving backward compatibility. We implemented this feature in WebKit and it is now available in Safari Technology Preview 37.

Finally, another proposed security improvement is to use an allow-modals flag to explicitly allow sandboxed frames to display modal dialogs (with alert, prompt, etc). That is, the default behavior for sandboxed frames will be to forbid such modal dialogs. Again, such a change of behavior must be done with care. Experiments in Chromium showed that the usage of modal dialogs in sandboxed frames is very low and no users complained. Hence we implemented that behavior in WebKit and the feature should arrive in Safari Technology Preview soon.

Check out the frame sandboxing demos if if you want to test the new allow-popup-to-escape-sandbox, allow-top-navigation-without-user-activation and allow-modals flags.

## Frame scrolling on iOS

Apple’s UI choice was to (almost) always “flatten” (expand) frames so that users do not require to scroll them. The rationale for this is that it avoids to be trapped into hierarchy of nested frames. Changing that behavior is likely to cause a big backward compatibility issue on iOS so for now we proposed a less radical solution: Add a heuristic to support the case of “fullscreen” iframes used by the AMP Project. Note that such exceptions already exist in WebKit, e.g. to avoid making offscreen content visible.

We thus added the following heuristic into WebKit Nightly: do not flatten out-of-flow iframes (e.g. position: absolute) that have viewport units (e.g. vw and vh). This includes the case of the “fullscreen” iframe previously mentioned. For now it is still under a developer flag so that WebKit developers can control when they want to enable it. Of course, if this is successful we might consider more advanced heuristics.

The fact that frames are never scrollable in iOS is an obvious interoperability issue. As a workaround, it is possible to emulate such “scrollable nodes” behavior using overflow: scroll nodes with the -webkit-overflow-scrolling: touch property set. This is not really ideal for our Web Predictability goal as we would like to get rid of browser vendor prefixes. Also, in practice such workarounds lead to even more problems in AMP as explained in these blog posts. That’s why implementing scrolling of frames is one of the main goals of this project and significant steps have already been made in that direction.

Figure 2: C++ classes involved in frame scrolling

The (relatively complex) class hierarchy involved in frame scrolling is summarized in Figure 2. The frame flattening heuristic mentioned above is handled in the WebCore::RenderIFrame class (in purple). The WebCore::ScrollingTreeFrameScrollingNodeIOS and WebCore::ScrollingTreeOverflowScrollingNodeIOS classes from the scrolling tree (in blue) are used to scroll, respectively, the main frame and overflow nodes on iOS. Scrolling of non-main frames will obviously have some code to share with the former, but it will also have some parts in common with the latter. For example, passing an extra UIScrollView layer is needed instead of relying on the one contained in the WKWebView of the main frame. An important step is thus to introduce a special class for scrolling inner frames that would share some logic from the two other classes and some refactoring to ensure optimal code reuse. Similar refactoring has been done for scrolling node states (in red) to move the scrolling layer parameter into WebCore::ScrollingStateNode instead of having separate members for WebCore::ScrollingStateOverflowScrollingNode and WebCore::ScrollingStateFrameScrollingNode.

The scrolling coordinator classes (in green) are also important, for example to handle hit testing. At the moment, this is not really implemented for overflow nodes but it might be important to have it for scrollable frames. Again, one sees that some logic is shared for asynchronous scrolling on macOS (WebCore::ScrollingCoordinatorMac) and iOS (WebCore::ScrollingCoordinatorIOS) in ancestor classes. Indeed, our effort to make frames scrollable on iOS is also opening the possibility of asynchronous scrolling of frames on macOS, something that is currently not implemented.

Figure 4: Video of this demo page on WebKit iOS with experimental patches to make frame scrollables (2017/07/10)

Finally, some more work is necessary in the render classes (purple) to ensure that the layer hierarchies are correctly built. Patches have been uploaded and you can view the result on the video of Figure 4. Notice that this work has not been reviewed yet and there are known bugs, for example with overlapping elements (hit testing not implemented) or position: fixed elements.

Various other scrolling bugs were reported, analyzed and sometimes fixed by Apple. The switch from overflow nodes to scrollable iframes is unlikely to address them. For example, the “Find Text” operation in iOS has advanced features done by the UI process (highlight, smart magnification) but the scrolling operation needed only works for the main frame. It looks like this could be fixed by unifying a bit the scrolling code path with macOS. There are also several jump and flickering bugs with position: fixed nodes. Finally, Apple fixed inconsistent scrolling inertia used for the main frame and the one used for inner scrollable nodes by making the former the same as the latter.

## Root Scroller

The CSSOM View specification extends the DOM element with some scrolling properties. That specification indicates that the element to consider to scroll the main view is document.body in quirks mode while it is document.documentElement in no-quirks mode. This is the behavior that has always been followed by browsers like Firefox or Interner Explorer. However, WebKit-based browsers always treat document.body as the root scroller. This interoperability issue has been a big problem for web developers. One convenient workaround was to introduce the document.scrollingElement which returns the element to use for scrolling the main view (document.body or document.documentElement) and was recently implemented in WebKit. Use this test page to verify whether your browser supports the document.scrollingElement property and which DOM element is used to scroll the main view in no-quirks mode.

Nevertheless, this does not solve the issue with existing web pages. Chromium’s Web Platform Predictability team has made a huge communication effort with Web authors and developers which has drastically reduced the use of document.body in no-quirks mode. For instance, Chromium’s telemetry on Figure 3 indicates that the percentage of document.body.scrollTop in no-quirks pages has gone from 18% down to 0.0003% during the past three years. Hence the Chromium team is now considering shipping the standard behavior.

Figure 3: Use of document.body.scrollTop in no-quirks mode over time (Chromium's UseCounter)

In WebKit, the issue has been known for a long time and an old attempt to fix it was reverted for causing regressions. For now, we imported the CSSOM View tests and just marked the one related to the scrolling element as failing. An analysis of the situation has been left on WebKit’s bug; Depending on how things evolve on Chromium’s side we could consider the discussion and implementation work in WebKit.

Related to that work, a new API is being proposed to set the root scroller to an arbitrary scrolling element, giving more flexibility to authors of Web applications. Today, this is unfortunately not possible without losing some of the special features of the main view (e.g. on iOS, Safari’s URL bar is hidden when scrolling the main view to maximize the screen space). Such API is currently being experimented in Chromium and we plan to investigate whether this can be implemented in WebKit too.

## Conclusion

In the past months, The AMP Project and Igalia have worked on analyzing some interoperability issue and fixing them in WebKit. Many improvements for frame sandboxing are going to be available soon. Significant progress has also been made for frame scrolling on iOS and collaboration continues with Apple reviewers to ensure that the work will be integrated in future versions of WebKit. Improvements to “root scrolling” are also being considered although they are pending on the evolution of the issues on Chromium’s side. All these efforts are expected to be useful for WebKit users and the Web platform in general.

Last but not least, I would like to thank Apple engineers Simon Fraser, Chris Dumez, and Youenn Fablet for their reviews and help, as well as Google and the AMP team for supporting that project.

## [math-on-web] CG meeting minutes, 2017/08/17

Source: public-mathonwebpages@w3.org Mail Archives • Peter Krautzberger (peter@krautzource.com) • August 28, 2017 • Permalink

Hi everyone,

Sorry for the very long delay in posting this.

Below are the minutes from the last CG meeting.

The next meeting will be on August 31 and we'll be focusing (and deciding)
on a TPAC meeting.

Best,
Peter.

# [math on web CG] minutes 2017-08-17

* first approach done
* https://w3c.github.io/mathonwebpages/examples/display/fraction1.html
* Peter: only concern about polyfilling is that I can't see a JS math
rendering engine using this polyfill because of its complexity
* Peter: do you want to post this to the CSSWG thread?
* Daniel: let me clean it up first
* TPAC
* Peter: not many people at TPAC, those who are seem very busy
* Tzviya: if focus is on CSSWG, maybe meet them outside TPAC
* Daniel: call sounds a good idea
* Daniel: if we publish the polyfill and get some feedback, that's great
* if I manage to get to TPAC and can talk to folks in person, that
would be worth it
* ACTION Daniel will try to organize something with CSSWG
* ACTION: Peter to write intro email to Alan
* once we know more, we will update group
* otherwise just spontaneous meeting
* Tzviya: get Alan or Rawson today and announce as soon as possible.
* [DONE]
* Tzivya: where is the group at accessible math
* getting lots more request
* accessibility object model
* now in Chrome
* Peter: AOM is very interesting
* Peter: but generally it seems the web platform is sufficient, cf.
speech-rule-engine, Desmos's accessible editing interface etc
* personally I'd recommend simply using alt-text generated by
speech-rule-engine to annotate HTML or SVG equation rendering -- anyone can
do this.
* advanced: adding aria labels on MathML and expose them in HTML or SVG
rendering to fix a11y tree
* but that's obviously expensive right now though MathJax is doing
research to automate that.


## MathJax v2.7.2 now available

Source: MathJax • August 28, 2017 • Permalink

After a very smooth beta run, we’re happy to officially release MathJax v2.7.2.

This release includes a workaround for a regression in Safari when using combining characters as well as an important update to the MathJax Accessibility Extensions and the underlying speech-rule-engine, greatly improving performance and quality.

For details on all bug fixes, please see below.

This release should be available on all CDN providers, e.g., cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js which you can load it in place of the version you are currently using. Alternatively, you can get a ZIP archive or access the branch on GitHub.

Thanks for your continuing interest in MathJax. We hope that this release makes your MathJax experience even better.

The MathJax Team.

## New in MathJax v2.7.2

### Accessibility

• Upgrade Accessibility Extensions to v1.2.3

### API

• Properly handle arrays of elements in Typeset() call without callbacks. #1680 #1794

### Output

• Remap newlines to spaces. #1694 #1783
• Fix placement of underlines in script styles. #1686 #1792
• [CommonHTML] Fix problem with ex-height detection in some instances. #1664 #1671
• [CommonHTML] Add space between fractions when useMMLspacing is in effect. #1626 #1786
• [CommonHTML] Don't force width of large collections of text. #1718 #1788
• [CommonHTML] Fix bounding box issues with some stretchy characters. #1712 #1789
• [CommonHTML] Fix problem with table row and column lines #1711 #1790
• [CommonHTML] Improve position of stretchy accents. #1735 #1787
• [CommonHTML] Fix problem with <=> arrow in mhchem. 1657 #1795
• [CommonHTML] Fix getNode() method not descending into all the children. #1691 #1791
• [CommonHTML] Use non-combining vector arrow to work-around Safari regression. #1709 #1796
• [CommonHTML] [SVG] Localize some variables that where accidentally global. #1806 #1809
• [HTML-CSS] Work around for regression in Safari wrt combining characters. #1737 #1775
• [HTML-CSS] Handle FontFaceBug interaction with web fonts in Chrome. #1774 #1776
• [HTML-CSS] Fix typo in STIX font data. #1683 #1785
• [HTML-CSS] Fix positioning problem with accents at large math sizes. #1798. #1799
• [HTML-CSS] [SVG] Add minimum height for accents. #1706 #1781

### Input

• [TeX] Allow negative dimensions in \Rule and add \rule macro. #1666 #1673
• [TeX] Better error messages for \shoveleft and \shoveright. #1701 #1782
• [TeX] Better test for \text{} in \cases{}. #1482 #1793
• [TeX] Fix spacing aligned/alignedat. #1690 #1784
• [TeX] Add more unicode-based intergrals for mediawiki-texvc. #1723 #1810
• [MathML] Fix problem with namespaces on internal element. #1755 #1756

### Interface

• Fix typo in the localization menu #1746

### Misc.

• Fixed typos in comments #1660
• Fix trailing comma #1670
• Fix typo in function name #1797
• Fix automatic deployment to npm #1820

## Re: Reminder: Meeting today

Source: public-mathonwebpages@w3.org Mail Archives • Charles LaPierre (charlesl@benetech.org) • August 17, 2017 • Permalink

I tried in chrome

https://appear.in/mathonweb

and it is not working for me sorry.

Thanks
EOM

Charles LaPierre
Technical Lead, DIAGRAM and Born Accessible
E-mail: charlesl@benetech.org<mailto:charlesl@benetech.org>
Skype: charles_lapierre
Phone: 650-600-3301

On Aug 17, 2017, at 9:08 AM, Siegman, Tzviya - Hoboken <tsiegman@wiley.com<mailto:tsiegman@wiley.com>> wrote:

Hi Peter,

I tried to call in, but Google Hangouts just hung.

Tzviya Siegman
Wiley
201-748-6884
tsiegman@wiley.com<mailto:tsiegman@wiley.com>

From: Peter Krautzberger [mailto:peter@krautzource.com]
Sent: Thursday, August 17, 2017 8:56 AM
To: mathonweb <public-mathonwebpages@w3.org<mailto:public-mathonwebpages@w3.org>>
Subject: Reminder: Meeting today

Hi everyone,

We are scheduled to meet today, Aug 17, 12pm Eastern time.

We'll be focusing (and deciding) on a TPAC meeting.

Best,
Peter.


## RE: Reminder: Meeting today

Source: public-mathonwebpages@w3.org Mail Archives • Siegman, Tzviya - Hoboken (tsiegman@wiley.com) • August 17, 2017 • Permalink

Hi Peter,

I tried to call in, but Google Hangouts just hung.

Tzviya Siegman
Wiley
201-748-6884
tsiegman@wiley.com<mailto:tsiegman@wiley.com>

From: Peter Krautzberger [mailto:peter@krautzource.com]
Sent: Thursday, August 17, 2017 8:56 AM
To: mathonweb <public-mathonwebpages@w3.org>
Subject: Reminder: Meeting today

Hi everyone,

We are scheduled to meet today, Aug 17, 12pm Eastern time.

We'll be focusing (and deciding) on a TPAC meeting.

Best,
Peter.


## Reminder: Meeting today

Source: public-mathonwebpages@w3.org Mail Archives • Peter Krautzberger (peter@krautzource.com) • August 17, 2017 • Permalink

Hi everyone,

We are scheduled to meet today, Aug 17, 12pm Eastern time.

We'll be focusing (and deciding) on a TPAC meeting.

Best,
Peter.


## RE: [math-on-web] TPAC Poll

Source: public-mathonwebpages@w3.org Mail Archives • Siegman, Tzviya - Hoboken (tsiegman@wiley.com) • August 07, 2017 • Permalink



Tzviya Siegman
Wiley
201-748-6884
tsiegman@wiley.com<mailto:tsiegman@wiley.com>

From: Peter Krautzberger [mailto:peter@krautzource.com]
Sent: Monday, August 07, 2017 6:42 AM
To: mathonweb <public-mathonwebpages@w3.org>
Subject: [math-on-web] TPAC Poll

Hi everyone,

As per the last meeting, we would like to do a quick poll regarding TPAC [1].

1. Will you be at TPAC this year?
Yes

2. Will you be in the Bay area around TPAC?
yes

3. Would you join a CG meeting at TPAC?
It depends on timing and conflicts

4. Would you join a CG meeting outside of TPAC?
It depends on timing and conflicts

5. Would you join a CG meeting remotely?
It depends on timing and conflicts
Please send a quick response (to me or Dani) before the next CG meeting on Aug 17.

Best regards,
Peter.

[1] https://www.w3.org/2017/11/TPAC/Overview.html



## [math-on-web] TPAC Poll

Source: public-mathonwebpages@w3.org Mail Archives • Peter Krautzberger (peter@krautzource.com) • August 07, 2017 • Permalink

Hi everyone,

As per the last meeting, we would like to do a quick poll regarding TPAC
[1].

1. Will you be at TPAC this year?
2. Will you be in the Bay area around TPAC?
3. Would you join a CG meeting at TPAC?
4. Would you join a CG meeting outside of TPAC?
5. Would you join a CG meeting remotely?

Please send a quick response (to me or Dani) before the next CG meeting on
Aug 17.

Best regards,
Peter.

[1] https://www.w3.org/2017/11/TPAC/Overview.html


## [math-on-web] CG meeting minutes, 2017/08/03

Source: public-mathonwebpages@w3.org Mail Archives • Peter Krautzberger (peter@krautzource.com) • August 07, 2017 • Permalink

Hi everyone,

Below are the minutes from the CG meeting last week. A bit more condensed
than usual.

The next meeting will be on August 17 and we'll be focusing (and deciding)
on a TPAC meeting.

Best,
Peter.

# [math on web CG] minutes 2017-08-03

* Present: Volker, Charles, Kevin, Peter

* Volker: should there be a meeting at TPAC? If so, when?
* Peter: I can't be there, I'm afraid
* Charles: I'll be there
* Volker: whne is it?
* https://www.w3.org/2017/11/TPAC/Overview.html, Nov 6-10
* Charles: PWG is meeting 6&7
* 9&10 Publishing summit
* Volker: restrictions for CG?
* not days but 4 groups per day
* Volker: Dani said he'd probably be there
* Volker: if there's a meeting with CSS WG
* Peter: as Tzviya said, make early plans with CSS, they are very busy
* Peter: make another call to action on mailing list?
* => ACTION
* Charles: maybe ARIA WG as well, to talk about semantics?
* Volker: maybe good. E.g., clarifying math role
* Volker: ACTION maybe email should be straw poll who will be there anyway
* Peter: maybe poll for who's in the area, maybe off-site/schedule
meeting is of interes
* Charles: q about MathJax: if I have an image and MathML, once MathJax
does the mathML, will there be two visuals?
* Peter: yes. but you can hook into MathJax to remove the image after
rendering
* Peter: next meeting topic: maybe my suggestion for stepping back and
talking about why each of us is here?


## Re: Reminder: Meeting today

Source: public-mathonwebpages@w3.org Mail Archives • Liam R. E. Quin (liam@w3.org) • August 05, 2017 • Permalink

On Tue, 2017-07-11 at 15:58 +0200, Daniel Marques wrote:
> Hi Liam,
>
> Sorry for my delayed answer but I'm in the middle of closing many
> projects.
No problem, same here!

>
> It is great that some people still think that with CSS should be
> possible to do mathematics easier. It is probably very improbable to
> be able to do all the MathML specification. But, at least, simple
> formulas with fractions, roots and matrices, among others, should be
> achievable.

Yes, for sure.

>
> You say
> > If this CG were to come up with a list of the most urgent things
> > together
> > with some tests (and patches for browsers?) I can see something
> > happening.
>
> That's for sure a starting point and makes sense working in this
> direction.
> We can elaborate it more during the following group meetings.

Thanks, cool. A "next next step" might be to explore some polyfills.

Liam

--
Liam Quin, W3C, http://www.w3.org/People/Quin/
Staff contact for Verifiable Claims WG, XQuery WG

Web slave for http://www.fromoldbooks.org/


## MathJax v2.7.2 beta now available

Source: MathJax • August 04, 2017 • Permalink

Today we are entering the public beta phase of MathJax v2.7.2, a bug-fix release with over 30 important bug fixes.

This release includes a workaround for a regression in Safari when using combining characters as well as an important update to the MathJax Accessibility Extensions and the underlying speech-rule-engine, greatly improving performance and quality.

For details on all bug fixes, please see below.

The beta should be available on all CDN providers, e..g., cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2-beta.1/MathJax.js which you can load it in place of the version you are currently using. Alternatively, you can get a ZIP archive or access the branch on GitHub.

Remember that this is still beta software, so if you are not an experienced user, you may want to wait for the official 2.7.2 release. We do not recommend that you use the -beta version for production environments, but do encourage you to test your content with it.

The official release of v2.7.2 should occur within the next few weeks, but we want you to be able to start to test out the v2.7.2 features now. Please report any bugs you find to the issue tracker at https://github.com/mathjax/MathJax/issues.

Thanks for your continuing interest in MathJax. We hope that this release makes your MathJax experience even better.

The MathJax Team.

## New in MathJax v2.7.2

### Accessibility

• Upgrade Accessibility Extensions to v1.2.3

### API

• Properly handle arrays of elements in Typeset() call without callbacks. #1680 #1794

### Output

• Remap newlines to spaces. #1694 #1783
• Fix placement of underlines in script styles. #1686 #1792
• [CommonHTML] Fix problem with ex-height detection in some instances. #1664 #1671
• [CommonHTML] Add space between fractions when useMMLspacing is in effect. #1626 #1786
• [CommonHTML] Don't force width of large collections of text. #1718 #1788
• [CommonHTML] Fix bounding box issues with some stretchy characters. #1712 #1789
• [CommonHTML] Fix problem with table row and column lines #1711 #1790
• [CommonHTML] Improve position of stretchy accents. #1735 #1787
• [CommonHTML] Fix problem with <=> arrow in mhchem. 1657 #1795
• [CommonHTML] Fix getNode() method not descending into all the children. #1691 #1791
• [CommonHTML] Use non-combining vector arrow to work-around Safari regression. #1709 #1796
• [CommonHTML] [SVG] Localize some variables that where accidentally global. #1806 #1809
• [HTML-CSS] Work around for regression in Safari wrt combining characters. #1737 #1775
• [HTML-CSS] Handle FontFaceBug interaction with web fonts in Chrome. #1774 #1776
• [HTML-CSS] Fix typo in STIX font data. #1683 #1785
• [HTML-CSS] Fix positioning problem with accents at large math sizes. #1798. #1799
• [HTML-CSS] [SVG] Add minimum height for accents. #1706 #1781

### Input

• [TeX] Allow negative dimensions in \Rule and add \rule macro. #1666 #1673
• [TeX] Better error messages for \shoveleft and \shoveright. #1701 #1782
• [TeX] Better test for \text{} in \cases{}. #1482 #1793
• [TeX] Fix spacing aligned/alignedat. #1690 #1784
• [TeX] Add more unicode-based intergrals for mediawiki-texvc. #1723 #1810
• [MathML] Fix problem with namespaces on internal element. #1755 #1756

### Interface:

• Fix typo in the localization menu #1746

### Misc.

• Fixed typos in comments #1660
• Fix trailing comma #1670
• Fix typo in function name #1797

## Reminder: meeting August 3

Source: public-mathonwebpages@w3.org Mail Archives • Peter Krautzberger (peter@krautzource.com) • August 02, 2017 • Permalink

Hi everyone,

We are scheduled to meet Thursday, Aug 3, 12pm Eastern time.

The meeting can continue where the last one left off.
I'd propose to step back and reflect a bit on where people want to go.

Best,
Peter.


## Feeds

Planet MathML features:

If you own a blog with a focus on MathML, and want to be added or removed from this aggregator, please get in touch with Bert Bos at bert@w3.org.