Movatterモバイル変換


[0]ホーム

URL:


W3C

MathML Core

W3C Editor's Draft

More details about this document
This version:
https://w3c.github.io/mathml-core/
Latest published version:
https://www.w3.org/TR/mathml-core/
Latest editor's draft:
https://w3c.github.io/mathml-core/
History:
https://www.w3.org/standards/history/mathml-core/
Commit history
Test suite:
https://github.com/web-platform-tests/wpt/tree/master/mathml/
Implementation report:
https://wpt.fyi/results/?label=master&label=experimental&aligned&q=math%20%20not%28path%3A%2Fjs%29
Editors:
David Carlisle (NAG)
Frédéric Wang (Igalia)
Former editors:
Patrick Ion (Mathematical Reviews, American Mathematical Society)
Robert Miner (deceased) (Design Science, Inc.)
Feedback:
GitHub w3c/mathml-core (pull requests,new issue,open issues)

Copyright © 2025World Wide Web Consortium.W3C®liability,trademark andpermissive document license rules apply.


Abstract

This specification defines a core subset of Mathematical Markup Language, or MathML, that is suitable for browser implementation. MathML is a markup language for describing mathematical notation and capturing both its structure and content. The goal of MathML is to enable mathematics to be served, received, and processed on the World Wide Web, just as HTML has enabled this functionality for text.

Status of This Document

This section describes the status of this document at the time of its publication. A list of currentW3C publications and the latest revision of this technical report can be found in theW3C standards and drafts index.

This document was published by theMath Working Group as an Editor's Draft.

Publication as an Editor's Draft does not imply endorsement byW3C and its Members.

This is a draft document and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to cite this document as other than a work in progress.

This document was produced by a group operating under theW3C Patent Policy.W3C maintains apublic list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent that the individual believes containsEssential Claim(s) must disclose the information in accordance withsection 6 of theW3C Patent Policy.

This document is governed by the18 August 2025W3C Process Document.

1.Introduction

This section is non-normative.

The [MATHML3] specification has several shortcomings that make it hard to implement consistently across web rendering engines or to extend with user-defined constructions, e.g.:

This MathML Core specification intends to address these issues by being as accurate as possible on the visual rendering of mathematical formulas using additional rules from the TeXBook’s Appendix G [TEXBOOK] and from the Open Font Format [OPEN-FONT-FORMAT], [OPEN-TYPE-MATH-ILLUMINATED]. It also relies on modern browser implementations and web technologies [HTML] [SVG] [CSS2] [DOM], clarifying interactions with them when needed or introducing new low-level primitives to improve the web platform layering.

Parts of MathML3 that do not fit well in this framework or are less fundamental have been omitted. Instead, they are described in a separate and larger [MATHML4] specification. The details of which math feature will be included in future versions of MathML Core or implemented as polyfills is still open. This question and other potential improvements aretracked on GitHub.

By increasing the level of implementation details, focusing on a workable subset, following a browser-driven design and relying on automated web platform tests, this specification is expected to greatly improve MathML interoperability. Moreover, effort on MathML layering will enable users to implement the rest of the MathML 4 specification, or more generally to extend MathML Core, using modern web technologies such asshadow trees,custom elements or APIs from [HOUDINI].

2.MathML Fundamentals

2.1Elements and attributes

The termMathML element refers to any element in theMathML namespace. The MathML elements defined in this specification are called theMathML Core elements and are listed below. Any MathML element that is not listed below is called anUnknown MathML element.

  1. annotation
  2. annotation-xml
  3. maction
  4. math
  5. merror
  6. mfrac
  7. mi
  8. mmultiscripts
  9. mn
  10. mo
  11. mover
  12. mpadded
  13. mphantom
  14. mprescripts
  15. mroot
  16. mrow
  17. ms
  18. mspace
  19. msqrt
  20. mstyle
  21. msub
  22. msubsup
  23. msup
  24. mtable
  25. mtd
  26. mtext
  27. mtr
  28. munder
  29. munderover
  30. semantics

Thegrouping elements aremaction,math,merror,mphantom,mprescripts,mrow,mstyle,semantics andunknown MathML elements.

Thescripted elements aremmultiscripts,mover,msub,msubsup,msup,munder andmunderover.

Theradical elements aremroot andmsqrt.

The attributes defined in this specification have no namespace and are calledMathML attributes:

2.1.1The Top-Level<math> Element

MathML specifies a single top-level or rootmath element, which encapsulates each instance of MathML markup within a document. All other MathML content must be contained in a<math> element.

The<math> element accepts the attributes described in2.1.3Global Attributes as well as the following attributes:

Thedisplay attribute, if present, must be anASCII case-insensitive match toblock orinline. The user agent stylesheet described inA.User Agent Stylesheet contains rules for this attribute that affect the default values for thedisplay (block math orinline math) andmath-style (normal orcompact) properties. If thedisplay attribute is absent or has an invalid value, the User Agent stylesheet treats it the same asinline.

This specification does not define any observable behavior that is specific to thealttext attribute.

Note
Thealttext attribute may be used as alternative text by some legacy systems that do not implement math layout.

If the<math> element does not have its computeddisplay property equal toblock math orinline math then it is laid out according to the CSS specification where the corresponding value is described. Otherwise the layout algorithm of themrow element is used to produce amath content box. Thatmath content box is used as the content for the layout of the element, as described by CSS fordisplay: block (if the computed value isblock math) ordisplay: inline (if the computed value isinline math). Additionally, if the computeddisplay property is equal toblock math then thatmath content box is rendered horizontally centered within the content box.

Note
TEX's display mode$$...$$ and inline mode$...$ correspond todisplay="block" anddisplay="inline" respectively.

In the following example, amath formula is rendered in display mode on a new line and taking full width, with the math content centered within the container:

<divstyle="width: 15em;">  This mathematical formula with a big summation and the number pi<mathdisplay="block"style="border: 1px dotted black;"><mrow><munderover><mo></mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mrow><mo>+</mo><mn></mn></mrow></munderover><mfrac><mn>1</mn><msup><mi>n</mi><mn>2</mn></msup></mfrac></mrow><mo>=</mo><mfrac><msup><mi>π</mi><mn>2</mn></msup><mn>6</mn></mfrac></math>  is easy to prove.</div>
math example (display)

As a comparison, the same formula would look as follows in inline mode. The formula is embedded in the paragraph of text without forced line breaking. The baselines specified by the layout algorithm of themrow are used for vertical alignment. Note that the middle of sum and equal symbols or fractions are all aligned, but not with the alphabetical baseline of the surrounding text.

math example (inline)

Because good mathematical rendering requires use of mathematical fonts, theuser agent stylesheet should set thefont-family to themath value on the<math> element instead of inheriting it. Additionally, several CSS properties that can be set on a parent container such asfont-style,font-weight,direction ortext-indent etc are not expected to apply to the math formula and so theuser agent stylesheet has rules to reset them by default.

math {direction: ltr;text-indent:0;letter-spacing: normal;line-height: normal;word-spacing: normal;font-family: math;font-size: inherit;font-style: normal;font-weight: normal;display: inline math;math-shift: normal;math-style: compact;math-depth:0;}math[display="block" i] {display: block math;math-style: normal;}math[display="inline" i] {display: inline math;math-style: compact;}

2.1.2Types for MathML Attribute Values

In addition to CSS data types, some MathML attributes rely on the following MathML-specific types:

unsigned-integer
An<integer> value as defined in [CSS-VALUES-4], whose first character is neither U+002D HYPHEN-MINUS character (-) nor U+002B PLUS SIGN (+).
boolean
A string that is anASCII case-insensitive match totrue orfalse.

2.1.3Global Attributes

The following attributes are common to and may be specified on all MathML elements:

2.1.4Attributes common to HTML and MathML elements

Theid,class,style,data-*,autofocus andnonce andtabindex attributes have the same syntax and semantics as defined forid,class,style,data-*,autofocus,nonce andtabindex attributes on HTML elements.

Thedir attribute, if present, must be anASCII case-insensitive match toltr orrtl. In that case, the user agent is expected to treat the attribute as apresentational hint setting the element'sdirection property to the corresponding value. More precisely, anASCII case-insensitive match tortl is mapped tortl while anASCII case-insensitive match toltr is mapped toltr.

Note
Thedir attribute is used to set the directionality of math formulas, which is oftenrtl in Arabic speaking world. However, languages written from right to left often embed math written from left to right and so theuser agent stylesheet resets thedirection property accordingly on themath elements.

In the following example, thedir attribute is used to render "𞸎 plus 𞸑 raised to the power of (٢ over, 𞸟 plus ١)" from right-to-left.

<mathdir="rtl"><mrow><mi>𞸎</mi><mo>+</mo><msup><mi>𞸑</mi><mfrac><mn>٢</mn><mrow><mi>𞸟</mi><mo>+</mo><mn>١</mn></mrow></mfrac></msup></mrow></math>
dir example

All MathML elements support event handler content attributes, as described inevent handler content attributes in HTML.

All event handler content attributesnoted by HTML as being supported by all HTMLElements are supported by all MathML elements as well, as defined in theMathMLElement IDL.

2.1.5Legacy MathML Style Attributes

Themathcolor andmathbackground attributes, if present, must have a value that is a<color>. In that case, the user agent is expected to treat these attributes as apresentational hint setting the element'scolor andbackground-color properties to the corresponding values. Themathcolor attribute describes the foreground fill color of MathML text, bars etc while themathbackground attribute describes the background color of an element.

Themathsize attribute, if present, must have a value that is a valid<length-percentage>. In that case, the user agent is expected to treat the attribute as apresentational hint setting the element'sfont-size property to the corresponding value. Themathsize property indicates the desired height of glyphs in math formulas but also scales other parts (spacing, shifts, line thickness of bars etc) accordingly.

Note
The above attributes are implemented for compatibility with full MathML. Authors whose only target is MathML Core are encouraged to use CSS for styling.

2.1.6Thedisplaystyle andscriptlevel attributes

Thedisplaystyle attribute, if present, must have a value that is aboolean. In that case, the user agent is expected to treat the attribute as apresentational hint setting the element'smath-style property to the corresponding value. More precisely, anASCII case-insensitive match totrue is mapped tonormal while anASCII case-insensitive match tofalse is mapped tocompact. This attribute indicates whether formulas should try to minimize the logical height (value isfalse) or not (value istrue) e.g. by changing the size of content or the layout of scripts.

Thescriptlevel attribute, if present, must have value+<U>,-<U> or<U> where<U> is anunsigned-integer. In that case the user agent is expected to treat thescriptlevel attribute as apresentational hint setting the element'smath-depth property to the corresponding value. More precisely,+<U>,-<U> and<U> are respectively mapped toadd(<U>)add(<-U>) and<U>.

displaystyle andscriptlevel values are automatically adjusted within MathML elements. To fully implement these attributes, additional CSS properties must be specified in the user agent stylesheet as described inA.User Agent Stylesheet. In particular, for all MathML elements a defaultfont-size: math is specified to ensure thatscriptlevel changes are taken into account.

In this example, anmunder element is used to attach a script "A" to a base "∑". By default, the summation symbol is rendered with the font-size inherited from its parent and the A as a scaled down subscript. Ifdisplaystyle is true, the summation symbol is drawn bigger and the "A" becomes an underscript. Ifscriptlevel is reset to 0 on the "A", then it will use the same font-size as the top-levelmath root.

<math><munder><mo></mo><mi>A</mi></munder><munderdisplaystyle="true"><mo></mo><mi>A</mi></munder><munder><mo></mo><miscriptlevel="0">A</mi></munder></math>
displaystyle-scriptlevel example
Note
TEX's\displaystyle,\textstyle,\scriptstyle, and\scriptscriptstyle correspond todisplaystyle andscriptlevel astrue and0,false and0,false and1, andfalse and 2, respectively.

2.1.7Attributes Reserved as Valid

The attributesintent andarg are reserved as valid attributes.

This specification does not define any observable behavior that is specific to theintent andarg attributes.

Note
These attributes are described in [MATHML4] and future versions of this specification may or may not define them. Authors should be aware that they are currently in development and subject to change.

2.2Integration in the Web Platform

2.2.1HTML and SVG

MathML can be mixed with HTML and SVG as described in the relevant specifications [HTML] [SVG].

When evaluating the SVGrequiredExtensions attribute, user agents must claim support for the language extension identified by theMathML namespace.

In this example, inline MathML and SVG elements are used inside an HTML document. SVG elements<switch> and<foreignObject> (with proper<requiredExtensions>) are used to embed a MathML formula with a text fallback, inside a diagram. HTMLinput element is used within themtext to include an interactive input field inside a mathematical formula. See also3.7Semantics and Presentation for an example of SVG and HTML inside anannotation-xml element.

<svgstyle="font-size: 20px"width="400px"height="220px"viewBox="0 0 200 110"><gtransform="translate(10,80)"><pathd="M 0 0 L 150 0 A 75 75 0 0 0 0 0             M 30 0 L 30 -60 M 30 -10 L 40 -10 L 40 0"fill="none"stroke="black"></path><texttransform="translate(10,20)">1</text><switchtransform="translate(35,-40)"><foreignObjectwidth="200"height="50"requiredExtensions="http://www.w3.org/1998/Math/MathML"><math><msqrt><mn>2</mn><mi>r</mi><mo></mo><mn>1</mn></msqrt></math></foreignObject><text>\sqrt{2r - 1}</text></switch></g></svg><p>  Fill the blank:<math><msqrt><mn>2</mn><mtext><inputonchange="..."size="2"type="text"></mtext><mo></mo><mn>1</mn></msqrt><mo>=</mo><mn>3</mn></math></p>
html-svg example

2.2.2CSS styling

User agents must support various CSS features mentioned in this specification, including new ones described in4.CSS Extensions for Math Layout. They must follow the computation rule fordisplay: contents.

In this example, the MathML formula inherits the CSS color of its parent and uses thefont-family specified via thestyle attribute.

<divstyle="width: 15em; color: blue">  This mathematical formula with a big summation and the number pi<mathdisplay="block"style="font-family: STIX Two Math"><mrow><munderover><mo></mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mrow><mo>+</mo><mn></mn></mrow></munderover><mfrac><mn>1</mn><msup><mi>n</mi><mn>2</mn></msup></mfrac></mrow><mo>=</mo><mfrac><msup><mi>π</mi><mn>2</mn></msup><mn>6</mn></mfrac></math>  is easy to prove.</div>
style example

All documents containingMathML Core elements must include CSS rules described inA.User Agent Stylesheet as part of user-agent level style sheet defaults. In particular, this adds!important rules to forcewriting mode tohorizontal-lr on all MathML elements.

Thefloat property does not create floating of elements whose parent's computeddisplay value isblock math orinline math, and does not take them out-of-flow.

The::first-line and::first-letter pseudo-elements do not apply to elements whose computeddisplay value isblock math orinline math, and such elements do not contribute a first formatted line or first letter to their ancestors.

The following CSS features are not supported and must be ignored:

  • Line breaking inside math formulas:white-space is treated asnowrap on all MathML elements.
  • Alignment properties:align-content,justify-content,align-self,justify-self have no effects on MathML elements.
Note
These features might be handled in future versions of this document. For now, authors are discouraged from setting a different value for these properties as that might lead to backward incompatibility issues.

2.2.3DOM and JavaScript

User agents supportingWeb application APIs must ensure that they keep the visual rendering of MathML synchronized with the [DOM] tree, in particular perform necessary updates whenMathML attributes are modified dynamically.

All the nodes representingMathML elements in the DOM must implement, and expose to scripts, the followingMathMLElement interface.

WebIDL[Exposed=Window]interfaceMathMLElement :Element { };MathMLElement includesGlobalEventHandlers;MathMLElement includesHTMLOrForeignElement;

TheGlobalEventHandlers andHTMLOrForeignElement interfaces are defined in [HTML].

In the following example, a MathML formula is used to render the fraction "α over 2". When clicking the red α, it is changed into a blue β.

<script>functionModifyMath(mi) {      mi.style.color ='blue';      mi.textContent ='β';  }</script><math><mrow><mfrac><mistyle="color: red"onclick="ModifyMath(this)">α</mi><mn>2</mn></mfrac></mrow></math>
dom-idl example
Issue
Rename HTMLOrSVGElement and define MathMLElement in [HTML].

2.2.4Text layout

Because math fonts generally contain very tall glyphs such as big integrals, using typographic metrics is important to avoid excessive line spacing of text. As a consequence, user agents must take into account the USE_TYPO_METRICS flag from the OS/2 table [OPEN-FONT-FORMAT] when performing text layout.

2.2.5Focus

MathML provides the ability for authors to allow for interactivity in supporting interactive user agents using the same concepts, approach and guidance toFocus as described in HTML, with modifications or clarifications regarding application for MathML as described in this section.

When an element is focused, all applicable CSS focus-related pseudo-classes as defined inSelectors Level 3 apply, as defined in that specification.

The contents of embeddedmath elements (including HTML elements inside token elements) contribute to the sequential focus order of the containing owner HTML document (combined sequential focus order).

3.Presentation Markup

3.1Visual formatting model

3.1.1Box Model

The defaultdisplay property is described inA.User Agent Stylesheet:

In order to specify math layout in differentwriting modes, this specification uses concepts from [CSS-WRITING-MODES-4]:

Note
Unless specified otherwise, the figures in this specification use awriting mode ofhorizontal-lr andltr. SeeFigure4,Figure5 andFigure6 for examples of other writing modes that are sometimes used for math layout.

Boxes used for MathML elements rely on several parameters in order to perform layout in a way that is compatible with CSS but also to take into account very accurate positions and spacing within math formulas:

  1. Inline metrics.min-content inline size,max-content inline size andinline size from CSS. SeeFigure1.
    Figure1Generic Box Model for MathML elements
  2. Block metrics. Theblock size,first baseline set andlast baseline set. The followingbaselines are defined for MathML boxes:

    1. Thealphabetic baseline which typically aligns with the bottom of uppercase Latin glyphs. The algebraic distance from thealphabetic baseline to theline-over edge of the box is called theline-ascent. The algebraic distance from theline-under edge to thealphabetic baseline of the box is called theline-descent.
    2. Themathematical baseline, also calledmath axis, which typically aligns with the fraction bar, middle of fences and binary operators. It is shifted away from thealphabetic baseline byAxisHeight towards theline-over.
    3. Theink-over baseline, indicating theline-over theorical limit of the math content drawn, excluding any extra space. If not specified, it is aligned with theline-over edge. The algebraic distance from thealphabetic baseline to theink-over baseline is called theink line-ascent.
    4. Theink-under baseline, indicating theline-under theorical limit of the math content drawn, excluding any extra space. If not specified, it is aligned with theline-under edge. The algebraic distance from theink-under baseline to thealphabetic baseline is called theink line-descent.
    Note
    For math layout, it is very important to rely on the ink extent when positioning text. This is not the case for more complex notations (e.g. square root). Although ink-ascent and ink-descent are defined for all MathML elements they are really only used for the token elements. In other cases, they just match normal ascent and descent.
    Unless specified otherwise, thelast baseline set is equal to thefirst baseline set for MathML boxes.
  3. An optionalitalic correction which provides a measure of how much the text of a box is slanted along theinline axis. SeeFigure2.
    Figure2Examples of italic correction for italic f and large integral
    If it is requested during calculation ofmin-content inline size andmax-content inline size or during layout then 0 is used as a fallback value.
  4. An optionaltop accent attachment which provides a reference offset on theinline axis of a box that should be used when positioning that box as an accent. SeeFigure3.
    Figure3Example of top accent attachment for a circumflex accent
    If it is requested during calculation ofmin-content inline size (respectivelymax-content inline size) then half themin-content inline size (respectivelymax-content inline size) is used as a fallback value. If it is requested during layout then half the inline size of the box is used as a fallback value.

Given a MathML box, the following offsets are defined:

  • Theinline offset of a child box is the offset between theinline-start edge of the parent box and theinline-start edge of the child box.
  • Theblock offset of a child box is the offset between theblock-start edge of the parent box and theblock-start edge of the child box.
  • Theline-left offset of a child box is the offset between theline-left edge of the parent box and theline-left edge of the child box.
Figure4Box model for writing modehorizontal-tb andrtl that may be used in e.g. Arabic math.
Figure5Box model for writing modevertical-lr andltr that may be used in e.g. Mongolian math.
Figure6Box model for writing modevertical-rl andltr that may be used in e.g. Japanese math.
Note
The position of child boxes and graphical items inside a MathML box are expressed using theinline offset andblock offset. For convenience, the layout algorithms may describe offsets using flow-relative directions, line-relative directions or thealphabetic baseline. It is always possible to pass from one description to the other because position of child boxes is always performed after the metrics of the box and of its child boxes are calculated.

Here are examples of offsets obtained from line-relative metrics:

Issue 78: Ink ascent/descentopentype/texneeds-tests
Improve definition of ink ascent/descent?

3.1.2Layout Algorithms

Each MathML element has an associatedmath content box, which is calculated as described in this chapter's layout algorithms using the following structure:

  1. Calculation ofmin-content inline size andmax-content inline size of the math content.
  2. Box layout:
    1. Layout ofin-flow child boxes.
    2. Calculation ofinline size,ink line-ascent,ink line-descent,line-ascent andline-ascent of the math content.
    3. Calculation of offsets of child boxes within themath content box as well as sizes and offsets of extra graphical items (bars, radical symbol, etc).
    4. Layout and positioning ofabsolutely-positioned andfixed-positioned boxes, as described in [CSS-POSITION-3].

The following extra steps must be performed:

Note
Per the description above,margin-collapsing does not apply to MathML elements.

During box layout, optionalinline stretch size constraint andblock stretch size constraint parameters may be used onembellished operators. The former indicates a target size that acore operator stretched along theinline axis should cover. The latter indicates anink line-ascent andink line-descent that acore operator stretched along theblock axis should cover. Unless specified otherwise, these parameters are ignored during box layout and child boxes are laid out without any stretch size constraint.

Issue 76: Define what inline percentages resolve against.css/html5need specification updateneeds-tests
Define what inline percentages resolve against
Issue 77: Define what block percentages resolve against.css/html5need specification updateneeds-tests
Define what block percentages resolve against

3.1.3Anonymous <mrow> boxes

Ananonymous box is a box without any associated element in the DOM tree and which is generated for layout purpose only. The properties of anonymous boxes are inherited from the enclosing non-anonymous box while non-inherited properties have their initial value. Ananonymous <mrow> box is ananonymous box withdisplay equal toblock math and which is laid out as described in section3.3.1.2Layout of<mrow>.

If a MathML elementgenerates an anonymous <mrow> box then it wraps its children in an anonymous <mrow> box. I.e., its subtree in the visual formatting model is made of ananonymous <mrow> box which itself contains the boxes associated to the children of this MathML element.

In the following example, themath andmrow elements are laid out as described in section3.3.1.2Layout of<mrow>. In particular, the<math> element adds proper spacing around its<mo>≠</mo> child and the<mrow> element stretches its<mo>|</mo> children vertically.

Themtd element hasdisplay: table-cell and themsqrt element displays a radical symbol around its children. However, they also place their children in a way that is similar to what is described in section3.3.1.2Layout of<mrow>: the<msqrt> element adds proper spacing around its<mo>+</mo> child while the<mtd> element stretches its<mo> children vertically. In order to make this possible, each of these two elementsgenerates an anonymous <mrow> box.

<math><mrow><mo>|</mo><mtable><mtr><mtd><mi>x</mi></mtd><mtd><mo>(</mo><mfraclinethickness="0"><mn>5</mn><mn>3</mn></mfrac><mo>)</mo></mtd></mtr><mtr><mtd><msqrt><mn>7</mn><mo>+</mo><mn>2</mn></msqrt></mtd><mtd><mi>y</mi></mtd></mtr></mtable><mo>|</mo></mrow><mo></mo><mn>0</mn></math>
math example (display)

3.1.4Stacking contexts

MathML elements can overlap due to various spacing rules. They can as well contain extra graphical items (bars, radical symbol, etc). A MathML element with computed styledisplay: block math ordisplay: inline math generates a new stacking context. Thepainting order ofin-flow children of such a MathML element is exactly the same as block elements. The extra graphical items are painted after text and background (right after step 7.2.4 fordisplay: inline math and right after step 7.2 fordisplay: block math).

3.2Token Elements

Token elements in presentation markup are broadly intended to represent the smallest units of mathematical notation which carry meaning. Tokens are roughly analogous to words in text. However, because of the precise, symbolic nature of mathematical notation, the various categories and properties of token elements figure prominently in MathML markup. By contrast, in textual data, individual words rarely need to be marked up or styled specially.

Note
In practice, most MathML token elements just contain simple text for variables, numbers, operators etc and don't need sophisticated layout. However, it can contain text with line breaks or arbitrary HTML5 phrasing elements.

3.2.1Text<mtext>

Themtext element is used to represent arbitrary text that should be rendered as itself. In general, the<mtext> element is intended to denote commentary text.

The<mtext> element accepts the attributes described in2.1.3Global Attributes.

In the following example,mtext is used to put conditional words in a definition:

<math><mi>y</mi><mo>=</mo><mrow><msup><mi>x</mi><mn>2</mn></msup><mtext>&nbsp;if&nbsp;</mtext><mrow><mi>x</mi><mo></mo><mn>1</mn></mrow><mtext>&nbsp;and&nbsp;</mtext><mn>2</mn><mtext>&nbsp;otherwise.</mtext></mrow></math>
mtext example
3.2.1.1Layout of<mtext>

If the element does not have its computeddisplay property equal toblock math orinline math then it is laid out according to the CSS specification where the corresponding value is described. Otherwise, the layout below is performed.

If the<mtext> element contains only text content withoutforced line break orsoft wrap opportunity then, the anonymous child node generated for that text is laid out as defined in the relevant CSS specification and:

Otherwise, themtext element is laid out as ablock box and correspondingmin-content inline size,max-content inline size,inline size,block size,first baseline set andlast baseline set are used for themath content box.

3.2.2Identifier<mi>

Themi element represents a symbolic name or arbitrary text that should be rendered as an identifier. Identifiers can include variables, function names, and symbolic constants.

The<mi> element accepts the attributes described in2.1.3Global Attributes as well as the following attribute:

The layout algorithm is the same as themtext element. Theuser agent stylesheet must contain the following property in order to implement automatic italic via the text-transform value introduced in4.2Themath-auto transform:

mi {text-transform: math-auto;}

Themathvariant attribute, if present, must be anASCII case-insensitive match ofnormal. In that case, the user agent is expected to treat the attribute as apresentational hint setting the element'stext-transform property tonone. Otherwise it has no effects.

Note

In [MathML3], themathvariant attribute was used to define logical classes of token elements, each class providing a collection of typographically-related symbolic tokens with specific meaning within a given mathematical expression.

In MathML Core, this attribute is only used to cancel automatic italic of themi element. For other use cases, the proper Mathematical Alphanumeric Symbols [UNICODE] should be used instead. See also sectionC.Mathematical Alphanumeric Symbols.

In the following example,mi is used to render variables and function names. Note that per4.2Themath-auto transform the default styletext-transform: math-auto has no effect on the first<mi> ("cos" is made of three characters), makes the second<mi> render as math italic ("c" is made of a single character U+0063 Latin Small Letter C which is mapped to U+1D450 Mathematical Italic Small C per theitalic table), has no effect on the third<mi> (overridden bymathvariant="normal", settingtext-transform to none) or on the fourth<mi> (no mapping defined for U+221E Infinity in theitalic table).

<math><mi>cos</mi><mo>,</mo><mi>c</mi><mo>,</mo><mimathvariant="normal">c</mi><mo>,</mo><mi></mi></math>
mi example

3.2.3Number<mn>

Themn element represents a "numeric literal" or other data that should be rendered as a numeric literal. Generally speaking, a numeric literal is a sequence of digits, perhaps including a decimal point, representing an unsigned integer or real number.

The<mn> element accepts the attributes described in2.1.3Global Attributes. Its layout algorithm is the same as themtext element.

In the following example,mn is used to write a decimal number.

<math><mn>3.141592653589793</mn></math>
mn example

3.2.4Operator, Fence, Separator or Accent<mo>

Themo element represents an operator or anything that should be rendered as an operator. In general, the notational conventions for mathematical operators are quite complicated, and therefore MathML provides a relatively sophisticated mechanism for specifying the rendering behavior of an<mo> element.

As a consequence, in MathML the list of things that should "render as an operator" includes a number of notations that are not mathematical operators in the ordinary sense. Besides ordinary operators with infix, prefix, or postfix forms, these include fence characters such as braces, parentheses, and "absolute value" bars; separators such as comma and semicolon; and mathematical accents such as a bar or tilde over a symbol. This chapter uses the term "operator" to refer to operators in this broad sense.

The<mo> element accepts the attributes described in2.1.3Global Attributes as well as the following attributes:

This specification does not define any observable behavior that is specific to thefence andseparator attributes.

Note
Authors may use thefence andseparator to describe specific semantics of operators. The default values may be determined from theOperators_fence andOperators_separator tables, or equivalently thehuman-readable version of the operator dictionary.

In the following example, themo element is used for the binary operator +. Default spacing is symmetric around that operator. A tighter spacing is used if you rely on theform attribute to force it to be treated as a prefix operator. Spacing can also be specified explicitly using thelspace andrspace attributes.

<math><mn>1</mn><mo>+</mo><mn>2</mn><moform="prefix">+</mo><mn>3</mn><molspace="2em">+</mo><mn>4</mn><morspace="3em">+</mo><mn>5</mn></math>
mo example 1

Another use case is for big operators such as summation. Whendisplaystyle is true, such an operator is drawn larger but one can change that with thelargeop attribute. Whendisplaystyle is false, underscripts are actually rendered as subscripts but one can change that with themovablelimits attribute.

<math><mrowdisplaystyle="true"><munder><mo></mo><mn>5</mn></munder><munder><molargeop="false"></mo><mn>6</mn></munder></mrow><mrow><munder><mo></mo><mn>5</mn></munder><munder><momovablelimits="false"></mo><mn>7</mn></munder></mrow></math>
mo example 2

Operators are also used for stretchy symbols such as fences, accents, arrows etc. In the following example, the vertical arrow stretches to the height of themspace element. One can override default stretch behavior with thestretchy attribute e.g. to force an unstretched arrow. Thesymmetric attribute allows to indicate whether the operator should stretch symmetrically above and below the math axis (fraction bar). Finally theminsize andmaxsize attributes add additional constraints over the stretch size.

<math><mfrac><mspaceheight="50px"depth="50px"width="10px"style="background: blue"/><mspaceheight="25px"depth="25px"width="10px"style="background: green"/></mfrac><mo></mo><mostretchy="false"></mo><mosymmetric="true"></mo><mominsize="250px"></mo><momaxsize="50px"></mo></math>
mo example 3

Note that the default properties of operators are dictionary-based, as explained in3.2.4.2Dictionary-based attributes. For example a binary operator typically has default symmetric spacing around it while a fence is generally stretchy by default.

3.2.4.1Embellished operators

AMathML Core element is anembellished operator if it is:

  1. Anmo element;
  2. ascripted element or anmfrac, whose firstin-flow child exists and is anembellished operator;
  3. agrouping element ormpadded, whosein-flow children consist (in any order) of oneembellished operator and zero or morespace-like elements.

Thecore operator of anembellished operator is the<mo> element defined recursively as follows:

  1. The core operator of anmo element; is the element itself.
  2. The core operator of an embellishedscripted element ormfrac element is the core operator of its firstin-flow child.
  3. The core operator of an embellishedgrouping element ormpadded is the core operator of its uniqueembellished operatorin-flow child.

Thestretch axis of anembellished operator isinline if itscore operator contains only text content made of a single characterc, and that character has inlineintrinsic stretch axis. Otherwise, the stretch axis of theembellished operator isblock.

The same definitions apply for boxes in the visual formatting model where ananonymous <mrow> box is treated as agrouping element.

3.2.4.2Dictionary-based attributes

