W3C Candidate Recommendation Snapshot
Copyright © 2023 World Wide Web Consortium. W3C^{®} liability, trademark and permissive 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 current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at https://www.w3.org/TR/.
This document was published by the Math Working Group as a Candidate Recommendation Snapshot using the Recommendation track.
Publication as a Candidate Recommendation does not imply endorsement by W3C and its Members. A Candidate Recommendation Snapshot has received wide review, is intended to gather implementation experience, and has commitments from Working Group members to royaltyfree licensing for implementations.
This Candidate Recommendation is not expected to advance to Proposed Recommendation any earlier than 31 December 2022.
This document was produced by a group operating under the W3C Patent Policy. W3C maintains a public 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 which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
This document is governed by the 12 June 2023 W3C Process Document.
This section is nonnormative.
The [MATHML3] specification has several shortcomings that make it hard to implement consistently across web rendering engines or to extend with userdefined 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 [OPENFONTFORMAT], [OPENTYPEMATHILLUMINATED]. It also relies on modern browser implementations and web technologies [HTML] [SVG] [CSS2] [DOM], clarifying interactions with them when needed or introducing new lowlevel 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 are tracked on GitHub.
By increasing the level of implementation details, focusing on a workable subset, following a browserdriven 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 as shadow trees, custom elements or APIs from [HOUDINI].
The term MathML element refers to any element in the MathML namespace. The MathML elements defined in this specification are called the MathML Core elements and are listed below. Any MathML element that is not listed below is called an Unknown MathML element.
annotation
annotationxml
maction
math
merror
mfrac
mi
mmultiscripts
mn
mo
mover
mpadded
mphantom
mprescripts
mroot
mrow
ms
mspace
msqrt
mstyle
msub
msubsup
msup
mtable
mtd
mtext
mtr
munder
munderover
semantics
The grouping elements are
maction
,
math
,
merror
,
mphantom
,
mprescripts
,
mrow
,
mstyle
,
semantics
and unknown MathML elements.
The scripted elements are
mmultiscripts
,
mover
,
msub
,
msubsup
,
msup
,
munder
and
munderover
.
The radical elements are
mroot
and msqrt
.
The attributes defined in this specification have no namespace and are called MathML attributes:
maction
attributesmo
attributesmpadded
attributesmspace
attributesmunderover
attributesmtd
attributesencoding
display
linethickness
MathML specifies a single toplevel or root
math 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
in 2.1.3 Global Attributes as well as the
following attributes:
The
display
attribute, if present,
must be an
ASCII caseinsensitive
match
to block
or inline
.
The user agent stylesheet
described in A. User Agent Stylesheet
contains rules for this attribute that affect the
default values for the display
(block math
or inline math
)
and mathstyle
(normal
or compact
) properties.
If the display
attribute is absent or has an invalid value, the User Agent
stylesheet treats it the same as inline
.
This specification does not define any observable behavior that is specific to the alttext 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 computed
display
property equal to
block math
or inline math
then it is laid out according to the CSS specification where
the corresponding value is described.
Otherwise the layout algorithm of the
mrow
element is used to produce a
math content box. That math content box is used as the content for the layout of
the element, as described by CSS for display: block
(if the computed value is block math
) or
display: inline
(if the computed value is inline math
).
Additionally, if the computed
display
property is equal to
block math
then that math content box is rendered
horizontally centered within the content box.
$$...$$
and inline mode $...$
correspond to
display="block"
and display="inline"
respectively.
In the following example, a math
formula
is rendered in display mode on a new line and taking full width,
with the math content centered within the container:
<div style="width: 15em;">
This mathematical formula with a big summation and the number pi
<math display="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 the
mrow
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, the
user agent stylesheet
should set the
fontfamily
to the
math
value on the <math>
element instead of inheriting
it. Additionally, several CSS properties that can be set on
a parent container such as
fontstyle
, fontweight
,
direction
or textindent
etc
are not expected to apply to the math formula and so the
user agent stylesheet
has rules to reset them by default.
math {
direction: ltr;
textindent: 0;
letterspacing: normal;
lineheight: normal;
wordspacing: normal;
fontfamily: math;
fontsize: inherit;
fontstyle: normal;
fontweight: normal;
display: inline math;
mathshift: normal;
mathstyle: compact;
mathdepth: 0;
}
math[display="block" i] {
display: block math;
mathstyle: normal;
}
math[display="inline" i] {
display: inline math;
mathstyle: compact;
}
In addition to CSS data types, some MathML attributes rely on the following MathMLspecific types:
true
or
false
.
The following attributes are common to and may be specified on all MathML elements:
class
data*
dir
displaystyle
id
mathbackground
mathcolor
mathsize
nonce
scriptlevel
style
tabindex
on*
event handler attributes
The
id,
class,
style,
data*
,
nonce and
tabindex
attributes have the same syntax and semantics as defined for
id
,
class
,
style
,
data*,
nonce
and
tabindex
attributes on HTML elements.
The
dir
attribute, if present,
must be an
ASCII caseinsensitive match
to ltr
or rtl
.
In that case, the user agent is expected to treat the attribute as a
presentational hint setting the element's
direction
property to the corresponding value.
More precisely, an
ASCII caseinsensitive match
to rtl
is mapped to rtl
while
an ASCII caseinsensitive match to ltr
is mapped to ltr
.
rtl
in Arabic speaking world.
However, languages written from right to left often embed math
written from left to right and so the
user agent stylesheet resets
the
direction
property accordingly on the math
elements.
In the following example, the dir attribute is used to render "𞸎 plus 𞸑 raised to the power of (٢ over, 𞸟 plus ١)" from righttoleft.
<math dir="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 in event handler content attributes in HTML.
All event handler content attributes noted by HTML as being supported by all HTMLElements are supported by all MathML elements as well, as defined in the MathMLElement IDL.
The
mathcolor
and
mathbackground
attributes, if present, must
have a value that is a
<color>.
In that case, the user agent is expected to treat these attributes as a
presentational hint setting the element's
color and
backgroundcolor
properties to the corresponding values.
The mathcolor
attribute describes the foreground fill
color of MathML text, bars etc
while the mathbackground
attribute describes the background color of an element.
The
mathsize
attribute, if present, must
have a value that is a valid <lengthpercentage>.
In that case, the user agent is expected to treat the attribute as a
presentational hint setting the element's
fontsize
property to the corresponding value.
The mathsize
property indicates the desired height
of glyphs in math formulas but also scales other parts (spacing, shifts,
line thickness of bars etc) accordingly.
The
displaystyle
attribute, if present, must have a value that is a boolean.
In that case, the user agent is expected to treat the attribute as a
presentational hint setting the element's
mathstyle
property to the corresponding value.
More precisely, an
ASCII caseinsensitive match
to true
is mapped to normal
while
an ASCII caseinsensitive match to false
is mapped to compact
.
This attribute indicates whether formulas should try to minimize
the logical height (value is false
) or not
(value is true
) e.g. by changing the size of content or
the layout of scripts.
The
scriptlevel
attribute, if present, must have value
+<U>
, <U>
or <U>
where <U>
is an
unsignedinteger.
In that case
the user agent is expected to treat the scriptlevel
attribute as a
presentational hint setting the element's
mathdepth
property to the corresponding value.
More precisely,
+<U>
, <U>
and
<U>
are respectively mapped to
add(<U>)
add(<U>)
and <U>
.
displaystyle
and scriptlevel
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 in A. User Agent Stylesheet.
In particular, for all MathML elements a default
fontsize: math
is specified to ensure that
scriptlevel
changes are taken into account.
In this example, an munder
element is used to attach a
script "A" to a base "∑". By default, the summation
symbol is rendered with the fontsize inherited from its
parent and the A as a scaled down subscript.
If displaystyle is true, the summation symbol is drawn
bigger and the "A" becomes an underscript.
If scriptlevel is reset to 0 on the "A", then it will
use the same fontsize as the toplevel math
root.
<math>
<munder>
<mo>∑</mo>
<mi>A</mi>
</munder>
<munder displaystyle="true">
<mo>∑</mo>
<mi>A</mi>
</munder>
<munder>
<mo>∑</mo>
<mi scriptlevel="0">A</mi>
</munder>
</math>
\displaystyle
, \textstyle
,
\scriptstyle
, and \scriptscriptstyle
correspond
to displaystyle
and scriptlevel
as
true
and 0
,
false
and 0
,
false
and 1
,
and false
and 2, respectively.
The attributes intent and arg are reserved as valid attributes.
This specification does not define any observable behavior that is
specific to the intent
and arg
attributes.
When parsing HTML documents user agents must treat any tag name corresponding to a MathML Core Element as belonging to the MathML namespace.
Users agents must allow mixing HTML, SVG and MathML elements as allowed by sections HTML integration point, MathML integration point, tree construction dispatcher, MathML and SVG from [HTML].
When evaluating the SVG requiredExtensions
attribute, user agents must claim support for the language extension
identified by the
MathML 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.
HTML input
element is used within the
mtext
to include an interactive input field inside a mathematical
formula.
<svg style="fontsize: 20px" width="400px" height="220px" viewBox="0 0 200 110">
<g transform="translate(10,80)">
<path d="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>
<text transform="translate(10,20)">1</text>
<switch transform="translate(35,40)">
<foreignObject width="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><input onchange="..." size="2" type="text"></mtext>
<mo>−</mo>
<mn>1</mn>
</msqrt>
<mo>=</mo>
<mn>3</mn>
</math>
</p>
<math>
element can be used at
position permitted for
flow content
(e.g. a
<foreignObject>
element)
or phrasing content.
mi
,
mo
,
mn
,
ms
and
mtext
elements.
<svg>
element can be used inside
annotationxml
elements.
annotationxml
elements with
encoding
application/xhtml+xml
or text/html
.
User agents must support various CSS features mentioned in this specification, including new ones described in 4. CSS Extensions for Math Layout. They must follow the computation rule for display: contents.
In this example, the MathML formula inherits the CSS color of its
parent and uses the fontfamily
specified via the
style attribute.
<div style="width: 15em; color: blue">
This mathematical formula with a big summation and the number pi
<math display="block" style="fontfamily: 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 containing MathML Core elements must include
CSS rules described in A. User Agent Stylesheet
as part of useragent level style sheet defaults.
In particular, this adds !important
rules to force
writing mode
to horizontallr
on all MathML elements.
The float
property does
not create floating of elements whose parent's computed
display
value is
block math
or inline math
,
and does not take them outofflow.
The following CSS features are not supported and must be ignored:
whitespace
is treated as nowrap
on all MathML elements.
aligncontent
, justifycontent
,
alignself
, justifyself
have
no effects on MathML elements.
User agents supporting Web application APIs must ensure that they keep the visual rendering of MathML synchronized with the [DOM] tree, in particular perform necessary updates when MathML attributes are modified dynamically.
All the nodes representing MathML elements in the DOM
must implement, and expose to scripts, the following
MathMLElement
interface.
WebIDL[Exposed=Window]
interface MathMLElement
: Element { };
MathMLElement
includes GlobalEventHandlers;
MathMLElement
includes HTMLOrForeignElement
;
The GlobalEventHandlers
and
HTMLOrForeignElement
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>
function ModifyMath(mi) {
mi.style.color = 'blue';
mi.textContent = 'β';
}
</script>
<math>
<mrow>
<mfrac>
<mi style="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 [OPENFONTFORMAT] 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 to
Focus
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 focusrelated pseudoclasses as defined in Selectors Level 3 apply, as defined in that specification.
The contents of embedded math
elements
(including HTML elements inside token elements)
contribute to the sequential focus order of the containing owner HTML
document (combined sequential focus order).
The default display
property
is described in A. User Agent Stylesheet:
<math>
root,
it is equal to inline math
or block math
according to the value of the display
attribute.
mtable
,
mtr
,
mtd
it is respectively equal to
inlinetable
,
tablerow
and
tablecell
.
maction
and semantics
elements, it is equal to
none
.
block math
.
In order to specify math layout in different writing modes, this specification uses concepts from [CSSWRITINGMODES4]:
horizontallr
and ltr
.
See Figure 4,
Figure 5 and
Figure 6 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. The block size, first baseline set and last baseline set. The following baselines are defined for MathML boxes:
Given a MathML box, the following offsets are defined:
Here are examples of offsets obtained from linerelative metrics:
ltr
and
is the inline size of the box −
(lineleft offset + inline size of
the child box) otherwise.
horizontallr
,
verticalrl
or sidewaysrl
and is the linedescent otherwise.
Each MathML element has an associated math 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 the padding box are obtained from the content box by taking into account the corresponding padding properties as described in CSS.
The baselines of the padding box are the same as the one of the content box.
If the content box has a top accent attachment then the padding box has the same property, increased by the inlinestart padding. If the content box has an italic correction then the padding box has the same property, increased by the inlineend padding.
The box metrics and offsets of the border box are obtained from the padding box by taking into account the corresponding borderwidth property as described in CSS.
In general, the baselines of the border box are the same as the one of the padding box. However, if the lineover border is positive then the inkover baseline is set to the lineover edge of the border box and if the lineunder border is positive then the inkunder baseline is set to the lineunder edge of the border box.
If the padding box has a top accent attachment then the border box has the same property, increased by the borderwidth of its inlinestart egde. If the padding box has an italic correction then the border box has the same property, increased by the borderwidth of its inlineend egde.
The box metrics and offsets of the margin box are obtained from the border box by taking into account the corresponding margin properties as described in CSS.
The baselines of the margin box are the same as the one of the border box.
If the padding box has a top accent attachment then the margin box has the same property, increased by the inlinestart margin. If the padding box has an italic correction then the margin box has the same property, increased by the inlineend margin.
During box layout, optional inline stretch size constraint and block stretch size constraint parameters may be used on embellished operators. The former indicates a target size that a core operator stretched along the inline axis should cover. The latter indicates an ink lineascent and ink linedescent that a core operator stretched along the block axis should cover. Unless specified otherwise, these parameters are ignored during box layout and child boxes are laid out without any stretch size constraint.
An anonymous 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 nonanonymous box while noninherited properties have
their initial value.
An anonymous <mrow> box is
an anonymous box with display
equal to
block math
and which is laid out as
described in section 3.3.1.2 Layout of <mrow>
.
If a MathML element generates an anonymous <mrow> box if it wraps in children in an anonymous <mrow> box i.e. its subtree in the visual formatting model is made of an anonymous <mrow> box which itself contains the boxes associated to the children of this MathML element.
In the following example, the math
and
mrow
elements are laid out as described in section
3.3.1.2 Layout 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.
The mtd
element has
display: tablecell
and the
msqrt
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 section
3.3.1.2 Layout 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 elements
generates an anonymous <mrow> box.
<math>
<mrow>
<mo></mo>
<mtable>
<mtr>
<mtd>
<mi>x</mi>
</mtd>
<mtd>
<mo>(</mo>
<mfrac linethickness="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 style
display: block math
or display: inline math
generates a new stacking
context. The painting order
of inflow 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 for display: inline math
and right after
step 7.2 for display: 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.
The
mtext
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
in 2.1.3 Global 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 computed
display
property equal to
block math
or inline 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 without
forced line break
or
soft 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, the mtext
element is laid out as a
block box
and corresponding mincontent inline size,
maxcontent inline size,
inline size, block size,
first baseline set and last baseline set are
used for the math content box.
The mi 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
in 2.1.3 Global Attributes as well as the following attribute:
The layout algorithm is the same as the mtext
element. The
user agent stylesheet
must contain the following property in order to implement automatic
italic via the texttransform value introduced in 4.2 New texttransform
value:
mi {
texttransform: mathauto;
}
The
mathvariant
attribute,
if present, must be an
ASCII caseinsensitive
match of normal
.
In that case, the user agent is expected to treat the attribute as a
presentational hint setting the element's
texttransform
property to none
. Otherwise it has no effects.
In [MathML3], the mathvariant
attribute was used
to define logical classes of token elements, each class providing
a collection of typographicallyrelated symbolic tokens with
specific meaning within a given mathematical expression.
In MathML Core, this attribute is only used to cancel automatic
italic of the mi
element. For other use cases, the proper
Mathematical Alphanumeric Symbols [UNICODE] should be used
instead. See also section C. Mathematical Alphanumeric Symbols.
In the following example, mi
is used to render
variables and function names. Note that identifiers containing a
single letter are italic by default.
<math>
<mi>cos</mi>
<mo>,</mo>
<mi>c</mi>
<mo>,</mo>
<mi mathvariant="normal">c</mi>
</math>
The mn 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
in 2.1.3 Global Attributes. Its layout algorithm is
the same as the
mtext
element.
In the following example, mn
is used to
write a decimal number.
<math>
<mn>3.141592653589793</mn>
</math>
The
mo
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
in 2.1.3 Global Attributes as well as the following
attributes:
This specification does not define any observable behavior that is specific to the fence and separator attributes.
fence
and separator
to describe specific semantics of operators.
The default values may be determined from the
Operators_fence
and Operators_separator
tables, or equivalently
the humanreadable version
of the operator dictionary.
In the following example, the mo
element
is used for the binary operator +. Default spacing is symmetric
around that operator. A tigher spacing is used if you rely
on the form
attribute to force it to be
treated as a prefix operator.
Spacing can also be specified explicitly using the
lspace
and
rspace
attributes.
<math>
<mn>1</mn>
<mo>+</mo>
<mn>2</mn>
<mo form="prefix">+</mo>
<mn>3</mn>
<mo lspace="2em">+</mo>
<mn>4</mn>
<mo rspace="3em">+</mo>
<mn>5</mn>
</math>
Another use case is for big operators such as summation.
When displaystyle is true, such an operator is drawn
larger but one can change that with the largeop
attribute.
When displaystyle is false, underscripts are actually
rendered as subscripts but one can change that with the
movablelimits
attribute.
<math>
<mrow displaystyle="true">
<munder>
<mo>∑</mo>
<mn>5</mn>
</munder>
<munder>
<mo largeop="false">∑</mo>
<mn>6</mn>
</munder>
</mrow>
<mrow>
<munder>
<mo>∑</mo>
<mn>5</mn>
</munder>
<munder>
<mo movablelimits="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 the mspace
element.
One can override default stretch behavior with the
stretchy
attribute e.g. to force an unstretched arrow.
The symmetric
attribute allows to indicate whether
the operator
should stretch symmetrically above and below the math axis
(fraction bar).
Finally the minsize
and maxsize
attributes add
additional constraints over the stretch size.
<math>
<mfrac>
<mspace height="50px" depth="50px" width="10px" style="background: blue"/>
<mspace height="25px" depth="25px" width="10px" style="background: green"/>
</mfrac>
<mo>↑</mo>
<mo stretchy="false">↑</mo>
<mo symmetric="true">↑</mo>
<mo minsize="250px">↑</mo>
<mo maxsize="50px">↑</mo>
</math>
Note that the default properties of operators are dictionarybased, as explained in 3.2.4.2 Dictionarybased attributes. For example a binary operator typically has default symmetric spacing around it while a fence is generally stretchy by default.
A MathML Core element is an embellished operator if it is:
mo
element;mfrac
,
whose first inflow child exists and is an
embellished operator;
mpadded
,
whose inflow children consist (in any order) of one
embellished operator and zero or more
spacelike elements.
The core operator of an embellished operator
is the <mo>
element defined recursively as
follows:
mo
element; is the element itself.mfrac
element is the core operator of its first inflow child.
mpadded
is the core operator of its unique embellished operator
inflow child.
The stretch axis of an embellished operator
is inline if its
core operator contains only text content
made of a single character c
, and that character has
inline intrinsic stretch axis.
Otherwise, the stretch axis of the embellished operator
is block.
The same definitions apply for boxes in the visual formatting model where an anonymous <mrow> box is treated as a grouping element.
The form
property of an embellished operator is either
infix
, prefix
or
postfix
.
The corresponding form attribute on the
mo
element, if present, must be an
ASCII caseinsensitive
match to one of these values.
The algorithm for determining the form
of an embellished operator is as follows:
form
attribute is present and valid
on the core operator, then its
ASCII lowercased value
is used.
mpadded
or
msqrt
with more than one inflow child
(ignoring all spacelike children) then it has
form prefix
.
mpadded
or
msqrt
with more than one inflow child
(ignoring all spacelike children) then it has
form postfix
.
postfix
.
infix
.
The
stretchy
,
symmetric
,
largeop
,
movablelimits
properties of an embellished operator are
either false
or true
. In the latter
case, it
is said that the embellished operator has the
property.
The corresponding stretchy, symmetric, largeop, movablelimits attributes on the
mo
element, if present, must be a
boolean.
The
lspace
,
rspace
,
minsize
properties of an embellished operator are
<lengthpercentage>.
The maxsize
property
of an embellished operator is either a
<lengthpercentage> or ∞.
The
lspace,
rspace,
minsize and
maxsize attributes on the
mo
element, if present,
must be a <lengthpercentage>.
The algorithm for determining the properties of an embellished operator is as follows:
stretchy
,
symmetric
,
largeop
,
movablelimits
,
lspace
,
rspace
,
maxsize
or
minsize
attribute is present and valid
on the core operator, then the
ASCII lowercased value
of this property is used.form
of an embellished operator.Content
, then set Category
to the result of the
algorithm to determine the category of an operator
(Content, Form)
where Form
is the form
calculated at the previous step.
Category
is Default
and
the form
of embellished operator was not explicitly specified
as an attribute on its core operator:
Category
to the result of the
algorithm to determine the category of an operator
(Content, Form)
where Form
is
infix
.Category
is Default
, then
run the algorithm again with Form
set to
postfix
.Category
is Default
, then
run the algorithm again with Form
set to
prefix
.Category
.
When used during layout,
the values of stretchy
,
symmetric
,
largeop
,
movablelimits
,
lspace
,
rspace
,
minsize
are
obtained by the
algorithm 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
and maxsize
are described in
3.2.4.3 Layout of operators.
lspace
, rspace
,
minsize
and maxsize
rely on the
font style of the core operator, not the one of the
embellished operator.
If the <mo>
element does not have its computed
display
property equal to
block math
or inline 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 the
visibility of
the <mo>
element is visible
.
In that case, it must be painted with the
color
of the <mo>
element.
Operators are laid out as follows:
<mo>
element is not
made
of a single character c
then fall back to the
layout algorithm of 3.2.1.1 Layout of <mtext>
.
stretchy
property:
c
in the inline direction
with the
first available font
then fall back to the
layout algorithm of 3.2.1.1 Layout of <mtext>
.
<mtext>
.
T_{inline}
then
fall back to the
layout algorithm of 3.2.1.1 Layout of <mtext>
.
T_{inline}
.
T_{inline}
and
at position determined by the previous box metrics.
c
in the block direction
with the
first available font
then fall back to the
layout algorithm of 3.2.1.1 Layout of <mtext>
.
(U_{ascent}, U_{descent})
then
fall back to the
layout algorithm of 3.2.1.1 Layout of <mtext>
.
symmetric
property
then set the target sizes
T_{ascent}
and
T_{descent}
to
S_{ascent}
and
S_{descent}
respectively:
S_{ascent}
=
max(
U_{ascent}
− AxisHeight,
U_{descent}
+ AxisHeight
) + AxisHeight
S_{descent}
=
max(
U_{ascent}
− AxisHeight,
U_{descent}
+ AxisHeight
) − AxisHeight
U_{ascent}
and
U_{descent}
respectively.
minsize
and maxsize
be the minsize
and maxsize
properties on the
operator. Percentage values are interpreted relative
to T
=
T_{ascent}
+
T_{descent}
.
If minsize
< 0 then set minsize
to 0.
If maxsize
< minsize
then
set maxsize
to minsize
.
With 0 ≤ minsize
≤ maxsize
:
T
≤ 0 then set
T_{ascent}
to minsize
/ 2 and
then set T_{descent}
to minsize
−
T_{ascent}
.
T
< minsize
then first
multiply
T_{ascent}
by minsize
/ T
and then set T_{descent}
to minsize

T_{ascent}
.
maxsize
< T
then first multiply
T_{ascent}
by
maxsize
/ T
and
then set T_{descent}
to maxsize
−
T_{ascent}
.
T_{ascent}
+
T_{descent}
.
The inline size of the math content is the width of
the stretchy glyph. The stretchy glyph is shifted
towards the lineunder 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) − (T_{ascent}
− T_{descent}
)] / 2.
T_{ascent}
+
T_{descent}
and at position determined by the previous box metrics
shifted by Δ towards the lineover.
largeop
property and
if mathstyle
on
the <mo>
element is normal
,
then:
Use the
MathVariants
table to try and find a glyph of height at least
DisplayOperatorMinHeight.
If none is found, fall back to the
largest nonbase glyph. If none is found, fall back to
the layout algorithm of 3.2.1.1 Layout of <mtext>
.
<mtext>
.
If the algorithm to shape a stretchy glyph has been used for one of the step above, then the italic correction of the math content is set to the value returned by that algorithm.
maxsize
is equal to its default value ∞
then minsize ≤ maxsize
is satisfied but
maxsize < T
is not.
The mspace empty element represents a blank space of any desired size, as set by its attributes.
The <mspace>
element accepts the attributes described
in 2.1.3 Global Attributes as well as the following
attributes:
The width, height, depth, if present, must have a value that is a valid <lengthpercentage>.
width
attribute is present, valid and not a percentage then
that attribute is used as a
presentational hint
setting the element's
width
property to the corresponding value.
height
attribute is absent, invalid or a percentage then the requested
lineascent is 0
.
Otherwise the requested lineascent is the resolved
value of the height
attribute, clamping
negative values to 0
.
height
and depth
attributes
are present, valid and not a percentage then they are used as a
presentational hint
setting the element's
height
property to the concatenation of the strings
"calc(
", the height
attribute value,
" +
", the depth
attribute value,
and ")
".
If only one of these attributes is
present, valid and not a percentage then it is treated as a
presentational hint
setting the element's
height
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>
<mspace width="1em"
style="bordertop: 1px solid blue"/>
<mfrac>
<mrow>
<mn>2</mn>
<mspace depth="1em"
style="borderleft: 1px solid blue"/>
</mrow>
<mrow>
<mn>3</mn>
<mspace height="2em"
style="borderleft: 1px solid blue"/>
</mrow>
</mfrac>
</math>
If the <mspace>
element does not have its
computed
display
property equal to
block math
or inline 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 on
Figure 9.
The mincontent inline size,
maxcontent inline size and inline size of the math
content are equal to the resolved value of the
width property.
The block size of the math content is equal to the resolved
value of the height property.
The lineascent of the math content is equal to the
requested lineascent determined above.
A number of MathML presentation elements are "spacelike" 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.
A MathML Core element is a spacelike element if it is:
mtext
or
mspace
;
mpadded
all of whose inflow children are spacelike.
The same definitions apply for boxes in the visual formatting model where an anonymous <mrow> box is treated as a grouping element.
mphantom
is not
automatically defined to be spacelike, unless its content is
spacelike. This is because operator spacing is affected by
whether adjacent elements are spacelike.
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
in 2.1.3 Global Attributes. Its layout algorithm is
the same as the mtext
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
and
rquote
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 lefttoright 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.
The
mrow
element is used to group together any number of subexpressions, 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
of mfrac
) and to construct a fenced expression
(first child of msup
) that is raised to the power of 5.
Note that mrow
alone does not add visual fences
around its grouped content, one has to explicitly specify them
using the mo
element.
Within the mrow
elements, one can see that
vertical alignment of children (according to the
alphabetic baseline or the mathematical 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
in 2.1.3 Global Attributes. An <mrow>
element with inflow children
child_{1}, child_{2}, …, child_{N}
is laid out as shown on Figure 10. The child boxes
are put in a row one after the other with all their
alphabetic baselines
aligned.
The algorithm for stretching operators along the block axis consists in the following steps:
L_{ToStretch}
containing
embellished operators with
a stretchy
property and block stretch axis;
and a second list L_{NotToStretch}
.
L_{NotToStretch}
.
If L_{ToStretch}
is empty then stop.
If L_{NotToStretch}
is empty, perform
layout with stretch size constraint 0 on
all the items of L_{ToStretch}
.
U_{ascent}
and U_{descent}
as respectively the maximum
ink ascent and maximum ink descent of the margin boxes of
inflow children that
have been laid out in the previous step.
L_{ToStretch}
with
block stretch size constraint
(U_{ascent}, U_{descent})
.
If the box is not an anonymous <mrow> box
and the associated element does not have its computed
display
property equal to
block math
or inline 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 is slanted if it is not an embellished operator and has nonzero italic correction.
lspace
and
rspace
.
The mincontent inline size (respectively maxcontent inline size) are calculated using the following algorithm:
addspace
to true if
the box corresponds to a math
element
or is not an
embellished operator; and to false otherwise.
inlineoffset
to 0.previousitaliccorrection
to 0.inlineoffset
by
previousitaliccorrection
.
addspace
is true then
increment inlineoffset
by
its lspace
property.
inlineoffset
by
the mincontent inline size
(respectively maxcontent inline size) of
the child's margin box.
previousitaliccorrection
to
its italic correction. Otherwise set it to 0.
addspace
is true then
increment inlineoffset
by
its rspace
property.
inlineoffset
by
previousitaliccorrection
.
inlineoffset
.
The inflow children are laid out using the algorithm for stretching operators along the block axis.
The inline size of the math content is calculated like the mincontent inline size and maxcontent inline size of the math content, using the inline size of the inflow children's margin boxes instead.
The ink lineascent (respectively lineascent) of the math content is the maximum of the ink lineascents (respectively lineascents) of all the inflow children's margin boxes. Similarly, the ink linedescent (respectively linedescent) of the math content is the maximum of the ink linedescents (respectively ink lineascents) of all the inflow children's margin boxes.
The inflow children are positioned using the following algorithm:
addspace
to true if
the box corresponds to a math
element
or is not an
embellished operator; and to false otherwise.
inlineoffset
to 0.previousitaliccorrection
to 0.inlineoffset
by
previousitaliccorrection
.
addspace
is true then
increment inlineoffset
by
its lspace
property.
inlineoffset
and its block offset such
that the alphabetic baseline of the child is aligned with the alphabetic baseline.
inlineoffset
by
the inline size of the child's margin box.
previousitaliccorrection
to
its italic correction. Otherwise set it to 0.
addspace
is true then
increment inlineoffset
by
its rspace
property.
The italic correction of the math content is set to the italic
correction of the last inflow child, which is
the final value of previousitaliccorrection
.
The mfrac element is used for fractions. It can also be used to mark up fractionlike objects such as binomial coefficients and Legendre symbols.
If the <mfrac>
element does not have its computed
display
property equal to block math
or inline 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
in 2.1.3 Global Attributes as well as the
following attribute:
The linethickness attribute indicates the fraction line thickness to use for the fraction bar. If present, it must have a value that is a valid <lengthpercentage>. 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 different linethickness
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 in displaystyle
use smaller gaps and fontsize.
<math>
<mn>0</mn>
<mo>+</mo>
<mfrac displaystyle="true">
<mn>1</mn>
<mn>2</mn>
</mfrac>
<mo>−</mo>
<mfrac>
<mn>1</mn>
<mn>2</mn>
</mfrac>
<mo>+</mo>
<mfrac linethickness="200%">
<mn>1</mn>
<mn>234</mn>
</mfrac>
<mo>−</mo>
<mrow>
<mo>(</mo>
<mfrac linethickness="0">
<mn>123</mn>
<mn>4</mn>
</mfrac>
<mo>)</mo>
</mrow>
</math>
The <mfrac>
element sets
displaystyle
to false
,
or if it was already false
increments
scriptlevel
by 1, within its children.
It sets mathshift to
compact
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 1pixel space is added around the element.
The user agent stylesheet
must contain the following rules:
mfrac {
paddinginlinestart: 1px;
paddinginlineend: 1px;
}
mfrac > * {
mathdepth: autoadd;
mathstyle: compact;
}
mfrac > :nthchild(2) {
mathshift: compact;
}
If the <mfrac>
element
has less or more than two inflow children, its layout algorithm
is the same as the mrow
element.
Otherwise, the first inflow child is called
numerator, the second inflow child is called
denominator and the layout algorithm is explained below.
<mfrac>
element has two children
that are inflow. Hence the CSS rules basically perform
scriptlevel
, displaystyle
and mathshift
changes for the numerator and
denominator.
If the fraction line thickness is nonzero, the
<mfrac>
element is laid out as shown on Figure 12.
The fraction bar must only be painted if the
visibility of
the <mfrac>
element is visible
.
In that case, the fraction bar must be painted with the
color
of the <mfrac>
element.
The mincontent inline size (respectively maxcontent inline size) of content is the maximum between the mincontent inline size (respectively maxcontent inline size) of the numerator's margin box and the mincontent inline size (respectively maxcontent inline size) of the denominator's margin box.
If there is an inline stretch size constraint or a block stretch size constraint then the numerator is also laid out with the same stretch size constraint, otherwise it is laid out without any stretch size constraint. The denominator is always laid out without any stretch size constraint.
The inline size of the math content is the maximum between the inline size of the numerator's margin box and the inline size of the denominator's margin box.
NumeratorShift
is the maximum between:
compact
(respectively normal
).
compact
(respectively normal
) +
the ink linedescent of the numerator's margin box.
DenominatorShift
is the maximum between:
compact
(respectively normal
).
compact
(respectively normal
) +
the ink lineascent of the denominator's margin box −
the AxisHeight.
The lineascent of the math content is the maximum between:
Numerator Shift
+
the lineascent of the numerator's margin box.
Denominator Shift
+
the lineascent of the denominator's margin box
The linedescent of the math content is the maximum between:
Numerator Shift
+ the linedescent of the numerator's margin box.
Denominator Shift
+ the linedescent of the denominator's margin box.
The inline offset of the numerator (respectively denominator) is half the inline size of the math content − half the inline size of the numerator's margin box (respectively denominator's margin box).
The alphabetic baseline of the numerator (respectively denominator)
is shifted away from the alphabetic baseline by a distance of
NumeratorShift
(respectively
DenominatorShift
)
towards the lineover (respectively lineunder).
The math content box is placed within the content box so that their blockstart edges are aligned and the middles of these edges are at the same position.
The inline size of the fraction bar is the inline size of the content box and its inlinestart edge is the aligned with the one the content box. The center of the fraction bar is shifted away from the alphabetic baseline of the math content box by a distance of AxisHeight towards the lineover. Its block size is the fraction line thickness.
If the fraction line thickness is zero,
the <mfrac>
element is instead laid out as
shown on Figure 13.
The mincontent inline size, maxcontent inline size and inline size of the math content are calculated the same as in 3.3.2.1 Fraction with nonzero line thickness.
If there is an inline stretch size constraint or a block stretch size constraint then the numerator is also laid out with the same stretch size constraint and otherwise it is laid out without any stretch size constraint. The denominator is always laid out without any stretch size constraint.
If the mathstyle is compact
then
TopShift
and
BottomShift
are respectively
set to StackTopShiftUp and StackBottomShiftDown.
Otherwise mathstyle is normal
and
they are respectively set to StackTopDisplayStyleShiftUp
and StackBottomDisplayStyleShiftDown.
The Gap
is defined to be
(BottomShift
−
the ink lineascent of the denominator's margin box) +
(TopShift
−
the ink linedescent of the numerator's margin box).
If mathstyle is compact
then GapMin
is StackGapMin,
otherwise mathstyle is normal
and it is StackDisplayStyleGapMin.
If Δ = GapMin
− Gap
is positive then
TopShift
and BottomShift
are respectively increased by Δ/2 and Δ − Δ/2.
The lineascent of the math content is the maximum between:
TopShift
+
the lineascent of the numerator's margin box.
BottomShift
+ the lineascent of the denominator's margin box.
The linedescent of the math content is the maximum between:
TopShift
+ the linedescent of the numerator's margin box.
BottomShift
+ the linedescent of the denominator's margin box.
The inline offsets of the numerator and denominator are calculated the same as in 3.3.2.1 Fraction with nonzero line thickness.
The alphabetic baseline of the numerator (respectively denominator) is
shifted away from the alphabetic baseline by a distance of
TopShift
(respectively −
BottomShift
) towards the
lineover (respectively lineunder).
The math content box is placed within the content box so that their blockstart edges are aligned and the middles of these edges are at the same position.
The radical elements construct an expression with a root symbol √ with a line over the content. The msqrt element is used for square roots, while the mroot element is used to draw radicals with indices, e.g. a cube root.
The <msqrt>
and <mroot>
elements accept the attributes described
in 2.1.3 Global Attributes.
The following example contains a square root
written with msqrt
and a cube root written
with mroot
.
Note that msqrt
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 fontsize within the
mroot
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 sets mathshift to
compact
.
The <mroot>
element
increments scriptlevel
by 2, and sets displaystyle
to "false" in all
but its first child.
The user agent stylesheet
must contain the following rule in order to implement that behavior:
mroot > :not(:firstchild) {
mathdepth: add(2);
mathstyle: compact;
}
mroot, msqrt {
mathshift: compact;
}
If the <msqrt>
or <mroot>
element do not have their computed
display
property equal to block math
or inline 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 two
inflow children,
its layout algorithm
is the same as the mrow
element.
Otherwise, the first inflow child is called
mroot base and
the second inflow child is called
mroot index
and its layout algorithm is explained below.
<mroot>
element has two children
that are inflow. Hence the CSS rules basically perform
scriptlevel
and displaystyle
changes for the index.
The <msqrt>
element
generates an anonymous <mrow> box
called the msqrt base.
The radical symbol must only be painted if the
visibility of
the <msqrt>
or <mroot>
element is visible
.
In that case, the radical symbol must be painted with the
color
of that element.
The radical glyph is the glyph obtained for the character U+221A SQUARE ROOT.
The radical gap is given by
RadicalVerticalGap
if the mathstyle is compact
and
RadicalDisplayStyleVerticalGap
if the mathstyle is normal
.
The radical target size for the stretchy radical glyph is the sum of RadicalRuleThickness, radical gap and the ink height of the base.
The box metrics of the radical glyph and painting of the surd are given by the algorithm to shape a stretchy glyph to block dimension the target size for the radical glyph.
The <msqrt>
element is laid out as shown on
Figure 14.
The mincontent inline size (respectively maxcontent inline size) of the math content is the sum of the preferred inline size of a glyph stretched along the block axis for the radical glyph and of the mincontent inline size (respectively maxcontent inline size) of the msqrt base's margin box.
The inline size of the math content is the sum of the advance width of the box metrics of the radical glyph and of the inline size of the msqrt base's margin's box.
The lineascent of the math content is the maximum between:
The linedescent of the math content is the maximum between:
The inline size of the overbar is the inline size of the msqrt base's margin's box. The inline offsets of the msqrt base and overbar are also the same and equal to the width of the box metrics of the radical glyph.
The alphabetic baseline of the msqrt base is aligned with the alphabetic baseline. The block size of the overbar is RadicalRuleThickness. Its vertical center is shifted away from the alphabetic baseline by a distance towards the lineover equal to the lineascent of the math content, minus the RadicalExtraAscender, minus half the RadicalRuleThickness.
Finally, the painting of the surd is performed:
The <mroot>
element is laid out as shown on
Figure 15.
The mroot index is first ignored and the mroot base
and
radical glyph are laid out as
shown on figure Figure 14
using the same algorithm as in
3.3.3.2 Square root
in order to produce a margin box B (represented in green).
The mincontent inline size (respectively maxcontent inline size) of the math content is the sum of max(0, RadicalKernBeforeDegree), the mroot index's mincontent inline size (respectively maxcontent inline size) of the mroot index's margin box, max(−mincontent inline size, RadicalKernAfterDegree) (respectively max(−maxcontent inline size, RadicalKernAfterDegree)) and of the mincontent inline size (respectively maxcontent inline size) of B.
Using the same clamping, AdjustedRadicalKernBeforeDegree and AdjustedRadicalKernAfterDegree are respectively defined as max(0, RadicalKernBeforeDegree) and is max(−inline size of the index's margin box, RadicalKernAfterDegree).
The inline size of the math content is the sum of AdjustedRadicalKernBeforeDegree, the inline size of the index's margin box, AdjustedRadicalKernAfterDegree and of the inline size of B.
The lineascent of the math content is the maximum between:
The linedescent of the math content is the maximum between:
The inline offset of the index is AdjustedRadicalKernBeforeDegree. The inlineoffset of the mroot base is the same + the inline size of the index's margin box.
The alphabetic baseline of B is aligned with the alphabetic baseline. The alphabetic baseline of the index is shifted away from the lineunder edge by a distance of RadicalDegreeBottomRaisePercent × the block size of B + the linedescent of the index's margin box.
Historically, the mstyle element was introduced to make style changes that affect the rendering of its contents.
The <mstyle>
element accepts the attributes described in
2.1.3 Global Attributes. Its layout algorithm is the
same as the mrow
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 the scriptlevel
and displaystyle.
Observe this is respectively affecting the
fontsize and placement of subscripts of their
descendants. In MathML Core, one could just have used
mrow
elements instead.
<math>
<munder>
<mo movablelimits="true">*</mo>
<mi>A</mi>
</munder>
<mstyle scriptlevel="1">
<mstyle displaystyle="true">
<munder>
<mo movablelimits="true">*</mo>
<mi>B</mi>
</munder>
<munder>
<mo movablelimits="true">*</mo>
<mi>C</mi>
</munder>
</mstyle>
<munder>
<mo movablelimits="true">*</mo>
<mi>D</mi>
</munder>
</mstyle>
</math>
The merror 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 LaTeXlike input:
<math>
<mfrac>
<merror>
<mtext>Syntax error: \frac{1}</mtext>
</merror>
<mn>3</mn>
</mfrac>
</math>
The <merror>
element accepts the attributes described in
2.1.3 Global Attributes. Its layout algorithm is the
same as the mrow
element.
The user agent stylesheet
must contain the following rule in order to visually highlight the error
message:
merror {
border: 1px solid red;
backgroundcolor: lightYellow;
}
The
mpadded
element renders the same as its inflow 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
in 2.1.3 Global Attributes as well as the following
attributes:
The width, height, depth, lspace and voffset if present, must have a value that is a valid <lengthpercentage>.
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 an mrow
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>
<mpadded style="background: lightblue;">
<mfrac>
<mn>23456</mn>
<mn>78</mn>
</mfrac>
</mpadded>
<mn>9</mn>
</mrow>
<mo>+</mo>
<mrow>
<mn>1</mn>
<mpadded lspace="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>
The mpadded
element
generates an anonymous <mrow> box called the
mpadded inner box with parameters called
inner inline size, inner lineascent and inner linedescent.
The requested <mpadded>
parameters are determined as follows:
width
attribute is present, valid and not a percentage then
that attribute is used as a
presentational hint
setting the element's
width
property to the corresponding value.
height
attribute is absent, invalid or a percentage then the requested
height is the inner lineascent.
Otherwise the requested height is the resolved
value of the height
attribute, clamping
negative values to 0
.
depth
attribute is absent, invalid or a percentage then the requested
depth is the inner lineascent.
Otherwise the requested depth is the resolved
value of the depth
attribute, clamping
negative values to 0
.
lspace
attribute is absent, invalid or a percentage then the requested
lspace is 0. Otherwise the requested lspace is the resolved
value of the lspace
attribute, clamping
negative values to 0
.
voffset
attribute is absent, invalid or a percentage then the requested
voffset is 0. Otherwise the requested voffset is the resolved
value of the voffset
attribute.
voffset
values are not clamped to
0
.
If the <mpadded>
element does not have its
computed
display
property equal to block math
or inline math
then it is laid out according to the CSS specification where
the corresponding value is described.
Otherwise, it is laid out as shown on
Figure 16.
The mincontent inline size (respectively maxcontent inline size) of the math content is the requested width calculated in 3.3.6.1 Inner box and requested parameters but using the mincontent inline size (respectively maxcontent inline size) of the mpadded inner box instead of the "inner inline size".
The inline size of the math content is the requested width calculated in 3.3.6.1 Inner box and requested parameters.
The lineascent of the math content is the requested height. The linedescent of the math content is the requested depth.
The mpadded inner box is placed so that its alphabetic baseline is shifted away from the alphabetic baseline by the requested voffset towards the lineover.
Historically, the mphantom element was introduced to render its content invisibly, but with the same metrics size and other dimensions, including alphabetic 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>
<mo form="infix">+</mo>
<mi>y</mi>
</mphantom>
<mo>+</mo>
<mi>z</mi>
</mrow>
</mfrac>
</math>
The <mphantom>
element accepts the attributes described
in 2.1.3 Global Attributes. Its layout algorithm is
the same as the mrow
element.
The user 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 generalpurpose 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.
The msub, msup and msubsup elements are used to attach subscript and superscript to a MathML expression. They accept the attributes described in 2.1.3 Global Attributes.
The following example shows basic use of subscripts and superscripts. The fontsize 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
computed
display
property equal to block math
or inline 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 two inflow children, its layout algorithm
is the same as the mrow
element.
Otherwise, the first inflow child is called the
msub base, the second inflow child is called the
msub subscript and the layout algorithm is explained
in 3.4.1.2 Base with subscript.
If the <msup>
element
has less or more than two inflow children, its layout algorithm
is the same as the mrow
element.
Otherwise, the first inflow child is called the
msup base, the second inflow child is called the
msup superscript and the layout algorithm is explained
in 3.4.1.3 Base with superscript.
If the <msubsup>
element
has less or more than three inflow children, its layout algorithm
is the same as the mrow
element.
Otherwise, the first inflow child is called the
msubsup base, the second inflow child
is called the msubsup subscript,
its third inflow child is called
the msubsup superscript and the layout algorithm is explained
in 3.4.1.4 Base with subscript and superscript.
The <msub>
element is laid out as shown on
Figure 17.
LargeOpItalicCorrection
is the italic correction of the msub base
if it is an embellished operator with
the largeop
property and 0 otherwise.
The
mincontent inline size (respectively maxcontent inline size) of the math content is the
mincontent inline size (respectively maxcontent inline size) of the msub base's margin box −
LargeOpItalicCorrection
+
mincontent inline size (respectively maxcontent inline size) of
the msub subscript's margin box + SpaceAfterScript.
If there is an inline stretch size constraint or a block stretch size constraint then the msub 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.
The inline size of the math content
is the inline size of the msub base's margin box −
LargeOpItalicCorrection
+
the inline size of
the msub subscript's margin box + SpaceAfterScript.
SubShift
is the maximum between:
The lineascent of the math content is the maximum between:
SubShift
.The linedescent of the math content is the maximum between:
SubShift
.
The inline offset of the msub base is 0 and the inline offset of the
msub subscript is the inline size of the msub base's margin box −
LargeOpItalicCorrection
.
The msub base is placed so that its alphabetic baseline
matches the alphabetic baseline. The msub subscript is placed so that its alphabetic baseline
is shifted away from the alphabetic baseline by SubShift
towards the lineunder.
The <msup>
element is laid out as shown on
Figure 18.
ItalicCorrection
is the italic correction of the msup base
if it is not an embellished operator with
the largeop
property and 0 otherwise.
The
mincontent inline size (respectively maxcontent inline size)
of the math content
is the
mincontent inline size (respectively maxcontent inline size) of
the msup base's margin box +
ItalicCorrection
+
the mincontent inline size (respectively maxcontent inline size) of
the msup superscript's margin box + SpaceAfterScript.
If there is an inline stretch size constraint or a block stretch size constraint then the msup 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.
The inline size of the math content
is the inline size of the msup base's margin box +
ItalicCorrection
+
the inline size of
the msup superscript's margin box + SpaceAfterScript.
SuperShift
is the maximum between:
compact
, or
SuperscriptShiftUp otherwise.The lineascent of the math content is the maximum between:
SuperShift
.The linedescent of the math content is the maximum between:
SuperShift
.
The inline offset of the msup base is 0 and the inline offset of
msup superscript is the inline size of the msup base's margin box +
ItalicCorrection
.
The msup base is placed so that its alphabetic baseline
matches the alphabetic baseline. The msup superscript is placed so that its
alphabetic baseline
is shifted away from the alphabetic baseline by SuperShift
towards the lineover.
The <msubsup>
element is laid out as shown on
Figure 18.
LargeOpItalicCorrection
and SubShift
are set as in 3.4.1.2 Base with subscript.
ItalicCorrection
and SuperShift
are set as in 3.4.1.3 Base with superscript.
The mincontent inline size (respectively maxcontent inline size and inline size) of the math content is the maximum between the mincontent inline size (respectively maxcontent inline size and inline size) of the math content calculated in 3.4.1.2 Base with subscript and 3.4.1.3 Base with superscript.
If there is an inline stretch size constraint or a block stretch size constraint then the msubsup 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 an inline stretch size constraint or a block stretch size constraint then the msubsup 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 the block axis and is defined by
(SubShift
− the ink lineascent of the msubsup subscript's
margin box) +
(SuperShift
− the ink linedescent of the
msubsup superscript's margin box).
If SubSuperGap
is not at least
SubSuperscriptGapMin then the following steps are
performed to ensure that the condition holds:
SuperShift
− the ink linedescent of the
msubsup superscript's margin box).
If Δ > 0 then set Δ to the minimum between Δ set
SubSuperscriptGapMin − SubSuperGap
and
increase SuperShift
(and so
SubSuperGap
too) by Δ.
SubSuperGap
.
If Δ > 0 then
increase SubscriptShift
(and so
SubSuperGap
too) by Δ.
The ink lineascent (respectively lineascent, ink linedescent,
linedescent) of the math content
is set to the maximum
of the
ink lineascent (respectively lineascent, ink linedescent,
linedescent) of the math content
calculated in
3.4.1.2 Base with subscript and
3.4.1.3 Base with superscript
but using the adjusted values SubShift
and
SuperShift
above.
The inline offset and block offset of the msubsup base and scripts are performed the same as described in 3.4.1.2 Base with subscript and 3.4.1.3 Base with superscript.
Even when the msubsup subscript (respectively msubsup superscript) is an empty
box, <msubsup>
does not generally render the same as
3.4.1.3 Base with superscript
(respectively 3.4.1.2 Base with subscript)
because of the additional constraint on
SubSuperGap
.
Moreover, positioning the empty msubsup subscript
(respectively msubsup 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.
The munder, mover and munderover elements are used to attach accents or limits placed under or over a MathML expression.
The <munderover>
element accepts the attribute
described in 2.1.3 Global Attributes as well as the
following attributes:
Similarly, the <mover>
element
(respectively <munder>
element) accepts the
attribute described in 2.1.3 Global Attributes
as well as the accent
attribute (respectively the
accentunder
attribute).
accent,
accentunder
attributes, if present, must have values that are booleans.
If these attributes are absent or invalid, they are treated as
equal to false
.
User agents must implement them as described in
3.4.4 Displaystyle, scriptlevel and mathshift in scripts.
The following example shows basic use of under and overscripts. The fontsize 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>
<munderover accent="true">
<mn>8</mn>
<mn>9</mn>
<mn>10</mn>
</munderover>
<mo>+</mo>
<munderover accentunder="true">
<mn>11</mn>
<mn>12</mn>
<mn>13</mn>
</munderover>
</math>
If the
<munder>
,
<mover>
or
<munderover>
elements do not have their
computed
display
property equal to block math
or inline 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 two inflow children, its layout algorithm
is the same as the mrow
element.
Otherwise, the first inflow child is called the
munder base and the second inflow child is called the
munder underscript.
If the <mover>
element
has less or more than two inflow children, its layout algorithm
is the same as the mrow
element.
Otherwise, the first inflow child is called the
mover base and the second inflow child is called the
mover overscript.
If the <munderover>
element
has less or more than three inflow children, its layout algorithm
is the same as the mrow
element.
Otherwise, the first inflow child is called the
munderover base, the second inflow child
is called the munderover underscript
and its third inflow child is called
the munderover overscript.
If the
<munder>
, <mover>
or
<munderover>
elements have a computed
mathstyle property equal to compact
and their base is an embellished operator with the
movablelimits
property, then
their layout algorithms are respectively
the same as the ones described for
<msub>
, <msup>
and
<msubsup>
in
3.4.1.2 Base with subscript,
3.4.1.3 Base with superscript and
3.4.1.4 Base with subscript and superscript.
Otherwise, the
<munder>
, <mover>
and
<munderover>
layout algorithms are respectively
described in
3.4.2.3 Base with underscript,
3.4.2.4 Base with overscript and
3.4.2.5 Base with underscript and overscript.
The algorithm for stretching operators along the inline axis is as follows.
L_{ToStretch}
containing
embellished operators with
a stretchy
property and inline stretch axis;
and a second list L_{NotToStretch}
.
L_{NotToStretch}
.
If L_{ToStretch}
is empty then stop.
If L_{NotToStretch}
is empty, perform
layout with stretch size constraint 0 on
all the items of L_{ToStretch}
.
T
to
the maximum inline size of the
margin boxes of child boxes that have been laid out in the
previous step.
L_{ToStretch}
with inline stretch size constraint T
.
The <munder>
element is laid out as shown on
Figure 20.
LargeOpItalicCorrection
is the italic correction of the munder base
if it is an embellished operator with
the largeop
property and 0 otherwise.
The mincontent inline size (respectively maxcontent inline size) of the math content are calculated like the inline size of the math content below but replacing the inline sizes of the munder base's margin box and munder underscript's margin box with the mincontent inline size (respectively maxcontent inline size) of the munder base's margin box and munder underscript's margin box.
The inflow children are laid out using the algorithm for stretching operators along the inline axis.
The inline 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 the
inline offset
of the munder base is −m − half the inline size of the base's margin box.
The inline offset of the munder underscript is
−m − half the inline size of the munder underscript's margin box −
half LargeOpItalicCorrection
.
Parameters
UnderShift
and UnderExtraDescender
are determined by considering three cases in the following order:
The munder base is an
embellished operator with the
largeop
property.
UnderShift
is the maximum of
UnderExtraDescender
is 0.
The munder base is an
embellished operator with the
stretchy
property
and stretch axis inline.
UnderShift
is the maximum of:
UnderExtraDescender
is 0.
UnderShift
is equal to UnderbarVerticalGap
if the accentunder
attribute is not an
ASCII caseinsensitive match to true
and to zero otherwise.
UnderExtraAscender
is
UnderbarExtraDescender.
The lineascent of the math content is the maximum between:
UnderShift
.The linedescent of the math content is the maximum between:
UnderShift
+ UnderExtraAscender
.
The alphabetic baseline of the munder base is aligned with the alphabetic baseline.
The alphabetic baseline of the munder underscript is shifted away from the alphabetic baseline
and towards the lineunder by a distance equal to
the ink linedescent of the munder base's margin box
+ UnderShift
.
The math content box is placed within the content box so that their blockstart edges are aligned and the middles of these edges are at the same position.
The <mover>
element is laid out as shown on
Figure 21.
LargeOpItalicCorrection
is the italic correction of the mover base
if it is an embellished operator with
the largeop
property and 0 otherwise.
The mincontent inline size (respectively maxcontent inline size) of the math content are calculated like the inline size of the math content below but replacing the inline sizes of the mover base's margin box and mover overscript's margin box with the mincontent inline size (respectively maxcontent inline size) of the mover base's margin box and mover overscript's margin box.
The inflow children are laid out using the algorithm for stretching operators along the inline axis.
The TopAccentAttachment
is the
top accent attachment of the mover overscript or
half the inline size of the mover overscript's margin box
if it is undefined.
The inline size of the math content is calculated by applying the algorithm for stretching operators along the inline axis for layout and determining the absolute difference between:
TopAccentAttachment
+
half LargeOpItalicCorrection
.TopAccentAttachment
+
half LargeOpItalicCorrection
.
If m is the minimum calculated in the second item above then the
inline offset
of the mover base is −m − half the inline size of the base's margin.
The inline offset of the mover overscript is
−m − half the inline size of the mover overscript's margin box +
half LargeOpItalicCorrection
.
Parameters
OverShift
and OverExtraDescender
are determined by considering three cases in the following order:
The mover base is an
embellished operator with the
largeop
property.
OverShift
is the maximum of
OverExtraAscender
is 0.
The mover base is an
embellished operator with the
stretchy
property and
stretch axis inline.
OverShift
is the maximum of:
OverExtraDescender
is 0.
Otherwise, OverShift
is equal to
accent
attribute is not an
ASCII caseinsensitive match to true
.
OverExtraAscender
is OverbarExtraAscender.
The lineascent of the math content is the maximum between:
OverShift
+ OverExtraAscender
.The linedescent of the math content is the maximum between:
OverShift
.
The alphabetic baseline of the mover base is aligned with the alphabetic baseline.
The alphabetic baseline of the mover overscript is shifted away from the alphabetic baseline
and towards the lineover by a distance equal to
the ink lineascent of the base + OverShift
.
The math content box is placed within the content box so that their blockstart edges are aligned and the middles of these edges are at the same position.
The general layout of <munderover>
is shown on
Figure 22. The
LargeOpItalicCorrection
,
UnderShift
,
UnderExtraDescender
,
OverShift
,
OverExtraDescender
parameters
are calculated the same as in
3.4.2.3 Base with underscript and
3.4.2.4 Base with overscript.
The mincontent inline size, maxcontent inline size and inline size of the math content are calculated as an absolute difference between a maximum inline offset and minimum inline offset. These extrema are calculated by taking the extremum value of the corresponding extrema calculated in 3.4.2.3 Base with underscript and 3.4.2.4 Base with overscript. The inline offsets of the munderover base, munderover underscript and munderover overscript are calculated as in these sections but using the new minimum m (minimum of the corresponding minima).
Like in these sections, the inflow children are laid out using the algorithm for stretching operators along the inline axis.
The lineascent and linedescent of the math content are also calculated by taking the extremum value of the extrema calculated in 3.4.2.3 Base with underscript and 3.4.2.4 Base with overscript.
Finally, the alphabetic baselines of the munderover base, munderover underscript and munderover overscript are calculated as in sections 3.4.2.3 Base with underscript and 3.4.2.4 Base with overscript.
The math content box is placed within the content box so that their blockstart 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 to 3.4.2.4 Base with overscript (respectively 3.4.2.3 Base 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 the mmultiscripts element. The mprescripts element is used as a separator between the postscripts and prescripts. These two elements accept the attributes described in 2.1.3 Global Attributes.
The following example shows basic use of prescripts
and postscripts, involving a mprescripts
.
Empty mrow
elements are used at positions where
no scripts are rendered.
The fontsize 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
computed
display
property equal to block math
or inline 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 an mrow
element.
A valid <mmultiscripts>
element contains the
following inflow 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 a
subscript/superscript pair.
mprescripts
element and
an even number of inflow children called
mmultiscripts prescripts, none of them being a
mprescripts
element.
These scripts form a (possibly empty) list of
subscript/superscript pair.
If an <mmultiscripts>
element is not valid then
it is laid out the same as the
mrow
element.
Otherwise the layout algorithm is performed as in
3.4.3.1 Base with prescripts and postscripts.
The <mmultiscripts>
element is laid out as
shown on Figure 23.
For each subscript/superscript pair of
mmultiscripts postscripts,
the ItalicCorrection
LargeOpItalicCorrection
are defined as
in 3.4.1.2 Base with subscript
and 3.4.1.3 Base with superscript.
The mincontent inline size (respectively maxcontent inline size) of the math content is calculated the same as the inline size of the math content below, but replacing "inline size" with "mincontent inline size" (respectively "maxcontent inline size") for the mmultiscripts base's margin box and scripts' margin boxes.
If there is an inline stretch size constraint or a block stretch size constraint the mmultiscripts 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.
The inline size of the math content is calculated with the following algorithm:
inlineoffset
to 0.
For each subscript/superscript pair of
mmultiscripts prescripts, increment
inlineoffset
by SpaceAfterScript + the
maximum of
inlineoffset
by the inline size of the
mmultiscripts base's margin box and
set inlinesize
to inlineoffset
.
For each subscript/superscript pair of
mmultiscripts postscripts, modify
inlinesize
to be at least:
LargeOpItalicCorrection
.
ItalicCorrection
.
Increment inlineoffset
to the maximum of:
Increment inlineoffset
by
SpaceAfterScript.
inlinesize
.
SubShift
(respectively SuperShift
)
is calculated by taking the maximum of all subshifts
(respectively supershifts) of each
subscript/superscript pair as described in
3.4.1.4 Base with subscript and superscript.
The lineascent of the math content is calculated
by taking the maximum of all the lineascent
of each subscript/superscript pair as described in
3.4.1.4 Base with subscript and superscript
but using the SubShift
and
SuperShift
values calculated above.
The linedescent of the math content is calculated
by taking the maximum of all the linedescent
of each subscript/superscript pair as described in
3.4.1.4 Base with subscript and superscript
but using the SubShift
and
SuperShift
values calculated above.
Finally, the placement of the inflow children is performed using the following algorithm:
inlineoffset
to 0.For each subscript/superscript pair of mmultiscripts prescripts:
inlineoffset
by
SpaceAfterScript.
pairinlinesize
to the maximum of
inlineoffset
+ pairinlinesize
− the inline size of the subscript's margin box.
inlineoffset
+ pairinlinesize
− the inline size of the superscript's margin box.
SubShift
(respectively SuperShift
)
towards the lineunder (respectively lineover).
inlineoffset
by
pairinlinesize
.
<mprescripts>
boxes
at inline offsets
inlineoffset
and with their alphabetic baselines
aligned with the alphabetic baseline.
For each subscript/superscript pair of mmultiscripts postscripts:
pairinlinesize
to the maximum of
inlineoffset
− LargeOpItalicCorrection
.
inlineoffset
+ ItalicCorrection
.
SubShift
(respectively SuperShift
)
towards the lineunder (respectively lineover).
inlineoffset
by
pairinlinesize
.
inlineoffset
by
SpaceAfterScript.
An <mmultiscripts>
with only one
subscript/superscript pair of
mmultiscripts postscripts is laid out the same as a
<msubsup>
with the same inflow children.
However, as
noticed 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 all scripted elements, the rule of thumb is to set
displaystyle
to false
and
to increment scriptlevel
in all child
elements but the first one.
However, an mover
(respectively
munderover
)
element with an accent
attribute that is an
ASCII caseinsensitive
match to true
does not increment scriptlevel within
its second child (respectively third child). Similarly,
mover
and
munderover
elements
with an accentunder
attribute that is an
ASCII caseinsensitive
match to true
do not increment scriptlevel within
their second child.
<mmultiscripts>
sets
mathshift
to
compact
on its children at even position if they are
before an mprescripts
, and on those at odd position
if they are after
an mprescripts
.
The <msub>
and <msubsup>
elements set mathshift
to
compact
on their second child.
mover
and
munderover
elements with an accent
attribute that is an
ASCII caseinsensitive
match to true
also set mathshift
to
compact
within their first child.
The A. User Agent Stylesheet must contain the following style in order to implement this behavior:
msub > :not(:firstchild),
msup > :not(:firstchild),
msubsup > :not(:firstchild),
mmultiscripts > :not(:firstchild),
munder > :not(:firstchild),
mover > :not(:firstchild),
munderover > :not(:firstchild) {
mathdepth: add(1);
mathstyle: compact;
}
munder[accentunder="true" i] > :nthchild(2),
mover[accent="true" i] > :nthchild(2),
munderover[accentunder="true" i] > :nthchild(2),
munderover[accent="true" i] > :nthchild(3) {
fontsize: inherit;
}
msub > :nthchild(2),
msubsup > :nthchild(2),
mmultiscripts > :nthchild(even),
mmultiscripts > mprescripts ~ :nthchild(odd),
mover[accent="true" i] > :firstchild,
munderover[accent="true" i] > :firstchild {
mathshift: compact;
}
mmultiscripts > mprescripts ~ :nthchild(even) {
mathshift: inherit;
}
<mprescripts>
is empty.
Hence the CSS rules essentially perform automatic displaystyle
and
scriptlevel
changes for the scripts; and
mathshift
changes for
subscripts and sometimes the base.
Matrices, arrays and other tablelike mathematical notation are marked up
using
mtable
mtr
mtd
elements. These elements are similar to the
table
,
tr
and
td
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>
The mtable is laid out as an
inlinetable
and sets
displaystyle
to false
. The
user agent stylesheet must contain
the following rules in order to implement these properties:
mtable {
display: inlinetable;
mathstyle: compact;
}
The mtable
element is as a CSS
table
and the
mincontent inline size, maxcontent inline size,
inline size, block size,
first baseline set and last baseline set
sets are determined
accordingly.
The center of the table is aligned with the math axis.
The <mtable>
accepts the attributes described
in 2.1.3 Global Attributes.
The mtr is laid out as
tablerow
. The
user agent stylesheet must contain
the following rules in order to implement that behavior:
mtr {
display: tablerow;
}
The <mtr>
accepts the attributes described
in 2.1.3 Global Attributes.
The mtd is laid out as
a tablecell
with content centered in the cell and
a default padding. The
user agent stylesheet must contain
the following rules:
mtd {
display: tablecell;
/* Centering inside table cells should rely on box alignment properties.
See https://github.com/w3c/mathmlcore/issues/156 */
textalign: center;
padding: 0.5ex 0.4em;
}
The <mtd>
accepts the attributes described
in 2.1.3 Global Attributes as well as the following attributes:
The columnspan
(respectively
rowspan
) attribute has the same
syntax and semantics as the
colspan
(respectively
)
attribute on the rowspan
<td>
element from [HTML].
In particular, the parsing of these attributes is handled as
described in the
algorithm for processing rows, always reading "colspan
" as
"columnspan
".
columnspan
and is preserved for backward
compatibility reasons.
The <mtd>
element
generates an anonymous <mrow> box.
Historically, the maction element provides a mechanism for binding actions to expressions.
The <maction>
element accepts the attributes described
in 2.1.3 Global Attributes as well as the following
attributes:
This specification does not define any observable behavior that is specific to the actiontype and selection 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>
<maction actiontype="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.
The user 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(:firstchild) {
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].
The
semantics
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 an annotation
element, or more complex markup annotations within
an annotationxml element.
The following example shows how the fraction "one half" can be annotated with a textual annotation (LaTeX) or an XML annotation (content MathML). These annotations are not intended to be rendered by the user agent.
<math>
<semantics>
<mfrac>
<mn>1</mn>
<mn>2</mn>
</mfrac>
<annotation encoding="application/xtex">\frac{1}{2}</annotation>
<annotationxml encoding="application/mathmlcontent+xml">
<apply>
<divide/>
<cn>1</cn>
<cn>2</cn>
</apply>
</annotationxml>
</semantics>
</math>
The <semantics>
element accepts the attributes
described in 2.1.3 Global Attributes. Its layout algorithm
is the same as the mrow
element.
The user agent stylesheet
must contain the following rule in order to only render the annotated
MathML expression:
semantics > :not(:firstchild) {
display: none;
}
The <annotationxml>
and
<annotation>
element accepts the attributes
described in 2.1.3 Global Attributes as well as the
following attribute:
This specification does not define any observable behavior that is specific to the encoding attribute.
The layout algorithm of the <annotationxml>
and <annotation>
element is the same as the mtext
element.
encoding
attribute to distinguish
annotations
for HTML integration point,
clipboard copy, alternative rendering, etc.
In particular, CSS can be used to render alternative annotations, e.g.
/* Hide the annotated child. */
semantics > :firstchild { display: none; }
/* Show all text annotations. */
semantics > annotation { display: inline; }
/* Show all HTML annotations. */
semantics > annotationxml[encoding="text/html" i],
semantics > annotationxml[encoding="application/xhtml+xml" i] {
display: inlineblock;
}
The display
property
from CSS Display Module Level 3
is extended with a new inner display type:
Name:  display 

New values:  <displayoutside>  [ <displayinside>  math ] 
For elements that are not MathML elements, if the specified
value of display
is inline math
or
block math
then the computed value is
block flow
and inline flow
respectively.
For the mtable
element
the computed value is block table
and
inline table
respectively.
For the mtr
element, the computed value
is tablerow
.
For the mtd
element, the computed value
is tablecell
.
MathML elements with a
computed display
value equal to
block math
or inline math
control box generation and layout according to their tag name, as
described in the relevant sections.
Unknown MathML elements
behave the same as the mrow
element.
display: block math
and
display: inline math
values provide a default
layout for MathML elements while at the same time allowing
to override it with either native display values or
custom 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
MathML mrow
element is overridden to render its
content as a grid.
<math>
<msup>
<mrow>
<mo symmetric="false">[</mo>
<mrow style="display: block; width: 4.5em;">
<mrow style="display: grid;
gridtemplatecolumns: 1.5em 1.5em 1.5em;
gridtemplaterows: 1.5em 1.5em;
justifyitems: center;
alignitems: center;">
<mn>12</mn>
<mn>34</mn>
<mn>56</mn>
<mn>7</mn>
<mn>8</mn>
<mn>9</mn>
</mrow>
</mrow>
<mo symmetric="false">]</mo>
</mrow>
<mi>α</mi>
</msup>
</math>
The texttransform property from CSS Text Module Level 3 is extended with a new value:
Name:  texttransform 

New value:  mathauto 
On text nodes containing a single character, if the computed value
is mathauto
then the transformed text is obtained by
performing conversion of each character according to the
italic table.
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. The
mathauto
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 of
C.13 italic
mappings, which differ from the shaping
obtained via italic font style. Compare this
mathematical formula
rendered with the Latin Modern Math font using
fontstyle: italic
(left) and
texttransform: mathauto
(right):
Name:  mathstyle 

Value:  normal  compact 
Initial:  normal 
Applies to:  All elements 
Inherited:  yes 
Percentages:  n/a 
Computed value:  specified keyword 
Canonical order:  n/a 
Animation type:  not animatable 
Media:  visual 
When mathstyle
is compact
,
the math layout on descendants tries to minimize the
logical height by
applying the following rules:
math
and
the computed value of mathdepth
is
autoadd
(default for mfrac
)
as described in 4.5 The mathdepth
property.largeop
property
do not follow rules from 3.2.4.3 Layout of operators
to make them bigger.movablelimits
property are actually drawn as sub/superscripts
as described in 3.4.2.1 Children of <munder>
,
<mover>
, <munderover>
.The following example shows a
mathematical formula rendered with
its math
root styled with
mathstyle: compact
(left) and
mathstyle: normal
(right).
In the former case, the fontsize 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
fontsize) are larger.
These two mathstyle
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.
The mathstyle property allows to easily implement these
features for MathML in the
user agent stylesheet
and with the displaystyle attribute; and also exposes
them to polyfills.
Name:  mathshift 

Value:  normal  compact 
Initial:  normal 
Applies to:  All elements 
Inherited:  yes 
Percentages:  n/a 
Computed value:  specified keyword 
Canonical order:  n/a 
Animation type:  not animatable 
Media:  visual 
If the value of mathshift
is compact
, the math layout on descendants will use the
superscriptShiftUpCramped parameter to place superscript.
If the value of mathshift
is normal
, the math
will use the superscriptShiftUp parameter instead.
This property is used for positioning superscript during the layout
of MathML scripted elements.
See § 3.4.1 Subscripts and Superscripts <msub>
, <msup>
, <msubsup>
,
3.4.3 Prescripts and Tensor Indices <mmultiscripts>
and
3.4.2 Underscripts and Overscripts <munder>
, <mover>
, <munderover>
.
In the following example, the two "x squared" are rendered with
compact mathstyle and the same fontsize
.
However, the one within the square root is rendered with
compact mathshift
while
the other one is rendered with
normal mathshift
, 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). The mathshift property allows to easily implement these rules for MathML in the user 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 new mathdepth property is introduced to describe a notion
of "depth" for each element of a mathematical formula, with respect to
the toplevel container of that formula. Concretely, this is used to
determine the computed value of the
fontsize
property when its specified value is math
.
Name:  mathdepth 

Value:  autoadd  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:  not animatable 
Media:  visual 
The computed value of the mathdepth value is determined as follows:
autoadd
and
the inherited value of mathstyle
is compact
then the computed value of
mathdepth of the element is its inherited value plus one.
add(<integer>)
then the computed value
of mathdepth of the element is its inherited value plus
the specified integer.
<integer>
then the computed value
of mathdepth of the element is the specified integer.
If the specified value
fontsize
is math
then the
computed value of
fontsize
is obtained by multiplying the inherited value of
fontsize
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 normal mathstyle rendered with the Latin Modern Math font. When entering subexpressions like scripts or fractions, the fontsize is automatically scaled down according to the values of MATH table contained in that font. Note that fontsize 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 of mathstyle in fractions.
These rules from [TeXBook] are subtle and it's worth having a
separate mathdepth
mechanism to express and
handle them. They can be implemented in MathML using the
user 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, the scriptlevel attribute
from MathML provides a way to perform mathdepth
changes.
This chapter describes features provided by MATH
table
of an OpenType font [OPENFONTFORMAT]. Throughout this chapter,
a Clike notation
Table.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 a
MathValueRecord
entry) are scaled to appropriate values
for layout purpose, taking into account
head.unitsPerEm
, CSS
fontsize
or zoom level.
These are global layout constants for the first available font:
post.underlineThickness
or
Default fallback constant if the constant is not available.
MATH.MathConstants.scriptPercentScaleDown / 100
or
0.71 if MATH.MathConstants.scriptPercentScaleDown
is
null or not available.
MATH.MathConstants.scriptScriptPercentScaleDown / 100
or
0.5041 if
MATH.MathConstants.scriptScriptPercentScaleDown
is
null or not available.
MATH.MathConstants.displayOperatorMinHeight
or
Default fallback constant
if the constant is not available.MATH.MathConstants.axisHeight
or half
OS/2.sxHeight
if the constant is not available.MATH.MathConstants.accentBaseHeight
or OS/2.sxHeight
if the constant is not available.MATH.MathConstants.subscriptShiftDown
or OS/2.ySubscriptYOffset
if the constant is not available.MATH.MathConstants.subscriptTopMax
or ⅘ × OS/2.sxHeight
if the constant is not available.MATH.MathConstants.subscriptBaselineDropMin
or
Default fallback constant if the constant is not available.MATH.MathConstants.superscriptShiftUp
or OS/2.ySuperscriptYOffset
if the constant is not available.MATH.MathConstants.superscriptShiftUpCramped
or
Default fallback constant if the constant is not available.MATH.MathConstants.superscriptBottomMin
or ¼ × OS/2.sxHeight
if the constant is not available.MATH.MathConstants.superscriptBaselineDropMax
or
Default 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
or
Default fallback constant if the constant is not available.MATH.MathConstants.upperLimitBaselineRiseMin
or Default fallback constant if the constant is not available.MATH.MathConstants.lowerLimitGapMin
or Default fallback constant if the constant is not available.MATH.MathConstants.lowerLimitBaselineDropMin
or Default fallback constant if the constant is not available.MATH.MathConstants.stackTopShiftUp
or Default fallback constant if the constant is not available.MATH.MathConstants.stackTopDisplayStyleShiftUp
or Default fallback constant if the constant is not available.MATH.MathConstants.stackBottomShiftDown
or Default fallback constant if the constant is not available.MATH.MathConstants.stackBottomDisplayStyleShiftDown
or Default 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
or Default fallback constant if the constant is not available.MATH.MathConstants.stretchStackBottomShiftDown
or Default fallback constant if the constant is not available.MATH.MathConstants.stretchStackGapAboveMin
or Default fallback constant if the constant is not available.MATH.MathConstants.stretchStackGapBelowMin
or Default fallback constant if the constant is not available.MATH.MathConstants.fractionNumeratorShiftUp
or Default fallback constant if the constant is not available.MATH.MathConstants.fractionNumeratorDisplayStyleShiftUp
or Default fallback constant if the constant is not available.MATH.MathConstants.fractionDenominatorShiftDown
or Default fallback constant if the constant is not available.MATH.MathConstants.fractionDenominatorDisplayStyleShiftDown
or Default fallback constant if the constant is not available.MATH.MathConstants.fractionNumeratorGapMin
or default 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
or default rule thickness if the constant is not available.MATH.MathConstants.fractionDenominatorGapMin
or default 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
or default 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
or default 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
or default rule thickness + ¼ OS/2.sxHeight
if the constant is not available.MATH.MathConstants.radicalRuleThickness
or default rule thickness if the constant is not available.MATH.MathConstants.radicalExtraAscender
or default 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 perglyph tables for the first available font:
MATH.MathGlyphInfo.MathItalicsCorrectionInfo
of italics correction values. Use the corresponding value in
MATH.MathGlyphInfo.MathItalicsCorrectionInfo.italicsCorrection
if there is one for the requested glyph or
0
otherwise.
MATH.MathGlyphInfo.MathTopAccentAttachment
of positioning top math accents along the inline axis.
Use the corresponding value in
MATH.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 the MATH.MathVariants
table.
This section is based on [OPENTYPEMATHINHARFBUZZ]. For convenience, the following definitions are used:
MATH.MathVariant.minConnectorOverlap
.
GlyphPartRecord
is an extender
if and only if
GlyphPartRecord.partFlags
has the
fExtender
flag set.
GlyphAssembly
is horizontal
if it is obtained from
MathVariant.horizGlyphConstructionOffsets
.
Otherwise it is vertical (and obtained from
MathVariant.vertGlyphConstructionOffsets
).
GlyphAssembly
table,
N_{Ext} (respectively
N_{NonExt}) is the number of extenders
(respectively nonextenders) in
GlyphAssembly.partRecords
.
GlyphAssembly
table,
S_{Ext} (respectively
S_{NonExt}) is the sum of
GlyphPartRecord.fullAdvance
for all extenders (respectively nonextenders) in
GlyphAssembly.partRecords
.
User agents must treat the GlyphAssembly
as invalid
if the following conditions are not satisfied:
GlyphPartRecord
in GlyphAssembly.partRecords
,
the values of
GlyphPartRecord.startConnectorLength
and
GlyphPartRecord.endConnectorLength
must be at least o_{min}.
Otherwise, it is not possible to satisfy the condition of
MathVariant.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 is AssemblyGlyphCount(r) = N_{NonExt} + r N_{Ext} while the stretch size is AssembySize(o, r) = S_{NonExt} + r S_{Ext} − o (AssemblyGlyphCount(r) − 1).
r_{min} is the minimal number of repetitions needed to obtain an assembly of size at least T, i.e. the minimal r such that AssembySize(o_{min}, r) ≥ T. It is defined as the maximum between 0 and the ceiling of ((T − S_{NonExt} + o_{min} (N_{NonExt} − 1)) / S_{Ext,NonOverlapping}).
o_{max,theorical} = (AssembySize(0, r_{min}) − T) / (AssemblyGlyphCount(r_{min}) − 1) is the theorical overlap obtained by splitting evenly the extra size of an assembly built with null overlap.
o_{max} is the maximum overlap possible to build an assembly of size at least T by repeating each extender r_{min} times. If AssemblyGlyphCount(r_{min}) ≤ 1, then the actual overlap value is irrelevant. Otherwise, o_{max} is defined to be the minimum of:
GlyphPartRecord.startConnectorLength
for all
the entries in
GlyphAssembly.partRecords
, excluding the
last one if it is not an extender.
GlyphPartRecord.endConnectorLength
for all
the entries in
GlyphAssembly.partRecords
, excluding the
first one if it is not an extender.
The glyph assembly stretch size for a target size T is AssembySize(o_{max}, r_{min}).
The glyph assembly width, glyph assembly ascent and glyph assembly descent are defined as follows:
GlyphAssembly
is vertical,
the width is the maximum advance width of the glyphs of ID
GlyphPartRecord.glyphID
for all the
GlyphPartRecord
in
GlyphAssembly.partRecords
,
the ascent is the
glyph assembly stretch size
for a given target size T
and the descent is 0.
GlyphAssembly
is horizontal,
the width is glyph assembly stretch size
for a given target size T
while
the ascent (respectively descent) is the
maximum ascent (respectively descent) of the glyphs of ID
GlyphPartRecord.glyphID
for all the
GlyphPartRecord
in
GlyphAssembly.partRecords
.
The glyph assembly height is the sum of the glyph assembly ascent and glyph assembly descent.
T
.
The shaping of the glyph assembly is performed with the following algorithm:
(x, y)
to (0, 0)
,
RepetitionCounter
to 0 and
PartIndex
to 1.
RepetitionCounter
is 0:
PartIndex
.PartIndex
is
GlyphAssembly.partCount
then stop.Part
to
GlyphAssembly.partRecords[PartIndex]
.
Set RepetitionCounter
to
r_{min} if
Part
is an extender and to 1 otherwise.
Part.glyphID
so that its (left, baseline) coordinates
are at position (x, y)
.
Set x
to
x + Part.fullAdvance −
o_{max}.
Part.glyphID
so that its (left, bottom) coordinates
are at position (x, y)
.
Set y
to
y − Part.fullAdvance +
o_{max}.
RepetitionCounter
.The preferred 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 the MathVariants.vertGlyphConstructionOffsets
table for the given glyph:
MathGlyphVariantRecord
in
MathGlyphConstruction.mathGlyphVariantRecord
,
ensure that S
is at least
the advance width of the glyph of id
MathGlyphVariantRecord.variantGlyph
.
GlyphAssembly
subtable,
then ensure
that S
is at least the
glyph assembly width.
S
.
The algorithm to shape a stretchy glyph to inline
(respectively block) dimension T
is the following:
MathGlyphConstruction
table
in the MathVariants.horizGlyphConstructionOffsets
table (respectively
MathVariants.vertGlyphConstructionOffsets
table)
for the given glyph then exit with failure.
T
then use normal shaping and bounding box for that glyph,
the MathItalicsCorrectionInfo for that glyph as
italic correction and exit with success.
MathGlyphVariantRecord
in
MathGlyphConstruction.mathGlyphVariantRecord
.
If one MathGlyphVariantRecord.advanceMeasurement
is at least T
then use
normal shaping and bounding box
for MathGlyphVariantRecord.variantGlyph
,
the MathItalicsCorrectionInfo for that glyph as
italic correction and exit with success.
GlyphAssembly
subtable
then use the bounding box given by
glyph assembly width,
glyph assembly height,
glyph assembly ascent,
glyph assembly descent, the value
GlyphAssembly.italicsCorrection
as italic
correction, perform shaping of the glyph assembly and
exit with success.
T
, then choose last one that was tried and exit
with success.
@namespace url(http://www.w3.org/1998/Math/MathML);
/* Universal rules */
* {
fontsize: math;
display: block math;
writingmode: horizontaltb !important;
}
/* The <math> element */
math {
direction: ltr;
textindent: 0;
letterspacing: normal;
lineheight: normal;
wordspacing: normal;
fontfamily: math;
fontsize: inherit;
fontstyle: normal;
fontweight: normal;
display: inline math;
mathshift: normal;
mathstyle: compact;
mathdepth: 0;
}
math[display="block" i] {
display: block math;
mathstyle: normal;
}
math[display="inline" i] {
display: inline math;
mathstyle: compact;
}
/* <mrow>like elements */
semantics > :not(:firstchild) {
display: none;
}
maction > :not(:firstchild) {
display: none;
}
merror {
border: 1px solid red;
backgroundcolor: lightYellow;
}
mphantom {
visibility: hidden;
}
/* Token elements */
mi {
texttransform: mathauto;
}
/* Tables */
mtable {
display: inlinetable;
mathstyle: compact;
}
mtr {
display: tablerow;
}
mtd {
display: tablecell;
/* Centering inside table cells should rely on box alignment properties.
See https://github.com/w3c/mathmlcore/issues/156 */
textalign: center;
padding: 0.5ex 0.4em;
}
/* Fractions */
mfrac {
paddinginlinestart: 1px;
paddinginlineend: 1px;
}
mfrac > * {
mathdepth: autoadd;
mathstyle: compact;
}
mfrac > :nthchild(2) {
mathshift: compact;
}
/* Other rules for scriptlevel, displaystyle and mathshift */
mroot > :not(:firstchild) {
mathdepth: add(2);
mathstyle: compact;
}
mroot, msqrt {
mathshift: compact;
}
msub > :not(:firstchild),
msup > :not(:firstchild),
msubsup > :not(:firstchild),
mmultiscripts > :not(:firstchild),
munder > :not(:firstchild),
mover > :not(:firstchild),
munderover > :not(:firstchild) {
mathdepth: add(1);
mathstyle: compact;
}
munder[accentunder="true" i] > :nthchild(2),
mover[accent="true" i] > :nthchild(2),
munderover[accentunder="true" i] > :nthchild(2),
munderover[accent="true" i] > :nthchild(3) {
fontsize: inherit;
}
msub > :nthchild(2),
msubsup > :nthchild(2),
mmultiscripts > :nthchild(even),
mmultiscripts > mprescripts ~ :nthchild(odd),
mover[accent="true" i] > :firstchild,
munderover[accent="true" i] > :firstchild {
mathshift: compact;
}
mmultiscripts > mprescripts ~ :nthchild(even) {
mathshift: inherit;
}
The algorithm to set the properties of an operator from its category is as follows:
minsize
to 1em
.maxsize
to ∞
.lspace
and rspace
to the
value specified in the corresponding column.stretchy
,
symmetric
, largeop
,
movablelimits
, set that property to true
if it is listed in the last column or to false
otherwise.The algorithm to determine the category of an operator
(Content
, Form
) is as folllows:
Content
as an UTF16 string does not have length
or 1 or 2 then exit with category Default
.
Content
is a single character in the
range U+0320–U+03FF
then exit with category Default
. 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 and
Form
is postfix
, exit with category
I
.Content
with the first character and move to step
3.Content
is listed in
Operators_2_ascii_chars
then
replace Content
with the
Unicode character
"U+0320 plus the index of Content
in
Operators_2_ascii_chars
" and move to step
3.
Default
.Form
is infix and Content
corresponds
to one of U+007C VERTICAL LINE or U+223C TILDE OPERATOR then exit
with category ForceDefault
. If the category of
(Content
, Form
)
provided by table
Figure 25
has N/A encoding in table
Figure 26
(namely if it has category L
or M
), then
exit with that category.
Otherwise:
Key
to Content
if it is in
range U+0000–U+03FF; or to Content
− 0x1C00
if it is in range U+2000–U+2BFF. Otherwise, exit with
category Default
.
Key
according to whether Form
is infix
, prefix
,
postfix
respectively.
Key
is at most 0x2FFF.Entry
in table
Figure 27
such that Entry
% 0x4000 is equal to
Key
. If one is found then return the category
corresponding to encoding Entry
/ 0x1000 in
Figure 26.
Otherwise, return category Default
.
Special Table  Entries 

Operators_2_ascii_chars  18 entries (2characters 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) in infix 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 
109 entries (32 Unicode ranges) in infix form: {U+002B}, {U+002D}, {U+002F}, {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) in infix 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) in prefix 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) in postfix 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 in prefix 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 in postfix 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) in prefix form: [U+222B–U+2233], [U+2A0B–U+2A1C],  H 
22 entries (13 Unicode ranges) in postfix 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) in prefix form: [U+220F–U+2211], [U+22C0–U+22C3], [U+2A00–U+2A0A], [U+2A1D–U+2A1E], {U+2AFC}, {U+2AFF},  J 
7 entries (4 Unicode ranges) in infix form: {U+005C}, {U+005F}, [U+2061–U+2064], {U+2206},  K 
6 entries (3 Unicode ranges) in prefix form: [U+2145–U+2146], {U+2202}, [U+221A–U+221C],  L 
3 entries in infix 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 
The intrinsic stretch axis a Unicode character
c
is inline if it belongs to the list below.
Otherwise, the intrinsic stretch axis of c
is
block.
This section is nonnormative.
The following dictionary provides a humanreadable version
of B.1 Operator Dictionary. Please refer to
3.2.4.2 Dictionarybased attributes for explanation about
how to use this dictionary and how to
determine the values Content
and Form
indexing together
the dictionary.
The values for rspace
and lspace
are indicated
in the corresponding columns.
The values of
stretchy
,
symmetric
,
largeop
,
movablelimits
are true
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+002F  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+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 nonnormative.
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  hyphenminus  above  U+0305  combining overline 
U+002D  hyphenminus  below  U+0320  combining minus sign below 
U+002D  hyphenminus  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  hyphenminus 
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  hyphenminus 
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  hyphenminus 
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 nonnormative.
The following table provides fallback that user agents may use for
stretching a given base character when the font does not
provide a MATH.MathVariants
table.
The algorithms of
5.3 Size variants for operators (MathVariants
)
work the same except with some adjustments:
MathVariants.horizGlyphConstructionOffsets[]
item;
if it is vertical it corresponds to
a MathVariants.vertGlyphConstructionOffsets[]
item.
MathGlyphConstruction.mathGlyphVariantRecord
is
always empty.
MathVariants.minConnectorOverlap
,
GlyphPartRecord.startConnectorLength
and
GlyphPartRecord.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 ⇁ 
The following tables enumerate the mathematical alphanumeric symbols with form bold, italic, fraktur, monospace, doublestruck etc that are available in Unicode. For each of them, the character in its normal form is provided as well as the difference between the code points of the transformed and original characters.
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, the
StandardizedVariants.txt
file from the
Unicode Character Database indicates that variant selectors
U+FE00 and U+FE01 can be used on capital script to specify
Chancery and Roundhand respectively.
Alternatively, some
mathematical fonts rely on salt
or
ssXY
properties from [OPENFONTFORMAT]
to provide both styles. Page authors may use the
fontvariantalternates property with corresponding OpenType font features
to access these glyphs.
This section is nonnormative.
Original  boldscript  Δ_{code point} 

