diff options
Diffstat (limited to 'tools/xo_bundle/res/mathml.css')
-rwxr-xr-x | tools/xo_bundle/res/mathml.css | 455 |
1 files changed, 455 insertions, 0 deletions
diff --git a/tools/xo_bundle/res/mathml.css b/tools/xo_bundle/res/mathml.css new file mode 100755 index 0000000..458cc56 --- /dev/null +++ b/tools/xo_bundle/res/mathml.css @@ -0,0 +1,455 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla MathML Project. + * + * The Initial Developer of the Original Code is + * The University Of Queensland. + * Portions created by the Initial Developer are Copyright (C) 1999 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Roger B. Sidje <rbs@maths.uq.edu.au> + * + * Alternatively, the contents of this file may be used under the terms of + * either of the GNU General Public License Version 2 or later (the "GPL"), + * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + + +/**************************************************************************/ +/* namespace for MathML elements */ +/**************************************************************************/ + +@namespace url(http://www.w3.org/1998/Math/MathML); + +/**************************************************************************/ +/* <math> - outermost math element */ +/* Put Cambria before Cambria Math as Cambria Math has neither bold nor */ +/* italic. */ +/**************************************************************************/ + +math { + direction: ltr; + unicode-bidi: embed; + display: inline; + font-size: inherit; + font-style: normal; + font-family: STIXGeneral, DejaVu Serif, DejaVu Sans, Cambria, Cambria Math, Times, Lucida Sans Unicode, OpenSymbol, Standard Symbols L, serif; + text-rendering: optimizeLegibility; + -moz-float-edge: margin-box; +} +math[mode="display"], math[display="block"] { + display: block; + text-align: -moz-center; +} +math[display="inline"] { + display: inline; +} +::-moz-math-inline { + display: inline; +} + +/**************************************************************************/ +/* Style switching during frame construction depending on the context of <mi>: + These rules are not used when mathvariant or fontstyle is specified + explicitly. +/**************************************************************************/ + +/* If the textual content of an <mi> consists of a single character + with a corresponding mathematical italic alphanumeric character, + then try to emulate that character */ +[-moz-math-font-style="italic"] { + font-style: italic; + font-weight: normal; +} +/* If the textual content consists of multiple characters, then the default is + mathvariant=normal. It seems that mathvariant=normal should be interpreted + to mean non-slanted: + + http://www.w3.org/TR/2003/REC-MathML2-20031021/chapter3.html#presm.commatt + + "In particular, inheritance of the mathvariant attribute does not follow + the CSS model. The default value for this attribute is "normal" + (non-slanted) for all tokens except mi. ... (The deprecated fontslant + attribute also behaves this way.)" + */ +[-moz-math-font-style="normal"] { + font-style: normal; +} +/* A style-invariant character preserves its own style */ +[-moz-math-font-style="invariant"] { + font-style: normal; + font-weight: normal; +} + +/**************************************************************************/ +/* attributes common to all tags */ +/**************************************************************************/ + +/* deprecated attributes from MathML 1.0 */ + +/* fontstyle */ +[fontstyle="normal"] { + font-style: normal; +} +[fontstyle="italic"] { + font-style: italic; +} +/* fontweight */ +[fontweight="normal"] { + font-weight: normal; +} +[fontweight="bold"] { + font-weight: bold; +} + +/* attributes from MathML 2.0 */ + +/* These ones are handled in the back-end: + mathcolor (replaces 'color'): + #rgb | #rrggbb | html-color-name + mathbackground (replaces 'background'): + #rgb | #rrggbb | html-color-name +*/ +/* mathvariant (replaces 'fontstyle' & 'fontweight' & 'fontslant'): + normal | bold | italic | bold-italic | double-struck | bold-fraktur | script | + bold-script | fraktur | sans-serif | bold-sans-serif | sans-serif-italic | + sans-serif-bold-italic | monospace + + Note1: Back-end code for these is not yet written (bug 114365): + double-struck, script, fraktur, bold-fraktur, bold-script + + Note2: Don't use the 'font' shorthand because it resets the font-size and this + breaks the propagation of the scriptlevel size. + + XXX bugs 46622 & 114365: need -moz-math-serif, etc, to only lookup math fonts + + The meaning of mathvariant=normal is unclear as there is no interpretation + that "corresponds to SMP Math Alphanumeric Symbol characters" + (http://www.w3.org/TR/2003/REC-MathML2-20031021/chapter3.html#presm.commatt), + but let's assume an explicit mathvariant=normal is an attempt to reset all + style. +*/ +[mathvariant] { /* shared and same as [mathvariant="normal"] */ + /* reset all font properties except those that affect the size */ + font-style: normal; + font-variant: normal; + font-weight: normal; +} +[mathvariant="bold-fraktur"], +[mathvariant="bold-script"] { + font-weight: bold; +} +[mathvariant="bold"] { + font-weight: bold; +} +[mathvariant="italic"] { + font-style: italic; +} +[mathvariant="bold-italic"] { + font-weight: bold; + font-style: italic; +} +[mathvariant="sans-serif"] { + font-family: sans-serif; +} +[mathvariant="bold-sans-serif"] { + font-weight: bold; + font-family: sans-serif; +} +[mathvariant="sans-serif-italic"] { + font-family: sans-serif; + font-style: italic; +} +[mathvariant="sans-serif-bold-italic"] { + font-family: sans-serif; + font-weight: bold; + font-style: italic; +} +[mathvariant="monospace"] { + font-family: monospace; +} + +/**************************************************************************/ +/* tags with generated content */ +/**************************************************************************/ + +ms { + display: inline; +} +ms:before { + content: open-quote; +} +ms:after { + content: close-quote; +} + +merror { + display: block; + font-family: sans-serif; + font-weight: bold; + white-space: pre; + margin: 1em; + padding: 1em; + border-width: thin; + border-style: inset; + border-color: red; + font-size: 14pt; + background-color: lightyellow; +} + +/**************************************************************************/ +/* mtable and its related tags */ +/**************************************************************************/ + +mtable { + display: inline-table; + border-collapse: separate; + border-spacing: 0; + text-indent: 0; +} +mtable[frame="none"] { + border: none; +} +mtable[frame="solid"] { + border: solid thin; +} +mtable[frame="dashed"] { + border: dashed thin; +} + +mtr { + display: table-row; + vertical-align: baseline; +} + +mtd { + display: table-cell; + vertical-align: inherit; + text-align: -moz-center; + white-space: nowrap; +} + +/* Don't support mtr without mtable, nor mtd without mtr */ +:not(mtable) > mtr, +:not(mtr) > mtd { + display: none !important; +} + +/***********************/ +/* -- mtd: columnalign */ + +mtd[-moz-math-columnalign="left"], +mtd[columnalign="left"] { + text-align: left; +} +mtd[-moz-math-columnalign="right"], +mtd[columnalign="right"] { + text-align: right; +} +mtd[-moz-math-columnalign="center"], +mtd[columnalign="center"] { + text-align: -moz-center; +} + +/*************************/ +/* -- mtr, mtd: rowalign */ + +mtr[-moz-math-rowalign="top"], +mtr[rowalign="top"], +mtd[rowalign="top"] { + vertical-align: top; +} +mtr[-moz-math-rowalign="bottom"], +mtr[rowalign="bottom"], +mtd[rowalign="bottom"] { + vertical-align: bottom; +} +mtr[-moz-math-rowalign="center"], +mtr[rowalign="center"], +mtd[rowalign="center"] { + vertical-align: middle; +} +mtr[-moz-math-rowalign="baseline"], +mtr[rowalign="baseline"], +mtd[rowalign="baseline"] { + vertical-align: baseline; +} +/* -- not yet supported -- +mtr[-moz-math-rowalign="axis"], +mtr[rowalign="axis"], +mtd[rowalign="axis"] { + vertical-align: mathline; +} +*/ + +/**********************************************************************/ +/* rules to achieve the default spacing between cells. The back-end code + will set the internal attributes depending on the cell's position. + These rules are hard-coded, the comments indicate what would be + desirable if the style data could be changed on the fly to pick + the values that users may set with the attributes of <mtable> */ +mtd { + padding-right: 0.4em; /* half of columnspacing[colindex] */ + padding-left: 0.4em; /* half of columnspacing[colindex-1] */ + padding-bottom: 0.5ex; /* half of rowspacing[rowindex] */ + padding-top: 0.5ex; /* half of rowspacing[rowindex-1] */ +} +/* turn off the spacing at the periphery of boundary cells */ +mtr:first-child > mtd { + padding-top: 0ex; +} +mtr:last-child > mtd { + padding-bottom: 0ex; +} +mtd:first-child { + padding-left: 0em; +} +mtd:last-child { + padding-right: 0em; +} +/* re-instate the spacing if the table has a surrounding frame */ +mtable[frame="solid"] > mtr:first-child > mtd, +mtable[frame="dashed"] > mtr:first-child > mtd { + padding-top: 0.5ex; /* framespacing.top */ +} +mtable[frame="solid"] > mtr:last-child > mtd, +mtable[frame="dashed"] > mtr:last-child > mtd { + padding-bottom: 0.5ex; /* framespacing.bottom */ +} +mtable[frame="solid"] > mtr > mtd:first-child, +mtable[frame="dashed"] > mtr > mtd:first-child { + padding-left: 0.4em; /* framespacing.left */ +} +mtable[frame="solid"] > mtr > mtd:last-child, +mtable[frame="dashed"] > mtr > mtd:last-child { + padding-right: 0.4em; /* framespacing.right */ +} + +/**********************************************************************/ +/* internal settings to support 'rowlines' and 'columnlines'. To + achieve the recommended behavior, the back-end code will avoid setting + unsuitable rules on the cells on the first row and the first column. + In general, however, authors can use the 'border' property of CSS to + achieve varying effects down to the level of the table cell. */ +mtr[-moz-math-rowline="none"] > mtd { + border-top: none; +} +mtr[-moz-math-rowline="solid"] > mtd { + border-top: solid thin; +} +mtr[-moz-math-rowline="dashed"] > mtd { + border-top: dashed thin; +} +mtd[-moz-math-columnline="none"] { + border-left: none; +} +mtd[-moz-math-columnline="solid"] { + border-left: solid thin; +} +mtd[-moz-math-columnline="dashed"] { + border-left: dashed thin; +} + + +/**************************************************************************/ +/* Style used for stretchy symbols *must* be normal to avoid misaligments */ +/* By leaving the font-family empty, the MathML engine will use the value + provided by the mathfont-family property in the mathfont.properties file + or the value of the user's pref("font.mathfont-family", "..."). + + Authors can make elements on a document to be stretched with different + fonts, e.g., + + To request the use of TeX fonts, you can add a <style>...</style> with: + <mo myfonts="tex">...</mo> with the associated CSS declaration + mo[myfonts="tex"]::-moz-math-stretchy { + font-family: CMSY10, CMEX10; + } + + To request the use of Mathematica fonts, you can add a <style>...</style> with: + <mo myfonts="mathematica">...</mo> with the associated CSS declaration + mo[myfonts="mathematica"]::-moz-math-stretchy { + font-family: Math1, Math2, Math4; + } + + Of course, if you just want all of the stretchy characters in your + document to be stretched with your preferred list, you can just do: + ::-moz-math-stretchy { + font-family: [your-particular-list] + } + + Note that like other fonts in the document, users can override this by + clicking the pref to override document fonts. +/**************************************************************************/ + +::-moz-math-stretchy { + font-style: normal; + font-family: serif; /* an empty family is ignored as an error and behaves like inherit */ +/* background-color: #3C6; */ +} +::-moz-math-anonymous { +} + +/**********************************************************************/ +/* Hide embedded semantic MathML content (as opposed to presentational + content, which we render). Ideally, here is the behavior that we want: + + if there is an annotation-xml[encoding="MathML-Presentation"] + render that annotation, and ignore the first child of the + <semantics> element and all other annotations, + else + render the first child of <semantics> and ignore all annotations + + But this cannot be expressed with CSS. As a stop-gap, just render + the first child to cater for most of the common cases - bug 154931. +*/ +semantics > :not(:first-child) { + display: none; +} + +/**********************************************************************/ +/* This is used when wrapping non-MathML inline elements inside math. */ +*|*::-moz-mathml-anonymous-block { + display: inline-block !important; + position: static !important; + text-indent: 0; +} + +/*****************************************/ +/* Controlling scriptlevel */ +/*****************************************/ + +/* mfrac, munder, mover and munderover change the scriptlevels of their children using + -moz-math-increment-script-level because regular CSS rules are insufficient to + control when the scriptlevel should be incremented */ +:-moz-math-increment-script-level { -moz-script-level:+1; } + +/* all other cases can be described using regular CSS, so we do it this way because it's + more efficient and less code */ +mroot > :not(:first-child) { -moz-script-level:+2; } + +msub > :not(:first-child), +msup > :not(:first-child), +msubsup > :not(:first-child), +mmultiscripts > :not(:first-child) { -moz-script-level:+1; } |