Copyright © 2025 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 standards and drafts index at https://www.w3.org/TR/.
This document was published by the Math Working Group as an Editor's Draft.
Publication as an Editor's Draft does not imply endorsement by W3C and its Members.
This is a draft document and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
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 03 November 2023 W3C Process Document.
This section is non-normative.
The [MATHML3] specification has several shortcomings that make it hard to implement consistently across web rendering engines or to extend with user-defined constructions, e.g.:
This MathML Core specification intends to address these issues by being as accurate as possible on the visual rendering of mathematical formulas using additional rules from the TeXBook’s Appendix G [TEXBOOK] and from the Open Font Format [OPEN-FONT-FORMAT], [OPEN-TYPE-MATH-ILLUMINATED]. It also relies on modern browser implementations and web technologies [HTML] [SVG] [CSS2] [DOM], clarifying interactions with them when needed or introducing new low-level primitives to improve the web platform layering.
Parts of MathML3 that do not fit well in this framework or are less fundamental have been omitted. Instead, they are described in a separate and larger [MATHML4] specification. The details of which math feature will be included in future versions of MathML Core or implemented as polyfills is still open. This question and other potential improvements are tracked on GitHub.
By increasing the level of implementation details, focusing on a workable subset, following a browser-driven design and relying on automated web platform tests, this specification is expected to greatly improve MathML interoperability. Moreover, effort on MathML layering will enable users to implement the rest of the MathML 4 specification, or more generally to extend MathML Core, using modern web technologies such 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
annotation-xml
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 top-level or root
math element, which encapsulates each
instance of MathML markup within a document. All other MathML content
must be contained in a element.
The
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 case-insensitive
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 math-style
(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 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>nmi><mo>=mo><mn>1mn>mrow>
<mrow><mo>+mo><mn>∞mn>mrow>
munderover>
<mfrac>
<mn>1mn>
<msup><mi>nmi><mn>2mn>msup>
mfrac>
mrow>
<mo>=mo>
<mfrac>
<msup><mi>πmi><mn>2mn>msup>
<mn>6mn>
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
font-family
to the
math
value on the element instead of inheriting
it. Additionally, several CSS properties that can be set on
a parent container such as
font-style
, font-weight
,
direction
or text-indent
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;
text-indent: 0;
letter-spacing: normal;
line-height: normal;
word-spacing: normal;
font-family: math;
font-size: inherit;
font-style: normal;
font-weight: normal;
display: inline math;
math-shift: normal;
math-style: compact;
math-depth: 0;
}
math[display="block" i] {
display: block math;
math-style: normal;
}
math[display="inline" i] {
display: inline math;
math-style: compact;
}
In addition to CSS data types, some MathML attributes rely on the following MathML-specific types:
true
or
false
.
The following attributes are common to and may be specified on all MathML elements:
autofocus
class
data-*
dir
displaystyle
id
mathbackground
mathcolor
mathsize
nonce
scriptlevel
style
tabindex
on*
event handler attributes
The
id,
class,
style,
data-*
,
autofocus and
nonce and
tabindex
attributes have the same syntax and semantics as defined for
id
,
class
,
style
,
data-*,
autofocus
,
nonce
and
tabindex
attributes on HTML elements.
The
dir
attribute, if present,
must be an
ASCII case-insensitive 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 case-insensitive match
to rtl
is mapped to rtl
while
an ASCII case-insensitive 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 right-to-left.
<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
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 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
math-style
property to the corresponding value.
More precisely, an
ASCII case-insensitive match
to true
is mapped to normal
while
an ASCII case-insensitive 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
+
, -
or
where
is an
unsigned-integer.
In that case
the user agent is expected to treat the
scriptlevel
attribute as a
presentational hint setting the element's
math-depth
property to the corresponding value.
More precisely,
+
, -
and
are respectively mapped to
add()
add(<-U>)
and .
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
font-size: 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 font-size 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 font-size as the top-level math
root.
<math>
<munder>
<mo>∑mo>
<mi>Ami>
munder>
<munder displaystyle="true">
<mo>∑mo>
<mi>Ami>
munder>
<munder>
<mo>∑mo>
<mi scriptlevel="0">Ami>
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.
MathML can be mixed with HTML and SVG as described in the relevant specifications [HTML] [SVG].
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
and
(with
proper
) 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. See also 3.7 Semantics and Presentation
for an example of SVG and HTML inside an annotation-xml
element.
<svg style="font-size: 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)">1text>
<switch transform="translate(35,-40)">
<foreignObject width="200" height="50"
requiredExtensions="http://www.w3.org/1998/Math/MathML">
<math>
<msqrt>
<mn>2mn>
<mi>rmi>
<mo>−mo>
<mn>1mn>
msqrt>
math>
foreignObject>
<text>\sqrt{2r - 1}text>
switch>
g>
svg>
<p>
Fill the blank:
<math>
<msqrt>
<mn>2mn>
<mtext><input onchange="..." size="2" type="text">mtext>
<mo>−mo>
<mn>1mn>
msqrt>
<mo>=mo>
<mn>3mn>
math>
p>
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 font-family
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="font-family: STIX Two Math">
<mrow>
<munderover>
<mo>∑mo>
<mrow><mi>nmi><mo>=mo><mn>1mn>mrow>
<mrow><mo>+mo><mn>∞mn>mrow>
munderover>
<mfrac>
<mn>1mn>
<msup><mi>nmi><mn>2mn>msup>
mfrac>
mrow>
<mo>=mo>
<mfrac>
<msup><mi>πmi><mn>2mn>msup>
<mn>6mn>
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 user-agent level style sheet defaults.
In particular, this adds !important
rules to force
writing mode
to horizontal-lr
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 out-of-flow.
The ::first-line and
::first-letter
pseudo-elements do not apply to elements whose computed
display
value is
block math
or inline math
, and such
elements do not contribute a first formatted line or first letter
to their ancestors.
The following CSS features are not supported and must be ignored:
white-space
is treated as nowrap
on all MathML elements.
align-content
, justify-content
,
align-self
, justify-self
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>2mn>
mfrac>
mrow>
math>
Because math fonts generally contain very tall glyphs such as big integrals, using typographic metrics is important to avoid excessive line spacing of text. As a consequence, user agents must take into account the USE_TYPO_METRICS flag from the OS/2 table [OPEN-FONT-FORMAT] when performing text layout.
MathML provides the ability for authors to allow for
interactivity in supporting interactive user agents
using the same concepts, approach and guidance 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 focus-related pseudo-classes 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:
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
inline-table
,
table-row
and
table-cell
.
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 [CSS-WRITING-MODES-4]:
horizontal-lr
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:
horizontal-tb
and rtl
that may be used in e.g. Arabic math.vertical-lr
and ltr
that may be used in e.g. Mongolian math.vertical-rl
and ltr
that may be used in e.g. Japanese math.Here are examples of offsets obtained from line-relative metrics:
ltr
and
is the inline size of the box −
(line-left offset + inline size of
the child box) otherwise.
horizontal-lr
,
vertical-rl
or sideways-rl
and is the line-descent 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 inline-start padding. If the content box has an italic correction then the padding box has the same property, increased by the inline-end padding.
The box metrics and offsets of the border box are obtained from the padding box by taking into account the corresponding border-width 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 line-over border is positive then the ink-over baseline is set to the line-over edge of the border box and if the line-under border is positive then the ink-under baseline is set to the line-under 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 border-width of its inline-start egde. If the padding box has an italic correction then the border box has the same property, increased by the border-width of its inline-end 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 inline-start margin. If the padding box has an italic correction then the margin box has the same property, increased by the inline-end 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 line-ascent and ink line-descent 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 non-anonymous box while non-inherited properties have
their initial value.
An anonymous display
equal to
block math
and which is laid out as
described in section 3.3.1.2 Layout of
.
If a MathML element
generates an anonymous
In the following example, the math
and
mrow
elements are laid out as described in section
3.3.1.2 Layout of
. In particular, the
element adds proper spacing around its
child and the
element stretches its
children vertically.
The mtd
element has
display: table-cell
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
: the
element adds proper spacing around its
child while the
element stretches its
children vertically.
In order to make this possible,
each of these two elements
generates an anonymous
<math>
<mrow>
<mo>|mo>
<mtable>
<mtr>
<mtd>
<mi>xmi>
mtd>
<mtd>
<mo>(mo>
<mfrac linethickness="0">
<mn>5mn>
<mn>3mn>
mfrac>
<mo>)mo>
mtd>
mtr>
<mtr>
<mtd>
<msqrt>
<mn>7mn>
<mo>+mo>
<mn>2mn>
msqrt>
mtd>
<mtd>
<mi>ymi>
mtd>
mtr>
mtable>
<mo>|mo>
mrow>
<mo>≠mo>
<mn>0mn>
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 in-flow children of such a MathML element
is exactly the same as block elements. The extra graphical
items are painted after text and background (right after
step 7.2.4 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
element is intended to denote
commentary text.
The
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>ymi>
<mo>=mo>
<mrow>
<msup>
<mi>xmi>
<mn>2mn>
msup>
<mtext> if mtext>
<mrow>
<mi>xmi>
<mo>≥mo>
<mn>1mn>
mrow>
<mtext> and mtext>
<mn>2mn>
<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
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:
element.
Otherwise, the mtext
element is laid out as a
block box
and corresponding min-content inline size,
max-content 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
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 text-transform value introduced in 4.2 The math-auto
transform:
mi {
text-transform: math-auto;
}
The
mathvariant
attribute,
if present, must be an
ASCII case-insensitive
match of normal
.
In that case, the user agent is expected to treat the attribute as a
presentational hint setting the element's
text-transform
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 typographically-related symbolic tokens with
specific meaning within a given mathematical expression.
In MathML Core, this attribute is only used to cancel automatic
italic of 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 per
4.2 The math-auto
transform the default
style text-transform: math-auto
has
no effect on the first
("cos" is made of three characters),
makes the second
render as math italic ("c" is made of a single
character U+0063 Latin Small Letter C which is
mapped to
U+1D450 Mathematical Italic Small C per the
italic table), has no effect
on the third
(overridden by
mathvariant="normal"
, setting
text-transform
to none) or on the fourth
(no mapping defined for U+221E Infinity
in the italic table).
<math>
<mi>cosmi>
<mo>,mo>
<mi>cmi>
<mo>,mo>
<mi mathvariant="normal">cmi>
<mo>,mo>
<mi>∞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
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.141592653589793mn>
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
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
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 human-readable 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 tighter 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>1mn>
<mo>+mo>
<mn>2mn>
<mo form="prefix">+mo>
<mn>3mn>
<mo lspace="2em">+mo>
<mn>4mn>
<mo rspace="3em">+mo>
<mn>5mn>
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>5mn>
munder>
<munder>
<mo largeop="false">∑mo>
<mn>6mn>
munder>
mrow>
<mrow>
<munder>
<mo>∑mo>
<mn>5mn>
munder>
<munder>
<mo movablelimits="false">∑mo>
<mn>7mn>
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 dictionary-based, as explained in 3.2.4.2 Dictionary-based 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 in-flow child exists and is an
embellished operator;
mpadded
,
whose in-flow children consist (in any order) of one
embellished operator and zero or more
space-like elements.
The core operator of an embellished operator
is the
element defined recursively as
follows:
mo
element; is the element itself.mfrac
element is the core operator of its first in-flow child.
mpadded
is the core operator of its unique embellished operator
in-flow 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
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 case-insensitive
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 in-flow child
(ignoring all space-like children) then it has
form prefix
.
mpadded
or
msqrt
with more than one in-flow child
(ignoring all space-like 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
maxsize
property
of an embellished operator is either a
mo
element, if present,
must be a
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
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
element is visible
.
In that case, it must be painted with the
color
of the
element.
Operators are laid out as follows:
element is not
made
of a single character c
then fall back to the
layout algorithm of 3.2.1.1 Layout of
.
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
.
.
Tinline
then
fall back to the
layout algorithm of 3.2.1.1 Layout of
.
Tinline
.
Tinline
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
.
(Uascent, Udescent)
then
fall back to the
layout algorithm of 3.2.1.1 Layout of
.
symmetric
property
then set the target sizes
Tascent
and
Tdescent
to
Sascent
and
Sdescent
respectively:
Sascent
=
max(
Uascent
− AxisHeight,
Udescent
+ AxisHeight
) + AxisHeight
Sdescent
=
max(
Uascent
− AxisHeight,
Udescent
+ AxisHeight
) − AxisHeight
Uascent
and
Udescent
respectively.
Tascent
− AxisHeight = Tdescent
+ AxisHeight means that
an operator stretching exactly
Tascent
above the baseline
and Tdescent
below the
baseline would actually stretch symmetrically above
and below the math axis.
Sascent
and
Sdescent
are the minimal
values, that are respectively not less than
Uascent
and
Udescent
, which satisfy
this property.
minsize
and maxsize
be the minsize
and maxsize
properties on the
operator. Percentage values are interpreted relative
to the height of the glyph for c
.
Let T
=
Tascent
+
Tdescent
be the target size.
If minsize
< 0 then set minsize
to 0.
If maxsize
< minsize
then
set maxsize
to minsize
.
With 0 ≤ minsize
≤ maxsize
:
T
≤ 0 then set
Tascent
to
minsize
/ 2 + AxisHeight and
then set Tdescent
to minsize
−
Tascent
.
T
< minsize
then set Tascent
to
max(0, (Tascent
− AxisHeight) × minsize
/ T
+ AxisHeight) and
Tdescent
to minsize
−
Tascent
.
maxsize
< T
then set Tascent
to
max(0, (Tascent
− AxisHeight) × maxsize
/ T
+ AxisHeight) and
Tdescent
to maxsize
−
Tascent
.
maxsize
is value ∞ is
interpreted above as being larger than any other size,
i.e.
minsize ≤ maxsize
is always true while
maxsize < minsize
and
maxsize < T
are always false.
minsize
≤ T
≤ maxsize
holds.
Additionnally, if the target values correspond to symmetric stretching with respect to the math axis then property
Tascent
− AxisHeight = Tdescent
+ AxisHeight is preserved.
Tascent
+
Tdescent
.
The inline size of the math content is the width of
the stretchy glyph. The stretchy glyph is shifted
towards the line-under by a value Δ so that its
center aligns with the center of the target:
the ink ascent of the math content is
the ascent of the stretchy glyph − Δ
and the ink descent of the math content is
the descent of the stretchy glyph + Δ.
These centers have coordinates "½(ascent − descent)"
so Δ = [(ascent of stretchy glyph − descent of stretchy glyph) − (Tascent
− Tdescent
)] / 2.
Tascent
+
Tdescent
and at position determined by the previous box metrics
shifted by Δ towards the line-over.
largeop
property and
if math-style
on
the
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 non-base glyph. If none is found, fall back to
the layout algorithm of 3.2.1.1 Layout of
.
.
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.
The mspace empty element represents a blank space of any desired size, as set by its attributes.
The
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
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
line-ascent is 0
.
Otherwise the requested line-ascent 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>1mn>
<mspace width="1em"
style="border-top: 1px solid blue"/>
<mfrac>
<mrow>
<mn>2mn>
<mspace depth="1em"
style="border-left: 1px solid blue"/>
mrow>
<mrow>
<mn>3mn>
<mspace height="2em"
style="border-left: 1px solid blue"/>
mrow>
mfrac>
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
element is laid out as shown on
Figure 9.
The min-content inline size,
max-content 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 line-ascent of the math content is equal to the
requested line-ascent determined above.
elementA number of MathML presentation elements are "space-like" in the sense that they typically render as whitespace, and do not affect the mathematical meaning of the expressions in which they appear. As a consequence, these elements often function in somewhat exceptional ways in other MathML expressions.
A MathML Core element is a space-like element if it is:
mtext
or
mspace
;
mpadded
all of whose in-flow children are space-like.
The same definitions apply for boxes in the
visual formatting model where an
anonymous
mphantom
is not
automatically defined to be space-like, unless its content is
space-like. This is because operator spacing is affected by
whether adjacent elements are space-like.
Since the
element is
primarily intended as an aid in aligning expressions, operators
adjacent to an
should behave
as if they were adjacent to the contents of the
, 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
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>smi>
<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
element. One can add CSS rules to legacy
documents in order to preserve visual rendering. For example,
in left-to-right direction:
ms:before, ms:after {
content: "\0022";
}
ms[lquote]:before {
content: attr(lquote);
}
ms[rquote]:after {
content: attr(rquote);
}
Besides tokens there are several families of MathML presentation elements. One family of elements deals with various "scripting" notations, such as subscript and superscript. Another family is concerned with matrices and tables. The remainder of the elements, discussed in this section, describe other basic notations such as fractions and radicals, or deal with general functions such as setting style properties and error handling.
The
mrow
element is used to group together any number of sub-expressions, usually
consisting of one or more
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>1mn>
<mo>+mo>
<mfrac>
<mn>2mn>
<mn>3mn>
mfrac>
mrow>
<mn>4mn>
mfrac>
<mo>)mo>
mrow>
<mn>5mn>
msup>
math>
The
element accepts the attributes described
in 2.1.3 Global Attributes. An
element with in-flow children
child1, child2, …, childN
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.
elementThe algorithm for stretching operators along the block axis consists in the following steps:
LToStretch
containing
embellished operators with
a stretchy
property and block stretch axis;
and a second list LNotToStretch
.
LNotToStretch
.
If LToStretch
is empty then stop.
If LNotToStretch
is empty, perform
layout with block stretch size constraint
(0, 0)
for
all the items of LToStretch
.
Uascent
and Udescent
as respectively the maximum
ink ascent and maximum ink descent of the margin boxes of
in-flow children that
have been laid out in the previous step.
LToStretch
with
block stretch size constraint
(Uascent, Udescent)
.
If the box is not an anonymous 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 min-content inline size (respectively max-content inline size) are calculated using the following algorithm:
add-space
to true if
the box corresponds to a math
element
or is not an
embellished operator; and to false otherwise.
inline-offset
to 0.previous-italic-correction
to 0.inline-offset
by
previous-italic-correction
.
add-space
is true then
increment inline-offset
by
its lspace
property.
inline-offset
by
the min-content inline size
(respectively max-content inline size) of
the child's margin box.
previous-italic-correction
to
its italic correction. Otherwise set it to 0.
add-space
is true then
increment inline-offset
by
its rspace
property.
inline-offset
by
previous-italic-correction
.
inline-offset
.
The in-flow 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 min-content inline size and max-content inline size of the math content, using the inline size of the in-flow children's margin boxes instead.
The ink line-ascent (respectively line-ascent) of the math content is the maximum of the ink line-ascents (respectively line-ascents) of all the in-flow children's margin boxes. Similarly, the ink line-descent (respectively line-descent) of the math content is the maximum of the ink line-descents (respectively ink line-ascents) of all the in-flow children's margin boxes.
The in-flow children are positioned using the following algorithm:
add-space
to true if
the box corresponds to a math
element
or is not an
embellished operator; and to false otherwise.
inline-offset
to 0.previous-italic-correction
to 0.inline-offset
by
previous-italic-correction
.
add-space
is true then
increment inline-offset
by
its lspace
property.
inline-offset
and its block offset such
that the alphabetic baseline of the child is aligned with the alphabetic baseline.
inline-offset
by
the inline size of the child's margin box.
previous-italic-correction
to
its italic correction. Otherwise set it to 0.
add-space
is true then
increment inline-offset
by
its rspace
property.
The italic correction of the math content is set to the italic
correction of the last in-flow child, which is
the final value of previous-italic-correction
.
The mfrac element is used for fractions. It can also be used to mark up fraction-like objects such as binomial coefficients and Legendre symbols.
If the
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
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
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 font-size.
<math>
<mn>0mn>
<mo>+mo>
<mfrac displaystyle="true">
<mn>1mn>
<mn>2mn>
mfrac>
<mo>−mo>
<mfrac>
<mn>1mn>
<mn>2mn>
mfrac>
<mo>+mo>
<mfrac linethickness="200%">
<mn>1mn>
<mn>234mn>
mfrac>
<mo>−mo>
<mrow>
<mo>(mo>
<mfrac linethickness="0">
<mn>123mn>
<mn>4mn>
mfrac>
<mo>)mo>
mrow>
math>
The
element sets
displaystyle
to false
,
or if it was already false
increments
scriptlevel
by 1, within its children.
It sets math-shift 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 1-pixel space is added around the element.
The user agent stylesheet
must contain the following rules:
mfrac {
padding-inline: 1px;
}
mfrac > * {
math-depth: auto-add;
math-style: compact;
}
mfrac > :nth-child(2) {
math-shift: compact;
}
If the
element
has less or more than two in-flow children, its layout algorithm
is the same as the mrow
element.
Otherwise, the first in-flow child is called
numerator, the second in-flow child is called
denominator and the layout algorithm is explained below.
element has two children
that are in-flow. Hence the CSS rules basically perform
scriptlevel
, displaystyle
and math-shift
changes for the numerator and
denominator.
If the fraction line thickness is nonzero, the
element is laid out as shown on Figure 12.
The fraction bar must only be painted if the
visibility of
the
element is visible
.
In that case, the fraction bar must be painted with the
color
of the
element.
elementThe min-content inline size (respectively max-content inline size) of content is the maximum between the min-content inline size (respectively max-content inline size) of the numerator's margin box and the min-content inline size (respectively max-content 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 line-descent of the numerator's margin box.
DenominatorShift
is the maximum between:
compact
(respectively normal
).
compact
(respectively normal
) +
the ink line-ascent of the denominator's margin box −
the AxisHeight.
The line-ascent of the math content is the maximum between:
Numerator Shift
+
the line-ascent of the numerator's margin box.
Denominator Shift
+
the line-ascent of the denominator's margin box
The line-descent of the math content is the maximum between:
Numerator Shift
+ the line-descent of the numerator's margin box.
Denominator Shift
+ the line-descent 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 line-over (respectively line-under).
The math content box is placed within the content box so that their block-start 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 inline-start 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 line-over. Its block size is the fraction line thickness.
If the fraction line thickness is zero,
the
element is instead laid out as
shown on Figure 13.
element without barThe min-content inline size, max-content 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 math-style is compact
then
TopShift
and
BottomShift
are respectively
set to StackTopShiftUp and StackBottomShiftDown.
Otherwise math-style is normal
and
they are respectively set to StackTopDisplayStyleShiftUp
and StackBottomDisplayStyleShiftDown.
The Gap
is defined to be
(BottomShift
−
the ink line-ascent of the denominator's margin box) +
(TopShift
−
the ink line-descent of the numerator's margin box).
If math-style is compact
then GapMin
is StackGapMin,
otherwise math-style is normal
and it is StackDisplayStyleGapMin.
If Δ = GapMin
− Gap
is positive then
TopShift
and BottomShift
are respectively increased by Δ/2 and Δ − Δ/2.
The line-ascent of the math content is the maximum between:
TopShift
+
the line-ascent of the numerator's margin box.
BottomShift
+ the line-ascent of the denominator's margin box.
The line-descent of the math content is the maximum between:
TopShift
+ the line-descent of the numerator's margin box.
BottomShift
+ the line-descent 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
line-over (respectively line-under).
The math content box is placed within the content box so that their block-start 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
and
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 font-size within the
mroot
index, but it is scaled down more than
within the numerator and denumerator of the fraction.
<math>
<mroot>
<msqrt>
<mfrac>
<mn>1mn>
<mn>2mn>
mfrac>
<mo>+mo>
<mn>4mn>
msqrt>
<mn>3mn>
mroot>
<mo>+mo>
<mn>0mn>
math>
The
and
elements sets math-shift to
compact
.
The
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(:first-child) {
math-depth: add(2);
math-style: compact;
}
mroot, msqrt {
math-shift: compact;
}
If the
or
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
has less or more than two
in-flow children,
its layout algorithm
is the same as the mrow
element.
Otherwise, the first in-flow child is called
mroot base and
the second in-flow child is called
mroot index
and its layout algorithm is explained below.
element has two children
that are in-flow. Hence the CSS rules basically perform
scriptlevel
and displaystyle
changes for the index.
The
element
generates an anonymous
The radical symbol must only be painted if the
visibility of
the
or
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 math-style is compact
and
RadicalDisplayStyleVerticalGap
if the math-style 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
element is laid out as shown on
Figure 14.
elementThe min-content inline size (respectively max-content 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 min-content inline size (respectively max-content 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 line-ascent of the math content is the maximum between:
The line-descent 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 line-over equal to the line-ascent of the math content, minus the RadicalExtraAscender, minus half the RadicalRuleThickness.
Finally, the painting of the surd is performed:
The
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).
elementThe min-content inline size (respectively max-content inline size) of the math content is the sum of max(0, RadicalKernBeforeDegree), the mroot index's min-content inline size (respectively max-content inline size) of the mroot index's margin box, max(−min-content inline size, RadicalKernAfterDegree) (respectively max(−max-content inline size of the mroot index's margin box, RadicalKernAfterDegree)) and of the min-content inline size (respectively max-content 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 line-ascent of the math content is the maximum between:
The line-descent of the math content is the maximum between:
The inline offset of the index is AdjustedRadicalKernBeforeDegree. The inline-offset 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 line-under edge by a distance of RadicalDegreeBottomRaisePercent × the block size of B + the line-descent of the index's margin box.
Historically, the mstyle element was introduced to make style changes that affect the rendering of its contents.
The
element accepts the attributes described in
2.1.3 Global Attributes. Its layout algorithm is the
same as the mrow
element.
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
font-size 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>Ami>
munder>
<mstyle scriptlevel="1">
<mstyle displaystyle="true">
<munder>
<mo movablelimits="true">*mo>
<mi>Bmi>
munder>
<munder>
<mo movablelimits="true">*mo>
<mi>Cmi>
munder>
mstyle>
<munder>
<mo movablelimits="true">*mo>
<mi>Dmi>
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 LaTeX-like input:
<math>
<mfrac>
<merror>
<mtext>Syntax error: \frac{1}mtext>
merror>
<mn>3mn>
mfrac>
math>
The
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;
background-color: lightYellow;
}
The
mpadded
element renders the same as its in-flow child content, but with the
size and relative positioning point of its
content modified according to
’s attributes.
The
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
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>1mn>
<mpadded style="background: lightblue;">
<mfrac>
<mn>23456mn>
<mn>78mn>
mfrac>
mpadded>
<mn>9mn>
mrow>
<mo>+mo>
<mrow>
<mn>1mn>
<mpadded lspace="2em" voffset="-1em" height="1em" depth="3em" width="7em"
style="background: lightblue;">
<mfrac>
<mn>23456mn>
<mn>78mn>
mfrac>
mpadded>
<mn>9mn>
mrow>
math>
The mpadded
element
generates an anonymous
The requested
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 line-ascent.
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 line-ascent.
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
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.
elementThe min-content inline size (respectively max-content inline size) of the math content is the requested width calculated in 3.3.6.1 Inner box and requested parameters but using the min-content inline size (respectively max-content 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 line-ascent of the math content is the requested height. The line-descent 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 line-over.
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>xmi>
<mo>+mo>
<mi>ymi>
<mo>+mo>
<mi>zmi>
mrow>
<mrow>
<mi>xmi>
<mphantom>
<mo form="infix">+mo>
<mi>ymi>
mphantom>
<mo>+mo>
<mi>zmi>
mrow>
mfrac>
math>
The
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;
}
is implemented for compatibility with full MathML. Authors whose only target is MathML Core are encouraged to use CSS for styling.
The elements described in this section position one or more scripts around a base. Attaching various kinds of scripts and embellishments to symbols is a very common notational device in mathematics. For purely visual layout, a single general-purpose element could suffice for positioning scripts and embellishments in any of the traditional script locations around a given base. However, in order to capture the abstract structure of common notation better, MathML provides several more specialized scripting elements.
In addition to sub-/superscript elements, MathML has overscript and underscript elements that place scripts above and below the base. These elements can be used to place limits on large operators, or for placing accents and lines above or below the base.
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 font-size is automatically scaled down within the scripts.
<math>
<msub>
<mn>1mn>
<mn>2mn>
msub>
<mo>+mo>
<msup>
<mn>3mn>
<mn>4mn>
msup>
<mo>+mo>
<msubsup>
<mn>5mn>
<mn>6mn>
<mn>7mn>
msubsup>
math>
If the
,
or
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
element
has less or more than two in-flow children, its layout algorithm
is the same as the mrow
element.
Otherwise, the first in-flow child is called the
msub base, the second in-flow child is called the
msub subscript and the layout algorithm is explained
in 3.4.1.2 Base with subscript.
If the
element
has less or more than two in-flow children, its layout algorithm
is the same as the mrow
element.
Otherwise, the first in-flow child is called the
msup base, the second in-flow child is called the
msup superscript and the layout algorithm is explained
in 3.4.1.3 Base with superscript.
If the
element
has less or more than three in-flow children, its layout algorithm
is the same as the mrow
element.
Otherwise, the first in-flow child is called the
msubsup base, the second in-flow child
is called the msubsup subscript,
its third in-flow child is called
the msubsup superscript and the layout algorithm is explained
in 3.4.1.4 Base with subscript and superscript.
The
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.
element
The
min-content inline size (respectively max-content inline size) of the math content is the
min-content inline size (respectively max-content inline size) of the msub base's margin box −
LargeOpItalicCorrection
+
min-content inline size (respectively max-content 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 line-ascent of the math content is the maximum between:
SubShift
.The line-descent 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 line-under.
The
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.
element
The
min-content inline size (respectively max-content inline size)
of the math content
is the
min-content inline size (respectively max-content inline size) of
the msup base's margin box +
ItalicCorrection
+
the min-content inline size (respectively max-content 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 line-ascent of the math content is the maximum between:
SuperShift
.The line-descent 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 line-over.
The
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.
elementThe min-content inline size (respectively max-content inline size and inline size) of the math content is the maximum between the min-content inline size (respectively max-content 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 line-ascent of the msubsup subscript's
margin box) +
(SuperShift
− the ink line-descent 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 line-descent 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 line-ascent (respectively line-ascent, ink line-descent,
line-descent) of the math content
is set to the maximum
of the
ink line-ascent (respectively line-ascent, ink line-descent,
line-descent) 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,
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
element accepts the attribute
described in 2.1.3 Global Attributes as well as the
following attributes:
Similarly, the
element
(respectively
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 math-shift in scripts.
The following example shows basic use of under- and overscripts. The font-size is automatically scaled down within the scripts, unless they are meant to be accents.
<math>
<munder>
<mn>1mn>
<mn>2mn>
munder>
<mo>+mo>
<mover>
<mn>3mn>
<mn>4mn>
mover>
<mo>+mo>
<munderover>
<mn>5mn>
<mn>6mn>
<mn>7mn>
munderover>
<mo>+mo>
<munderover accent="true">
<mn>8mn>
<mn>9mn>
<mn>10mn>
munderover>
<mo>+mo>
<munderover accentunder="true">
<mn>11mn>
<mn>12mn>
<mn>13mn>
munderover>
math>
If the
,
or
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
element
has less or more than two in-flow children, its layout algorithm
is the same as the mrow
element.
Otherwise, the first in-flow child is called the
munder base and the second in-flow child is called the
munder underscript.
If the
element
has less or more than two in-flow children, its layout algorithm
is the same as the mrow
element.
Otherwise, the first in-flow child is called the
mover base and the second in-flow child is called the
mover overscript.
If the
element
has less or more than three in-flow children, its layout algorithm
is the same as the mrow
element.
Otherwise, the first in-flow child is called the
munderover base, the second in-flow child
is called the munderover underscript
and its third in-flow child is called
the munderover overscript.
If the
,
or
elements have a computed
math-style 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
,
and
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
,
and
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.
LToStretch
containing
embellished operators with
a stretchy
property and inline stretch axis;
and a second list LNotToStretch
.
LNotToStretch
.
If LToStretch
is empty then stop.
If LNotToStretch
is empty, perform
layout with inline stretch size constraint 0 for
all the items of LToStretch
.
T
to
the maximum inline size of the
margin boxes of child boxes that have been laid out in the
previous step.
LToStretch
with inline stretch size constraint T
.
The
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.
elementThe min-content inline size (respectively max-content 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 min-content inline size (respectively max-content inline size) of the munder base's margin box and munder underscript's margin box.
The in-flow 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 case-insensitive match to true
and to zero otherwise.
UnderExtraAscender
is
UnderbarExtraDescender.
The line-ascent of the math content is the maximum between:
UnderShift
.The line-descent 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 line-under by a distance equal to
the ink line-descent of the munder base's margin box
+ UnderShift
.
The math content box is placed within the content box so that their block-start edges are aligned and the middles of these edges are at the same position.
The
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.
elementThe min-content inline size (respectively max-content 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 min-content inline size (respectively max-content inline size) of the mover base's margin box and mover overscript's margin box.
The in-flow 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 case-insensitive match to true
.
OverExtraAscender
is OverbarExtraAscender.
The line-ascent of the math content is the maximum between:
OverShift
+ OverExtraAscender
.The line-descent 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 line-over by a distance equal to
the ink line-ascent of the base + OverShift
.
The math content box is placed within the content box so that their block-start edges are aligned and the middles of these edges are at the same position.
The general layout of
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.
elementThe min-content inline size, max-content 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 in-flow children are laid out using the algorithm for stretching operators along the inline axis.
The line-ascent and line-descent 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 block-start edges are aligned and the middles of these edges are at the same position.
When the underscript (respectively overscript) is an empty box, the base and overscript (respectively underscript) are laid out similarly 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 font-size is automatically scaled down within the scripts.
<math>
<mmultiscripts>
<mn>1mn>
<mn>2mn>
<mn>3mn>
<mrow>mrow>
<mn>5mn>
<mprescripts/>
<mn>6mn>
<mrow>mrow>
<mn>8mn>
<mn>9mn>
mmultiscripts>
math>
If the
or
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
element is laid out as an mrow
element.
A valid
element contains the
following in-flow children:
mprescripts
element.
mprescripts
element.
These scripts form a (possibly empty) list
subscript, superscript, subscript, superscript,
subscript, superscript, etc.
Each consecutive couple of children subscript, superscript
is called a
subscript/superscript pair.
mprescripts
element and
an even number of in-flow children called
mmultiscripts prescripts, none of them being a
mprescripts
element.
These scripts form a (possibly empty) list of
subscript/superscript pair.
If an
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
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.
elementThe min-content inline size (respectively max-content inline size) of the math content is calculated the same as the inline size of the math content below, but replacing "inline size" with "min-content inline size" (respectively "max-content 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:
inline-offset
to 0.
For each subscript/superscript pair of
mmultiscripts prescripts, increment
inline-offset
by SpaceAfterScript + the
maximum of
inline-offset
by the inline size of the
mmultiscripts base's margin box and
set inline-size
to inline-offset
.
For each subscript/superscript pair of
mmultiscripts postscripts, modify
inline-size
to be at least:
LargeOpItalicCorrection
.
ItalicCorrection
.
Increment inline-offset
to the maximum of:
Increment inline-offset
by
SpaceAfterScript.
inline-size
.
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 line-ascent of the math content is calculated
by taking the maximum of all the line-ascent
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 line-descent of the math content is calculated
by taking the maximum of all the line-descent
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 in-flow children is performed using the following algorithm:
inline-offset
to 0.For each subscript/superscript pair of mmultiscripts prescripts:
inline-offset
by
SpaceAfterScript.
pair-inline-size
to the maximum of
inline-offset
+ pair-inline-size
− the inline size of the subscript's margin box.
inline-offset
+ pair-inline-size
− the inline size of the superscript's margin box.
SubShift
(respectively SuperShift
)
towards the line-under (respectively line-over).
inline-offset
by
pair-inline-size
.
boxes
at inline offsets
inline-offset
and with their alphabetic baselines
aligned with the alphabetic baseline.
For each subscript/superscript pair of mmultiscripts postscripts:
pair-inline-size
to the maximum of
inline-offset
− LargeOpItalicCorrection
.
inline-offset
+ ItalicCorrection
.
SubShift
(respectively SuperShift
)
towards the line-under (respectively line-over).
inline-offset
by
pair-inline-size
.
inline-offset
by
SpaceAfterScript.
An
with only one
subscript/superscript pair of
mmultiscripts postscripts is laid out the same as a
with the same in-flow children.
However, as
noticed for
,
if additionally the subscript (respectively superscript) is an
empty box then it is not necessarily laid out the same as an
(respectively
) 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 case-insensitive
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 case-insensitive
match to true
do not increment scriptlevel within
their second child.
sets
math-shift
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
and
elements set math-shift
to
compact
on their second child.
mover
and
munderover
elements with an accent
attribute that is an
ASCII case-insensitive
match to true
also set math-shift
to
compact
within their first child.
The A. User Agent Stylesheet must contain the following style in order to implement this behavior:
msub > :not(:first-child),
msup > :not(:first-child),
msubsup > :not(:first-child),
mmultiscripts > :not(:first-child),
munder > :not(:first-child),
mover > :not(:first-child),
munderover > :not(:first-child) {
math-depth: add(1);
math-style: compact;
}
munder[accentunder="true" i] > :nth-child(2),
mover[accent="true" i] > :nth-child(2),
munderover[accentunder="true" i] > :nth-child(2),
munderover[accent="true" i] > :nth-child(3) {
font-size: inherit;
}
msub > :nth-child(2),
msubsup > :nth-child(2),
mmultiscripts > :nth-child(even),
mmultiscripts > mprescripts ~ :nth-child(odd),
mover[accent="true" i] > :first-child,
munderover[accent="true" i] > :first-child {
math-shift: compact;
}
mmultiscripts > mprescripts ~ :nth-child(even) {
math-shift: inherit;
}
is empty.
Hence the CSS rules essentially perform automatic displaystyle
and
scriptlevel
changes for the scripts; and
math-shift
changes for
subscripts and sometimes the base.
Matrices, arrays and other table-like 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>Ami>
<mn>2mn>
mfrac>
<mo>=mo>
<mrow>
<mo>(mo>
<mtable>
<mtr>
<mtd><mn>1mn>mtd>
<mtd><mn>2mn>mtd>
<mtd><mn>3mn>mtd>
mtr>
<mtr>
<mtd><mn>4mn>mtd>
<mtd><mn>5mn>mtd>
<mtd><mn>6mn>mtd>
mtr>
<mtr>
<mtd><mn>7mn>mtd>
<mtd><mn>8mn>mtd>
<mtd><mn>9mn>mtd>
mtr>
mtable>
<mo>)mo>
mrow>
math>
The mtable is laid out as an
inline-table
and sets
displaystyle
to false
. The
user agent stylesheet must contain
the following rules in order to implement these properties:
mtable {
display: inline-table;
math-style: compact;
}
The mtable
element is as a CSS
table
and the
min-content inline size, max-content 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
accepts the attributes described
in 2.1.3 Global Attributes.
The mtr is laid out as
table-row
. The
user agent stylesheet must contain
the following rules in order to implement that behavior:
mtr {
display: table-row;
}
The
accepts the attributes described
in 2.1.3 Global Attributes.
The mtd is laid out as
a table-cell
with content centered in the cell and
a default padding. The
user agent stylesheet must contain
the following rules:
mtd {
display: table-cell;
/* Centering inside table cells should rely on box alignment properties.
See https://github.com/w3c/mathml-core/issues/156 */
text-align: center;
padding: 0.5ex 0.4em;
}
The
accepts the attributes described
in 2.1.3 Global Attributes as well as the following attributes:
The
The
Historically, the
maction
element provides a mechanism
for binding actions to expressions.
The
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.
The layout algorithm of the
The
semantics
element is the container element that associates
annotations with a MathML expression. Typically, the
The following example shows how the fraction "one half" can be
annotated with a textual annotation (LaTeX) or an XML annotation
(content MathML), which are not intended to be rendered
by the user agent. This fraction is also annotated with equivalent
SVG and HTML markup.
The
The
This specification does not define any observable behavior that is
specific to the encoding attribute.
The layout algorithm of the The
For elements that are not MathML elements, if the specified
value of
MathML elements with a
computed
In the following example, the default layout of the
MathML The text-transform property
from CSS Text Module Level 4
has a new value 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
When The following example shows a
mathematical formula rendered with
its These two
If the value of
This property is used for positioning superscript during the layout
of MathML scripted elements.
See § 3.4.1 Subscripts and Superscripts In the following example, the two "x squared" are rendered with
compact math-style and the same 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 math-shift 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 math-depth property is introduced to describe a notion
of "depth" for each element of a mathematical formula, with respect to
the top-level container of that formula. Concretely, this is used to
determine the computed value of the
font-size
property when its specified value is The computed value of the math-depth value is
determined as follows:
If the specified value of
font-size
is The following example shows a mathematical formula
with normal math-style
rendered with the Latin Modern Math font.
When entering subexpressions like scripts or fractions,
the font-size is automatically scaled down according to the
values of MATH table contained in that font.
Note that font-size is scaled down when
entering the superscripts but even faster when entering a
root's prescript. Also it is scaled down when entering the inner
fraction but not when entering the outer one, due to automatic
change of math-style in fractions.
These rules from [TeXBook] are subtle and it's worth having a
separate
This chapter describes features provided by
OpenType values expressed in design units (perhaps indirectly via a
These are global layout constants for the
first available font:
These are per-glyph tables for the
first available font:
This section describes how to handle stretchy glyphs of arbitrary
size using the
This section is based on [OPEN-TYPE-MATH-IN-HARFBUZZ].
For convenience, the following definitions are used:
User agents must treat the
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) = NNonExt + r NExt while
the stretch size is
AssembySize(o, r) =
SNonExt + r SExt
− o (AssemblyGlyphCount(r) − 1).
rmin is the minimal number of repetitions
needed to obtain an assembly of
size at least T, i.e. the minimal r such that
AssembySize(omin, r) ≥ T.
It is defined as the maximum between 0 and the ceiling of
((T − SNonExt + omin (NNonExt − 1)) / SExt,NonOverlapping).
omax,theorical = (AssembySize(0, rmin) − T) / (AssemblyGlyphCount(rmin) − 1)
is the theorical overlap obtained by
splitting evenly the extra size of an assembly built with
null overlap.
omax is the
maximum overlap possible to build an assembly of size at least
T by repeating each extender rmin times.
If AssemblyGlyphCount(rmin) ≤ 1, then the actual overlap value is irrelevant.
Otherwise, omax is defined to be the minimum of:
The glyph assembly stretch size
for a target size T is
AssembySize(omax, rmin).
The
glyph assembly width,
glyph assembly ascent
and glyph assembly descent
are defined as follows:
The glyph assembly height is the sum
of the glyph assembly ascent and
glyph assembly descent.
The shaping of the glyph assembly
is performed with the following algorithm:
The preferred inline size of a glyph stretched along the block
axis
is calculated using the following algorithm:
The algorithm to shape a stretchy glyph to inline
(respectively block) dimension The algorithm to set the properties of an operator from its category is as follows: The algorithm to determine the category of an operator
(
The intrinsic stretch axis a Unicode character
This section is non-normative.
The following dictionary provides a human-readable version
of B.1 Operator Dictionary. Please refer to
3.2.4.2 Dictionary-based attributes for explanation about
how to use this dictionary and how to
determine the values
The values for This section is non-normative.
The following table gives mappings between spacing and non spacing
characters when used in MathML accent constructs.
This section is non-normative.
The following table provides fallback that user agents may use for
stretching a given base character when the font does not
provide a This section is non-normative. As detailed in [xml-entity-names] mathematical alphanumeric symbols
with form bold, italic, fraktur, monospace, double-struck etc
are available in Unicode. These alphanumeric
symbols should be accessed using their Unicode code points.
It is sometimes needed to distinguish between
Chancery and Roundhand style for MATHEMATICAL SCRIPT characters.
These are notably used in LaTeX for the
In addition, the This section is non-normative. MathML Core is based on MathML3. See the
appendix E
of [MathML3] for the people that contributed to that specification.
MathML Core was initially developed by the MathML Community Group, and
then by the Math Working Group. Working Group or Community Group
members who regularly participated in MathML
Core meetings during the development of this specification:
Brian Kardell,
Bruce Miller,
Daniel Marques,
David Carlisle,
David Farmer,
Deyan Ginev,
Frédéric Wang,
Louis Mahler,
Moritz Schubotz,
Murray Sargent,
Neil Soiffer,
Patrick Ion,
Rob Buis,
Steve Noble and
Sam Dooley.
In addition, we would like to extend special thanks to
Brian Kardell,
Neil Soiffer and
Rob Buis for help with the editing. Many thanks also to the following people for their help with the
test suite:
Brian Kardell,
Frédéric Wang,
Neil Soiffer and
Rob Buis.
Several tests are also based on MathML tests from browser
repositories and we are grateful to the Mozilla and WebKit
contributors.
We would like to thank the people who, through their input and
feedback on public communication channels, have helped us with the
creation of this specification:
André Greiner-Petter,
Anne van Kesteren,
Boris Zbarsky,
Brian Smith,
Elika Etemad,
Emilio Cobos Álvarez,
ExE Boss,
Ian Kilpatrick,
Koji Ishii,
L. David Baron,
Michael Kohlhase,
Michael Smith,
Ryosuke Niwa,
Sergey Malkin,
Tab Atkins Jr.,
Viktor Yaffle and
frankvel.
This section is non-normative.
This specification adds script execution mechanisms via the
MathML event handler attributes described 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 In [MathML3], it was possible to use the
This feature is not available in MathML Core, where
the 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 rmin and
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 non-normative.
As explained in 2.2.1 HTML and SVG,
MathML can be embedded into an SVG image via the
In the following example, the canvas image is set to the image of
some MathML content with an HTML link to
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.
The following
HTML+CSS+JavaScript document relies on a Web font with exotic metrics
to try and determine whether The following
HTML+CSS+JavaScript document tries to determine whether the
UI serif font provides Asian glyphs: The following
HTML+CSS document contains the same text rendered with
text-decoration-thickness set to This specification relies on information from
5. OpenType Although none of these parameters taken individually are personal,
implementing this specification increases the set of exposed
font information that can be used by an attacker to implement
fingerprinting techniques. Typically, they could help determine
available and preferred math fonts for a user.
Conformance requirements are expressed with a combination of
descriptive assertions and RFC 2119 terminology. The key words “MUST”,
“MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”,
“RECOMMENDED”, “MAY”, and “OPTIONAL” in the normative parts of this
document are to be interpreted as described in RFC 2119.
However, for readability, these words do not appear in all uppercase
letters in this specification.
All of the text of this specification is normative except sections
explicitly marked as non-normative, examples, and notes.
[RFC2119]
Examples in this specification are introduced with the words
“for example” or are set apart from the normative text with
This is an example of an informative example.
Informative notes begin with the word “Note” and are set apart from
the normative text with
Note, this is an informative note.
Advisements are normative sections styled to evoke special attention
and are set apart from other normative text with
Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in: Referenced in:columnspan
(respectively
rowspan
) attribute has the same
syntax and semantics as the
colspan
(respectively
)
attribute on the rowspan
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.
element
generates an anonymous
element accepts the attributes described
in 2.1.3 Global Attributes as well as the following
attributes:
<math>
<maction actiontype="toggle" selection="2">
<mfrac>
<mn>1mn>
<mn>2mn>
mfrac>
<mfrac>
<mn>1mn>
<mn>3mn>
mfrac>
<mfrac>
<mn>1mn>
<mn>4mn>
mfrac>
maction>
math>
element
is the same as the
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(:first-child) {
display: none;
}
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].
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 annotation-xml element.
<math>
<semantics>
<mfrac>
<mn>1mn>
<mn>2mn>
mfrac>
<annotation encoding="application/x-tex">\frac{1}{2}annotation>
<annotation-xml encoding="application/mathml-content+xml">
<apply>
<divide/>
<cn>1cn>
<cn>2cn>
apply>
annotation-xml>
<annotation-xml>
<svg width="25" height="75" xmlns="http://www.w3.org/2000/svg">
<path stroke-width="5.8743"
d="m5.9157 27.415h6.601v-22.783l-7.1813 1.4402v-3.6805l7.1408
-1.4402h4.0406v26.464h6.601v3.4005h-17.203z"/>
<path stroke="#000000" stroke-width="2.3409"
d="m0.83496 39.228h23.327"/>
<path stroke-width="5.8743"
d="m8.696 70.638h14.102v3.4005h-18.963v-3.4005q2.3004-2.3804
6.2608-6.3813 3.9806-4.0206 5.0007-5.1808 1.9403-2.1803
2.7004-3.6805 0.78011-1.5202 0.78011-2.9804 0-2.3804
-1.6802-3.8806-1.6603-1.5002-4.3406-1.5002-1.9003 0-4.0206
0.6601-2.1003 0.6601-4.5007 2.0003v-4.0806q2.4404-0.98013
4.5607-1.4802 2.1203-0.50007 3.8806-0.50007 4.6407 0 7.401
2.3203 2.7604 2.3203 2.7604 6.2009 0 1.8403-0.7001 3.5006
-0.68013 1.6402-2.5004 3.8806-0.50007 0.58009-3.1805 3.3605
-2.6804 2.7604-7.5614 7.7412z"/>
svg>
annotation-xml>
<annotation-xml encoding="application/xhtml+xml">
<div style="display: inline-flex;
flex-direction: column; align-items: center;">
<div>1div>
<div>―div>
<div>2div>
div>
annotation-xml>
semantics>
math>
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(:first-child) {
display: none;
}
and
element accepts the attributes
described in 2.1.3 Global Attributes as well as the
following attribute:
and
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 > :first-child { display: none; }
/* Show all text annotations. */
semantics > annotation { display: inline; }
/* Show all HTML annotations. */
semantics > annotation-xml[encoding="text/html" i],
semantics > annotation-xml[encoding="application/xhtml+xml" i] {
display: inline-block;
}
display
property
from CSS Display Module Level 3
is extended with a new inner display type:
Name:
display
New values:
display
is block math
or
inline 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 table-row
.
For the mtd
element, the computed value
is table-cell
.
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.
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;
grid-template-columns: 1.5em 1.5em 1.5em;
grid-template-rows: 1.5em 1.5em;
justify-items: center;
align-items: center;">
<mn>12mn>
<mn>34mn>
<mn>56mn>
<mn>7mn>
<mn>8mn>
<mn>9mn>
mrow>
mrow>
<mo symmetric="false">]mo>
mrow>
<mi>αmi>
msup>
math>
math-auto
.
On text nodes containing a single character, if the computed value
is math-auto
and the character is present in the
"Original" column of C.1 italic
mappings
then it is converted to the corresponding character from the "italic"
column.
math-auto
property is intended to implement this
default behavior, which can be overridden by authors if necessary.
Note that mathematical fonts are designed with a special kind
of italic glyphs located at the
Unicode positions of
C.1 italic
mappings, which differ from the shaping
obtained via italic font style. Compare this
mathematical formula
rendered with the Latin Modern Math font using
font-style: italic
(left) and
text-transform: math-auto
(right):
Name:
math-style
Value:
normal | compact
Initial:
normal
Applies to:
All elements
Inherited:
yes
Percentages: n/a
Computed value:
specified keyword
Canonical order:
n/a
Animation type:
not animatable
Media:
visual
math-style
is compact
,
the math layout on descendants tries to minimize the
logical height by
applying the following rules:
math
and
the computed value of math-depth
is
auto-add
(default for mfrac
)
as described in 4.5 The math-depth
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
,
,
.math
root styled with
math-style: compact
(left) and
math-style: normal
(right).
In the former case, the font-size is automatically scaled down
within the fractions and the summation limits are rendered as
subscript and superscript of the ∑. In the latter case, the ∑ is
drawn bigger than normal text and
vertical gaps within fractions (even relative to current
font-size) are larger.
math-style
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 math-style 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:
math-shift
Value:
normal | compact
Initial:
normal
Applies to:
All elements
Inherited:
yes
Percentages: n/a
Computed value:
specified keyword
Canonical order:
n/a
Animation type:
not animatable
Media:
visual
math-shift
is compact
, the math layout on descendants will use the
superscriptShiftUpCramped parameter to place superscript.
If the value of math-shift
is normal
, the math
will use the superscriptShiftUp parameter instead.
,
,
,
3.4.3 Prescripts and Tensor Indices
and
3.4.2 Underscripts and Overscripts
,
,
.
font-size
.
However, the one within the square root is rendered with
compact math-shift
while
the other one is rendered with
normal math-shift
, leading
to subtle different shift of the superscript "2".
math
.
Name:
math-depth
Value:
auto-add | add(
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
auto-add
and
the inherited value of math-style
is compact
then the computed value of
math-depth of the element is its inherited value plus one.
add(
then the computed value
of math-depth of the element is its inherited value plus
the specified integer.
then the computed value
of math-depth of the element is the specified integer.
math
then the
computed value of
font-size
is obtained by multiplying the inherited value of
font-size
by a nonzero scale factor calculated by the
following procedure:
InvertScaleFactor
to true.InvertScaleFactor
to false.
InvertScaleFactor
is false and 1/S otherwise.
math-depth
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 math-depth
changes.
MATH
table
of an OpenType font [OPEN-FONT-FORMAT]. Throughout this chapter,
a C-like 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.
MathValueRecord
entry) are scaled to appropriate values
for layout purpose, taking into account
head.unitsPerEm
, CSS
font-size
or zoom level.
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.
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.
MATH.MathVariants
table.
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,
NExt (respectively
NNonExt) is the number of extenders
(respectively non-extenders) in
GlyphAssembly.partRecords
.
GlyphAssembly
table,
SExt (respectively
SNonExt) is the sum of
GlyphPartRecord.fullAdvance
for all extenders (respectively non-extenders) in
GlyphAssembly.partRecords
.
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 omin.
Otherwise, it is not possible to satisfy the condition of
MathVariant.minConnectorOverlap
.
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.
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
.
T
.
(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
rmin 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 −
omax.
Part.glyphID
so that its (left, bottom) coordinates
are at position (x, y)
.
Set y
to
y − Part.fullAdvance +
omax.
RepetitionCounter
.
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
.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 */
* {
font-size: math;
display: block math;
writing-mode: horizontal-tb !important;
}
/* The
math {
direction: ltr;
text-indent: 0;
letter-spacing: normal;
line-height: normal;
word-spacing: normal;
font-family: math;
font-size: inherit;
font-style: normal;
font-weight: normal;
display: inline math;
math-shift: normal;
math-style: compact;
math-depth: 0;
}
math[display="block" i] {
display: block math;
math-style: normal;
}
math[display="inline" i] {
display: inline math;
math-style: compact;
}
/*
minsize
to 100%
.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.Content
, Form
) is as folllows:
Content
as an UTF-16 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 (2-characters ASCII strings): '!!', '!=', '&&', '**', '*=', '++', '+=', '--', '-=', '->', '//', '/=', ':=', '<=', '<>', '==', '>=', '||',
Operators_fence
61 entries (16 Unicode ranges): [U+0028–U+0029], {U+005B}, {U+005D}, [U+007B–U+007D], {U+0331}, {U+2016}, [U+2018–U+2019], [U+201C–U+201D], [U+2308–U+230B], [U+2329–U+232A], [U+2772–U+2773], [U+27E6–U+27EF], {U+2980}, [U+2983–U+2999], [U+29D8–U+29DB], [U+29FC–U+29FD],
Operators_separator
3 entries: U+002C, U+003B, U+2063,
Total size: 82 entries, 90 bytes
(assuming characters are UTF-16 and 1-byte range lengths).(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 108 entries (31 Unicode ranges) in infix form: {U+002B}, {U+002D}, {U+00B1}, {U+00F7}, {U+0322}, {U+2044}, [U+2212–U+2216], [U+2227–U+222A], {U+2236}, {U+2238}, [U+228C–U+228E], [U+2293–U+2296], {U+2298}, [U+229D–U+229F], [U+22BB–U+22BD], [U+22CE–U+22CF], [U+22D2–U+22D3], [U+2795–U+2797], {U+29B8}, {U+29BC}, [U+29C4–U+29C5], [U+29F5–U+29FB], [U+2A1F–U+2A2E], [U+2A38–U+2A3A], {U+2A3E}, [U+2A40–U+2A4F], [U+2A51–U+2A63], {U+2ADB}, {U+2AF6}, {U+2AFB}, {U+2AFD},
B 64 entries (33 Unicode ranges) 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 8 entries (5 Unicode ranges) in infix form: {U+002F}, {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
Total size: 725 entries, 639 bytes
(assuming characters are UTF-16 and 1-byte range lengths).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 third column provides a 4-bit encoding of the categories
where the 2 least significant bits encode the form infix (0), prefix (1) and postfix (2).{0x8025}, {0x802A}, {0x402B}, {0x402D}, {0x802E}, {0xC02F}, [0x803F–0x8040], {0xC05C}, {0x805E}, {0xC05F}, {0x40B1}, {0x80B7}, {0x80D7}, {0x40F7}, {0x4322}, {0x8323}, {0x832E}, {0x8422}, {0x8443}, {0x4444}, [0xC461–0xC464], [0x0590–0x0595], [0x059A–0x05A9], [0x05AA–0x05AE], [0x05B0–0x05B5], {0x05B9}, [0x05BC–0x05CB], [0x05CC–0x05D5], [0x05DA–0x05E9], [0x05EA–0x05F0], [0x05F3–0x05FF], {0xC606}, [0x4612–0x4616], [0x8617–0x8619], [0x4627–0x462A], {0x4636}, {0x4638}, {0x8640}, [0x468C–0x468E], [0x4693–0x4696], {0x8697}, {0x4698}, [0x8699–0x869B], [0x469D–0x469F], [0x86A0–0x86A1], {0x86BA}, [0x46BB–0x46BD], [0x86C4–0x86C7], [0x86C9–0x86CC], [0x46CE–0x46CF], [0x46D2–0x46D3], [0x8705–0x8706], {0x0B94}, [0x4B95–0x4B97], {0x0B99}, [0x0B9B–0x0BA1], [0x0BA5–0x0BA6], [0x0BA8–0x0BAF], {0x0BB1}, {0x0BB3}, {0x0BB5}, {0x0BB8}, [0x0BBA–0x0BBE], {0x8BCB}, {0x8BCD}, [0x0BF0–0x0BF1], [0x0BF4–0x0BFF], [0x0D00–0x0D0F], [0x0D10–0x0D1F], {0x0D20}, [0x0D34–0x0D37], [0x0D42–0x0D51], [0x0D52–0x0D61], [0x0D62–0x0D71], [0x0D72–0x0D75], [0x0D7C–0x0D7F], {0x4DB8}, {0x4DBC}, [0x4DC4–0x4DC5], [0x8DC6–0x8DC8], [0x8DD4–0x8DD7], {0x8DE2}, [0x4DF5–0x4DFB], [0x8E1D–0x8E1E], [0x4E1F–0x4E2E], [0x8E2F–0x8E37], [0x4E38–0x4E3A], [0x8E3B–0x8E3D], {0x4E3E}, {0x8E3F}, [0x4E40–0x4E4F], {0x8E50}, [0x4E51–0x4E60], [0x4E61–0x4E63], [0x8E64–0x8E65], {0x4EDB}, [0x8EDC–0x8EDD], {0x4EF6}, {0x4EFB}, {0x4EFD}, {0x8EFE}, [0x0F04–0x0F07], [0x0F0C–0x0F11], [0x0F30–0x0F3E], [0x0F40–0x0F4C], [0x0F60–0x0F65], [0x0F6A–0x0F6D], [0x0F70–0x0F73], [0x0F7A–0x0F7D], [0x0F80–0x0F87], {0x0F95}, [0x0FA0–0x0FAF], {0x0FB8}, {0x1021}, {0x5028}, {0x102B}, {0x102D}, {0x505B}, [0x507B–0x507C], {0x10AC}, {0x10B1}, {0x1331}, {0x5416}, {0x1418}, {0x141C}, [0x1600–0x1601], [0x1603–0x1604], {0x1607}, [0xD60F–0xD611], [0x1612–0x1613], [0x161F–0x1622], [0x962B–0x9633], [0x1634–0x1635], {0x163C}, [0x16BE–0x16BF], [0xD6C0–0xD6C3], {0x5708}, {0x570A}, {0x1710}, {0x1719}, {0x5729}, {0x5B72}, [0x1B95–0x1B96], {0x1BC0}, {0x5BE6}, {0x5BE8}, {0x5BEA}, {0x5BEC}, {0x5BEE}, {0x5D80}, {0x5D83}, {0x5D85}, {0x5D87}, {0x5D89}, {0x5D8B}, {0x5D8D}, {0x5D8F}, {0x5D91}, {0x5D93}, {0x5D95}, {0x5D97}, {0x5D99}, [0x1D9B–0x1DAA], [0x1DAB–0x1DAF], {0x5DD8}, {0x5DDA}, {0x5DFC}, [0xDE00–0xDE0A], [0x9E0B–0x9E1A], [0x9E1B–0x9E1C], [0xDE1D–0xDE1E], [0x1EEC–0x1EED], {0xDEFC}, {0xDEFF}, [0x2021–0x2022], [0x2025–0x2027], {0x6029}, {0x605D}, [0xA05E–0xA05F], {0x2060}, [0x607C–0x607D], {0xA07E}, {0x20A8}, {0xA0AF}, {0x20B0}, [0x20B2–0x20B4], [0x20B8–0x20B9], [0xA2C6–0xA2C7], {0xA2C9}, [0x22CA–0x22CB], {0xA2CD}, [0x22D8–0x22DA], {0xA2DC}, {0x22DD}, {0xA2F7}, {0xA302}, {0x2311}, {0x2320}, {0x2325}, {0x2327}, {0x2331}, {0x6416}, [0x2419–0x241B], [0x241D–0x241F], [0x2432–0x2437], {0xA43E}, {0x2457}, [0x24DB–0x24DC], {0x6709}, {0x670B}, [0xA722–0xA723], {0x672A}, [0xA7B4–0xA7B5], {0x27CD}, [0xA7DC–0xA7E1], {0x6B73}, {0x6BE7}, {0x6BE9}, {0x6BEB}, {0x6BED}, {0x6BEF}, {0x6D80}, {0x6D84}, {0x6D86}, {0x6D88}, {0x6D8A}, {0x6D8C}, {0x6D8E}, {0x6D90}, {0x6D92}, {0x6D94}, {0x6D96}, [0x6D98–0x6D99], {0x6DD9}, {0x6DDB}, {0x6DFD},
Key
is Entry
% 0x4000, category encoding is Entry
/ 0x1000.
Total size: 716 entries, 590 bytes
(assuming 4 bits for range lengths).
c
is inline if it belongs to the list below.
Otherwise, the intrinsic stretch axis of c
is
block.
U+003D,
U+005E,
U+005F,
U+007E,
U+00AF,
U+02C6,
U+02C7,
U+02C9,
U+02CD,
U+02DC,
U+02F7,
U+0302,
U+0332,
U+203E,
U+20D0,
U+20D1,
U+20D6,
U+20D7,
U+20E1,
U+2190,
U+2192,
U+2194,
U+2198,
U+2199,
U+219A,
U+219B,
U+219C,
U+219D,
U+219E,
U+21A0,
U+21A2,
U+21A3,
U+21A4,
U+21A6,
U+21A9,
U+21AA,
U+21AB,
U+21AC,
U+21AD,
U+21AE,
U+21B4,
U+21B9,
U+21BC,
U+21BD,
U+21C0,
U+21C1,
U+21C4,
U+21C6,
U+21C7,
U+21C9,
U+21CB,
U+21CC,
U+21CD,
U+21CE,
U+21CF,
U+21D0,
U+21D2,
U+21D4,
U+21DA,
U+21DB,
U+21DC,
U+21DD,
U+21E0,
U+21E2,
U+21E4,
U+21E5,
U+21E6,
U+21E8,
U+21F0,
U+21F4,
U+21F6,
U+21F7,
U+21F8,
U+21F9,
U+21FA,
U+21FB,
U+21FC,
U+21FD,
U+21FE,
U+21FF,
U+2322,
U+2323,
U+23B4,
U+23B5,
U+23DC,
U+23DD,
U+23DE,
U+23DF,
U+23E0,
U+23E1,
U+2500,
U+2794,
U+2799,
U+279B,
U+279C,
U+279D,
U+279E,
U+279F,
U+27A0,
U+27A1,
U+27A5,
U+27A6,
U+27A8,
U+27A9,
U+27AA,
U+27AB,
U+27AC,
U+27AD,
U+27AE,
U+27AF,
U+27B1,
U+27B3,
U+27B5,
U+27B8,
U+27BA,
U+27BB,
U+27BC,
U+27BD,
U+27BE,
U+27F4,
U+27F5,
U+27F6,
U+27F7,
U+27F8,
U+27F9,
U+27FA,
U+27FB,
U+27FC,
U+27FD,
U+27FE,
U+27FF,
U+2900,
U+2901,
U+2902,
U+2903,
U+2904,
U+2905,
U+2906,
U+2907,
U+290C,
U+290D,
U+290E,
U+290F,
U+2910,
U+2911,
U+2914,
U+2915,
U+2916,
U+2917,
U+2918,
U+2919,
U+291A,
U+291B,
U+291C,
U+291D,
U+291E,
U+291F,
U+2920,
U+2942,
U+2943,
U+2944,
U+2945,
U+2946,
U+2947,
U+2948,
U+294A,
U+294B,
U+294E,
U+2950,
U+2952,
U+2953,
U+2956,
U+2957,
U+295A,
U+295B,
U+295E,
U+295F,
U+2962,
U+2964,
U+2966,
U+2967,
U+2968,
U+2969,
U+296A,
U+296B,
U+296C,
U+296D,
U+2970,
U+2971,
U+2972,
U+2973,
U+2974,
U+2975,
U+297C,
U+297D,
U+2B04,
U+2B05,
U+2B0C,
U+2B30,
U+2B31,
U+2B32,
U+2B33,
U+2B34,
U+2B35,
U+2B36,
U+2B37,
U+2B38,
U+2B39,
U+2B3A,
U+2B3B,
U+2B3C,
U+2B3D,
U+2B3E,
U+2B40,
U+2B41,
U+2B42,
U+2B43,
U+2B44,
U+2B45,
U+2B46,
U+2B47,
U+2B48,
U+2B49,
U+2B4A,
U+2B4B,
U+2B4C,
U+2B60,
U+2B62,
U+2B64,
U+2B6A,
U+2B6C,
U+2B70,
U+2B72,
U+2B7A,
U+2B7C,
U+2B80,
U+2B82,
U+2B84,
U+2B86,
U+2B95,
U+FE35,
U+FE36,
U+FE37,
U+FE38,
U+1EEF0,
U+1EEF1,
Total size: 246 entries, 492 bytes (assuming 16 bits for all but the non-BMP entries).Content
and Form
indexing together
the dictionary.
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+00B1 block infix
0.2222222222222222em
0.2222222222222222em
N/A ÷ U+00F7 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⁄ U+2044 block infix
0.2222222222222222em
0.2222222222222222em
N/A − U+2212 block infix
0.2222222222222222em
0.2222222222222222em
N/A ∓ U+2213 block infix
0.2222222222222222em
0.2222222222222222em
N/A ∔ U+2214 block infix
0.2222222222222222em
0.2222222222222222em
N/A ∕ U+2215 block infix
0.2222222222222222em
0.2222222222222222em
N/A ∖ U+2216 block infix
0.2222222222222222em
0.2222222222222222em
N/A ∧ U+2227 block infix
0.2222222222222222em
0.2222222222222222em
N/A ∨ U+2228 block infix
0.2222222222222222em
0.2222222222222222em
N/A ∩ U+2229 block infix
0.2222222222222222em
0.2222222222222222em
N/A ∪ U+222A block infix
0.2222222222222222em
0.2222222222222222em
N/A ∶ U+2236 block infix
0.2222222222222222em
0.2222222222222222em
N/A ∸ U+2238 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⊌ U+228C block infix
0.2222222222222222em
0.2222222222222222em
N/A ⊍ U+228D block infix
0.2222222222222222em
0.2222222222222222em
N/A ⊎ U+228E block infix
0.2222222222222222em
0.2222222222222222em
N/A ⊓ U+2293 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⊔ U+2294 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⊕ U+2295 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⊖ U+2296 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⊘ U+2298 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⊝ U+229D block infix
0.2222222222222222em
0.2222222222222222em
N/A ⊞ U+229E block infix
0.2222222222222222em
0.2222222222222222em
N/A ⊟ U+229F block infix
0.2222222222222222em
0.2222222222222222em
N/A ⊻ U+22BB block infix
0.2222222222222222em
0.2222222222222222em
N/A ⊼ U+22BC block infix
0.2222222222222222em
0.2222222222222222em
N/A ⊽ U+22BD block infix
0.2222222222222222em
0.2222222222222222em
N/A ⋎ U+22CE block infix
0.2222222222222222em
0.2222222222222222em
N/A ⋏ U+22CF block infix
0.2222222222222222em
0.2222222222222222em
N/A ⋒ U+22D2 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⋓ U+22D3 block infix
0.2222222222222222em
0.2222222222222222em
N/A ➕ U+2795 block infix
0.2222222222222222em
0.2222222222222222em
N/A ➖ U+2796 block infix
0.2222222222222222em
0.2222222222222222em
N/A ➗ U+2797 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⦸ U+29B8 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⦼ U+29BC block infix
0.2222222222222222em
0.2222222222222222em
N/A ⧄ U+29C4 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⧅ U+29C5 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⧵ U+29F5 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⧶ U+29F6 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⧷ U+29F7 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⧸ U+29F8 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⧹ U+29F9 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⧺ U+29FA block infix
0.2222222222222222em
0.2222222222222222em
N/A ⧻ U+29FB block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨟ U+2A1F block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨠ U+2A20 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨡ U+2A21 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨢ U+2A22 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨣ U+2A23 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨤ U+2A24 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨥ U+2A25 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨦ U+2A26 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨧ U+2A27 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨨ U+2A28 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨩ U+2A29 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨪ U+2A2A block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨫ U+2A2B block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨬ U+2A2C block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨭ U+2A2D block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨮ U+2A2E block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨸ U+2A38 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨹ U+2A39 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨺ U+2A3A block infix
0.2222222222222222em
0.2222222222222222em
N/A ⨾ U+2A3E block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩀ U+2A40 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩁ U+2A41 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩂ U+2A42 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩃ U+2A43 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩄ U+2A44 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩅ U+2A45 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩆ U+2A46 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩇ U+2A47 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩈ U+2A48 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩉ U+2A49 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩊ U+2A4A block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩋ U+2A4B block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩌ U+2A4C block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩍ U+2A4D block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩎ U+2A4E block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩏ U+2A4F block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩑ U+2A51 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩒ U+2A52 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩓ U+2A53 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩔ U+2A54 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩕ U+2A55 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩖ U+2A56 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩗ U+2A57 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩘ U+2A58 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩙ U+2A59 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩚ U+2A5A block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩛ U+2A5B block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩜ U+2A5C block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩝ U+2A5D block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩞ U+2A5E block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩟ U+2A5F block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩠ U+2A60 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩡ U+2A61 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩢ U+2A62 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⩣ U+2A63 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⫛ U+2ADB block infix
0.2222222222222222em
0.2222222222222222em
N/A ⫶ U+2AF6 block infix
0.2222222222222222em
0.2222222222222222em
N/A ⫻ U+2AFB block infix
0.2222222222222222em
0.2222222222222222em
N/A ⫽ U+2AFD block infix
0.2222222222222222em
0.2222222222222222em
N/A String && U+0026 U+0026 block infix
0.2222222222222222em
0.2222222222222222em
N/A % U+0025 block infix
0.16666666666666666em
0.16666666666666666em
N/A * U+002A block infix
0.16666666666666666em
0.16666666666666666em
N/A . U+002E block infix
0.16666666666666666em
0.16666666666666666em
N/A ? U+003F block infix
0.16666666666666666em
0.16666666666666666em
N/A @ U+0040 block infix
0.16666666666666666em
0.16666666666666666em
N/A ^ U+005E inline infix
0.16666666666666666em
0.16666666666666666em
N/A · U+00B7 block infix
0.16666666666666666em
0.16666666666666666em
N/A × U+00D7 block infix
0.16666666666666666em
0.16666666666666666em
N/A • U+2022 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⁃ U+2043 block infix
0.16666666666666666em
0.16666666666666666em
N/A ∗ U+2217 block infix
0.16666666666666666em
0.16666666666666666em
N/A ∘ U+2218 block infix
0.16666666666666666em
0.16666666666666666em
N/A ∙ U+2219 block infix
0.16666666666666666em
0.16666666666666666em
N/A ≀ U+2240 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⊗ U+2297 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⊙ U+2299 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⊚ U+229A block infix
0.16666666666666666em
0.16666666666666666em
N/A ⊛ U+229B block infix
0.16666666666666666em
0.16666666666666666em
N/A ⊠ U+22A0 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⊡ U+22A1 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⊺ U+22BA block infix
0.16666666666666666em
0.16666666666666666em
N/A ⋄ U+22C4 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⋅ U+22C5 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⋆ U+22C6 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⋇ U+22C7 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⋉ U+22C9 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⋊ U+22CA block infix
0.16666666666666666em
0.16666666666666666em
N/A ⋋ U+22CB block infix
0.16666666666666666em
0.16666666666666666em
N/A ⋌ U+22CC block infix
0.16666666666666666em
0.16666666666666666em
N/A ⌅ U+2305 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⌆ U+2306 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⟋ U+27CB block infix
0.16666666666666666em
0.16666666666666666em
N/A ⟍ U+27CD block infix
0.16666666666666666em
0.16666666666666666em
N/A ⧆ U+29C6 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⧇ U+29C7 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⧈ U+29C8 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⧔ U+29D4 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⧕ U+29D5 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⧖ U+29D6 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⧗ U+29D7 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⧢ U+29E2 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⨝ U+2A1D block infix
0.16666666666666666em
0.16666666666666666em
N/A ⨞ U+2A1E block infix
0.16666666666666666em
0.16666666666666666em
N/A ⨯ U+2A2F block infix
0.16666666666666666em
0.16666666666666666em
N/A ⨰ U+2A30 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⨱ U+2A31 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⨲ U+2A32 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⨳ U+2A33 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⨴ U+2A34 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⨵ U+2A35 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⨶ U+2A36 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⨷ U+2A37 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⨻ U+2A3B block infix
0.16666666666666666em
0.16666666666666666em
N/A ⨼ U+2A3C block infix
0.16666666666666666em
0.16666666666666666em
N/A ⨽ U+2A3D block infix
0.16666666666666666em
0.16666666666666666em
N/A ⨿ U+2A3F block infix
0.16666666666666666em
0.16666666666666666em
N/A ⩐ U+2A50 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⩤ U+2A64 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⩥ U+2A65 block infix
0.16666666666666666em
0.16666666666666666em
N/A ⫝̸ U+2ADC block infix
0.16666666666666666em
0.16666666666666666em
N/A ⫝ U+2ADD block infix
0.16666666666666666em
0.16666666666666666em
N/A ⫾ U+2AFE block infix
0.16666666666666666em
0.16666666666666666em
N/A String ** U+002A U+002A block infix
0.16666666666666666em
0.16666666666666666em
N/A String <> U+003C U+003E block infix
0.16666666666666666em
0.16666666666666666em
N/A ! U+0021 block prefix
0
0
N/A + U+002B block prefix
0
0
N/A - U+002D block prefix
0
0
N/A ¬ U+00AC block prefix
0
0
N/A ± U+00B1 block prefix
0
0
N/A ‘ U+2018 block prefix
0
0
fence “ U+201C block prefix
0
0
fence ∀ U+2200 block prefix
0
0
N/A ∁ U+2201 block prefix
0
0
N/A ∃ U+2203 block prefix
0
0
N/A ∄ U+2204 block prefix
0
0
N/A ∇ U+2207 block prefix
0
0
N/A − U+2212 block prefix
0
0
N/A ∓ U+2213 block prefix
0
0
N/A ∟ U+221F block prefix
0
0
N/A ∠ U+2220 block prefix
0
0
N/A ∡ U+2221 block prefix
0
0
N/A ∢ U+2222 block prefix
0
0
N/A ∴ U+2234 block prefix
0
0
N/A ∵ U+2235 block prefix
0
0
N/A ∼ U+223C block prefix
0
0
N/A ⊾ U+22BE block prefix
0
0
N/A ⊿ U+22BF block prefix
0
0
N/A ⌐ U+2310 block prefix
0
0
N/A ⌙ U+2319 block prefix
0
0
N/A ➕ U+2795 block prefix
0
0
N/A ➖ U+2796 block prefix
0
0
N/A ⟀ U+27C0 block prefix
0
0
N/A ⦛ U+299B block prefix
0
0
N/A ⦜ U+299C block prefix
0
0
N/A ⦝ U+299D block prefix
0
0
N/A ⦞ U+299E block prefix
0
0
N/A ⦟ U+299F block prefix
0
0
N/A ⦠ U+29A0 block prefix
0
0
N/A ⦡ U+29A1 block prefix
0
0
N/A ⦢ U+29A2 block prefix
0
0
N/A ⦣ U+29A3 block prefix
0
0
N/A ⦤ U+29A4 block prefix
0
0
N/A ⦥ U+29A5 block prefix
0
0
N/A ⦦ U+29A6 block prefix
0
0
N/A ⦧ U+29A7 block prefix
0
0
N/A ⦨ U+29A8 block prefix
0
0
N/A ⦩ U+29A9 block prefix
0
0
N/A ⦪ U+29AA block prefix
0
0
N/A ⦫ U+29AB block prefix
0
0
N/A ⦬ U+29AC block prefix
0
0
N/A ⦭ U+29AD block prefix
0
0
N/A ⦮ U+29AE block prefix
0
0
N/A ⦯ U+29AF block prefix
0
0
N/A ⫬ U+2AEC block prefix
0
0
N/A ⫭ U+2AED block prefix
0
0
N/A String || U+007C U+007C block prefix
0
0
fence ! U+0021 block postfix
0
0
N/A " U+0022 block postfix
0
0
N/A % U+0025 block postfix
0
0
N/A & U+0026 block postfix
0
0
N/A ' U+0027 block postfix
0
0
N/A ` U+0060 block postfix
0
0
N/A ¨ U+00A8 block postfix
0
0
N/A ° U+00B0 block postfix
0
0
N/A ² U+00B2 block postfix
0
0
N/A ³ U+00B3 block postfix
0
0
N/A ´ U+00B4 block postfix
0
0
N/A ¸ U+00B8 block postfix
0
0
N/A ¹ U+00B9 block postfix
0
0
N/A ˊ U+02CA block postfix
0
0
N/A ˋ U+02CB block postfix
0
0
N/A ˘ U+02D8 block postfix
0
0
N/A ˙ U+02D9 block postfix
0
0
N/A ˚ U+02DA block postfix
0
0
N/A ˝ U+02DD block postfix
0
0
N/A ̑ U+0311 block postfix
0
0
N/A ’ U+2019 block postfix
0
0
fence ‚ U+201A block postfix
0
0
N/A ‛ U+201B block postfix
0
0
N/A ” U+201D block postfix
0
0
fence „ U+201E block postfix
0
0
N/A ‟ U+201F block postfix
0
0
N/A ′ U+2032 block postfix
0
0
N/A ″ U+2033 block postfix
0
0
N/A ‴ U+2034 block postfix
0
0
N/A ‵ U+2035 block postfix
0
0
N/A ‶ U+2036 block postfix
0
0
N/A ‷ U+2037 block postfix
0
0
N/A ⁗ U+2057 block postfix
0
0
N/A ⃛ U+20DB block postfix
0
0
N/A ⃜ U+20DC block postfix
0
0
N/A ⏍ U+23CD block postfix
0
0
N/A String !! U+0021 U+0021 block postfix
0
0
N/A String ++ U+002B U+002B block postfix
0
0
N/A String -- U+002D U+002D block postfix
0
0
N/A String || U+007C U+007C block postfix
0
0
fence ( U+0028 block prefix
0
0
stretchy symmetric fence [ U+005B block prefix
0
0
stretchy symmetric fence { U+007B block prefix
0
0
stretchy symmetric fence | U+007C block prefix
0
0
stretchy symmetric fence ‖ U+2016 block prefix
0
0
stretchy symmetric fence ⌈ U+2308 block prefix
0
0
stretchy symmetric fence ⌊ U+230A block prefix
0
0
stretchy symmetric fence 〈 U+2329 block prefix
0
0
stretchy symmetric fence ❲ U+2772 block prefix
0
0
stretchy symmetric fence ⟦ U+27E6 block prefix
0
0
stretchy symmetric fence ⟨ U+27E8 block prefix
0
0
stretchy symmetric fence ⟪ U+27EA block prefix
0
0
stretchy symmetric fence ⟬ U+27EC block prefix
0
0
stretchy symmetric fence ⟮ U+27EE block prefix
0
0
stretchy symmetric fence ⦀ U+2980 block prefix
0
0
stretchy symmetric fence ⦃ U+2983 block prefix
0
0
stretchy symmetric fence ⦅ U+2985 block prefix
0
0
stretchy symmetric fence ⦇ U+2987 block prefix
0
0
stretchy symmetric fence ⦉ U+2989 block prefix
0
0
stretchy symmetric fence ⦋ U+298B block prefix
0
0
stretchy symmetric fence ⦍ U+298D block prefix
0
0
stretchy symmetric fence ⦏ U+298F block prefix
0
0
stretchy symmetric fence ⦑ U+2991 block prefix
0
0
stretchy symmetric fence ⦓ U+2993 block prefix
0
0
stretchy symmetric fence ⦕ U+2995 block prefix
0
0
stretchy symmetric fence ⦗ U+2997 block prefix
0
0
stretchy symmetric fence ⦙ U+2999 block prefix
0
0
stretchy symmetric fence ⧘ U+29D8 block prefix
0
0
stretchy symmetric fence ⧚ U+29DA block prefix
0
0
stretchy symmetric fence ⧼ U+29FC block prefix
0
0
stretchy symmetric fence ) U+0029 block postfix
0
0
stretchy symmetric fence ] U+005D block postfix
0
0
stretchy symmetric fence | U+007C block postfix
0
0
stretchy symmetric fence } U+007D block postfix
0
0
stretchy symmetric fence ‖ U+2016 block postfix
0
0
stretchy symmetric fence ⌉ U+2309 block postfix
0
0
stretchy symmetric fence ⌋ U+230B block postfix
0
0
stretchy symmetric fence 〉 U+232A block postfix
0
0
stretchy symmetric fence ❳ U+2773 block postfix
0
0
stretchy symmetric fence ⟧ U+27E7 block postfix
0
0
stretchy symmetric fence ⟩ U+27E9 block postfix
0
0
stretchy symmetric fence ⟫ U+27EB block postfix
0
0
stretchy symmetric fence ⟭ U+27ED block postfix
0
0
stretchy symmetric fence ⟯ U+27EF block postfix
0
0
stretchy symmetric fence ⦀ U+2980 block postfix
0
0
stretchy symmetric fence ⦄ U+2984 block postfix
0
0
stretchy symmetric fence ⦆ U+2986 block postfix
0
0
stretchy symmetric fence ⦈ U+2988 block postfix
0
0
stretchy symmetric fence ⦊ U+298A block postfix
0
0
stretchy symmetric fence ⦌ U+298C block postfix
0
0
stretchy symmetric fence ⦎ U+298E block postfix
0
0
stretchy symmetric fence ⦐ U+2990 block postfix
0
0
stretchy symmetric fence ⦒ U+2992 block postfix
0
0
stretchy symmetric fence ⦔ U+2994 block postfix
0
0
stretchy symmetric fence ⦖ U+2996 block postfix
0
0
stretchy symmetric fence ⦘ U+2998 block postfix
0
0
stretchy symmetric fence ⦙ U+2999 block postfix
0
0
stretchy symmetric fence ⧙ U+29D9 block postfix
0
0
stretchy symmetric fence ⧛ U+29DB block postfix
0
0
stretchy symmetric fence ⧽ U+29FD block postfix
0
0
stretchy symmetric fence ∫ U+222B block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ∬ U+222C block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ∭ U+222D block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ∮ U+222E block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ∯ U+222F block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ∰ U+2230 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ∱ U+2231 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ∲ U+2232 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ∳ U+2233 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ⨋ U+2A0B block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ⨌ U+2A0C block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ⨍ U+2A0D block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ⨎ U+2A0E block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ⨏ U+2A0F block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ⨐ U+2A10 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ⨑ U+2A11 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ⨒ U+2A12 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ⨓ U+2A13 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ⨔ U+2A14 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ⨕ U+2A15 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ⨖ U+2A16 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ⨗ U+2A17 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ⨘ U+2A18 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ⨙ U+2A19 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ⨚ U+2A1A block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ⨛ U+2A1B block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ⨜ U+2A1C block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop ^ U+005E inline postfix
0
0
stretchy _ U+005F inline postfix
0
0
stretchy ~ U+007E inline postfix
0
0
stretchy ¯ U+00AF inline postfix
0
0
stretchy ˆ U+02C6 inline postfix
0
0
stretchy ˇ U+02C7 inline postfix
0
0
stretchy ˉ U+02C9 inline postfix
0
0
stretchy ˍ U+02CD inline postfix
0
0
stretchy ˜ U+02DC inline postfix
0
0
stretchy ˷ U+02F7 inline postfix
0
0
stretchy ̂ U+0302 inline postfix
0
0
stretchy ‾ U+203E inline postfix
0
0
stretchy ⌢ U+2322 inline postfix
0
0
stretchy ⌣ U+2323 inline postfix
0
0
stretchy ⎴ U+23B4 inline postfix
0
0
stretchy ⎵ U+23B5 inline postfix
0
0
stretchy ⏜ U+23DC inline postfix
0
0
stretchy ⏝ U+23DD inline postfix
0
0
stretchy ⏞ U+23DE inline postfix
0
0
stretchy ⏟ U+23DF inline postfix
0
0
stretchy ⏠ U+23E0 inline postfix
0
0
stretchy ⏡ U+23E1 inline postfix
0
0
stretchy 𞻰 U+1EEF0 inline postfix
0
0
stretchy 𞻱 U+1EEF1 inline postfix
0
0
stretchy ∏ U+220F block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ∐ U+2210 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ∑ U+2211 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⋀ U+22C0 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⋁ U+22C1 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⋂ U+22C2 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⋃ U+22C3 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⨀ U+2A00 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⨁ U+2A01 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⨂ U+2A02 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⨃ U+2A03 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⨄ U+2A04 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⨅ U+2A05 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⨆ U+2A06 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⨇ U+2A07 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⨈ U+2A08 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⨉ U+2A09 block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⨊ U+2A0A block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⨝ U+2A1D block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⨞ U+2A1E block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⫼ U+2AFC block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits ⫿ U+2AFF block prefix
0.16666666666666666em
0.16666666666666666em
symmetric largeop movablelimits / U+002F block infix
0
0
N/A \ U+005C block infix
0
0
N/A _ U+005F inline infix
0
0
N/A U+2061 block infix
0
0
N/A U+2062 block infix
0
0
N/A U+2063 block infix
0
0
separator U+2064 block infix
0
0
N/A ∆ U+2206 block infix
0
0
N/A ⅅ U+2145 block prefix
0.16666666666666666em
0
N/A ⅆ U+2146 block prefix
0.16666666666666666em
0
N/A ∂ U+2202 block prefix
0.16666666666666666em
0
N/A √ U+221A block prefix
0.16666666666666666em
0
N/A ∛ U+221B block prefix
0.16666666666666666em
0
N/A ∜ U+221C block prefix
0.16666666666666666em
0
N/A , U+002C block infix
0
0.16666666666666666em
separator : U+003A block infix
0
0.16666666666666666em
N/A ; U+003B block infix
0
0.16666666666666666em
separator
Total size: 1177 entries, ≥ 3679 bytes
(assuming 'Content' uses at least one UTF-16 character, 'Stretch Axis' 1 bit, 'Form' 2 bits, the different combinations of 'rspace' and 'space' at least 3 bits, and the different combinations of properties 3 bits).Non Combining Style Combining U+002B plus sign below U+031F combining plus sign below U+002D hyphen-minus above U+0305 combining overline U+002D hyphen-minus below U+0320 combining minus sign below U+002D hyphen-minus below U+0332 combining low line U+002E full stop above U+0307 combining dot above U+002E full stop below U+0323 combining dot below U+005E circumflex accent above U+0302 combining circumflex accent U+005E circumflex accent below U+032D combining circumflex accent below U+005F low line below U+0332 combining low line U+0060 grave accent above U+0300 combining grave accent U+0060 grave accent below U+0316 combining grave accent below U+007E tilde above U+0303 combining tilde U+007E tilde below U+0330 combining tilde below U+00A8 diaeresis above U+0308 combining diaeresis U+00A8 diaeresis below U+0324 combining diaeresis below U+00AF macron above U+0304 combining macron U+00AF macron above U+0305 combining overline U+00B4 acute accent above U+0301 combining acute accent U+00B4 acute accent below U+0317 combining acute accent below U+00B8 cedilla below U+0327 combining cedilla U+02C6 modifier letter circumflex accent above U+0302 combining circumflex accent U+02C7 caron above U+030C combining caron U+02C7 caron below U+032C combining caron below U+02D8 breve above U+0306 combining breve U+02D8 breve below U+032E combining breve below U+02D9 dot above above U+0307 combining dot above U+02D9 dot above below U+0323 combining dot below U+02DB ogonek below U+0328 combining ogonek U+02DC small tilde above U+0303 combining tilde U+02DC small tilde below U+0330 combining tilde below U+02DD double acute accent above U+030B combining double acute accent U+203E overline above U+0305 combining overline U+2190 leftwards arrow above U+20D6 U+2192 rightwards arrow above U+20D7 combining right arrow above U+2192 rightwards arrow above U+20EF combining right arrow below U+2212 minus sign above U+0305 combining overline U+2212 minus sign below U+0332 combining low line U+27F6 long rightwards arrow above U+20D7 combining right arrow above U+27F6 long rightwards arrow above U+20EF combining right arrow below Combining Style Non Combining U+0300 combining grave accent above U+0060 grave accent U+0301 combining acute accent above U+00B4 acute accent U+0302 combining circumflex accent above U+005E circumflex accent U+0302 combining circumflex accent above U+02C6 modifier letter circumflex accent U+0303 combining tilde above U+007E tilde U+0303 combining tilde above U+02DC small tilde U+0304 combining macron above U+00AF macron U+0305 combining overline above U+002D hyphen-minus U+0305 combining overline above U+00AF macron U+0305 combining overline above U+203E overline U+0305 combining overline above U+2212 minus sign U+0306 combining breve above U+02D8 breve U+0307 combining dot above above U+02E U+0307 combining dot above above U+002E full stop U+0307 combining dot above above U+02D9 dot above U+0308 combining diaeresis above U+00A8 diaeresis U+030B combining double acute accent above U+02DD double acute accent U+030C combining caron above U+02C7 caron U+0312 combining turned comma above above U+0B8 U+0316 combining grave accent below below U+0060 grave accent U+0317 combining acute accent below below U+00B4 acute accent U+031F combining plus sign below below U+002B plus sign U+0320 combining minus sign below below U+002D hyphen-minus U+0323 combining dot below below U+002E full stop U+0323 combining dot below below U+02D9 dot above U+0324 combining diaeresis below below U+00A8 diaeresis U+0327 combining cedilla below U+00B8 cedilla U+0328 combining ogonek below U+02DB ogonek U+032C combining caron below below U+02C7 caron U+032D combining circumflex accent below below U+005E circumflex accent U+032E combining breve below below U+02D8 breve U+0330 combining tilde below below U+007E tilde U+0330 combining tilde below below U+02DC small tilde U+0332 combining low line below U+002D hyphen-minus U+0332 combining low line below U+005F low line U+0332 combining low line below U+2212 minus sign U+0338 combining long solidus overlay over U+02F U+20D7 combining right arrow above above U+2192 rightwards arrow U+20D7 combining right arrow above above U+27F6 long rightwards arrow U+20EF combining right arrow below above U+2192 rightwards arrow U+20EF combining right arrow below above U+27F6 long rightwards arrow 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 ⇁
\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.salt
or
ssXY
properties from [OPEN-FONT-FORMAT]
to provide both styles. Page authors may use the
font-variant-alternates property with corresponding OpenType font features
to access these glyphs.
italic
math alphanumeric characters may be accessed as described above using the CSS
text-transform: math-auto
transform which is applied by default to single character
elements.
As a convenience the mapping to math italic is shown below.
Original italic Δcode point A U+0041 𝐴 U+1D434 1D3F3 B U+0042 𝐵 U+1D435 1D3F3 C U+0043 𝐶 U+1D436 1D3F3 D U+0044 𝐷 U+1D437 1D3F3 E U+0045 𝐸 U+1D438 1D3F3 F U+0046 𝐹 U+1D439 1D3F3 G U+0047 𝐺 U+1D43A 1D3F3 H U+0048 𝐻 U+1D43B 1D3F3 I U+0049 𝐼 U+1D43C 1D3F3 J U+004A 𝐽 U+1D43D 1D3F3 K U+004B 𝐾 U+1D43E 1D3F3 L U+004C 𝐿 U+1D43F 1D3F3 M U+004D 𝑀 U+1D440 1D3F3 N U+004E 𝑁 U+1D441 1D3F3 O U+004F 𝑂 U+1D442 1D3F3 P U+0050 𝑃 U+1D443 1D3F3 Q U+0051 𝑄 U+1D444 1D3F3 R U+0052 𝑅 U+1D445 1D3F3 S U+0053 𝑆 U+1D446 1D3F3 T U+0054 𝑇 U+1D447 1D3F3 U U+0055 𝑈 U+1D448 1D3F3 V U+0056 𝑉 U+1D449 1D3F3 W U+0057 𝑊 U+1D44A 1D3F3 X U+0058 𝑋 U+1D44B 1D3F3 Y U+0059 𝑌 U+1D44C 1D3F3 Z U+005A 𝑍 U+1D44D 1D3F3 a U+0061 𝑎 U+1D44E 1D3ED b U+0062 𝑏 U+1D44F 1D3ED c U+0063 𝑐 U+1D450 1D3ED d U+0064 𝑑 U+1D451 1D3ED e U+0065 𝑒 U+1D452 1D3ED f U+0066 𝑓 U+1D453 1D3ED g U+0067 𝑔 U+1D454 1D3ED h U+0068 ℎ U+0210E 20A6 i U+0069 𝑖 U+1D456 1D3ED j U+006A 𝑗 U+1D457 1D3ED k U+006B 𝑘 U+1D458 1D3ED l U+006C 𝑙 U+1D459 1D3ED m U+006D 𝑚 U+1D45A 1D3ED n U+006E 𝑛 U+1D45B 1D3ED o U+006F 𝑜 U+1D45C 1D3ED p U+0070 𝑝 U+1D45D 1D3ED q U+0071 𝑞 U+1D45E 1D3ED r U+0072 𝑟 U+1D45F 1D3ED s U+0073 𝑠 U+1D460 1D3ED t U+0074 𝑡 U+1D461 1D3ED u U+0075 𝑢 U+1D462 1D3ED v U+0076 𝑣 U+1D463 1D3ED w U+0077 𝑤 U+1D464 1D3ED x U+0078 𝑥 U+1D465 1D3ED y U+0079 𝑦 U+1D466 1D3ED z U+007A 𝑧 U+1D467 1D3ED ı U+0131 𝚤 U+1D6A4 1D573 ȷ U+0237 𝚥 U+1D6A5 1D46E Α U+0391 𝛢 U+1D6E2 1D351 Β U+0392 𝛣 U+1D6E3 1D351 Γ U+0393 𝛤 U+1D6E4 1D351 Δ U+0394 𝛥 U+1D6E5 1D351 Ε U+0395 𝛦 U+1D6E6 1D351 Ζ U+0396 𝛧 U+1D6E7 1D351 Η U+0397 𝛨 U+1D6E8 1D351 Θ U+0398 𝛩 U+1D6E9 1D351 Ι U+0399 𝛪 U+1D6EA 1D351 Κ U+039A 𝛫 U+1D6EB 1D351 Λ U+039B 𝛬 U+1D6EC 1D351 Μ U+039C 𝛭 U+1D6ED 1D351 Ν U+039D 𝛮 U+1D6EE 1D351 Ξ U+039E 𝛯 U+1D6EF 1D351 Ο U+039F 𝛰 U+1D6F0 1D351 Π U+03A0 𝛱 U+1D6F1 1D351 Ρ U+03A1 𝛲 U+1D6F2 1D351 ϴ U+03F4 𝛳 U+1D6F3 1D2FF Σ U+03A3 𝛴 U+1D6F4 1D351 Τ U+03A4 𝛵 U+1D6F5 1D351 Υ U+03A5 𝛶 U+1D6F6 1D351 Φ U+03A6 𝛷 U+1D6F7 1D351 Χ U+03A7 𝛸 U+1D6F8 1D351 Ψ U+03A8 𝛹 U+1D6F9 1D351 Ω U+03A9 𝛺 U+1D6FA 1D351 ∇ U+2207 𝛻 U+1D6FB 1B4F4 α U+03B1 𝛼 U+1D6FC 1D34B β U+03B2 𝛽 U+1D6FD 1D34B γ U+03B3 𝛾 U+1D6FE 1D34B δ U+03B4 𝛿 U+1D6FF 1D34B ε U+03B5 𝜀 U+1D700 1D34B ζ U+03B6 𝜁 U+1D701 1D34B η U+03B7 𝜂 U+1D702 1D34B θ U+03B8 𝜃 U+1D703 1D34B ι U+03B9 𝜄 U+1D704 1D34B κ U+03BA 𝜅 U+1D705 1D34B λ U+03BB 𝜆 U+1D706 1D34B μ U+03BC 𝜇 U+1D707 1D34B ν U+03BD 𝜈 U+1D708 1D34B ξ U+03BE 𝜉 U+1D709 1D34B ο U+03BF 𝜊 U+1D70A 1D34B π U+03C0 𝜋 U+1D70B 1D34B ρ U+03C1 𝜌 U+1D70C 1D34B ς U+03C2 𝜍 U+1D70D 1D34B σ U+03C3 𝜎 U+1D70E 1D34B τ U+03C4 𝜏 U+1D70F 1D34B υ U+03C5 𝜐 U+1D710 1D34B φ U+03C6 𝜑 U+1D711 1D34B χ U+03C7 𝜒 U+1D712 1D34B ψ U+03C8 𝜓 U+1D713 1D34B ω U+03C9 𝜔 U+1D714 1D34B ∂ U+2202 𝜕 U+1D715 1B513 ϵ U+03F5 𝜖 U+1D716 1D321 ϑ U+03D1 𝜗 U+1D717 1D346 ϰ U+03F0 𝜘 U+1D718 1D328 ϕ U+03D5 𝜙 U+1D719 1D344 ϱ U+03F1 𝜚 U+1D71A 1D329 ϖ U+03D6 𝜛 U+1D71B 1D345 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.
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>./this-is-a-safe-link.htmlmtext>
maction>
math>
maction
element essentially behaves
like an mrow
container with extra style.GlyphAssembly.partCount
to
maximum values.
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.
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="font-size: 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)}`;
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 well-known fonts, an attacker
can try and determine the default fonts of the user.
A Well Known System Font
is available by default.<style>
@font-face {
font-family: MyWebFontWithVeryWideGlyphs;
src: url("/fonts/my-web-fonts-with-very-wide-glyphs.woff");
}
#container {
font-family: AWellKnownSystemFont, MyWebFontWithVeryWideGlyphs;
}
style>
<div id="container">SOMETEXTdiv>
<div id="reference">SOMETEXTdiv>
<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>
<style>
@font-face {
font-family: MyWebFontWithVeryWideAsianGlyphs;
src: url("/fonts/my-web-fonts-with-very-wide-asian-glyphs.woff");
}
#container {
font-family: ui-serif, MyWebFontWithVeryWideAsianGlyphs
}
#reference {
font-family: MyWebFontWithVeryWideAsianGlyphs;
}
style>
<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>
from-font
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
[OPEN-FONT-FORMAT].
<style>
#test {
font-size: 100px;
}
#container {
text-decoration-line: underline;
text-decoration-thickness: from-font;
}
#reference {
text-decoration-line: underline;
text-decoration-thickness: 1em;
}
style>
<div id="test">
<div id="container">SOMETEXTdiv>
<div id="reference">SOMETEXTdiv>
div>
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.class="example"
, like this:
class="note"
, like this:
, like this:
UAs MUST provide an accessible alternative.