diff options
Diffstat (limited to 'Source/WebCore/css/mathml.css')
-rw-r--r-- | Source/WebCore/css/mathml.css | 253 |
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; |