A U+0041  𝓐 U+1D4D0  1D48F 
B U+0042  𝓑 U+1D4D1  1D48F 
C U+0043  𝓒 U+1D4D2  1D48F 
D U+0044  𝓓 U+1D4D3  1D48F 
E U+0045  𝓔 U+1D4D4  1D48F 
F U+0046  𝓕 U+1D4D5  1D48F 
G U+0047  𝓖 U+1D4D6  1D48F 
H U+0048  𝓗 U+1D4D7  1D48F 
I U+0049  𝓘 U+1D4D8  1D48F 
J U+004A  𝓙 U+1D4D9  1D48F 
K U+004B  𝓚 U+1D4DA  1D48F 
L U+004C  𝓛 U+1D4DB  1D48F 
M U+004D  𝓜 U+1D4DC  1D48F 
N U+004E  𝓝 U+1D4DD  1D48F 
O U+004F  𝓞 U+1D4DE  1D48F 
P U+0050  𝓟 U+1D4DF  1D48F 
Q U+0051  𝓠 U+1D4E0  1D48F 
R U+0052  𝓡 U+1D4E1  1D48F 
S U+0053  𝓢 U+1D4E2  1D48F 
T U+0054  𝓣 U+1D4E3  1D48F 
U U+0055  𝓤 U+1D4E4  1D48F 
V U+0056  𝓥 U+1D4E5  1D48F 
W U+0057  𝓦 U+1D4E6  1D48F 
X U+0058  𝓧 U+1D4E7  1D48F 
Y U+0059  𝓨 U+1D4E8  1D48F 
Z U+005A  𝓩 U+1D4E9  1D48F 
a U+0061  𝓪 U+1D4EA  1D489 
b U+0062  𝓫 U+1D4EB  1D489 
c U+0063  𝓬 U+1D4EC  1D489 
d U+0064  𝓭 U+1D4ED  1D489 
e U+0065  𝓮 U+1D4EE  1D489 
f U+0066  𝓯 U+1D4EF  1D489 
g U+0067  𝓰 U+1D4F0  1D489 
h U+0068  𝓱 U+1D4F1  1D489 
i U+0069  𝓲 U+1D4F2  1D489 
j U+006A  𝓳 U+1D4F3  1D489 
k U+006B  𝓴 U+1D4F4  1D489 
l U+006C  𝓵 U+1D4F5  1D489 
m U+006D  𝓶 U+1D4F6  1D489 
n U+006E  𝓷 U+1D4F7  1D489 
o U+006F  𝓸 U+1D4F8  1D489 
p U+0070  𝓹 U+1D4F9  1D489 
q U+0071  𝓺 U+1D4FA  1D489 
r U+0072  𝓻 U+1D4FB  1D489 
s U+0073  𝓼 U+1D4FC  1D489 
t U+0074  𝓽 U+1D4FD  1D489 
u U+0075  𝓾 U+1D4FE  1D489 
v U+0076  𝓿 U+1D4FF  1D489 
w U+0077  𝔀 U+1D500  1D489 
x U+0078  𝔁 U+1D501  1D489 
y U+0079  𝔂 U+1D502  1D489 
z U+007A  𝔃 U+1D503  1D489 
This section is nonnormative.
Original  bolditalic  Δ_{code point} 

