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