271 lines
8.9 KiB
CSS
271 lines
8.9 KiB
CSS
/*
|
|
* Copyright (C) 2020 Apple Inc. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
|
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
|
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
|
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
#if defined(ENABLE_MATHML) && ENABLE_MATHML
|
|
|
|
@namespace "http://www.w3.org/1998/Math/MathML";
|
|
|
|
:any-link {
|
|
color: -webkit-link;
|
|
cursor: auto;
|
|
}
|
|
|
|
:any-link:active {
|
|
color: -webkit-activelink;
|
|
}
|
|
|
|
:focus {
|
|
outline: auto 5px -webkit-focus-ring-color
|
|
}
|
|
|
|
math {
|
|
display: inline;
|
|
math-style: compact;
|
|
|
|
/*
|
|
We use the exact bounding boxes of glyphs to avoid excessive gaps in mathematical formulas.
|
|
FIXME: Should we replace this with a more general handling of ink/logical ascent/descent?
|
|
See http://webkit.org/b/130326, http://webkit.org/b/156841 and
|
|
http://www.mathml-association.org/MathMLinHTML5/S3.html#SS1.SSS1
|
|
*/
|
|
-webkit-line-box-contain: glyphs replaced;
|
|
|
|
/*
|
|
Inheriting the following properties can cause excessive spacing of mathematical formulas so we
|
|
just reset them to their default values.
|
|
*/
|
|
text-indent: 0;
|
|
line-height: normal;
|
|
word-spacing: normal;
|
|
letter-spacing: normal;
|
|
|
|
/*
|
|
In some countries and languages, text is written from right-to-left while mathematical formulas
|
|
are written from left-to-write. Hence it is wrong to inherit the direction and we reset that
|
|
property to left-to-write. Per the MathML specification, authors should explicitly use the "dir"
|
|
attribute on the <math> element if they want to force the overall direction of the mathematical
|
|
formulas.
|
|
*/
|
|
direction: ltr;
|
|
|
|
/*
|
|
Mathematical formula inside an italic paragraph should not inherit the font-style as this gives
|
|
poor rendering and is confusing with the mathvariant italic.
|
|
*/
|
|
font-style: normal;
|
|
|
|
/* Fonts with appropriate Unicode coverage and OpenType features are required for good math
|
|
rendering. These requirements as well as the up-to-date list of known math fonts to fulfill
|
|
these requirements are listed on http://trac.webkit.org/wiki/MathML/Fonts.
|
|
Inheriting the font-family is likely to make MathML use text fonts that are not designed for
|
|
math layout and thus would cause very poor mathematical rendering. Consequently, the default
|
|
font-family on the <math> tag is set to a list of recommended math fonts.
|
|
For best rendering, authors and readers are encouraged to use text and math fonts with consistent
|
|
style (appearance, size...), see http://trac.webkit.org/wiki/MathML/Fonts#CustomizingMathFont
|
|
FIXME: Should we make math font properties configurable (http://webkit.org/b/156843)?
|
|
*/
|
|
font-family:
|
|
/*
|
|
This font has Computer Modern style and is provided with most TeX & Linux distributions.
|
|
We put it as the default because its style is familiar to TeX, Wikipedia and math people.
|
|
*/
|
|
"Latin Modern Math",
|
|
|
|
/*
|
|
The following fonts have Times style and are provided with most TeX & Linux distributions.
|
|
We put XITS & STIX as a second option because they have very good unicode coverage.
|
|
STIX Two is a complete redesign of STIX that fixes serious bugs in version one so we put it in first position.
|
|
XITS is a fork of STIX with bug fixes and more Arabic/RTL features so we put it in second position.
|
|
*/
|
|
"STIX Two Math",
|
|
"XITS Math",
|
|
"STIX Math",
|
|
"Libertinus Math",
|
|
"TeX Gyre Termes Math",
|
|
|
|
/*
|
|
These fonts respectively have style compatible with Bookman Old and Century Schoolbook.
|
|
They are provided with most TeX & Linux distributions.
|
|
*/
|
|
"TeX Gyre Bonum Math",
|
|
"TeX Gyre Schola",
|
|
|
|
/*
|
|
DejaVu is pre-installed on many Linux distributions and is included in LibreOffice.
|
|
*/
|
|
"DejaVu Math TeX Gyre",
|
|
|
|
/*
|
|
The following fonts have Palatino style and are provided with most TeX & Linux distributions.
|
|
Asana Math has some rendering issues (e.g. missing italic correction) so we put it after.
|
|
*/
|
|
"TeX Gyre Pagella Math",
|
|
"Asana Math",
|
|
|
|
/*
|
|
The following fonts are proprietary and have not much been tested so we put them at the end.
|
|
Cambria Math it is pre-installed on Windows 7 and higher.
|
|
*/
|
|
"Cambria Math",
|
|
"Lucida Bright Math",
|
|
"Minion Math",
|
|
|
|
/*
|
|
The following fonts do not satisfy the requirements for good mathematical rendering.
|
|
These are pre-installed on Mac and iOS so we list them to provide minimal unicode-based
|
|
mathematical rendering. For more explanation of fallback mechanisms and missing features see
|
|
http://trac.webkit.org/wiki/MathML/Fonts#ObsoleteFontsandFallbackMechanisms.
|
|
STIX fonts have best unicode coverage so we put them first. */
|
|
STIXGeneral,
|
|
STIXSizeOneSym,
|
|
Symbol,
|
|
"Times New Roman",
|
|
|
|
/* Mathematical fonts generally use "serif" style. Hence we append the generic "serif" family
|
|
as a fallback in order to increase our chance to find a mathematical font. */
|
|
serif;
|
|
|
|
/* FIXME: Should we reset more CSS properties (http://webkit.org/b/156839)? */
|
|
}
|
|
|
|
math[display="block" i] {
|
|
display: block;
|
|
page-break-inside: avoid;
|
|
math-style: normal;
|
|
}
|
|
math[display="inline" i] {
|
|
math-style: compact;
|
|
}
|
|
|
|
ms, mspace, mtext, mi, mn, mo, mrow, mfenced, mfrac, msub, msup, msubsup, mmultiscripts, mprescripts, none, munder, mover, munderover, msqrt, mroot, merror, mphantom, mstyle, menclose, semantics, mpadded, maction {
|
|
display: block;
|
|
}
|
|
|
|
ms, mtext, mi, mn, mo, annotation, mtd {
|
|
white-space: nowrap !important;
|
|
}
|
|
|
|
mfrac > * {
|
|
math-style: compact;
|
|
}
|
|
|
|
msub > * + *, msup > * + *, msubsup > * + *, mmultiscripts > * + *, munder > * + *, mover > * + *, munderover > * + * {
|
|
font-size: 0.75em; /* FIXME: MathML standard is 0.71em */
|
|
math-style: compact;
|
|
}
|
|
mroot > *:last-child {
|
|
font-size: 0.5625em; /* This 0.75^2 since the scriptlevel is incremented by 2 in the index. */
|
|
math-style: compact;
|
|
}
|
|
mi {
|
|
padding-inline-end: 0.1em;
|
|
}
|
|
msub > mi:first-child, msubsup > mi:first-child {
|
|
padding-inline-end: 0;
|
|
}
|
|
msubsup > mi:first-child + * + * {
|
|
margin-inline-start: 0.14em; /* This is larger than 0.1em because the child's font-size is smaller than the <msubsup>'s. */
|
|
}
|
|
|
|
mphantom {
|
|
visibility: hidden;
|
|
}
|
|
|
|
/* This is a special style for erroneous markup. */
|
|
merror {
|
|
outline: solid thin red;
|
|
font-weight: bold;
|
|
font-family: sans-serif;
|
|
background-color: lightYellow;
|
|
}
|
|
|
|
mtable {
|
|
display: inline-table;
|
|
text-align: center;
|
|
math-style: compact;
|
|
}
|
|
|
|
mtr {
|
|
display: table-row;
|
|
}
|
|
|
|
mtd {
|
|
display: table-cell;
|
|
padding: 0.5ex;
|
|
}
|
|
/* Use inline-block for children so that the text-align property is taken into account */
|
|
mtd > * {
|
|
display: inline-block;
|
|
}
|
|
|
|
mtable[columnalign="left"], mtr[columnalign="left"], mtd[columnalign="left"] {
|
|
text-align: left;
|
|
}
|
|
|
|
mtable[columnalign="right"], mtr[columnalign="right"], mtd[columnalign="right"] {
|
|
text-align: right;
|
|
}
|
|
|
|
mtable[rowalign="top"] mtd, mtable mtr[rowalign="top"] mtd, mtable mtr mtd[rowalign="top"] {
|
|
vertical-align: top;
|
|
}
|
|
|
|
mtable[rowalign="bottom"] mtd, mtable mtr[rowalign="bottom"] mtd, mtable mtr mtd[rowalign="bottom"] {
|
|
vertical-align: bottom;
|
|
}
|
|
|
|
mtable[rowalign="center"] mtd, mtable mtr[rowalign="center"] mtd, mtable mtr mtd[rowalign="center"] {
|
|
vertical-align: middle;
|
|
}
|
|
|
|
mtable[frame="solid"] {
|
|
border: solid thin;
|
|
}
|
|
|
|
mtable[frame="dashed"] {
|
|
border: dashed thin;
|
|
}
|
|
|
|
mtable[rowlines="solid"], mtable[rowlines="dashed"], mtable[columnlines="solid"], mtable[columnlines="dashed"] {
|
|
border-collapse: collapse;
|
|
}
|
|
|
|
mtable[rowlines="solid"] > mtr + mtr {
|
|
border-top: solid thin;
|
|
}
|
|
|
|
mtable[rowlines="dashed"] > mtr + mtr {
|
|
border-top: dashed thin;
|
|
}
|
|
|
|
mtable[columnlines="solid"] > mtr > mtd + mtd {
|
|
border-left: solid thin;
|
|
}
|
|
|
|
mtable[columnlines="dashed"] > mtr > mtd + mtd {
|
|
border-left: dashed thin;
|
|
}
|
|
|
|
#endif
|