A U+0041  𝑨 U+1D468  1D427 
B U+0042  𝑩 U+1D469  1D427 
C U+0043  𝑪 U+1D46A  1D427 
D U+0044  𝑫 U+1D46B  1D427 
E U+0045  𝑬 U+1D46C  1D427 
F U+0046  𝑭 U+1D46D  1D427 
G U+0047  𝑮 U+1D46E  1D427 
H U+0048  𝑯 U+1D46F  1D427 
I U+0049  𝑰 U+1D470  1D427 
J U+004A  𝑱 U+1D471  1D427 
K U+004B  𝑲 U+1D472  1D427 
L U+004C  𝑳 U+1D473  1D427 
M U+004D  𝑴 U+1D474  1D427 
N U+004E  𝑵 U+1D475  1D427 
O U+004F  𝑶 U+1D476  1D427 
P U+0050  𝑷 U+1D477  1D427 
Q U+0051  𝑸 U+1D478  1D427 
R U+0052  𝑹 U+1D479  1D427 
S U+0053  𝑺 U+1D47A  1D427 
T U+0054  𝑻 U+1D47B  1D427 
U U+0055  𝑼 U+1D47C  1D427 
V U+0056  𝑽 U+1D47D  1D427 
W U+0057  𝑾 U+1D47E  1D427 
X U+0058  𝑿 U+1D47F  1D427 
Y U+0059  𝒀 U+1D480  1D427 
Z U+005A  𝒁 U+1D481  1D427 
a U+0061  𝒂 U+1D482  1D421 
b U+0062  𝒃 U+1D483  1D421 
c U+0063  𝒄 U+1D484  1D421 
d U+0064  𝒅 U+1D485  1D421 
e U+0065  𝒆 U+1D486  1D421 
f U+0066  𝒇 U+1D487  1D421 
g U+0067  𝒈 U+1D488  1D421 
h U+0068  𝒉 U+1D489  1D421 
i U+0069  𝒊 U+1D48A  1D421 
j U+006A  𝒋 U+1D48B  1D421 
k U+006B  𝒌 U+1D48C  1D421 
l U+006C  𝒍 U+1D48D  1D421 
m U+006D  𝒎 U+1D48E  1D421 
n U+006E  𝒏 U+1D48F  1D421 
o U+006F  𝒐 U+1D490  1D421 
p U+0070  𝒑 U+1D491  1D421 
q U+0071  𝒒 U+1D492  1D421 
r U+0072  𝒓 U+1D493  1D421 
s U+0073  𝒔 U+1D494  1D421 
t U+0074  𝒕 U+1D495  1D421 
u U+0075  𝒖 U+1D496  1D421 
v U+0076  𝒗 U+1D497  1D421 
w U+0077  𝒘 U+1D498  1D421 
x U+0078  𝒙 U+1D499  1D421 
y U+0079  𝒚 U+1D49A  1D421 
z U+007A  𝒛 U+1D49B  1D421 
Α U+0391  𝜜 U+1D71C  1D38B 
Β U+0392  𝜝 U+1D71D  1D38B 
Γ U+0393  𝜞 U+1D71E  1D38B 
Δ U+0394  𝜟 U+1D71F  1D38B 
Ε U+0395  𝜠 U+1D720  1D38B 
Ζ U+0396  𝜡 U+1D721  1D38B 
Η U+0397  𝜢 U+1D722  1D38B 
Θ U+0398  𝜣 U+1D723  1D38B 
Ι U+0399  𝜤 U+1D724  1D38B 
Κ U+039A  𝜥 U+1D725  1D38B 
Λ U+039B  𝜦 U+1D726  1D38B 
Μ U+039C  𝜧 U+1D727  1D38B 
Ν U+039D  𝜨 U+1D728  1D38B 
Ξ U+039E  𝜩 U+1D729  1D38B 
Ο U+039F  𝜪 U+1D72A  1D38B 
Π U+03A0  𝜫 U+1D72B  1D38B 
Ρ U+03A1  𝜬 U+1D72C  1D38B 
ϴ U+03F4  𝜭 U+1D72D  1D339 
Σ U+03A3  𝜮 U+1D72E  1D38B 
Τ U+03A4  𝜯 U+1D72F  1D38B 
Υ U+03A5  𝜰 U+1D730  1D38B 
Φ U+03A6  𝜱 U+1D731  1D38B 
Χ U+03A7  𝜲 U+1D732  1D38B 
Ψ U+03A8  𝜳 U+1D733  1D38B 
Ω U+03A9  𝜴 U+1D734  1D38B 
∇ U+2207  𝜵 U+1D735  1B52E 
α U+03B1  𝜶 U+1D736  1D385 
β U+03B2  𝜷 U+1D737  1D385 
γ U+03B3  𝜸 U+1D738  1D385 
δ U+03B4  𝜹 U+1D739  1D385 
ε U+03B5  𝜺 U+1D73A  1D385 
ζ U+03B6  𝜻 U+1D73B  1D385 
η U+03B7  𝜼 U+1D73C  1D385 
θ U+03B8  𝜽 U+1D73D  1D385 
ι U+03B9  𝜾 U+1D73E  1D385 
κ U+03BA  𝜿 U+1D73F  1D385 
λ U+03BB  𝝀 U+1D740  1D385 
μ U+03BC  𝝁 U+1D741  1D385 
ν U+03BD  𝝂 U+1D742  1D385 
ξ U+03BE  𝝃 U+1D743  1D385 
ο U+03BF  𝝄 U+1D744  1D385 
π U+03C0  𝝅 U+1D745  1D385 
ρ U+03C1  𝝆 U+1D746  1D385 
ς U+03C2  𝝇 U+1D747  1D385 
σ U+03C3  𝝈 U+1D748  1D385 
τ U+03C4  𝝉 U+1D749  1D385 
υ U+03C5  𝝊 U+1D74A  1D385 
φ U+03C6  𝝋 U+1D74B  1D385 
χ U+03C7  𝝌 U+1D74C  1D385 
ψ U+03C8  𝝍 U+1D74D  1D385 
ω U+03C9  𝝎 U+1D74E  1D385 
∂ U+2202  𝝏 U+1D74F  1B54D 
ϵ U+03F5  𝝐 U+1D750  1D35B 
ϑ U+03D1  𝝑 U+1D751  1D380 
ϰ U+03F0  𝝒 U+1D752  1D362 
ϕ U+03D5  𝝓 U+1D753  1D37E 
ϱ U+03F1  𝝔 U+1D754  1D363 
ϖ U+03D6  𝝕 U+1D755  1D37F 
This section is nonnormative.
Original  tailed  Δ_{code point} 

