Copyright © 2025World Wide Web Consortium.W3C®liability,trademark andpermissive document license rules apply.
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.
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.
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].
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.
annotationannotation-xmlmactionmathmerrormfracmimmultiscriptsmnmomovermpaddedmphantommprescriptsmrootmrowmsmspacemsqrtmstylemsubmsubsupmsupmtablemtdmtextmtrmundermunderoversemanticsThegrouping 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:
maction attributesmo attributesmpadded attributesmspace attributesmunderover attributesmtd attributesencodingdisplaylinethicknessMathML 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.
alttext 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.
$$...$$ 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>
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.

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;}In addition to CSS data types, some MathML attributes rely on the following MathML-specific types:
true orfalse.The following attributes are common to and may be specified on all 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.
rtl 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>
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.
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.
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,\textstyle,\scriptstyle, and\scriptscriptstyle correspond todisplaystyle andscriptlevel astrue and0,false and0,false and1, andfalse and 2, respectively.The attributesintent andarg are reserved as valid attributes.
This specification does not define any observable behavior that is specific to theintent andarg attributes.
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>
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>
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:
white-space is treated asnowrap on all MathML elements.align-content,justify-content,align-self,justify-self have no effects on MathML elements.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>
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.
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).
The defaultdisplay property is described inA.User Agent Stylesheet:
<math> root, it is equal toinline math orblock math according to the value of thedisplay attribute.mtable,mtr,mtd it is respectively equal toinline-table,table-row andtable-cell.maction andsemantics elements, it is equal tonone.block math.In order to specify math layout in differentwriting modes, this specification uses concepts from [CSS-WRITING-MODES-4]:
horizontal-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:
Block metrics. Theblock size,first baseline set andlast baseline set. The followingbaselines are defined for MathML boxes:
Given a MathML box, the following offsets are defined:
horizontal-tb andrtl that may be used in e.g. Arabic math.vertical-lr andltr that may be used in e.g. Mongolian math.vertical-rl andltr that may be used in e.g. Japanese math.Here are examples of offsets obtained from line-relative metrics:
ltr and is theinline size of the box − (line-left offset +inline size of the child box) otherwise.horizontal-lr,vertical-rl orsideways-rl and is theline-descent otherwise.Each MathML element has an associatedmath content box, which is calculated as described in this chapter's layout algorithms using the following structure:
The following extra steps must be performed:
The box metrics and offsets of thepadding box are obtained from thecontent box by taking into account the correspondingpadding properties as described in CSS.
Thebaselines of thepadding box are the same as the one of thecontent box.
If thecontent box has atop accent attachment then thepadding box has the same property, increased by the inline-start padding. If thecontent box has anitalic correction then thepadding box has the same property, increased by theinline-end padding.
The box metrics and offsets of theborder box are obtained from thepadding box by taking into account the correspondingborder-width property as described in CSS.
In general, thebaselines of theborder box are the same as the one of thepadding box. However, if theline-over border is positive then theink-over baseline is set to theline-over edge of theborder box and if theline-under border is positive then theink-under baseline is set to theline-under edge of theborder box.
If thepadding box has atop accent attachment then theborder box has the same property, increased by the border-width of its inline-start egde. If thepadding box has anitalic correction then theborder box has the same property, increased by the border-width of itsinline-end egde.
The box metrics and offsets of themargin box are obtained from theborder box by taking into account the correspondingmargin properties as described in CSS.
Thebaselines of themargin box are the same as the one of theborder box.
If thepadding box has atop accent attachment then themargin box has the same property, increased by the inline-start margin. If thepadding box has anitalic correction then themargin box has the same property, increased by theinline-end margin.
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.
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>
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).
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.
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> if </mtext><mrow><mi>x</mi><mo>≥</mo><mn>1</mn></mrow><mtext> and </mtext><mn>2</mn><mtext> otherwise.</mtext></mrow></math>
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:
<mtext> element. 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.
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.
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>
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>
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.
fence 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>
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>
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>
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.
AMathML Core element is anembellished operator if it is:
mo element;mfrac, whose firstin-flow child exists and is anembellished operator;mpadded, 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:
mo element; is the element itself.mfrac element is the core operator of its firstin-flow child.mpadded 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.
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:
form attribute is present and valid on thecore operator, then itsASCII lowercased value is used.mpadded ormsqrt with more than onein-flow child (ignoring allspace-like children) then it has formprefix.mpadded ormsqrt with more than onein-flow child (ignoring allspace-like children) then it has formpostfix.postfix.infix. 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:
stretchy,symmetric,largeop,movablelimits,lspace,rspace,maxsize orminsize attribute is present and valid on thecore operator, then theASCII lowercased value of this property is used.form of an embellished operator.Content, then setCategory to the result of thealgorithm to determine the category of an operator(Content, Form) whereForm is theform calculated at the previous step.Category isDefault and theform ofembellished operator was not explicitly specified as an attribute on itscore operator:Category to the result of thealgorithm to determine the category of an operator(Content, Form) whereForm isinfix.Category isDefault, then run the algorithm again withForm set topostfix.Category isDefault, then run the algorithm again withForm set toprefix.Category.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:
lspace,rspace are interpreted relative to the value read from the dictionary or to the fallback value above.minsize andmaxsize are described in3.2.4.3Layout of operators.lspace,rspace,minsize andmaxsize rely on the font style of thecore operator, not the one of theembellished operator. 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:
<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.stretchy property:g in the inline direction with thefirst available font then fall back to the layout algorithm of3.2.1.1Layout of<mtext>.<mtext>.Tinline then fall back to the layout algorithm of3.2.1.1Layout of<mtext>.g toinline dimensionTinline.g stretched toinline dimensionTinline and at position determined by the previous box metrics.g in the block direction with thefirst available font then fall back to the layout algorithm of3.2.1.1Layout of<mtext>.(Uascent, Udescent) then fall back to the layout algorithm of3.2.1.1Layout of<mtext>.symmetric property then set the target sizesTascent andTdescent toSascent andSdescent respectively:Sascent = max(Uascent −AxisHeight,Udescent +AxisHeight ) +AxisHeightSdescent = max(Uascent −AxisHeight,Udescent +AxisHeight ) −AxisHeightUascent andUdescent respectively.Tascent −AxisHeight =Tdescent +AxisHeight means that an operator stretching exactlyTascent above the baseline andTdescent below the baseline would actually stretch symmetrically above and below themath axis.Sascent andSdescent are the minimal values, that are respectively not less thanUascent andUdescent, which satisfy this property.minsize andmaxsize be theminsize andmaxsize properties on the operator. Percentage values are interpreted relative to the height ofg. LetT =Tascent +Tdescent be the target size. Ifminsize < 0 then setminsize to 0. Ifmaxsize <minsize then setmaxsize tominsize. With 0 ≤minsize ≤maxsize:T ≤ 0 then setTascent tominsize / 2 +AxisHeight and then setTdescent tominsize −Tascent.T <minsize then setTascent to max(0, (Tascent −AxisHeight) ×minsize /T +AxisHeight) andTdescent tominsize −Tascent.maxsize <T then setTascent to max(0, (Tascent −AxisHeight) ×maxsize /T +AxisHeight) andTdescent tomaxsize −Tascent.maxsize is value ∞ is interpreted above as being larger than any other size, i.e.minsize ≤ maxsize is always true whilemaxsize < minsize andmaxsize < T are always false.minsize ≤T ≤maxsize holds. Additionnally, if the target values correspond to symmetric stretching with respect to themath axis then propertyTascent −AxisHeight =Tdescent +AxisHeight is preserved.g toblock dimensionTascent +Tdescent. 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: 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 + Δ. These centers have coordinates "½(ascent − descent)" so Δ = [(ascent of stretchy glyph − descent of stretchy glyph) − (Tascent −Tdescent)] / 2.g stretched toblock dimensionTascent +Tdescent and at position determined by the previous box metrics shifted by Δ towards theline-over.largeop property and ifmath-style on the<mo> element isnormal, then:g in the block direction with thefirst available font then fall back to the layout algorithm of3.2.1.1Layout of<mtext>.stretchylargeop glyph as stretchy with target dimensionDisplayOperatorMinHeight.g 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 + Δ.symmetric property, then Δ = [(ascent of stretchy glyph − descent of stretchy glyph) − 2 *AxisHeight] / 2.symmetric.g stretched toblock dimensionDisplayOperatorMinHeight and at position determined by the previous box metrics shifted by Δ towards theline-over.<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.
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>.
width 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.height 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.height 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>
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.
<mspace> elementA 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:
mtext ormspace;mpadded 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.
mphantom 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.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>
lquote 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);}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.
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>
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.
<mrow> elementThealgorithm for stretching operators along the block axis consists in the following steps:
LToStretch containingembellished operators with astretchy property and blockstretch axis; and a second listLNotToStretch.LNotToStretch. IfLToStretch is empty then stop. IfLNotToStretch is empty, perform layout withblock stretch size constraint(0, 0) for all the items ofLToStretch.Uascent 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.LToStretch withblock stretch size constraint(Uascent, Udescent). 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.
lspace andrspace.Themin-content inline size (respectivelymax-content inline size) are calculated using the following algorithm:
add-space to true if the box corresponds to amath element or is not anembellished operator; and to false otherwise.inline-offset to 0.previous-italic-correction to 0.inline-offset byprevious-italic-correction.add-space is true then incrementinline-offset by itslspace property.inline-offset by themin-content inline size (respectivelymax-content inline size) of the child'smargin box.previous-italic-correction to itsitalic correction. Otherwise set it to 0.add-space is true then incrementinline-offset by itsrspace property.inline-offset byprevious-italic-correction.inline-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:
add-space to true if the box corresponds to amath element or is not anembellished operator; and to false otherwise.inline-offset to 0.previous-italic-correction to 0.inline-offset byprevious-italic-correction.add-space is true then incrementinline-offset by itslspace property.inline-offset and itsblock offset such that thealphabetic baseline of the child is aligned with thealphabetic baseline.inline-offset by theinline size of the child'smargin box.previous-italic-correction to itsitalic correction. Otherwise set it to 0.add-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.
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>
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.
<mfrac> element has two children that arein-flow. Hence the CSS rules basically performscriptlevel,displaystyle andmath-shift changes for thenumerator anddenominator. 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.
<mfrac> elementThemin-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:
compact (respectivelynormal).compact (respectivelynormal) + theink line-descent of thenumerator'smargin box.DenominatorShift is the maximum between:
compact (respectivelynormal).compact (respectivelynormal) + theink line-ascent of thedenominator'smargin box − theAxisHeight.Theline-ascent of the math content is the maximum between:
Numerator Shift + theline-ascent of thenumerator'smargin box.Denominator Shift + theline-ascent of thedenominator'smargin boxTheline-descent of the math content is the maximum between:
Numerator Shift + theline-descent of thenumerator'smargin box.Denominator Shift + theline-descent of thedenominator'smargin box.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.
If thefraction line thickness is zero, the<mfrac> element is instead laid out as shown onFigure13.
<mfrac> element without barThemin-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 Δ =GapMin −Gap is positive thenTopShift andBottomShift are respectively increased by Δ/2 and Δ − Δ/2.
Theline-ascent of the math content is the maximum between:
TopShift + theline-ascent of thenumerator'smargin box.BottomShift + theline-ascent of thedenominator'smargin box.Theline-descent of the math content is the maximum between:
TopShift + theline-descent of thenumerator'smargin box.BottomShift + theline-descent of thedenominator'smargin box.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.
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>
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.
<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.
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.
The<msqrt> element is laid out as shown onFigure14.
<msqrt> elementThemin-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:
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).
<mroot> elementThemin-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.
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.
<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>
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>
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;} 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>
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:
width 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.height 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.depth 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.lspace 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.voffset attribute is absent, invalid or a percentage then the requested voffset is 0. Otherwise the requested voffset is the resolved value of thevoffset attribute.voffset values are not clamped to0. 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.
<mpadded> elementThemin-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.
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>
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;}<mphantom> is implemented for compatibility with full MathML. Authors whose only target is MathML Core are encouraged to use CSS for styling.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.
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>
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.
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.
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.
<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 box −LargeOpItalicCorrection +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 box −LargeOpItalicCorrection + theinline size of themsub subscript'smargin box +SpaceAfterScript.
SubShift is the maximum between:
Theline-ascent of the math content is the maximum between:
SubShift.Theline-descent of the math content is the maximum between:
SubShift. Theinline offset of themsub base is 0 and theinline offset of themsub subscript is theinline size of themsub base'smargin box −LargeOpItalicCorrection.
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.
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.
<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:
compact, orSuperscriptShiftUp otherwise.Theline-ascent of the math content is the maximum between:
SuperShift.Theline-descent of the math content is the maximum between:
SuperShift. 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.
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.
<msubsup> elementThemin-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:
SuperShift − theink line-descent of themsubsup superscript'smargin box). If Δ > 0 then set Δ to the minimum between Δ setSubSuperscriptGapMin −SubSuperGap and increaseSuperShift (and soSubSuperGap too) by Δ.SubSuperGap. 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.
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.
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>
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.
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.
Thealgorithm for stretching operators along the inline axis is as follows.
LToStretch containingembellished operators with astretchy property and inlinestretch axis; and a second listLNotToStretch.LNotToStretch. IfLToStretch is empty then stop. IfLNotToStretch is empty, perform layout withinline stretch size constraint 0 for all the items ofLToStretch.T to the maximuminline size of themargin boxes of child boxes that have been laid out in the previous step.LToStretch withinline stretch size constraintT. 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.
<munder> elementThemin-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:
LargeOpItalicCorrection.LargeOpItalicCorrection. 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:
Themunder base is anembellished operator with thelargeop property.UnderShift is the maximum of
UnderExtraDescender is 0.
Themunder base is anembellished operator with thestretchy property andstretch axis inline.UnderShift is the maximum of:
UnderExtraDescender is 0.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:
UnderShift.Theline-descent of the math content is the maximum between:
UnderShift +UnderExtraAscender. 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.
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.
<mover> elementThemin-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:
TopAccentAttachment + halfLargeOpItalicCorrection.TopAccentAttachment + halfLargeOpItalicCorrection. 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:
Themover base is anembellished operator with thelargeop property.OverShift is the maximum of
OverExtraAscender is 0.
Themover base is anembellished operator with thestretchy property andstretch axis inline.OverShift is the maximum of:
OverExtraDescender is 0. Otherwise,OverShift is equal to
accent attribute is not anASCII case-insensitive match totrue.OverExtraAscender isOverbarExtraAscender.
Theline-ascent of the math content is the maximum between:
OverShift +OverExtraAscender.Theline-descent of the math content is the maximum between:
OverShift. 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.
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.
<munderover> elementThemin-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.
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.
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>
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:
mprescripts element.mprescripts 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.mprescripts 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.
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.
<mmultiscripts> elementThemin-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:
inline-offset to 0. For eachsubscript/superscript pair ofmmultiscripts prescripts, incrementinline-offset bySpaceAfterScript + the maximum of
inline-offset by theinline size of themmultiscripts base'smargin box and setinline-size toinline-offset. For eachsubscript/superscript pair ofmmultiscripts postscripts, modifyinline-size to be at least:
LargeOpItalicCorrection.ItalicCorrection.Incrementinline-offset to the maximum of:
Incrementinline-offset bySpaceAfterScript.
inline-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:
inline-offset to 0.For eachsubscript/superscript pair ofmmultiscripts prescripts:
inline-offset bySpaceAfterScript.pair-inline-size to the maximum ofinline-offset +pair-inline-size − theinline size of the subscript'smargin box.inline-offset +pair-inline-size − theinline size of the superscript'smargin box.SubShift (respectivelySuperShift) towards theline-under (respectivelyline-over).inline-offset bypair-inline-size.<mprescripts> boxes atinline offsetsinline-offset and with theiralphabetic baselines aligned with thealphabetic baseline.For eachsubscript/superscript pair ofmmultiscripts postscripts:
pair-inline-size to the maximum ofinline-offset −LargeOpItalicCorrection.inline-offset +ItalicCorrection.SubShift (respectivelySuperShift) towards theline-under (respectivelyline-over).inline-offset bypair-inline-size.inline-offset bySpaceAfterScript. 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.
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;}<mprescripts> is empty. Hence the CSS rules essentially perform automaticdisplaystyle andscriptlevel changes for the scripts; andmath-shift changes for subscripts and sometimes the base. 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>
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.
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.
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 (respectively) attribute on therowspan<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".
columnspan and is preserved for backward compatibility reasons. The<mtd> elementgenerates an anonymous <mrow> box.
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>
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;}<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]. 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>
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.
encoding 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;}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.
display: 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>
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):