Theform property of anembellished operator is eitherinfix,prefix orpostfix. The correspondingform attribute on themo element, if present, must be anASCII case-insensitive match to one of these values.

Thealgorithm for determining theform of anembellished operator is as follows:

  1. If theform attribute is present and valid on thecore operator, then itsASCII lowercased value is used.
  2. If the embellished operator is the firstin-flow child of agrouping element,mpadded ormsqrt with more than onein-flow child (ignoring allspace-like children) then it has formprefix.
  3. Or, if the embellished operator is the lastin-flow child of agrouping element,mpadded ormsqrt with more than onein-flow child (ignoring allspace-like children) then it has formpostfix.
  4. Or, if the embellished operator is anin-flow child of ascripted element, other than the firstin-flow child, then it has formpostfix.
  5. Otherwise, the embellished operator has forminfix.

Thestretchy,symmetric,largeop,movablelimits properties of anembellished operator are eitherfalse ortrue. In the latter case, it is said that theembellished operatorhas the property. The correspondingstretchy,symmetric,largeop,movablelimits attributes on themo element, if present, must be aboolean.

Thelspace,rspace,minsize properties of anembellished operator are<length-percentage>. Themaxsize property of anembellished operator is either a<length-percentage> or ∞. Thelspace,rspace,minsize andmaxsize attributes on themo element, if present, must be a<length-percentage>.

Thealgorithm for determining the properties of anembellished operator is as follows:

  1. If the correspondingstretchy,symmetric,largeop,movablelimits,lspace,rspace,maxsize orminsize attribute is present and valid on thecore operator, then theASCII lowercased value of this property is used.
  2. Otherwise, run thealgorithm for determining theform of an embellished operator.
  3. If thecore operator contains only text contentContent, then setCategory to the result of thealgorithm to determine the category of an operator(Content, Form) whereForm is theform calculated at the previous step.
  4. IfCategory isDefault and theform ofembellished operator was not explicitly specified as an attribute on itscore operator:
    1. SetCategory to the result of thealgorithm to determine the category of an operator(Content, Form) whereForm isinfix.
    2. IfCategory isDefault, then run the algorithm again withForm set topostfix.
    3. IfCategory isDefault, then run the algorithm again withForm set toprefix.
  5. Run thealgorithm to set the properties of an operator from its categoryCategory.

When used during layout, the values ofstretchy,symmetric,largeop,movablelimits,lspace,rspace,minsize are obtained by thealgorithm for determining the properties of an embellished operator with the following extra resolutions:

  • Percentage values forlspace,rspace are interpreted relative to the value read from the dictionary or to the fallback value above.
  • Interpretation of percentage values forminsize andmaxsize are described in3.2.4.3Layout of operators.
  • Font-relative lengths forlspace,rspace,minsize andmaxsize rely on the font style of thecore operator, not the one of theembellished operator.
3.2.4.3Layout of operators

If the<mo> element does not have its computeddisplay property equal toblock math orinline math then it is laid out according to the CSS specification where the corresponding value is described. Otherwise, the layout below is performed.

The text of the operator must only be painted if thevisibility of the<mo> element isvisible. In that case, it must be painted with thecolor of the<mo> element.

Letdir be the element's computeddirection.

Operators are laid out as follows:

  1. If the content of the<mo> element is not made of a single characterc then fall back to the layout algorithm of3.2.1.1Layout of<mtext>. If it is not possible toget a glyph corresponding toc given directionalitydir, then fall back to the layout algorithm of3.2.1.1Layout of<mtext>. Otherwise, letg be the result of runningget a glyph corresponding toc given directionalitydir.
  2. If the operator has thestretchy property:
  3. If the operator has thelargeop property and ifmath-style on the<mo> element isnormal, then:
    1. If it is not possible toshape a stretchy glyphg in the block direction with thefirst available font then fall back to the layout algorithm of3.2.1.1Layout of<mtext>.
      Note
      Here we treat a non-stretchylargeop glyph as stretchy with target dimensionDisplayOperatorMinHeight.
    2. Themin-content inline size andmax-content inline size of the math content are set to thepreferred inline size of a glyph stretched along the block axis.
    3. Theinline size,ink line-ascent,ink line-descent,line-ascent andline-descent of the math content are obtained by the algorithm toshape a stretchy glyphg toblock dimensionDisplayOperatorMinHeight. Theinline size of the math content is the width of the stretchy glyph. The stretchy glyph is shifted towards theline-under by a value Δ so that its center aligns with the center of the target whensymmetric: the ink ascent of the math content is the ascent of the stretchy glyph − Δ and the ink descent of the math content is the descent of the stretchy glyph + Δ.
      • If the operator has thesymmetric property, then Δ = [(ascent of stretchy glyph − descent of stretchy glyph) − 2 *AxisHeight] / 2.
      • Otherwise, Δ = 0.
      Note
      The point of Δ here is simply to vertically align the operator whensymmetric.
    4. The painting of the operator is performed by the algorithm toshape a stretchy glyphg stretched toblock dimensionDisplayOperatorMinHeight and at position determined by the previous box metrics shifted by Δ towards theline-over.
    Figure8Base and displaystyle sizes of the summation symbol
  4. Otherwise fall back to the layout algorithm of3.2.1.1Layout of<mtext>.

If the algorithm toshape a stretchy glyph has been used for one of the step above, then theitalic correction of the math content is set to the value returned by that algorithm.

3.2.5Space<mspace>

Themspace empty element represents a blank space of any desired size, as set by its attributes.

The<mspace> element accepts the attributes described in2.1.3Global Attributes as well as the following attributes:

Thewidth,height,depth, if present, must have a value that is a valid<length-percentage>.

  • If thewidth attribute is present, valid and not a percentage then that attribute is used as apresentational hint setting the element'swidth property to the corresponding value.
  • If theheight attribute is absent, invalid or a percentage then the requested line-ascent is0. Otherwise the requested line-ascent is the resolved value of theheight attribute, clamping negative values to0.
  • If both theheight anddepth attributes are present, valid and not a percentage then they are used as apresentational hint setting the element'sheight property to the concatenation of the strings "calc(", theheight attribute value, " +", thedepth attribute value, and ")". If only one of these attributes is present, valid and not a percentage then it is treated as apresentational hint setting the element'sheight property to the corresponding value.

In the following example,mspace is used to force spacing within the formula (a 1px blue border is added to easily visualize the space):

<math><mn>1</mn><mspacewidth="1em"style="border-top: 1px solid blue"/><mfrac><mrow><mn>2</mn><mspacedepth="1em"style="border-left: 1px solid blue"/></mrow><mrow><mn>3</mn><mspaceheight="2em"style="border-left: 1px solid blue"/></mrow></mfrac></math>
mspace example

If the<mspace> element does not have its computeddisplay property equal toblock math orinline math then it is laid out according to the CSS specification where the corresponding value is described. Otherwise, the<mspace> element is laid out as shown onFigure9. Themin-content inline size,max-content inline size andinline size of the math content are equal to the resolved value of thewidth property. Theblock size of the math content is equal to the resolved value of theheight property. Theline-ascent of the math content is equal to the requested line-ascent determined above.

Figure9Box model for the<mspace> element
Note
The terminology height/depth comes from [MATHML3], itself inspired from [TEXBOOK].
3.2.5.1Definition of space-like elements

A number of MathML presentation elements are "space-like" in the sense that they typically render as whitespace, and do not affect the mathematical meaning of the expressions in which they appear. As a consequence, these elements often function in somewhat exceptional ways in other MathML expressions.

AMathML Core element is aspace-like element if it is:

  1. anmtext ormspace;
  2. or agrouping element ormpadded all of whosein-flow children arespace-like.

The same definitions apply for boxes in the visual formatting model where ananonymous <mrow> box is treated as agrouping element.

Note
Note that anmphantom is not automatically defined to be space-like, unless its content is space-like. This is because operator spacing is affected by whether adjacent elements are space-like. Since the<mphantom> element is primarily intended as an aid in aligning expressions, operators adjacent to an<mphantom> should behave as if they were adjacent to the contents of the<mphantom>, rather than to an equivalently sized area of whitespace.

3.2.6String Literal<ms>

ms element is used to represent "string literals" in expressions meant to be interpreted by computer algebra systems or other systems containing "programming languages".

The<ms> element accepts the attributes described in2.1.3Global Attributes. Its layout algorithm is the same as themtext element.

In the following example,ms is used to write a literal string of characters:

<math><mi>s</mi><mo>=</mo><ms>"hello world"</ms></math>
ms example
Note
In MathML3, it was possible to use thelquote andrquote attributes to respectively specify the strings to use as opening and closing quotes. These are no longer supported and the quotes must instead be specified as part of the text of the<ms> element. One can add CSS rules to legacy documents in order to preserve visual rendering. For example, in left-to-right direction:
ms:before, ms:after {content:"\0022";}ms[lquote]:before {content:attr(lquote);}ms[rquote]:after {content:attr(rquote);}

3.3General Layout Schemata

Besides tokens there are several families of MathML presentation elements. One family of elements deals with various "scripting" notations, such as subscript and superscript. Another family is concerned with matrices and tables. The remainder of the elements, discussed in this section, describe other basic notations such as fractions and radicals, or deal with general functions such as setting style properties and error handling.

3.3.1Group Sub-Expressions<mrow>

Themrow element is used to group together any number of sub-expressions, usually consisting of one or more<mo> elements acting as "operators" on one or more other expressions that are their "operands".

In the following example,mrow is used to group a sum "1 + 2/3" as a fraction numerator (first child ofmfrac) and to construct a fenced expression (first child ofmsup) that is raised to the power of 5. Note thatmrow alone does not add visual fences around its grouped content, one has to explicitly specify them using themo element.

Within themrow elements, one can see that vertical alignment of children (according to thealphabetic baseline or themathematical baseline) is properly performed, fences are vertically stretched and spacing around the binary + operator automatically calculated.

<math><msup><mrow><mo>(</mo><mfrac><mrow><mn>1</mn><mo>+</mo><mfrac><mn>2</mn><mn>3</mn></mfrac></mrow><mn>4</mn></mfrac><mo>)</mo></mrow><mn>5</mn></msup></math>
mrow example

The<mrow> element accepts the attributes described in2.1.3Global Attributes. An<mrow> element within-flow children child1, child2, …, childN is laid out as shown onFigure10. The child boxes are put in a row one after the other with all theiralphabetic baselines aligned.

Figure10Box model for the<mrow> element
Note
Because the box model ensures alignment ofalphabetic baselines, fraction bars or symmetric stretchy operators will also be aligned along themath axis in the typical case whenAxisHeight is the same for allin-flow children.
3.3.1.1Algorithm for stretching operators along the block axis
Figure11Symmetric and non-symmetric stretching of operators along theblock axis

Thealgorithm for stretching operators along the block axis consists in the following steps:

  1. If there is ablock stretch size constraint or aninline stretch size constraint then the element being laid out is anembellished operator. Lay out the onein-flow child that is anembellished operator with the same stretch size constraint and all the otherin-flow children without any stretch size constraint and stop.
  2. Otherwise, split the list ofin-flow children into a first listLToStretch containingembellished operators with astretchy property and blockstretch axis; and a second listLNotToStretch.
  3. Perform layout without any stretch size constraint on all the items ofLNotToStretch. IfLToStretch is empty then stop. IfLNotToStretch is empty, perform layout withblock stretch size constraint(0, 0) for all the items ofLToStretch.
  4. Calculate the unconstrained target sizesUascent andUdescent as respectively the maximum ink ascent and maximum ink descent of themargin boxes ofin-flow children that have been laid out in the previous step.
  5. Lay out or relayout all the elements ofLToStretch withblock stretch size constraint(Uascent, Udescent).
3.3.1.2Layout of<mrow>

If the box is not ananonymous <mrow> box and the associated element does not have its computeddisplay property equal toblock math orinline math then it is laid out according to the CSS specification where the corresponding value is described. Otherwise, the layout below is performed.

A child box isslanted if it is not anembellished operator and has nonzeroitalic correction.

Note
Large operators may have nonzeroitalic correction but that one is used when attaching scripts. More generally, allembellished operators are treated as non-slanted since the spacing around them is calculated as specified bylspace andrspace.

Themin-content inline size (respectivelymax-content inline size) are calculated using the following algorithm:

  1. Setadd-space to true if the box corresponds to amath element or is not anembellished operator; and to false otherwise.
  2. Setinline-offset to 0.
  3. Setprevious-italic-correction to 0.
  4. For eachin-flow child:
    1. If the child is notslanted, then incrementinline-offset byprevious-italic-correction.
    2. If the child is anembellished operator andadd-space is true then incrementinline-offset by itslspace property.
    3. Incrementinline-offset by themin-content inline size (respectivelymax-content inline size) of the child'smargin box.
    4. If the child isslanted then setprevious-italic-correction to itsitalic correction. Otherwise set it to 0.
    5. If the child is anembellished operator andadd-space is true then incrementinline-offset by itsrspace property.
  5. Incrementinline-offset byprevious-italic-correction.
  6. Returninline-offset.

Thein-flow children are laid out using thealgorithm for stretching operators along the block axis.

Theinline size of the math content is calculated like themin-content inline size andmax-content inline size of the math content, using theinline size of thein-flow children'smargin boxes instead.

Theink line-ascent (respectivelyline-ascent) of the math content is the maximum of theink line-ascents (respectivelyline-ascents) of all thein-flow children'smargin boxes. Similarly, theink line-descent (respectivelyline-descent) of the math content is the maximum of theink line-descents (respectivelyink line-ascents) of all thein-flow children'smargin boxes.

Thein-flow children are positioned using the following algorithm:

  1. Setadd-space to true if the box corresponds to amath element or is not anembellished operator; and to false otherwise.
  2. Setinline-offset to 0.
  3. Setprevious-italic-correction to 0.
  4. For eachin-flow child:
    1. If the child is notslanted, then incrementinline-offset byprevious-italic-correction.
    2. If the child is anembellished operator andadd-space is true then incrementinline-offset by itslspace property.
    3. Set theinline offset of the child toinline-offset and itsblock offset such that thealphabetic baseline of the child is aligned with thealphabetic baseline.
    4. Incrementinline-offset by theinline size of the child'smargin box.
    5. If the child isslanted then setprevious-italic-correction to itsitalic correction. Otherwise set it to 0.
    6. If the child is anembellished operator andadd-space is true then incrementinline-offset by itsrspace property.

Theitalic correction of the math content is set to the italic correction of the lastin-flow child, which is the final value ofprevious-italic-correction.

3.3.2Fractions<mfrac>

Themfrac element is used for fractions. It can also be used to mark up fraction-like objects such as binomial coefficients and Legendre symbols.

If the<mfrac> element does not have its computeddisplay property equal toblock math orinline math then it is laid out according to the CSS specification where the corresponding value is described. Otherwise, the layout below is performed.

The<mfrac> element accepts the attributes described in2.1.3Global Attributes as well as the following attribute:

Thelinethickness attribute indicates thefraction line thickness to use for the fraction bar. If present, it must have a value that is a valid<length-percentage>. If the attribute is absent or has an invalid value,FractionRuleThickness is used as the default value. A percentage is interpreted relative to that default value. A negative value is interpreted as 0.

The following example contains four fractions with differentlinethickness values. The bars are always aligned with the middle of plus and minus signs. The numerator and denominator are horizontally centered. The fractions that are not indisplaystyle use smaller gaps and font-size.

<math><mn>0</mn><mo>+</mo><mfracdisplaystyle="true"><mn>1</mn><mn>2</mn></mfrac><mo></mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>+</mo><mfraclinethickness="200%"><mn>1</mn><mn>234</mn></mfrac><mo></mo><mrow><mo>(</mo><mfraclinethickness="0"><mn>123</mn><mn>4</mn></mfrac><mo>)</mo></mrow></math>
mfrac example

The<mfrac> element setsdisplaystyle tofalse, or if it was alreadyfalse incrementsscriptlevel by 1, within its children. It setsmath-shift tocompact within its second child. To avoid visual confusion between the fraction bar and another adjacent items (e.g. minus sign or another fraction's bar), a default 1-pixel space is added around the element. Theuser agent stylesheet must contain the following rules:

mfrac {padding-inline:1px;}mfrac > * {math-depth: auto-add;math-style: compact;}mfrac >:nth-child(2) {math-shift: compact;}

If the<mfrac> element has less or more than twoin-flow children, its layout algorithm is the same as themrow element. Otherwise, the firstin-flow child is callednumerator, the secondin-flow child is calleddenominator and the layout algorithm is explained below.

Note
In practice, an<mfrac> element has two children that arein-flow. Hence the CSS rules basically performscriptlevel,displaystyle andmath-shift changes for thenumerator anddenominator.
3.3.2.1Fraction with nonzero line thickness

If thefraction line thickness is nonzero, the<mfrac> element is laid out as shown onFigure12. The fraction bar must only be painted if thevisibility of the<mfrac> element isvisible. In that case, the fraction bar must be painted with thecolor of the<mfrac> element.

Figure12Box model for the<mfrac> element

Themin-content inline size (respectivelymax-content inline size) of content is the maximum between themin-content inline size (respectivelymax-content inline size) of thenumerator'smargin box and themin-content inline size (respectivelymax-content inline size) of thedenominator'smargin box.

If there is aninline stretch size constraint or ablock stretch size constraint then thenumerator is also laid out with the same stretch size constraint, otherwise it is laid out without any stretch size constraint. Thedenominator is always laid out without any stretch size constraint.

Theinline size of the math content is the maximum between theinline size of thenumerator'smargin box and theinline size of thedenominator'smargin box.

NumeratorShift is the maximum between:

DenominatorShift is the maximum between:

Theline-ascent of the math content is the maximum between:

Theline-descent of the math content is the maximum between:

Theinline offset of thenumerator (respectivelydenominator) is half theinline size of the math content − half theinline size of thenumerator'smargin box (respectivelydenominator'smargin box).

Thealphabetic baseline of thenumerator (respectivelydenominator) is shifted away from thealphabetic baseline by a distance ofNumeratorShift (respectivelyDenominatorShift) towards theline-over (respectivelyline-under).

Themath content box is placed within thecontent box so that their block-start edges are aligned and the middles of these edges are at the same position.

Theinline size of the fraction bar is theinline size of thecontent box and its inline-start edge is the aligned with the one thecontent box. The center of the fraction bar is shifted away from thealphabetic baseline of themath content box by a distance ofAxisHeight towards theline-over. Itsblock size is thefraction line thickness.

3.3.2.2Fraction with zero line thickness

If thefraction line thickness is zero, the<mfrac> element is instead laid out as shown onFigure13.

Figure13Box model for the<mfrac> element without bar

Themin-content inline size,max-content inline size andinline size of the math content are calculated the same as in3.3.2.1Fraction with nonzero line thickness.

If there is aninline stretch size constraint or ablock stretch size constraint then thenumerator is also laid out with the same stretch size constraint and otherwise it is laid out without any stretch size constraint. Thedenominator is always laid out without any stretch size constraint.

If themath-style iscompact thenTopShift andBottomShift are respectively set toStackTopShiftUp andStackBottomShiftDown. Otherwisemath-style isnormal and they are respectively set toStackTopDisplayStyleShiftUp andStackBottomDisplayStyleShiftDown.

TheGap is defined to be (BottomShift − theink line-ascent of thedenominator'smargin box) + (TopShift − theink line-descent of thenumerator'smargin box). Ifmath-style iscompact thenGapMin isStackGapMin, otherwisemath-style isnormal and it isStackDisplayStyleGapMin. If Δ =GapMinGap is positive thenTopShift andBottomShift are respectively increased by Δ/2 and Δ − Δ/2.

Theline-ascent of the math content is the maximum between:

Theline-descent of the math content is the maximum between:

Theinline offsets of thenumerator anddenominator are calculated the same as in3.3.2.1Fraction with nonzero line thickness.

Thealphabetic baseline of thenumerator (respectivelydenominator) is shifted away from thealphabetic baseline by a distance ofTopShift (respectively −BottomShift) towards theline-over (respectivelyline-under).

Themath content box is placed within thecontent box so that their block-start edges are aligned and the middles of these edges are at the same position.

3.3.3Radicals<msqrt>,<mroot>

Theradical elements construct an expression with a root symbol √ with a line over the content. Themsqrt element is used for square roots, while themroot element is used to draw radicals with indices, e.g. a cube root.

The<msqrt> and<mroot> elements accept the attributes described in2.1.3Global Attributes.

The following example contains a square root written withmsqrt and a cube root written withmroot. Note thatmsqrt has several children and the square root applies to all of them.mroot has exactly two children: it is a root of index the second child (the number 3), applied to the first child (the square root). Also note these elements only change the font-size within themroot index, but it is scaled down more than within the numerator and denumerator of the fraction.

<math><mroot><msqrt><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>+</mo><mn>4</mn></msqrt><mn>3</mn></mroot><mo>+</mo><mn>0</mn></math>
msqrt-mroot example

The<msqrt> and<mroot> elements setsmath-shift tocompact. The<mroot> element incrementsscriptlevel by 2, and setsdisplaystyle to "false" in all but its first child. Theuser agent stylesheet must contain the following rule in order to implement that behavior:

mroot >:not(:first-child) {math-depth:add(2);math-style: compact;}mroot, msqrt {math-shift: compact;}

If the<msqrt> or<mroot> element do not have their computeddisplay property equal toblock math orinline math then they are laid out according to the CSS specification where the corresponding value is described. Otherwise, the layout below is performed.

If the<mroot> has less or more than twoin-flow children, its layout algorithm is the same as themrow element. Otherwise, the firstin-flow child is calledmroot base and the secondin-flow child is calledmroot index and its layout algorithm is explained below.

Note
In practice, an<mroot> element has two children that arein-flow. Hence the CSS rules basically performscriptlevel anddisplaystyle changes for the index.

The<msqrt> elementgenerates an anonymous <mrow> box called themsqrt base.

3.3.3.1Radical symbol

The radical symbol must only be painted if thevisibility of the<msqrt> or<mroot> element isvisible. In that case, the radical symbol must be painted with thecolor of that element.

Letdir be the computeddirection of the<msqrt> or<mroot> element. Theradical glyph is the glyph obtained as a result of runningget a glyph corresponding to the U+221A SQUARE ROOT character givendir.

Theradical gap is given byRadicalVerticalGap if themath-style iscompact andRadicalDisplayStyleVerticalGap if themath-style isnormal.

The radical target size for the stretchy radical glyph is the sum ofRadicalRuleThickness,radical gap and the ink height of the base.

Thebox metrics of the radical glyph andpainting of the surd are given by the algorithm toshape a stretchy glyph to the target size for the radical glyph in theblock dimension.

3.3.3.2Square root

The<msqrt> element is laid out as shown onFigure14.

Figure14Box model for the<msqrt> element

Themin-content inline size (respectivelymax-content inline size) of the math content is the sum of thepreferred inline size of a glyph stretched along the block axis for theradical glyph and of themin-content inline size (respectivelymax-content inline size) of themsqrt base'smargin box.

Theinline size of the math content is the sum of the advance width of thebox metrics of the radical glyph and of theinline size of themsqrt base's margin's box.

Theline-ascent of the math content is the maximum between:

Theline-descent of the math content is the maximum between:

Theinline size of the overbar is theinline size of themsqrt base's margin's box. Theinline offsets of themsqrt base and overbar are also the same and equal to the width of thebox metrics of the radical glyph.

Thealphabetic baseline of themsqrt base is aligned with thealphabetic baseline. Theblock size of the overbar isRadicalRuleThickness. Its vertical center is shifted away from thealphabetic baseline by a distance towards theline-over equal to theline-ascent of the math content, minus theRadicalExtraAscender, minus half theRadicalRuleThickness.

Finally, thepainting of the surd is performed:

3.3.3.3Root with index

The<mroot> element is laid out as shown onFigure15. Themroot index is first ignored and themroot base and radical glyph are laid out as shown on figureFigure14 using the same algorithm as in3.3.3.2Square root in order to produce a margin box B (represented in green).

Figure15Box model for the<mroot> element