ج U+062C  𞹂 U+1EE42  1E816 
ح U+062D  𞹇 U+1EE47  1E81A 
ي U+064A  𞹉 U+1EE49  1E7FF 
ل U+0644  𞹋 U+1EE4B  1E807 
ن U+0646  𞹍 U+1EE4D  1E807 
س U+0633  𞹎 U+1EE4E  1E81B 
ع U+0639  𞹏 U+1EE4F  1E816 
ص U+0635  𞹑 U+1EE51  1E81C 
ق U+0642  𞹒 U+1EE52  1E810 
ش U+0634  𞹔 U+1EE54  1E820 
خ U+062E  𞹗 U+1EE57  1E829 
ض U+0636  𞹙 U+1EE59  1E823 
غ U+063A  𞹛 U+1EE5B  1E821 
ں U+06BA  𞹝 U+1EE5D  1E7A3 
ٯ U+066F  𞹟 U+1EE5F  1E7F0 
This section is nonnormative.
Original  bold  Δ_{code point} 

A U+0041  𝐀 U+1D400  1D3BF 
B U+0042  𝐁 U+1D401  1D3BF 
C U+0043  𝐂 U+1D402  1D3BF 
D U+0044  𝐃 U+1D403  1D3BF 
E U+0045  𝐄 U+1D404  1D3BF 
F U+0046  𝐅 U+1D405  1D3BF 
G U+0047  𝐆 U+1D406  1D3BF 
H U+0048  𝐇 U+1D407  1D3BF 
I U+0049  𝐈 U+1D408  1D3BF 
J U+004A  𝐉 U+1D409  1D3BF 
K U+004B  𝐊 U+1D40A  1D3BF 
L U+004C  𝐋 U+1D40B  1D3BF 
M U+004D  𝐌 U+1D40C  1D3BF 
N U+004E  𝐍 U+1D40D  1D3BF 
O U+004F  𝐎 U+1D40E  1D3BF 
P U+0050  𝐏 U+1D40F  1D3BF 
Q U+0051  𝐐 U+1D410  1D3BF 
R U+0052  𝐑 U+1D411  1D3BF 
S U+0053  𝐒 U+1D412  1D3BF 
T U+0054  𝐓 U+1D413  1D3BF 
U U+0055  𝐔 U+1D414  1D3BF 
V U+0056  𝐕 U+1D415  1D3BF 
W U+0057  𝐖 U+1D416  1D3BF 
X U+0058  𝐗 U+1D417  1D3BF 
Y U+0059  𝐘 U+1D418  1D3BF 
Z U+005A  𝐙 U+1D419  1D3BF 
a U+0061  𝐚 U+1D41A  1D3B9 
b U+0062  𝐛 U+1D41B  1D3B9 
c U+0063  𝐜 U+1D41C  1D3B9 
d U+0064  𝐝 U+1D41D  1D3B9 
e U+0065  𝐞 U+1D41E  1D3B9 
f U+0066  𝐟 U+1D41F  1D3B9 
g U+0067  𝐠 U+1D420  1D3B9 
h U+0068  𝐡 U+1D421  1D3B9 
i U+0069  𝐢 U+1D422  1D3B9 
j U+006A  𝐣 U+1D423  1D3B9 
k U+006B  𝐤 U+1D424  1D3B9 
l U+006C  𝐥 U+1D425  1D3B9 
m U+006D  𝐦 U+1D426  1D3B9 
n U+006E  𝐧 U+1D427  1D3B9 
o U+006F  𝐨 U+1D428  1D3B9 
p U+0070  𝐩 U+1D429  1D3B9 
q U+0071  𝐪 U+1D42A  1D3B9 
r U+0072  𝐫 U+1D42B  1D3B9 
s U+0073  𝐬 U+1D42C  1D3B9 
t U+0074  𝐭 U+1D42D  1D3B9 
u U+0075  𝐮 U+1D42E  1D3B9 
v U+0076  𝐯 U+1D42F  1D3B9 
w U+0077  𝐰 U+1D430  1D3B9 
x U+0078  𝐱 U+1D431  1D3B9 
y U+0079  𝐲 U+1D432  1D3B9 
z U+007A  𝐳 U+1D433  1D3B9 
Α U+0391  𝚨 U+1D6A8  1D317 
Β U+0392  𝚩 U+1D6A9  1D317 
Γ U+0393  𝚪 U+1D6AA  1D317 
Δ U+0394  𝚫 U+1D6AB  1D317 
Ε U+0395  𝚬 U+1D6AC  1D317 
Ζ U+0396  𝚭 U+1D6AD  1D317 
Η U+0397  𝚮 U+1D6AE  1D317 
Θ U+0398  𝚯 U+1D6AF  1D317 
Ι U+0399  𝚰 U+1D6B0  1D317 
Κ U+039A  𝚱 U+1D6B1  1D317 
Λ U+039B  𝚲 U+1D6B2  1D317 
Μ U+039C  𝚳 U+1D6B3  1D317 
Ν U+039D  𝚴 U+1D6B4  1D317 
Ξ U+039E  𝚵 U+1D6B5  1D317 
Ο U+039F  𝚶 U+1D6B6  1D317 
Π U+03A0  𝚷 U+1D6B7  1D317 
Ρ U+03A1  𝚸 U+1D6B8  1D317 
ϴ U+03F4  𝚹 U+1D6B9  1D2C5 
Σ U+03A3  𝚺 U+1D6BA  1D317 
Τ U+03A4  𝚻 U+1D6BB  1D317 
Υ U+03A5  𝚼 U+1D6BC  1D317 
Φ U+03A6  𝚽 U+1D6BD  1D317 
Χ U+03A7  𝚾 U+1D6BE  1D317 
Ψ U+03A8  𝚿 U+1D6BF  1D317 
Ω U+03A9  𝛀 U+1D6C0  1D317 
∇ U+2207  𝛁 U+1D6C1  1B4BA 
α U+03B1  𝛂 U+1D6C2  1D311 
β U+03B2  𝛃 U+1D6C3  1D311 
γ U+03B3  𝛄 U+1D6C4  1D311 
δ U+03B4  𝛅 U+1D6C5  1D311 
ε U+03B5  𝛆 U+1D6C6  1D311 
ζ U+03B6  𝛇 U+1D6C7  1D311 
η U+03B7  𝛈 U+1D6C8  1D311 
θ U+03B8  𝛉 U+1D6C9  1D311 
ι U+03B9  𝛊 U+1D6CA  1D311 
κ U+03BA  𝛋 U+1D6CB  1D311 
λ U+03BB  𝛌 U+1D6CC  1D311 
μ U+03BC  𝛍 U+1D6CD  1D311 
ν U+03BD  𝛎 U+1D6CE  1D311 
ξ U+03BE  𝛏 U+1D6CF  1D311 
ο U+03BF  𝛐 U+1D6D0  1D311 
π U+03C0  𝛑 U+1D6D1  1D311 
ρ U+03C1  𝛒 U+1D6D2  1D311 
ς U+03C2  𝛓 U+1D6D3  1D311 
σ U+03C3  𝛔 U+1D6D4  1D311 
τ U+03C4  𝛕 U+1D6D5  1D311 
υ U+03C5  𝛖 U+1D6D6  1D311 
φ U+03C6  𝛗 U+1D6D7  1D311 
χ U+03C7  𝛘 U+1D6D8  1D311 
ψ U+03C8  𝛙 U+1D6D9  1D311 
ω U+03C9  𝛚 U+1D6DA  1D311 
∂ U+2202  𝛛 U+1D6DB  1B4D9 
ϵ U+03F5  𝛜 U+1D6DC  1D2E7 
ϑ U+03D1  𝛝 U+1D6DD  1D30C 
ϰ U+03F0  𝛞 U+1D6DE  1D2EE 
ϕ U+03D5  𝛟 U+1D6DF  1D30A 
ϱ U+03F1  𝛠 U+1D6E0  1D2EF 
ϖ U+03D6  𝛡 U+1D6E1  1D30B 
Ϝ U+03DC  𝟊 U+1D7CA  1D3EE 
ϝ U+03DD  𝟋 U+1D7CB  1D3EE 
0 U+0030  𝟎 U+1D7CE  1D79E 
1 U+0031  𝟏 U+1D7CF  1D79E 
2 U+0032  𝟐 U+1D7D0  1D79E 
3 U+0033  𝟑 U+1D7D1  1D79E 
4 U+0034  𝟒 U+1D7D2  1D79E 
5 U+0035  𝟓 U+1D7D3  1D79E 
6 U+0036  𝟔 U+1D7D4  1D79E 
7 U+0037  𝟕 U+1D7D5  1D79E 
8 U+0038  𝟖 U+1D7D6  1D79E 
9 U+0039  𝟗 U+1D7D7  1D79E 
This section is nonnormative.
Original  fraktur  Δ_{code point} 

