summaryrefslogtreecommitdiff
path: root/Source/WebCore/css/mathml.css
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/css/mathml.css')
-rw-r--r--Source/WebCore/css/mathml.css253
1 files changed, 127 insertions, 126 deletions
diff --git a/Source/WebCore/css/mathml.css b/Source/WebCore/css/mathml.css
index 22d6b6163..621f9732b 100644
--- a/Source/WebCore/css/mathml.css
+++ b/Source/WebCore/css/mathml.css
@@ -1,102 +1,148 @@
@namespace "http://www.w3.org/1998/Math/MathML";
-math {
- -webkit-line-box-contain: glyphs replaced;
- text-indent: 0;
- direction: ltr;
-}
-mtext {
- line-height: 1.0;
+:any-link {
+ color: -webkit-link;
+ cursor: auto;
}
-/* Keep font-family and other defaults here consistent with http://mxr.mozilla.org/mozilla-central/source/layout/mathml/mathml.css and feedback from www-math. */
-math, mfenced > * {
-#if defined(WTF_PLATFORM_IOS) && WTF_PLATFORM_IOS
- /* We explicitly include the font Symbol as it's the iOS equivalent of font STIXGeneral. */
- font-family: STIXGeneral, Symbol, "Times New Roman", sans-serif;
-#else
- font-family: MathJax_Main, STIXGeneral, "DejaVu Serif", Cambria, "Cambria Math", Times, serif;
-#endif
-}
-mo, mfenced {
-#if defined(WTF_PLATFORM_IOS) && WTF_PLATFORM_IOS
- /* We explicitly include the font Symbol as it's the iOS equivalent of font STIXGeneral. */
- font-family: STIXGeneral, Symbol, "Times New Roman", sans-serif;
-#else
- font-family: MathJax_Main, STIXGeneral, STIXSizeOneSym, "DejaVu Sans", "DejaVu Serif", Cambria, "Cambria Math",
- "Lucida Sans Unicode", "Arial Unicode MS", "Lucida Grande", OpenSymbol, "Standard Symbols L", sans-serif;
-#endif
+:any-link:active {
+ color: -webkit-activelink;
}
-math {
- display: -webkit-inline-flex !important;
- padding-left: 1px;
- padding-right: 1px;
+:focus {
+ outline: auto 5px -webkit-focus-ring-color
}
-math[display="block"] {
- display: -webkit-flex !important;
- -webkit-justify-content: center;
- page-break-inside: avoid;
- /* -webkit-margin-before: 1em; -- FIXME: Ask www-math for a default MathML stylesheet, including this (or margin-top). */
- -webkit-margin-after: 1em;
-}
+math {
+ display: inline;
+
+ /*
+ 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;
-mo, mrow, mfenced, mfrac, msub, msup, msubsup, mmultiscripts, mprescripts, none, munder, mover, munderover, msqrt, mroot, merror, mphantom, mstyle, menclose {
- display: -webkit-inline-flex !important;
-}
+ /*
+ 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;
-math, mrow, mfenced, msqrt, mroot, merror, mphantom, mstyle, menclose {
- -webkit-align-items: baseline;
-}
-msqrt > * { /* This rule is needed because of <msqrt>'s anonymous <mrow>. */
- -webkit-align-self: baseline;
-}
+ /*
+ 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;
-mo, mfrac, munder, mover, munderover {
- -webkit-flex-direction: column;
+ /* 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)? */
}
-munder, mover, munderover {
- -webkit-align-items: center;
+math[display="block"] {
+ display: block;
+ page-break-inside: avoid;
}
-mfrac > * {
- -webkit-align-self: center;
-}
-mfrac[numalign="left"] > :first-child {
- -webkit-align-self: flex-start;
-}
-mfrac[numalign="right"] > :first-child {
- -webkit-align-self: flex-end;
-}
-mfrac[denomalign="left"] > :last-child {
- -webkit-align-self: flex-start;
-}
-mfrac[denomalign="right"] > :last-child {
- -webkit-align-self: flex-end;
-}
-mfrac > :first-child {
- -webkit-margin-after: 0.2em;
-}
-mfrac > :last-child {
- -webkit-margin-before: 0.2em;
-}
-mfrac {
- -webkit-margin-start: 1px;
- -webkit-margin-end: 1px;
+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;
}
-mover > :last-child, munderover > :last-child {
- -webkit-order: -1;
+ms, mtext, mi, mn, mo, annotation, mtd {
+ white-space: nowrap !important;
}
msub > * + *, msup > * + *, msubsup > * + *, mmultiscripts > * + *, munder > * + *, mover > * + *, munderover > * + * {
font-size: 0.75em; /* FIXME: MathML standard is 0.71em */
}
+mroot > *:last-child {
+ font-size: 0.5625em; /* This 0.75^2 since the scriptlevel is incremented by 2 in the index. */
+}
mi {
- font-style: italic;
-webkit-padding-end: 0.1em;
}
msub > mi:first-child, msubsup > mi:first-child {
@@ -106,51 +152,6 @@ msubsup > mi:first-child + * + * {
-webkit-margin-start: 0.14em; /* This is larger than 0.1em because the child's font-size is smaller than the <msubsup>'s. */
}
-/* FIXME: For a RenderMathMLOperator's margin-start and margin-end, or for a MathML "embellished operator", check the operator's lspace and rspace attributes,
- and the MathML operator dictionary. */
-math > mo, mrow > mo, msqrt > mo, mtd > mo {
- -webkit-margin-start: 0.2em;
- -webkit-margin-end: 0.2em;
-}
-math > mo:first-child, mrow > mo:first-child, msqrt > mo:first-child, mtd > mo:first-child,
-math > mo:last-child, mrow > mo:last-child, msqrt > mo:last-child, mtd > mo:last-child {
- -webkit-margin-start: 0.1em;
- -webkit-margin-end: 0.1em;
-}
-
-mroot {
- position: relative;
-}
-mroot > * + * {
- font-size: 0.75em;
- position: absolute;
- left: 0;
- top: 0;
- padding-right: 0.4em;
- padding-left: 0.2em;
- padding-bottom: 0.35em;
-}
-
-math[mathvariant="normal"], mstyle[mathvariant="normal"], mo[mathvariant="normal"], mn[mathvariant="normal"], mi[mathvariant="normal"], mtext[mathvariant="normal"], mspace[mathvariant="normal"], ms[mathvariant="normal"] {
- font-style: normal;
- font-weight: normal;
-}
-
-math[mathvariant="bold"], mstyle[mathvariant="bold"], mo[mathvariant="bold"], mn[mathvariant="bold"], mi[mathvariant="bold"], mtext[mathvariant="bold"], mspace[mathvariant="bold"], ms[mathvariant="bold"] {
- font-style: normal;
- font-weight: bold;
-}
-
-math[mathvariant="italic"], mstyle[mathvariant="italic"], mo[mathvariant="italic"], mn[mathvariant="italic"], mi[mathvariant="italic"], mtext[mathvariant="italic"], mspace[mathvariant="italic"], ms[mathvariant="italic"] {
- font-style: italic;
- font-weight: normal;
-}
-
-math[mathvariant="bold-italic"], mstyle[mathvariant="bold-italic"], mo[mathvariant="bold-italic"], mn[mathvariant="bold-italic"], mi[mathvariant="bold-italic"], mtext[mathvariant="bold-italic"], mspace[mathvariant="bold-italic"], ms[mathvariant="bold-italic"] {
- font-weight: bold;
- font-style: italic;
-}
-
math[mathsize="small"], mstyle[mathsize="small"], mo[mathsize="small"], mn[mathsize="small"], mi[mathsize="small"], mtext[mathsize="small"], mspace[mathsize="small"], ms[mathsize="small"] {
font-size: 0.75em;
}
@@ -167,12 +168,8 @@ mphantom {
visibility: hidden;
}
-/* This is a special style for erroneous markup:
- - <merror> element.
- - extra children in script elements.
- - <mprescripts/> and <none/> elements in msub/msup/msubsup.
- */
-merror, msub > * + * + *, msup > * + * + *, msubsup > * + * + * + *, msub > mprescripts, msup > mprescripts, msubsup > mprescripts, msub > none, msup > none, msubsup > none, mmultiscripts > mprescripts ~ mprescripts, mmultiscripts > mprescripts ~ mprescripts ~ * {
+/* This is a special style for erroneous markup. */
+merror {
outline: solid thin red;
font-weight: bold;
font-family: sans-serif;
@@ -192,6 +189,10 @@ 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;