Themin-content inline size (respectivelymax-content inline size) of the math content is the sum of max(0,RadicalKernBeforeDegree), themroot index'smin-content inline size (respectivelymax-content inline size) of themroot index'smargin box, max(−min-content inline size,RadicalKernAfterDegree) (respectively max(−max-content inline size of themroot index'smargin box,RadicalKernAfterDegree)) and of themin-content inline size (respectivelymax-content inline size) of B.

Using the same clamping,AdjustedRadicalKernBeforeDegree andAdjustedRadicalKernAfterDegree are respectively defined as max(0,RadicalKernBeforeDegree) and is max(−inline size of the index'smargin box,RadicalKernAfterDegree).

Theinline size of the math content is the sum ofAdjustedRadicalKernBeforeDegree, theinline size of the index'smargin box,AdjustedRadicalKernAfterDegree and of theinline size of B.

Theline-ascent of the math content is the maximum between:

Theline-descent of the math content is the maximum between:

Theinline offset of the index isAdjustedRadicalKernBeforeDegree. The inline-offset of themroot base is the same + theinline size of the index'smargin box.

Thealphabetic baseline of B is aligned with thealphabetic baseline. Thealphabetic baseline of the index is shifted away from theline-under edge by a distance ofRadicalDegreeBottomRaisePercent × theblock size of B + theline-descent of the index'smargin box.

Note
In general, the kerning before the root index is positive while the kerning after it is negative, which means that the root element will have some inline-start space and that the root index will overlap the surd.

3.3.4Style Change<mstyle>

Historically, themstyle element was introduced to make style changes that affect the rendering of its contents.

The<mstyle> element accepts the attributes described in2.1.3Global Attributes. Its layout algorithm is the same as themrow element.

Note
<mstyle> is implemented for compatibility with full MathML. Authors whose only target is MathML Core are encouraged to use CSS for styling.

In the following example,mstyle is used to set thescriptlevel anddisplaystyle. Observe this is respectively affecting the font-size and placement of subscripts of their descendants. In MathML Core, one could just have usedmrow elements instead.

<math><munder><momovablelimits="true">*</mo><mi>A</mi></munder><mstylescriptlevel="1"><mstyledisplaystyle="true"><munder><momovablelimits="true">*</mo><mi>B</mi></munder><munder><momovablelimits="true">*</mo><mi>C</mi></munder></mstyle><munder><momovablelimits="true">*</mo><mi>D</mi></munder></mstyle></math>
mstyle example

3.3.5Error Message<merror>

Themerror element displays its contents as an ”error message”. The intent of this element is to provide a standard way for programs that generate MathML from other input to report syntax errors in their input.

In the following example,merror is used to indicate a parsing error for some LaTeX-like input:

<math><mfrac><merror><mtext>Syntax error: \frac{1}</mtext></merror><mn>3</mn></mfrac></math>
merror example

The<merror> element accepts the attributes described in2.1.3Global Attributes. Its layout algorithm is the same as themrow element. Theuser agent stylesheet must contain the following rule in order to visually highlight the error message:

merror {border:1px solid red;background-color: lightYellow;}

3.3.6Adjust Space Around Content<mpadded>

Thempadded element renders the same as itsin-flow child content, but with the size and relative positioning point of its content modified according to<mpadded>’s attributes.

The<mpadded> element accepts the attributes described in2.1.3Global Attributes as well as the following attributes:

Thewidth,height,depth,lspace andvoffset if present, must have a value that is a valid<length-percentage>.

In the following example,mpadded is used to tweak spacing around a fraction (a blue background is used to visualize it). Without attributes, it behaves like anmrow but the attributes allow to specify the size of the box (width, height, depth) and position of the fraction within that box (lspace and voffset).

<math><mrow><mn>1</mn><mpaddedstyle="background: lightblue;"><mfrac><mn>23456</mn><mn>78</mn></mfrac></mpadded><mn>9</mn></mrow><mo>+</mo><mrow><mn>1</mn><mpaddedlspace="2em"voffset="-1em"height="1em"depth="3em"width="7em"style="background: lightblue;"><mfrac><mn>23456</mn><mn>78</mn></mfrac></mpadded><mn>9</mn></mrow></math>
mpadded example
3.3.6.1Inner box and requested parameters

Thempadded elementgenerates an anonymous <mrow> box called thempadded inner box with parameters called inner inline size, innerline-ascent and inner line-descent.

The requested<mpadded> parameters are determined as follows:

  • The requested width is the resolved value of thewidth property. If thewidth attribute is present, valid and not a percentage then that attribute is used as apresentational hint setting the element'swidth property to the corresponding value.
  • If theheight attribute is absent, invalid or a percentage then the requested height is the innerline-ascent. Otherwise the requested height is the resolved value of theheight attribute, clamping negative values to0.
  • If thedepth attribute is absent, invalid or a percentage then the requested depth is the innerline-ascent. Otherwise the requested depth is the resolved value of thedepth attribute, clamping negative values to0.
  • If thelspace attribute is absent, invalid or a percentage then the requested lspace is 0. Otherwise the requested lspace is the resolved value of thelspace attribute, clamping negative values to0.
  • If thevoffset attribute is absent, invalid or a percentage then the requested voffset is 0. Otherwise the requested voffset is the resolved value of thevoffset attribute.
    Note
    Negativevoffset values are not clamped to0.
3.3.6.2Layout of<mpadded>

If the<mpadded> element does not have its computeddisplay property equal toblock math orinline math then it is laid out according to the CSS specification where the corresponding value is described. Otherwise, it is laid out as shown onFigure16.

Figure16Box model for the<mpadded> element

Themin-content inline size (respectivelymax-content inline size) of the math content is the requested width calculated in3.3.6.1Inner box and requested parameters but using themin-content inline size (respectivelymax-content inline size) of thempadded inner box instead of the "inner inline size".

Theinline size of the math content is the requested width calculated in3.3.6.1Inner box and requested parameters.

Theline-ascent of the math content is the requested height. Theline-descent of the math content is the requested depth.

Thempadded inner box is placed so that itsalphabetic baseline is shifted away from thealphabetic baseline by the requested voffset towards theline-over.

3.3.7Making Sub-Expressions Invisible<mphantom>

Historically, themphantom element was introduced to render its content invisibly, but with the same metrics size and other dimensions, includingalphabetic baseline position that its contents would have if they were rendered normally.

In the following example,mphantom is used to ensure alignment of corresponding parts of the numerator and denominator of a fraction:

<math><mfrac><mrow><mi>x</mi><mo>+</mo><mi>y</mi><mo>+</mo><mi>z</mi></mrow><mrow><mi>x</mi><mphantom><moform="infix">+</mo><mi>y</mi></mphantom><mo>+</mo><mi>z</mi></mrow></mfrac></math>
mphantom example

The<mphantom> element accepts the attributes described in2.1.3Global Attributes. Its layout algorithm is the same as themrow element. Theuser agent stylesheet must contain the following rule in order to hide the content:

mphantom {visibility: hidden;}
Note
<mphantom> is implemented for compatibility with full MathML. Authors whose only target is MathML Core are encouraged to use CSS for styling.

3.4Script and Limit Schemata

The elements described in this section position one or more scripts around a base. Attaching various kinds of scripts and embellishments to symbols is a very common notational device in mathematics. For purely visual layout, a single general-purpose element could suffice for positioning scripts and embellishments in any of the traditional script locations around a given base. However, in order to capture the abstract structure of common notation better, MathML provides several more specialized scripting elements.

In addition to sub-/superscript elements, MathML has overscript and underscript elements that place scripts above and below the base. These elements can be used to place limits on large operators, or for placing accents and lines above or below the base.

3.4.1Subscripts and Superscripts<msub>,<msup>,<msubsup>

Themsub,msup andmsubsup elements are used to attach subscript and superscript to a MathML expression. They accept the attributes described in2.1.3Global Attributes.

The following example shows basic use of subscripts and superscripts. The font-size is automatically scaled down within the scripts.

<math><msub><mn>1</mn><mn>2</mn></msub><mo>+</mo><msup><mn>3</mn><mn>4</mn></msup><mo>+</mo><msubsup><mn>5</mn><mn>6</mn><mn>7</mn></msubsup></math>
msub-msup-msubsup example

If the<msub>,<msup> or<msubsup> elements do not have their computeddisplay property equal toblock math orinline math then they are laid out according to the CSS specification where the corresponding value is described. Otherwise, the layout below is performed.

3.4.1.1Children of<msub>,<msup>,<msubsup>

If the<msub> element has less or more than twoin-flow children, its layout algorithm is the same as themrow element. Otherwise, the firstin-flow child is called themsub base, the secondin-flow child is called themsub subscript and the layout algorithm is explained in3.4.1.2Base with subscript.

If the<msup> element has less or more than twoin-flow children, its layout algorithm is the same as themrow element. Otherwise, the firstin-flow child is called themsup base, the secondin-flow child is called themsup superscript and the layout algorithm is explained in3.4.1.3Base with superscript.

If the<msubsup> element has less or more than threein-flow children, its layout algorithm is the same as themrow element. Otherwise, the firstin-flow child is called themsubsup base, the secondin-flow child is called themsubsup subscript, its thirdin-flow child is called themsubsup superscript and the layout algorithm is explained in3.4.1.4Base with subscript and superscript.

3.4.1.2Base with subscript

The<msub> element is laid out as shown onFigure17.LargeOpItalicCorrection is theitalic correction of themsub base if it is anembellished operator with thelargeop property and 0 otherwise.

Figure17Box model for the<msub> element

Themin-content inline size (respectivelymax-content inline size) of the math content is themin-content inline size (respectivelymax-content inline size) of themsub base'smargin boxLargeOpItalicCorrection +min-content inline size (respectivelymax-content inline size) of themsub subscript'smargin box +SpaceAfterScript.

If there is aninline stretch size constraint or ablock stretch size constraint then themsub base is also laid out with the same stretch size constraint and otherwise it is laid out without any stretch size constraint. The scripts are always laid out without any stretch size constraint.

Theinline size of the math content is the inline size of themsub base'smargin boxLargeOpItalicCorrection + theinline size of themsub subscript'smargin box +SpaceAfterScript.

SubShift is the maximum between:

Theline-ascent of the math content is the maximum between:

Theline-descent of the math content is the maximum between:

Theinline offset of themsub base is 0 and theinline offset of themsub subscript is theinline size of themsub base'smargin boxLargeOpItalicCorrection.

Themsub base is placed so that itsalphabetic baseline matches thealphabetic baseline. Themsub subscript is placed so that itsalphabetic baseline is shifted away from thealphabetic baseline bySubShift towards theline-under.

3.4.1.3Base with superscript

The<msup> element is laid out as shown onFigure18.ItalicCorrection is theitalic correction of themsup base if it is not anembellished operator with thelargeop property and 0 otherwise.

Figure18Box model for the<msup> element

Themin-content inline size (respectivelymax-content inline size) of the math content is themin-content inline size (respectivelymax-content inline size) of themsup base'smargin box +ItalicCorrection + themin-content inline size (respectivelymax-content inline size) of themsup superscript'smargin box +SpaceAfterScript.

If there is aninline stretch size constraint or ablock stretch size constraint then themsup base is also laid out with the same stretch size constraint and otherwise it is laid out without any stretch size constraint. The scripts are always laid out without any stretch size constraint.

Theinline size of the math content is theinline size of themsup base'smargin box +ItalicCorrection + theinline size of themsup superscript'smargin box +SpaceAfterScript.

SuperShift is the maximum between:

Theline-ascent of the math content is the maximum between:

Theline-descent of the math content is the maximum between:

Theinline offset of themsup base is 0 and theinline offset ofmsup superscript is theinline size of themsup base'smargin box +ItalicCorrection.

Themsup base is placed so that itsalphabetic baseline matches thealphabetic baseline. Themsup superscript is placed so that itsalphabetic baseline is shifted away from thealphabetic baseline bySuperShift towards theline-over.

3.4.1.4Base with subscript and superscript

The<msubsup> element is laid out as shown onFigure18.LargeOpItalicCorrection andSubShift are set as in3.4.1.2Base with subscript.ItalicCorrection andSuperShift are set as in3.4.1.3Base with superscript.

Figure19Box model for the<msubsup> element

Themin-content inline size (respectivelymax-content inline size andinline size) of the math content is the maximum between themin-content inline size (respectivelymax-content inline size andinline size) of the math content calculated in3.4.1.2Base with subscript and3.4.1.3Base with superscript.

If there is aninline stretch size constraint or ablock stretch size constraint then themsubsup base is also laid out with the same stretch size constraint and otherwise it is laid out without any stretch size constraint. The scripts are always laid out without any stretch size constraint.

If there is aninline stretch size constraint or ablock stretch size constraint then themsubsup base is also laid out with the same stretch size constraint and otherwise it is laid out without any stretch size constraint. The scripts are always laid out without any stretch size constraint.

SubSuperGap is the gap between the two scripts along theblock axis and is defined by (SubShift − theink line-ascent of themsubsup subscript'smargin box) + (SuperShift − theink line-descent of themsubsup superscript'smargin box). IfSubSuperGap is not at leastSubSuperscriptGapMin then the following steps are performed to ensure that the condition holds:

  1. Let Δ beSuperscriptBottomMaxWithSubscript − (SuperShift − theink line-descent of themsubsup superscript'smargin box). If Δ > 0 then set Δ to the minimum between Δ setSubSuperscriptGapMinSubSuperGap and increaseSuperShift (and soSubSuperGap too) by Δ.
  2. Let Δ beSubSuperscriptGapMinSubSuperGap. If Δ > 0 then increaseSubscriptShift (and soSubSuperGap too) by Δ.

Theink line-ascent (respectivelyline-ascent,ink line-descent,line-descent) of the math content is set to the maximum of theink line-ascent (respectivelyline-ascent,ink line-descent,line-descent) of the math content calculated in3.4.1.2Base with subscript and3.4.1.3Base with superscript but using the adjusted valuesSubShift andSuperShift above.

Theinline offset andblock offset of themsubsup base and scripts are performed the same as described in3.4.1.2Base with subscript and3.4.1.3Base with superscript.

Note

Even when themsubsup subscript (respectivelymsubsup superscript) is an empty box,<msubsup> does not generally render the same as3.4.1.3Base with superscript (respectively3.4.1.2Base with subscript) because of the additional constraint onSubSuperGap. Moreover, positioning the emptymsubsup subscript (respectivelymsubsup superscript) may also change the total size.

In order to keep the algorithm simple, no attempt is made to handle empty scripts in a special way.

3.4.2Underscripts and Overscripts<munder>,<mover>,<munderover>

Themunder,mover andmunderover elements are used to attach accents or limits placed under or over a MathML expression.

The<munderover> element accepts the attribute described in2.1.3Global Attributes as well as the following attributes:

Similarly, the<mover> element (respectively<munder> element) accepts the attribute described in2.1.3Global Attributes as well as theaccent attribute (respectively theaccentunder attribute).

accent,accentunder attributes, if present, must have values that arebooleans. If these attributes are absent or invalid, they are treated as equal tofalse. User agents must implement them as described in3.4.4Displaystyle, scriptlevel and math-shift in scripts.

The following example shows basic use of under- and overscripts. The font-size is automatically scaled down within the scripts, unless they are meant to be accents.

<math><munder><mn>1</mn><mn>2</mn></munder><mo>+</mo><mover><mn>3</mn><mn>4</mn></mover><mo>+</mo><munderover><mn>5</mn><mn>6</mn><mn>7</mn></munderover><mo>+</mo><munderoveraccent="true"><mn>8</mn><mn>9</mn><mn>10</mn></munderover><mo>+</mo><munderoveraccentunder="true"><mn>11</mn><mn>12</mn><mn>13</mn></munderover></math>
munder-over-munderover example

If the<munder>,<mover> or<munderover> elements do not have their computeddisplay property equal toblock math orinline math then they are laid out according to the CSS specification where the corresponding value is described. Otherwise, the layout below is performed.

3.4.2.1Children of<munder>,<mover>,<munderover>

If the<munder> element has less or more than twoin-flow children, its layout algorithm is the same as themrow element. Otherwise, the firstin-flow child is called themunder base and the secondin-flow child is called themunder underscript.

If the<mover> element has less or more than twoin-flow children, its layout algorithm is the same as themrow element. Otherwise, the firstin-flow child is called themover base and the secondin-flow child is called themover overscript.

If the<munderover> element has less or more than threein-flow children, its layout algorithm is the same as themrow element. Otherwise, the firstin-flow child is called themunderover base, the secondin-flow child is called themunderover underscript and its thirdin-flow child is called themunderover overscript.

If the<munder>,<mover> or<munderover> elements have a computedmath-style property equal tocompact and their base is anembellished operator with themovablelimits property, then their layout algorithms are respectively the same as the ones described for<msub>,<msup> and<msubsup> in3.4.1.2Base with subscript,3.4.1.3Base with superscript and3.4.1.4Base with subscript and superscript.

Otherwise, the<munder>,<mover> and<munderover> layout algorithms are respectively described in3.4.2.3Base with underscript,3.4.2.4Base with overscript and3.4.2.5Base with underscript and overscript.

3.4.2.2Algorithm for stretching operators along the inline axis

Thealgorithm for stretching operators along the inline axis is as follows.

  1. If there is aninline stretch size constraint orblock stretch size constraint then the element being laid out is anembellished operator. Lay out the base with the same stretch size constraint.
  2. Split the list ofin-flow children that have not been laid out yet into a first listLToStretch containingembellished operators with astretchy property and inlinestretch axis; and a second listLNotToStretch.
  3. Perform layout without any stretch size constraint on all the items ofLNotToStretch. IfLToStretch is empty then stop. IfLNotToStretch is empty, perform layout withinline stretch size constraint 0 for all the items ofLToStretch.
  4. Calculate the target sizeT to the maximuminline size of themargin boxes of child boxes that have been laid out in the previous step.
  5. Lay out or relayout all the elements ofLToStretch withinline stretch size constraintT.
3.4.2.3Base with underscript

The<munder> element is laid out as shown onFigure20.LargeOpItalicCorrection is theitalic correction of themunder base if it is anembellished operator with thelargeop property and 0 otherwise.

Figure20Box model for the<munder> element

Themin-content inline size (respectivelymax-content inline size) of the math content are calculated like theinline size of the math content below but replacing theinline sizes of themunder base'smargin box andmunder underscript'smargin box with themin-content inline size (respectivelymax-content inline size) of themunder base'smargin box andmunder underscript'smargin box.

Thein-flow children are laid out using thealgorithm for stretching operators along the inline axis.

Theinline size of the math content is calculated by determining the absolute difference between:

If m is the minimum calculated in the second item above then theinline offset of themunder base is −m − half theinline size of the base'smargin box. Theinline offset of themunder underscript is −m − half theinline size of themunder underscript'smargin box − halfLargeOpItalicCorrection.

ParametersUnderShift andUnderExtraDescender are determined by considering three cases in the following order:

  1. Themunder base is anembellished operator with thelargeop property.UnderShift is the maximum of

    UnderExtraDescender is 0.

  2. Themunder base is anembellished operator with thestretchy property andstretch axis inline.UnderShift is the maximum of:

    UnderExtraDescender is 0.
  3. Otherwise,UnderShift is equal toUnderbarVerticalGap if theaccentunder attribute is not anASCII case-insensitive match totrue and to zero otherwise.UnderExtraAscender isUnderbarExtraDescender.

Theline-ascent of the math content is the maximum between:

Theline-descent of the math content is the maximum between:

Thealphabetic baseline of themunder base is aligned with thealphabetic baseline. Thealphabetic baseline of themunder underscript is shifted away from thealphabetic baseline and towards theline-under by a distance equal to theink line-descent of themunder base'smargin box +UnderShift.

Themath content box is placed within thecontent box so that their block-start edges are aligned and the middles of these edges are at the same position.

3.4.2.4Base with overscript

The<mover> element is laid out as shown onFigure21.LargeOpItalicCorrection is theitalic correction of themover base if it is anembellished operator with thelargeop property and 0 otherwise.

Figure21Box model for the<mover> element

Themin-content inline size (respectivelymax-content inline size) of the math content are calculated like theinline size of the math content below but replacing theinline sizes of themover base'smargin box andmover overscript'smargin box with themin-content inline size (respectivelymax-content inline size) of themover base'smargin box andmover overscript'smargin box.

Thein-flow children are laid out using thealgorithm for stretching operators along the inline axis.

TheTopAccentAttachment is thetop accent attachment of themover overscript or half theinline size of themover overscript'smargin box if it is undefined.

Theinline size of the math content is calculated by applying thealgorithm for stretching operators along the inline axis for layout and determining the absolute difference between:

If m is the minimum calculated in the second item above then theinline offset of themover base is −m − half theinline size of the base's margin. Theinline offset of themover overscript is −m − half theinline size of themover overscript'smargin box + halfLargeOpItalicCorrection.

ParametersOverShift andOverExtraDescender are determined by considering three cases in the following order:

  1. Themover base is anembellished operator with thelargeop property.OverShift is the maximum of

    OverExtraAscender is 0.

  2. Themover base is anembellished operator with thestretchy property andstretch axis inline.OverShift is the maximum of:

    OverExtraDescender is 0.
  3. Otherwise,OverShift is equal to

    1. OverbarVerticalGap if theaccent attribute is not anASCII case-insensitive match totrue.
    2. OrAccentBaseHeight minus theline-ascent of themover base'smargin box if this difference is nonnegative.
    3. Or 0 otherwise.

    OverExtraAscender isOverbarExtraAscender.

Note
For accent overscripts and bases withline-ascents that are at mostAccentBaseHeight, the rule from [OPEN-FONT-FORMAT] [TEXBOOK] is actually to align thealphabetic baselines of the overscripts and of the bases. This assumes that accent glyphs are designed in such a way that their ink bottoms are more or lessAccentBaseHeight above theiralphabetic baselines. Hence, the previous rule will guarantee that all the overscript bottoms are aligned while still avoiding collision with the bases. However, MathML can have arbitrary accent overscripts, so a more general and simpler rule is provided above: Ensure that the bottom of overscript is at leastAccentBaseHeight above thealphabetic baseline of the base.

Theline-ascent of the math content is the maximum between:

Theline-descent of the math content is the maximum between:

Thealphabetic baseline of themover base is aligned with thealphabetic baseline. Thealphabetic baseline of themover overscript is shifted away from thealphabetic baseline and towards theline-over by a distance equal to theink line-ascent of the base +OverShift.

Themath content box is placed within thecontent box so that their block-start edges are aligned and the middles of these edges are at the same position.

3.4.2.5Base with underscript and overscript

The general layout of<munderover> is shown onFigure22. TheLargeOpItalicCorrection,UnderShift,UnderExtraDescender,OverShift,OverExtraDescender parameters are calculated the same as in3.4.2.3Base with underscript and3.4.2.4Base with overscript.

Figure22Box model for the<munderover> element

Themin-content inline size,max-content inline size andinline size of the math content are calculated as an absolute difference between a maximuminline offset and minimuminline offset. These extrema are calculated by taking the extremum value of the corresponding extrema calculated in3.4.2.3Base with underscript and3.4.2.4Base with overscript. Theinline offsets of themunderover base,munderover underscript andmunderover overscript are calculated as in these sections but using the new minimum m (minimum of the corresponding minima).

Like in these sections, thein-flow children are laid out using thealgorithm for stretching operators along the inline axis.

Theline-ascent andline-descent of the math content are also calculated by taking the extremum value of the extrema calculated in3.4.2.3Base with underscript and3.4.2.4Base with overscript.

Finally, thealphabetic baselines of themunderover base,munderover underscript andmunderover overscript are calculated as in sections3.4.2.3Base with underscript and3.4.2.4Base with overscript.

Themath content box is placed within thecontent box so that their block-start edges are aligned and the middles of these edges are at the same position.

Note

When the underscript (respectively overscript) is an empty box, the base and overscript (respectively underscript) are laid out similarly to3.4.2.4Base with overscript (respectively3.4.2.3Base with underscript) but the position of the empty underscript (respectively overscript) may add extra space. In order to keep the algorithm simple, no attempt is made to handle empty scripts in a special way.

3.4.3Prescripts and Tensor Indices<mmultiscripts>

Presubscripts and tensor notations are represented by themmultiscripts element. Themprescripts element is used as a separator between the postscripts and prescripts. These two elements accept the attributes described in2.1.3Global Attributes.

The following example shows basic use of prescripts and postscripts, involving amprescripts. Emptymrow elements are used at positions where no scripts are rendered. The font-size is automatically scaled down within the scripts.

<math><mmultiscripts><mn>1</mn><mn>2</mn><mn>3</mn><mrow></mrow><mn>5</mn><mprescripts/><mn>6</mn><mrow></mrow><mn>8</mn><mn>9</mn></mmultiscripts></math>
mmultiscripts example

If the<mmultiscripts> or<mprescripts> elements do not have their computeddisplay property equal toblock math orinline math then they are laid out according to the CSS specification where the corresponding value is described. Otherwise, the layout below is performed.

The<mprescripts> element is laid out as anmrow element.

A valid<mmultiscripts> element contains the followingin-flow children:

  • A firstin-flow child, called themmultiscripts base, that is not anmprescripts element.
  • Followed by an even number ofin-flow children calledmmultiscripts postscripts, none of them being amprescripts element. These scripts form a (possibly empty) list subscript, superscript, subscript, superscript, subscript, superscript, etc. Each consecutive couple of children subscript, superscript is called asubscript/superscript pair.
  • Optionally followed by anmprescripts element and an even number ofin-flow children calledmmultiscripts prescripts, none of them being amprescripts element. These scripts form a (possibly empty) list ofsubscript/superscript pair.

If an<mmultiscripts> element is not valid then it is laid out the same as themrow element. Otherwise the layout algorithm is performed as in3.4.3.1Base with prescripts and postscripts.

3.4.3.1Base with prescripts and postscripts

The<mmultiscripts> element is laid out as shown onFigure23. For eachsubscript/superscript pair ofmmultiscripts postscripts, theItalicCorrectionLargeOpItalicCorrection are defined as in3.4.1.2Base with subscript and3.4.1.3Base with superscript.

Figure23Box model for the<mmultiscripts> element

Themin-content inline size (respectivelymax-content inline size) of the math content is calculated the same as theinline size of the math content below, but replacing "inline size" with "min-content inline size" (respectively "max-content inline size") for themmultiscripts base'smargin box and scripts'margin boxes.

If there is aninline stretch size constraint or ablock stretch size constraint themmultiscripts base is also laid out with the same stretch size constraint. Otherwise it is laid out without any stretch size constraint. The other elements are always laid out without any stretch size constraint.

Theinline size of the math content is calculated with the following algorithm:

  1. Setinline-offset to 0.
  2. For eachsubscript/superscript pair ofmmultiscripts prescripts, incrementinline-offset bySpaceAfterScript + the maximum of

  3. Incrementinline-offset by theinline size of themmultiscripts base'smargin box and setinline-size toinline-offset.
  4. For eachsubscript/superscript pair ofmmultiscripts postscripts, modifyinline-size to be at least:

    Incrementinline-offset to the maximum of:

    Incrementinline-offset bySpaceAfterScript.

  5. Returninline-size.

SubShift (respectivelySuperShift) is calculated by taking the maximum of all subshifts (respectively supershifts) of eachsubscript/superscript pair as described in3.4.1.4Base with subscript and superscript.

Theline-ascent of the math content is calculated by taking the maximum of all theline-ascent of eachsubscript/superscript pair as described in3.4.1.4Base with subscript and superscript but using theSubShift andSuperShift values calculated above.

Theline-descent of the math content is calculated by taking the maximum of all theline-descent of eachsubscript/superscript pair as described in3.4.1.4Base with subscript and superscript but using theSubShift andSuperShift values calculated above.

Finally, the placement of thein-flow children is performed using the following algorithm:

  1. Setinline-offset to 0.
  2. For eachsubscript/superscript pair ofmmultiscripts prescripts:

    1. Incrementinline-offset bySpaceAfterScript.
    2. Setpair-inline-size to the maximum of
    3. Place the subscript at inline-start positioninline-offset +pair-inline-size − theinline size of the subscript'smargin box.
    4. Place the superscript at inline-start positioninline-offset +pair-inline-size − theinline size of the superscript'smargin box.
    5. Place the subscript (respectively superscript) so itsalphabetic baseline is shifted away from thealphabetic baseline bySubShift (respectivelySuperShift) towards theline-under (respectivelyline-over).
    6. Incrementinline-offset bypair-inline-size.
  3. Place themmultiscripts base and<mprescripts> boxes atinline offsetsinline-offset and with theiralphabetic baselines aligned with thealphabetic baseline.
  4. For eachsubscript/superscript pair ofmmultiscripts postscripts:

    1. Setpair-inline-size to the maximum of
    2. Place the subscript at inline-start positioninline-offsetLargeOpItalicCorrection.
    3. Place the superscript at inline-start positioninline-offset +ItalicCorrection.
    4. Place the subscript (superscript) so itsalphabetic baseline is shifted away from thealphabetic baseline bySubShift (respectivelySuperShift) towards theline-under (respectivelyline-over).
    5. Incrementinline-offset bypair-inline-size.
    6. Incrementinline-offset bySpaceAfterScript.
Note

An<mmultiscripts> with only onesubscript/superscript pair ofmmultiscripts postscripts is laid out the same as a<msubsup> with the samein-flow children. However, asnoticed for<msubsup>, if additionally the subscript (respectively superscript) is an empty box then it is not necessarily laid out the same as an<msub> (respectively<msup>) element. In order to keep the algorithm simple, no attempt is made to handle empty scripts in a special way.

3.4.4Displaystyle, scriptlevel and math-shift in scripts

For allscripted elements, the rule of thumb is to setdisplaystyle tofalse and to incrementscriptlevel in all child elements but the first one. However, anmover (respectivelymunderover) element with anaccent attribute that is anASCII case-insensitive match totrue does not increment scriptlevel within its second child (respectively third child). Similarly,mover andmunderover elements with anaccentunder attribute that is anASCII case-insensitive match totrue do not increment scriptlevel within their second child.

<mmultiscripts> setsmath-shift tocompact on its children at even position if they are before anmprescripts, and on those at odd position if they are after anmprescripts. The<msub> and<msubsup> elements setmath-shift tocompact on their second child.mover andmunderover elements with anaccent attribute that is anASCII case-insensitive match totrue also setmath-shift tocompact within their first child.

TheA.User Agent Stylesheet must contain the following style in order to implement this behavior:

msub >:not(:first-child),msup >:not(:first-child),msubsup >:not(:first-child),mmultiscripts >:not(:first-child),munder >:not(:first-child),mover >:not(:first-child),munderover >:not(:first-child) {math-depth:add(1);math-style: compact;}munder[accentunder="true" i] >:nth-child(2),mover[accent="true" i] >:nth-child(2),munderover[accentunder="true" i] >:nth-child(2),munderover[accent="true" i] >:nth-child(3) {font-size: inherit;}msub >:nth-child(2),msubsup >:nth-child(2),mmultiscripts >:nth-child(even),mmultiscripts > mprescripts ~:nth-child(odd),mover[accent="true" i] >:first-child,munderover[accent="true" i] >:first-child {math-shift: compact;}mmultiscripts > mprescripts ~:nth-child(even) {math-shift: inherit;}
Note
In practice, all the children of the MathML elements described in this section arein-flow and the<mprescripts> is empty. Hence the CSS rules essentially perform automaticdisplaystyle andscriptlevel changes for the scripts; andmath-shift changes for subscripts and sometimes the base.

3.5Tabular Math

Matrices, arrays and other table-like mathematical notation are marked up usingmtablemtrmtd elements. These elements are similar to thetable,tr andtd elements of [HTML].

The following example shows how tabular layout allows to write a matrix. Note that it is vertically centered with the fraction bar and the middle of the equal sign.

<math><mfrac><mi>A</mi><mn>2</mn></mfrac><mo>=</mo><mrow><mo>(</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>4</mn></mtd><mtd><mn>5</mn></mtd><mtd><mn>6</mn></mtd></mtr><mtr><mtd><mn>7</mn></mtd><mtd><mn>8</mn></mtd><mtd><mn>9</mn></mtd></mtr></mtable><mo>)</mo></mrow></math>
tables example

3.5.1Table or Matrix<mtable>

Themtable is laid out as aninline-table and setsdisplaystyle tofalse. Theuser agent stylesheet must contain the following rules in order to implement these properties:

mtable {display: inline-table;math-style: compact;}

Themtable element is as a CSStable and themin-content inline size,max-content inline size,inline size,block size,first baseline set andlast baseline set sets are determined accordingly. The center of the table is aligned with themath axis.

The<mtable> accepts the attributes described in2.1.3Global Attributes.

3.5.2Row in Table or Matrix<mtr>

Themtr is laid out astable-row. Theuser agent stylesheet must contain the following rules in order to implement that behavior:

mtr {display: table-row;}

The<mtr> accepts the attributes described in2.1.3Global Attributes.

3.5.3Entry in Table or Matrix<mtd>

Themtd is laid out as atable-cell with content centered in the cell and a default padding. Theuser agent stylesheet must contain the following rules:

mtd {display: table-cell;/* Centering inside table cells should rely on box alignment properties.     See https://github.com/w3c/mathml-core/issues/156 */text-align: center;padding:0.5ex0.4em;}

The<mtd> accepts the attributes described in2.1.3Global Attributes as well as the following attributes:

Thecolumnspan (respectivelyrowspan) attribute has the same syntax and semantics as thecolspan (respectivelyrowspan) attribute on the<td> element from [HTML]. In particular, the parsing of these attributes is handled as described in thealgorithm for processing rows, always reading "colspan" as "columnspan".

Note
The name of the column spanning attribute in [MathML3] and earlier versions iscolumnspan and is preserved for backward compatibility reasons.

The<mtd> elementgenerates an anonymous <mrow> box.

3.6Enlivening Expressions

Historically, themaction element provides a mechanism for binding actions to expressions.

The<maction> element accepts the attributes described in2.1.3Global Attributes as well as the following attributes:

This specification does not define any observable behavior that is specific to theactiontype andselection attributes.

The following example shows the "toggle" action type from [MathML3] where the renderer alternately displays the selected subexpression, starting from "one third" and cycling through them when there is a click on the selected subexpression ("one quarter", "one half", "one third", etc). This is not part of MathML Core but can be implemented using JavaScript and CSS polyfills. The default behavior is just to render the first child.

<math><mactionactiontype="toggle"selection="2"><mfrac><mn>1</mn><mn>2</mn></mfrac><mfrac><mn>1</mn><mn>3</mn></mfrac><mfrac><mn>1</mn><mn>4</mn></mfrac></maction></math>
maction example

The layout algorithm of the<maction> element is the same as the<mrow> element. Theuser agent stylesheet must contain the following rules in order to hide all but its first child element, which is the default behavior for the legacy actiontype values:

maction >:not(:first-child) {display: none;}
Note
<maction> is implemented for compatibility with full MathML. Authors whose only target is MathML Core are encouraged to use other HTML, CSS and JavaScript mechanisms to implement custom actions. They may rely on maction attributes defined in [MathML3].

3.7Semantics and Presentation

Thesemantics element is the container element that associates annotations with a MathML expression. Typically, the<semantics> element has as its first child element a MathML expression to be annotated while subsequent child elements represent text annotations within anannotation element, or more complex markup annotations within anannotation-xml element.

The following example shows how the fraction "one half" can be annotated with a textual annotation (LaTeX) or an XML annotation (content MathML), which are not intended to be rendered by the user agent. This fraction is also annotated with equivalent SVG and HTML markup.

<math><semantics><mfrac><mn>1</mn><mn>2</mn></mfrac><annotationencoding="application/x-tex">\frac{1}{2}</annotation><annotation-xmlencoding="application/mathml-content+xml"><apply><divide/><cn>1</cn><cn>2</cn></apply></annotation-xml><annotation-xml><svgwidth="25"height="75"xmlns="http://www.w3.org/2000/svg"><pathstroke-width="5.8743"d="m5.9157 27.415h6.601v-22.783l-7.1813 1.4402v-3.6805l7.1408                 -1.4402h4.0406v26.464h6.601v3.4005h-17.203z"/><pathstroke="#000000"stroke-width="2.3409"d="m0.83496 39.228h23.327"/><pathstroke-width="5.8743"d="m8.696 70.638h14.102v3.4005h-18.963v-3.4005q2.3004-2.3804                 6.2608-6.3813 3.9806-4.0206 5.0007-5.1808 1.9403-2.1803                 2.7004-3.6805 0.78011-1.5202 0.78011-2.9804 0-2.3804                 -1.6802-3.8806-1.6603-1.5002-4.3406-1.5002-1.9003 0-4.0206                 0.6601-2.1003 0.6601-4.5007 2.0003v-4.0806q2.4404-0.98013                 4.5607-1.4802 2.1203-0.50007 3.8806-0.50007 4.6407 0 7.401                 2.3203 2.7604 2.3203 2.7604 6.2009 0 1.8403-0.7001 3.5006                 -0.68013 1.6402-2.5004 3.8806-0.50007 0.58009-3.1805 3.3605                 -2.6804 2.7604-7.5614 7.7412z"/></svg></annotation-xml><annotation-xmlencoding="application/xhtml+xml"><divstyle="display: inline-flex;                  flex-direction: column; align-items: center;"><div>1</div><div></div><div>2</div></div></annotation-xml></semantics></math>
semantics example

The<semantics> element accepts the attributes described in2.1.3Global Attributes. Its layout algorithm is the same as themrow element. Theuser agent stylesheet must contain the following rule in order to only render the annotated MathML expression:

semantics >:not(:first-child) {display: none;}

The<annotation-xml> and<annotation> element accepts the attributes described in2.1.3Global Attributes as well as the following attribute:

This specification does not define any observable behavior that is specific to theencoding attribute.

The layout algorithm of the<annotation-xml> and<annotation> element is the same as themtext element.

Note
Authors can use theencoding attribute to distinguish annotations forHTML integration point, clipboard copy, alternative rendering, etc. In particular, CSS can be used to render alternative annotations, e.g.
/* Hide the annotated child. */semantics >:first-child {display: none; }/* Show all text annotations. */semantics > annotation {display: inline; }/* Show all HTML annotations. */semantics > annotation-xml[encoding="text/html" i],semantics > annotation-xml[encoding="application/xhtml+xml" i] {display: inline-block;}

4.CSS Extensions for Math Layout

4.1Thedisplay: block math anddisplay: inline math value

Thedisplay property fromCSS Display Module Level 3 is extended with a new inner display type:

Name:display
New values:<display-outside>|| [<display-inside>| math ]

For elements that are notMathML elements, if the specified value ofdisplay isblock math orinline math then the computed value isblock flow andinline flow respectively. For themtable element the computed value isblock table andinline table respectively. For themtr element, the computed value istable-row. For themtd element, the computed value istable-cell.

MathML elements with a computeddisplay value equal toblock math orinline math control box generation and layout according to their tag name, as described in the relevant sections.Unknown MathML elements behave the same as themrow element.

Note
Thedisplay: block math anddisplay: inline math values provide a default layout for MathML elements while at the same time allowing to override it with either native display values orcustom values. This allows authors or polyfills to define their own custom notations to tweak or extend MathML Core.

In the following example, the default layout of the MathMLmrow element is overridden to render its content as a grid.

<math><msup><mrow><mosymmetric="false">[</mo><mrowstyle="display: block; width: 4.5em;"><mrowstyle="display: grid;                     grid-template-columns: 1.5em 1.5em 1.5em;                     grid-template-rows: 1.5em 1.5em;                     justify-items: center;                     align-items: center;"><mn>12</mn><mn>34</mn><mn>56</mn><mn>7</mn><mn>8</mn><mn>9</mn></mrow></mrow><mosymmetric="false">]</mo></mrow><mi>α</mi></msup></math>
display example

4.2Themath-auto transform

Thetext-transform property fromCSS Text Module Level 4 has a new valuemath-auto. On text nodes containing a single character, if the computed value ismath-auto and the character is present in the "Original" column ofC.1italic mappings then it is converted to the corresponding character from the "italic" column.

A common style convention is to render identifiers with multiple letters (e.g. the function name "exp") with normal style and identifiers with a single letter (e.g. the variable "n") with italic style. Themath-auto property is intended to implement this default behavior, which can be overridden by authors if necessary. Note that mathematical fonts are designed with a special kind of italic glyphs located at the Unicode positions ofC.1italic mappings, which differ from the shaping obtained via italic font style. Compare this mathematical formula rendered with the Latin Modern Math font usingfont-style: italic (left) andtext-transform: math-auto (right):

font-style: italic VS text-transform: math-auto

4.3Themath-style property

Name:math-style
Value:normal| compact
Initial:normal
Applies to:All elements
Inherited:yes
Percentages:n/a
Computed value:specified keyword
Canonical order:n/a
Animation type:by computed value type
Media:visual

Whenmath-style iscompact, the math layout on descendants tries to minimize thelogical height by applying the following rules:

The following example shows a mathematical formula rendered with itsmath root styled withmath-style: compact (left) andmath-style: normal (right). In the former case, the font-size is automatically scaled down within the fractions and the summation limits are rendered as subscript and superscript of the ∑. In the latter case, the ∑ is drawn bigger than normal text and vertical gaps within fractions (even relative to current font-size) are larger.

math-style example

These twomath-style values typically correspond to mathematical expressions in inline and display mode respectively [TeXBook]. A mathematical formula in display mode may automatically switch to inline mode within some subformulas (e.g. scripts, matrix elements, numerators and denominators, etc) and it is sometimes desirable to override this default behavior. Themath-style property allows to easily implement these features for MathML in theuser agent stylesheet and with thedisplaystyle attribute; and also exposes them to polyfills.

4.4Themath-shift property

Name:math-shift
Value:normal| compact
Initial:normal
Applies to:All elements
Inherited:yes
Percentages:n/a
Computed value:specified keyword
Canonical order:n/a
Animation type:by computed value type
Media:visual

If the value ofmath-shift iscompact, the math layout on descendants will use thesuperscriptShiftUpCramped parameter to place superscript. If the value ofmath-shift isnormal, the math will use thesuperscriptShiftUp parameter instead.

This property is used for positioning superscript during the layout of MathMLscripted elements. See §3.4.1Subscripts and Superscripts<msub>,<msup>,<msubsup>,3.4.3Prescripts and Tensor Indices<mmultiscripts> and3.4.2Underscripts and Overscripts<munder>,<mover>,<munderover>.

In the following example, the two "x squared" are rendered with compactmath-style and the samefont-size. However, the one within the square root is rendered with compactmath-shift while the other one is rendered with normalmath-shift, leading to subtle different shift of the superscript "2".

math-shift example

Per [TeXBook], a mathematical formula uses normal style by default but may switch to compact style ("cramped" in TeX's terminology) within some subformulas (e.g. radicals, fraction denominators, etc). Themath-shift property allows to easily implement these rules for MathML in theuser agent stylesheet. Page authors or developers of polyfills may also benefit from having access to this property to tweak or refine the default implementation.

4.5Themath-depth property

A newmath-depth property is introduced to describe a notion of "depth" for each element of a mathematical formula, with respect to the top-level container of that formula. Concretely, this is used to determine the computed value of thefont-size property when its specified value ismath.

Name:math-depth
Value:auto-add| add(<integer>)| <integer>
Initial:0
Applies to:All elements
Inherited:yes
Percentages:n/a
Computed value:an integer, see below
Canonical order:n/a
Animation type:by computed value type
Media:visual

The computed value of themath-depth value is determined as follows:

If the specified value offont-size ismath then the computed value offont-size is obtained by multiplying the inherited value offont-size by a nonzero scale factor calculated by the following procedure:

  1. Let A be the inheritedmath-depth value, B the computedmath-depth value, C be 0.71 and S be 1.0
    • If A = B then return S.
    • If B < A, swap A and B and setInvertScaleFactor to true.
    • Otherwise B > A and setInvertScaleFactor to false.
  2. Let E be B - A, which is positive.
  3. If the inheritedfirst available font has an OpenType MATH table:
  4. Multiply S by CE.
  5. Return S ifInvertScaleFactor is false and 1/S otherwise.

The following example shows a mathematical formula with normalmath-style rendered with the Latin Modern Math font. When entering subexpressions like scripts or fractions, the font-size is automatically scaled down according to the values of MATH table contained in that font. Note that font-size is scaled down when entering the superscripts but even faster when entering a root's prescript. Also it is scaled down when entering the inner fraction but not when entering the outer one, due to automatic change ofmath-style in fractions.

font-size-scriptlevel example

These rules from [TeXBook] are subtle and it's worth having a separatemath-depth mechanism to express and handle them. They can be implemented in MathML using theuser agent stylesheet. Page authors or developers of polyfills may also benefit from having access to this property to tweak or refine the default implementation. In particular, thescriptlevel attribute from MathML provides a way to performmath-depth changes.

5.OpenTypeMATH table

This chapter describes features provided byMATH table of an OpenType font [OPEN-FONT-FORMAT]. Throughout this chapter, a C-like notationTable.Subtable1[index].Subtable2.Parameter is used to denote OpenType parameters. Such parameters may not be available (e.g. if the font lacks one of the subtable, has an invalid offset, etc) and so fallback options are provided.

Note
It is strongly encouraged to render MathML with a math font with the proper OpenType features. There is no guarantee that the fallback options provided will provide good enough rendering.

OpenType values expressed in design units (perhaps indirectly via aMathValueRecord entry) are scaled to appropriate values for layout purpose, taking into accounthead.unitsPerEm, CSSfont-size or zoom level.

5.1Layout constants (MathConstants)

These are global layout constants for thefirst available font:

Default fallback constant
0
Default rule thickness
post.underlineThickness orDefault fallback constant if the constant is not available.
scriptPercentScaleDown
MATH.MathConstants.scriptPercentScaleDown / 100 or 0.71 ifMATH.MathConstants.scriptPercentScaleDown is null or not available.
scriptScriptPercentScaleDown
MATH.MathConstants.scriptScriptPercentScaleDown / 100 or 0.5041 ifMATH.MathConstants.scriptScriptPercentScaleDown is null or not available.
displayOperatorMinHeight
MATH.MathConstants.displayOperatorMinHeight orDefault fallback constant if the constant is not available.
axisHeight
MATH.MathConstants.axisHeight or halfOS/2.sxHeight if the constant is not available.
accentBaseHeight
MATH.MathConstants.accentBaseHeight orOS/2.sxHeight if the constant is not available.
subscriptShiftDown
MATH.MathConstants.subscriptShiftDown orOS/2.ySubscriptYOffset if the constant is not available.
subscriptTopMax
MATH.MathConstants.subscriptTopMax or ⅘ ×OS/2.sxHeight if the constant is not available.
subscriptBaselineDropMin
MATH.MathConstants.subscriptBaselineDropMin orDefault fallback constant if the constant is not available.
superscriptShiftUp
MATH.MathConstants.superscriptShiftUp orOS/2.ySuperscriptYOffset if the constant is not available.
superscriptShiftUpCramped
MATH.MathConstants.superscriptShiftUpCramped orDefault fallback constant if the constant is not available.
superscriptBottomMin
MATH.MathConstants.superscriptBottomMin or ¼ ×OS/2.sxHeight if the constant is not available.
superscriptBaselineDropMax
MATH.MathConstants.superscriptBaselineDropMax orDefault fallback constant if the constant is not available.
subSuperscriptGapMin
MATH.MathConstants.subSuperscriptGapMin or 4 ×default rule thickness if the constant is not available.
superscriptBottomMaxWithSubscript
MATH.MathConstants.superscriptBottomMaxWithSubscript or ⅘ ×OS/2.sxHeight if the constant is not available.
spaceAfterScript
MATH.MathConstants.spaceAfterScript or 1/24em if the constant is not available.
upperLimitGapMin
MATH.MathConstants.upperLimitGapMin orDefault fallback constant if the constant is not available.
upperLimitBaselineRiseMin
MATH.MathConstants.upperLimitBaselineRiseMin orDefault fallback constant if the constant is not available.
lowerLimitGapMin
MATH.MathConstants.lowerLimitGapMin orDefault fallback constant if the constant is not available.
lowerLimitBaselineDropMin
MATH.MathConstants.lowerLimitBaselineDropMin orDefault fallback constant if the constant is not available.
stackTopShiftUp
MATH.MathConstants.stackTopShiftUp orDefault fallback constant if the constant is not available.
stackTopDisplayStyleShiftUp
MATH.MathConstants.stackTopDisplayStyleShiftUp orDefault fallback constant if the constant is not available.
stackBottomShiftDown
MATH.MathConstants.stackBottomShiftDown orDefault fallback constant if the constant is not available.
stackBottomDisplayStyleShiftDown
MATH.MathConstants.stackBottomDisplayStyleShiftDown orDefault fallback constant if the constant is not available.
stackGapMin
MATH.MathConstants.stackGapMin or 3 ×default rule thickness if the constant is not available.
stackDisplayStyleGapMin
MATH.MathConstants.stackDisplayStyleGapMin or 7 ×default rule thickness if the constant is not available.
stretchStackTopShiftUp
MATH.MathConstants.stretchStackTopShiftUp orDefault fallback constant if the constant is not available.
stretchStackBottomShiftDown
MATH.MathConstants.stretchStackBottomShiftDown orDefault fallback constant if the constant is not available.
stretchStackGapAboveMin
MATH.MathConstants.stretchStackGapAboveMin orDefault fallback constant if the constant is not available.
stretchStackGapBelowMin
MATH.MathConstants.stretchStackGapBelowMin orDefault fallback constant if the constant is not available.
fractionNumeratorShiftUp
MATH.MathConstants.fractionNumeratorShiftUp orDefault fallback constant if the constant is not available.
fractionNumeratorDisplayStyleShiftUp
MATH.MathConstants.fractionNumeratorDisplayStyleShiftUp orDefault fallback constant if the constant is not available.
fractionDenominatorShiftDown
MATH.MathConstants.fractionDenominatorShiftDown orDefault fallback constant if the constant is not available.
fractionDenominatorDisplayStyleShiftDown
MATH.MathConstants.fractionDenominatorDisplayStyleShiftDown orDefault fallback constant if the constant is not available.
fractionNumeratorGapMin
MATH.MathConstants.fractionNumeratorGapMin ordefault rule thickness if the constant is not available.
fractionNumDisplayStyleGapMin
MATH.MathConstants.fractionNumDisplayStyleGapMin or 3 ×default rule thickness if the constant is not available.
fractionRuleThickness
MATH.MathConstants.fractionRuleThickness ordefault rule thickness if the constant is not available.
fractionDenominatorGapMin
MATH.MathConstants.fractionDenominatorGapMin ordefault rule thickness if the constant is not available.
fractionDenomDisplayStyleGapMin
MATH.MathConstants.fractionDenomDisplayStyleGapMin or 3 ×default rule thickness if the constant is not available.
overbarVerticalGap
MATH.MathConstants.overbarVerticalGap or 3 ×default rule thickness if the constant is not available.
overbarExtraAscender
MATH.MathConstants.overbarExtraAscender ordefault rule thickness if the constant is not available.
underbarVerticalGap
MATH.MathConstants.underbarVerticalGap or 3 ×default rule thickness if the constant is not available.
underbarExtraDescender
MATH.MathConstants.underbarExtraDescender ordefault rule thickness if the constant is not available.
radicalVerticalGap
MATH.MathConstants.radicalVerticalGap or 1¼ ×default rule thickness if the constant is not available.
radicalDisplayStyleVerticalGap
MATH.MathConstants.radicalDisplayStyleVerticalGap ordefault rule thickness + ¼OS/2.sxHeight if the constant is not available.
radicalRuleThickness
MATH.MathConstants.radicalRuleThickness ordefault rule thickness if the constant is not available.
radicalExtraAscender
MATH.MathConstants.radicalExtraAscender ordefault rule thickness if the constant is not available.
radicalKernBeforeDegree
MATH.MathConstants.radicalKernBeforeDegree or 5/18em if the constant is not available.
radicalKernAfterDegree
MATH.MathConstants.radicalKernAfterDegree or −10/18em if the constant is not available.
radicalDegreeBottomRaisePercent
MATH.MathConstants.radicalDegreeBottomRaisePercent / 100.0 or 0.6 if the constant is not available.

5.2Glyph information (MathGlyphInfo)

Note
MathTopAccentAttachment is at risk.

These are per-glyph tables for thefirst available font:

MathItalicsCorrectionInfo
The subtableMATH.MathGlyphInfo.MathItalicsCorrectionInfo of italics correction values. Use the corresponding value inMATH.MathGlyphInfo.MathItalicsCorrectionInfo.italicsCorrection if there is one for the requested glyph or0 otherwise.
MathTopAccentAttachment
The subtableMATH.MathGlyphInfo.MathTopAccentAttachment of positioning top math accents along theinline axis. Use the corresponding value inMATH.MathGlyphInfo.MathTopAccentAttachment.topAccentAttachment if there is one for the requested glyph or half the advance width of the glyph otherwise.

5.3Size variants for operators (MathVariants)

This section describes how to handle stretchy glyphs of arbitrary size using theMATH.MathVariants table.

5.3.1TheGlyphAssembly table

This section is based on [OPEN-TYPE-MATH-IN-HARFBUZZ]. For convenience, the following definitions are used:

  • omin isMATH.MathVariant.minConnectorOverlap.
  • AGlyphPartRecord is anextender if and only ifGlyphPartRecord.partFlags has thefExtender flag set.
  • AGlyphAssembly ishorizontal if it is obtained fromMathVariant.horizGlyphConstructionOffsets. Otherwise it isvertical (and obtained fromMathVariant.vertGlyphConstructionOffsets).
  • For a givenGlyphAssembly table,NExt (respectivelyNNonExt) is the number of extenders (respectively non-extenders) inGlyphAssembly.partRecords.
  • For a givenGlyphAssembly table,SExt (respectivelySNonExt) is the sum ofGlyphPartRecord.fullAdvance for all extenders (respectively non-extenders) inGlyphAssembly.partRecords.
  • SExt,NonOverlapping =SExtominNExt is the sum of maximum non overlapping parts of extenders.

User agents must treat theGlyphAssembly as invalid if the following conditions are not satisfied:

  • NExt > 0. Otherwise, the assembly cannot be grown by repeating extenders.
  • SExt,NonOverlapping > 0. Otherwise, the assembly does not grow when joining extenders.
  • For eachGlyphPartRecord inGlyphAssembly.partRecords, the values ofGlyphPartRecord.startConnectorLength andGlyphPartRecord.endConnectorLength must be at leastomin. Otherwise, it is not possible to satisfy the condition ofMathVariant.minConnectorOverlap.

In this specification, a glyph assembly is built by repeating each extender r times and using the same overlap value o between each glyph. The number of glyphs in such an assembly isAssemblyGlyphCount(r) =NNonExt + rNExt while the stretch size isAssembySize(o, r) =SNonExt + rSExt − o (AssemblyGlyphCount(r) − 1).

rmin is the minimal number of repetitions needed to obtain an assembly of size at least T, i.e. the minimal r such thatAssembySize(omin, r) ≥ T. It is defined as the maximum between 0 and the ceiling of ((T −SNonExt +omin (NNonExt − 1)) /SExt,NonOverlapping).

omax,theorical = (AssembySize(0,rmin) − T) / (AssemblyGlyphCount(rmin) − 1) is the theorical overlap obtained by splitting evenly the extra size of an assembly built with null overlap.

omax is the maximum overlap possible to build an assembly of size at least T by repeating each extenderrmin times. IfAssemblyGlyphCount(rmin) ≤ 1, then the actual overlap value is irrelevant. Otherwise, omax is defined to be the minimum of:

  • omax,theorical.
  • GlyphPartRecord.startConnectorLength for all the entries inGlyphAssembly.partRecords, excluding the last one if it is not an extender.
  • GlyphPartRecord.endConnectorLength for all the entries inGlyphAssembly.partRecords, excluding the first one if it is not an extender.

Theglyph assembly stretch size for a target size T isAssembySize(omax,rmin).

Theglyph assembly width,glyph assembly ascent andglyph assembly descent are defined as follows:

  • IfGlyphAssembly is vertical, the width is the maximum advance width of the glyphs of IDGlyphPartRecord.glyphID for all theGlyphPartRecord inGlyphAssembly.partRecords, the ascent is theglyph assembly stretch size for a given target sizeT and the descent is 0.
  • Otherwise, theGlyphAssembly is horizontal, the width isglyph assembly stretch size for a given target sizeT while the ascent (respectively descent) is the maximum ascent (respectively descent) of the glyphs of IDGlyphPartRecord.glyphID for all theGlyphPartRecord inGlyphAssembly.partRecords.

Theglyph assembly height is the sum of theglyph assembly ascent andglyph assembly descent.

Note
The horizontal (respectively vertical) metrics for a vertical (respectively horizontal) glyph assembly do not depend on the target sizeT.

Theshaping of the glyph assembly is performed with the following algorithm:

  1. Calculatermin andomax.
  2. Set(x, y) to(0, 0),RepetitionCounter to 0 andPartIndex to -1.
  3. Repeat the following steps:
    1. IfRepetitionCounter is 0:
      1. IncrementPartIndex.
      2. IfPartIndex isGlyphAssembly.partCount then stop.
      3. Otherwise, setPart toGlyphAssembly.partRecords[PartIndex]. SetRepetitionCounter tormin ifPart is an extender and to 1 otherwise.
      • If the glyph assembly is horizontal then draw the glyph of IDPart.glyphID so that its (left, baseline) coordinates are at position(x, y). Setx tox + Part.fullAdvance −omax.
      • Otherwise (if the glyph assembly is vertical), then draw the glyph of idPart.glyphID so that its (left, bottom) coordinates are at position(x, y). Sety toy − Part.fullAdvance +omax.
    2. DecrementRepetitionCounter.

5.3.2Algorithms for glyph stretching

Thepreferred inline size of a glyph stretched along the block axis is calculated using the following algorithm:

  1. SetS to the glyph's advance width.
  2. If there is aMathGlyphConstruction table in theMathVariants.vertGlyphConstructionOffsets table for the given glyph:
    1. For eachMathGlyphVariantRecord inMathGlyphConstruction.mathGlyphVariantRecord, ensure thatS is at least the advance width of the glyph of idMathGlyphVariantRecord.variantGlyph.
    2. If there is validGlyphAssembly subtable, then ensure thatS is at least theglyph assembly width.
  3. ReturnS.
Note
Thepreferred inline size of a glyph stretched along the block axis will return the maximum width of all possible vertical constructions for that glyph. In practice, math fonts are designed so that vertical constructions are almost constant width, so possible over-estimation of the actual width is small.

The algorithm toshape a stretchy glyph to inline (respectively block) dimensionT is the following:

  1. If there is not anyMathGlyphConstruction table in theMathVariants.horizGlyphConstructionOffsets table (respectivelyMathVariants.vertGlyphConstructionOffsets table) for the given glyph then exit with failure.
  2. If the glyph's advance width (respectively height) is at leastT then use normal shaping and bounding box for that glyph, theMathItalicsCorrectionInfo for that glyph as italic correction and exit with success.
  3. Browse the list ofMathGlyphVariantRecord inMathGlyphConstruction.mathGlyphVariantRecord. If oneMathGlyphVariantRecord.advanceMeasurement is at leastT then use normal shaping and bounding box forMathGlyphVariantRecord.variantGlyph, theMathItalicsCorrectionInfo for that glyph as italic correction and exit with success.
  4. If there is validGlyphAssembly subtable then use the bounding box given byglyph assembly width,glyph assembly height,glyph assembly ascent,glyph assembly descent, the valueGlyphAssembly.italicsCorrection as italic correction, performshaping of the glyph assembly and exit with success.
  5. If none of the stretch options above allowed to cover the target sizeT, then choose last one that was tried and exit with success.
Note
If a font does not provide tables for stretchy constructions, User Agents may use their own internal constructions as a fallback such as the one suggested inB.4Unicode-based Glyph Assemblies.

The algorithm toget a glyph corresponding to a characterc given a directionalitydir is the following:

  • Letg be the glyph corresponding toc in thefirst available font. If it is not possible to find such a glyph, then exit with failure.
  • Ifdir isrtl:
    • If there exists an OpenType rtlm variant ofg in thefirst available font, then return it and exit with success. [OPEN-FONT-FORMAT]
    • Otherwise, ifc has the Bidi_Mirrored property [BIDI]:
      • Ifc has a corresponding mirrored codepoint,c', then return the glyph corresponding toc' and exit with success. If it is not possible to find such a glyph, then exit with failure.
      • Otherwise, exit with failure.
      Note
      These failure cases are for when a character should be mirrored according to its Bidi_Mirrored property, but no corresponding codepoint or glyph exists.
    • Otherwise, returng and exit with success.
  • Assert:dir isltr.
  • Returng and exit with success.

A.User Agent Stylesheet

@namespace url(http://www.w3.org/1998/Math/MathML);/* Universal rules */* {font-size: math;display: block math;writing-mode: horizontal-tb!important;}/* The <math> element */math {direction: ltr;text-indent:0;letter-spacing: normal;line-height: normal;word-spacing: normal;font-family: math;font-size: inherit;font-style: normal;font-weight: normal;display: inline math;math-shift: normal;math-style: compact;math-depth:0;}math[display="block" i] {display: block math;math-style: normal;}math[display="inline" i] {display: inline math;math-style: compact;}/* <mrow>-like elements */semantics >:not(:first-child) {display: none;}maction >:not(:first-child) {display: none;}merror {border:1px solid red;background-color: lightYellow;}mphantom {visibility: hidden;}/* Token elements */mi {text-transform: math-auto;}/* Tables */mtable {display: inline-table;math-style: compact;}mtr {display: table-row;}mtd {display: table-cell;/* Centering inside table cells should rely on box alignment properties.     See https://github.com/w3c/mathml-core/issues/156 */text-align: center;padding:0.5ex0.4em;}/* Fractions */mfrac {padding-inline:1px;}mfrac > * {math-depth: auto-add;math-style: compact;}mfrac >:nth-child(2) {math-shift: compact;}/* Other rules for scriptlevel, displaystyle and math-shift */mroot >:not(:first-child) {math-depth:add(2);math-style: compact;}mroot, msqrt {math-shift: compact;}msub >:not(:first-child),msup >:not(:first-child),msubsup >:not(:first-child),mmultiscripts >:not(:first-child),munder >:not(:first-child),mover >:not(:first-child),munderover >:not(:first-child) {math-depth:add(1);math-style: compact;}munder[accentunder="true" i] >:nth-child(2),mover[accent="true" i] >:nth-child(2),munderover[accentunder="true" i] >:nth-child(2),munderover[accent="true" i] >:nth-child(3) {font-size: inherit;}msub >:nth-child(2),msubsup >:nth-child(2),mmultiscripts >:nth-child(even),mmultiscripts > mprescripts ~:nth-child(odd),mover[accent="true" i] >:first-child,munderover[accent="true" i] >:first-child {math-shift: compact;}mmultiscripts > mprescripts ~:nth-child(even) {math-shift: inherit;}

B.Operator Tables

B.1Operator Dictionary

Note
This section describes how to determine values of3.2.4.2Dictionary-based attributes andstretch axis of operators. Compact tables below are suitable for computer manipulation, seeB.2Operator Dictionary (human-readable) for an alternative presentation.

Thealgorithm to set the properties of an operator from its category is as follows:

Thealgorithm to determine the category of an operator (Content,Form) is as folllows:

  1. IfContent as an UTF-16 string does not have length or 1 or 2 then exit with categoryDefault.
  2. IfContent is a single character in the range U+0320–U+03FF then exit with categoryDefault. Otherwise, if it has two characters:
    • IfContent is the surrogate pairs corresponding to U+1EEF0 ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL or U+1EEF1 ARABIC MATHEMATICAL OPERATOR HAH WITH DAL andForm ispostfix, exit with categoryI.
    • If the second character is U+0338 COMBINING LONG SOLIDUS OVERLAY or U+20D2 COMBINING LONG VERTICAL LINE OVERLAY then replaceContent with the first character and move to step 3.
    • Otherwise, ifContent is listed inOperators_2_ascii_chars then replaceContent with the Unicode character "U+0320 plus the index ofContent inOperators_2_ascii_chars" and move to step 3.
    • Otherwise exit with categoryDefault.
  3. IfForm is infix andContent corresponds to one of U+007C VERTICAL LINE or U+223C TILDE OPERATOR then exit with categoryForceDefault. If the category of (Content,Form) provided by tableFigure25 has N/A encoding in tableFigure26 (namely if it has categoryL orM), then exit with that category. Otherwise:
    • SetKey toContent if it is in range U+0000–U+03FF; or toContent − 0x1C00 if it is in range U+2000–U+2BFF. Otherwise, exit with categoryDefault.
    • Add 0x0000, 0x1000, 0x2000 toKey according to whetherForm isinfix,prefix,postfix respectively.
    • Assert:Key is at most 0x2FFF.
    • Search anEntry in tableFigure27 such thatEntry % 0x4000 is equal toKey. If one is found then return the category corresponding to encodingEntry / 0x1000 inFigure26. Otherwise, return categoryDefault.
Special TableEntries
Operators_2_ascii_chars18 entries (2-characters ASCII strings):'!!', '!=', '&&', '**', '*=', '++', '+=', '--', '-=', '->', '//', '/=', ':=', '<=', '<>', '==', '>=', '||',
Operators_fence61 entries (16 Unicode ranges):[U+0028–U+0029], {U+005B}, {U+005D}, [U+007B–U+007D], {U+0331}, {U+2016}, [U+2018–U+2019], [U+201C–U+201D], [U+2308–U+230B], [U+2329–U+232A], [U+2772–U+2773], [U+27E6–U+27EF], {U+2980}, [U+2983–U+2999], [U+29D8–U+29DB], [U+29FC–U+29FD],
Operators_separator3 entries:U+002C, U+003B, U+2063,
Figure24Special tables for the operator dictionary.
Total size: 82 entries, 90 bytes
(assuming characters are UTF-16 and 1-byte range lengths).
(Content, Form) keysCategory
313 entries (35 Unicode ranges) ininfix form:[U+2190–U+2195], [U+219A–U+21AE], [U+21B0–U+21B5], {U+21B9}, [U+21BC–U+21D5], [U+21DA–U+21F0], [U+21F3–U+21FF], {U+2794}, {U+2799}, [U+279B–U+27A1], [U+27A5–U+27A6], [U+27A8–U+27AF], {U+27B1}, {U+27B3}, {U+27B5}, {U+27B8}, [U+27BA–U+27BE], [U+27F0–U+27F1], [U+27F4–U+27FF], [U+2900–U+2920], [U+2934–U+2937], [U+2942–U+2975], [U+297C–U+297F], [U+2B04–U+2B07], [U+2B0C–U+2B11], [U+2B30–U+2B3E], [U+2B40–U+2B4C], [U+2B60–U+2B65], [U+2B6A–U+2B6D], [U+2B70–U+2B73], [U+2B7A–U+2B7D], [U+2B80–U+2B87], {U+2B95}, [U+2BA0–U+2BAF], {U+2BB8},A
108 entries (31 Unicode ranges) ininfix form:{U+002B}, {U+002D}, {U+00B1}, {U+00F7}, {U+0322}, {U+2044}, [U+2212–U+2216], [U+2227–U+222A], {U+2236}, {U+2238}, [U+228C–U+228E], [U+2293–U+2296], {U+2298}, [U+229D–U+229F], [U+22BB–U+22BD], [U+22CE–U+22CF], [U+22D2–U+22D3], [U+2795–U+2797], {U+29B8}, {U+29BC}, [U+29C4–U+29C5], [U+29F5–U+29FB], [U+2A1F–U+2A2E], [U+2A38–U+2A3A], {U+2A3E}, [U+2A40–U+2A4F], [U+2A51–U+2A63], {U+2ADB}, {U+2AF6}, {U+2AFB}, {U+2AFD},B
64 entries (33 Unicode ranges) ininfix form:{U+0025}, {U+002A}, {U+002E}, [U+003F–U+0040], {U+005E}, {U+00B7}, {U+00D7}, {U+0323}, {U+032E}, {U+2022}, {U+2043}, [U+2217–U+2219], {U+2240}, {U+2297}, [U+2299–U+229B], [U+22A0–U+22A1], {U+22BA}, [U+22C4–U+22C7], [U+22C9–U+22CC], [U+2305–U+2306], {U+27CB}, {U+27CD}, [U+29C6–U+29C8], [U+29D4–U+29D7], {U+29E2}, [U+2A1D–U+2A1E], [U+2A2F–U+2A37], [U+2A3B–U+2A3D], {U+2A3F}, {U+2A50}, [U+2A64–U+2A65], [U+2ADC–U+2ADD], {U+2AFE},C
52 entries (22 Unicode ranges) inprefix form:{U+0021}, {U+002B}, {U+002D}, {U+00AC}, {U+00B1}, {U+0331}, {U+2018}, {U+201C}, [U+2200–U+2201], [U+2203–U+2204], {U+2207}, [U+2212–U+2213], [U+221F–U+2222], [U+2234–U+2235], {U+223C}, [U+22BE–U+22BF], {U+2310}, {U+2319}, [U+2795–U+2796], {U+27C0}, [U+299B–U+29AF], [U+2AEC–U+2AED],D
40 entries (21 Unicode ranges) inpostfix form:[U+0021–U+0022], [U+0025–U+0027], {U+0060}, {U+00A8}, {U+00B0}, [U+00B2–U+00B4], [U+00B8–U+00B9], [U+02CA–U+02CB], [U+02D8–U+02DA], {U+02DD}, {U+0311}, {U+0320}, {U+0325}, {U+0327}, {U+0331}, [U+2019–U+201B], [U+201D–U+201F], [U+2032–U+2037], {U+2057}, [U+20DB–U+20DC], {U+23CD},E
30 entries inprefix form:U+0028, U+005B, U+007B, U+007C, U+2016, U+2308, U+230A, U+2329, U+2772, U+27E6, U+27E8, U+27EA, U+27EC, U+27EE, U+2980, U+2983, U+2985, U+2987, U+2989, U+298B, U+298D, U+298F, U+2991, U+2993, U+2995, U+2997, U+2999, U+29D8, U+29DA, U+29FC,F
30 entries inpostfix form:U+0029, U+005D, U+007C, U+007D, U+2016, U+2309, U+230B, U+232A, U+2773, U+27E7, U+27E9, U+27EB, U+27ED, U+27EF, U+2980, U+2984, U+2986, U+2988, U+298A, U+298C, U+298E, U+2990, U+2992, U+2994, U+2996, U+2998, U+2999, U+29D9, U+29DB, U+29FD,G
27 entries (2 Unicode ranges) inprefix form:[U+222B–U+2233], [U+2A0B–U+2A1C],H
22 entries (13 Unicode ranges) inpostfix form:[U+005E–U+005F], {U+007E}, {U+00AF}, [U+02C6–U+02C7], {U+02C9}, {U+02CD}, {U+02DC}, {U+02F7}, {U+0302}, {U+203E}, [U+2322–U+2323], [U+23B4–U+23B5], [U+23DC–U+23E1],I
22 entries (6 Unicode ranges) inprefix form:[U+220F–U+2211], [U+22C0–U+22C3], [U+2A00–U+2A0A], [U+2A1D–U+2A1E], {U+2AFC}, {U+2AFF},J
8 entries (5 Unicode ranges) ininfix form:{U+002F}, {U+005C}, {U+005F}, [U+2061–U+2064], {U+2206},K
6 entries (3 Unicode ranges) inprefix form:[U+2145–U+2146], {U+2202}, [U+221A–U+221C],L
3 entries ininfix form:U+002C, U+003A, U+003B,M
Figure25Mapping from operator (Content, Form) to a category.
Total size: 725 entries, 639 bytes
(assuming characters are UTF-16 and 1-byte range lengths).
CategoryFormEncodinglspacerspaceproperties
DefaultN/AN/A0.2777777777777778em0.2777777777777778emN/A
ForceDefaultN/AN/A0.2777777777777778em0.2777777777777778emN/A
Ainfix0x00.2777777777777778em0.2777777777777778emstretchy
Binfix0x40.2222222222222222em0.2222222222222222emN/A
Cinfix0x80.16666666666666666em0.16666666666666666emN/A
Dprefix0x100N/A
Epostfix0x200N/A
Fprefix0x500stretchy symmetric
Gpostfix0x600stretchy symmetric
Hprefix0x90.16666666666666666em0.16666666666666666emsymmetric largeop
Ipostfix0xA00stretchy
Jprefix0xD0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
Kinfix0xC00N/A
LprefixN/A0.16666666666666666em0N/A
MinfixN/A00.16666666666666666emN/A
Figure26Operators values for each category.
The third column provides a 4-bit encoding of the categories
where the 2 least significant bits encode the form infix (0), prefix (1) and postfix (2).
716 entries (236 ranges of length at most 16):{0x8025}, {0x802A}, {0x402B}, {0x402D}, {0x802E}, {0xC02F}, [0x803F–0x8040], {0xC05C}, {0x805E}, {0xC05F}, {0x40B1}, {0x80B7}, {0x80D7}, {0x40F7}, {0x4322}, {0x8323}, {0x832E}, {0x8422}, {0x8443}, {0x4444}, [0xC461–0xC464], [0x0590–0x0595], [0x059A–0x05A9], [0x05AA–0x05AE], [0x05B0–0x05B5], {0x05B9}, [0x05BC–0x05CB], [0x05CC–0x05D5], [0x05DA–0x05E9], [0x05EA–0x05F0], [0x05F3–0x05FF], {0xC606}, [0x4612–0x4616], [0x8617–0x8619], [0x4627–0x462A], {0x4636}, {0x4638}, {0x8640}, [0x468C–0x468E], [0x4693–0x4696], {0x8697}, {0x4698}, [0x8699–0x869B], [0x469D–0x469F], [0x86A0–0x86A1], {0x86BA}, [0x46BB–0x46BD], [0x86C4–0x86C7], [0x86C9–0x86CC], [0x46CE–0x46CF], [0x46D2–0x46D3], [0x8705–0x8706], {0x0B94}, [0x4B95–0x4B97], {0x0B99}, [0x0B9B–0x0BA1], [0x0BA5–0x0BA6], [0x0BA8–0x0BAF], {0x0BB1}, {0x0BB3}, {0x0BB5}, {0x0BB8}, [0x0BBA–0x0BBE], {0x8BCB}, {0x8BCD}, [0x0BF0–0x0BF1], [0x0BF4–0x0BFF], [0x0D00–0x0D0F], [0x0D10–0x0D1F], {0x0D20}, [0x0D34–0x0D37], [0x0D42–0x0D51], [0x0D52–0x0D61], [0x0D62–0x0D71], [0x0D72–0x0D75], [0x0D7C–0x0D7F], {0x4DB8}, {0x4DBC}, [0x4DC4–0x4DC5], [0x8DC6–0x8DC8], [0x8DD4–0x8DD7], {0x8DE2}, [0x4DF5–0x4DFB], [0x8E1D–0x8E1E], [0x4E1F–0x4E2E], [0x8E2F–0x8E37], [0x4E38–0x4E3A], [0x8E3B–0x8E3D], {0x4E3E}, {0x8E3F}, [0x4E40–0x4E4F], {0x8E50}, [0x4E51–0x4E60], [0x4E61–0x4E63], [0x8E64–0x8E65], {0x4EDB}, [0x8EDC–0x8EDD], {0x4EF6}, {0x4EFB}, {0x4EFD}, {0x8EFE}, [0x0F04–0x0F07], [0x0F0C–0x0F11], [0x0F30–0x0F3E], [0x0F40–0x0F4C], [0x0F60–0x0F65], [0x0F6A–0x0F6D], [0x0F70–0x0F73], [0x0F7A–0x0F7D], [0x0F80–0x0F87], {0x0F95}, [0x0FA0–0x0FAF], {0x0FB8}, {0x1021}, {0x5028}, {0x102B}, {0x102D}, {0x505B}, [0x507B–0x507C], {0x10AC}, {0x10B1}, {0x1331}, {0x5416}, {0x1418}, {0x141C}, [0x1600–0x1601], [0x1603–0x1604], {0x1607}, [0xD60F–0xD611], [0x1612–0x1613], [0x161F–0x1622], [0x962B–0x9633], [0x1634–0x1635], {0x163C}, [0x16BE–0x16BF], [0xD6C0–0xD6C3], {0x5708}, {0x570A}, {0x1710}, {0x1719}, {0x5729}, {0x5B72}, [0x1B95–0x1B96], {0x1BC0}, {0x5BE6}, {0x5BE8}, {0x5BEA}, {0x5BEC}, {0x5BEE}, {0x5D80}, {0x5D83}, {0x5D85}, {0x5D87}, {0x5D89}, {0x5D8B}, {0x5D8D}, {0x5D8F}, {0x5D91}, {0x5D93}, {0x5D95}, {0x5D97}, {0x5D99}, [0x1D9B–0x1DAA], [0x1DAB–0x1DAF], {0x5DD8}, {0x5DDA}, {0x5DFC}, [0xDE00–0xDE0A], [0x9E0B–0x9E1A], [0x9E1B–0x9E1C], [0xDE1D–0xDE1E], [0x1EEC–0x1EED], {0xDEFC}, {0xDEFF}, [0x2021–0x2022], [0x2025–0x2027], {0x6029}, {0x605D}, [0xA05E–0xA05F], {0x2060}, [0x607C–0x607D], {0xA07E}, {0x20A8}, {0xA0AF}, {0x20B0}, [0x20B2–0x20B4], [0x20B8–0x20B9], [0xA2C6–0xA2C7], {0xA2C9}, [0x22CA–0x22CB], {0xA2CD}, [0x22D8–0x22DA], {0xA2DC}, {0x22DD}, {0xA2F7}, {0xA302}, {0x2311}, {0x2320}, {0x2325}, {0x2327}, {0x2331}, {0x6416}, [0x2419–0x241B], [0x241D–0x241F], [0x2432–0x2437], {0xA43E}, {0x2457}, [0x24DB–0x24DC], {0x6709}, {0x670B}, [0xA722–0xA723], {0x672A}, [0xA7B4–0xA7B5], {0x27CD}, [0xA7DC–0xA7E1], {0x6B73}, {0x6BE7}, {0x6BE9}, {0x6BEB}, {0x6BED}, {0x6BEF}, {0x6D80}, {0x6D84}, {0x6D86}, {0x6D88}, {0x6D8A}, {0x6D8C}, {0x6D8E}, {0x6D90}, {0x6D92}, {0x6D94}, {0x6D96}, [0x6D98–0x6D99], {0x6DD9}, {0x6DDB}, {0x6DFD},
Figure27List of entries for the largest categories, sorted by key.
Key isEntry % 0x4000, category encoding isEntry / 0x1000.
Total size: 716 entries, 590 bytes
(assuming 4 bits for range lengths).
Note
  • Tables ofFigure25 andFigure27 are encoded as ranges to take profit of the presence of many contiguous Unicode blocks.
  • To quickly find an entry in these tables, one can still perform a binary search over the range starts, followed by an extra check on the range length.
  • Since log is concave, it is more efficient to perform one binary search on the whole table ofFigure27 rather than on each large subtable ofFigure25.

Theintrinsic stretch axis a Unicode characterc isinline if it belongs to the list below. Otherwise, the intrinsic stretch axis ofc isblock.

U+003D,U+005E,U+005F,U+007E,U+00AF,U+02C6,U+02C7,U+02C9,U+02CD,U+02DC,U+02F7,U+0302,U+0332,U+203E,U+20D0,U+20D1,U+20D6,U+20D7,U+20E1,U+2190,U+2192,U+2194,U+2198,U+2199,U+219A,U+219B,U+219C,U+219D,U+219E,U+21A0,U+21A2,U+21A3,U+21A4,U+21A6,U+21A9,U+21AA,U+21AB,U+21AC,U+21AD,U+21AE,U+21B4,U+21B9,U+21BC,U+21BD,U+21C0,U+21C1,U+21C4,U+21C6,U+21C7,U+21C9,U+21CB,U+21CC,U+21CD,U+21CE,U+21CF,U+21D0,U+21D2,U+21D4,U+21DA,U+21DB,U+21DC,U+21DD,U+21E0,U+21E2,U+21E4,U+21E5,U+21E6,U+21E8,U+21F0,U+21F4,U+21F6,U+21F7,U+21F8,U+21F9,U+21FA,U+21FB,U+21FC,U+21FD,U+21FE,U+21FF,U+2322,U+2323,U+23B4,U+23B5,U+23DC,U+23DD,U+23DE,U+23DF,U+23E0,U+23E1,U+2500,U+2794,U+2799,U+279B,U+279C,U+279D,U+279E,U+279F,U+27A0,U+27A1,U+27A5,U+27A6,U+27A8,U+27A9,U+27AA,U+27AB,U+27AC,U+27AD,U+27AE,U+27AF,U+27B1,U+27B3,U+27B5,U+27B8,U+27BA,U+27BB,U+27BC,U+27BD,U+27BE,U+27F4,U+27F5,U+27F6,U+27F7,U+27F8,U+27F9,U+27FA,U+27FB,U+27FC,U+27FD,U+27FE,U+27FF,U+2900,U+2901,U+2902,U+2903,U+2904,U+2905,U+2906,U+2907,U+290C,U+290D,U+290E,U+290F,U+2910,U+2911,U+2914,U+2915,U+2916,U+2917,U+2918,U+2919,U+291A,U+291B,U+291C,U+291D,U+291E,U+291F,U+2920,U+2942,U+2943,U+2944,U+2945,U+2946,U+2947,U+2948,U+294A,U+294B,U+294E,U+2950,U+2952,U+2953,U+2956,U+2957,U+295A,U+295B,U+295E,U+295F,U+2962,U+2964,U+2966,U+2967,U+2968,U+2969,U+296A,U+296B,U+296C,U+296D,U+2970,U+2971,U+2972,U+2973,U+2974,U+2975,U+297C,U+297D,U+2B04,U+2B05,U+2B0C,U+2B30,U+2B31,U+2B32,U+2B33,U+2B34,U+2B35,U+2B36,U+2B37,U+2B38,U+2B39,U+2B3A,U+2B3B,U+2B3C,U+2B3D,U+2B3E,U+2B40,U+2B41,U+2B42,U+2B43,U+2B44,U+2B45,U+2B46,U+2B47,U+2B48,U+2B49,U+2B4A,U+2B4B,U+2B4C,U+2B60,U+2B62,U+2B64,U+2B6A,U+2B6C,U+2B70,U+2B72,U+2B7A,U+2B7C,U+2B80,U+2B82,U+2B84,U+2B86,U+2B95,U+FE35,U+FE36,U+FE37,U+FE38,U+1EEF0,U+1EEF1,
Figure28Sorted list of Unicode code points corresponding to operators with inline stretch axis.
Total size: 246 entries, 492 bytes (assuming 16 bits for all but the non-BMP entries).
Note
The intrinsic stretch axis could be included as a boolean property of the operator dictionary. But since it does not depend on the form and since very few operators can stretch along theinline axis, it is better implemented as a separate sorted array. Each entry can be encoded with 16 bytes if U+1EEF0 ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL and U+1EEF1 ARABIC MATHEMATICAL OPERATOR HAH WITH DAL are tested separately.

B.2Operator Dictionary (human-readable)

This section is non-normative.

The following dictionary provides a human-readable version ofB.1Operator Dictionary. Please refer to3.2.4.2Dictionary-based attributes for explanation about how to use this dictionary and how to determine the valuesContent andForm indexing together the dictionary.

The values forrspace andlspace are indicated in the corresponding columns. The values ofstretchy,symmetric,largeop,movablelimits aretrue if they are listed in the "properties" column.

ContentStretch Axisformlspacerspaceproperties
< U+003Cblockinfix0.2777777777777778em0.2777777777777778emN/A
= U+003Dinlineinfix0.2777777777777778em0.2777777777777778emN/A
> U+003Eblockinfix0.2777777777777778em0.2777777777777778emN/A
| U+007Cblockinfix0.2777777777777778em0.2777777777777778emfence
↖ U+2196blockinfix0.2777777777777778em0.2777777777777778emN/A
↗ U+2197blockinfix0.2777777777777778em0.2777777777777778emN/A
↘ U+2198inlineinfix0.2777777777777778em0.2777777777777778emN/A
↙ U+2199inlineinfix0.2777777777777778em0.2777777777777778emN/A
↯ U+21AFblockinfix0.2777777777777778em0.2777777777777778emN/A
↶ U+21B6blockinfix0.2777777777777778em0.2777777777777778emN/A
↷ U+21B7blockinfix0.2777777777777778em0.2777777777777778emN/A
↸ U+21B8blockinfix0.2777777777777778em0.2777777777777778emN/A
↺ U+21BAblockinfix0.2777777777777778em0.2777777777777778emN/A
↻ U+21BBblockinfix0.2777777777777778em0.2777777777777778emN/A
⇖ U+21D6blockinfix0.2777777777777778em0.2777777777777778emN/A
⇗ U+21D7blockinfix0.2777777777777778em0.2777777777777778emN/A
⇘ U+21D8blockinfix0.2777777777777778em0.2777777777777778emN/A
⇙ U+21D9blockinfix0.2777777777777778em0.2777777777777778emN/A
⇱ U+21F1blockinfix0.2777777777777778em0.2777777777777778emN/A
⇲ U+21F2blockinfix0.2777777777777778em0.2777777777777778emN/A
∈ U+2208blockinfix0.2777777777777778em0.2777777777777778emN/A
∉ U+2209blockinfix0.2777777777777778em0.2777777777777778emN/A
∊ U+220Ablockinfix0.2777777777777778em0.2777777777777778emN/A
∋ U+220Bblockinfix0.2777777777777778em0.2777777777777778emN/A
∌ U+220Cblockinfix0.2777777777777778em0.2777777777777778emN/A
∍ U+220Dblockinfix0.2777777777777778em0.2777777777777778emN/A
∝ U+221Dblockinfix0.2777777777777778em0.2777777777777778emN/A
∣ U+2223blockinfix0.2777777777777778em0.2777777777777778emN/A
∤ U+2224blockinfix0.2777777777777778em0.2777777777777778emN/A
∥ U+2225blockinfix0.2777777777777778em0.2777777777777778emN/A
∦ U+2226blockinfix0.2777777777777778em0.2777777777777778emN/A
∷ U+2237blockinfix0.2777777777777778em0.2777777777777778emN/A
∹ U+2239blockinfix0.2777777777777778em0.2777777777777778emN/A
∺ U+223Ablockinfix0.2777777777777778em0.2777777777777778emN/A
∻ U+223Bblockinfix0.2777777777777778em0.2777777777777778emN/A
∼ U+223Cblockinfix0.2777777777777778em0.2777777777777778emN/A
∽ U+223Dblockinfix0.2777777777777778em0.2777777777777778emN/A
∾ U+223Eblockinfix0.2777777777777778em0.2777777777777778emN/A
≁ U+2241blockinfix0.2777777777777778em0.2777777777777778emN/A
≂ U+2242blockinfix0.2777777777777778em0.2777777777777778emN/A
≃ U+2243blockinfix0.2777777777777778em0.2777777777777778emN/A
≄ U+2244blockinfix0.2777777777777778em0.2777777777777778emN/A
≅ U+2245blockinfix0.2777777777777778em0.2777777777777778emN/A
≆ U+2246blockinfix0.2777777777777778em0.2777777777777778emN/A
≇ U+2247blockinfix0.2777777777777778em0.2777777777777778emN/A
≈ U+2248blockinfix0.2777777777777778em0.2777777777777778emN/A
≉ U+2249blockinfix0.2777777777777778em0.2777777777777778emN/A
≊ U+224Ablockinfix0.2777777777777778em0.2777777777777778emN/A
≋ U+224Bblockinfix0.2777777777777778em0.2777777777777778emN/A
≌ U+224Cblockinfix0.2777777777777778em0.2777777777777778emN/A
≍ U+224Dblockinfix0.2777777777777778em0.2777777777777778emN/A
≎ U+224Eblockinfix0.2777777777777778em0.2777777777777778emN/A
≏ U+224Fblockinfix0.2777777777777778em0.2777777777777778emN/A
≐ U+2250blockinfix0.2777777777777778em0.2777777777777778emN/A
≑ U+2251blockinfix0.2777777777777778em0.2777777777777778emN/A
≒ U+2252blockinfix0.2777777777777778em0.2777777777777778emN/A
≓ U+2253blockinfix0.2777777777777778em0.2777777777777778emN/A
≔ U+2254blockinfix0.2777777777777778em0.2777777777777778emN/A
≕ U+2255blockinfix0.2777777777777778em0.2777777777777778emN/A
≖ U+2256blockinfix0.2777777777777778em0.2777777777777778emN/A
≗ U+2257blockinfix0.2777777777777778em0.2777777777777778emN/A
≘ U+2258blockinfix0.2777777777777778em0.2777777777777778emN/A
≙ U+2259blockinfix0.2777777777777778em0.2777777777777778emN/A
≚ U+225Ablockinfix0.2777777777777778em0.2777777777777778emN/A
≛ U+225Bblockinfix0.2777777777777778em0.2777777777777778emN/A
≜ U+225Cblockinfix0.2777777777777778em0.2777777777777778emN/A
≝ U+225Dblockinfix0.2777777777777778em0.2777777777777778emN/A
≞ U+225Eblockinfix0.2777777777777778em0.2777777777777778emN/A
≟ U+225Fblockinfix0.2777777777777778em0.2777777777777778emN/A
≠ U+2260blockinfix0.2777777777777778em0.2777777777777778emN/A
≡ U+2261blockinfix0.2777777777777778em0.2777777777777778emN/A
≢ U+2262blockinfix0.2777777777777778em0.2777777777777778emN/A
≣ U+2263blockinfix0.2777777777777778em0.2777777777777778emN/A
≤ U+2264blockinfix0.2777777777777778em0.2777777777777778emN/A
≥ U+2265blockinfix0.2777777777777778em0.2777777777777778emN/A
≦ U+2266blockinfix0.2777777777777778em0.2777777777777778emN/A
≧ U+2267blockinfix0.2777777777777778em0.2777777777777778emN/A
≨ U+2268blockinfix0.2777777777777778em0.2777777777777778emN/A
≩ U+2269blockinfix0.2777777777777778em0.2777777777777778emN/A
≪ U+226Ablockinfix0.2777777777777778em0.2777777777777778emN/A
≫ U+226Bblockinfix0.2777777777777778em0.2777777777777778emN/A
≬ U+226Cblockinfix0.2777777777777778em0.2777777777777778emN/A
≭ U+226Dblockinfix0.2777777777777778em0.2777777777777778emN/A
≮ U+226Eblockinfix0.2777777777777778em0.2777777777777778emN/A
≯ U+226Fblockinfix0.2777777777777778em0.2777777777777778emN/A
≰ U+2270blockinfix0.2777777777777778em0.2777777777777778emN/A
≱ U+2271blockinfix0.2777777777777778em0.2777777777777778emN/A
≲ U+2272blockinfix0.2777777777777778em0.2777777777777778emN/A
≳ U+2273blockinfix0.2777777777777778em0.2777777777777778emN/A
≴ U+2274blockinfix0.2777777777777778em0.2777777777777778emN/A
≵ U+2275blockinfix0.2777777777777778em0.2777777777777778emN/A
≶ U+2276blockinfix0.2777777777777778em0.2777777777777778emN/A
≷ U+2277blockinfix0.2777777777777778em0.2777777777777778emN/A
≸ U+2278blockinfix0.2777777777777778em0.2777777777777778emN/A
≹ U+2279blockinfix0.2777777777777778em0.2777777777777778emN/A
≺ U+227Ablockinfix0.2777777777777778em0.2777777777777778emN/A
≻ U+227Bblockinfix0.2777777777777778em0.2777777777777778emN/A
≼ U+227Cblockinfix0.2777777777777778em0.2777777777777778emN/A
≽ U+227Dblockinfix0.2777777777777778em0.2777777777777778emN/A
≾ U+227Eblockinfix0.2777777777777778em0.2777777777777778emN/A
≿ U+227Fblockinfix0.2777777777777778em0.2777777777777778emN/A
⊀ U+2280blockinfix0.2777777777777778em0.2777777777777778emN/A
⊁ U+2281blockinfix0.2777777777777778em0.2777777777777778emN/A
⊂ U+2282blockinfix0.2777777777777778em0.2777777777777778emN/A
⊃ U+2283blockinfix0.2777777777777778em0.2777777777777778emN/A
⊄ U+2284blockinfix0.2777777777777778em0.2777777777777778emN/A
⊅ U+2285blockinfix0.2777777777777778em0.2777777777777778emN/A
⊆ U+2286blockinfix0.2777777777777778em0.2777777777777778emN/A
⊇ U+2287blockinfix0.2777777777777778em0.2777777777777778emN/A
⊈ U+2288blockinfix0.2777777777777778em0.2777777777777778emN/A
⊉ U+2289blockinfix0.2777777777777778em0.2777777777777778emN/A
⊊ U+228Ablockinfix0.2777777777777778em0.2777777777777778emN/A
⊋ U+228Bblockinfix0.2777777777777778em0.2777777777777778emN/A
⊏ U+228Fblockinfix0.2777777777777778em0.2777777777777778emN/A
⊐ U+2290blockinfix0.2777777777777778em0.2777777777777778emN/A
⊑ U+2291blockinfix0.2777777777777778em0.2777777777777778emN/A
⊒ U+2292blockinfix0.2777777777777778em0.2777777777777778emN/A
⊜ U+229Cblockinfix0.2777777777777778em0.2777777777777778emN/A
⊢ U+22A2blockinfix0.2777777777777778em0.2777777777777778emN/A
⊣ U+22A3blockinfix0.2777777777777778em0.2777777777777778emN/A
⊦ U+22A6blockinfix0.2777777777777778em0.2777777777777778emN/A
⊧ U+22A7blockinfix0.2777777777777778em0.2777777777777778emN/A
⊨ U+22A8blockinfix0.2777777777777778em0.2777777777777778emN/A
⊩ U+22A9blockinfix0.2777777777777778em0.2777777777777778emN/A
⊪ U+22AAblockinfix0.2777777777777778em0.2777777777777778emN/A
⊫ U+22ABblockinfix0.2777777777777778em0.2777777777777778emN/A
⊬ U+22ACblockinfix0.2777777777777778em0.2777777777777778emN/A
⊭ U+22ADblockinfix0.2777777777777778em0.2777777777777778emN/A
⊮ U+22AEblockinfix0.2777777777777778em0.2777777777777778emN/A
⊯ U+22AFblockinfix0.2777777777777778em0.2777777777777778emN/A
⊰ U+22B0blockinfix0.2777777777777778em0.2777777777777778emN/A
⊱ U+22B1blockinfix0.2777777777777778em0.2777777777777778emN/A
⊲ U+22B2blockinfix0.2777777777777778em0.2777777777777778emN/A
⊳ U+22B3blockinfix0.2777777777777778em0.2777777777777778emN/A
⊴ U+22B4blockinfix0.2777777777777778em0.2777777777777778emN/A
⊵ U+22B5blockinfix0.2777777777777778em0.2777777777777778emN/A
⊶ U+22B6blockinfix0.2777777777777778em0.2777777777777778emN/A
⊷ U+22B7blockinfix0.2777777777777778em0.2777777777777778emN/A
⊸ U+22B8blockinfix0.2777777777777778em0.2777777777777778emN/A
⋈ U+22C8blockinfix0.2777777777777778em0.2777777777777778emN/A
⋍ U+22CDblockinfix0.2777777777777778em0.2777777777777778emN/A
⋐ U+22D0blockinfix0.2777777777777778em0.2777777777777778emN/A
⋑ U+22D1blockinfix0.2777777777777778em0.2777777777777778emN/A
⋔ U+22D4blockinfix0.2777777777777778em0.2777777777777778emN/A
⋕ U+22D5blockinfix0.2777777777777778em0.2777777777777778emN/A
⋖ U+22D6blockinfix0.2777777777777778em0.2777777777777778emN/A
⋗ U+22D7blockinfix0.2777777777777778em0.2777777777777778emN/A
⋘ U+22D8blockinfix0.2777777777777778em0.2777777777777778emN/A
⋙ U+22D9blockinfix0.2777777777777778em0.2777777777777778emN/A
⋚ U+22DAblockinfix0.2777777777777778em0.2777777777777778emN/A
⋛ U+22DBblockinfix0.2777777777777778em0.2777777777777778emN/A
⋜ U+22DCblockinfix0.2777777777777778em0.2777777777777778emN/A
⋝ U+22DDblockinfix0.2777777777777778em0.2777777777777778emN/A
⋞ U+22DEblockinfix0.2777777777777778em0.2777777777777778emN/A
⋟ U+22DFblockinfix0.2777777777777778em0.2777777777777778emN/A
⋠ U+22E0blockinfix0.2777777777777778em0.2777777777777778emN/A
⋡ U+22E1blockinfix0.2777777777777778em0.2777777777777778emN/A
⋢ U+22E2blockinfix0.2777777777777778em0.2777777777777778emN/A
⋣ U+22E3blockinfix0.2777777777777778em0.2777777777777778emN/A
⋤ U+22E4blockinfix0.2777777777777778em0.2777777777777778emN/A
⋥ U+22E5blockinfix0.2777777777777778em0.2777777777777778emN/A
⋦ U+22E6blockinfix0.2777777777777778em0.2777777777777778emN/A
⋧ U+22E7blockinfix0.2777777777777778em0.2777777777777778emN/A
⋨ U+22E8blockinfix0.2777777777777778em0.2777777777777778emN/A
⋩ U+22E9blockinfix0.2777777777777778em0.2777777777777778emN/A
⋪ U+22EAblockinfix0.2777777777777778em0.2777777777777778emN/A
⋫ U+22EBblockinfix0.2777777777777778em0.2777777777777778emN/A
⋬ U+22ECblockinfix0.2777777777777778em0.2777777777777778emN/A
⋭ U+22EDblockinfix0.2777777777777778em0.2777777777777778emN/A
⋲ U+22F2blockinfix0.2777777777777778em0.2777777777777778emN/A
⋳ U+22F3blockinfix0.2777777777777778em0.2777777777777778emN/A
⋴ U+22F4blockinfix0.2777777777777778em0.2777777777777778emN/A
⋵ U+22F5blockinfix0.2777777777777778em0.2777777777777778emN/A
⋶ U+22F6blockinfix0.2777777777777778em0.2777777777777778emN/A
⋷ U+22F7blockinfix0.2777777777777778em0.2777777777777778emN/A
⋸ U+22F8blockinfix0.2777777777777778em0.2777777777777778emN/A
⋹ U+22F9blockinfix0.2777777777777778em0.2777777777777778emN/A
⋺ U+22FAblockinfix0.2777777777777778em0.2777777777777778emN/A
⋻ U+22FBblockinfix0.2777777777777778em0.2777777777777778emN/A
⋼ U+22FCblockinfix0.2777777777777778em0.2777777777777778emN/A
⋽ U+22FDblockinfix0.2777777777777778em0.2777777777777778emN/A
⋾ U+22FEblockinfix0.2777777777777778em0.2777777777777778emN/A
⋿ U+22FFblockinfix0.2777777777777778em0.2777777777777778emN/A
⌁ U+2301blockinfix0.2777777777777778em0.2777777777777778emN/A
⍼ U+237Cblockinfix0.2777777777777778em0.2777777777777778emN/A
⎋ U+238Bblockinfix0.2777777777777778em0.2777777777777778emN/A
➘ U+2798blockinfix0.2777777777777778em0.2777777777777778emN/A
➚ U+279Ablockinfix0.2777777777777778em0.2777777777777778emN/A
➧ U+27A7blockinfix0.2777777777777778em0.2777777777777778emN/A
➲ U+27B2blockinfix0.2777777777777778em0.2777777777777778emN/A
➴ U+27B4blockinfix0.2777777777777778em0.2777777777777778emN/A
➶ U+27B6blockinfix0.2777777777777778em0.2777777777777778emN/A
➷ U+27B7blockinfix0.2777777777777778em0.2777777777777778emN/A
➹ U+27B9blockinfix0.2777777777777778em0.2777777777777778emN/A
⟂ U+27C2blockinfix0.2777777777777778em0.2777777777777778emN/A
⟲ U+27F2blockinfix0.2777777777777778em0.2777777777777778emN/A
⟳ U+27F3blockinfix0.2777777777777778em0.2777777777777778emN/A
⤡ U+2921blockinfix0.2777777777777778em0.2777777777777778emN/A
⤢ U+2922blockinfix0.2777777777777778em0.2777777777777778emN/A
⤣ U+2923blockinfix0.2777777777777778em0.2777777777777778emN/A
⤤ U+2924blockinfix0.2777777777777778em0.2777777777777778emN/A
⤥ U+2925blockinfix0.2777777777777778em0.2777777777777778emN/A
⤦ U+2926blockinfix0.2777777777777778em0.2777777777777778emN/A
⤧ U+2927blockinfix0.2777777777777778em0.2777777777777778emN/A
⤨ U+2928blockinfix0.2777777777777778em0.2777777777777778emN/A
⤩ U+2929blockinfix0.2777777777777778em0.2777777777777778emN/A
⤪ U+292Ablockinfix0.2777777777777778em0.2777777777777778emN/A
⤫ U+292Bblockinfix0.2777777777777778em0.2777777777777778emN/A
⤬ U+292Cblockinfix0.2777777777777778em0.2777777777777778emN/A
⤭ U+292Dblockinfix0.2777777777777778em0.2777777777777778emN/A
⤮ U+292Eblockinfix0.2777777777777778em0.2777777777777778emN/A
⤯ U+292Fblockinfix0.2777777777777778em0.2777777777777778emN/A
⤰ U+2930blockinfix0.2777777777777778em0.2777777777777778emN/A
⤱ U+2931blockinfix0.2777777777777778em0.2777777777777778emN/A
⤲ U+2932blockinfix0.2777777777777778em0.2777777777777778emN/A
⤳ U+2933blockinfix0.2777777777777778em0.2777777777777778emN/A
⤸ U+2938blockinfix0.2777777777777778em0.2777777777777778emN/A
⤹ U+2939blockinfix0.2777777777777778em0.2777777777777778emN/A
⤺ U+293Ablockinfix0.2777777777777778em0.2777777777777778emN/A
⤻ U+293Bblockinfix0.2777777777777778em0.2777777777777778emN/A
⤼ U+293Cblockinfix0.2777777777777778em0.2777777777777778emN/A
⤽ U+293Dblockinfix0.2777777777777778em0.2777777777777778emN/A
⤾ U+293Eblockinfix0.2777777777777778em0.2777777777777778emN/A
⤿ U+293Fblockinfix0.2777777777777778em0.2777777777777778emN/A
⥀ U+2940blockinfix0.2777777777777778em0.2777777777777778emN/A
⥁ U+2941blockinfix0.2777777777777778em0.2777777777777778emN/A
⥶ U+2976blockinfix0.2777777777777778em0.2777777777777778emN/A
⥷ U+2977blockinfix0.2777777777777778em0.2777777777777778emN/A
⥸ U+2978blockinfix0.2777777777777778em0.2777777777777778emN/A
⥹ U+2979blockinfix0.2777777777777778em0.2777777777777778emN/A
⥺ U+297Ablockinfix0.2777777777777778em0.2777777777777778emN/A
⥻ U+297Bblockinfix0.2777777777777778em0.2777777777777778emN/A
⦁ U+2981blockinfix0.2777777777777778em0.2777777777777778emN/A
⦂ U+2982blockinfix0.2777777777777778em0.2777777777777778emN/A
⦶ U+29B6blockinfix0.2777777777777778em0.2777777777777778emN/A
⦷ U+29B7blockinfix0.2777777777777778em0.2777777777777778emN/A
⦹ U+29B9blockinfix0.2777777777777778em0.2777777777777778emN/A
⧀ U+29C0blockinfix0.2777777777777778em0.2777777777777778emN/A
⧁ U+29C1blockinfix0.2777777777777778em0.2777777777777778emN/A
⧎ U+29CEblockinfix0.2777777777777778em0.2777777777777778emN/A
⧏ U+29CFblockinfix0.2777777777777778em0.2777777777777778emN/A
⧐ U+29D0blockinfix0.2777777777777778em0.2777777777777778emN/A
⧑ U+29D1blockinfix0.2777777777777778em0.2777777777777778emN/A
⧒ U+29D2blockinfix0.2777777777777778em0.2777777777777778emN/A
⧓ U+29D3blockinfix0.2777777777777778em0.2777777777777778emN/A
⧟ U+29DFblockinfix0.2777777777777778em0.2777777777777778emN/A
⧡ U+29E1blockinfix0.2777777777777778em0.2777777777777778emN/A
⧣ U+29E3blockinfix0.2777777777777778em0.2777777777777778emN/A
⧤ U+29E4blockinfix0.2777777777777778em0.2777777777777778emN/A
⧥ U+29E5blockinfix0.2777777777777778em0.2777777777777778emN/A
⧦ U+29E6blockinfix0.2777777777777778em0.2777777777777778emN/A
⧴ U+29F4blockinfix0.2777777777777778em0.2777777777777778emN/A
⩦ U+2A66blockinfix0.2777777777777778em0.2777777777777778emN/A
⩧ U+2A67blockinfix0.2777777777777778em0.2777777777777778emN/A
⩨ U+2A68blockinfix0.2777777777777778em0.2777777777777778emN/A
⩩ U+2A69blockinfix0.2777777777777778em0.2777777777777778emN/A
⩪ U+2A6Ablockinfix0.2777777777777778em0.2777777777777778emN/A
⩫ U+2A6Bblockinfix0.2777777777777778em0.2777777777777778emN/A
⩬ U+2A6Cblockinfix0.2777777777777778em0.2777777777777778emN/A
⩭ U+2A6Dblockinfix0.2777777777777778em0.2777777777777778emN/A
⩮ U+2A6Eblockinfix0.2777777777777778em0.2777777777777778emN/A
⩯ U+2A6Fblockinfix0.2777777777777778em0.2777777777777778emN/A
⩰ U+2A70blockinfix0.2777777777777778em0.2777777777777778emN/A
⩱ U+2A71blockinfix0.2777777777777778em0.2777777777777778emN/A
⩲ U+2A72blockinfix0.2777777777777778em0.2777777777777778emN/A
⩳ U+2A73blockinfix0.2777777777777778em0.2777777777777778emN/A
⩴ U+2A74blockinfix0.2777777777777778em0.2777777777777778emN/A
⩵ U+2A75blockinfix0.2777777777777778em0.2777777777777778emN/A
⩶ U+2A76blockinfix0.2777777777777778em0.2777777777777778emN/A
⩷ U+2A77blockinfix0.2777777777777778em0.2777777777777778emN/A
⩸ U+2A78blockinfix0.2777777777777778em0.2777777777777778emN/A
⩹ U+2A79blockinfix0.2777777777777778em0.2777777777777778emN/A
⩺ U+2A7Ablockinfix0.2777777777777778em0.2777777777777778emN/A
⩻ U+2A7Bblockinfix0.2777777777777778em0.2777777777777778emN/A
⩼ U+2A7Cblockinfix0.2777777777777778em0.2777777777777778emN/A
⩽ U+2A7Dblockinfix0.2777777777777778em0.2777777777777778emN/A
⩾ U+2A7Eblockinfix0.2777777777777778em0.2777777777777778emN/A
⩿ U+2A7Fblockinfix0.2777777777777778em0.2777777777777778emN/A
⪀ U+2A80blockinfix0.2777777777777778em0.2777777777777778emN/A
⪁ U+2A81blockinfix0.2777777777777778em0.2777777777777778emN/A
⪂ U+2A82blockinfix0.2777777777777778em0.2777777777777778emN/A
⪃ U+2A83blockinfix0.2777777777777778em0.2777777777777778emN/A
⪄ U+2A84blockinfix0.2777777777777778em0.2777777777777778emN/A
⪅ U+2A85blockinfix0.2777777777777778em0.2777777777777778emN/A
⪆ U+2A86blockinfix0.2777777777777778em0.2777777777777778emN/A
⪇ U+2A87blockinfix0.2777777777777778em0.2777777777777778emN/A
⪈ U+2A88blockinfix0.2777777777777778em0.2777777777777778emN/A
⪉ U+2A89blockinfix0.2777777777777778em0.2777777777777778emN/A
⪊ U+2A8Ablockinfix0.2777777777777778em0.2777777777777778emN/A
⪋ U+2A8Bblockinfix0.2777777777777778em0.2777777777777778emN/A
⪌ U+2A8Cblockinfix0.2777777777777778em0.2777777777777778emN/A
⪍ U+2A8Dblockinfix0.2777777777777778em0.2777777777777778emN/A
⪎ U+2A8Eblockinfix0.2777777777777778em0.2777777777777778emN/A
⪏ U+2A8Fblockinfix0.2777777777777778em0.2777777777777778emN/A
⪐ U+2A90blockinfix0.2777777777777778em0.2777777777777778emN/A
⪑ U+2A91blockinfix0.2777777777777778em0.2777777777777778emN/A
⪒ U+2A92blockinfix0.2777777777777778em0.2777777777777778emN/A
⪓ U+2A93blockinfix0.2777777777777778em0.2777777777777778emN/A
⪔ U+2A94blockinfix0.2777777777777778em0.2777777777777778emN/A
⪕ U+2A95blockinfix0.2777777777777778em0.2777777777777778emN/A
⪖ U+2A96blockinfix0.2777777777777778em0.2777777777777778emN/A
⪗ U+2A97blockinfix0.2777777777777778em0.2777777777777778emN/A
⪘ U+2A98blockinfix0.2777777777777778em0.2777777777777778emN/A
⪙ U+2A99blockinfix0.2777777777777778em0.2777777777777778emN/A
⪚ U+2A9Ablockinfix0.2777777777777778em0.2777777777777778emN/A
⪛ U+2A9Bblockinfix0.2777777777777778em0.2777777777777778emN/A
⪜ U+2A9Cblockinfix0.2777777777777778em0.2777777777777778emN/A
⪝ U+2A9Dblockinfix0.2777777777777778em0.2777777777777778emN/A
⪞ U+2A9Eblockinfix0.2777777777777778em0.2777777777777778emN/A
⪟ U+2A9Fblockinfix0.2777777777777778em0.2777777777777778emN/A
⪠ U+2AA0blockinfix0.2777777777777778em0.2777777777777778emN/A
⪡ U+2AA1blockinfix0.2777777777777778em0.2777777777777778emN/A
⪢ U+2AA2blockinfix0.2777777777777778em0.2777777777777778emN/A
⪣ U+2AA3blockinfix0.2777777777777778em0.2777777777777778emN/A
⪤ U+2AA4blockinfix0.2777777777777778em0.2777777777777778emN/A
⪥ U+2AA5blockinfix0.2777777777777778em0.2777777777777778emN/A
⪦ U+2AA6blockinfix0.2777777777777778em0.2777777777777778emN/A
⪧ U+2AA7blockinfix0.2777777777777778em0.2777777777777778emN/A
⪨ U+2AA8blockinfix0.2777777777777778em0.2777777777777778emN/A
⪩ U+2AA9blockinfix0.2777777777777778em0.2777777777777778emN/A
⪪ U+2AAAblockinfix0.2777777777777778em0.2777777777777778emN/A
⪫ U+2AABblockinfix0.2777777777777778em0.2777777777777778emN/A
⪬ U+2AACblockinfix0.2777777777777778em0.2777777777777778emN/A
⪭ U+2AADblockinfix0.2777777777777778em0.2777777777777778emN/A
⪮ U+2AAEblockinfix0.2777777777777778em0.2777777777777778emN/A
⪯ U+2AAFblockinfix0.2777777777777778em0.2777777777777778emN/A
⪰ U+2AB0blockinfix0.2777777777777778em0.2777777777777778emN/A
⪱ U+2AB1blockinfix0.2777777777777778em0.2777777777777778emN/A
⪲ U+2AB2blockinfix0.2777777777777778em0.2777777777777778emN/A
⪳ U+2AB3blockinfix0.2777777777777778em0.2777777777777778emN/A
⪴ U+2AB4blockinfix0.2777777777777778em0.2777777777777778emN/A
⪵ U+2AB5blockinfix0.2777777777777778em0.2777777777777778emN/A
⪶ U+2AB6blockinfix0.2777777777777778em0.2777777777777778emN/A
⪷ U+2AB7blockinfix0.2777777777777778em0.2777777777777778emN/A
⪸ U+2AB8blockinfix0.2777777777777778em0.2777777777777778emN/A
⪹ U+2AB9blockinfix0.2777777777777778em0.2777777777777778emN/A
⪺ U+2ABAblockinfix0.2777777777777778em0.2777777777777778emN/A
⪻ U+2ABBblockinfix0.2777777777777778em0.2777777777777778emN/A
⪼ U+2ABCblockinfix0.2777777777777778em0.2777777777777778emN/A
⪽ U+2ABDblockinfix0.2777777777777778em0.2777777777777778emN/A
⪾ U+2ABEblockinfix0.2777777777777778em0.2777777777777778emN/A
⪿ U+2ABFblockinfix0.2777777777777778em0.2777777777777778emN/A
⫀ U+2AC0blockinfix0.2777777777777778em0.2777777777777778emN/A
⫁ U+2AC1blockinfix0.2777777777777778em0.2777777777777778emN/A
⫂ U+2AC2blockinfix0.2777777777777778em0.2777777777777778emN/A
⫃ U+2AC3blockinfix0.2777777777777778em0.2777777777777778emN/A
⫄ U+2AC4blockinfix0.2777777777777778em0.2777777777777778emN/A
⫅ U+2AC5blockinfix0.2777777777777778em0.2777777777777778emN/A
⫆ U+2AC6blockinfix0.2777777777777778em0.2777777777777778emN/A
⫇ U+2AC7blockinfix0.2777777777777778em0.2777777777777778emN/A
⫈ U+2AC8blockinfix0.2777777777777778em0.2777777777777778emN/A
⫉ U+2AC9blockinfix0.2777777777777778em0.2777777777777778emN/A
⫊ U+2ACAblockinfix0.2777777777777778em0.2777777777777778emN/A
⫋ U+2ACBblockinfix0.2777777777777778em0.2777777777777778emN/A
⫌ U+2ACCblockinfix0.2777777777777778em0.2777777777777778emN/A
⫍ U+2ACDblockinfix0.2777777777777778em0.2777777777777778emN/A
⫎ U+2ACEblockinfix0.2777777777777778em0.2777777777777778emN/A
⫏ U+2ACFblockinfix0.2777777777777778em0.2777777777777778emN/A
⫐ U+2AD0blockinfix0.2777777777777778em0.2777777777777778emN/A
⫑ U+2AD1blockinfix0.2777777777777778em0.2777777777777778emN/A
⫒ U+2AD2blockinfix0.2777777777777778em0.2777777777777778emN/A
⫓ U+2AD3blockinfix0.2777777777777778em0.2777777777777778emN/A
⫔ U+2AD4blockinfix0.2777777777777778em0.2777777777777778emN/A
⫕ U+2AD5blockinfix0.2777777777777778em0.2777777777777778emN/A
⫖ U+2AD6blockinfix0.2777777777777778em0.2777777777777778emN/A
⫗ U+2AD7blockinfix0.2777777777777778em0.2777777777777778emN/A
⫘ U+2AD8blockinfix0.2777777777777778em0.2777777777777778emN/A
⫙ U+2AD9blockinfix0.2777777777777778em0.2777777777777778emN/A
⫚ U+2ADAblockinfix0.2777777777777778em0.2777777777777778emN/A
⫞ U+2ADEblockinfix0.2777777777777778em0.2777777777777778emN/A
⫟ U+2ADFblockinfix0.2777777777777778em0.2777777777777778emN/A
⫠ U+2AE0blockinfix0.2777777777777778em0.2777777777777778emN/A
⫡ U+2AE1blockinfix0.2777777777777778em0.2777777777777778emN/A
⫢ U+2AE2blockinfix0.2777777777777778em0.2777777777777778emN/A
⫣ U+2AE3blockinfix0.2777777777777778em0.2777777777777778emN/A
⫤ U+2AE4blockinfix0.2777777777777778em0.2777777777777778emN/A
⫥ U+2AE5blockinfix0.2777777777777778em0.2777777777777778emN/A
⫦ U+2AE6blockinfix0.2777777777777778em0.2777777777777778emN/A
⫧ U+2AE7blockinfix0.2777777777777778em0.2777777777777778emN/A
⫨ U+2AE8blockinfix0.2777777777777778em0.2777777777777778emN/A
⫩ U+2AE9blockinfix0.2777777777777778em0.2777777777777778emN/A
⫪ U+2AEAblockinfix0.2777777777777778em0.2777777777777778emN/A
⫫ U+2AEBblockinfix0.2777777777777778em0.2777777777777778emN/A
⫮ U+2AEEblockinfix0.2777777777777778em0.2777777777777778emN/A
⫲ U+2AF2blockinfix0.2777777777777778em0.2777777777777778emN/A
⫳ U+2AF3blockinfix0.2777777777777778em0.2777777777777778emN/A
⫴ U+2AF4blockinfix0.2777777777777778em0.2777777777777778emN/A
⫵ U+2AF5blockinfix0.2777777777777778em0.2777777777777778emN/A
⫷ U+2AF7blockinfix0.2777777777777778em0.2777777777777778emN/A
⫸ U+2AF8blockinfix0.2777777777777778em0.2777777777777778emN/A
⫹ U+2AF9blockinfix0.2777777777777778em0.2777777777777778emN/A
⫺ U+2AFAblockinfix0.2777777777777778em0.2777777777777778emN/A
⬀ U+2B00blockinfix0.2777777777777778em0.2777777777777778emN/A
⬁ U+2B01blockinfix0.2777777777777778em0.2777777777777778emN/A
⬂ U+2B02blockinfix0.2777777777777778em0.2777777777777778emN/A
⬃ U+2B03blockinfix0.2777777777777778em0.2777777777777778emN/A
⬈ U+2B08blockinfix0.2777777777777778em0.2777777777777778emN/A
⬉ U+2B09blockinfix0.2777777777777778em0.2777777777777778emN/A
⬊ U+2B0Ablockinfix0.2777777777777778em0.2777777777777778emN/A
⬋ U+2B0Bblockinfix0.2777777777777778em0.2777777777777778emN/A
⬿ U+2B3Fblockinfix0.2777777777777778em0.2777777777777778emN/A
⭍ U+2B4Dblockinfix0.2777777777777778em0.2777777777777778emN/A
⭎ U+2B4Eblockinfix0.2777777777777778em0.2777777777777778emN/A
⭏ U+2B4Fblockinfix0.2777777777777778em0.2777777777777778emN/A
⭚ U+2B5Ablockinfix0.2777777777777778em0.2777777777777778emN/A
⭛ U+2B5Bblockinfix0.2777777777777778em0.2777777777777778emN/A
⭜ U+2B5Cblockinfix0.2777777777777778em0.2777777777777778emN/A
⭝ U+2B5Dblockinfix0.2777777777777778em0.2777777777777778emN/A
⭞ U+2B5Eblockinfix0.2777777777777778em0.2777777777777778emN/A
⭟ U+2B5Fblockinfix0.2777777777777778em0.2777777777777778emN/A
⭦ U+2B66blockinfix0.2777777777777778em0.2777777777777778emN/A
⭧ U+2B67blockinfix0.2777777777777778em0.2777777777777778emN/A
⭨ U+2B68blockinfix0.2777777777777778em0.2777777777777778emN/A
⭩ U+2B69blockinfix0.2777777777777778em0.2777777777777778emN/A
⭮ U+2B6Eblockinfix0.2777777777777778em0.2777777777777778emN/A
⭯ U+2B6Fblockinfix0.2777777777777778em0.2777777777777778emN/A
⭶ U+2B76blockinfix0.2777777777777778em0.2777777777777778emN/A
⭷ U+2B77blockinfix0.2777777777777778em0.2777777777777778emN/A
⭸ U+2B78blockinfix0.2777777777777778em0.2777777777777778emN/A
⭹ U+2B79blockinfix0.2777777777777778em0.2777777777777778emN/A
⮈ U+2B88blockinfix0.2777777777777778em0.2777777777777778emN/A
⮉ U+2B89blockinfix0.2777777777777778em0.2777777777777778emN/A
⮊ U+2B8Ablockinfix0.2777777777777778em0.2777777777777778emN/A
⮋ U+2B8Bblockinfix0.2777777777777778em0.2777777777777778emN/A
⮌ U+2B8Cblockinfix0.2777777777777778em0.2777777777777778emN/A
⮍ U+2B8Dblockinfix0.2777777777777778em0.2777777777777778emN/A
⮎ U+2B8Eblockinfix0.2777777777777778em0.2777777777777778emN/A
⮏ U+2B8Fblockinfix0.2777777777777778em0.2777777777777778emN/A
⮔ U+2B94blockinfix0.2777777777777778em0.2777777777777778emN/A
⮰ U+2BB0blockinfix0.2777777777777778em0.2777777777777778emN/A
⮱ U+2BB1blockinfix0.2777777777777778em0.2777777777777778emN/A
⮲ U+2BB2blockinfix0.2777777777777778em0.2777777777777778emN/A
⮳ U+2BB3blockinfix0.2777777777777778em0.2777777777777778emN/A
⮴ U+2BB4blockinfix0.2777777777777778em0.2777777777777778emN/A
⮵ U+2BB5blockinfix0.2777777777777778em0.2777777777777778emN/A
⮶ U+2BB6blockinfix0.2777777777777778em0.2777777777777778emN/A
⮷ U+2BB7blockinfix0.2777777777777778em0.2777777777777778emN/A
⯑ U+2BD1blockinfix0.2777777777777778em0.2777777777777778emN/A
String != U+0021 U+003Dblockinfix0.2777777777777778em0.2777777777777778emN/A
String *= U+002A U+003Dblockinfix0.2777777777777778em0.2777777777777778emN/A
String += U+002B U+003Dblockinfix0.2777777777777778em0.2777777777777778emN/A
String -= U+002D U+003Dblockinfix0.2777777777777778em0.2777777777777778emN/A
String -> U+002D U+003Eblockinfix0.2777777777777778em0.2777777777777778emN/A
String // U+002F U+002Fblockinfix0.2777777777777778em0.2777777777777778emN/A
String /= U+002F U+003Dblockinfix0.2777777777777778em0.2777777777777778emN/A
String := U+003A U+003Dblockinfix0.2777777777777778em0.2777777777777778emN/A
String <= U+003C U+003Dblockinfix0.2777777777777778em0.2777777777777778emN/A
String == U+003D U+003Dblockinfix0.2777777777777778em0.2777777777777778emN/A
String >= U+003E U+003Dblockinfix0.2777777777777778em0.2777777777777778emN/A
String || U+007C U+007Cblockinfix0.2777777777777778em0.2777777777777778emfence
← U+2190inlineinfix0.2777777777777778em0.2777777777777778emstretchy
↑ U+2191blockinfix0.2777777777777778em0.2777777777777778emstretchy
→ U+2192inlineinfix0.2777777777777778em0.2777777777777778emstretchy
↓ U+2193blockinfix0.2777777777777778em0.2777777777777778emstretchy
↔ U+2194inlineinfix0.2777777777777778em0.2777777777777778emstretchy
↕ U+2195blockinfix0.2777777777777778em0.2777777777777778emstretchy
↚ U+219Ainlineinfix0.2777777777777778em0.2777777777777778emstretchy
↛ U+219Binlineinfix0.2777777777777778em0.2777777777777778emstretchy
↜ U+219Cinlineinfix0.2777777777777778em0.2777777777777778emstretchy
↝ U+219Dinlineinfix0.2777777777777778em0.2777777777777778emstretchy
↞ U+219Einlineinfix0.2777777777777778em0.2777777777777778emstretchy
↟ U+219Fblockinfix0.2777777777777778em0.2777777777777778emstretchy
↠ U+21A0inlineinfix0.2777777777777778em0.2777777777777778emstretchy
↡ U+21A1blockinfix0.2777777777777778em0.2777777777777778emstretchy
↢ U+21A2inlineinfix0.2777777777777778em0.2777777777777778emstretchy
↣ U+21A3inlineinfix0.2777777777777778em0.2777777777777778emstretchy
↤ U+21A4inlineinfix0.2777777777777778em0.2777777777777778emstretchy
↥ U+21A5blockinfix0.2777777777777778em0.2777777777777778emstretchy
↦ U+21A6inlineinfix0.2777777777777778em0.2777777777777778emstretchy
↧ U+21A7blockinfix0.2777777777777778em0.2777777777777778emstretchy
↨ U+21A8blockinfix0.2777777777777778em0.2777777777777778emstretchy
↩ U+21A9inlineinfix0.2777777777777778em0.2777777777777778emstretchy
↪ U+21AAinlineinfix0.2777777777777778em0.2777777777777778emstretchy
↫ U+21ABinlineinfix0.2777777777777778em0.2777777777777778emstretchy
↬ U+21ACinlineinfix0.2777777777777778em0.2777777777777778emstretchy
↭ U+21ADinlineinfix0.2777777777777778em0.2777777777777778emstretchy
↮ U+21AEinlineinfix0.2777777777777778em0.2777777777777778emstretchy
↰ U+21B0blockinfix0.2777777777777778em0.2777777777777778emstretchy
↱ U+21B1blockinfix0.2777777777777778em0.2777777777777778emstretchy
↲ U+21B2blockinfix0.2777777777777778em0.2777777777777778emstretchy
↳ U+21B3blockinfix0.2777777777777778em0.2777777777777778emstretchy
↴ U+21B4inlineinfix0.2777777777777778em0.2777777777777778emstretchy
↵ U+21B5blockinfix0.2777777777777778em0.2777777777777778emstretchy
↹ U+21B9inlineinfix0.2777777777777778em0.2777777777777778emstretchy
↼ U+21BCinlineinfix0.2777777777777778em0.2777777777777778emstretchy
↽ U+21BDinlineinfix0.2777777777777778em0.2777777777777778emstretchy
↾ U+21BEblockinfix0.2777777777777778em0.2777777777777778emstretchy
↿ U+21BFblockinfix0.2777777777777778em0.2777777777777778emstretchy
⇀ U+21C0inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇁ U+21C1inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇂ U+21C2blockinfix0.2777777777777778em0.2777777777777778emstretchy
⇃ U+21C3blockinfix0.2777777777777778em0.2777777777777778emstretchy
⇄ U+21C4inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇅ U+21C5blockinfix0.2777777777777778em0.2777777777777778emstretchy
⇆ U+21C6inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇇ U+21C7inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇈ U+21C8blockinfix0.2777777777777778em0.2777777777777778emstretchy
⇉ U+21C9inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇊ U+21CAblockinfix0.2777777777777778em0.2777777777777778emstretchy
⇋ U+21CBinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇌ U+21CCinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇍ U+21CDinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇎ U+21CEinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇏ U+21CFinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇐ U+21D0inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇑ U+21D1blockinfix0.2777777777777778em0.2777777777777778emstretchy
⇒ U+21D2inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇓ U+21D3blockinfix0.2777777777777778em0.2777777777777778emstretchy
⇔ U+21D4inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇕ U+21D5blockinfix0.2777777777777778em0.2777777777777778emstretchy
⇚ U+21DAinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇛ U+21DBinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇜ U+21DCinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇝ U+21DDinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇞ U+21DEblockinfix0.2777777777777778em0.2777777777777778emstretchy
⇟ U+21DFblockinfix0.2777777777777778em0.2777777777777778emstretchy
⇠ U+21E0inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇡ U+21E1blockinfix0.2777777777777778em0.2777777777777778emstretchy
⇢ U+21E2inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇣ U+21E3blockinfix0.2777777777777778em0.2777777777777778emstretchy
⇤ U+21E4inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇥ U+21E5inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇦ U+21E6inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇧ U+21E7blockinfix0.2777777777777778em0.2777777777777778emstretchy
⇨ U+21E8inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇩ U+21E9blockinfix0.2777777777777778em0.2777777777777778emstretchy
⇪ U+21EAblockinfix0.2777777777777778em0.2777777777777778emstretchy
⇫ U+21EBblockinfix0.2777777777777778em0.2777777777777778emstretchy
⇬ U+21ECblockinfix0.2777777777777778em0.2777777777777778emstretchy
⇭ U+21EDblockinfix0.2777777777777778em0.2777777777777778emstretchy
⇮ U+21EEblockinfix0.2777777777777778em0.2777777777777778emstretchy
⇯ U+21EFblockinfix0.2777777777777778em0.2777777777777778emstretchy
⇰ U+21F0inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇳ U+21F3blockinfix0.2777777777777778em0.2777777777777778emstretchy
⇴ U+21F4inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇵ U+21F5blockinfix0.2777777777777778em0.2777777777777778emstretchy
⇶ U+21F6inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇷ U+21F7inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇸ U+21F8inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇹ U+21F9inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇺ U+21FAinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇻ U+21FBinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇼ U+21FCinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇽ U+21FDinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇾ U+21FEinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⇿ U+21FFinlineinfix0.2777777777777778em0.2777777777777778emstretchy
➔ U+2794inlineinfix0.2777777777777778em0.2777777777777778emstretchy
➙ U+2799inlineinfix0.2777777777777778em0.2777777777777778emstretchy
➛ U+279Binlineinfix0.2777777777777778em0.2777777777777778emstretchy
➜ U+279Cinlineinfix0.2777777777777778em0.2777777777777778emstretchy
➝ U+279Dinlineinfix0.2777777777777778em0.2777777777777778emstretchy
➞ U+279Einlineinfix0.2777777777777778em0.2777777777777778emstretchy
➟ U+279Finlineinfix0.2777777777777778em0.2777777777777778emstretchy
➠ U+27A0inlineinfix0.2777777777777778em0.2777777777777778emstretchy
➡ U+27A1inlineinfix0.2777777777777778em0.2777777777777778emstretchy
➥ U+27A5inlineinfix0.2777777777777778em0.2777777777777778emstretchy
➦ U+27A6inlineinfix0.2777777777777778em0.2777777777777778emstretchy
➨ U+27A8inlineinfix0.2777777777777778em0.2777777777777778emstretchy
➩ U+27A9inlineinfix0.2777777777777778em0.2777777777777778emstretchy
➪ U+27AAinlineinfix0.2777777777777778em0.2777777777777778emstretchy
➫ U+27ABinlineinfix0.2777777777777778em0.2777777777777778emstretchy
➬ U+27ACinlineinfix0.2777777777777778em0.2777777777777778emstretchy
➭ U+27ADinlineinfix0.2777777777777778em0.2777777777777778emstretchy
➮ U+27AEinlineinfix0.2777777777777778em0.2777777777777778emstretchy
➯ U+27AFinlineinfix0.2777777777777778em0.2777777777777778emstretchy
➱ U+27B1inlineinfix0.2777777777777778em0.2777777777777778emstretchy
➳ U+27B3inlineinfix0.2777777777777778em0.2777777777777778emstretchy
➵ U+27B5inlineinfix0.2777777777777778em0.2777777777777778emstretchy
➸ U+27B8inlineinfix0.2777777777777778em0.2777777777777778emstretchy
➺ U+27BAinlineinfix0.2777777777777778em0.2777777777777778emstretchy
➻ U+27BBinlineinfix0.2777777777777778em0.2777777777777778emstretchy
➼ U+27BCinlineinfix0.2777777777777778em0.2777777777777778emstretchy
➽ U+27BDinlineinfix0.2777777777777778em0.2777777777777778emstretchy
➾ U+27BEinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⟰ U+27F0blockinfix0.2777777777777778em0.2777777777777778emstretchy
⟱ U+27F1blockinfix0.2777777777777778em0.2777777777777778emstretchy
⟴ U+27F4inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⟵ U+27F5inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⟶ U+27F6inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⟷ U+27F7inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⟸ U+27F8inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⟹ U+27F9inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⟺ U+27FAinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⟻ U+27FBinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⟼ U+27FCinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⟽ U+27FDinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⟾ U+27FEinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⟿ U+27FFinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤀ U+2900inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤁ U+2901inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤂ U+2902inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤃ U+2903inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤄ U+2904inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤅ U+2905inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤆ U+2906inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤇ U+2907inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤈ U+2908blockinfix0.2777777777777778em0.2777777777777778emstretchy
⤉ U+2909blockinfix0.2777777777777778em0.2777777777777778emstretchy
⤊ U+290Ablockinfix0.2777777777777778em0.2777777777777778emstretchy
⤋ U+290Bblockinfix0.2777777777777778em0.2777777777777778emstretchy
⤌ U+290Cinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤍ U+290Dinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤎ U+290Einlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤏ U+290Finlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤐ U+2910inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤑ U+2911inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤒ U+2912blockinfix0.2777777777777778em0.2777777777777778emstretchy
⤓ U+2913blockinfix0.2777777777777778em0.2777777777777778emstretchy
⤔ U+2914inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤕ U+2915inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤖ U+2916inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤗ U+2917inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤘ U+2918inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤙ U+2919inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤚ U+291Ainlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤛ U+291Binlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤜ U+291Cinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤝ U+291Dinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤞ U+291Einlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤟ U+291Finlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤠ U+2920inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⤴ U+2934blockinfix0.2777777777777778em0.2777777777777778emstretchy
⤵ U+2935blockinfix0.2777777777777778em0.2777777777777778emstretchy
⤶ U+2936blockinfix0.2777777777777778em0.2777777777777778emstretchy
⤷ U+2937blockinfix0.2777777777777778em0.2777777777777778emstretchy
⥂ U+2942inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥃ U+2943inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥄ U+2944inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥅ U+2945inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥆ U+2946inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥇ U+2947inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥈ U+2948inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥉ U+2949blockinfix0.2777777777777778em0.2777777777777778emstretchy
⥊ U+294Ainlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥋ U+294Binlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥌ U+294Cblockinfix0.2777777777777778em0.2777777777777778emstretchy
⥍ U+294Dblockinfix0.2777777777777778em0.2777777777777778emstretchy
⥎ U+294Einlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥏ U+294Fblockinfix0.2777777777777778em0.2777777777777778emstretchy
⥐ U+2950inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥑ U+2951blockinfix0.2777777777777778em0.2777777777777778emstretchy
⥒ U+2952inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥓ U+2953inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥔ U+2954blockinfix0.2777777777777778em0.2777777777777778emstretchy
⥕ U+2955blockinfix0.2777777777777778em0.2777777777777778emstretchy
⥖ U+2956inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥗ U+2957inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥘ U+2958blockinfix0.2777777777777778em0.2777777777777778emstretchy
⥙ U+2959blockinfix0.2777777777777778em0.2777777777777778emstretchy
⥚ U+295Ainlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥛ U+295Binlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥜ U+295Cblockinfix0.2777777777777778em0.2777777777777778emstretchy
⥝ U+295Dblockinfix0.2777777777777778em0.2777777777777778emstretchy
⥞ U+295Einlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥟ U+295Finlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥠ U+2960blockinfix0.2777777777777778em0.2777777777777778emstretchy
⥡ U+2961blockinfix0.2777777777777778em0.2777777777777778emstretchy
⥢ U+2962inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥣ U+2963blockinfix0.2777777777777778em0.2777777777777778emstretchy
⥤ U+2964inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥥ U+2965blockinfix0.2777777777777778em0.2777777777777778emstretchy
⥦ U+2966inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥧ U+2967inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥨ U+2968inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥩ U+2969inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥪ U+296Ainlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥫ U+296Binlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥬ U+296Cinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥭ U+296Dinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥮ U+296Eblockinfix0.2777777777777778em0.2777777777777778emstretchy
⥯ U+296Fblockinfix0.2777777777777778em0.2777777777777778emstretchy
⥰ U+2970inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥱ U+2971inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥲ U+2972inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥳ U+2973inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥴ U+2974inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥵ U+2975inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥼ U+297Cinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥽ U+297Dinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⥾ U+297Eblockinfix0.2777777777777778em0.2777777777777778emstretchy
⥿ U+297Fblockinfix0.2777777777777778em0.2777777777777778emstretchy
⬄ U+2B04inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⬅ U+2B05inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⬆ U+2B06blockinfix0.2777777777777778em0.2777777777777778emstretchy
⬇ U+2B07blockinfix0.2777777777777778em0.2777777777777778emstretchy
⬌ U+2B0Cinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⬍ U+2B0Dblockinfix0.2777777777777778em0.2777777777777778emstretchy
⬎ U+2B0Eblockinfix0.2777777777777778em0.2777777777777778emstretchy
⬏ U+2B0Fblockinfix0.2777777777777778em0.2777777777777778emstretchy
⬐ U+2B10blockinfix0.2777777777777778em0.2777777777777778emstretchy
⬑ U+2B11blockinfix0.2777777777777778em0.2777777777777778emstretchy
⬰ U+2B30inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⬱ U+2B31inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⬲ U+2B32inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⬳ U+2B33inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⬴ U+2B34inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⬵ U+2B35inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⬶ U+2B36inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⬷ U+2B37inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⬸ U+2B38inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⬹ U+2B39inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⬺ U+2B3Ainlineinfix0.2777777777777778em0.2777777777777778emstretchy
⬻ U+2B3Binlineinfix0.2777777777777778em0.2777777777777778emstretchy
⬼ U+2B3Cinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⬽ U+2B3Dinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⬾ U+2B3Einlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭀ U+2B40inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭁ U+2B41inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭂ U+2B42inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭃ U+2B43inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭄ U+2B44inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭅ U+2B45inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭆ U+2B46inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭇ U+2B47inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭈ U+2B48inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭉ U+2B49inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭊ U+2B4Ainlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭋ U+2B4Binlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭌ U+2B4Cinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭠ U+2B60inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭡ U+2B61blockinfix0.2777777777777778em0.2777777777777778emstretchy
⭢ U+2B62inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭣ U+2B63blockinfix0.2777777777777778em0.2777777777777778emstretchy
⭤ U+2B64inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭥ U+2B65blockinfix0.2777777777777778em0.2777777777777778emstretchy
⭪ U+2B6Ainlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭫ U+2B6Bblockinfix0.2777777777777778em0.2777777777777778emstretchy
⭬ U+2B6Cinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭭ U+2B6Dblockinfix0.2777777777777778em0.2777777777777778emstretchy
⭰ U+2B70inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭱ U+2B71blockinfix0.2777777777777778em0.2777777777777778emstretchy
⭲ U+2B72inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭳ U+2B73blockinfix0.2777777777777778em0.2777777777777778emstretchy
⭺ U+2B7Ainlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭻ U+2B7Bblockinfix0.2777777777777778em0.2777777777777778emstretchy
⭼ U+2B7Cinlineinfix0.2777777777777778em0.2777777777777778emstretchy
⭽ U+2B7Dblockinfix0.2777777777777778em0.2777777777777778emstretchy
⮀ U+2B80inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⮁ U+2B81blockinfix0.2777777777777778em0.2777777777777778emstretchy
⮂ U+2B82inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⮃ U+2B83blockinfix0.2777777777777778em0.2777777777777778emstretchy
⮄ U+2B84inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⮅ U+2B85blockinfix0.2777777777777778em0.2777777777777778emstretchy
⮆ U+2B86inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⮇ U+2B87blockinfix0.2777777777777778em0.2777777777777778emstretchy
⮕ U+2B95inlineinfix0.2777777777777778em0.2777777777777778emstretchy
⮠ U+2BA0blockinfix0.2777777777777778em0.2777777777777778emstretchy
⮡ U+2BA1blockinfix0.2777777777777778em0.2777777777777778emstretchy
⮢ U+2BA2blockinfix0.2777777777777778em0.2777777777777778emstretchy
⮣ U+2BA3blockinfix0.2777777777777778em0.2777777777777778emstretchy
⮤ U+2BA4blockinfix0.2777777777777778em0.2777777777777778emstretchy
⮥ U+2BA5blockinfix0.2777777777777778em0.2777777777777778emstretchy
⮦ U+2BA6blockinfix0.2777777777777778em0.2777777777777778emstretchy
⮧ U+2BA7blockinfix0.2777777777777778em0.2777777777777778emstretchy
⮨ U+2BA8blockinfix0.2777777777777778em0.2777777777777778emstretchy
⮩ U+2BA9blockinfix0.2777777777777778em0.2777777777777778emstretchy
⮪ U+2BAAblockinfix0.2777777777777778em0.2777777777777778emstretchy
⮫ U+2BABblockinfix0.2777777777777778em0.2777777777777778emstretchy
⮬ U+2BACblockinfix0.2777777777777778em0.2777777777777778emstretchy
⮭ U+2BADblockinfix0.2777777777777778em0.2777777777777778emstretchy
⮮ U+2BAEblockinfix0.2777777777777778em0.2777777777777778emstretchy
⮯ U+2BAFblockinfix0.2777777777777778em0.2777777777777778emstretchy
⮸ U+2BB8blockinfix0.2777777777777778em0.2777777777777778emstretchy
+ U+002Bblockinfix0.2222222222222222em0.2222222222222222emN/A
- U+002Dblockinfix0.2222222222222222em0.2222222222222222emN/A
± U+00B1blockinfix0.2222222222222222em0.2222222222222222emN/A
÷ U+00F7blockinfix0.2222222222222222em0.2222222222222222emN/A
⁄ U+2044blockinfix0.2222222222222222em0.2222222222222222emN/A
− U+2212blockinfix0.2222222222222222em0.2222222222222222emN/A
∓ U+2213blockinfix0.2222222222222222em0.2222222222222222emN/A
∔ U+2214blockinfix0.2222222222222222em0.2222222222222222emN/A
∕ U+2215blockinfix0.2222222222222222em0.2222222222222222emN/A
∖ U+2216blockinfix0.2222222222222222em0.2222222222222222emN/A
∧ U+2227blockinfix0.2222222222222222em0.2222222222222222emN/A
∨ U+2228blockinfix0.2222222222222222em0.2222222222222222emN/A
∩ U+2229blockinfix0.2222222222222222em0.2222222222222222emN/A
∪ U+222Ablockinfix0.2222222222222222em0.2222222222222222emN/A
∶ U+2236blockinfix0.2222222222222222em0.2222222222222222emN/A
∸ U+2238blockinfix0.2222222222222222em0.2222222222222222emN/A
⊌ U+228Cblockinfix0.2222222222222222em0.2222222222222222emN/A
⊍ U+228Dblockinfix0.2222222222222222em0.2222222222222222emN/A
⊎ U+228Eblockinfix0.2222222222222222em0.2222222222222222emN/A
⊓ U+2293blockinfix0.2222222222222222em0.2222222222222222emN/A
⊔ U+2294blockinfix0.2222222222222222em0.2222222222222222emN/A
⊕ U+2295blockinfix0.2222222222222222em0.2222222222222222emN/A
⊖ U+2296blockinfix0.2222222222222222em0.2222222222222222emN/A
⊘ U+2298blockinfix0.2222222222222222em0.2222222222222222emN/A
⊝ U+229Dblockinfix0.2222222222222222em0.2222222222222222emN/A
⊞ U+229Eblockinfix0.2222222222222222em0.2222222222222222emN/A
⊟ U+229Fblockinfix0.2222222222222222em0.2222222222222222emN/A
⊻ U+22BBblockinfix0.2222222222222222em0.2222222222222222emN/A
⊼ U+22BCblockinfix0.2222222222222222em0.2222222222222222emN/A
⊽ U+22BDblockinfix0.2222222222222222em0.2222222222222222emN/A
⋎ U+22CEblockinfix0.2222222222222222em0.2222222222222222emN/A
⋏ U+22CFblockinfix0.2222222222222222em0.2222222222222222emN/A
⋒ U+22D2blockinfix0.2222222222222222em0.2222222222222222emN/A
⋓ U+22D3blockinfix0.2222222222222222em0.2222222222222222emN/A
➕ U+2795blockinfix0.2222222222222222em0.2222222222222222emN/A
➖ U+2796blockinfix0.2222222222222222em0.2222222222222222emN/A
➗ U+2797blockinfix0.2222222222222222em0.2222222222222222emN/A
⦸ U+29B8blockinfix0.2222222222222222em0.2222222222222222emN/A
⦼ U+29BCblockinfix0.2222222222222222em0.2222222222222222emN/A
⧄ U+29C4blockinfix0.2222222222222222em0.2222222222222222emN/A
⧅ U+29C5blockinfix0.2222222222222222em0.2222222222222222emN/A
⧵ U+29F5blockinfix0.2222222222222222em0.2222222222222222emN/A
⧶ U+29F6blockinfix0.2222222222222222em0.2222222222222222emN/A
⧷ U+29F7blockinfix0.2222222222222222em0.2222222222222222emN/A
⧸ U+29F8blockinfix0.2222222222222222em0.2222222222222222emN/A
⧹ U+29F9blockinfix0.2222222222222222em0.2222222222222222emN/A
⧺ U+29FAblockinfix0.2222222222222222em0.2222222222222222emN/A
⧻ U+29FBblockinfix0.2222222222222222em0.2222222222222222emN/A
⨟ U+2A1Fblockinfix0.2222222222222222em0.2222222222222222emN/A
⨠ U+2A20blockinfix0.2222222222222222em0.2222222222222222emN/A
⨡ U+2A21blockinfix0.2222222222222222em0.2222222222222222emN/A
⨢ U+2A22blockinfix0.2222222222222222em0.2222222222222222emN/A
⨣ U+2A23blockinfix0.2222222222222222em0.2222222222222222emN/A
⨤ U+2A24blockinfix0.2222222222222222em0.2222222222222222emN/A
⨥ U+2A25blockinfix0.2222222222222222em0.2222222222222222emN/A
⨦ U+2A26blockinfix0.2222222222222222em0.2222222222222222emN/A
⨧ U+2A27blockinfix0.2222222222222222em0.2222222222222222emN/A
⨨ U+2A28blockinfix0.2222222222222222em0.2222222222222222emN/A
⨩ U+2A29blockinfix0.2222222222222222em0.2222222222222222emN/A
⨪ U+2A2Ablockinfix0.2222222222222222em0.2222222222222222emN/A
⨫ U+2A2Bblockinfix0.2222222222222222em0.2222222222222222emN/A
⨬ U+2A2Cblockinfix0.2222222222222222em0.2222222222222222emN/A
⨭ U+2A2Dblockinfix0.2222222222222222em0.2222222222222222emN/A
⨮ U+2A2Eblockinfix0.2222222222222222em0.2222222222222222emN/A
⨸ U+2A38blockinfix0.2222222222222222em0.2222222222222222emN/A
⨹ U+2A39blockinfix0.2222222222222222em0.2222222222222222emN/A
⨺ U+2A3Ablockinfix0.2222222222222222em0.2222222222222222emN/A
⨾ U+2A3Eblockinfix0.2222222222222222em0.2222222222222222emN/A
⩀ U+2A40blockinfix0.2222222222222222em0.2222222222222222emN/A
⩁ U+2A41blockinfix0.2222222222222222em0.2222222222222222emN/A
⩂ U+2A42blockinfix0.2222222222222222em0.2222222222222222emN/A
⩃ U+2A43blockinfix0.2222222222222222em0.2222222222222222emN/A
⩄ U+2A44blockinfix0.2222222222222222em0.2222222222222222emN/A
⩅ U+2A45blockinfix0.2222222222222222em0.2222222222222222emN/A
⩆ U+2A46blockinfix0.2222222222222222em0.2222222222222222emN/A
⩇ U+2A47blockinfix0.2222222222222222em0.2222222222222222emN/A
⩈ U+2A48blockinfix0.2222222222222222em0.2222222222222222emN/A
⩉ U+2A49blockinfix0.2222222222222222em0.2222222222222222emN/A
⩊ U+2A4Ablockinfix0.2222222222222222em0.2222222222222222emN/A
⩋ U+2A4Bblockinfix0.2222222222222222em0.2222222222222222emN/A
⩌ U+2A4Cblockinfix0.2222222222222222em0.2222222222222222emN/A
⩍ U+2A4Dblockinfix0.2222222222222222em0.2222222222222222emN/A
⩎ U+2A4Eblockinfix0.2222222222222222em0.2222222222222222emN/A
⩏ U+2A4Fblockinfix0.2222222222222222em0.2222222222222222emN/A
⩑ U+2A51blockinfix0.2222222222222222em0.2222222222222222emN/A
⩒ U+2A52blockinfix0.2222222222222222em0.2222222222222222emN/A
⩓ U+2A53blockinfix0.2222222222222222em0.2222222222222222emN/A
⩔ U+2A54blockinfix0.2222222222222222em0.2222222222222222emN/A
⩕ U+2A55blockinfix0.2222222222222222em0.2222222222222222emN/A
⩖ U+2A56blockinfix0.2222222222222222em0.2222222222222222emN/A
⩗ U+2A57blockinfix0.2222222222222222em0.2222222222222222emN/A
⩘ U+2A58blockinfix0.2222222222222222em0.2222222222222222emN/A
⩙ U+2A59blockinfix0.2222222222222222em0.2222222222222222emN/A
⩚ U+2A5Ablockinfix0.2222222222222222em0.2222222222222222emN/A
⩛ U+2A5Bblockinfix0.2222222222222222em0.2222222222222222emN/A
⩜ U+2A5Cblockinfix0.2222222222222222em0.2222222222222222emN/A
⩝ U+2A5Dblockinfix0.2222222222222222em0.2222222222222222emN/A
⩞ U+2A5Eblockinfix0.2222222222222222em0.2222222222222222emN/A
⩟ U+2A5Fblockinfix0.2222222222222222em0.2222222222222222emN/A
⩠ U+2A60blockinfix0.2222222222222222em0.2222222222222222emN/A
⩡ U+2A61blockinfix0.2222222222222222em0.2222222222222222emN/A
⩢ U+2A62blockinfix0.2222222222222222em0.2222222222222222emN/A
⩣ U+2A63blockinfix0.2222222222222222em0.2222222222222222emN/A
⫛ U+2ADBblockinfix0.2222222222222222em0.2222222222222222emN/A
⫶ U+2AF6blockinfix0.2222222222222222em0.2222222222222222emN/A
⫻ U+2AFBblockinfix0.2222222222222222em0.2222222222222222emN/A
⫽ U+2AFDblockinfix0.2222222222222222em0.2222222222222222emN/A
String && U+0026 U+0026blockinfix0.2222222222222222em0.2222222222222222emN/A
% U+0025blockinfix0.16666666666666666em0.16666666666666666emN/A
* U+002Ablockinfix0.16666666666666666em0.16666666666666666emN/A
. U+002Eblockinfix0.16666666666666666em0.16666666666666666emN/A
? U+003Fblockinfix0.16666666666666666em0.16666666666666666emN/A
@ U+0040blockinfix0.16666666666666666em0.16666666666666666emN/A
^ U+005Einlineinfix0.16666666666666666em0.16666666666666666emN/A
· U+00B7blockinfix0.16666666666666666em0.16666666666666666emN/A
× U+00D7blockinfix0.16666666666666666em0.16666666666666666emN/A
• U+2022blockinfix0.16666666666666666em0.16666666666666666emN/A
⁃ U+2043blockinfix0.16666666666666666em0.16666666666666666emN/A
∗ U+2217blockinfix0.16666666666666666em0.16666666666666666emN/A
∘ U+2218blockinfix0.16666666666666666em0.16666666666666666emN/A
∙ U+2219blockinfix0.16666666666666666em0.16666666666666666emN/A
≀ U+2240blockinfix0.16666666666666666em0.16666666666666666emN/A
⊗ U+2297blockinfix0.16666666666666666em0.16666666666666666emN/A
⊙ U+2299blockinfix0.16666666666666666em0.16666666666666666emN/A
⊚ U+229Ablockinfix0.16666666666666666em0.16666666666666666emN/A
⊛ U+229Bblockinfix0.16666666666666666em0.16666666666666666emN/A
⊠ U+22A0blockinfix0.16666666666666666em0.16666666666666666emN/A
⊡ U+22A1blockinfix0.16666666666666666em0.16666666666666666emN/A
⊺ U+22BAblockinfix0.16666666666666666em0.16666666666666666emN/A
⋄ U+22C4blockinfix0.16666666666666666em0.16666666666666666emN/A
⋅ U+22C5blockinfix0.16666666666666666em0.16666666666666666emN/A
⋆ U+22C6blockinfix0.16666666666666666em0.16666666666666666emN/A
⋇ U+22C7blockinfix0.16666666666666666em0.16666666666666666emN/A
⋉ U+22C9blockinfix0.16666666666666666em0.16666666666666666emN/A
⋊ U+22CAblockinfix0.16666666666666666em0.16666666666666666emN/A
⋋ U+22CBblockinfix0.16666666666666666em0.16666666666666666emN/A
⋌ U+22CCblockinfix0.16666666666666666em0.16666666666666666emN/A
⌅ U+2305blockinfix0.16666666666666666em0.16666666666666666emN/A
⌆ U+2306blockinfix0.16666666666666666em0.16666666666666666emN/A
⟋ U+27CBblockinfix0.16666666666666666em0.16666666666666666emN/A
⟍ U+27CDblockinfix0.16666666666666666em0.16666666666666666emN/A
⧆ U+29C6blockinfix0.16666666666666666em0.16666666666666666emN/A
⧇ U+29C7blockinfix0.16666666666666666em0.16666666666666666emN/A
⧈ U+29C8blockinfix0.16666666666666666em0.16666666666666666emN/A
⧔ U+29D4blockinfix0.16666666666666666em0.16666666666666666emN/A
⧕ U+29D5blockinfix0.16666666666666666em0.16666666666666666emN/A
⧖ U+29D6blockinfix0.16666666666666666em0.16666666666666666emN/A
⧗ U+29D7blockinfix0.16666666666666666em0.16666666666666666emN/A
⧢ U+29E2blockinfix0.16666666666666666em0.16666666666666666emN/A
⨝ U+2A1Dblockinfix0.16666666666666666em0.16666666666666666emN/A
⨞ U+2A1Eblockinfix0.16666666666666666em0.16666666666666666emN/A
⨯ U+2A2Fblockinfix0.16666666666666666em0.16666666666666666emN/A
⨰ U+2A30blockinfix0.16666666666666666em0.16666666666666666emN/A
⨱ U+2A31blockinfix0.16666666666666666em0.16666666666666666emN/A
⨲ U+2A32blockinfix0.16666666666666666em0.16666666666666666emN/A
⨳ U+2A33blockinfix0.16666666666666666em0.16666666666666666emN/A
⨴ U+2A34blockinfix0.16666666666666666em0.16666666666666666emN/A
⨵ U+2A35blockinfix0.16666666666666666em0.16666666666666666emN/A
⨶ U+2A36blockinfix0.16666666666666666em0.16666666666666666emN/A
⨷ U+2A37blockinfix0.16666666666666666em0.16666666666666666emN/A
⨻ U+2A3Bblockinfix0.16666666666666666em0.16666666666666666emN/A
⨼ U+2A3Cblockinfix0.16666666666666666em0.16666666666666666emN/A
⨽ U+2A3Dblockinfix0.16666666666666666em0.16666666666666666emN/A
⨿ U+2A3Fblockinfix0.16666666666666666em0.16666666666666666emN/A
⩐ U+2A50blockinfix0.16666666666666666em0.16666666666666666emN/A
⩤ U+2A64blockinfix0.16666666666666666em0.16666666666666666emN/A
⩥ U+2A65blockinfix0.16666666666666666em0.16666666666666666emN/A
⫝̸ U+2ADCblockinfix0.16666666666666666em0.16666666666666666emN/A
⫝ U+2ADDblockinfix0.16666666666666666em0.16666666666666666emN/A
⫾ U+2AFEblockinfix0.16666666666666666em0.16666666666666666emN/A
String ** U+002A U+002Ablockinfix0.16666666666666666em0.16666666666666666emN/A
String <> U+003C U+003Eblockinfix0.16666666666666666em0.16666666666666666emN/A
! U+0021blockprefix00N/A
+ U+002Bblockprefix00N/A
- U+002Dblockprefix00N/A
¬ U+00ACblockprefix00N/A
± U+00B1blockprefix00N/A
‘ U+2018blockprefix00fence
“ U+201Cblockprefix00fence
∀ U+2200blockprefix00N/A
∁ U+2201blockprefix00N/A
∃ U+2203blockprefix00N/A
∄ U+2204blockprefix00N/A
∇ U+2207blockprefix00N/A
− U+2212blockprefix00N/A
∓ U+2213blockprefix00N/A
∟ U+221Fblockprefix00N/A
∠ U+2220blockprefix00N/A
∡ U+2221blockprefix00N/A
∢ U+2222blockprefix00N/A
∴ U+2234blockprefix00N/A
∵ U+2235blockprefix00N/A
∼ U+223Cblockprefix00N/A
⊾ U+22BEblockprefix00N/A
⊿ U+22BFblockprefix00N/A
⌐ U+2310blockprefix00N/A
⌙ U+2319blockprefix00N/A
➕ U+2795blockprefix00N/A
➖ U+2796blockprefix00N/A
⟀ U+27C0blockprefix00N/A
⦛ U+299Bblockprefix00N/A
⦜ U+299Cblockprefix00N/A
⦝ U+299Dblockprefix00N/A
⦞ U+299Eblockprefix00N/A
⦟ U+299Fblockprefix00N/A
⦠ U+29A0blockprefix00N/A
⦡ U+29A1blockprefix00N/A
⦢ U+29A2blockprefix00N/A
⦣ U+29A3blockprefix00N/A
⦤ U+29A4blockprefix00N/A
⦥ U+29A5blockprefix00N/A
⦦ U+29A6blockprefix00N/A
⦧ U+29A7blockprefix00N/A
⦨ U+29A8blockprefix00N/A
⦩ U+29A9blockprefix00N/A
⦪ U+29AAblockprefix00N/A
⦫ U+29ABblockprefix00N/A
⦬ U+29ACblockprefix00N/A
⦭ U+29ADblockprefix00N/A
⦮ U+29AEblockprefix00N/A
⦯ U+29AFblockprefix00N/A
⫬ U+2AECblockprefix00N/A
⫭ U+2AEDblockprefix00N/A
String || U+007C U+007Cblockprefix00fence
! U+0021blockpostfix00N/A
" U+0022blockpostfix00N/A
% U+0025blockpostfix00N/A
& U+0026blockpostfix00N/A
' U+0027blockpostfix00N/A
` U+0060blockpostfix00N/A
¨ U+00A8blockpostfix00N/A
° U+00B0blockpostfix00N/A
² U+00B2blockpostfix00N/A
³ U+00B3blockpostfix00N/A
´ U+00B4blockpostfix00N/A
¸ U+00B8blockpostfix00N/A
¹ U+00B9blockpostfix00N/A
ˊ U+02CAblockpostfix00N/A
ˋ U+02CBblockpostfix00N/A
˘ U+02D8blockpostfix00N/A
˙ U+02D9blockpostfix00N/A
˚ U+02DAblockpostfix00N/A
˝ U+02DDblockpostfix00N/A
̑ U+0311blockpostfix00N/A
’ U+2019blockpostfix00fence
‚ U+201Ablockpostfix00N/A
‛ U+201Bblockpostfix00N/A
” U+201Dblockpostfix00fence
„ U+201Eblockpostfix00N/A
‟ U+201Fblockpostfix00N/A
′ U+2032blockpostfix00N/A
″ U+2033blockpostfix00N/A
‴ U+2034blockpostfix00N/A
‵ U+2035blockpostfix00N/A
‶ U+2036blockpostfix00N/A
‷ U+2037blockpostfix00N/A
⁗ U+2057blockpostfix00N/A
⃛ U+20DBblockpostfix00N/A
⃜ U+20DCblockpostfix00N/A
⏍ U+23CDblockpostfix00N/A
String !! U+0021 U+0021blockpostfix00N/A
String ++ U+002B U+002Bblockpostfix00N/A
String -- U+002D U+002Dblockpostfix00N/A
String || U+007C U+007Cblockpostfix00fence
( U+0028blockprefix00stretchy symmetric fence
[ U+005Bblockprefix00stretchy symmetric fence
{ U+007Bblockprefix00stretchy symmetric fence
| U+007Cblockprefix00stretchy symmetric fence
‖ U+2016blockprefix00stretchy symmetric fence
⌈ U+2308blockprefix00stretchy symmetric fence
⌊ U+230Ablockprefix00stretchy symmetric fence
〈 U+2329blockprefix00stretchy symmetric fence
❲ U+2772blockprefix00stretchy symmetric fence
⟦ U+27E6blockprefix00stretchy symmetric fence
⟨ U+27E8blockprefix00stretchy symmetric fence
⟪ U+27EAblockprefix00stretchy symmetric fence
⟬ U+27ECblockprefix00stretchy symmetric fence
⟮ U+27EEblockprefix00stretchy symmetric fence
⦀ U+2980blockprefix00stretchy symmetric fence
⦃ U+2983blockprefix00stretchy symmetric fence
⦅ U+2985blockprefix00stretchy symmetric fence
⦇ U+2987blockprefix00stretchy symmetric fence
⦉ U+2989blockprefix00stretchy symmetric fence
⦋ U+298Bblockprefix00stretchy symmetric fence
⦍ U+298Dblockprefix00stretchy symmetric fence
⦏ U+298Fblockprefix00stretchy symmetric fence
⦑ U+2991blockprefix00stretchy symmetric fence
⦓ U+2993blockprefix00stretchy symmetric fence
⦕ U+2995blockprefix00stretchy symmetric fence
⦗ U+2997blockprefix00stretchy symmetric fence
⦙ U+2999blockprefix00stretchy symmetric fence
⧘ U+29D8blockprefix00stretchy symmetric fence
⧚ U+29DAblockprefix00stretchy symmetric fence
⧼ U+29FCblockprefix00stretchy symmetric fence
) U+0029blockpostfix00stretchy symmetric fence
] U+005Dblockpostfix00stretchy symmetric fence
| U+007Cblockpostfix00stretchy symmetric fence
} U+007Dblockpostfix00stretchy symmetric fence
‖ U+2016blockpostfix00stretchy symmetric fence
⌉ U+2309blockpostfix00stretchy symmetric fence
⌋ U+230Bblockpostfix00stretchy symmetric fence
〉 U+232Ablockpostfix00stretchy symmetric fence
❳ U+2773blockpostfix00stretchy symmetric fence
⟧ U+27E7blockpostfix00stretchy symmetric fence
⟩ U+27E9blockpostfix00stretchy symmetric fence
⟫ U+27EBblockpostfix00stretchy symmetric fence
⟭ U+27EDblockpostfix00stretchy symmetric fence
⟯ U+27EFblockpostfix00stretchy symmetric fence
⦀ U+2980blockpostfix00stretchy symmetric fence
⦄ U+2984blockpostfix00stretchy symmetric fence
⦆ U+2986blockpostfix00stretchy symmetric fence
⦈ U+2988blockpostfix00stretchy symmetric fence
⦊ U+298Ablockpostfix00stretchy symmetric fence
⦌ U+298Cblockpostfix00stretchy symmetric fence
⦎ U+298Eblockpostfix00stretchy symmetric fence
⦐ U+2990blockpostfix00stretchy symmetric fence
⦒ U+2992blockpostfix00stretchy symmetric fence
⦔ U+2994blockpostfix00stretchy symmetric fence
⦖ U+2996blockpostfix00stretchy symmetric fence
⦘ U+2998blockpostfix00stretchy symmetric fence
⦙ U+2999blockpostfix00stretchy symmetric fence
⧙ U+29D9blockpostfix00stretchy symmetric fence
⧛ U+29DBblockpostfix00stretchy symmetric fence
⧽ U+29FDblockpostfix00stretchy symmetric fence
∫ U+222Bblockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
∬ U+222Cblockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
∭ U+222Dblockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
∮ U+222Eblockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
∯ U+222Fblockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
∰ U+2230blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
∱ U+2231blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
∲ U+2232blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
∳ U+2233blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
⨋ U+2A0Bblockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
⨌ U+2A0Cblockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
⨍ U+2A0Dblockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
⨎ U+2A0Eblockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
⨏ U+2A0Fblockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
⨐ U+2A10blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
⨑ U+2A11blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
⨒ U+2A12blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
⨓ U+2A13blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
⨔ U+2A14blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
⨕ U+2A15blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
⨖ U+2A16blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
⨗ U+2A17blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
⨘ U+2A18blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
⨙ U+2A19blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
⨚ U+2A1Ablockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
⨛ U+2A1Bblockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
⨜ U+2A1Cblockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop
^ U+005Einlinepostfix00stretchy
_ U+005Finlinepostfix00stretchy
~ U+007Einlinepostfix00stretchy
¯ U+00AFinlinepostfix00stretchy
ˆ U+02C6inlinepostfix00stretchy
ˇ U+02C7inlinepostfix00stretchy
ˉ U+02C9inlinepostfix00stretchy
ˍ U+02CDinlinepostfix00stretchy
˜ U+02DCinlinepostfix00stretchy
˷ U+02F7inlinepostfix00stretchy
̂ U+0302inlinepostfix00stretchy
‾ U+203Einlinepostfix00stretchy
⌢ U+2322inlinepostfix00stretchy
⌣ U+2323inlinepostfix00stretchy
⎴ U+23B4inlinepostfix00stretchy
⎵ U+23B5inlinepostfix00stretchy
⏜ U+23DCinlinepostfix00stretchy
⏝ U+23DDinlinepostfix00stretchy
⏞ U+23DEinlinepostfix00stretchy
⏟ U+23DFinlinepostfix00stretchy
⏠ U+23E0inlinepostfix00stretchy
⏡ U+23E1inlinepostfix00stretchy
𞻰 U+1EEF0inlinepostfix00stretchy
𞻱 U+1EEF1inlinepostfix00stretchy
∏ U+220Fblockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
∐ U+2210blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
∑ U+2211blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⋀ U+22C0blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⋁ U+22C1blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⋂ U+22C2blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⋃ U+22C3blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⨀ U+2A00blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⨁ U+2A01blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⨂ U+2A02blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⨃ U+2A03blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⨄ U+2A04blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⨅ U+2A05blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⨆ U+2A06blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⨇ U+2A07blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⨈ U+2A08blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⨉ U+2A09blockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⨊ U+2A0Ablockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⨝ U+2A1Dblockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⨞ U+2A1Eblockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⫼ U+2AFCblockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
⫿ U+2AFFblockprefix0.16666666666666666em0.16666666666666666emsymmetric largeop movablelimits
/ U+002Fblockinfix00N/A
\ U+005Cblockinfix00N/A
_ U+005Finlineinfix00N/A
⁡ U+2061blockinfix00N/A
⁢ U+2062blockinfix00N/A
⁣ U+2063blockinfix00separator
⁤ U+2064blockinfix00N/A
∆ U+2206blockinfix00N/A
ⅅ U+2145blockprefix0.16666666666666666em0N/A
ⅆ U+2146blockprefix0.16666666666666666em0N/A
∂ U+2202blockprefix0.16666666666666666em0N/A
√ U+221Ablockprefix0.16666666666666666em0N/A
∛ U+221Bblockprefix0.16666666666666666em0N/A
∜ U+221Cblockprefix0.16666666666666666em0N/A
, U+002Cblockinfix00.16666666666666666emseparator
: U+003Ablockinfix00.16666666666666666emN/A
; U+003Bblockinfix00.16666666666666666emseparator
Figure29Mapping from operator (Content, Form) to properties.
Total size: 1177 entries, ≥ 3679 bytes
(assuming 'Content' uses at least one UTF-16 character, 'Stretch Axis' 1 bit, 'Form' 2 bits, the different combinations of 'rspace' and 'space' at least 3 bits, and the different combinations of properties 3 bits).

B.3Combining Character Equivalences

This section is non-normative.

The following table gives mappings between spacing and non spacing characters when used in MathML accent constructs.

Combining

Non CombiningStyleCombining
U+002Bplus signbelowU+031Fcombining plus sign below
U+002Dhyphen-minusaboveU+0305combining overline
U+002Dhyphen-minusbelowU+0320combining minus sign below
U+002Dhyphen-minusbelowU+0332combining low line
U+002Efull stopaboveU+0307combining dot above
U+002Efull stopbelowU+0323combining dot below
U+005Ecircumflex accentaboveU+0302combining circumflex accent
U+005Ecircumflex accentbelowU+032Dcombining circumflex accent below
U+005Flow linebelowU+0332combining low line
U+0060grave accentaboveU+0300combining grave accent
U+0060grave accentbelowU+0316combining grave accent below
U+007EtildeaboveU+0303combining tilde
U+007EtildebelowU+0330combining tilde below
U+00A8diaeresisaboveU+0308combining diaeresis
U+00A8diaeresisbelowU+0324combining diaeresis below
U+00AFmacronaboveU+0304combining macron
U+00AFmacronaboveU+0305combining overline
U+00B4acute accentaboveU+0301combining acute accent
U+00B4acute accentbelowU+0317combining acute accent below
U+00B8cedillabelowU+0327combining cedilla
U+02C6modifier letter circumflex accentaboveU+0302combining circumflex accent
U+02C7caronaboveU+030Ccombining caron
U+02C7caronbelowU+032Ccombining caron below
U+02D8breveaboveU+0306combining breve
U+02D8brevebelowU+032Ecombining breve below
U+02D9dot aboveaboveU+0307combining dot above
U+02D9dot abovebelowU+0323combining dot below
U+02DBogonekbelowU+0328combining ogonek
U+02DCsmall tildeaboveU+0303combining tilde
U+02DCsmall tildebelowU+0330combining tilde below
U+02DDdouble acute accentaboveU+030Bcombining double acute accent
U+203EoverlineaboveU+0305combining overline
U+2190leftwards arrowaboveU+20D6
U+2192rightwards arrowaboveU+20D7combining right arrow above
U+2192rightwards arrowaboveU+20EFcombining right arrow below
U+2212minus signaboveU+0305combining overline
U+2212minus signbelowU+0332combining low line
U+27F6long rightwards arrowaboveU+20D7combining right arrow above
U+27F6long rightwards arrowaboveU+20EFcombining right arrow below

Non Combining

CombiningStyleNon Combining
U+0300combining grave accentaboveU+0060grave accent
U+0301combining acute accentaboveU+00B4acute accent
U+0302combining circumflex accentaboveU+005Ecircumflex accent
U+0302combining circumflex accentaboveU+02C6modifier letter circumflex accent
U+0303combining tildeaboveU+007Etilde
U+0303combining tildeaboveU+02DCsmall tilde
U+0304combining macronaboveU+00AFmacron
U+0305combining overlineaboveU+002Dhyphen-minus
U+0305combining overlineaboveU+00AFmacron
U+0305combining overlineaboveU+203Eoverline
U+0305combining overlineaboveU+2212minus sign
U+0306combining breveaboveU+02D8breve
U+0307combining dot aboveaboveU+02E
U+0307combining dot aboveaboveU+002Efull stop
U+0307combining dot aboveaboveU+02D9dot above
U+0308combining diaeresisaboveU+00A8diaeresis
U+030Bcombining double acute accentaboveU+02DDdouble acute accent
U+030Ccombining caronaboveU+02C7caron
U+0312combining turned comma aboveaboveU+0B8
U+0316combining grave accent belowbelowU+0060grave accent
U+0317combining acute accent belowbelowU+00B4acute accent
U+031Fcombining plus sign belowbelowU+002Bplus sign
U+0320combining minus sign belowbelowU+002Dhyphen-minus
U+0323combining dot belowbelowU+002Efull stop
U+0323combining dot belowbelowU+02D9dot above
U+0324combining diaeresis belowbelowU+00A8diaeresis
U+0327combining cedillabelowU+00B8cedilla
U+0328combining ogonekbelowU+02DBogonek
U+032Ccombining caron belowbelowU+02C7caron
U+032Dcombining circumflex accent belowbelowU+005Ecircumflex accent
U+032Ecombining breve belowbelowU+02D8breve
U+0330combining tilde belowbelowU+007Etilde
U+0330combining tilde belowbelowU+02DCsmall tilde
U+0332combining low linebelowU+002Dhyphen-minus
U+0332combining low linebelowU+005Flow line
U+0332combining low linebelowU+2212minus sign
U+0338combining long solidus overlayoverU+02F
U+20D7combining right arrow aboveaboveU+2192rightwards arrow
U+20D7combining right arrow aboveaboveU+27F6long rightwards arrow
U+20EFcombining right arrow belowaboveU+2192rightwards arrow
U+20EFcombining right arrow belowaboveU+27F6long rightwards arrow

B.4Unicode-based Glyph Assemblies

This section is non-normative.

The following table provides fallback that user agents may use for stretching a givenbase character when the font does not provide aMATH.MathVariants table. The algorithms of5.3Size variants for operators (MathVariants) work the same except with some adjustments:

Base CharacterGlyph ConstructionExtender CharacterBottom/Left CharacterMiddle CharacterTop/Right Character
U+0028 (VerticalU+239C ⎜U+239D ⎝N/AU+239B ⎛
U+0029 )VerticalU+239F ⎟U+23A0 ⎠N/AU+239E ⎞
U+003D =HorizontalU+003D =U+003D =N/AN/A
U+005B [VerticalU+23A2 ⎢U+23A3 ⎣N/AU+23A1 ⎡
U+005D ]VerticalU+23A5 ⎥U+23A6 ⎦N/AU+23A4 ⎤
U+005F _HorizontalU+005F _U+005F _N/AN/A
U+007B {VerticalU+23AA ⎪U+23A9 ⎩U+23A8 ⎨U+23A7 ⎧
U+007C |VerticalU+007C |U+007C |N/AN/A
U+007D }VerticalU+23AA ⎪U+23AD ⎭U+23AC ⎬U+23AB ⎫
U+00AF ¯HorizontalU+00AF ¯U+00AF ¯N/AN/A
U+2016 ‖VerticalU+2016 ‖U+2016 ‖N/AN/A
U+203E ‾HorizontalU+203E ‾U+203E ‾N/AN/A
U+2190 ←HorizontalU+23AF ⎯U+2190 ←N/AU+23AF ⎯
U+2191 ↑VerticalU+23D0 ⏐U+23D0 ⏐N/AU+2191 ↑
U+2192 →HorizontalU+23AF ⎯U+23AF ⎯N/AU+2192 →
U+2193 ↓VerticalU+23D0 ⏐U+2193 ↓N/AU+23D0 ⏐
U+2194 ↔HorizontalU+23AF ⎯U+2190 ←N/AU+2192 →
U+2195 ↕VerticalU+23D0 ⏐U+2193 ↓N/AU+2191 ↑
U+21A4 ↤HorizontalU+23AF ⎯U+2190 ←N/AU+22A3 ⊣
U+21A6 ↦HorizontalU+23AF ⎯U+22A2 ⊢N/AU+2192 →
U+21BC ↼HorizontalU+23AF ⎯U+21BC ↼N/AU+23AF ⎯
U+21BD ↽HorizontalU+23AF ⎯U+21BD ↽N/AU+23AF ⎯
U+21C0 ⇀HorizontalU+23AF ⎯U+23AF ⎯N/AU+21C0 ⇀
U+21C1 ⇁HorizontalU+23AF ⎯U+23AF ⎯N/AU+21C1 ⇁
U+2223 ∣VerticalU+2223 ∣U+2223 ∣N/AN/A
U+2225 ∥VerticalU+2225 ∥U+2225 ∥N/AN/A
U+2308 ⌈VerticalU+23A2 ⎢U+23A2 ⎢N/AU+23A1 ⎡
U+2309 ⌉VerticalU+23A5 ⎥U+23A5 ⎥N/AU+23A4 ⎤
U+230A ⌊VerticalU+23A2 ⎢U+23A3 ⎣N/AN/A
U+230B ⌋VerticalU+23A5 ⎥U+23A6 ⎦N/AN/A
U+23B0 ⎰VerticalU+23AA ⎪U+23AD ⎭N/AU+23A7 ⎧
U+23B1 ⎱VerticalU+23AA ⎪U+23A9 ⎩N/AU+23AB ⎫
U+27F5 ⟵HorizontalU+23AF ⎯U+2190 ←N/AU+23AF ⎯
U+27F6 ⟶HorizontalU+23AF ⎯U+23AF ⎯N/AU+2192 →
U+27F7 ⟷HorizontalU+23AF ⎯U+2190 ←N/AU+2192 →
U+294E ⥎HorizontalU+23AF ⎯U+21BC ↼N/AU+21C0 ⇀
U+2950 ⥐HorizontalU+23AF ⎯U+21BD ↽N/AU+21C1 ⇁
U+295A ⥚HorizontalU+23AF ⎯U+21BC ↼N/AU+22A3 ⊣
U+295B ⥛HorizontalU+23AF ⎯U+22A2 ⊢N/AU+21C0 ⇀
U+295E ⥞HorizontalU+23AF ⎯U+21BD ↽N/AU+22A3 ⊣
U+295F ⥟HorizontalU+23AF ⎯U+22A2 ⊢N/AU+21C1 ⇁

C.Mathematical Alphanumeric Symbols

This section is non-normative.

As detailed in [xml-entity-names] mathematical alphanumeric symbols with form bold, italic, fraktur, monospace, double-struck etc are available in Unicode.

These alphanumericsymbols should be accessed using their Unicode code points.It is sometimes needed to distinguish between Chancery and Roundhand style for MATHEMATICAL SCRIPT characters. These are notably used in LaTeX for the\mathcal and\mathscr commands. One way to do that is to rely on Chapter 23.4 Variation Selectors of Unicode which describes a way to specify selection of particular glyph variants [UNICODE]. Indeed, theStandardizedVariants.txt file from the Unicode Character Database indicates that variant selectors U+FE00 and U+FE01 can be used on capital script to specify Chancery and Roundhand respectively.

Alternatively, some mathematical fonts rely onsalt orssXY properties from [OPEN-FONT-FORMAT] to provide both styles. Page authors may use thefont-variant-alternates property with corresponding OpenType font features to access these glyphs.

In addition, theitalic math alphanumeric characters may be accessed as described above using the CSStext-transform: math-auto transform which is applied by default to single character<mi> elements. As a convenience the mapping to math italic is shown below.

C.1italic mappings

OriginalitalicΔcode point
A U+0041𝐴 U+1D4341D3F3
B U+0042𝐵 U+1D4351D3F3
C U+0043𝐶 U+1D4361D3F3
D U+0044𝐷 U+1D4371D3F3
E U+0045𝐸 U+1D4381D3F3
F U+0046𝐹 U+1D4391D3F3
G U+0047𝐺 U+1D43A1D3F3
H U+0048𝐻 U+1D43B1D3F3
I U+0049𝐼 U+1D43C1D3F3
J U+004A𝐽 U+1D43D1D3F3
K U+004B𝐾 U+1D43E1D3F3
L U+004C𝐿 U+1D43F1D3F3
M U+004D𝑀 U+1D4401D3F3
N U+004E𝑁 U+1D4411D3F3
O U+004F𝑂 U+1D4421D3F3
P U+0050𝑃 U+1D4431D3F3
Q U+0051𝑄 U+1D4441D3F3
R U+0052𝑅 U+1D4451D3F3
S U+0053𝑆 U+1D4461D3F3
T U+0054𝑇 U+1D4471D3F3
U U+0055𝑈 U+1D4481D3F3
V U+0056𝑉 U+1D4491D3F3
W U+0057𝑊 U+1D44A1D3F3
X U+0058𝑋 U+1D44B1D3F3
Y U+0059𝑌 U+1D44C1D3F3
Z U+005A𝑍 U+1D44D1D3F3
a U+0061𝑎 U+1D44E1D3ED
b U+0062𝑏 U+1D44F1D3ED
c U+0063𝑐 U+1D4501D3ED
d U+0064𝑑 U+1D4511D3ED
e U+0065𝑒 U+1D4521D3ED
f U+0066𝑓 U+1D4531D3ED
g U+0067𝑔 U+1D4541D3ED
h U+0068ℎ U+0210E20A6
i U+0069𝑖 U+1D4561D3ED
j U+006A𝑗 U+1D4571D3ED
k U+006B𝑘 U+1D4581D3ED
l U+006C𝑙 U+1D4591D3ED
m U+006D𝑚 U+1D45A1D3ED
n U+006E𝑛 U+1D45B1D3ED
o U+006F𝑜 U+1D45C1D3ED
p U+0070𝑝 U+1D45D1D3ED
q U+0071𝑞 U+1D45E1D3ED
r U+0072𝑟 U+1D45F1D3ED
s U+0073𝑠 U+1D4601D3ED
t U+0074𝑡 U+1D4611D3ED
u U+0075𝑢 U+1D4621D3ED
v U+0076𝑣 U+1D4631D3ED
w U+0077𝑤 U+1D4641D3ED
x U+0078𝑥 U+1D4651D3ED
y U+0079𝑦 U+1D4661D3ED
z U+007A𝑧 U+1D4671D3ED
ı U+0131𝚤 U+1D6A41D573
ȷ U+0237𝚥 U+1D6A51D46E
Α U+0391𝛢 U+1D6E21D351
Β U+0392𝛣 U+1D6E31D351
Γ U+0393𝛤 U+1D6E41D351
Δ U+0394𝛥 U+1D6E51D351
Ε U+0395𝛦 U+1D6E61D351
Ζ U+0396𝛧 U+1D6E71D351
Η U+0397𝛨 U+1D6E81D351
Θ U+0398𝛩 U+1D6E91D351
Ι U+0399𝛪 U+1D6EA1D351
Κ U+039A𝛫 U+1D6EB1D351
Λ U+039B𝛬 U+1D6EC1D351
Μ U+039C𝛭 U+1D6ED1D351
Ν U+039D𝛮 U+1D6EE1D351
Ξ U+039E𝛯 U+1D6EF1D351
Ο U+039F𝛰 U+1D6F01D351
Π U+03A0𝛱 U+1D6F11D351
Ρ U+03A1𝛲 U+1D6F21D351
ϴ U+03F4𝛳 U+1D6F31D2FF
Σ U+03A3𝛴 U+1D6F41D351
Τ U+03A4𝛵 U+1D6F51D351
Υ U+03A5𝛶 U+1D6F61D351
Φ U+03A6𝛷 U+1D6F71D351
Χ U+03A7𝛸 U+1D6F81D351
Ψ U+03A8𝛹 U+1D6F91D351
Ω U+03A9𝛺 U+1D6FA1D351
∇ U+2207𝛻 U+1D6FB1B4F4
α U+03B1𝛼 U+1D6FC1D34B
β U+03B2𝛽 U+1D6FD1D34B
γ U+03B3𝛾 U+1D6FE1D34B
δ U+03B4𝛿 U+1D6FF1D34B
ε U+03B5𝜀 U+1D7001D34B
ζ U+03B6𝜁 U+1D7011D34B
η U+03B7𝜂 U+1D7021D34B
θ U+03B8𝜃 U+1D7031D34B
ι U+03B9𝜄 U+1D7041D34B
κ U+03BA𝜅 U+1D7051D34B
λ U+03BB𝜆 U+1D7061D34B
μ U+03BC𝜇 U+1D7071D34B
ν U+03BD𝜈 U+1D7081D34B
ξ U+03BE𝜉 U+1D7091D34B
ο U+03BF𝜊 U+1D70A1D34B
π U+03C0𝜋 U+1D70B1D34B
ρ U+03C1𝜌 U+1D70C1D34B
ς U+03C2𝜍 U+1D70D1D34B
σ U+03C3𝜎 U+1D70E1D34B
τ U+03C4𝜏 U+1D70F1D34B
υ U+03C5𝜐 U+1D7101D34B
φ U+03C6𝜑 U+1D7111D34B
χ U+03C7𝜒 U+1D7121D34B
ψ U+03C8𝜓 U+1D7131D34B
ω U+03C9𝜔 U+1D7141D34B
∂ U+2202𝜕 U+1D7151B513
ϵ U+03F5𝜖 U+1D7161D321
ϑ U+03D1𝜗 U+1D7171D346
ϰ U+03F0𝜘 U+1D7181D328
ϕ U+03D5𝜙 U+1D7191D344
ϱ U+03F1𝜚 U+1D71A1D329
ϖ U+03D6𝜛 U+1D71B1D345

D.Acknowledgments

This section is non-normative.

MathML Core is based on MathML3. See theappendix E of [MathML3] for the people that contributed to that specification.

MathML Core was initially developed by the MathML Community Group, andthen by the Math Working Group. Working Group or Community Groupmembers who regularly participated in MathML Core meetings during the development of this specification: Brian Kardell, Bruce Miller, Daniel Marques, David Carlisle, David Farmer, Deyan Ginev, Frédéric Wang,Louis Mahler, Moritz Schubotz, Murray Sargent, Neil Soiffer, Patrick Ion, Rob Buis, Steve Noble and Sam Dooley.

In addition, we would like to extend special thanks to Brian Kardell, Neil Soiffer and Rob Buis for help with the editing.

Many thanks also to the following people for their help with the test suite: Brian Kardell, Frédéric Wang, Neil Soiffer and Rob Buis. Several tests are also based on MathML tests from browser repositories and we are grateful to the Mozilla and WebKit contributors.

We would like to thank the people who, through their input and feedback on public communication channels, have helped us with the creation of this specification: André Greiner-Petter, Anne van Kesteren, Boris Zbarsky, Brian Smith, Elika Etemad, Emilio Cobos Álvarez, ExE Boss, Ian Kilpatrick, Koji Ishii, L. David Baron, Michael Kohlhase, Michael Smith, Ryosuke Niwa, Sergey Malkin, Tab Atkins Jr., Viktor Yaffle and frankvel.

E.Security Considerations

This section is non-normative.

This specification adds script execution mechanisms via the MathML event handler attributes described in2.1.3Global Attributes. UAs may decide to prevent execution of scripts specified in these attributes, following the same security restrictions as those applying to HTML or SVG elements.

Note

In [MathML3], it was possible to make any element linkable viahref orxlink:href attributes, with an URL pointing to an untrusted resource or even#"#html-and-svg">2.2.1HTML and SVG it is possible to embed HTML or SVG content inside MathML, including HTML or SVG links.

Note

In [MathML3], it was possible to use themaction element with theactiontype value set to"statusline" in order to override the text of the browser statusline. In particular, an attacker could use this to hide the URL text of an untrusted link e.g.

<math><mactionactiontype="statusline"><mtext><ahref="#">Click me!</a></mtext><mtext>./this-is-a-safe-link.html</mtext></maction></math>

This feature is not available in MathML Core, where themaction element essentially behaves like anmrow container with extra style.

An attacker can try to hang the UA by inserting very large stretchy operators, effectively making the algorithmshaping of the glyph assembly deal with a huge amount of glyphs. UAs may work around this issue by limitingrmin andGlyphAssembly.partCount to maximum values.

As described inCSS Fonts Module, an attacker can try to rely on malformed or malicious fonts to exploit potential security faults in browser implementations. Because theOpenType MATH table is used extensively in this specification, UAs should ensure their font sanitization mechanisms are able to deal with that table.

Finally, in order to reduce attack surface, some UAs expose runtime options to disable part of the web platform. Disabling MathML layout can essentially be achieved by forcing elements in the DOM tree to be put in the HTML namespace and disabling4.CSS Extensions for Math Layout.

F.Privacy Considerations

This section is non-normative.

As explained in2.2.1HTML and SVG, MathML can be embedded into an SVG image via the<foreignObject> element which can thus be used in acanvas element. UA may decide to implement any measure to prevent potentialinformation leakage such as tainting the canvas and returning a "SecurityError" when one tries to access the canvas' content via JavaScript APIs.

In the following example, the canvas image is set to the image of some MathML content with an HTML link tohttps://example.org/. It should not be possible for an attacker to determine whether that link was visited by reading pixels viacontext.getImageData(). For more about links in MathML, seeE.Security Considerations.

let svg = `<svgxmlns="http://www.w3.org/2000/svg"width="100px"height="100px"><foreignObjectwidth="100"height="100"requiredExtensions="http://www.w3.org/1998/Math/MathML"><mathxmlns="http://www.w3.org/1998/Math/MathML"><msqrtstyle="font-size: 25px"><mtext>&#x25a0;</mtext><mtext><ahref="https://example.org/">&#x25a0;</a></mtext></msqrt></math></foreignObject></svg>`;let image = new Image();image.width = 100;image.height = 100;image.onload = () => {  let canvas = document.createElement('canvas');  canvas.width = 100;  canvas.height = 100;  canvas.style = "border: 1px solid black";  document.body.appendChild(canvas);  let context = canvas.getContext("2d");  context.drawImage(image, 0, 0);};image.src = `data:image/svg+xml;base64,${window.btoa(svg)}`;

This specification describes layout of DOMelements which may involve system fonts. Like for HTML/CSS layout, it is thus possible to use JavaScript APIs (e.g.context.getImageData() on content embedded in a canvas context, or even justgetBoundingClientRect()) to measure box sizes and positions and infer data from system fonts. By combining miscellaneous tests on such fonts and comparing measurements against results of well-known fonts, an attacker can try and determine the default fonts of the user.

The following HTML+CSS+JavaScript document relies on a Web font with exotic metrics to try and determine whetherA Well Known System Font is available by default.

<style>@font-face {font-family: MyWebFontWithVeryWideGlyphs;src:url("/fonts/my-web-fonts-with-very-wide-glyphs.woff");  }#container {font-family: AWellKnownSystemFont, MyWebFontWithVeryWideGlyphs;  }</style><divid="container">SOMETEXT</div><divid="reference">SOMETEXT</div><script>document.fonts.ready.then(() => {let containerWidth =document.getElementById("container").getBoundingClientRect().width;let referenceWidth =document.getElementById("reference").getBoundingClientRect().width;let isWellKnownSystemFontAvailable =Math.abs(containerWidth - referenceWidth) <1;});</script>

The following HTML+CSS+JavaScript document tries to determine whether the UI serif font provides Asian glyphs:

<style>@font-face {font-family: MyWebFontWithVeryWideAsianGlyphs;src:url("/fonts/my-web-fonts-with-very-wide-asian-glyphs.woff");  }#container {font-family: ui-serif, MyWebFontWithVeryWideAsianGlyphs  }#reference {font-family: MyWebFontWithVeryWideAsianGlyphs;  }</style><divid="container"></div><divid="reference"></div><script>document.fonts.ready.then(() => {let containerWidth =document.getElementById("container").getBoundingClientRect().width;let referenceWidth =document.getElementById("reference").getBoundingClientRect().width;let uiSerifFontDoesNotContainAsianGlyph =Math.abs(containerWidth - referenceWidth) <1;});</script>

The following HTML+CSS document contains the same text rendered withtext-decoration-thickness set tofrom-font and1em (here 100 pixels) respectively. By comparing the heights of the two underlines, one can calculate a good approximation of theunderlineThickness value from the PostScript Table [OPEN-FONT-FORMAT].

<style>#test {font-size:100px;  }#container {text-decoration-line: underline;text-decoration-thickness: from-font;  }#reference {text-decoration-line: underline;text-decoration-thickness:1em;  }</style><divid="test"><divid="container">SOMETEXT</div><divid="reference">SOMETEXT</div></div>

This specification relies on information from5.OpenTypeMATH table to render MathML content. One can get good approximation of most layout parameters fromMathConstants andMathGlyphInfo using measurement techniques similar to what is described above for HTML+CSS+JavaScript document. The use of theMathVariants table for MathML rendering can also be observed by putting stretchy operators of different sizes inside acanvas context.

Although none of these parameters taken individually are personal, implementing this specification increases the set of exposed font information that can be used by an attacker to implement fingerprinting techniques. Typically, they could help determine available and preferred math fonts for a user.

G.Conformance

Conformance requirements are expressed with a combination of descriptive assertions and RFC 2119 terminology. The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in the normative parts of this document are to be interpreted as described in RFC 2119. However, for readability, these words do not appear in all uppercase letters in this specification.

All of the text of this specification is normative except sections explicitly marked as non-normative, examples, and notes. [RFC2119]

Examples in this specification are introduced with the words “for example” or are set apart from the normative text withclass="example", like this:

This is an example of an informative example.

Informative notes begin with the word “Note” and are set apart from the normative text withclass="note", like this:

Note

Note, this is an informative note.

Advisements are normative sections styled to evoke special attention and are set apart from other normative text with<strong>, like this:UAsMUST provide an accessible alternative.

H.References

H.1Normative references

[BIDI]
Unicode Bidirectional Algorithm. Manish Goregaokar मनीष गोरेगांवकर; Robin Leroy. Unicode Consortium. 13 August 2025. Unicode Standard Annex #9. URL:https://www.unicode.org/reports/tr9/tr9-51.html
[css-align-3]
CSS Box Alignment Module Level 3. Elika Etemad; Tab Atkins Jr. W3C. 11 March 2025. W3C Working Draft. URL:https://www.w3.org/TR/css-align-3/
[css-backgrounds-3]
CSS Backgrounds and Borders Module Level 3. Elika Etemad; Brad Kemper. W3C. 11 March 2024. CRD. URL:https://www.w3.org/TR/css-backgrounds-3/
[css-box-4]
CSS Box Model Module Level 4. Elika Etemad. W3C. 4 August 2024. W3C Working Draft. URL:https://www.w3.org/TR/css-box-4/
[CSS-CASCADE-4]
CSS Cascading and Inheritance Level 4. Elika Etemad; Tab Atkins Jr. W3C. 13 January 2022. W3C Candidate Recommendation. URL:https://www.w3.org/TR/css-cascade-4/
[css-color-4]
CSS Color Module Level 4. Chris Lilley; Tab Atkins Jr.; Lea Verou. W3C. 24 April 2025. CRD. URL:https://www.w3.org/TR/css-color-4/
[CSS-DISPLAY-3]
CSS Display Module Level 3. Elika Etemad; Tab Atkins Jr. W3C. 30 March 2023. W3C Candidate Recommendation. URL:https://www.w3.org/TR/css-display-3/
[CSS-FONTS-4]
CSS Fonts Module Level 4. Chris Lilley. W3C. 1 February 2024. W3C Working Draft. URL:https://www.w3.org/TR/css-fonts-4/
[CSS-POSITION-3]
CSS Positioned Layout Module Level 3. Elika Etemad; Tab Atkins Jr. W3C. 7 October 2025. W3C Working Draft. URL:https://www.w3.org/TR/css-position-3/
[css-pseudo-4]
CSS Pseudo-Elements Module Level 4. Elika Etemad; Alan Stearns. W3C. 27 June 2025. W3C Working Draft. URL:https://www.w3.org/TR/css-pseudo-4/
[css-sizing-3]
CSS Box Sizing Module Level 3. Tab Atkins Jr.; Elika Etemad. W3C. 17 December 2021. W3C Working Draft. URL:https://www.w3.org/TR/css-sizing-3/
[css-text-3]
CSS Text Module Level 3. Elika Etemad; Koji Ishii; Florian Rivoal. W3C. 30 September 2024. CRD. URL:https://www.w3.org/TR/css-text-3/
[CSS-TEXT-4]
CSS Text Module Level 4. Elika Etemad; Koji Ishii; Alan Stearns; Florian Rivoal. W3C. 29 May 2024. W3C Working Draft. URL:https://www.w3.org/TR/css-text-4/
[CSS-VALUES-4]
CSS Values and Units Module Level 4. Tab Atkins Jr.; Elika Etemad. W3C. 12 March 2024. W3C Working Draft. URL:https://www.w3.org/TR/css-values-4/
[CSS-WRITING-MODES-4]
CSS Writing Modes Level 4. Elika Etemad; Koji Ishii. W3C. 30 July 2019. W3C Candidate Recommendation. URL:https://www.w3.org/TR/css-writing-modes-4/
[CSS2]
Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. Bert Bos; Tantek Çelik; Ian Hickson; Håkon Wium Lie. W3C. 7 June 2011. W3C Recommendation. URL:https://www.w3.org/TR/CSS2/
[DOM]
DOM Standard. Anne van Kesteren. WHATWG. Living Standard. URL:https://dom.spec.whatwg.org/
[HTML]
HTML Standard. Anne van Kesteren; Domenic Denicola; Dominic Farolino; Ian Hickson; Philip Jägenstedt; Simon Pieters. WHATWG. Living Standard. URL:https://html.spec.whatwg.org/multipage/
[infra]
Infra Standard. Anne van Kesteren; Domenic Denicola. WHATWG. Living Standard. URL:https://infra.spec.whatwg.org/
[OPEN-FONT-FORMAT]
Information technology — Coding of audio-visual objects — Part 22: Open Font Format. ISO/IEC. January 2019. Published. URL:https://www.iso.org/standard/74461.html
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL:https://www.rfc-editor.org/rfc/rfc2119
[SELECT]
Selectors Level 3. Tantek Çelik; Elika Etemad; Daniel Glazman; Ian Hickson; Peter Linss; John Williams. W3C. 6 November 2018. W3C Recommendation. URL:https://www.w3.org/TR/selectors-3/
[SVG]
Scalable Vector Graphics (SVG) 1.0 Specification. Jon Ferraiolo. W3C. 4 September 2001. W3C Recommendation. URL:https://www.w3.org/TR/SVG/
[webidl]
Web IDL Standard. Edgar Chen; Timothy Gu. WHATWG. Living Standard. URL:https://webidl.spec.whatwg.org/

H.2Informative references

[CSS-LAYOUT-API-1]
CSS Layout API Level 1. Greg Whitworth; Ian Kilpatrick; Tab Atkins Jr.; Shane Stephens; Robert O'Callahan; Rossen Atanassov. W3C. 12 April 2018. FPWD. URL:https://www.w3.org/TR/css-layout-api-1/
[css-text-decor-4]
CSS Text Decoration Module Level 4. Elika Etemad; Koji Ishii. W3C. 4 May 2022. W3C Working Draft. URL:https://www.w3.org/TR/css-text-decor-4/
[cssom-view]
CSSOM View Module. Simon Fraser; Emilio Cobos Álvarez. W3C. 16 September 2025. W3C Working Draft. URL:https://www.w3.org/TR/cssom-view-1/
[HOUDINI]
CSS-TAG Houdini Editor Drafts. URL:https://drafts.css-houdini.org/
[MATHML3]
Mathematical Markup Language (MathML) Version 3.0 2nd Edition. David Carlisle; Patrick D F Ion; Robert R Miner. W3C. 10 April 2014. W3C Recommendation. URL:https://www.w3.org/TR/MathML3/
[MATHML4]
Mathematical Markup Language (MathML) Version 4.0. David Carlisle et al.W3C Editor's Draft. URL:https://w3c.github.io/mathml/
[OPEN-TYPE-MATH-ILLUMINATED]
OpenType Math Illuminated. Ulrik Vieth. 2009. URL:https://www.tug.org/TUGboat/tb30-1/tb94vieth.pdf
[OPEN-TYPE-MATH-IN-HARFBUZZ]
OpenType MATH in HarfBuzz. Frédéric Wang. URL:https://frederic-wang.fr/2016/04/16/opentype-math-in-harfbuzz/
[TEXBOOK]
The TeXBook. Knuth, Donald E. Addison-Wesley Professional. 1984.
[UNICODE]
The Unicode Standard. Unicode Consortium. URL:https://www.unicode.org/versions/latest/
[xml-entity-names]
XML Entity Definitions for Characters (3rd Edition). Patrick D F Ion; David Carlisle. W3C. 7 March 2023. W3C Recommendation. URL:https://www.w3.org/TR/xml-entity-names/


[8]ページ先頭

©2009-2025 Movatter.jp