A U+0041  𝔄 U+1D504  1D4C3 
B U+0042  𝔅 U+1D505  1D4C3 
C U+0043  ℭ U+0212D  20EA 
D U+0044  𝔇 U+1D507  1D4C3 
E U+0045  𝔈 U+1D508  1D4C3 
F U+0046  𝔉 U+1D509  1D4C3 
G U+0047  𝔊 U+1D50A  1D4C3 
H U+0048  ℌ U+0210C  20C4 
I U+0049  ℑ U+02111  20C8 
J U+004A  𝔍 U+1D50D  1D4C3 
K U+004B  𝔎 U+1D50E  1D4C3 
L U+004C  𝔏 U+1D50F  1D4C3 
M U+004D  𝔐 U+1D510  1D4C3 
N U+004E  𝔑 U+1D511  1D4C3 
O U+004F  𝔒 U+1D512  1D4C3 
P U+0050  𝔓 U+1D513  1D4C3 
Q U+0051  𝔔 U+1D514  1D4C3 
R U+0052  ℜ U+0211C  20CA 
S U+0053  𝔖 U+1D516  1D4C3 
T U+0054  𝔗 U+1D517  1D4C3 
U U+0055  𝔘 U+1D518  1D4C3 
V U+0056  𝔙 U+1D519  1D4C3 
W U+0057  𝔚 U+1D51A  1D4C3 
X U+0058  𝔛 U+1D51B  1D4C3 
Y U+0059  𝔜 U+1D51C  1D4C3 
Z U+005A  ℨ U+02128  20CE 
a U+0061  𝔞 U+1D51E  1D4BD 
b U+0062  𝔟 U+1D51F  1D4BD 
c U+0063  𝔠 U+1D520  1D4BD 
d U+0064  𝔡 U+1D521  1D4BD 
e U+0065  𝔢 U+1D522  1D4BD 
f U+0066  𝔣 U+1D523  1D4BD 
g U+0067  𝔤 U+1D524  1D4BD 
h U+0068  𝔥 U+1D525  1D4BD 
i U+0069  𝔦 U+1D526  1D4BD 
j U+006A  𝔧 U+1D527  1D4BD 
k U+006B  𝔨 U+1D528  1D4BD 
l U+006C  𝔩 U+1D529  1D4BD 
m U+006D  𝔪 U+1D52A  1D4BD 
n U+006E  𝔫 U+1D52B  1D4BD 
o U+006F  𝔬 U+1D52C  1D4BD 
p U+0070  𝔭 U+1D52D  1D4BD 
q U+0071  𝔮 U+1D52E  1D4BD 
r U+0072  𝔯 U+1D52F  1D4BD 
s U+0073  𝔰 U+1D530  1D4BD 
t U+0074  𝔱 U+1D531  1D4BD 
u U+0075  𝔲 U+1D532  1D4BD 
v U+0076  𝔳 U+1D533  1D4BD 
w U+0077  𝔴 U+1D534  1D4BD 
x U+0078  𝔵 U+1D535  1D4BD 
y U+0079  𝔶 U+1D536  1D4BD 
z U+007A  𝔷 U+1D537  1D4BD 
This section is nonnormative.
Original  script  Δ_{code point} 

A U+0041  𝒜 U+1D49C  1D45B 
B U+0042  ℬ U+0212C  20EA 
C U+0043  𝒞 U+1D49E  1D45B 
D U+0044  𝒟 U+1D49F  1D45B 
E U+0045  ℰ U+02130  20EB 
F U+0046  ℱ U+02131  20EB 
G U+0047  𝒢 U+1D4A2  1D45B 
H U+0048  ℋ U+0210B  20C3 
I U+0049  ℐ U+02110  20C7 
J U+004A  𝒥 U+1D4A5  1D45B 
K U+004B  𝒦 U+1D4A6  1D45B 
L U+004C  ℒ U+02112  20C6 
M U+004D  ℳ U+02133  20E6 
N U+004E  𝒩 U+1D4A9  1D45B 
O U+004F  𝒪 U+1D4AA  1D45B 
P U+0050  𝒫 U+1D4AB  1D45B 
Q U+0051  𝒬 U+1D4AC  1D45B 
R U+0052  ℛ U+0211B  20C9 
S U+0053  𝒮 U+1D4AE  1D45B 
T U+0054  𝒯 U+1D4AF  1D45B 
U U+0055  𝒰 U+1D4B0  1D45B 
V U+0056  𝒱 U+1D4B1  1D45B 
W U+0057  𝒲 U+1D4B2  1D45B 
X U+0058  𝒳 U+1D4B3  1D45B 
Y U+0059  𝒴 U+1D4B4  1D45B 
Z U+005A  𝒵 U+1D4B5  1D45B 
a U+0061  𝒶 U+1D4B6  1D455 
b U+0062  𝒷 U+1D4B7  1D455 
c U+0063  𝒸 U+1D4B8  1D455 
d U+0064  𝒹 U+1D4B9  1D455 
e U+0065  ℯ U+0212F  20CA 
f U+0066  𝒻 U+1D4BB  1D455 
g U+0067  ℊ U+0210A  20A3 
h U+0068  𝒽 U+1D4BD  1D455 
i U+0069  𝒾 U+1D4BE  1D455 
j U+006A  𝒿 U+1D4BF  1D455 
k U+006B  𝓀 U+1D4C0  1D455 
l U+006C  𝓁 U+1D4C1  1D455 
m U+006D  𝓂 U+1D4C2  1D455 
n U+006E  𝓃 U+1D4C3  1D455 
o U+006F  ℴ U+02134  20C5 
p U+0070  𝓅 U+1D4C5  1D455 
q U+0071  𝓆 U+1D4C6  1D455 
r U+0072  𝓇 U+1D4C7  1D455 
s U+0073  𝓈 U+1D4C8  1D455 
t U+0074  𝓉 U+1D4C9  1D455 
u U+0075  𝓊 U+1D4CA  1D455 
v U+0076  𝓋 U+1D4CB  1D455 
w U+0077  𝓌 U+1D4CC  1D455 
x U+0078  𝓍 U+1D4CD  1D455 
y U+0079  𝓎 U+1D4CE  1D455 
z U+007A  𝓏 U+1D4CF  1D455 
This section is nonnormative.
Original  monospace  Δ_{code point} 

A U+0041  𝙰 U+1D670  1D62F 
B U+0042  𝙱 U+1D671  1D62F 
C U+0043  𝙲 U+1D672  1D62F 
D U+0044  𝙳 U+1D673  1D62F 
E U+0045  𝙴 U+1D674  1D62F 
F U+0046  𝙵 U+1D675  1D62F 
G U+0047  𝙶 U+1D676  1D62F 
H U+0048  𝙷 U+1D677  1D62F 
I U+0049  𝙸 U+1D678  1D62F 
J U+004A  𝙹 U+1D679  1D62F 
K U+004B  𝙺 U+1D67A  1D62F 
L U+004C  𝙻 U+1D67B  1D62F 
M U+004D  𝙼 U+1D67C  1D62F 
N U+004E  𝙽 U+1D67D  1D62F 
O U+004F  𝙾 U+1D67E  1D62F 
P U+0050  𝙿 U+1D67F  1D62F 
Q U+0051  𝚀 U+1D680  1D62F 
R U+0052  𝚁 U+1D681  1D62F 
S U+0053  𝚂 U+1D682  1D62F 
T U+0054  𝚃 U+1D683  1D62F 
U U+0055  𝚄 U+1D684  1D62F 
V U+0056  𝚅 U+1D685  1D62F 
W U+0057  𝚆 U+1D686  1D62F 
X U+0058  𝚇 U+1D687  1D62F 
Y U+0059  𝚈 U+1D688  1D62F 
Z U+005A  𝚉 U+1D689  1D62F 
a U+0061  𝚊 U+1D68A  1D629 
b U+0062  𝚋 U+1D68B  1D629 
c U+0063  𝚌 U+1D68C  1D629 
d U+0064  𝚍 U+1D68D  1D629 
e U+0065  𝚎 U+1D68E  1D629 
f U+0066  𝚏 U+1D68F  1D629 
g U+0067  𝚐 U+1D690  1D629 
h U+0068  𝚑 U+1D691  1D629 
i U+0069  𝚒 U+1D692  1D629 
j U+006A  𝚓 U+1D693  1D629 
k U+006B  𝚔 U+1D694  1D629 
l U+006C  𝚕 U+1D695  1D629 
m U+006D  𝚖 U+1D696  1D629 
n U+006E  𝚗 U+1D697  1D629 
o U+006F  𝚘 U+1D698  1D629 
p U+0070  𝚙 U+1D699  1D629 
q U+0071  𝚚 U+1D69A  1D629 
r U+0072  𝚛 U+1D69B  1D629 
s U+0073  𝚜 U+1D69C  1D629 
t U+0074  𝚝 U+1D69D  1D629 
u U+0075  𝚞 U+1D69E  1D629 
v U+0076  𝚟 U+1D69F  1D629 
w U+0077  𝚠 U+1D6A0  1D629 
x U+0078  𝚡 U+1D6A1  1D629 
y U+0079  𝚢 U+1D6A2  1D629 
z U+007A  𝚣 U+1D6A3  1D629 
0 U+0030  𝟶 U+1D7F6  1D7C6 
1 U+0031  𝟷 U+1D7F7  1D7C6 
2 U+0032  𝟸 U+1D7F8  1D7C6 
3 U+0033  𝟹 U+1D7F9  1D7C6 
4 U+0034  𝟺 U+1D7FA  1D7C6 
5 U+0035  𝟻 U+1D7FB  1D7C6 
6 U+0036  𝟼 U+1D7FC  1D7C6 
7 U+0037  𝟽 U+1D7FD  1D7C6 
8 U+0038  𝟾 U+1D7FE  1D7C6 
9 U+0039  𝟿 U+1D7FF  1D7C6 
This section is nonnormative.
Original  initial  Δ_{code point} 

ب U+0628  𞸡 U+1EE21  1E7F9 
ج U+062C  𞸢 U+1EE22  1E7F6 
ه U+0647  𞸤 U+1EE24  1E7DD 
ح U+062D  𞸧 U+1EE27  1E7FA 
ي U+064A  𞸩 U+1EE29  1E7DF 
ك U+0643  𞸪 U+1EE2A  1E7E7 
ل U+0644  𞸫 U+1EE2B  1E7E7 
م U+0645  𞸬 U+1EE2C  1E7E7 
ن U+0646  𞸭 U+1EE2D  1E7E7 
س U+0633  𞸮 U+1EE2E  1E7FB 
ع U+0639  𞸯 U+1EE2F  1E7F6 
ف U+0641  𞸰 U+1EE30  1E7EF 
ص U+0635  𞸱 U+1EE31  1E7FC 
ق U+0642  𞸲 U+1EE32  1E7F0 
ش U+0634  𞸴 U+1EE34  1E800 
ت U+062A  𞸵 U+1EE35  1E80B 
ث U+062B  𞸶 U+1EE36  1E80B 
خ U+062E  𞸷 U+1EE37  1E809 
ض U+0636  𞸹 U+1EE39  1E803 
غ U+063A  𞸻 U+1EE3B  1E801 
This section is nonnormative.
Original  sansserif  Δ_{code point} 

A U+0041  𝖠 U+1D5A0  1D55F 
B U+0042  𝖡 U+1D5A1  1D55F 
C U+0043  𝖢 U+1D5A2  1D55F 
D U+0044  𝖣 U+1D5A3  1D55F 
E U+0045  𝖤 U+1D5A4  1D55F 
F U+0046  𝖥 U+1D5A5  1D55F 
G U+0047  𝖦 U+1D5A6  1D55F 
H U+0048  𝖧 U+1D5A7  1D55F 
I U+0049  𝖨 U+1D5A8  1D55F 
J U+004A  𝖩 U+1D5A9  1D55F 
K U+004B  𝖪 U+1D5AA  1D55F 
L U+004C  𝖫 U+1D5AB  1D55F 
M U+004D  𝖬 U+1D5AC  1D55F 
N U+004E  𝖭 U+1D5AD  1D55F 
O U+004F  𝖮 U+1D5AE  1D55F 
P U+0050  𝖯 U+1D5AF  1D55F 
Q U+0051  𝖰 U+1D5B0  1D55F 
R U+0052  𝖱 U+1D5B1  1D55F 
S U+0053  𝖲 U+1D5B2  1D55F 
T U+0054  𝖳 U+1D5B3  1D55F 
U U+0055  𝖴 U+1D5B4  1D55F 
V U+0056  𝖵 U+1D5B5  1D55F 
W U+0057  𝖶 U+1D5B6  1D55F 
X U+0058  𝖷 U+1D5B7  1D55F 
Y U+0059  𝖸 U+1D5B8  1D55F 
Z U+005A  𝖹 U+1D5B9  1D55F 
a U+0061  𝖺 U+1D5BA  1D559 
b U+0062  𝖻 U+1D5BB  1D559 
c U+0063  𝖼 U+1D5BC  1D559 
d U+0064  𝖽 U+1D5BD  1D559 
e U+0065  𝖾 U+1D5BE  1D559 
f U+0066  𝖿 U+1D5BF  1D559 
g U+0067  𝗀 U+1D5C0  1D559 
h U+0068  𝗁 U+1D5C1  1D559 
i U+0069  𝗂 U+1D5C2  1D559 
j U+006A  𝗃 U+1D5C3  1D559 
k U+006B  𝗄 U+1D5C4  1D559 
l U+006C  𝗅 U+1D5C5  1D559 
m U+006D  𝗆 U+1D5C6  1D559 
n U+006E  𝗇 U+1D5C7  1D559 
o U+006F  𝗈 U+1D5C8  1D559 
p U+0070  𝗉 U+1D5C9  1D559 
q U+0071  𝗊 U+1D5CA  1D559 
r U+0072  𝗋 U+1D5CB  1D559 
s U+0073  𝗌 U+1D5CC  1D559 
t U+0074  𝗍 U+1D5CD  1D559 
u U+0075  𝗎 U+1D5CE  1D559 
v U+0076  𝗏 U+1D5CF  1D559 
w U+0077  𝗐 U+1D5D0  1D559 
x U+0078  𝗑 U+1D5D1  1D559 
y U+0079  𝗒 U+1D5D2  1D559 
z U+007A  𝗓 U+1D5D3  1D559 
0 U+0030  𝟢 U+1D7E2  1D7B2 
1 U+0031  𝟣 U+1D7E3  1D7B2 
2 U+0032  𝟤 U+1D7E4  1D7B2 
3 U+0033  𝟥 U+1D7E5  1D7B2 
4 U+0034  𝟦 U+1D7E6  1D7B2 
5 U+0035  𝟧 U+1D7E7  1D7B2 
6 U+0036  𝟨 U+1D7E8  1D7B2 
7 U+0037  𝟩 U+1D7E9  1D7B2 
8 U+0038  𝟪 U+1D7EA  1D7B2 
9 U+0039  𝟫 U+1D7EB  1D7B2 
This section is nonnormative.
Original  doublestruck  Δ_{code point} 

A U+0041  𝔸 U+1D538  1D4F7 
B U+0042  𝔹 U+1D539  1D4F7 
C U+0043  ℂ U+02102  20BF 
D U+0044  𝔻 U+1D53B  1D4F7 
E U+0045  𝔼 U+1D53C  1D4F7 
F U+0046  𝔽 U+1D53D  1D4F7 
G U+0047  𝔾 U+1D53E  1D4F7 
H U+0048  ℍ U+0210D  20C5 
I U+0049  𝕀 U+1D540  1D4F7 
J U+004A  𝕁 U+1D541  1D4F7 
K U+004B  𝕂 U+1D542  1D4F7 
L U+004C  𝕃 U+1D543  1D4F7 
M U+004D  𝕄 U+1D544  1D4F7 
N U+004E  ℕ U+02115  20C7 
O U+004F  𝕆 U+1D546  1D4F7 
P U+0050  ℙ U+02119  20C9 
Q U+0051  ℚ U+0211A  20C9 
R U+0052  ℝ U+0211D  20CB 
S U+0053  𝕊 U+1D54A  1D4F7 
T U+0054  𝕋 U+1D54B  1D4F7 
U U+0055  𝕌 U+1D54C  1D4F7 
V U+0056  𝕍 U+1D54D  1D4F7 
W U+0057  𝕎 U+1D54E  1D4F7 
X U+0058  𝕏 U+1D54F  1D4F7 
Y U+0059  𝕐 U+1D550  1D4F7 
Z U+005A  ℤ U+02124  20CA 
a U+0061  𝕒 U+1D552  1D4F1 
b U+0062  𝕓 U+1D553  1D4F1 
c U+0063  𝕔 U+1D554  1D4F1 
d U+0064  𝕕 U+1D555  1D4F1 
e U+0065  𝕖 U+1D556  1D4F1 
f U+0066  𝕗 U+1D557  1D4F1 
g U+0067  𝕘 U+1D558  1D4F1 
h U+0068  𝕙 U+1D559  1D4F1 
i U+0069  𝕚 U+1D55A  1D4F1 
j U+006A  𝕛 U+1D55B  1D4F1 
k U+006B  𝕜 U+1D55C  1D4F1 
l U+006C  𝕝 U+1D55D  1D4F1 
m U+006D  𝕞 U+1D55E  1D4F1 
n U+006E  𝕟 U+1D55F  1D4F1 
o U+006F  𝕠 U+1D560  1D4F1 
p U+0070  𝕡 U+1D561  1D4F1 
q U+0071  𝕢 U+1D562  1D4F1 
r U+0072  𝕣 U+1D563  1D4F1 
s U+0073  𝕤 U+1D564  1D4F1 
t U+0074  𝕥 U+1D565  1D4F1 
u U+0075  𝕦 U+1D566  1D4F1 
v U+0076  𝕧 U+1D567  1D4F1 
w U+0077  𝕨 U+1D568  1D4F1 
x U+0078  𝕩 U+1D569  1D4F1 
y U+0079  𝕪 U+1D56A  1D4F1 
z U+007A  𝕫 U+1D56B  1D4F1 
0 U+0030  𝟘 U+1D7D8  1D7A8 
1 U+0031  𝟙 U+1D7D9  1D7A8 
2 U+0032  𝟚 U+1D7DA  1D7A8 
3 U+0033  𝟛 U+1D7DB  1D7A8 
4 U+0034  𝟜 U+1D7DC  1D7A8 
5 U+0035  𝟝 U+1D7DD  1D7A8 
6 U+0036  𝟞 U+1D7DE  1D7A8 
7 U+0037  𝟟 U+1D7DF  1D7A8 
8 U+0038  𝟠 U+1D7E0  1D7A8 
9 U+0039  𝟡 U+1D7E1  1D7A8 
ب U+0628  𞺡 U+1EEA1  1E879 
ج U+062C  𞺢 U+1EEA2  1E876 
د U+062F  𞺣 U+1EEA3  1E874 
و U+0648  𞺥 U+1EEA5  1E85D 
ز U+0632  𞺦 U+1EEA6  1E874 
ح U+062D  𞺧 U+1EEA7  1E87A 
ط U+0637  𞺨 U+1EEA8  1E871 
ي U+064A  𞺩 U+1EEA9  1E85F 
ل U+0644  𞺫 U+1EEAB  1E867 
م U+0645  𞺬 U+1EEAC  1E867 
ن U+0646  𞺭 U+1EEAD  1E867 
س U+0633  𞺮 U+1EEAE  1E87B 
ع U+0639  𞺯 U+1EEAF  1E876 
ف U+0641  𞺰 U+1EEB0  1E86F 
ص U+0635  𞺱 U+1EEB1  1E87C 
ق U+0642  𞺲 U+1EEB2  1E870 
ر U+0631  𞺳 U+1EEB3  1E882 
ش U+0634  𞺴 U+1EEB4  1E880 
ت U+062A  𞺵 U+1EEB5  1E88B 
ث U+062B  𞺶 U+1EEB6  1E88B 
خ U+062E  𞺷 U+1EEB7  1E889 
ذ U+0630  𞺸 U+1EEB8  1E888 
ض U+0636  𞺹 U+1EEB9  1E883 
ظ U+0638  𞺺 U+1EEBA  1E882 
غ U+063A  𞺻 U+1EEBB  1E881 
This section is nonnormative.
Original  looped  Δ_{code point} 

ا U+0627  𞺀 U+1EE80  1E859 
ب U+0628  𞺁 U+1EE81  1E859 
ج U+062C  𞺂 U+1EE82  1E856 
د U+062F  𞺃 U+1EE83  1E854 
ه U+0647  𞺄 U+1EE84  1E83D 
و U+0648  𞺅 U+1EE85  1E83D 
ز U+0632  𞺆 U+1EE86  1E854 
ح U+062D  𞺇 U+1EE87  1E85A 
ط U+0637  𞺈 U+1EE88  1E851 
ي U+064A  𞺉 U+1EE89  1E83F 
ل U+0644  𞺋 U+1EE8B  1E847 
م U+0645  𞺌 U+1EE8C  1E847 
ن U+0646  𞺍 U+1EE8D  1E847 
س U+0633  𞺎 U+1EE8E  1E85B 
ع U+0639  𞺏 U+1EE8F  1E856 
ف U+0641  𞺐 U+1EE90  1E84F 
ص U+0635  𞺑 U+1EE91  1E85C 
ق U+0642  𞺒 U+1EE92  1E850 
ر U+0631  𞺓 U+1EE93  1E862 
ش U+0634  𞺔 U+1EE94  1E860 
ت U+062A  𞺕 U+1EE95  1E86B 
ث U+062B  𞺖 U+1EE96  1E86B 
خ U+062E  𞺗 U+1EE97  1E869 
ذ U+0630  𞺘 U+1EE98  1E868 
ض U+0636  𞺙 U+1EE99  1E863 
ظ U+0638  𞺚 U+1EE9A  1E862 
غ U+063A  𞺛 U+1EE9B  1E861 
This section is nonnormative.
Original  stretched  Δ_{code point} 

ب U+0628  𞹡 U+1EE61  1E839 
ج U+062C  𞹢 U+1EE62  1E836 
ه U+0647  𞹤 U+1EE64  1E81D 
ح U+062D  𞹧 U+1EE67  1E83A 
ط U+0637  𞹨 U+1EE68  1E831 
ي U+064A  𞹩 U+1EE69  1E81F 
ك U+0643  𞹪 U+1EE6A  1E827 
م U+0645  𞹬 U+1EE6C  1E827 
ن U+0646  𞹭 U+1EE6D  1E827 
س U+0633  𞹮 U+1EE6E  1E83B 
ع U+0639  𞹯 U+1EE6F  1E836 
ف U+0641  𞹰 U+1EE70  1E82F 
ص U+0635  𞹱 U+1EE71  1E83C 
ق U+0642  𞹲 U+1EE72  1E830 
ش U+0634  𞹴 U+1EE74  1E840 
ت U+062A  𞹵 U+1EE75  1E84B 
ث U+062B  𞹶 U+1EE76  1E84B 
خ U+062E  𞹷 U+1EE77  1E849 
ض U+0636  𞹹 U+1EE79  1E843 
ظ U+0638  𞹺 U+1EE7A  1E842 
غ U+063A  𞹻 U+1EE7B  1E841 
ٮ U+066E  𞹼 U+1EE7C  1E80E 
ڡ U+06A1  𞹾 U+1EE7E  1E7DD 
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 nonnormative.
Original  boldfraktur  Δ_{code point} 

A U+0041  𝕬 U+1D56C  1D52B 
B U+0042  𝕭 U+1D56D  1D52B 
C U+0043  𝕮 U+1D56E  1D52B 
D U+0044  𝕯 U+1D56F  1D52B 
E U+0045  𝕰 U+1D570  1D52B 
F U+0046  𝕱 U+1D571  1D52B 
G U+0047  𝕲 U+1D572  1D52B 
H U+0048  𝕳 U+1D573  1D52B 
I U+0049  𝕴 U+1D574  1D52B 
J U+004A  𝕵 U+1D575  1D52B 
K U+004B  𝕶 U+1D576  1D52B 
L U+004C  𝕷 U+1D577  1D52B 
M U+004D  𝕸 U+1D578  1D52B 
N U+004E  𝕹 U+1D579  1D52B 
O U+004F  𝕺 U+1D57A  1D52B 
P U+0050  𝕻 U+1D57B  1D52B 
Q U+0051  𝕼 U+1D57C  1D52B 
R U+0052  𝕽 U+1D57D  1D52B 
S U+0053  𝕾 U+1D57E  1D52B 
T U+0054  𝕿 U+1D57F  1D52B 
U U+0055  𝖀 U+1D580  1D52B 
V U+0056  𝖁 U+1D581  1D52B 
W U+0057  𝖂 U+1D582  1D52B 
X U+0058  𝖃 U+1D583  1D52B 
Y U+0059  𝖄 U+1D584  1D52B 
Z U+005A  𝖅 U+1D585  1D52B 
a U+0061  𝖆 U+1D586  1D525 
b U+0062  𝖇 U+1D587  1D525 
c U+0063  𝖈 U+1D588  1D525 
d U+0064  𝖉 U+1D589  1D525 
e U+0065  𝖊 U+1D58A  1D525 
f U+0066  𝖋 U+1D58B  1D525 
g U+0067  𝖌 U+1D58C  1D525 
h U+0068  𝖍 U+1D58D  1D525 
i U+0069  𝖎 U+1D58E  1D525 
j U+006A  𝖏 U+1D58F  1D525 
k U+006B  𝖐 U+1D590  1D525 
l U+006C  𝖑 U+1D591  1D525 
m U+006D  𝖒 U+1D592  1D525 
n U+006E  𝖓 U+1D593  1D525 
o U+006F  𝖔 U+1D594  1D525 
p U+0070  𝖕 U+1D595  1D525 
q U+0071  𝖖 U+1D596  1D525 
r U+0072  𝖗 U+1D597  1D525 
s U+0073  𝖘 U+1D598  1D525 
t U+0074  𝖙 U+1D599  1D525 
u U+0075  𝖚 U+1D59A  1D525 
v U+0076  𝖛 U+1D59B  1D525 
w U+0077  𝖜 U+1D59C  1D525 
x U+0078  𝖝 U+1D59D  1D525 
y U+0079  𝖞 U+1D59E  1D525 
z U+007A  𝖟 U+1D59F  1D525 
This section is nonnormative.
Original  sansserifbolditalic  Δ_{code point} 

A U+0041  𝘼 U+1D63C  1D5FB 
B U+0042  𝘽 U+1D63D  1D5FB 
C U+0043  𝘾 U+1D63E  1D5FB 
D U+0044  𝘿 U+1D63F  1D5FB 
E U+0045  𝙀 U+1D640  1D5FB 
F U+0046  𝙁 U+1D641  1D5FB 
G U+0047  𝙂 U+1D642  1D5FB 
H U+0048  𝙃 U+1D643  1D5FB 
I U+0049  𝙄 U+1D644  1D5FB 
J U+004A  𝙅 U+1D645  1D5FB 
K U+004B  𝙆 U+1D646  1D5FB 
L U+004C  𝙇 U+1D647  1D5FB 
M U+004D  𝙈 U+1D648  1D5FB 
N U+004E  𝙉 U+1D649  1D5FB 
O U+004F  𝙊 U+1D64A  1D5FB 
P U+0050  𝙋 U+1D64B  1D5FB 
Q U+0051  𝙌 U+1D64C  1D5FB 
R U+0052  𝙍 U+1D64D  1D5FB 
S U+0053  𝙎 U+1D64E  1D5FB 
T U+0054  𝙏 U+1D64F  1D5FB 
U U+0055  𝙐 U+1D650  1D5FB 
V U+0056  𝙑 U+1D651  1D5FB 
W U+0057  𝙒 U+1D652  1D5FB 
X U+0058  𝙓 U+1D653  1D5FB 
Y U+0059  𝙔 U+1D654  1D5FB 
Z U+005A  𝙕 U+1D655  1D5FB 
a U+0061  𝙖 U+1D656  1D5F5 
b U+0062  𝙗 U+1D657  1D5F5 
c U+0063  𝙘 U+1D658  1D5F5 
d U+0064  𝙙 U+1D659  1D5F5 
e U+0065  𝙚 U+1D65A  1D5F5 
f U+0066  𝙛 U+1D65B  1D5F5 
g U+0067  𝙜 U+1D65C  1D5F5 
h U+0068  𝙝 U+1D65D  1D5F5 
i U+0069  𝙞 U+1D65E  1D5F5 
j U+006A  𝙟 U+1D65F  1D5F5 
k U+006B  𝙠 U+1D660  1D5F5 
l U+006C  𝙡 U+1D661  1D5F5 
m U+006D  𝙢 U+1D662  1D5F5 
n U+006E  𝙣 U+1D663  1D5F5 
o U+006F  𝙤 U+1D664  1D5F5 
p U+0070  𝙥 U+1D665  1D5F5 
q U+0071  𝙦 U+1D666  1D5F5 
r U+0072  𝙧 U+1D667  1D5F5 
s U+0073  𝙨 U+1D668  1D5F5 
t U+0074  𝙩 U+1D669  1D5F5 
u U+0075  𝙪 U+1D66A  1D5F5 
v U+0076  𝙫 U+1D66B  1D5F5 
w U+0077  𝙬 U+1D66C  1D5F5 
x U+0078  𝙭 U+1D66D  1D5F5 
y U+0079  𝙮 U+1D66E  1D5F5 
z U+007A  𝙯 U+1D66F  1D5F5 
Α U+0391  𝞐 U+1D790  1D3FF 
Β U+0392  𝞑 U+1D791  1D3FF 
Γ U+0393  𝞒 U+1D792  1D3FF 
Δ U+0394  𝞓 U+1D793  1D3FF 
Ε U+0395  𝞔 U+1D794  1D3FF 
Ζ U+0396  𝞕 U+1D795  1D3FF 
Η U+0397  𝞖 U+1D796  1D3FF 
Θ U+0398  𝞗 U+1D797  1D3FF 
Ι U+0399  𝞘 U+1D798  1D3FF 
Κ U+039A  𝞙 U+1D799  1D3FF 
Λ U+039B  𝞚 U+1D79A  1D3FF 
Μ U+039C  𝞛 U+1D79B  1D3FF 
Ν U+039D  𝞜 U+1D79C  1D3FF 
Ξ U+039E  𝞝 U+1D79D  1D3FF 
Ο U+039F  𝞞 U+1D79E  1D3FF 
Π U+03A0  𝞟 U+1D79F  1D3FF 
Ρ U+03A1  𝞠 U+1D7A0  1D3FF 
ϴ U+03F4  𝞡 U+1D7A1  1D3AD 
Σ U+03A3  𝞢 U+1D7A2  1D3FF 
Τ U+03A4  𝞣 U+1D7A3  1D3FF 
Υ U+03A5  𝞤 U+1D7A4  1D3FF 
Φ U+03A6  𝞥 U+1D7A5  1D3FF 
Χ U+03A7  𝞦 U+1D7A6  1D3FF 
Ψ U+03A8  𝞧 U+1D7A7  1D3FF 
Ω U+03A9  𝞨 U+1D7A8  1D3FF 
∇ U+2207  𝞩 U+1D7A9  1B5A2 
α U+03B1  𝞪 U+1D7AA  1D3F9 
β U+03B2  𝞫 U+1D7AB  1D3F9 
γ U+03B3  𝞬 U+1D7AC  1D3F9 
δ U+03B4  𝞭 U+1D7AD  1D3F9 
ε U+03B5  𝞮 U+1D7AE  1D3F9 
ζ U+03B6  𝞯 U+1D7AF  1D3F9 
η U+03B7  𝞰 U+1D7B0  1D3F9 
θ U+03B8  𝞱 U+1D7B1  1D3F9 
ι U+03B9  𝞲 U+1D7B2  1D3F9 
κ U+03BA  𝞳 U+1D7B3  1D3F9 
λ U+03BB  𝞴 U+1D7B4  1D3F9 
μ U+03BC  𝞵 U+1D7B5  1D3F9 
ν U+03BD  𝞶 U+1D7B6  1D3F9 
ξ U+03BE  𝞷 U+1D7B7  1D3F9 
ο U+03BF  𝞸 U+1D7B8  1D3F9 
π U+03C0  𝞹 U+1D7B9  1D3F9 
ρ U+03C1  𝞺 U+1D7BA  1D3F9 
ς U+03C2  𝞻 U+1D7BB  1D3F9 
σ U+03C3  𝞼 U+1D7BC  1D3F9 
τ U+03C4  𝞽 U+1D7BD  1D3F9 
υ U+03C5  𝞾 U+1D7BE  1D3F9 
φ U+03C6  𝞿 U+1D7BF  1D3F9 
χ U+03C7  𝟀 U+1D7C0  1D3F9 
ψ U+03C8  𝟁 U+1D7C1  1D3F9 
ω U+03C9  𝟂 U+1D7C2  1D3F9 
∂ U+2202  𝟃 U+1D7C3  1B5C1 
ϵ U+03F5  𝟄 U+1D7C4  1D3CF 
ϑ U+03D1  𝟅 U+1D7C5  1D3F4 
ϰ U+03F0  𝟆 U+1D7C6  1D3D6 
ϕ U+03D5  𝟇 U+1D7C7  1D3F2 
ϱ U+03F1  𝟈 U+1D7C8  1D3D7 
ϖ U+03D6  𝟉 U+1D7C9  1D3F3 
This section is nonnormative.
Original  sansserifitalic  Δ_{code point} 

A U+0041  𝘈 U+1D608  1D5C7 
B U+0042  𝘉 U+1D609  1D5C7 
C U+0043  𝘊 U+1D60A  1D5C7 
D U+0044  𝘋 U+1D60B  1D5C7 
E U+0045  𝘌 U+1D60C  1D5C7 
F U+0046  𝘍 U+1D60D  1D5C7 
G U+0047  𝘎 U+1D60E  1D5C7 
H U+0048  𝘏 U+1D60F  1D5C7 
I U+0049  𝘐 U+1D610  1D5C7 
J U+004A  𝘑 U+1D611  1D5C7 
K U+004B  𝘒 U+1D612  1D5C7 
L U+004C  𝘓 U+1D613  1D5C7 
M U+004D  𝘔 U+1D614  1D5C7 
N U+004E  𝘕 U+1D615  1D5C7 
O U+004F  𝘖 U+1D616  1D5C7 
P U+0050  𝘗 U+1D617  1D5C7 
Q U+0051  𝘘 U+1D618  1D5C7 
R U+0052  𝘙 U+1D619  1D5C7 
S U+0053  𝘚 U+1D61A  1D5C7 
T U+0054  𝘛 U+1D61B  1D5C7 
U U+0055  𝘜 U+1D61C  1D5C7 
V U+0056  𝘝 U+1D61D  1D5C7 
W U+0057  𝘞 U+1D61E  1D5C7 
X U+0058  𝘟 U+1D61F  1D5C7 
Y U+0059  𝘠 U+1D620  1D5C7 
Z U+005A  𝘡 U+1D621  1D5C7 
a U+0061  𝘢 U+1D622  1D5C1 
b U+0062  𝘣 U+1D623  1D5C1 
c U+0063  𝘤 U+1D624  1D5C1 
d U+0064  𝘥 U+1D625  1D5C1 
e U+0065  𝘦 U+1D626  1D5C1 
f U+0066  𝘧 U+1D627  1D5C1 
g U+0067  𝘨 U+1D628  1D5C1 
h U+0068  𝘩 U+1D629  1D5C1 
i U+0069  𝘪 U+1D62A  1D5C1 
j U+006A  𝘫 U+1D62B  1D5C1 
k U+006B  𝘬 U+1D62C  1D5C1 
l U+006C  𝘭 U+1D62D  1D5C1 
m U+006D  𝘮 U+1D62E  1D5C1 
n U+006E  𝘯 U+1D62F  1D5C1 
o U+006F  𝘰 U+1D630  1D5C1 
p U+0070  𝘱 U+1D631  1D5C1 
q U+0071  𝘲 U+1D632  1D5C1 
r U+0072  𝘳 U+1D633  1D5C1 
s U+0073  𝘴 U+1D634  1D5C1 
t U+0074  𝘵 U+1D635  1D5C1 
u U+0075  𝘶 U+1D636  1D5C1 
v U+0076  𝘷 U+1D637  1D5C1 
w U+0077  𝘸 U+1D638  1D5C1 
x U+0078  𝘹 U+1D639  1D5C1 
y U+0079  𝘺 U+1D63A  1D5C1 
z U+007A  𝘻 U+1D63B  1D5C1 
This section is nonnormative.
Original  boldsansserif  Δ_{code point} 

A U+0041  𝗔 U+1D5D4  1D593 
B U+0042  𝗕 U+1D5D5  1D593 
C U+0043  𝗖 U+1D5D6  1D593 
D U+0044  𝗗 U+1D5D7  1D593 
E U+0045  𝗘 U+1D5D8  1D593 
F U+0046  𝗙 U+1D5D9  1D593 
G U+0047  𝗚 U+1D5DA  1D593 
H U+0048  𝗛 U+1D5DB  1D593 
I U+0049  𝗜 U+1D5DC  1D593 
J U+004A  𝗝 U+1D5DD  1D593 
K U+004B  𝗞 U+1D5DE  1D593 
L U+004C  𝗟 U+1D5DF  1D593 
M U+004D  𝗠 U+1D5E0  1D593 
N U+004E  𝗡 U+1D5E1  1D593 
O U+004F  𝗢 U+1D5E2  1D593 
P U+0050  𝗣 U+1D5E3  1D593 
Q U+0051  𝗤 U+1D5E4  1D593 
R U+0052  𝗥 U+1D5E5  1D593 
S U+0053  𝗦 U+1D5E6  1D593 
T U+0054  𝗧 U+1D5E7  1D593 
U U+0055  𝗨 U+1D5E8  1D593 
V U+0056  𝗩 U+1D5E9  1D593 
W U+0057  𝗪 U+1D5EA  1D593 
X U+0058  𝗫 U+1D5EB  1D593 
Y U+0059  𝗬 U+1D5EC  1D593 
Z U+005A  𝗭 U+1D5ED  1D593 
a U+0061  𝗮 U+1D5EE  1D58D 
b U+0062  𝗯 U+1D5EF  1D58D 
c U+0063  𝗰 U+1D5F0  1D58D 
d U+0064  𝗱 U+1D5F1  1D58D 
e U+0065  𝗲 U+1D5F2  1D58D 
f U+0066  𝗳 U+1D5F3  1D58D 
g U+0067  𝗴 U+1D5F4  1D58D 
h U+0068  𝗵 U+1D5F5  1D58D 
i U+0069  𝗶 U+1D5F6  1D58D 
j U+006A  𝗷 U+1D5F7  1D58D 
k U+006B  𝗸 U+1D5F8  1D58D 
l U+006C  𝗹 U+1D5F9  1D58D 
m U+006D  𝗺 U+1D5FA  1D58D 
n U+006E  𝗻 U+1D5FB  1D58D 
o U+006F  𝗼 U+1D5FC  1D58D 
p U+0070  𝗽 U+1D5FD  1D58D 
q U+0071  𝗾 U+1D5FE  1D58D 
r U+0072  𝗿 U+1D5FF  1D58D 
s U+0073  𝘀 U+1D600  1D58D 
t U+0074  𝘁 U+1D601  1D58D 
u U+0075  𝘂 U+1D602  1D58D 
v U+0076  𝘃 U+1D603  1D58D 
w U+0077  𝘄 U+1D604  1D58D 
x U+0078  𝘅 U+1D605  1D58D 
y U+0079  𝘆 U+1D606  1D58D 
z U+007A  𝘇 U+1D607  1D58D 
Α U+0391  𝝖 U+1D756  1D3C5 
Β U+0392  𝝗 U+1D757  1D3C5 
Γ U+0393  𝝘 U+1D758  1D3C5 
Δ U+0394  𝝙 U+1D759  1D3C5 
Ε U+0395  𝝚 U+1D75A  1D3C5 
Ζ U+0396  𝝛 U+1D75B  1D3C5 
Η U+0397  𝝜 U+1D75C  1D3C5 
Θ U+0398  𝝝 U+1D75D  1D3C5 
Ι U+0399  𝝞 U+1D75E  1D3C5 
Κ U+039A  𝝟 U+1D75F  1D3C5 
Λ U+039B  𝝠 U+1D760  1D3C5 
Μ U+039C  𝝡 U+1D761  1D3C5 
Ν U+039D  𝝢 U+1D762  1D3C5 
Ξ U+039E  𝝣 U+1D763  1D3C5 
Ο U+039F  𝝤 U+1D764  1D3C5 
Π U+03A0  𝝥 U+1D765  1D3C5 
Ρ U+03A1  𝝦 U+1D766  1D3C5 
ϴ U+03F4  𝝧 U+1D767  1D373 
Σ U+03A3  𝝨 U+1D768  1D3C5 
Τ U+03A4  𝝩 U+1D769  1D3C5 
Υ U+03A5  𝝪 U+1D76A  1D3C5 
Φ U+03A6  𝝫 U+1D76B  1D3C5 
Χ U+03A7  𝝬 U+1D76C  1D3C5 
Ψ U+03A8  𝝭 U+1D76D  1D3C5 
Ω U+03A9  𝝮 U+1D76E  1D3C5 
∇ U+2207  𝝯 U+1D76F  1B568 
α U+03B1  𝝰 U+1D770  1D3BF 
β U+03B2  𝝱 U+1D771  1D3BF 
γ U+03B3  𝝲 U+1D772  1D3BF 
δ U+03B4  𝝳 U+1D773  1D3BF 
ε U+03B5  𝝴 U+1D774  1D3BF 
ζ U+03B6  𝝵 U+1D775  1D3BF 
η U+03B7  𝝶 U+1D776  1D3BF 
θ U+03B8  𝝷 U+1D777  1D3BF 
ι U+03B9  𝝸 U+1D778  1D3BF 
κ U+03BA  𝝹 U+1D779  1D3BF 
λ U+03BB  𝝺 U+1D77A  1D3BF 
μ U+03BC  𝝻 U+1D77B  1D3BF 
ν U+03BD  𝝼 U+1D77C  1D3BF 
ξ U+03BE  𝝽 U+1D77D  1D3BF 
ο U+03BF  𝝾 U+1D77E  1D3BF 
π U+03C0  𝝿 U+1D77F  1D3BF 
ρ U+03C1  𝞀 U+1D780  1D3BF 
ς U+03C2  𝞁 U+1D781  1D3BF 
σ U+03C3  𝞂 U+1D782  1D3BF 
τ U+03C4  𝞃 U+1D783  1D3BF 
υ U+03C5  𝞄 U+1D784  1D3BF 
φ U+03C6  𝞅 U+1D785  1D3BF 
χ U+03C7  𝞆 U+1D786  1D3BF 
ψ U+03C8  𝞇 U+1D787  1D3BF 
ω U+03C9  𝞈 U+1D788  1D3BF 
∂ U+2202  𝞉 U+1D789  1B587 
ϵ U+03F5  𝞊 U+1D78A  1D395 
ϑ U+03D1  𝞋 U+1D78B  1D3BA 
ϰ U+03F0  𝞌 U+1D78C  1D39C 
ϕ U+03D5  𝞍 U+1D78D  1D3B8 
ϱ U+03F1  𝞎 U+1D78E  1D39D 
ϖ U+03D6  𝞏 U+1D78F  1D3B9 
0 U+0030  𝟬 U+1D7EC  1D7BC 
1 U+0031  𝟭 U+1D7ED  1D7BC 
2 U+0032  𝟮 U+1D7EE  1D7BC 
3 U+0033  𝟯 U+1D7EF  1D7BC 
4 U+0034  𝟰 U+1D7F0  1D7BC 
5 U+0035  𝟱 U+1D7F1  1D7BC 
6 U+0036  𝟲 U+1D7F2  1D7BC 
7 U+0037  𝟳 U+1D7F3  1D7BC 
8 U+0038  𝟴 U+1D7F4  1D7BC 
9 U+0039  𝟵 U+1D7F5  1D7BC 
This section is nonnormative.
MathML Core is based on MathML3. See the appendix E of [MathML3] for the people that contributed to that specification.
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é GreinerPetter, Anne van Kesteren, Boris Zbarsky, Brian Smith, Daniel Marques, David Carlisle, Deyan Ginev, Elika Etemad, Emilio Cobos Álvarez, ExE Boss, Ian Kilpatrick, Koji Ishii, L. David Baron, Michael Kohlhase, Michael Smith, Moritz Schubotz, Murray Sargent, Ryosuke Niwa, Sergey Malkin, Tab Atkins Jr., Viktor Yaffle and frankvel.
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.
Community Group members who have regularly participated to MathML Core meetings during the development of this specification: Brian Kardell, Bruce Miller, David Carlisle, Murray Sargent, Frédéric Wang, Neil Soiffer (Chair), Patrick Ion, Rob Buis, David Farmer, Steve Noble, Daniel Marques, Sam Dooley.
This section is nonnormative.
This specification adds script execution mechanisms via the MathML event handler attributes described in 2.1.3 Global 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
via href
or xlink:href
attributes, with
an URL pointing to an untrusted resource or even
javascript:
execution. These attributes are not
available in MathML Core. However, as described in
2.2.1 HTML 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 the
maction
element with
the actiontype
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>
<maction actiontype="statusline">
<mtext><a href="javascript:alert('JS execution')">Click me!</a></mtext>
<mtext>./thisisasafelink.html</mtext>
</maction>
</math>
This feature is not available in MathML Core, where
the maction
element essentially behaves
like an mrow
container with extra style.
An attacker can try to hang the UA by inserting very large
stretchy operators, effectively making the algorithm
shaping of the glyph assembly deal with a huge amount of
glyphs. UAs may work around this issue
by limiting r_{min} and
GlyphAssembly.partCount
to
maximum values.
As described in CSS Fonts Module, an attacker can try to rely on malformed or malicious fonts to exploit potential security faults in browser implementations. Because the OpenType 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 disabling 4. CSS Extensions for Math Layout.
This section is nonnormative.
As explained in 2.2.1 HTML and SVG,
MathML can be embedded into an SVG image via the
<foreignObject>
element which can thus be used in a
canvas
element.
UA may decide to implement any measure to prevent potential
information 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 to https://example.org/
.
It should not be possible for an attacker to determine whether that
link was visited by reading pixels via context.
.
For more about links in MathML, see
E. Security Considerations.
getImageData
()
let svg = `
<svg xmlns="http://www.w3.org/2000/svg" width="100px" height="100px">
<foreignObject width="100" height="100"
requiredExtensions="http://www.w3.org/1998/Math/MathML">
<math xmlns="http://www.w3.org/1998/Math/MathML">
<msqrt style="fontsize: 25px">
<mtext>■</mtext>
<mtext><a href="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 DOM
elements 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 just
getImageData
()
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 wellknown 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 whether A Well Known System Font
is available by default.
<style>
@fontface {
fontfamily: MyWebFontWithVeryWideGlyphs;
src: url("/fonts/mywebfontswithverywideglyphs.woff");
}
#container {
fontfamily: AWellKnownSystemFont, MyWebFontWithVeryWideGlyphs;
}
</style>
<div id="container">SOMETEXT</div>
<div id="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>
@fontface {
fontfamily: MyWebFontWithVeryWideAsianGlyphs;
src: url("/fonts/mywebfontswithverywideasianglyphs.woff");
}
#container {
fontfamily: uiserif, MyWebFontWithVeryWideAsianGlyphs
}
#reference {
fontfamily: MyWebFontWithVeryWideAsianGlyphs;
}
</style>
<div id="container">王</div>
<div id="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 with
textdecorationthickness set to fromfont
and 1em
(here
100 pixels)
respectively. By comparing the heights of the two underlines,
one can calculate a good approximation of the
underlineThickness
value from the PostScript Table
[OPENFONTFORMAT].
<style>
#test {
fontsize: 100px;
}
#container {
textdecorationline: underline;
textdecorationthickness: fromfont;
}
#reference {
textdecorationline: underline;
textdecorationthickness: 1em;
}
</style>
<div id="test">
<div id="container">SOMETEXT</div>
<div id="reference">SOMETEXT</div>
</div>
This specification relies on information from
5. OpenType MATH
table to render MathML content. One
can get good approximation of most
layout parameters from MathConstants
and
MathGlyphInfo
using measurement
techniques similar to what is described above for
HTML+CSS+JavaScript document. The use of the MathVariants
table for MathML rendering can also be observed by putting stretchy
operators of different sizes inside a canvas
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 nonnormative, examples, and notes. [RFC2119]
Examples in this specification are introduced with the words
“for example” or are set apart from the normative text with
class="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 with class="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 class="advisement">
, like this:
UAs MUST 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: