Update ANGLE
[WebKit-https.git] / Source / WebCore / css / mathml.css
1 @namespace "http://www.w3.org/1998/Math/MathML";
2
3 :any-link {
4     color: -webkit-link;
5     cursor: auto;
6 }
7
8 :any-link:active {
9     color: -webkit-activelink;
10 }
11
12 :focus {
13     outline: auto 5px -webkit-focus-ring-color
14 }
15
16 math {
17     display: inline;
18
19     /*
20     We use the exact bounding boxes of glyphs to avoid excessive gaps in mathematical formulas.
21     FIXME: Should we replace this with a more general handling of ink/logical ascent/descent?
22     See http://webkit.org/b/130326, http://webkit.org/b/156841 and
23     http://www.mathml-association.org/MathMLinHTML5/S3.html#SS1.SSS1
24     */
25     -webkit-line-box-contain: glyphs replaced;
26
27     /*
28     Inheriting the following properties can cause excessive spacing of mathematical formulas so we
29     just reset them to their default values.
30     */
31     text-indent: 0;
32     line-height: normal;
33     word-spacing: normal;
34     letter-spacing: normal;
35
36     /*
37     In some countries and languages, text is written from right-to-left while mathematical formulas
38     are written from left-to-write. Hence it is wrong to inherit the direction and we reset that
39     property to left-to-write. Per the MathML specification, authors should explicitly use the "dir"
40     attribute on the <math> element if they want to force the overall direction of the mathematical
41     formulas.
42     */
43     direction: ltr;
44
45     /*
46     Mathematical formula inside an italic paragraph should not inherit the font-style as this gives
47     poor rendering and is confusing with the mathvariant italic.
48     */
49     font-style: normal;
50
51     /* Fonts with appropriate Unicode coverage and OpenType features are required for good math
52     rendering. These requirements as well as the up-to-date list of known math fonts to fulfill
53     these requirements are listed on http://trac.webkit.org/wiki/MathML/Fonts.
54     Inheriting the font-family is likely to make MathML use text fonts that are not designed for
55     math layout and thus would cause very poor mathematical rendering. Consequently, the default
56     font-family on the <math> tag is set to a list of recommended math fonts.
57     For best rendering, authors and readers are encouraged to use text and math fonts with consistent
58     style (appearance, size...), see http://trac.webkit.org/wiki/MathML/Fonts#CustomizingMathFont
59     FIXME: Should we make math font properties configurable (http://webkit.org/b/156843)?
60     */
61     font-family:
62        /*
63        This font has Computer Modern style and is provided with most TeX & Linux distributions.
64        We put it as the default because its style is familiar to TeX, Wikipedia and math people.
65        */
66        "Latin Modern Math",
67
68        /*
69        The following fonts have Times style and are provided with most TeX & Linux distributions.
70        We put XITS & STIX as a second option because they have very good unicode coverage.
71        STIX Two is a complete redesign of STIX that fixes serious bugs in version one so we put it in first position.
72        XITS is a fork of STIX with bug fixes and more Arabic/RTL features so we put it in second position.
73        */
74        "STIX Two Math",
75        "XITS Math",
76        "STIX Math",
77        "Libertinus Math",
78        "TeX Gyre Termes Math",
79
80        /*
81        These fonts respectively have style compatible with Bookman Old and Century Schoolbook.
82        They are provided with most TeX & Linux distributions.
83        */
84        "TeX Gyre Bonum Math",
85        "TeX Gyre Schola",
86
87        /*
88        DejaVu is pre-installed on many Linux distributions and is included in LibreOffice.
89        */
90        "DejaVu Math TeX Gyre",
91
92        /*
93        The following fonts have Palatino style and are provided with most TeX & Linux distributions.
94        Asana Math has some rendering issues (e.g. missing italic correction) so we put it after.
95        */
96        "TeX Gyre Pagella Math",
97        "Asana Math",
98
99        /*
100        The following fonts are proprietary and have not much been tested so we put them at the end.
101        Cambria Math it is pre-installed on Windows 7 and higher.
102        */
103        "Cambria Math",
104        "Lucida Bright Math",
105        "Minion Math",
106
107        /*
108        The following fonts do not satisfy the requirements for good mathematical rendering.
109        These are pre-installed on Mac and iOS so we list them to provide minimal unicode-based
110        mathematical rendering. For more explanation of fallback mechanisms and missing features see
111        http://trac.webkit.org/wiki/MathML/Fonts#ObsoleteFontsandFallbackMechanisms.
112        STIX fonts have best unicode coverage so we put them first. */
113        STIXGeneral,
114        STIXSizeOneSym,
115        Symbol,
116        "Times New Roman",
117
118        /* Mathematical fonts generally use "serif" style. Hence we append the generic "serif" family
119        as a fallback in order to increase our chance to find a mathematical font. */
120        serif;
121
122     /* FIXME: Should we reset more CSS properties (http://webkit.org/b/156839)? */
123 }
124
125 math[display="block"] {
126     display: block;
127     page-break-inside: avoid;
128 }
129
130 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 {
131     display: block;
132 }
133
134 ms, mtext, mi, mn, mo, annotation, mtd {
135     white-space: nowrap !important;
136 }
137
138 msub > * + *, msup > * + *, msubsup > * + *, mmultiscripts > * + *, munder > * + *, mover > * + *, munderover > * + * {
139     font-size: 0.75em; /* FIXME: MathML standard is 0.71em */
140 }
141 mroot > *:last-child {
142     font-size: 0.5625em; /* This 0.75^2 since the scriptlevel is incremented by 2 in the index. */
143 }
144
145 mi {
146     -webkit-padding-end: 0.1em;
147 }
148 msub > mi:first-child, msubsup > mi:first-child {
149     -webkit-padding-end: 0;
150 }
151 msubsup > mi:first-child + * + * {
152     -webkit-margin-start: 0.14em; /* This is larger than 0.1em because the child's font-size is smaller than the <msubsup>'s. */
153 }
154
155 mphantom {
156     visibility: hidden;
157 }
158
159 /* This is a special style for erroneous markup. */
160 merror {
161     outline: solid thin red;
162     font-weight: bold;
163     font-family: sans-serif;
164     background-color: lightYellow;
165 }
166
167 mtable {
168     display: inline-table;
169     text-align: center;
170 }
171
172 mtr {
173     display: table-row;
174 }
175
176 mtd {
177     display: table-cell;
178     padding: 0.5ex;
179 }
180 /* Use inline-block for children so that the text-align property is taken into account */
181 mtd > * {
182     display: inline-block;
183 }
184
185 mtable[columnalign="left"], mtr[columnalign="left"], mtd[columnalign="left"] {
186     text-align: left;
187 }
188
189 mtable[columnalign="right"], mtr[columnalign="right"], mtd[columnalign="right"] {
190     text-align: right;
191 }
192
193 mtable[rowalign="top"] mtd, mtable mtr[rowalign="top"] mtd, mtable mtr mtd[rowalign="top"] {
194     vertical-align: top;
195 }
196
197 mtable[rowalign="bottom"] mtd, mtable mtr[rowalign="bottom"] mtd, mtable mtr mtd[rowalign="bottom"] {
198     vertical-align: bottom;
199 }
200
201 mtable[rowalign="center"] mtd, mtable mtr[rowalign="center"] mtd, mtable mtr mtd[rowalign="center"] {
202     vertical-align: middle;
203 }
204
205 mtable[frame="solid"] {
206     border: solid thin;
207 }
208
209 mtable[frame="dashed"] {
210     border: dashed thin;
211 }
212
213 mtable[rowlines="solid"], mtable[rowlines="dashed"], mtable[columnlines="solid"], mtable[columnlines="dashed"] {
214     border-collapse: collapse;
215 }
216
217 mtable[rowlines="solid"] > mtr + mtr {
218     border-top: solid thin;
219 }
220
221 mtable[rowlines="dashed"] > mtr + mtr {
222     border-top: dashed thin;
223 }
224
225 mtable[columnlines="solid"] > mtr > mtd + mtd {
226     border-left: solid thin;
227 }
228
229 mtable[columnlines="dashed"] > mtr > mtd + mtd {
230     border-left: dashed thin;
231 }