| 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:
math and the computed value ofmath-depth isauto-add (default formfrac) as described in4.5Themath-depth property.largeop property do not follow rules from3.2.4.3Layout of operators to make them bigger.movablelimits property are actually drawn as sub-/superscripts as described in3.4.2.1Children of<munder>,<mover>,<munderover>.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.

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.
| 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".

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.
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:
auto-add and the inherited value ofmath-style iscompact then the computed value ofmath-depth of the element is its inherited value plus one.add(<integer>) then the computed value ofmath-depth of the element is its inherited value plus the specified integer.<integer> then the computed value ofmath-depth of the element is the specified integer. 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:
InvertScaleFactor to true.InvertScaleFactor to false.InvertScaleFactor 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.

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.
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.
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.
These are global layout constants for thefirst available font:
post.underlineThickness orDefault fallback constant if the constant is not available.MATH.MathConstants.scriptPercentScaleDown / 100 or 0.71 ifMATH.MathConstants.scriptPercentScaleDown is null or not available.MATH.MathConstants.scriptScriptPercentScaleDown / 100 or 0.5041 ifMATH.MathConstants.scriptScriptPercentScaleDown is null or not available.MATH.MathConstants.displayOperatorMinHeight orDefault fallback constant if the constant is not available.MATH.MathConstants.axisHeight or halfOS/2.sxHeight if the constant is not available.MATH.MathConstants.accentBaseHeight orOS/2.sxHeight if the constant is not available.MATH.MathConstants.subscriptShiftDown orOS/2.ySubscriptYOffset if the constant is not available.MATH.MathConstants.subscriptTopMax or ⅘ ×OS/2.sxHeight if the constant is not available.MATH.MathConstants.subscriptBaselineDropMin orDefault fallback constant if the constant is not available.MATH.MathConstants.superscriptShiftUp orOS/2.ySuperscriptYOffset if the constant is not available.MATH.MathConstants.superscriptShiftUpCramped orDefault fallback constant if the constant is not available.MATH.MathConstants.superscriptBottomMin or ¼ ×OS/2.sxHeight if the constant is not available.MATH.MathConstants.superscriptBaselineDropMax orDefault fallback constant if the constant is not available.MATH.MathConstants.subSuperscriptGapMin or 4 ×default rule thickness if the constant is not available.MATH.MathConstants.superscriptBottomMaxWithSubscript or ⅘ ×OS/2.sxHeight if the constant is not available.MATH.MathConstants.spaceAfterScript or 1/24em if the constant is not available.MATH.MathConstants.upperLimitGapMin orDefault fallback constant if the constant is not available.MATH.MathConstants.upperLimitBaselineRiseMin orDefault fallback constant if the constant is not available.MATH.MathConstants.lowerLimitGapMin orDefault fallback constant if the constant is not available.MATH.MathConstants.lowerLimitBaselineDropMin orDefault fallback constant if the constant is not available.MATH.MathConstants.stackTopShiftUp orDefault fallback constant if the constant is not available.MATH.MathConstants.stackTopDisplayStyleShiftUp orDefault fallback constant if the constant is not available.MATH.MathConstants.stackBottomShiftDown orDefault fallback constant if the constant is not available.MATH.MathConstants.stackBottomDisplayStyleShiftDown orDefault fallback constant if the constant is not available.MATH.MathConstants.stackGapMin or 3 ×default rule thickness if the constant is not available.MATH.MathConstants.stackDisplayStyleGapMin or 7 ×default rule thickness if the constant is not available.MATH.MathConstants.stretchStackTopShiftUp orDefault fallback constant if the constant is not available.MATH.MathConstants.stretchStackBottomShiftDown orDefault fallback constant if the constant is not available.MATH.MathConstants.stretchStackGapAboveMin orDefault fallback constant if the constant is not available.MATH.MathConstants.stretchStackGapBelowMin orDefault fallback constant if the constant is not available.MATH.MathConstants.fractionNumeratorShiftUp orDefault fallback constant if the constant is not available.MATH.MathConstants.fractionNumeratorDisplayStyleShiftUp orDefault fallback constant if the constant is not available.MATH.MathConstants.fractionDenominatorShiftDown orDefault fallback constant if the constant is not available.MATH.MathConstants.fractionDenominatorDisplayStyleShiftDown orDefault fallback constant if the constant is not available.MATH.MathConstants.fractionNumeratorGapMin ordefault rule thickness if the constant is not available.MATH.MathConstants.fractionNumDisplayStyleGapMin or 3 ×default rule thickness if the constant is not available.MATH.MathConstants.fractionRuleThickness ordefault rule thickness if the constant is not available.MATH.MathConstants.fractionDenominatorGapMin ordefault rule thickness if the constant is not available.MATH.MathConstants.fractionDenomDisplayStyleGapMin or 3 ×default rule thickness if the constant is not available.MATH.MathConstants.overbarVerticalGap or 3 ×default rule thickness if the constant is not available.MATH.MathConstants.overbarExtraAscender ordefault rule thickness if the constant is not available.MATH.MathConstants.underbarVerticalGap or 3 ×default rule thickness if the constant is not available.MATH.MathConstants.underbarExtraDescender ordefault rule thickness if the constant is not available.MATH.MathConstants.radicalVerticalGap or 1¼ ×default rule thickness if the constant is not available.MATH.MathConstants.radicalDisplayStyleVerticalGap ordefault rule thickness + ¼OS/2.sxHeight if the constant is not available.MATH.MathConstants.radicalRuleThickness ordefault rule thickness if the constant is not available.MATH.MathConstants.radicalExtraAscender ordefault rule thickness if the constant is not available.MATH.MathConstants.radicalKernBeforeDegree or 5/18em if the constant is not available.MATH.MathConstants.radicalKernAfterDegree or −10/18em if the constant is not available.MATH.MathConstants.radicalDegreeBottomRaisePercent / 100.0 or 0.6 if the constant is not available.These are per-glyph tables for thefirst available font:
MATH.MathGlyphInfo.MathItalicsCorrectionInfo of italics correction values. Use the corresponding value inMATH.MathGlyphInfo.MathItalicsCorrectionInfo.italicsCorrection if there is one for the requested glyph or0 otherwise.MATH.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. This section describes how to handle stretchy glyphs of arbitrary size using theMATH.MathVariants table.
This section is based on [OPEN-TYPE-MATH-IN-HARFBUZZ]. For convenience, the following definitions are used:
MATH.MathVariant.minConnectorOverlap.GlyphPartRecord is anextender if and only ifGlyphPartRecord.partFlags has thefExtender flag set.GlyphAssembly ishorizontal if it is obtained fromMathVariant.horizGlyphConstructionOffsets. Otherwise it isvertical (and obtained fromMathVariant.vertGlyphConstructionOffsets).GlyphAssembly table,NExt (respectivelyNNonExt) is the number of extenders (respectively non-extenders) inGlyphAssembly.partRecords.GlyphAssembly table,SExt (respectivelySNonExt) is the sum ofGlyphPartRecord.fullAdvance for all extenders (respectively non-extenders) inGlyphAssembly.partRecords. User agents must treat theGlyphAssembly as invalid if the following conditions are not satisfied:
GlyphPartRecord 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:
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:
GlyphAssembly 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.GlyphAssembly 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.
T.Theshaping of the glyph assembly is performed with the following algorithm:
(x, y) to(0, 0),RepetitionCounter to 0 andPartIndex to -1.RepetitionCounter is 0:PartIndex.PartIndex isGlyphAssembly.partCount then stop.Part toGlyphAssembly.partRecords[PartIndex]. SetRepetitionCounter tormin ifPart is an extender and to 1 otherwise.Part.glyphID so that its (left, baseline) coordinates are at position(x, y). Setx tox + Part.fullAdvance −omax.Part.glyphID so that its (left, bottom) coordinates are at position(x, y). Sety toy − Part.fullAdvance +omax.RepetitionCounter.Thepreferred inline size of a glyph stretched along the block axis is calculated using the following algorithm:
S to the glyph's advance width.MathGlyphConstruction table in theMathVariants.vertGlyphConstructionOffsets table for the given glyph:MathGlyphVariantRecord inMathGlyphConstruction.mathGlyphVariantRecord, ensure thatS is at least the advance width of the glyph of idMathGlyphVariantRecord.variantGlyph.GlyphAssembly subtable, then ensure thatS is at least theglyph assembly width.S. The algorithm toshape a stretchy glyph to inline (respectively block) dimensionT is the following:
MathGlyphConstruction table in theMathVariants.horizGlyphConstructionOffsets table (respectivelyMathVariants.vertGlyphConstructionOffsets table) for the given glyph then exit with failure.T then use normal shaping and bounding box for that glyph, theMathItalicsCorrectionInfo for that glyph as italic correction and exit with success.MathGlyphVariantRecord 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.GlyphAssembly 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.T, then choose last one that was tried and exit with success. The algorithm toget a glyph corresponding to a characterc given a directionalitydir is the following:
g be the glyph corresponding toc in thefirst available font. If it is not possible to find such a glyph, then exit with failure.dir isrtl:g in thefirst available font, then return it and exit with success. [OPEN-FONT-FORMAT]c has the Bidi_Mirrored property [BIDI]:c 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.g and exit with success.dir isltr.g and exit with success.@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;}Thealgorithm to set the properties of an operator from its category is as follows:
minsize to100%.maxsize to∞.lspace andrspace to the value specified in the corresponding column.stretchy,symmetric,largeop,movablelimits, set that property totrue if it is listed in the last column or tofalse otherwise.Thealgorithm to determine the category of an operator (Content,Form) is as folllows:
Content as an UTF-16 string does not have length or 1 or 2 then exit with categoryDefault.Content is a single character in the range U+0320–U+03FF then exit with categoryDefault. Otherwise, if it has two characters:Content 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.Content with the first character and move to step 3.Content 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.Default.Form 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:Key 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.Key according to whetherForm isinfix,prefix,postfix respectively.Key is at most 0x2FFF.Entry 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 Table | Entries |
|---|---|
Operators_2_ascii_chars | 18 entries (2-characters ASCII strings):'!!', '!=', '&&', '**', '*=', '++', '+=', '--', '-=', '->', '//', '/=', ':=', '<=', '<>', '==', '>=', '||', |
Operators_fence | 61 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_separator | 3 entries:U+002C, U+003B, U+2063, |
| (Content, Form) keys | Category |
|---|---|
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 |
| Category | Form | Encoding | lspace | rspace | properties |
|---|---|---|---|---|---|
| Default | N/A | N/A | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ForceDefault | N/A | N/A | 0.2777777777777778em | 0.2777777777777778em | N/A |
| A | infix | 0x0 | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| B | infix | 0x4 | 0.2222222222222222em | 0.2222222222222222em | N/A |
| C | infix | 0x8 | 0.16666666666666666em | 0.16666666666666666em | N/A |
| D | prefix | 0x1 | 0 | 0 | N/A |
| E | postfix | 0x2 | 0 | 0 | N/A |
| F | prefix | 0x5 | 0 | 0 | stretchy symmetric |
| G | postfix | 0x6 | 0 | 0 | stretchy symmetric |
| H | prefix | 0x9 | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| I | postfix | 0xA | 0 | 0 | stretchy |
| J | prefix | 0xD | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| K | infix | 0xC | 0 | 0 | N/A |
| L | prefix | N/A | 0.16666666666666666em | 0 | N/A |
| M | infix | N/A | 0 | 0.16666666666666666em | N/A |
{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},Key isEntry % 0x4000, category encoding isEntry / 0x1000. 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,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.
| Content | Stretch Axis | form | lspace | rspace | properties |
|---|---|---|---|---|---|
| < U+003C | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| = U+003D | inline | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| > U+003E | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| | U+007C | block | infix | 0.2777777777777778em | 0.2777777777777778em | fence |
| ↖ U+2196 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ↗ U+2197 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ↘ U+2198 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ↙ U+2199 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ↯ U+21AF | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ↶ U+21B6 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ↷ U+21B7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ↸ U+21B8 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ↺ U+21BA | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ↻ U+21BB | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⇖ U+21D6 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⇗ U+21D7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⇘ U+21D8 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⇙ U+21D9 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⇱ U+21F1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⇲ U+21F2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ∈ U+2208 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ∉ U+2209 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ∊ U+220A | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ∋ U+220B | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ∌ U+220C | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ∍ U+220D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ∝ U+221D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ∣ U+2223 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ∤ U+2224 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ∥ U+2225 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ∦ U+2226 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ∷ U+2237 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ∹ U+2239 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ∺ U+223A | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ∻ U+223B | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ∼ U+223C | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ∽ U+223D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ∾ U+223E | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≁ U+2241 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≂ U+2242 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≃ U+2243 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≄ U+2244 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≅ U+2245 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≆ U+2246 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≇ U+2247 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≈ U+2248 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≉ U+2249 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≊ U+224A | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≋ U+224B | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≌ U+224C | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≍ U+224D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≎ U+224E | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≏ U+224F | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≐ U+2250 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≑ U+2251 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≒ U+2252 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≓ U+2253 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≔ U+2254 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≕ U+2255 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≖ U+2256 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≗ U+2257 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≘ U+2258 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≙ U+2259 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≚ U+225A | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≛ U+225B | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≜ U+225C | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≝ U+225D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≞ U+225E | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≟ U+225F | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≠ U+2260 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≡ U+2261 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≢ U+2262 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≣ U+2263 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≤ U+2264 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≥ U+2265 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≦ U+2266 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≧ U+2267 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≨ U+2268 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≩ U+2269 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≪ U+226A | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≫ U+226B | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≬ U+226C | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≭ U+226D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≮ U+226E | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≯ U+226F | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≰ U+2270 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≱ U+2271 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≲ U+2272 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≳ U+2273 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≴ U+2274 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≵ U+2275 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≶ U+2276 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≷ U+2277 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≸ U+2278 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≹ U+2279 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≺ U+227A | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≻ U+227B | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≼ U+227C | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≽ U+227D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≾ U+227E | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ≿ U+227F | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊀ U+2280 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊁ U+2281 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊂ U+2282 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊃ U+2283 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊄ U+2284 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊅ U+2285 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊆ U+2286 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊇ U+2287 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊈ U+2288 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊉ U+2289 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊊ U+228A | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊋ U+228B | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊏ U+228F | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊐ U+2290 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊑ U+2291 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊒ U+2292 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊜ U+229C | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊢ U+22A2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊣ U+22A3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊦ U+22A6 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊧ U+22A7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊨ U+22A8 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊩ U+22A9 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊪ U+22AA | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊫ U+22AB | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊬ U+22AC | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊭ U+22AD | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊮ U+22AE | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊯ U+22AF | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊰ U+22B0 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊱ U+22B1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊲ U+22B2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊳ U+22B3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊴ U+22B4 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊵ U+22B5 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊶ U+22B6 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊷ U+22B7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⊸ U+22B8 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋈ U+22C8 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋍ U+22CD | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋐ U+22D0 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋑ U+22D1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋔ U+22D4 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋕ U+22D5 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋖ U+22D6 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋗ U+22D7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋘ U+22D8 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋙ U+22D9 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋚ U+22DA | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋛ U+22DB | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋜ U+22DC | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋝ U+22DD | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋞ U+22DE | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋟ U+22DF | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋠ U+22E0 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋡ U+22E1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋢ U+22E2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋣ U+22E3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋤ U+22E4 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋥ U+22E5 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋦ U+22E6 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋧ U+22E7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋨ U+22E8 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋩ U+22E9 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋪ U+22EA | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋫ U+22EB | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋬ U+22EC | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋭ U+22ED | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋲ U+22F2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋳ U+22F3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋴ U+22F4 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋵ U+22F5 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋶ U+22F6 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋷ U+22F7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋸ U+22F8 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋹ U+22F9 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋺ U+22FA | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋻ U+22FB | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋼ U+22FC | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋽ U+22FD | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋾ U+22FE | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⋿ U+22FF | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⌁ U+2301 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⍼ U+237C | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⎋ U+238B | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ➘ U+2798 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ➚ U+279A | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ➧ U+27A7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ➲ U+27B2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ➴ U+27B4 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ➶ U+27B6 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ➷ U+27B7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ➹ U+27B9 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⟂ U+27C2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⟲ U+27F2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⟳ U+27F3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤡ U+2921 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤢ U+2922 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤣ U+2923 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤤ U+2924 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤥ U+2925 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤦ U+2926 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤧ U+2927 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤨ U+2928 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤩ U+2929 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤪ U+292A | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤫ U+292B | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤬ U+292C | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤭ U+292D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤮ U+292E | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤯ U+292F | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤰ U+2930 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤱ U+2931 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤲ U+2932 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤳ U+2933 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤸ U+2938 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤹ U+2939 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤺ U+293A | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤻ U+293B | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤼ U+293C | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤽ U+293D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤾ U+293E | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⤿ U+293F | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⥀ U+2940 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⥁ U+2941 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⥶ U+2976 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⥷ U+2977 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⥸ U+2978 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⥹ U+2979 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⥺ U+297A | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⥻ U+297B | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⦁ U+2981 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⦂ U+2982 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⦶ U+29B6 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⦷ U+29B7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⦹ U+29B9 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⧀ U+29C0 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⧁ U+29C1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⧎ U+29CE | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⧏ U+29CF | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⧐ U+29D0 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⧑ U+29D1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⧒ U+29D2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⧓ U+29D3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⧟ U+29DF | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⧡ U+29E1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⧣ U+29E3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⧤ U+29E4 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⧥ U+29E5 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⧦ U+29E6 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⧴ U+29F4 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩦ U+2A66 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩧ U+2A67 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩨ U+2A68 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩩ U+2A69 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩪ U+2A6A | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩫ U+2A6B | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩬ U+2A6C | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩭ U+2A6D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩮ U+2A6E | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩯ U+2A6F | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩰ U+2A70 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩱ U+2A71 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩲ U+2A72 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩳ U+2A73 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩴ U+2A74 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩵ U+2A75 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩶ U+2A76 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩷ U+2A77 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩸ U+2A78 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩹ U+2A79 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩺ U+2A7A | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩻ U+2A7B | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩼ U+2A7C | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩽ U+2A7D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩾ U+2A7E | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⩿ U+2A7F | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪀ U+2A80 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪁ U+2A81 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪂ U+2A82 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪃ U+2A83 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪄ U+2A84 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪅ U+2A85 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪆ U+2A86 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪇ U+2A87 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪈ U+2A88 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪉ U+2A89 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪊ U+2A8A | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪋ U+2A8B | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪌ U+2A8C | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪍ U+2A8D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪎ U+2A8E | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪏ U+2A8F | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪐ U+2A90 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪑ U+2A91 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪒ U+2A92 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪓ U+2A93 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪔ U+2A94 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪕ U+2A95 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪖ U+2A96 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪗ U+2A97 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪘ U+2A98 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪙ U+2A99 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪚ U+2A9A | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪛ U+2A9B | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪜ U+2A9C | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪝ U+2A9D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪞ U+2A9E | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪟ U+2A9F | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪠ U+2AA0 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪡ U+2AA1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪢ U+2AA2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪣ U+2AA3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪤ U+2AA4 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪥ U+2AA5 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪦ U+2AA6 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪧ U+2AA7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪨ U+2AA8 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪩ U+2AA9 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪪ U+2AAA | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪫ U+2AAB | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪬ U+2AAC | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪭ U+2AAD | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪮ U+2AAE | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪯ U+2AAF | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪰ U+2AB0 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪱ U+2AB1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪲ U+2AB2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪳ U+2AB3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪴ U+2AB4 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪵ U+2AB5 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪶ U+2AB6 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪷ U+2AB7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪸ U+2AB8 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪹ U+2AB9 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪺ U+2ABA | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪻ U+2ABB | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪼ U+2ABC | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪽ U+2ABD | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪾ U+2ABE | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⪿ U+2ABF | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫀ U+2AC0 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫁ U+2AC1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫂ U+2AC2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫃ U+2AC3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫄ U+2AC4 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫅ U+2AC5 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫆ U+2AC6 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫇ U+2AC7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫈ U+2AC8 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫉ U+2AC9 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫊ U+2ACA | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫋ U+2ACB | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫌ U+2ACC | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫍ U+2ACD | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫎ U+2ACE | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫏ U+2ACF | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫐ U+2AD0 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫑ U+2AD1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫒ U+2AD2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫓ U+2AD3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫔ U+2AD4 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫕ U+2AD5 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫖ U+2AD6 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫗ U+2AD7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫘ U+2AD8 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫙ U+2AD9 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫚ U+2ADA | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫞ U+2ADE | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫟ U+2ADF | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫠ U+2AE0 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫡ U+2AE1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫢ U+2AE2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫣ U+2AE3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫤ U+2AE4 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫥ U+2AE5 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫦ U+2AE6 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫧ U+2AE7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫨ U+2AE8 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫩ U+2AE9 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫪ U+2AEA | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫫ U+2AEB | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫮ U+2AEE | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫲ U+2AF2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫳ U+2AF3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫴ U+2AF4 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫵ U+2AF5 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫷ U+2AF7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫸ U+2AF8 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫹ U+2AF9 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⫺ U+2AFA | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⬀ U+2B00 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⬁ U+2B01 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⬂ U+2B02 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⬃ U+2B03 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⬈ U+2B08 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⬉ U+2B09 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⬊ U+2B0A | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⬋ U+2B0B | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⬿ U+2B3F | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭍ U+2B4D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭎ U+2B4E | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭏ U+2B4F | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭚ U+2B5A | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭛ U+2B5B | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭜ U+2B5C | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭝ U+2B5D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭞ U+2B5E | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭟ U+2B5F | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭦ U+2B66 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭧ U+2B67 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭨ U+2B68 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭩ U+2B69 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭮ U+2B6E | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭯ U+2B6F | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭶ U+2B76 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭷ U+2B77 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭸ U+2B78 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⭹ U+2B79 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⮈ U+2B88 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⮉ U+2B89 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⮊ U+2B8A | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⮋ U+2B8B | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⮌ U+2B8C | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⮍ U+2B8D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⮎ U+2B8E | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⮏ U+2B8F | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⮔ U+2B94 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⮰ U+2BB0 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⮱ U+2BB1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⮲ U+2BB2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⮳ U+2BB3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⮴ U+2BB4 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⮵ U+2BB5 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⮶ U+2BB6 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⮷ U+2BB7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| ⯑ U+2BD1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| String != U+0021 U+003D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| String *= U+002A U+003D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| String += U+002B U+003D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| String -= U+002D U+003D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| String -> U+002D U+003E | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| String // U+002F U+002F | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| String /= U+002F U+003D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| String := U+003A U+003D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| String <= U+003C U+003D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| String == U+003D U+003D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| String >= U+003E U+003D | block | infix | 0.2777777777777778em | 0.2777777777777778em | N/A |
| String || U+007C U+007C | block | infix | 0.2777777777777778em | 0.2777777777777778em | fence |
| ← U+2190 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↑ U+2191 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| → U+2192 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↓ U+2193 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↔ U+2194 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↕ U+2195 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↚ U+219A | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↛ U+219B | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↜ U+219C | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↝ U+219D | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↞ U+219E | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↟ U+219F | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↠ U+21A0 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↡ U+21A1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↢ U+21A2 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↣ U+21A3 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↤ U+21A4 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↥ U+21A5 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↦ U+21A6 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↧ U+21A7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↨ U+21A8 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↩ U+21A9 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↪ U+21AA | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↫ U+21AB | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↬ U+21AC | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↭ U+21AD | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↮ U+21AE | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↰ U+21B0 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↱ U+21B1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↲ U+21B2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↳ U+21B3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↴ U+21B4 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↵ U+21B5 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↹ U+21B9 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↼ U+21BC | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↽ U+21BD | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↾ U+21BE | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ↿ U+21BF | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇀ U+21C0 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇁ U+21C1 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇂ U+21C2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇃ U+21C3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇄ U+21C4 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇅ U+21C5 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇆ U+21C6 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇇ U+21C7 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇈ U+21C8 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇉ U+21C9 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇊ U+21CA | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇋ U+21CB | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇌ U+21CC | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇍ U+21CD | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇎ U+21CE | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇏ U+21CF | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇐ U+21D0 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇑ U+21D1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇒ U+21D2 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇓ U+21D3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇔ U+21D4 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇕ U+21D5 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇚ U+21DA | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇛ U+21DB | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇜ U+21DC | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇝ U+21DD | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇞ U+21DE | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇟ U+21DF | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇠ U+21E0 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇡ U+21E1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇢ U+21E2 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇣ U+21E3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇤ U+21E4 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇥ U+21E5 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇦ U+21E6 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇧ U+21E7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇨ U+21E8 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇩ U+21E9 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇪ U+21EA | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇫ U+21EB | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇬ U+21EC | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇭ U+21ED | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇮ U+21EE | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇯ U+21EF | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇰ U+21F0 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇳ U+21F3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇴ U+21F4 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇵ U+21F5 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇶ U+21F6 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇷ U+21F7 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇸ U+21F8 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇹ U+21F9 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇺ U+21FA | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇻ U+21FB | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇼ U+21FC | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇽ U+21FD | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇾ U+21FE | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⇿ U+21FF | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➔ U+2794 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➙ U+2799 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➛ U+279B | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➜ U+279C | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➝ U+279D | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➞ U+279E | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➟ U+279F | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➠ U+27A0 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➡ U+27A1 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➥ U+27A5 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➦ U+27A6 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➨ U+27A8 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➩ U+27A9 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➪ U+27AA | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➫ U+27AB | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➬ U+27AC | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➭ U+27AD | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➮ U+27AE | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➯ U+27AF | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➱ U+27B1 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➳ U+27B3 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➵ U+27B5 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➸ U+27B8 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➺ U+27BA | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➻ U+27BB | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➼ U+27BC | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➽ U+27BD | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ➾ U+27BE | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⟰ U+27F0 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⟱ U+27F1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⟴ U+27F4 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⟵ U+27F5 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⟶ U+27F6 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⟷ U+27F7 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⟸ U+27F8 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⟹ U+27F9 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⟺ U+27FA | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⟻ U+27FB | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⟼ U+27FC | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⟽ U+27FD | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⟾ U+27FE | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⟿ U+27FF | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤀ U+2900 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤁ U+2901 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤂ U+2902 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤃ U+2903 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤄ U+2904 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤅ U+2905 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤆ U+2906 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤇ U+2907 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤈ U+2908 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤉ U+2909 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤊ U+290A | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤋ U+290B | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤌ U+290C | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤍ U+290D | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤎ U+290E | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤏ U+290F | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤐ U+2910 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤑ U+2911 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤒ U+2912 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤓ U+2913 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤔ U+2914 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤕ U+2915 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤖ U+2916 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤗ U+2917 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤘ U+2918 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤙ U+2919 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤚ U+291A | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤛ U+291B | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤜ U+291C | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤝ U+291D | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤞ U+291E | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤟ U+291F | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤠ U+2920 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤴ U+2934 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤵ U+2935 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤶ U+2936 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⤷ U+2937 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥂ U+2942 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥃ U+2943 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥄ U+2944 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥅ U+2945 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥆ U+2946 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥇ U+2947 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥈ U+2948 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥉ U+2949 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥊ U+294A | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥋ U+294B | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥌ U+294C | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥍ U+294D | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥎ U+294E | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥏ U+294F | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥐ U+2950 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥑ U+2951 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥒ U+2952 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥓ U+2953 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥔ U+2954 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥕ U+2955 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥖ U+2956 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥗ U+2957 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥘ U+2958 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥙ U+2959 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥚ U+295A | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥛ U+295B | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥜ U+295C | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥝ U+295D | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥞ U+295E | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥟ U+295F | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥠ U+2960 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥡ U+2961 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥢ U+2962 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥣ U+2963 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥤ U+2964 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥥ U+2965 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥦ U+2966 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥧ U+2967 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥨ U+2968 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥩ U+2969 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥪ U+296A | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥫ U+296B | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥬ U+296C | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥭ U+296D | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥮ U+296E | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥯ U+296F | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥰ U+2970 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥱ U+2971 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥲ U+2972 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥳ U+2973 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥴ U+2974 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥵ U+2975 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥼ U+297C | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥽ U+297D | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥾ U+297E | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⥿ U+297F | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬄ U+2B04 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬅ U+2B05 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬆ U+2B06 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬇ U+2B07 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬌ U+2B0C | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬍ U+2B0D | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬎ U+2B0E | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬏ U+2B0F | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬐ U+2B10 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬑ U+2B11 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬰ U+2B30 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬱ U+2B31 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬲ U+2B32 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬳ U+2B33 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬴ U+2B34 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬵ U+2B35 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬶ U+2B36 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬷ U+2B37 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬸ U+2B38 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬹ U+2B39 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬺ U+2B3A | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬻ U+2B3B | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬼ U+2B3C | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬽ U+2B3D | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⬾ U+2B3E | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭀ U+2B40 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭁ U+2B41 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭂ U+2B42 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭃ U+2B43 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭄ U+2B44 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭅ U+2B45 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭆ U+2B46 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭇ U+2B47 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭈ U+2B48 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭉ U+2B49 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭊ U+2B4A | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭋ U+2B4B | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭌ U+2B4C | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭠ U+2B60 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭡ U+2B61 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭢ U+2B62 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭣ U+2B63 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭤ U+2B64 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭥ U+2B65 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭪ U+2B6A | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭫ U+2B6B | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭬ U+2B6C | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭭ U+2B6D | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭰ U+2B70 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭱ U+2B71 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭲ U+2B72 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭳ U+2B73 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭺ U+2B7A | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭻ U+2B7B | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭼ U+2B7C | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⭽ U+2B7D | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮀ U+2B80 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮁ U+2B81 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮂ U+2B82 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮃ U+2B83 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮄ U+2B84 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮅ U+2B85 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮆ U+2B86 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮇ U+2B87 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮕ U+2B95 | inline | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮠ U+2BA0 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮡ U+2BA1 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮢ U+2BA2 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮣ U+2BA3 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮤ U+2BA4 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮥ U+2BA5 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮦ U+2BA6 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮧ U+2BA7 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮨ U+2BA8 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮩ U+2BA9 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮪ U+2BAA | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮫ U+2BAB | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮬ U+2BAC | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮭ U+2BAD | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮮ U+2BAE | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮯ U+2BAF | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| ⮸ U+2BB8 | block | infix | 0.2777777777777778em | 0.2777777777777778em | stretchy |
| + U+002B | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| - U+002D | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ± U+00B1 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ÷ U+00F7 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⁄ U+2044 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| − U+2212 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ∓ U+2213 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ∔ U+2214 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ∕ U+2215 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ∖ U+2216 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ∧ U+2227 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ∨ U+2228 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ∩ U+2229 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ∪ U+222A | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ∶ U+2236 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ∸ U+2238 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⊌ U+228C | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⊍ U+228D | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⊎ U+228E | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⊓ U+2293 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⊔ U+2294 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⊕ U+2295 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⊖ U+2296 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⊘ U+2298 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⊝ U+229D | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⊞ U+229E | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⊟ U+229F | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⊻ U+22BB | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⊼ U+22BC | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⊽ U+22BD | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⋎ U+22CE | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⋏ U+22CF | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⋒ U+22D2 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⋓ U+22D3 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ➕ U+2795 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ➖ U+2796 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ➗ U+2797 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⦸ U+29B8 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⦼ U+29BC | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⧄ U+29C4 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⧅ U+29C5 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⧵ U+29F5 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⧶ U+29F6 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⧷ U+29F7 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⧸ U+29F8 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⧹ U+29F9 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⧺ U+29FA | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⧻ U+29FB | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨟ U+2A1F | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨠ U+2A20 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨡ U+2A21 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨢ U+2A22 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨣ U+2A23 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨤ U+2A24 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨥ U+2A25 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨦ U+2A26 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨧ U+2A27 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨨ U+2A28 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨩ U+2A29 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨪ U+2A2A | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨫ U+2A2B | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨬ U+2A2C | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨭ U+2A2D | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨮ U+2A2E | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨸ U+2A38 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨹ U+2A39 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨺ U+2A3A | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⨾ U+2A3E | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩀ U+2A40 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩁ U+2A41 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩂ U+2A42 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩃ U+2A43 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩄ U+2A44 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩅ U+2A45 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩆ U+2A46 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩇ U+2A47 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩈ U+2A48 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩉ U+2A49 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩊ U+2A4A | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩋ U+2A4B | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩌ U+2A4C | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩍ U+2A4D | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩎ U+2A4E | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩏ U+2A4F | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩑ U+2A51 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩒ U+2A52 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩓ U+2A53 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩔ U+2A54 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩕ U+2A55 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩖ U+2A56 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩗ U+2A57 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩘ U+2A58 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩙ U+2A59 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩚ U+2A5A | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩛ U+2A5B | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩜ U+2A5C | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩝ U+2A5D | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩞ U+2A5E | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩟ U+2A5F | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩠ U+2A60 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩡ U+2A61 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩢ U+2A62 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⩣ U+2A63 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⫛ U+2ADB | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⫶ U+2AF6 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⫻ U+2AFB | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| ⫽ U+2AFD | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| String && U+0026 U+0026 | block | infix | 0.2222222222222222em | 0.2222222222222222em | N/A |
| % U+0025 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| * U+002A | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| . U+002E | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ? U+003F | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| @ U+0040 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ^ U+005E | inline | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| · U+00B7 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| × U+00D7 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| • U+2022 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⁃ U+2043 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ∗ U+2217 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ∘ U+2218 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ∙ U+2219 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ≀ U+2240 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⊗ U+2297 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⊙ U+2299 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⊚ U+229A | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⊛ U+229B | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⊠ U+22A0 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⊡ U+22A1 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⊺ U+22BA | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⋄ U+22C4 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⋅ U+22C5 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⋆ U+22C6 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⋇ U+22C7 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⋉ U+22C9 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⋊ U+22CA | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⋋ U+22CB | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⋌ U+22CC | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⌅ U+2305 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⌆ U+2306 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⟋ U+27CB | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⟍ U+27CD | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⧆ U+29C6 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⧇ U+29C7 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⧈ U+29C8 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⧔ U+29D4 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⧕ U+29D5 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⧖ U+29D6 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⧗ U+29D7 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⧢ U+29E2 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⨝ U+2A1D | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⨞ U+2A1E | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⨯ U+2A2F | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⨰ U+2A30 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⨱ U+2A31 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⨲ U+2A32 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⨳ U+2A33 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⨴ U+2A34 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⨵ U+2A35 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⨶ U+2A36 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⨷ U+2A37 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⨻ U+2A3B | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⨼ U+2A3C | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⨽ U+2A3D | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⨿ U+2A3F | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⩐ U+2A50 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⩤ U+2A64 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⩥ U+2A65 | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⫝̸ U+2ADC | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⫝ U+2ADD | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ⫾ U+2AFE | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| String ** U+002A U+002A | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| String <> U+003C U+003E | block | infix | 0.16666666666666666em | 0.16666666666666666em | N/A |
| ! U+0021 | block | prefix | 0 | 0 | N/A |
| + U+002B | block | prefix | 0 | 0 | N/A |
| - U+002D | block | prefix | 0 | 0 | N/A |
| ¬ U+00AC | block | prefix | 0 | 0 | N/A |
| ± U+00B1 | block | prefix | 0 | 0 | N/A |
| ‘ U+2018 | block | prefix | 0 | 0 | fence |
| “ U+201C | block | prefix | 0 | 0 | fence |
| ∀ U+2200 | block | prefix | 0 | 0 | N/A |
| ∁ U+2201 | block | prefix | 0 | 0 | N/A |
| ∃ U+2203 | block | prefix | 0 | 0 | N/A |
| ∄ U+2204 | block | prefix | 0 | 0 | N/A |
| ∇ U+2207 | block | prefix | 0 | 0 | N/A |
| − U+2212 | block | prefix | 0 | 0 | N/A |
| ∓ U+2213 | block | prefix | 0 | 0 | N/A |
| ∟ U+221F | block | prefix | 0 | 0 | N/A |
| ∠ U+2220 | block | prefix | 0 | 0 | N/A |
| ∡ U+2221 | block | prefix | 0 | 0 | N/A |
| ∢ U+2222 | block | prefix | 0 | 0 | N/A |
| ∴ U+2234 | block | prefix | 0 | 0 | N/A |
| ∵ U+2235 | block | prefix | 0 | 0 | N/A |
| ∼ U+223C | block | prefix | 0 | 0 | N/A |
| ⊾ U+22BE | block | prefix | 0 | 0 | N/A |
| ⊿ U+22BF | block | prefix | 0 | 0 | N/A |
| ⌐ U+2310 | block | prefix | 0 | 0 | N/A |
| ⌙ U+2319 | block | prefix | 0 | 0 | N/A |
| ➕ U+2795 | block | prefix | 0 | 0 | N/A |
| ➖ U+2796 | block | prefix | 0 | 0 | N/A |
| ⟀ U+27C0 | block | prefix | 0 | 0 | N/A |
| ⦛ U+299B | block | prefix | 0 | 0 | N/A |
| ⦜ U+299C | block | prefix | 0 | 0 | N/A |
| ⦝ U+299D | block | prefix | 0 | 0 | N/A |
| ⦞ U+299E | block | prefix | 0 | 0 | N/A |
| ⦟ U+299F | block | prefix | 0 | 0 | N/A |
| ⦠ U+29A0 | block | prefix | 0 | 0 | N/A |
| ⦡ U+29A1 | block | prefix | 0 | 0 | N/A |
| ⦢ U+29A2 | block | prefix | 0 | 0 | N/A |
| ⦣ U+29A3 | block | prefix | 0 | 0 | N/A |
| ⦤ U+29A4 | block | prefix | 0 | 0 | N/A |
| ⦥ U+29A5 | block | prefix | 0 | 0 | N/A |
| ⦦ U+29A6 | block | prefix | 0 | 0 | N/A |
| ⦧ U+29A7 | block | prefix | 0 | 0 | N/A |
| ⦨ U+29A8 | block | prefix | 0 | 0 | N/A |
| ⦩ U+29A9 | block | prefix | 0 | 0 | N/A |
| ⦪ U+29AA | block | prefix | 0 | 0 | N/A |
| ⦫ U+29AB | block | prefix | 0 | 0 | N/A |
| ⦬ U+29AC | block | prefix | 0 | 0 | N/A |
| ⦭ U+29AD | block | prefix | 0 | 0 | N/A |
| ⦮ U+29AE | block | prefix | 0 | 0 | N/A |
| ⦯ U+29AF | block | prefix | 0 | 0 | N/A |
| ⫬ U+2AEC | block | prefix | 0 | 0 | N/A |
| ⫭ U+2AED | block | prefix | 0 | 0 | N/A |
| String || U+007C U+007C | block | prefix | 0 | 0 | fence |
| ! U+0021 | block | postfix | 0 | 0 | N/A |
| " U+0022 | block | postfix | 0 | 0 | N/A |
| % U+0025 | block | postfix | 0 | 0 | N/A |
| & U+0026 | block | postfix | 0 | 0 | N/A |
| ' U+0027 | block | postfix | 0 | 0 | N/A |
| ` U+0060 | block | postfix | 0 | 0 | N/A |
| ¨ U+00A8 | block | postfix | 0 | 0 | N/A |
| ° U+00B0 | block | postfix | 0 | 0 | N/A |
| ² U+00B2 | block | postfix | 0 | 0 | N/A |
| ³ U+00B3 | block | postfix | 0 | 0 | N/A |
| ´ U+00B4 | block | postfix | 0 | 0 | N/A |
| ¸ U+00B8 | block | postfix | 0 | 0 | N/A |
| ¹ U+00B9 | block | postfix | 0 | 0 | N/A |
| ˊ U+02CA | block | postfix | 0 | 0 | N/A |
| ˋ U+02CB | block | postfix | 0 | 0 | N/A |
| ˘ U+02D8 | block | postfix | 0 | 0 | N/A |
| ˙ U+02D9 | block | postfix | 0 | 0 | N/A |
| ˚ U+02DA | block | postfix | 0 | 0 | N/A |
| ˝ U+02DD | block | postfix | 0 | 0 | N/A |
| ̑ U+0311 | block | postfix | 0 | 0 | N/A |
| ’ U+2019 | block | postfix | 0 | 0 | fence |
| ‚ U+201A | block | postfix | 0 | 0 | N/A |
| ‛ U+201B | block | postfix | 0 | 0 | N/A |
| ” U+201D | block | postfix | 0 | 0 | fence |
| „ U+201E | block | postfix | 0 | 0 | N/A |
| ‟ U+201F | block | postfix | 0 | 0 | N/A |
| ′ U+2032 | block | postfix | 0 | 0 | N/A |
| ″ U+2033 | block | postfix | 0 | 0 | N/A |
| ‴ U+2034 | block | postfix | 0 | 0 | N/A |
| ‵ U+2035 | block | postfix | 0 | 0 | N/A |
| ‶ U+2036 | block | postfix | 0 | 0 | N/A |
| ‷ U+2037 | block | postfix | 0 | 0 | N/A |
| ⁗ U+2057 | block | postfix | 0 | 0 | N/A |
| ⃛ U+20DB | block | postfix | 0 | 0 | N/A |
| ⃜ U+20DC | block | postfix | 0 | 0 | N/A |
| ⏍ U+23CD | block | postfix | 0 | 0 | N/A |
| String !! U+0021 U+0021 | block | postfix | 0 | 0 | N/A |
| String ++ U+002B U+002B | block | postfix | 0 | 0 | N/A |
| String -- U+002D U+002D | block | postfix | 0 | 0 | N/A |
| String || U+007C U+007C | block | postfix | 0 | 0 | fence |
| ( U+0028 | block | prefix | 0 | 0 | stretchy symmetric fence |
| [ U+005B | block | prefix | 0 | 0 | stretchy symmetric fence |
| { U+007B | block | prefix | 0 | 0 | stretchy symmetric fence |
| | U+007C | block | prefix | 0 | 0 | stretchy symmetric fence |
| ‖ U+2016 | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⌈ U+2308 | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⌊ U+230A | block | prefix | 0 | 0 | stretchy symmetric fence |
| 〈 U+2329 | block | prefix | 0 | 0 | stretchy symmetric fence |
| ❲ U+2772 | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⟦ U+27E6 | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⟨ U+27E8 | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⟪ U+27EA | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⟬ U+27EC | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⟮ U+27EE | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⦀ U+2980 | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⦃ U+2983 | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⦅ U+2985 | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⦇ U+2987 | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⦉ U+2989 | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⦋ U+298B | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⦍ U+298D | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⦏ U+298F | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⦑ U+2991 | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⦓ U+2993 | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⦕ U+2995 | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⦗ U+2997 | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⦙ U+2999 | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⧘ U+29D8 | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⧚ U+29DA | block | prefix | 0 | 0 | stretchy symmetric fence |
| ⧼ U+29FC | block | prefix | 0 | 0 | stretchy symmetric fence |
| ) U+0029 | block | postfix | 0 | 0 | stretchy symmetric fence |
| ] U+005D | block | postfix | 0 | 0 | stretchy symmetric fence |
| | U+007C | block | postfix | 0 | 0 | stretchy symmetric fence |
| } U+007D | block | postfix | 0 | 0 | stretchy symmetric fence |
| ‖ U+2016 | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⌉ U+2309 | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⌋ U+230B | block | postfix | 0 | 0 | stretchy symmetric fence |
| 〉 U+232A | block | postfix | 0 | 0 | stretchy symmetric fence |
| ❳ U+2773 | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⟧ U+27E7 | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⟩ U+27E9 | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⟫ U+27EB | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⟭ U+27ED | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⟯ U+27EF | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⦀ U+2980 | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⦄ U+2984 | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⦆ U+2986 | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⦈ U+2988 | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⦊ U+298A | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⦌ U+298C | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⦎ U+298E | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⦐ U+2990 | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⦒ U+2992 | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⦔ U+2994 | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⦖ U+2996 | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⦘ U+2998 | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⦙ U+2999 | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⧙ U+29D9 | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⧛ U+29DB | block | postfix | 0 | 0 | stretchy symmetric fence |
| ⧽ U+29FD | block | postfix | 0 | 0 | stretchy symmetric fence |
| ∫ U+222B | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ∬ U+222C | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ∭ U+222D | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ∮ U+222E | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ∯ U+222F | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ∰ U+2230 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ∱ U+2231 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ∲ U+2232 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ∳ U+2233 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ⨋ U+2A0B | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ⨌ U+2A0C | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ⨍ U+2A0D | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ⨎ U+2A0E | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ⨏ U+2A0F | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ⨐ U+2A10 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ⨑ U+2A11 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ⨒ U+2A12 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ⨓ U+2A13 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ⨔ U+2A14 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ⨕ U+2A15 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ⨖ U+2A16 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ⨗ U+2A17 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ⨘ U+2A18 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ⨙ U+2A19 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ⨚ U+2A1A | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ⨛ U+2A1B | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ⨜ U+2A1C | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop |
| ^ U+005E | inline | postfix | 0 | 0 | stretchy |
| _ U+005F | inline | postfix | 0 | 0 | stretchy |
| ~ U+007E | inline | postfix | 0 | 0 | stretchy |
| ¯ U+00AF | inline | postfix | 0 | 0 | stretchy |
| ˆ U+02C6 | inline | postfix | 0 | 0 | stretchy |
| ˇ U+02C7 | inline | postfix | 0 | 0 | stretchy |
| ˉ U+02C9 | inline | postfix | 0 | 0 | stretchy |
| ˍ U+02CD | inline | postfix | 0 | 0 | stretchy |
| ˜ U+02DC | inline | postfix | 0 | 0 | stretchy |
| ˷ U+02F7 | inline | postfix | 0 | 0 | stretchy |
| ̂ U+0302 | inline | postfix | 0 | 0 | stretchy |
| ‾ U+203E | inline | postfix | 0 | 0 | stretchy |
| ⌢ U+2322 | inline | postfix | 0 | 0 | stretchy |
| ⌣ U+2323 | inline | postfix | 0 | 0 | stretchy |
| ⎴ U+23B4 | inline | postfix | 0 | 0 | stretchy |
| ⎵ U+23B5 | inline | postfix | 0 | 0 | stretchy |
| ⏜ U+23DC | inline | postfix | 0 | 0 | stretchy |
| ⏝ U+23DD | inline | postfix | 0 | 0 | stretchy |
| ⏞ U+23DE | inline | postfix | 0 | 0 | stretchy |
| ⏟ U+23DF | inline | postfix | 0 | 0 | stretchy |
| ⏠ U+23E0 | inline | postfix | 0 | 0 | stretchy |
| ⏡ U+23E1 | inline | postfix | 0 | 0 | stretchy |
| 𞻰 U+1EEF0 | inline | postfix | 0 | 0 | stretchy |
| 𞻱 U+1EEF1 | inline | postfix | 0 | 0 | stretchy |
| ∏ U+220F | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ∐ U+2210 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ∑ U+2211 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⋀ U+22C0 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⋁ U+22C1 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⋂ U+22C2 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⋃ U+22C3 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⨀ U+2A00 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⨁ U+2A01 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⨂ U+2A02 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⨃ U+2A03 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⨄ U+2A04 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⨅ U+2A05 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⨆ U+2A06 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⨇ U+2A07 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⨈ U+2A08 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⨉ U+2A09 | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⨊ U+2A0A | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⨝ U+2A1D | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⨞ U+2A1E | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⫼ U+2AFC | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| ⫿ U+2AFF | block | prefix | 0.16666666666666666em | 0.16666666666666666em | symmetric largeop movablelimits |
| / U+002F | block | infix | 0 | 0 | N/A |
| \ U+005C | block | infix | 0 | 0 | N/A |
| _ U+005F | inline | infix | 0 | 0 | N/A |
| U+2061 | block | infix | 0 | 0 | N/A |
| U+2062 | block | infix | 0 | 0 | N/A |
| U+2063 | block | infix | 0 | 0 | separator |
| U+2064 | block | infix | 0 | 0 | N/A |
| ∆ U+2206 | block | infix | 0 | 0 | N/A |
| ⅅ U+2145 | block | prefix | 0.16666666666666666em | 0 | N/A |
| ⅆ U+2146 | block | prefix | 0.16666666666666666em | 0 | N/A |
| ∂ U+2202 | block | prefix | 0.16666666666666666em | 0 | N/A |
| √ U+221A | block | prefix | 0.16666666666666666em | 0 | N/A |
| ∛ U+221B | block | prefix | 0.16666666666666666em | 0 | N/A |
| ∜ U+221C | block | prefix | 0.16666666666666666em | 0 | N/A |
| , U+002C | block | infix | 0 | 0.16666666666666666em | separator |
| : U+003A | block | infix | 0 | 0.16666666666666666em | N/A |
| ; U+003B | block | infix | 0 | 0.16666666666666666em | separator |
This section is non-normative.
The following table gives mappings between spacing and non spacing characters when used in MathML accent constructs.
| Non Combining | Style | Combining | ||
|---|---|---|---|---|
| U+002B | plus sign | below | U+031F | combining plus sign below |
| U+002D | hyphen-minus | above | U+0305 | combining overline |
| U+002D | hyphen-minus | below | U+0320 | combining minus sign below |
| U+002D | hyphen-minus | below | U+0332 | combining low line |
| U+002E | full stop | above | U+0307 | combining dot above |
| U+002E | full stop | below | U+0323 | combining dot below |
| U+005E | circumflex accent | above | U+0302 | combining circumflex accent |
| U+005E | circumflex accent | below | U+032D | combining circumflex accent below |
| U+005F | low line | below | U+0332 | combining low line |
| U+0060 | grave accent | above | U+0300 | combining grave accent |
| U+0060 | grave accent | below | U+0316 | combining grave accent below |
| U+007E | tilde | above | U+0303 | combining tilde |
| U+007E | tilde | below | U+0330 | combining tilde below |
| U+00A8 | diaeresis | above | U+0308 | combining diaeresis |
| U+00A8 | diaeresis | below | U+0324 | combining diaeresis below |
| U+00AF | macron | above | U+0304 | combining macron |
| U+00AF | macron | above | U+0305 | combining overline |
| U+00B4 | acute accent | above | U+0301 | combining acute accent |
| U+00B4 | acute accent | below | U+0317 | combining acute accent below |
| U+00B8 | cedilla | below | U+0327 | combining cedilla |
| U+02C6 | modifier letter circumflex accent | above | U+0302 | combining circumflex accent |
| U+02C7 | caron | above | U+030C | combining caron |
| U+02C7 | caron | below | U+032C | combining caron below |
| U+02D8 | breve | above | U+0306 | combining breve |
| U+02D8 | breve | below | U+032E | combining breve below |
| U+02D9 | dot above | above | U+0307 | combining dot above |
| U+02D9 | dot above | below | U+0323 | combining dot below |
| U+02DB | ogonek | below | U+0328 | combining ogonek |
| U+02DC | small tilde | above | U+0303 | combining tilde |
| U+02DC | small tilde | below | U+0330 | combining tilde below |
| U+02DD | double acute accent | above | U+030B | combining double acute accent |
| U+203E | overline | above | U+0305 | combining overline |
| U+2190 | leftwards arrow | above | U+20D6 | |
| U+2192 | rightwards arrow | above | U+20D7 | combining right arrow above |
| U+2192 | rightwards arrow | above | U+20EF | combining right arrow below |
| U+2212 | minus sign | above | U+0305 | combining overline |
| U+2212 | minus sign | below | U+0332 | combining low line |
| U+27F6 | long rightwards arrow | above | U+20D7 | combining right arrow above |
| U+27F6 | long rightwards arrow | above | U+20EF | combining right arrow below |
| Combining | Style | Non Combining | ||
|---|---|---|---|---|
| U+0300 | combining grave accent | above | U+0060 | grave accent |
| U+0301 | combining acute accent | above | U+00B4 | acute accent |
| U+0302 | combining circumflex accent | above | U+005E | circumflex accent |
| U+0302 | combining circumflex accent | above | U+02C6 | modifier letter circumflex accent |
| U+0303 | combining tilde | above | U+007E | tilde |
| U+0303 | combining tilde | above | U+02DC | small tilde |
| U+0304 | combining macron | above | U+00AF | macron |
| U+0305 | combining overline | above | U+002D | hyphen-minus |
| U+0305 | combining overline | above | U+00AF | macron |
| U+0305 | combining overline | above | U+203E | overline |
| U+0305 | combining overline | above | U+2212 | minus sign |
| U+0306 | combining breve | above | U+02D8 | breve |
| U+0307 | combining dot above | above | U+02E | |
| U+0307 | combining dot above | above | U+002E | full stop |
| U+0307 | combining dot above | above | U+02D9 | dot above |
| U+0308 | combining diaeresis | above | U+00A8 | diaeresis |
| U+030B | combining double acute accent | above | U+02DD | double acute accent |
| U+030C | combining caron | above | U+02C7 | caron |
| U+0312 | combining turned comma above | above | U+0B8 | |
| U+0316 | combining grave accent below | below | U+0060 | grave accent |
| U+0317 | combining acute accent below | below | U+00B4 | acute accent |
| U+031F | combining plus sign below | below | U+002B | plus sign |
| U+0320 | combining minus sign below | below | U+002D | hyphen-minus |
| U+0323 | combining dot below | below | U+002E | full stop |
| U+0323 | combining dot below | below | U+02D9 | dot above |
| U+0324 | combining diaeresis below | below | U+00A8 | diaeresis |
| U+0327 | combining cedilla | below | U+00B8 | cedilla |
| U+0328 | combining ogonek | below | U+02DB | ogonek |
| U+032C | combining caron below | below | U+02C7 | caron |
| U+032D | combining circumflex accent below | below | U+005E | circumflex accent |
| U+032E | combining breve below | below | U+02D8 | breve |
| U+0330 | combining tilde below | below | U+007E | tilde |
| U+0330 | combining tilde below | below | U+02DC | small tilde |
| U+0332 | combining low line | below | U+002D | hyphen-minus |
| U+0332 | combining low line | below | U+005F | low line |
| U+0332 | combining low line | below | U+2212 | minus sign |
| U+0338 | combining long solidus overlay | over | U+02F | |
| U+20D7 | combining right arrow above | above | U+2192 | rightwards arrow |
| U+20D7 | combining right arrow above | above | U+27F6 | long rightwards arrow |
| U+20EF | combining right arrow below | above | U+2192 | rightwards arrow |
| U+20EF | combining right arrow below | above | U+27F6 | long rightwards arrow |
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:
MathVariants.horizGlyphConstructionOffsets[] item; if it is vertical it corresponds to aMathVariants.vertGlyphConstructionOffsets[] item.MathGlyphConstruction.mathGlyphVariantRecord is always empty.MathVariants.minConnectorOverlap,GlyphPartRecord.startConnectorLength andGlyphPartRecord.endConnectorLength are treated as 0.MathGlyphConstruction.GlyphAssembly.partRecords is built from each table row as follows:| Base Character | Glyph Construction | Extender Character | Bottom/Left Character | Middle Character | Top/Right Character |
|---|---|---|---|---|---|
| U+0028 ( | Vertical | U+239C ⎜ | U+239D ⎝ | N/A | U+239B ⎛ |
| U+0029 ) | Vertical | U+239F ⎟ | U+23A0 ⎠ | N/A | U+239E ⎞ |
| U+003D = | Horizontal | U+003D = | U+003D = | N/A | N/A |
| U+005B [ | Vertical | U+23A2 ⎢ | U+23A3 ⎣ | N/A | U+23A1 ⎡ |
| U+005D ] | Vertical | U+23A5 ⎥ | U+23A6 ⎦ | N/A | U+23A4 ⎤ |
| U+005F _ | Horizontal | U+005F _ | U+005F _ | N/A | N/A |
| U+007B { | Vertical | U+23AA ⎪ | U+23A9 ⎩ | U+23A8 ⎨ | U+23A7 ⎧ |
| U+007C | | Vertical | U+007C | | U+007C | | N/A | N/A |
| U+007D } | Vertical | U+23AA ⎪ | U+23AD ⎭ | U+23AC ⎬ | U+23AB ⎫ |
| U+00AF ¯ | Horizontal | U+00AF ¯ | U+00AF ¯ | N/A | N/A |
| U+2016 ‖ | Vertical | U+2016 ‖ | U+2016 ‖ | N/A | N/A |
| U+203E ‾ | Horizontal | U+203E ‾ | U+203E ‾ | N/A | N/A |
| U+2190 ← | Horizontal | U+23AF ⎯ | U+2190 ← | N/A | U+23AF ⎯ |
| U+2191 ↑ | Vertical | U+23D0 ⏐ | U+23D0 ⏐ | N/A | U+2191 ↑ |
| U+2192 → | Horizontal | U+23AF ⎯ | U+23AF ⎯ | N/A | U+2192 → |
| U+2193 ↓ | Vertical | U+23D0 ⏐ | U+2193 ↓ | N/A | U+23D0 ⏐ |
| U+2194 ↔ | Horizontal | U+23AF ⎯ | U+2190 ← | N/A | U+2192 → |
| U+2195 ↕ | Vertical | U+23D0 ⏐ | U+2193 ↓ | N/A | U+2191 ↑ |
| U+21A4 ↤ | Horizontal | U+23AF ⎯ | U+2190 ← | N/A | U+22A3 ⊣ |
| U+21A6 ↦ | Horizontal | U+23AF ⎯ | U+22A2 ⊢ | N/A | U+2192 → |
| U+21BC ↼ | Horizontal | U+23AF ⎯ | U+21BC ↼ | N/A | U+23AF ⎯ |
| U+21BD ↽ | Horizontal | U+23AF ⎯ | U+21BD ↽ | N/A | U+23AF ⎯ |
| U+21C0 ⇀ | Horizontal | U+23AF ⎯ | U+23AF ⎯ | N/A | U+21C0 ⇀ |
| U+21C1 ⇁ | Horizontal | U+23AF ⎯ | U+23AF ⎯ | N/A | U+21C1 ⇁ |
| U+2223 ∣ | Vertical | U+2223 ∣ | U+2223 ∣ | N/A | N/A |
| U+2225 ∥ | Vertical | U+2225 ∥ | U+2225 ∥ | N/A | N/A |
| U+2308 ⌈ | Vertical | U+23A2 ⎢ | U+23A2 ⎢ | N/A | U+23A1 ⎡ |
| U+2309 ⌉ | Vertical | U+23A5 ⎥ | U+23A5 ⎥ | N/A | U+23A4 ⎤ |
| U+230A ⌊ | Vertical | U+23A2 ⎢ | U+23A3 ⎣ | N/A | N/A |
| U+230B ⌋ | Vertical | U+23A5 ⎥ | U+23A6 ⎦ | N/A | N/A |
| U+23B0 ⎰ | Vertical | U+23AA ⎪ | U+23AD ⎭ | N/A | U+23A7 ⎧ |
| U+23B1 ⎱ | Vertical | U+23AA ⎪ | U+23A9 ⎩ | N/A | U+23AB ⎫ |
| U+27F5 ⟵ | Horizontal | U+23AF ⎯ | U+2190 ← | N/A | U+23AF ⎯ |
| U+27F6 ⟶ | Horizontal | U+23AF ⎯ | U+23AF ⎯ | N/A | U+2192 → |
| U+27F7 ⟷ | Horizontal | U+23AF ⎯ | U+2190 ← | N/A | U+2192 → |
| U+294E ⥎ | Horizontal | U+23AF ⎯ | U+21BC ↼ | N/A | U+21C0 ⇀ |
| U+2950 ⥐ | Horizontal | U+23AF ⎯ | U+21BD ↽ | N/A | U+21C1 ⇁ |
| U+295A ⥚ | Horizontal | U+23AF ⎯ | U+21BC ↼ | N/A | U+22A3 ⊣ |
| U+295B ⥛ | Horizontal | U+23AF ⎯ | U+22A2 ⊢ | N/A | U+21C0 ⇀ |
| U+295E ⥞ | Horizontal | U+23AF ⎯ | U+21BD ↽ | N/A | U+22A3 ⊣ |
| U+295F ⥟ | Horizontal | U+23AF ⎯ | U+22A2 ⊢ | N/A | U+21C1 ⇁ |
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.
salt 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.
| Original | italic | Δcode point |
|---|---|---|
| A U+0041 | 𝐴 U+1D434 | 1D3F3 |
| B U+0042 | 𝐵 U+1D435 | 1D3F3 |
| C U+0043 | 𝐶 U+1D436 | 1D3F3 |
| D U+0044 | 𝐷 U+1D437 | 1D3F3 |
| E U+0045 | 𝐸 U+1D438 | 1D3F3 |
| F U+0046 | 𝐹 U+1D439 | 1D3F3 |
| G U+0047 | 𝐺 U+1D43A | 1D3F3 |
| H U+0048 | 𝐻 U+1D43B | 1D3F3 |
| I U+0049 | 𝐼 U+1D43C | 1D3F3 |
| J U+004A | 𝐽 U+1D43D | 1D3F3 |
| K U+004B | 𝐾 U+1D43E | 1D3F3 |
| L U+004C | 𝐿 U+1D43F | 1D3F3 |
| M U+004D | 𝑀 U+1D440 | 1D3F3 |
| N U+004E | 𝑁 U+1D441 | 1D3F3 |
| O U+004F | 𝑂 U+1D442 | 1D3F3 |
| P U+0050 | 𝑃 U+1D443 | 1D3F3 |
| Q U+0051 | 𝑄 U+1D444 | 1D3F3 |
| R U+0052 | 𝑅 U+1D445 | 1D3F3 |
| S U+0053 | 𝑆 U+1D446 | 1D3F3 |
| T U+0054 | 𝑇 U+1D447 | 1D3F3 |
| U U+0055 | 𝑈 U+1D448 | 1D3F3 |
| V U+0056 | 𝑉 U+1D449 | 1D3F3 |
| W U+0057 | 𝑊 U+1D44A | 1D3F3 |
| X U+0058 | 𝑋 U+1D44B | 1D3F3 |
| Y U+0059 | 𝑌 U+1D44C | 1D3F3 |
| Z U+005A | 𝑍 U+1D44D | 1D3F3 |
| a U+0061 | 𝑎 U+1D44E | 1D3ED |
| b U+0062 | 𝑏 U+1D44F | 1D3ED |
| c U+0063 | 𝑐 U+1D450 | 1D3ED |
| d U+0064 | 𝑑 U+1D451 | 1D3ED |
| e U+0065 | 𝑒 U+1D452 | 1D3ED |
| f U+0066 | 𝑓 U+1D453 | 1D3ED |
| g U+0067 | 𝑔 U+1D454 | 1D3ED |
| h U+0068 | ℎ U+0210E | 20A6 |
| i U+0069 | 𝑖 U+1D456 | 1D3ED |
| j U+006A | 𝑗 U+1D457 | 1D3ED |
| k U+006B | 𝑘 U+1D458 | 1D3ED |
| l U+006C | 𝑙 U+1D459 | 1D3ED |
| m U+006D | 𝑚 U+1D45A | 1D3ED |
| n U+006E | 𝑛 U+1D45B | 1D3ED |
| o U+006F | 𝑜 U+1D45C | 1D3ED |
| p U+0070 | 𝑝 U+1D45D | 1D3ED |
| q U+0071 | 𝑞 U+1D45E | 1D3ED |
| r U+0072 | 𝑟 U+1D45F | 1D3ED |
| s U+0073 | 𝑠 U+1D460 | 1D3ED |
| t U+0074 | 𝑡 U+1D461 | 1D3ED |
| u U+0075 | 𝑢 U+1D462 | 1D3ED |
| v U+0076 | 𝑣 U+1D463 | 1D3ED |
| w U+0077 | 𝑤 U+1D464 | 1D3ED |
| x U+0078 | 𝑥 U+1D465 | 1D3ED |
| y U+0079 | 𝑦 U+1D466 | 1D3ED |
| z U+007A | 𝑧 U+1D467 | 1D3ED |
| ı U+0131 | 𝚤 U+1D6A4 | 1D573 |
| ȷ U+0237 | 𝚥 U+1D6A5 | 1D46E |
| Α U+0391 | 𝛢 U+1D6E2 | 1D351 |
| Β U+0392 | 𝛣 U+1D6E3 | 1D351 |
| Γ U+0393 | 𝛤 U+1D6E4 | 1D351 |
| Δ U+0394 | 𝛥 U+1D6E5 | 1D351 |
| Ε U+0395 | 𝛦 U+1D6E6 | 1D351 |
| Ζ U+0396 | 𝛧 U+1D6E7 | 1D351 |
| Η U+0397 | 𝛨 U+1D6E8 | 1D351 |
| Θ U+0398 | 𝛩 U+1D6E9 | 1D351 |
| Ι U+0399 | 𝛪 U+1D6EA | 1D351 |
| Κ U+039A | 𝛫 U+1D6EB | 1D351 |
| Λ U+039B | 𝛬 U+1D6EC | 1D351 |
| Μ U+039C | 𝛭 U+1D6ED | 1D351 |
| Ν U+039D | 𝛮 U+1D6EE | 1D351 |
| Ξ U+039E | 𝛯 U+1D6EF | 1D351 |
| Ο U+039F | 𝛰 U+1D6F0 | 1D351 |
| Π U+03A0 | 𝛱 U+1D6F1 | 1D351 |
| Ρ U+03A1 | 𝛲 U+1D6F2 | 1D351 |
| ϴ U+03F4 | 𝛳 U+1D6F3 | 1D2FF |
| Σ U+03A3 | 𝛴 U+1D6F4 | 1D351 |
| Τ U+03A4 | 𝛵 U+1D6F5 | 1D351 |
| Υ U+03A5 | 𝛶 U+1D6F6 | 1D351 |
| Φ U+03A6 | 𝛷 U+1D6F7 | 1D351 |
| Χ U+03A7 | 𝛸 U+1D6F8 | 1D351 |
| Ψ U+03A8 | 𝛹 U+1D6F9 | 1D351 |
| Ω U+03A9 | 𝛺 U+1D6FA | 1D351 |
| ∇ U+2207 | 𝛻 U+1D6FB | 1B4F4 |
| α U+03B1 | 𝛼 U+1D6FC | 1D34B |
| β U+03B2 | 𝛽 U+1D6FD | 1D34B |
| γ U+03B3 | 𝛾 U+1D6FE | 1D34B |
| δ U+03B4 | 𝛿 U+1D6FF | 1D34B |
| ε U+03B5 | 𝜀 U+1D700 | 1D34B |
| ζ U+03B6 | 𝜁 U+1D701 | 1D34B |
| η U+03B7 | 𝜂 U+1D702 | 1D34B |
| θ U+03B8 | 𝜃 U+1D703 | 1D34B |
| ι U+03B9 | 𝜄 U+1D704 | 1D34B |
| κ U+03BA | 𝜅 U+1D705 | 1D34B |
| λ U+03BB | 𝜆 U+1D706 | 1D34B |
| μ U+03BC | 𝜇 U+1D707 | 1D34B |
| ν U+03BD | 𝜈 U+1D708 | 1D34B |
| ξ U+03BE | 𝜉 U+1D709 | 1D34B |
| ο U+03BF | 𝜊 U+1D70A | 1D34B |
| π U+03C0 | 𝜋 U+1D70B | 1D34B |
| ρ U+03C1 | 𝜌 U+1D70C | 1D34B |
| ς U+03C2 | 𝜍 U+1D70D | 1D34B |
| σ U+03C3 | 𝜎 U+1D70E | 1D34B |
| τ U+03C4 | 𝜏 U+1D70F | 1D34B |
| υ U+03C5 | 𝜐 U+1D710 | 1D34B |
| φ U+03C6 | 𝜑 U+1D711 | 1D34B |
| χ U+03C7 | 𝜒 U+1D712 | 1D34B |
| ψ U+03C8 | 𝜓 U+1D713 | 1D34B |
| ω U+03C9 | 𝜔 U+1D714 | 1D34B |
| ∂ U+2202 | 𝜕 U+1D715 | 1B513 |
| ϵ U+03F5 | 𝜖 U+1D716 | 1D321 |
| ϑ U+03D1 | 𝜗 U+1D717 | 1D346 |
| ϰ U+03F0 | 𝜘 U+1D718 | 1D328 |
| ϕ U+03D5 | 𝜙 U+1D719 | 1D344 |
| ϱ U+03F1 | 𝜚 U+1D71A | 1D329 |
| ϖ U+03D6 | 𝜛 U+1D71B | 1D345 |
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.
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.
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.
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.
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.. For more about links in MathML, seeE.Security Considerations.getImageData()
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>■</mtext><mtext><ahref="https://example.org/">■</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. on content embedded in a canvas context, or even justgetImageData()getBoundingClientRect()) 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.
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, 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.
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in: