Bug 484766. Clean up MathML directory structure. r=karlt,ted
authorRobert O'Callahan <robert@ocallahan.org>
Mon, 30 Mar 2009 13:48:52 +1300
changeset 26702 c6e8ae1f5955c2b896342930ca4b4ad8ce7ec79a
parent 26701 ef71595d291a5dbb771b4aebabb377b82fe8594e
child 26703 f5ae6b3f6120e926c562a064f83c6a9d6a2c7074
push idunknown
push userunknown
push dateunknown
reviewerskarlt, ted
bugs484766
milestone1.9.2a1pre
Bug 484766. Clean up MathML directory structure. r=karlt,ted
content/mathml/content/src/Makefile.in
content/mathml/content/src/mathml.dtd
layout/Makefile.in
layout/base/Makefile.in
layout/build/Makefile.in
layout/mathml/Makefile.in
layout/mathml/base/src/Makefile.in
layout/mathml/base/src/mathfont.properties
layout/mathml/base/src/mathfontCMEX10.properties
layout/mathml/base/src/mathfontCMSY10.properties
layout/mathml/base/src/mathfontMTExtra.properties
layout/mathml/base/src/mathfontMath1.properties
layout/mathml/base/src/mathfontMath2.properties
layout/mathml/base/src/mathfontMath4.properties
layout/mathml/base/src/mathfontPUA.properties
layout/mathml/base/src/mathfontSTIXNonUnicode.properties
layout/mathml/base/src/mathfontSTIXSize1.properties
layout/mathml/base/src/mathfontStandardSymbolsL.properties
layout/mathml/base/src/mathfontSymbol.properties
layout/mathml/base/src/mathfontUnicode.properties
layout/mathml/base/src/nsIMathMLFrame.h
layout/mathml/base/src/nsMathMLChar.cpp
layout/mathml/base/src/nsMathMLChar.h
layout/mathml/base/src/nsMathMLContainerFrame.cpp
layout/mathml/base/src/nsMathMLContainerFrame.h
layout/mathml/base/src/nsMathMLForeignFrameWrapper.cpp
layout/mathml/base/src/nsMathMLForeignFrameWrapper.h
layout/mathml/base/src/nsMathMLFrame.cpp
layout/mathml/base/src/nsMathMLFrame.h
layout/mathml/base/src/nsMathMLParts.h
layout/mathml/base/src/nsMathMLTokenFrame.cpp
layout/mathml/base/src/nsMathMLTokenFrame.h
layout/mathml/base/src/nsMathMLmactionFrame.cpp
layout/mathml/base/src/nsMathMLmactionFrame.h
layout/mathml/base/src/nsMathMLmfencedFrame.cpp
layout/mathml/base/src/nsMathMLmfencedFrame.h
layout/mathml/base/src/nsMathMLmfracFrame.cpp
layout/mathml/base/src/nsMathMLmfracFrame.h
layout/mathml/base/src/nsMathMLmmultiscriptsFrame.cpp
layout/mathml/base/src/nsMathMLmmultiscriptsFrame.h
layout/mathml/base/src/nsMathMLmoFrame.cpp
layout/mathml/base/src/nsMathMLmoFrame.h
layout/mathml/base/src/nsMathMLmoverFrame.cpp
layout/mathml/base/src/nsMathMLmoverFrame.h
layout/mathml/base/src/nsMathMLmpaddedFrame.cpp
layout/mathml/base/src/nsMathMLmpaddedFrame.h
layout/mathml/base/src/nsMathMLmphantomFrame.cpp
layout/mathml/base/src/nsMathMLmphantomFrame.h
layout/mathml/base/src/nsMathMLmrootFrame.cpp
layout/mathml/base/src/nsMathMLmrootFrame.h
layout/mathml/base/src/nsMathMLmrowFrame.cpp
layout/mathml/base/src/nsMathMLmrowFrame.h
layout/mathml/base/src/nsMathMLmspaceFrame.cpp
layout/mathml/base/src/nsMathMLmspaceFrame.h
layout/mathml/base/src/nsMathMLmsqrtFrame.cpp
layout/mathml/base/src/nsMathMLmsqrtFrame.h
layout/mathml/base/src/nsMathMLmstyleFrame.cpp
layout/mathml/base/src/nsMathMLmstyleFrame.h
layout/mathml/base/src/nsMathMLmsubFrame.cpp
layout/mathml/base/src/nsMathMLmsubFrame.h
layout/mathml/base/src/nsMathMLmsubsupFrame.cpp
layout/mathml/base/src/nsMathMLmsubsupFrame.h
layout/mathml/base/src/nsMathMLmsupFrame.cpp
layout/mathml/base/src/nsMathMLmsupFrame.h
layout/mathml/base/src/nsMathMLmtableFrame.cpp
layout/mathml/base/src/nsMathMLmtableFrame.h
layout/mathml/base/src/nsMathMLmunderFrame.cpp
layout/mathml/base/src/nsMathMLmunderFrame.h
layout/mathml/base/src/nsMathMLmunderoverFrame.cpp
layout/mathml/base/src/nsMathMLmunderoverFrame.h
layout/mathml/content/src/Makefile.in
layout/mathml/content/src/mathml-css.pl
layout/mathml/content/src/mathml.css
layout/mathml/content/src/mathml.dtd
layout/mathml/content/src/nsMathMLAtoms.h
layout/mathml/content/src/nsMathMLOperators.cpp
layout/mathml/content/src/nsMathMLOperators.h
layout/mathml/mathfont.properties
layout/mathml/mathfontCMEX10.properties
layout/mathml/mathfontCMSY10.properties
layout/mathml/mathfontMTExtra.properties
layout/mathml/mathfontMath1.properties
layout/mathml/mathfontMath2.properties
layout/mathml/mathfontMath4.properties
layout/mathml/mathfontPUA.properties
layout/mathml/mathfontSTIXNonUnicode.properties
layout/mathml/mathfontSTIXSize1.properties
layout/mathml/mathfontStandardSymbolsL.properties
layout/mathml/mathfontSymbol.properties
layout/mathml/mathfontUnicode.properties
layout/mathml/mathml-css.pl
layout/mathml/mathml.css
layout/mathml/nsIMathMLFrame.h
layout/mathml/nsMathMLAtoms.h
layout/mathml/nsMathMLChar.cpp
layout/mathml/nsMathMLChar.h
layout/mathml/nsMathMLContainerFrame.cpp
layout/mathml/nsMathMLContainerFrame.h
layout/mathml/nsMathMLForeignFrameWrapper.cpp
layout/mathml/nsMathMLForeignFrameWrapper.h
layout/mathml/nsMathMLFrame.cpp
layout/mathml/nsMathMLFrame.h
layout/mathml/nsMathMLOperators.cpp
layout/mathml/nsMathMLOperators.h
layout/mathml/nsMathMLParts.h
layout/mathml/nsMathMLTokenFrame.cpp
layout/mathml/nsMathMLTokenFrame.h
layout/mathml/nsMathMLmactionFrame.cpp
layout/mathml/nsMathMLmactionFrame.h
layout/mathml/nsMathMLmfencedFrame.cpp
layout/mathml/nsMathMLmfencedFrame.h
layout/mathml/nsMathMLmfracFrame.cpp
layout/mathml/nsMathMLmfracFrame.h
layout/mathml/nsMathMLmmultiscriptsFrame.cpp
layout/mathml/nsMathMLmmultiscriptsFrame.h
layout/mathml/nsMathMLmoFrame.cpp
layout/mathml/nsMathMLmoFrame.h
layout/mathml/nsMathMLmoverFrame.cpp
layout/mathml/nsMathMLmoverFrame.h
layout/mathml/nsMathMLmpaddedFrame.cpp
layout/mathml/nsMathMLmpaddedFrame.h
layout/mathml/nsMathMLmphantomFrame.cpp
layout/mathml/nsMathMLmphantomFrame.h
layout/mathml/nsMathMLmrootFrame.cpp
layout/mathml/nsMathMLmrootFrame.h
layout/mathml/nsMathMLmrowFrame.cpp
layout/mathml/nsMathMLmrowFrame.h
layout/mathml/nsMathMLmspaceFrame.cpp
layout/mathml/nsMathMLmspaceFrame.h
layout/mathml/nsMathMLmsqrtFrame.cpp
layout/mathml/nsMathMLmsqrtFrame.h
layout/mathml/nsMathMLmstyleFrame.cpp
layout/mathml/nsMathMLmstyleFrame.h
layout/mathml/nsMathMLmsubFrame.cpp
layout/mathml/nsMathMLmsubFrame.h
layout/mathml/nsMathMLmsubsupFrame.cpp
layout/mathml/nsMathMLmsubsupFrame.h
layout/mathml/nsMathMLmsupFrame.cpp
layout/mathml/nsMathMLmsupFrame.h
layout/mathml/nsMathMLmtableFrame.cpp
layout/mathml/nsMathMLmtableFrame.h
layout/mathml/nsMathMLmunderFrame.cpp
layout/mathml/nsMathMLmunderFrame.h
layout/mathml/nsMathMLmunderoverFrame.cpp
layout/mathml/nsMathMLmunderoverFrame.h
toolkit/toolkit-makefiles.sh
--- a/content/mathml/content/src/Makefile.in
+++ b/content/mathml/content/src/Makefile.in
@@ -71,14 +71,20 @@ include $(topsrcdir)/config/config.mk
 FORCE_STATIC_LIB = 1
 
 EXPORTS = \
 	$(NULL)
 
 
 include $(topsrcdir)/config/rules.mk
 
+EXPORT_RESOURCE_CONTENT = \
+		$(srcdir)/mathml.dtd \
+		$(NULL)
+libs::
+	$(INSTALL) $(EXPORT_RESOURCE_CONTENT) $(DIST)/bin/res/dtd
+
 INCLUDES += 	\
 		-I$(srcdir)/../../../shared/public \
 		-I$(srcdir)/../../../base/src \
 		$(NULL)
 
 DEFINES += -D_IMPL_NS_LAYOUT
new file mode 100644
--- /dev/null
+++ b/content/mathml/content/src/mathml.dtd
@@ -0,0 +1,1592 @@
+<!-- ***** 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) 2001
+   - the Initial Developer. All Rights Reserved.
+   -
+   - Contributor(s):
+   -       Roger B. Sidje <rbs@maths.uq.edu.au>
+   -       Karl Tomlinson <karlt+@karlt.net>, Mozilla Corporation
+   -
+   - Alternatively, the contents of this file may be used under the terms of
+   - either 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 LGPL or the GPL. 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 ***** -->
+
+<!-- Entities defined in MathML 2.0 but with Unicode code points updated in
+     line with http://www.unicode.org/reports/tr25/tr25-9.html
+  -->
+<!ENTITY phi "&#x3D5;">
+<!ENTITY ShortLeftArrow "&#x2190;&#x200B;"><!ENTITY slarr "&#x2190;&#x200B;">
+<!ENTITY ShortUpArrow "&#x2191;&#x200B;">
+<!ENTITY ShortRightArrow "&#x2192;&#x200B;"><!ENTITY srarr "&#x2192;&#x200B;">
+<!ENTITY ShortDownArrow "&#x2193;&#x200B;">
+<!ENTITY OverParenthesis "&#x23DC;">
+<!ENTITY UnderParenthesis "&#x23DD;">
+<!ENTITY OverBrace "&#x23DE;">
+<!ENTITY UnderBrace "&#x23DF;">
+<!ENTITY trpezium "&#x23E2;">
+<!ENTITY elinters "&#x23E7;">
+<!ENTITY lbbrk "&#x2772;">
+<!ENTITY rbbrk "&#x2773;">
+<!ENTITY lobrk "&#x27E6;"><!ENTITY LeftDoubleBracket "&#x27E6;">
+<!ENTITY robrk "&#x27E7;"><!ENTITY RightDoubleBracket "&#x27E7;">
+<!ENTITY lang "&#x27E8;"><!ENTITY LeftAngleBracket "&#x27E8;"><!ENTITY langle "&#x27E8;">
+<!ENTITY rang "&#x27E9;"><!ENTITY RightAngleBracket "&#x27E9;"><!ENTITY rangle "&#x27E9;">
+<!ENTITY Lang "&#x27EA;">
+<!ENTITY Rang "&#x27EB;">
+<!ENTITY loang "&#x27EC;">
+<!ENTITY roang "&#x27ED;">
+<!ENTITY imath "&#x1D6A4;"><!ENTITY inodot "&#x1D6A4;">
+<!ENTITY jmath "&#x1D6A5;">
+
+<!-- MathML 2.0 entities - Auto-generated from the
+     "XHTML 1.1 plus MathML 2.0 plus SVG 1.1 DTD"
+     http://www.w3.org/Math/DTD/mathml2.tgz
+     as of Revision: xhtml-math11-f.dtd,v 1.16 2003/11/04 13:14:35
+
+                              *** *** ***
+
+     The "XHTML 1.1 plus MathML 2.0 plus SVG 1.1 DTD" file from which the
+     entities were retrieved had the following copyright notice:
+
+     Copyright 2002 World Wide Web Consortium
+        (Massachusetts Institute of Technology, Institut National de
+         Recherche en Informatique et en Automatique, Keio University).
+         All Rights Reserved.
+
+     Permission to use, copy, modify and distribute this DTD and its
+     accompanying documentation for any purpose and without fee is hereby
+     granted in perpetuity, provided that the above copyright notice and 
+     this paragraph appear in all copies.  The copyright holders make no
+     representation about the suitability of the DTD for any purpose.
+
+                              *** *** ***
+
+     The section listing entity declarations had the following notices:
+
+     Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with conforming
+     SGML systems and applications as defined in ISO 8879, provided
+     this notice is included in all copies.
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+  -->
+<!ENTITY Tab "&#x9;">
+<!ENTITY NewLine "&#xA;">
+<!ENTITY excl "&#x21;">
+<!ENTITY quot "&#x22;">
+<!ENTITY num "&#x23;">
+<!ENTITY dollar "&#x24;">
+<!ENTITY percnt "&#x25;">
+<!ENTITY nvlt "&#x26;#x3C;&#x20D2;">
+<!ENTITY apos "&#x27;">
+<!ENTITY lpar "&#x28;">
+<!ENTITY rpar "&#x29;">
+<!ENTITY midast "&#x2A;"><!ENTITY ast "&#x2A;">
+<!ENTITY plus "&#x2B;">
+<!ENTITY comma "&#x2C;">
+<!ENTITY period "&#x2E;">
+<!ENTITY sol "&#x2F;">
+<!ENTITY colon "&#x3A;">
+<!ENTITY semi "&#x3B;">
+<!ENTITY equals "&#x3D;">
+<!ENTITY bne "&#x3D;&#x20E5;">
+<!ENTITY nvgt "&#x3E;&#x20D2;">
+<!ENTITY quest "&#x3F;">
+<!ENTITY commat "&#x40;">
+<!ENTITY lsqb "&#x5B;"><!ENTITY lbrack "&#x5B;">
+<!ENTITY bsol "&#x5C;">
+<!ENTITY bsolhsub "&#x5C;&#x2282;">
+<!ENTITY rsqb "&#x5D;"><!ENTITY rbrack "&#x5D;">
+<!ENTITY Hat "&#x5E;">
+<!ENTITY lowbar "&#x5F;">
+<!ENTITY grave "&#x60;"><!ENTITY DiacriticalGrave "&#x60;">
+<!ENTITY lcub "&#x7B;"><!ENTITY lbrace "&#x7B;">
+<!ENTITY verbar "&#x7C;"><!ENTITY VerticalLine "&#x7C;"><!ENTITY vert "&#x7C;">
+<!ENTITY rcub "&#x7D;"><!ENTITY rbrace "&#x7D;">
+<!ENTITY nbsp "&#xA0;"><!ENTITY NonBreakingSpace "&#xA0;">
+<!ENTITY iexcl "&#xA1;">
+<!ENTITY cent "&#xA2;">
+<!ENTITY pound "&#xA3;">
+<!ENTITY curren "&#xA4;">
+<!ENTITY yen "&#xA5;">
+<!ENTITY brvbar "&#xA6;">
+<!ENTITY sect "&#xA7;">
+<!ENTITY uml "&#xA8;"><!ENTITY Dot "&#xA8;"><!ENTITY die "&#xA8;"><!ENTITY DoubleDot "&#xA8;">
+<!ENTITY copy "&#xA9;">
+<!ENTITY ordf "&#xAA;">
+<!ENTITY laquo "&#xAB;">
+<!ENTITY not "&#xAC;">
+<!ENTITY shy "&#xAD;">
+<!ENTITY reg "&#xAE;"><!ENTITY circledR "&#xAE;">
+<!ENTITY macr "&#xAF;"><!ENTITY strns "&#xAF;"><!ENTITY OverBar "&#xAF;">
+<!ENTITY deg "&#xB0;">
+<!ENTITY plusmn "&#xB1;"><!ENTITY PlusMinus "&#xB1;"><!ENTITY pm "&#xB1;">
+<!ENTITY sup2 "&#xB2;">
+<!ENTITY sup3 "&#xB3;">
+<!ENTITY acute "&#xB4;"><!ENTITY DiacriticalAcute "&#xB4;">
+<!ENTITY micro "&#xB5;">
+<!ENTITY para "&#xB6;">
+<!ENTITY middot "&#xB7;"><!ENTITY CenterDot "&#xB7;"><!ENTITY centerdot "&#xB7;">
+<!ENTITY cedil "&#xB8;"><!ENTITY Cedilla "&#xB8;">
+<!ENTITY sup1 "&#xB9;">
+<!ENTITY ordm "&#xBA;">
+<!ENTITY raquo "&#xBB;">
+<!ENTITY frac14 "&#xBC;">
+<!ENTITY frac12 "&#xBD;"><!ENTITY half "&#xBD;">
+<!ENTITY frac34 "&#xBE;">
+<!ENTITY iquest "&#xBF;">
+<!ENTITY Agrave "&#xC0;">
+<!ENTITY Aacute "&#xC1;">
+<!ENTITY Acirc "&#xC2;">
+<!ENTITY Atilde "&#xC3;">
+<!ENTITY Auml "&#xC4;">
+<!ENTITY Aring "&#xC5;">
+<!ENTITY AElig "&#xC6;">
+<!ENTITY Ccedil "&#xC7;">
+<!ENTITY Egrave "&#xC8;">
+<!ENTITY Eacute "&#xC9;">
+<!ENTITY Ecirc "&#xCA;">
+<!ENTITY Euml "&#xCB;">
+<!ENTITY Igrave "&#xCC;">
+<!ENTITY Iacute "&#xCD;">
+<!ENTITY Icirc "&#xCE;">
+<!ENTITY Iuml "&#xCF;">
+<!ENTITY ETH "&#xD0;">
+<!ENTITY Ntilde "&#xD1;">
+<!ENTITY Ograve "&#xD2;">
+<!ENTITY Oacute "&#xD3;">
+<!ENTITY Ocirc "&#xD4;">
+<!ENTITY Otilde "&#xD5;">
+<!ENTITY Ouml "&#xD6;">
+<!ENTITY times "&#xD7;">
+<!ENTITY Oslash "&#xD8;">
+<!ENTITY Ugrave "&#xD9;">
+<!ENTITY Uacute "&#xDA;">
+<!ENTITY Ucirc "&#xDB;">
+<!ENTITY Uuml "&#xDC;">
+<!ENTITY Yacute "&#xDD;">
+<!ENTITY THORN "&#xDE;">
+<!ENTITY szlig "&#xDF;">
+<!ENTITY agrave "&#xE0;">
+<!ENTITY aacute "&#xE1;">
+<!ENTITY acirc "&#xE2;">
+<!ENTITY atilde "&#xE3;">
+<!ENTITY auml "&#xE4;">
+<!ENTITY aring "&#xE5;">
+<!ENTITY aelig "&#xE6;">
+<!ENTITY ccedil "&#xE7;">
+<!ENTITY egrave "&#xE8;">
+<!ENTITY eacute "&#xE9;">
+<!ENTITY ecirc "&#xEA;">
+<!ENTITY euml "&#xEB;">
+<!ENTITY igrave "&#xEC;">
+<!ENTITY iacute "&#xED;">
+<!ENTITY icirc "&#xEE;">
+<!ENTITY iuml "&#xEF;">
+<!ENTITY eth "&#xF0;">
+<!ENTITY ntilde "&#xF1;">
+<!ENTITY ograve "&#xF2;">
+<!ENTITY oacute "&#xF3;">
+<!ENTITY ocirc "&#xF4;">
+<!ENTITY otilde "&#xF5;">
+<!ENTITY ouml "&#xF6;">
+<!ENTITY divide "&#xF7;"><!ENTITY div "&#xF7;">
+<!ENTITY oslash "&#xF8;">
+<!ENTITY ugrave "&#xF9;">
+<!ENTITY uacute "&#xFA;">
+<!ENTITY ucirc "&#xFB;">
+<!ENTITY uuml "&#xFC;">
+<!ENTITY yacute "&#xFD;">
+<!ENTITY thorn "&#xFE;">
+<!ENTITY yuml "&#xFF;">
+<!ENTITY Amacr "&#x100;">
+<!ENTITY amacr "&#x101;">
+<!ENTITY Abreve "&#x102;">
+<!ENTITY abreve "&#x103;">
+<!ENTITY Aogon "&#x104;">
+<!ENTITY aogon "&#x105;">
+<!ENTITY Cacute "&#x106;">
+<!ENTITY cacute "&#x107;">
+<!ENTITY Ccirc "&#x108;">
+<!ENTITY ccirc "&#x109;">
+<!ENTITY Cdot "&#x10A;">
+<!ENTITY cdot "&#x10B;">
+<!ENTITY Ccaron "&#x10C;">
+<!ENTITY ccaron "&#x10D;">
+<!ENTITY Dcaron "&#x10E;">
+<!ENTITY dcaron "&#x10F;">
+<!ENTITY Dstrok "&#x110;">
+<!ENTITY dstrok "&#x111;">
+<!ENTITY Emacr "&#x112;">
+<!ENTITY emacr "&#x113;">
+<!ENTITY Edot "&#x116;">
+<!ENTITY edot "&#x117;">
+<!ENTITY Eogon "&#x118;">
+<!ENTITY eogon "&#x119;">
+<!ENTITY Ecaron "&#x11A;">
+<!ENTITY ecaron "&#x11B;">
+<!ENTITY Gcirc "&#x11C;">
+<!ENTITY gcirc "&#x11D;">
+<!ENTITY Gbreve "&#x11E;">
+<!ENTITY gbreve "&#x11F;">
+<!ENTITY Gdot "&#x120;">
+<!ENTITY gdot "&#x121;">
+<!ENTITY Gcedil "&#x122;">
+<!ENTITY Hcirc "&#x124;">
+<!ENTITY hcirc "&#x125;">
+<!ENTITY Hstrok "&#x126;">
+<!ENTITY hstrok "&#x127;">
+<!ENTITY Itilde "&#x128;">
+<!ENTITY itilde "&#x129;">
+<!ENTITY Imacr "&#x12A;">
+<!ENTITY imacr "&#x12B;">
+<!ENTITY Iogon "&#x12E;">
+<!ENTITY iogon "&#x12F;">
+<!ENTITY Idot "&#x130;">
+<!ENTITY IJlig "&#x132;">
+<!ENTITY ijlig "&#x133;">
+<!ENTITY Jcirc "&#x134;">
+<!ENTITY jcirc "&#x135;">
+<!ENTITY Kcedil "&#x136;">
+<!ENTITY kcedil "&#x137;">
+<!ENTITY kgreen "&#x138;">
+<!ENTITY Lacute "&#x139;">
+<!ENTITY lacute "&#x13A;">
+<!ENTITY Lcedil "&#x13B;">
+<!ENTITY lcedil "&#x13C;">
+<!ENTITY Lcaron "&#x13D;">
+<!ENTITY lcaron "&#x13E;">
+<!ENTITY Lmidot "&#x13F;">
+<!ENTITY lmidot "&#x140;">
+<!ENTITY Lstrok "&#x141;">
+<!ENTITY lstrok "&#x142;">
+<!ENTITY Nacute "&#x143;">
+<!ENTITY nacute "&#x144;">
+<!ENTITY Ncedil "&#x145;">
+<!ENTITY ncedil "&#x146;">
+<!ENTITY Ncaron "&#x147;">
+<!ENTITY ncaron "&#x148;">
+<!ENTITY napos "&#x149;">
+<!ENTITY ENG "&#x14A;">
+<!ENTITY eng "&#x14B;">
+<!ENTITY Omacr "&#x14C;">
+<!ENTITY omacr "&#x14D;">
+<!ENTITY Odblac "&#x150;">
+<!ENTITY odblac "&#x151;">
+<!ENTITY OElig "&#x152;">
+<!ENTITY oelig "&#x153;">
+<!ENTITY Racute "&#x154;">
+<!ENTITY racute "&#x155;">
+<!ENTITY Rcedil "&#x156;">
+<!ENTITY rcedil "&#x157;">
+<!ENTITY Rcaron "&#x158;">
+<!ENTITY rcaron "&#x159;">
+<!ENTITY Sacute "&#x15A;">
+<!ENTITY sacute "&#x15B;">
+<!ENTITY Scirc "&#x15C;">
+<!ENTITY scirc "&#x15D;">
+<!ENTITY Scedil "&#x15E;">
+<!ENTITY scedil "&#x15F;">
+<!ENTITY Scaron "&#x160;">
+<!ENTITY scaron "&#x161;">
+<!ENTITY Tcedil "&#x162;">
+<!ENTITY tcedil "&#x163;">
+<!ENTITY Tcaron "&#x164;">
+<!ENTITY tcaron "&#x165;">
+<!ENTITY Tstrok "&#x166;">
+<!ENTITY tstrok "&#x167;">
+<!ENTITY Utilde "&#x168;">
+<!ENTITY utilde "&#x169;">
+<!ENTITY Umacr "&#x16A;">
+<!ENTITY umacr "&#x16B;">
+<!ENTITY Ubreve "&#x16C;">
+<!ENTITY ubreve "&#x16D;">
+<!ENTITY Uring "&#x16E;">
+<!ENTITY uring "&#x16F;">
+<!ENTITY Udblac "&#x170;">
+<!ENTITY udblac "&#x171;">
+<!ENTITY Uogon "&#x172;">
+<!ENTITY uogon "&#x173;">
+<!ENTITY Wcirc "&#x174;">
+<!ENTITY wcirc "&#x175;">
+<!ENTITY Ycirc "&#x176;">
+<!ENTITY ycirc "&#x177;">
+<!ENTITY Yuml "&#x178;">
+<!ENTITY Zacute "&#x179;">
+<!ENTITY zacute "&#x17A;">
+<!ENTITY Zdot "&#x17B;">
+<!ENTITY zdot "&#x17C;">
+<!ENTITY Zcaron "&#x17D;">
+<!ENTITY zcaron "&#x17E;">
+<!ENTITY fnof "&#x192;">
+<!ENTITY imped "&#x1B5;">
+<!ENTITY gacute "&#x1F5;">
+<!ENTITY circ "&#x2C6;">
+<!ENTITY caron "&#x2C7;"><!ENTITY Hacek "&#x2C7;">
+<!ENTITY breve "&#x2D8;"><!ENTITY Breve "&#x2D8;">
+<!ENTITY dot "&#x2D9;"><!ENTITY DiacriticalDot "&#x2D9;">
+<!ENTITY ring "&#x2DA;">
+<!ENTITY ogon "&#x2DB;">
+<!ENTITY tilde "&#x2DC;"><!ENTITY DiacriticalTilde "&#x2DC;">
+<!ENTITY dblac "&#x2DD;"><!ENTITY DiacriticalDoubleAcute "&#x2DD;">
+<!ENTITY DownBreve " &#x311;">
+<!ENTITY UnderBar " &#x332;">
+<!ENTITY Alpha "&#x391;">
+<!ENTITY Beta "&#x392;">
+<!ENTITY Gamma "&#x393;">
+<!ENTITY Delta "&#x394;">
+<!ENTITY Epsilon "&#x395;">
+<!ENTITY Zeta "&#x396;">
+<!ENTITY Eta "&#x397;">
+<!ENTITY Theta "&#x398;">
+<!ENTITY Iota "&#x399;">
+<!ENTITY Kappa "&#x39A;">
+<!ENTITY Lambda "&#x39B;">
+<!ENTITY Mu "&#x39C;">
+<!ENTITY Nu "&#x39D;">
+<!ENTITY Xi "&#x39E;">
+<!ENTITY Omicron "&#x39F;">
+<!ENTITY Pi "&#x3A0;">
+<!ENTITY Rho "&#x3A1;">
+<!ENTITY Sigma "&#x3A3;">
+<!ENTITY Tau "&#x3A4;">
+<!ENTITY Upsilon "&#x3A5;">
+<!ENTITY Phi "&#x3A6;">
+<!ENTITY Chi "&#x3A7;">
+<!ENTITY Psi "&#x3A8;">
+<!ENTITY Omega "&#x3A9;">
+<!ENTITY alpha "&#x3B1;">
+<!ENTITY beta "&#x3B2;">
+<!ENTITY gamma "&#x3B3;">
+<!ENTITY delta "&#x3B4;">
+<!ENTITY epsilon "&#x3B5;"><!ENTITY epsiv "&#x3B5;"><!ENTITY varepsilon "&#x3B5;">
+<!ENTITY zeta "&#x3B6;">
+<!ENTITY eta "&#x3B7;">
+<!ENTITY theta "&#x3B8;">
+<!ENTITY iota "&#x3B9;">
+<!ENTITY kappa "&#x3BA;">
+<!ENTITY lambda "&#x3BB;">
+<!ENTITY mu "&#x3BC;">
+<!ENTITY nu "&#x3BD;">
+<!ENTITY xi "&#x3BE;">
+<!ENTITY omicron "&#x3BF;">
+<!ENTITY pi "&#x3C0;">
+<!ENTITY rho "&#x3C1;">
+<!ENTITY sigmaf "&#x3C2;"><!ENTITY sigmav "&#x3C2;"><!ENTITY varsigma "&#x3C2;">
+<!ENTITY sigma "&#x3C3;">
+<!ENTITY tau "&#x3C4;">
+<!ENTITY upsilon "&#x3C5;"><!ENTITY upsi "&#x3C5;">
+<!ENTITY phiv "&#x3C6;"><!ENTITY varphi "&#x3C6;">
+<!ENTITY chi "&#x3C7;">
+<!ENTITY psi "&#x3C8;">
+<!ENTITY omega "&#x3C9;">
+<!ENTITY thetasym "&#x3D1;"><!ENTITY thetav "&#x3D1;"><!ENTITY vartheta "&#x3D1;">
+<!ENTITY upsih "&#x3D2;"><!ENTITY Upsi "&#x3D2;">
+<!ENTITY straightphi "&#x3D5;">
+<!ENTITY piv "&#x3D6;"><!ENTITY varpi "&#x3D6;">
+<!ENTITY Gammad "&#x3DC;">
+<!ENTITY gammad "&#x3DD;"><!ENTITY digamma "&#x3DD;">
+<!ENTITY kappav "&#x3F0;"><!ENTITY varkappa "&#x3F0;">
+<!ENTITY rhov "&#x3F1;"><!ENTITY varrho "&#x3F1;">
+<!ENTITY epsi "&#x3F5;"><!ENTITY straightepsilon "&#x3F5;">
+<!ENTITY bepsi "&#x3F6;"><!ENTITY backepsilon "&#x3F6;">
+<!ENTITY IOcy "&#x401;">
+<!ENTITY DJcy "&#x402;">
+<!ENTITY GJcy "&#x403;">
+<!ENTITY Jukcy "&#x404;">
+<!ENTITY DScy "&#x405;">
+<!ENTITY Iukcy "&#x406;">
+<!ENTITY YIcy "&#x407;">
+<!ENTITY Jsercy "&#x408;">
+<!ENTITY LJcy "&#x409;">
+<!ENTITY NJcy "&#x40A;">
+<!ENTITY TSHcy "&#x40B;">
+<!ENTITY KJcy "&#x40C;">
+<!ENTITY Ubrcy "&#x40E;">
+<!ENTITY DZcy "&#x40F;">
+<!ENTITY Acy "&#x410;">
+<!ENTITY Bcy "&#x411;">
+<!ENTITY Vcy "&#x412;">
+<!ENTITY Gcy "&#x413;">
+<!ENTITY Dcy "&#x414;">
+<!ENTITY IEcy "&#x415;">
+<!ENTITY ZHcy "&#x416;">
+<!ENTITY Zcy "&#x417;">
+<!ENTITY Icy "&#x418;">
+<!ENTITY Jcy "&#x419;">
+<!ENTITY Kcy "&#x41A;">
+<!ENTITY Lcy "&#x41B;">
+<!ENTITY Mcy "&#x41C;">
+<!ENTITY Ncy "&#x41D;">
+<!ENTITY Ocy "&#x41E;">
+<!ENTITY Pcy "&#x41F;">
+<!ENTITY Rcy "&#x420;">
+<!ENTITY Scy "&#x421;">
+<!ENTITY Tcy "&#x422;">
+<!ENTITY Ucy "&#x423;">
+<!ENTITY Fcy "&#x424;">
+<!ENTITY KHcy "&#x425;">
+<!ENTITY TScy "&#x426;">
+<!ENTITY CHcy "&#x427;">
+<!ENTITY SHcy "&#x428;">
+<!ENTITY SHCHcy "&#x429;">
+<!ENTITY HARDcy "&#x42A;">
+<!ENTITY Ycy "&#x42B;">
+<!ENTITY SOFTcy "&#x42C;">
+<!ENTITY Ecy "&#x42D;">
+<!ENTITY YUcy "&#x42E;">
+<!ENTITY YAcy "&#x42F;">
+<!ENTITY acy "&#x430;">
+<!ENTITY bcy "&#x431;">
+<!ENTITY vcy "&#x432;">
+<!ENTITY gcy "&#x433;">
+<!ENTITY dcy "&#x434;">
+<!ENTITY iecy "&#x435;">
+<!ENTITY zhcy "&#x436;">
+<!ENTITY zcy "&#x437;">
+<!ENTITY icy "&#x438;">
+<!ENTITY jcy "&#x439;">
+<!ENTITY kcy "&#x43A;">
+<!ENTITY lcy "&#x43B;">
+<!ENTITY mcy "&#x43C;">
+<!ENTITY ncy "&#x43D;">
+<!ENTITY ocy "&#x43E;">
+<!ENTITY pcy "&#x43F;">
+<!ENTITY rcy "&#x440;">
+<!ENTITY scy "&#x441;">
+<!ENTITY tcy "&#x442;">
+<!ENTITY ucy "&#x443;">
+<!ENTITY fcy "&#x444;">
+<!ENTITY khcy "&#x445;">
+<!ENTITY tscy "&#x446;">
+<!ENTITY chcy "&#x447;">
+<!ENTITY shcy "&#x448;">
+<!ENTITY shchcy "&#x449;">
+<!ENTITY hardcy "&#x44A;">
+<!ENTITY ycy "&#x44B;">
+<!ENTITY softcy "&#x44C;">
+<!ENTITY ecy "&#x44D;">
+<!ENTITY yucy "&#x44E;">
+<!ENTITY yacy "&#x44F;">
+<!ENTITY iocy "&#x451;">
+<!ENTITY djcy "&#x452;">
+<!ENTITY gjcy "&#x453;">
+<!ENTITY jukcy "&#x454;">
+<!ENTITY dscy "&#x455;">
+<!ENTITY iukcy "&#x456;">
+<!ENTITY yicy "&#x457;">
+<!ENTITY jsercy "&#x458;">
+<!ENTITY ljcy "&#x459;">
+<!ENTITY njcy "&#x45A;">
+<!ENTITY tshcy "&#x45B;">
+<!ENTITY kjcy "&#x45C;">
+<!ENTITY ubrcy "&#x45E;">
+<!ENTITY dzcy "&#x45F;">
+<!ENTITY ensp "&#x2002;">
+<!ENTITY emsp "&#x2003;">
+<!ENTITY emsp13 "&#x2004;">
+<!ENTITY emsp14 "&#x2005;">
+<!ENTITY numsp "&#x2007;">
+<!ENTITY puncsp "&#x2008;">
+<!ENTITY thinsp "&#x2009;"><!ENTITY ThinSpace "&#x2009;">
+<!ENTITY ThickSpace "&#x2009;&#x200A;&#x200A;">
+<!ENTITY hairsp "&#x200A;"><!ENTITY VeryThinSpace "&#x200A;">
+<!ENTITY ZeroWidthSpace "&#x200B;"><!ENTITY NegativeMediumSpace "&#x200B;"><!ENTITY NegativeThickSpace "&#x200B;"><!ENTITY NegativeThinSpace "&#x200B;"><!ENTITY NegativeVeryThinSpace "&#x200B;">
+<!ENTITY zwnj "&#x200C;">
+<!ENTITY zwj "&#x200D;">
+<!ENTITY lrm "&#x200E;">
+<!ENTITY rlm "&#x200F;">
+<!ENTITY hyphen "&#x2010;"><!ENTITY dash "&#x2010;">
+<!ENTITY ndash "&#x2013;">
+<!ENTITY mdash "&#x2014;">
+<!ENTITY horbar "&#x2015;">
+<!ENTITY Verbar "&#x2016;"><!ENTITY Vert "&#x2016;">
+<!ENTITY lsquo "&#x2018;"><!ENTITY OpenCurlyQuote "&#x2018;">
+<!ENTITY rsquo "&#x2019;"><!ENTITY rsquor "&#x2019;"><!ENTITY CloseCurlyQuote "&#x2019;">
+<!ENTITY sbquo "&#x201A;"><!ENTITY lsquor "&#x201A;">
+<!ENTITY ldquo "&#x201C;"><!ENTITY OpenCurlyDoubleQuote "&#x201C;">
+<!ENTITY rdquo "&#x201D;"><!ENTITY rdquor "&#x201D;"><!ENTITY CloseCurlyDoubleQuote "&#x201D;">
+<!ENTITY bdquo "&#x201E;"><!ENTITY ldquor "&#x201E;">
+<!ENTITY dagger "&#x2020;">
+<!ENTITY Dagger "&#x2021;"><!ENTITY ddagger "&#x2021;">
+<!ENTITY bull "&#x2022;"><!ENTITY bullet "&#x2022;">
+<!ENTITY nldr "&#x2025;">
+<!ENTITY hellip "&#x2026;"><!ENTITY mldr "&#x2026;">
+<!ENTITY permil "&#x2030;">
+<!ENTITY pertenk "&#x2031;">
+<!ENTITY prime "&#x2032;">
+<!ENTITY Prime "&#x2033;">
+<!ENTITY tprime "&#x2034;">
+<!ENTITY bprime "&#x2035;"><!ENTITY backprime "&#x2035;">
+<!ENTITY lsaquo "&#x2039;">
+<!ENTITY rsaquo "&#x203A;">
+<!ENTITY oline "&#x203E;">
+<!ENTITY caret "&#x2041;">
+<!ENTITY hybull "&#x2043;">
+<!ENTITY frasl "&#x2044;">
+<!ENTITY bsemi "&#x204F;">
+<!ENTITY qprime "&#x2057;">
+<!ENTITY MediumSpace "&#x205F;">
+<!ENTITY NoBreak "&#x2060;">
+<!ENTITY af "&#x2061;"><!ENTITY ApplyFunction "&#x2061;">
+<!ENTITY it "&#x2062;"><!ENTITY InvisibleTimes "&#x2062;">
+<!ENTITY ic "&#x2063;"><!ENTITY InvisibleComma "&#x2063;">
+<!ENTITY euro "&#x20AC;">
+<!ENTITY tdot " &#x20DB;"><!ENTITY TripleDot " &#x20DB;">
+<!ENTITY DotDot " &#x20DC;">
+<!ENTITY Copf "&#x2102;"><!ENTITY complexes "&#x2102;">
+<!ENTITY incare "&#x2105;">
+<!ENTITY gscr "&#x210A;">
+<!ENTITY Hscr "&#x210B;"><!ENTITY hamilt "&#x210B;"><!ENTITY HilbertSpace "&#x210B;">
+<!ENTITY Hfr "&#x210C;"><!ENTITY Poincareplane "&#x210C;">
+<!ENTITY Hopf "&#x210D;"><!ENTITY quaternions "&#x210D;">
+<!ENTITY planckh "&#x210E;">
+<!ENTITY planck "&#x210F;"><!ENTITY plankv "&#x210F;"><!ENTITY hbar "&#x210F;"><!ENTITY hslash "&#x210F;">
+<!ENTITY Iscr "&#x2110;"><!ENTITY imagline "&#x2110;">
+<!ENTITY image "&#x2111;"><!ENTITY Ifr "&#x2111;"><!ENTITY Im "&#x2111;"><!ENTITY imagpart "&#x2111;">
+<!ENTITY Lscr "&#x2112;"><!ENTITY lagran "&#x2112;"><!ENTITY Laplacetrf "&#x2112;">
+<!ENTITY ell "&#x2113;">
+<!ENTITY Nopf "&#x2115;"><!ENTITY naturals "&#x2115;">
+<!ENTITY numero "&#x2116;">
+<!ENTITY copysr "&#x2117;">
+<!ENTITY weierp "&#x2118;"><!ENTITY wp "&#x2118;">
+<!ENTITY Popf "&#x2119;"><!ENTITY primes "&#x2119;">
+<!ENTITY Qopf "&#x211A;"><!ENTITY rationals "&#x211A;">
+<!ENTITY Rscr "&#x211B;"><!ENTITY realine "&#x211B;">
+<!ENTITY real "&#x211C;"><!ENTITY Rfr "&#x211C;"><!ENTITY Re "&#x211C;"><!ENTITY realpart "&#x211C;">
+<!ENTITY Ropf "&#x211D;"><!ENTITY reals "&#x211D;">
+<!ENTITY rx "&#x211E;">
+<!ENTITY trade "&#x2122;">
+<!ENTITY Zopf "&#x2124;"><!ENTITY integers "&#x2124;">
+<!ENTITY ohm "&#x2126;">
+<!ENTITY mho "&#x2127;">
+<!ENTITY Zfr "&#x2128;"><!ENTITY zeetrf "&#x2128;">
+<!ENTITY iiota "&#x2129;">
+<!ENTITY angst "&#x212B;">
+<!ENTITY Bscr "&#x212C;"><!ENTITY bernou "&#x212C;"><!ENTITY Bernoullis "&#x212C;">
+<!ENTITY Cfr "&#x212D;"><!ENTITY Cayleys "&#x212D;">
+<!ENTITY escr "&#x212F;">
+<!ENTITY Escr "&#x2130;"><!ENTITY expectation "&#x2130;">
+<!ENTITY Fscr "&#x2131;"><!ENTITY Fouriertrf "&#x2131;">
+<!ENTITY Mscr "&#x2133;"><!ENTITY phmmat "&#x2133;"><!ENTITY Mellintrf "&#x2133;">
+<!ENTITY oscr "&#x2134;"><!ENTITY order "&#x2134;"><!ENTITY orderof "&#x2134;">
+<!ENTITY alefsym "&#x2135;"><!ENTITY aleph "&#x2135;">
+<!ENTITY beth "&#x2136;">
+<!ENTITY gimel "&#x2137;">
+<!ENTITY daleth "&#x2138;">
+<!ENTITY DD "&#x2145;"><!ENTITY CapitalDifferentialD "&#x2145;">
+<!ENTITY dd "&#x2146;"><!ENTITY DifferentialD "&#x2146;">
+<!ENTITY ee "&#x2147;"><!ENTITY ExponentialE "&#x2147;"><!ENTITY exponentiale "&#x2147;">
+<!ENTITY ii "&#x2148;"><!ENTITY ImaginaryI "&#x2148;">
+<!ENTITY frac13 "&#x2153;">
+<!ENTITY frac23 "&#x2154;">
+<!ENTITY frac15 "&#x2155;">
+<!ENTITY frac25 "&#x2156;">
+<!ENTITY frac35 "&#x2157;">
+<!ENTITY frac45 "&#x2158;">
+<!ENTITY frac16 "&#x2159;">
+<!ENTITY frac56 "&#x215A;">
+<!ENTITY frac18 "&#x215B;">
+<!ENTITY frac38 "&#x215C;">
+<!ENTITY frac58 "&#x215D;">
+<!ENTITY frac78 "&#x215E;">
+<!ENTITY larr "&#x2190;"><!ENTITY LeftArrow "&#x2190;"><!ENTITY leftarrow "&#x2190;">
+<!ENTITY uarr "&#x2191;"><!ENTITY UpArrow "&#x2191;"><!ENTITY uparrow "&#x2191;">
+<!ENTITY rarr "&#x2192;"><!ENTITY RightArrow "&#x2192;"><!ENTITY rightarrow "&#x2192;">
+<!ENTITY darr "&#x2193;"><!ENTITY DownArrow "&#x2193;"><!ENTITY downarrow "&#x2193;">
+<!ENTITY harr "&#x2194;"><!ENTITY LeftRightArrow "&#x2194;"><!ENTITY leftrightarrow "&#x2194;">
+<!ENTITY varr "&#x2195;"><!ENTITY UpDownArrow "&#x2195;"><!ENTITY updownarrow "&#x2195;">
+<!ENTITY nwarr "&#x2196;"><!ENTITY nwarrow "&#x2196;"><!ENTITY UpperLeftArrow "&#x2196;">
+<!ENTITY nearr "&#x2197;"><!ENTITY nearrow "&#x2197;"><!ENTITY UpperRightArrow "&#x2197;">
+<!ENTITY searr "&#x2198;"><!ENTITY LowerRightArrow "&#x2198;"><!ENTITY searrow "&#x2198;">
+<!ENTITY swarr "&#x2199;"><!ENTITY LowerLeftArrow "&#x2199;"><!ENTITY swarrow "&#x2199;">
+<!ENTITY nlarr "&#x219A;"><!ENTITY nleftarrow "&#x219A;">
+<!ENTITY nrarr "&#x219B;"><!ENTITY nrightarrow "&#x219B;">
+<!ENTITY rarrw "&#x219D;"><!ENTITY rightsquigarrow "&#x219D;">
+<!ENTITY nrarrw "&#x219D;&#x338;">
+<!ENTITY Larr "&#x219E;"><!ENTITY twoheadleftarrow "&#x219E;">
+<!ENTITY Uarr "&#x219F;">
+<!ENTITY Rarr "&#x21A0;"><!ENTITY twoheadrightarrow "&#x21A0;">
+<!ENTITY Darr "&#x21A1;">
+<!ENTITY larrtl "&#x21A2;"><!ENTITY leftarrowtail "&#x21A2;">
+<!ENTITY rarrtl "&#x21A3;"><!ENTITY rightarrowtail "&#x21A3;">
+<!ENTITY mapstoleft "&#x21A4;"><!ENTITY LeftTeeArrow "&#x21A4;">
+<!ENTITY mapstoup "&#x21A5;"><!ENTITY UpTeeArrow "&#x21A5;">
+<!ENTITY map "&#x21A6;"><!ENTITY mapsto "&#x21A6;"><!ENTITY RightTeeArrow "&#x21A6;">
+<!ENTITY mapstodown "&#x21A7;"><!ENTITY DownTeeArrow "&#x21A7;">
+<!ENTITY larrhk "&#x21A9;"><!ENTITY hookleftarrow "&#x21A9;">
+<!ENTITY rarrhk "&#x21AA;"><!ENTITY hookrightarrow "&#x21AA;">
+<!ENTITY larrlp "&#x21AB;"><!ENTITY looparrowleft "&#x21AB;">
+<!ENTITY rarrlp "&#x21AC;"><!ENTITY looparrowright "&#x21AC;">
+<!ENTITY harrw "&#x21AD;"><!ENTITY leftrightsquigarrow "&#x21AD;">
+<!ENTITY nharr "&#x21AE;"><!ENTITY nleftrightarrow "&#x21AE;">
+<!ENTITY lsh "&#x21B0;"><!ENTITY Lsh "&#x21B0;">
+<!ENTITY rsh "&#x21B1;"><!ENTITY Rsh "&#x21B1;">
+<!ENTITY ldsh "&#x21B2;">
+<!ENTITY rdsh "&#x21B3;">
+<!ENTITY crarr "&#x21B5;">
+<!ENTITY cularr "&#x21B6;"><!ENTITY curvearrowleft "&#x21B6;">
+<!ENTITY curarr "&#x21B7;"><!ENTITY curvearrowright "&#x21B7;">
+<!ENTITY olarr "&#x21BA;"><!ENTITY circlearrowleft "&#x21BA;">
+<!ENTITY orarr "&#x21BB;"><!ENTITY circlearrowright "&#x21BB;">
+<!ENTITY lharu "&#x21BC;"><!ENTITY leftharpoonup "&#x21BC;"><!ENTITY LeftVector "&#x21BC;">
+<!ENTITY lhard "&#x21BD;"><!ENTITY DownLeftVector "&#x21BD;"><!ENTITY leftharpoondown "&#x21BD;">
+<!ENTITY uharr "&#x21BE;"><!ENTITY RightUpVector "&#x21BE;"><!ENTITY upharpoonright "&#x21BE;">
+<!ENTITY uharl "&#x21BF;"><!ENTITY LeftUpVector "&#x21BF;"><!ENTITY upharpoonleft "&#x21BF;">
+<!ENTITY rharu "&#x21C0;"><!ENTITY rightharpoonup "&#x21C0;"><!ENTITY RightVector "&#x21C0;">
+<!ENTITY rhard "&#x21C1;"><!ENTITY DownRightVector "&#x21C1;"><!ENTITY rightharpoondown "&#x21C1;">
+<!ENTITY dharr "&#x21C2;"><!ENTITY downharpoonright "&#x21C2;"><!ENTITY RightDownVector "&#x21C2;">
+<!ENTITY dharl "&#x21C3;"><!ENTITY downharpoonleft "&#x21C3;"><!ENTITY LeftDownVector "&#x21C3;">
+<!ENTITY rlarr "&#x21C4;"><!ENTITY RightArrowLeftArrow "&#x21C4;"><!ENTITY rightleftarrows "&#x21C4;">
+<!ENTITY udarr "&#x21C5;"><!ENTITY UpArrowDownArrow "&#x21C5;">
+<!ENTITY lrarr "&#x21C6;"><!ENTITY LeftArrowRightArrow "&#x21C6;"><!ENTITY leftrightarrows "&#x21C6;">
+<!ENTITY llarr "&#x21C7;"><!ENTITY leftleftarrows "&#x21C7;">
+<!ENTITY uuarr "&#x21C8;"><!ENTITY upuparrows "&#x21C8;">
+<!ENTITY rrarr "&#x21C9;"><!ENTITY rightrightarrows "&#x21C9;">
+<!ENTITY ddarr "&#x21CA;"><!ENTITY downdownarrows "&#x21CA;">
+<!ENTITY lrhar "&#x21CB;"><!ENTITY leftrightharpoons "&#x21CB;"><!ENTITY ReverseEquilibrium "&#x21CB;">
+<!ENTITY rlhar "&#x21CC;"><!ENTITY Equilibrium "&#x21CC;"><!ENTITY rightleftharpoons "&#x21CC;">
+<!ENTITY nlArr "&#x21CD;"><!ENTITY nLeftarrow "&#x21CD;">
+<!ENTITY nhArr "&#x21CE;"><!ENTITY nLeftrightarrow "&#x21CE;">
+<!ENTITY nrArr "&#x21CF;"><!ENTITY nRightarrow "&#x21CF;">
+<!ENTITY lArr "&#x21D0;"><!ENTITY DoubleLeftArrow "&#x21D0;"><!ENTITY Leftarrow "&#x21D0;">
+<!ENTITY uArr "&#x21D1;"><!ENTITY DoubleUpArrow "&#x21D1;"><!ENTITY Uparrow "&#x21D1;">
+<!ENTITY rArr "&#x21D2;"><!ENTITY DoubleRightArrow "&#x21D2;"><!ENTITY Implies "&#x21D2;"><!ENTITY Rightarrow "&#x21D2;">
+<!ENTITY dArr "&#x21D3;"><!ENTITY DoubleDownArrow "&#x21D3;"><!ENTITY Downarrow "&#x21D3;">
+<!ENTITY hArr "&#x21D4;"><!ENTITY iff "&#x21D4;"><!ENTITY DoubleLeftRightArrow "&#x21D4;"><!ENTITY Leftrightarrow "&#x21D4;">
+<!ENTITY vArr "&#x21D5;"><!ENTITY DoubleUpDownArrow "&#x21D5;"><!ENTITY Updownarrow "&#x21D5;">
+<!ENTITY nwArr "&#x21D6;">
+<!ENTITY neArr "&#x21D7;">
+<!ENTITY seArr "&#x21D8;">
+<!ENTITY swArr "&#x21D9;">
+<!ENTITY lAarr "&#x21DA;"><!ENTITY Lleftarrow "&#x21DA;">
+<!ENTITY rAarr "&#x21DB;"><!ENTITY Rrightarrow "&#x21DB;">
+<!ENTITY zigrarr "&#x21DD;">
+<!ENTITY larrb "&#x21E4;"><!ENTITY LeftArrowBar "&#x21E4;">
+<!ENTITY rarrb "&#x21E5;"><!ENTITY RightArrowBar "&#x21E5;">
+<!ENTITY duarr "&#x21F5;"><!ENTITY DownArrowUpArrow "&#x21F5;">
+<!ENTITY loarr "&#x21FD;">
+<!ENTITY roarr "&#x21FE;">
+<!ENTITY hoarr "&#x21FF;">
+<!ENTITY forall "&#x2200;"><!ENTITY ForAll "&#x2200;">
+<!ENTITY comp "&#x2201;"><!ENTITY complement "&#x2201;">
+<!ENTITY part "&#x2202;"><!ENTITY PartialD "&#x2202;">
+<!ENTITY npart "&#x2202;&#x338;">
+<!ENTITY exist "&#x2203;"><!ENTITY Exists "&#x2203;">
+<!ENTITY nexist "&#x2204;"><!ENTITY nexists "&#x2204;"><!ENTITY NotExists "&#x2204;">
+<!ENTITY empty "&#x2205;"><!ENTITY emptyv "&#x2205;"><!ENTITY emptyset "&#x2205;"><!ENTITY varnothing "&#x2205;">
+<!ENTITY nabla "&#x2207;"><!ENTITY Del "&#x2207;">
+<!ENTITY isin "&#x2208;"><!ENTITY isinv "&#x2208;"><!ENTITY Element "&#x2208;"><!ENTITY in "&#x2208;">
+<!ENTITY notin "&#x2209;"><!ENTITY notinva "&#x2209;"><!ENTITY NotElement "&#x2209;">
+<!ENTITY ni "&#x220B;"><!ENTITY niv "&#x220B;"><!ENTITY ReverseElement "&#x220B;"><!ENTITY SuchThat "&#x220B;">
+<!ENTITY notni "&#x220C;"><!ENTITY notniva "&#x220C;"><!ENTITY NotReverseElement "&#x220C;">
+<!ENTITY prod "&#x220F;"><!ENTITY Product "&#x220F;">
+<!ENTITY coprod "&#x2210;"><!ENTITY Coproduct "&#x2210;">
+<!ENTITY sum "&#x2211;"><!ENTITY Sum "&#x2211;">
+<!ENTITY minus "&#x2212;">
+<!ENTITY mnplus "&#x2213;"><!ENTITY MinusPlus "&#x2213;"><!ENTITY mp "&#x2213;">
+<!ENTITY plusdo "&#x2214;"><!ENTITY dotplus "&#x2214;">
+<!ENTITY setmn "&#x2216;"><!ENTITY ssetmn "&#x2216;"><!ENTITY Backslash "&#x2216;"><!ENTITY setminus "&#x2216;"><!ENTITY smallsetminus "&#x2216;">
+<!ENTITY lowast "&#x2217;">
+<!ENTITY compfn "&#x2218;"><!ENTITY SmallCircle "&#x2218;">
+<!ENTITY radic "&#x221A;"><!ENTITY Sqrt "&#x221A;">
+<!ENTITY prop "&#x221D;"><!ENTITY vprop "&#x221D;"><!ENTITY Proportional "&#x221D;"><!ENTITY propto "&#x221D;"><!ENTITY varpropto "&#x221D;">
+<!ENTITY infin "&#x221E;">
+<!ENTITY angrt "&#x221F;">
+<!ENTITY ang "&#x2220;"><!ENTITY angle "&#x2220;">
+<!ENTITY nang "&#x2220;&#x20D2;">
+<!ENTITY angmsd "&#x2221;"><!ENTITY measuredangle "&#x2221;">
+<!ENTITY angsph "&#x2222;">
+<!ENTITY mid "&#x2223;"><!ENTITY smid "&#x2223;"><!ENTITY shortmid "&#x2223;"><!ENTITY VerticalBar "&#x2223;">
+<!ENTITY nmid "&#x2224;"><!ENTITY nsmid "&#x2224;"><!ENTITY NotVerticalBar "&#x2224;"><!ENTITY nshortmid "&#x2224;">
+<!ENTITY spar "&#x2225;"><!ENTITY par "&#x2225;"><!ENTITY DoubleVerticalBar "&#x2225;"><!ENTITY parallel "&#x2225;"><!ENTITY shortparallel "&#x2225;">
+<!ENTITY npar "&#x2226;"><!ENTITY nspar "&#x2226;"><!ENTITY NotDoubleVerticalBar "&#x2226;"><!ENTITY nparallel "&#x2226;"><!ENTITY nshortparallel "&#x2226;">
+<!ENTITY and "&#x2227;"><!ENTITY wedge "&#x2227;">
+<!ENTITY or "&#x2228;"><!ENTITY vee "&#x2228;">
+<!ENTITY cap "&#x2229;">
+<!ENTITY caps "&#x2229;&#xFE00;">
+<!ENTITY cup "&#x222A;">
+<!ENTITY cups "&#x222A;&#xFE00;">
+<!ENTITY int "&#x222B;"><!ENTITY Integral "&#x222B;">
+<!ENTITY Int "&#x222C;">
+<!ENTITY tint "&#x222D;"><!ENTITY iiint "&#x222D;">
+<!ENTITY conint "&#x222E;"><!ENTITY ContourIntegral "&#x222E;"><!ENTITY oint "&#x222E;">
+<!ENTITY Conint "&#x222F;"><!ENTITY DoubleContourIntegral "&#x222F;">
+<!ENTITY Cconint "&#x2230;">
+<!ENTITY cwint "&#x2231;">
+<!ENTITY cwconint "&#x2232;"><!ENTITY ClockwiseContourIntegral "&#x2232;">
+<!ENTITY awconint "&#x2233;"><!ENTITY CounterClockwiseContourIntegral "&#x2233;">
+<!ENTITY there4 "&#x2234;"><!ENTITY Therefore "&#x2234;"><!ENTITY therefore "&#x2234;">
+<!ENTITY becaus "&#x2235;"><!ENTITY Because "&#x2235;"><!ENTITY because "&#x2235;">
+<!ENTITY ratio "&#x2236;">
+<!ENTITY Colon "&#x2237;"><!ENTITY Proportion "&#x2237;">
+<!ENTITY minusd "&#x2238;"><!ENTITY dotminus "&#x2238;">
+<!ENTITY mDDot "&#x223A;">
+<!ENTITY homtht "&#x223B;">
+<!ENTITY sim "&#x223C;"><!ENTITY thksim "&#x223C;"><!ENTITY thicksim "&#x223C;"><!ENTITY Tilde "&#x223C;">
+<!ENTITY nvsim "&#x223C;&#x20D2;">
+<!ENTITY bsim "&#x223D;"><!ENTITY backsim "&#x223D;">
+<!ENTITY ac "&#x223E;"><!ENTITY mstpos "&#x223E;">
+<!ENTITY acE "&#x223E;&#x333;">
+<!ENTITY acd "&#x223F;">
+<!ENTITY wreath "&#x2240;"><!ENTITY VerticalTilde "&#x2240;"><!ENTITY wr "&#x2240;">
+<!ENTITY nsim "&#x2241;"><!ENTITY NotTilde "&#x2241;">
+<!ENTITY esim "&#x2242;"><!ENTITY eqsim "&#x2242;"><!ENTITY EqualTilde "&#x2242;">
+<!ENTITY nesim "&#x2242;&#x338;"><!ENTITY NotEqualTilde "&#x2242;&#x338;">
+<!ENTITY sime "&#x2243;"><!ENTITY simeq "&#x2243;"><!ENTITY TildeEqual "&#x2243;">
+<!ENTITY nsime "&#x2244;"><!ENTITY NotTildeEqual "&#x2244;"><!ENTITY nsimeq "&#x2244;">
+<!ENTITY cong "&#x2245;"><!ENTITY TildeFullEqual "&#x2245;">
+<!ENTITY simne "&#x2246;">
+<!ENTITY ncong "&#x2247;"><!ENTITY NotTildeFullEqual "&#x2247;">
+<!ENTITY asymp "&#x2248;"><!ENTITY thkap "&#x2248;"><!ENTITY ap "&#x2248;"><!ENTITY approx "&#x2248;"><!ENTITY thickapprox "&#x2248;"><!ENTITY TildeTilde "&#x2248;">
+<!ENTITY nap "&#x2249;"><!ENTITY napprox "&#x2249;"><!ENTITY NotTildeTilde "&#x2249;">
+<!ENTITY ape "&#x224A;"><!ENTITY approxeq "&#x224A;">
+<!ENTITY apid "&#x224B;">
+<!ENTITY napid "&#x224B;&#x338;">
+<!ENTITY bcong "&#x224C;"><!ENTITY backcong "&#x224C;">
+<!ENTITY asympeq "&#x224D;"><!ENTITY CupCap "&#x224D;">
+<!ENTITY nvap "&#x224D;&#x20D2;">
+<!ENTITY bump "&#x224E;"><!ENTITY Bumpeq "&#x224E;"><!ENTITY HumpDownHump "&#x224E;">
+<!ENTITY nbump "&#x224E;&#x338;"><!ENTITY NotHumpDownHump "&#x224E;&#x338;">
+<!ENTITY bumpe "&#x224F;"><!ENTITY bumpeq "&#x224F;"><!ENTITY HumpEqual "&#x224F;">
+<!ENTITY nbumpe "&#x224F;&#x338;"><!ENTITY NotHumpEqual "&#x224F;&#x338;">
+<!ENTITY esdot "&#x2250;"><!ENTITY doteq "&#x2250;"><!ENTITY DotEqual "&#x2250;">
+<!ENTITY nedot "&#x2250;&#x338;">
+<!ENTITY eDot "&#x2251;"><!ENTITY doteqdot "&#x2251;">
+<!ENTITY efDot "&#x2252;"><!ENTITY fallingdotseq "&#x2252;">
+<!ENTITY erDot "&#x2253;"><!ENTITY risingdotseq "&#x2253;">
+<!ENTITY colone "&#x2254;"><!ENTITY Assign "&#x2254;"><!ENTITY coloneq "&#x2254;">
+<!ENTITY ecolon "&#x2255;"><!ENTITY eqcolon "&#x2255;">
+<!ENTITY ecir "&#x2256;"><!ENTITY eqcirc "&#x2256;">
+<!ENTITY cire "&#x2257;"><!ENTITY circeq "&#x2257;">
+<!ENTITY wedgeq "&#x2259;">
+<!ENTITY veeeq "&#x225A;">
+<!ENTITY trie "&#x225C;"><!ENTITY triangleq "&#x225C;">
+<!ENTITY equest "&#x225F;"><!ENTITY questeq "&#x225F;">
+<!ENTITY ne "&#x2260;"><!ENTITY NotEqual "&#x2260;">
+<!ENTITY equiv "&#x2261;"><!ENTITY Congruent "&#x2261;">
+<!ENTITY bnequiv "&#x2261;&#x20E5;">
+<!ENTITY nequiv "&#x2262;"><!ENTITY NotCongruent "&#x2262;">
+<!ENTITY le "&#x2264;"><!ENTITY leq "&#x2264;">
+<!ENTITY nvle "&#x2264;&#x20D2;">
+<!ENTITY ge "&#x2265;"><!ENTITY geq "&#x2265;"><!ENTITY GreaterEqual "&#x2265;">
+<!ENTITY nvge "&#x2265;&#x20D2;">
+<!ENTITY lE "&#x2266;"><!ENTITY leqq "&#x2266;"><!ENTITY LessFullEqual "&#x2266;">
+<!ENTITY nlE "&#x2266;&#x338;"><!ENTITY nleqq "&#x2266;&#x338;"><!ENTITY NotGreaterFullEqual "&#x2266;&#x338;">
+<!ENTITY gE "&#x2267;"><!ENTITY geqq "&#x2267;"><!ENTITY GreaterFullEqual "&#x2267;">
+<!ENTITY ngE "&#x2267;&#x338;"><!ENTITY ngeqq "&#x2267;&#x338;">
+<!ENTITY lnE "&#x2268;"><!ENTITY lneqq "&#x2268;">
+<!ENTITY lvnE "&#x2268;&#xFE00;"><!ENTITY lvertneqq "&#x2268;&#xFE00;">
+<!ENTITY gnE "&#x2269;"><!ENTITY gneqq "&#x2269;">
+<!ENTITY gvnE "&#x2269;&#xFE00;"><!ENTITY gvertneqq "&#x2269;&#xFE00;">
+<!ENTITY Lt "&#x226A;"><!ENTITY ll "&#x226A;"><!ENTITY NestedLessLess "&#x226A;">
+<!ENTITY nLt "&#x226A;&#x20D2;">
+<!ENTITY nLtv "&#x226A;&#x338;"><!ENTITY NotLessLess "&#x226A;&#x338;">
+<!ENTITY Gt "&#x226B;"><!ENTITY gg "&#x226B;"><!ENTITY NestedGreaterGreater "&#x226B;">
+<!ENTITY nGt "&#x226B;&#x20D2;">
+<!ENTITY nGtv "&#x226B;&#x338;"><!ENTITY NotGreaterGreater "&#x226B;&#x338;">
+<!ENTITY twixt "&#x226C;"><!ENTITY between "&#x226C;">
+<!ENTITY NotCupCap "&#x226D;">
+<!ENTITY nlt "&#x226E;"><!ENTITY nless "&#x226E;"><!ENTITY NotLess "&#x226E;">
+<!ENTITY ngt "&#x226F;"><!ENTITY ngtr "&#x226F;"><!ENTITY NotGreater "&#x226F;">
+<!ENTITY nle "&#x2270;"><!ENTITY nleq "&#x2270;"><!ENTITY NotLessEqual "&#x2270;">
+<!ENTITY nge "&#x2271;"><!ENTITY ngeq "&#x2271;"><!ENTITY NotGreaterEqual "&#x2271;">
+<!ENTITY lsim "&#x2272;"><!ENTITY lesssim "&#x2272;"><!ENTITY LessTilde "&#x2272;">
+<!ENTITY gsim "&#x2273;"><!ENTITY GreaterTilde "&#x2273;"><!ENTITY gtrsim "&#x2273;">
+<!ENTITY nlsim "&#x2274;"><!ENTITY NotLessTilde "&#x2274;">
+<!ENTITY ngsim "&#x2275;"><!ENTITY NotGreaterTilde "&#x2275;">
+<!ENTITY lg "&#x2276;"><!ENTITY LessGreater "&#x2276;"><!ENTITY lessgtr "&#x2276;">
+<!ENTITY gl "&#x2277;"><!ENTITY GreaterLess "&#x2277;"><!ENTITY gtrless "&#x2277;">
+<!ENTITY ntlg "&#x2278;"><!ENTITY NotLessGreater "&#x2278;">
+<!ENTITY ntgl "&#x2279;"><!ENTITY NotGreaterLess "&#x2279;">
+<!ENTITY pr "&#x227A;"><!ENTITY prec "&#x227A;"><!ENTITY Precedes "&#x227A;">
+<!ENTITY sc "&#x227B;"><!ENTITY succ "&#x227B;"><!ENTITY Succeeds "&#x227B;">
+<!ENTITY prcue "&#x227C;"><!ENTITY preccurlyeq "&#x227C;"><!ENTITY PrecedesSlantEqual "&#x227C;">
+<!ENTITY sccue "&#x227D;"><!ENTITY succcurlyeq "&#x227D;"><!ENTITY SucceedsSlantEqual "&#x227D;">
+<!ENTITY prsim "&#x227E;"><!ENTITY PrecedesTilde "&#x227E;"><!ENTITY precsim "&#x227E;">
+<!ENTITY scsim "&#x227F;"><!ENTITY SucceedsTilde "&#x227F;"><!ENTITY succsim "&#x227F;">
+<!ENTITY NotSucceedsTilde "&#x227F;&#x338;">
+<!ENTITY npr "&#x2280;"><!ENTITY NotPrecedes "&#x2280;"><!ENTITY nprec "&#x2280;">
+<!ENTITY nsc "&#x2281;"><!ENTITY NotSucceeds "&#x2281;"><!ENTITY nsucc "&#x2281;">
+<!ENTITY sub "&#x2282;"><!ENTITY subset "&#x2282;">
+<!ENTITY vnsub "&#x2282;&#x20D2;"><!ENTITY NotSubset "&#x2282;&#x20D2;"><!ENTITY nsubset "&#x2282;&#x20D2;">
+<!ENTITY sup "&#x2283;"><!ENTITY Superset "&#x2283;"><!ENTITY supset "&#x2283;">
+<!ENTITY vnsup "&#x2283;&#x20D2;"><!ENTITY NotSuperset "&#x2283;&#x20D2;"><!ENTITY nsupset "&#x2283;&#x20D2;">
+<!ENTITY suphsol "&#x2283;&#x2F;">
+<!ENTITY nsub "&#x2284;">
+<!ENTITY nsup "&#x2285;">
+<!ENTITY sube "&#x2286;"><!ENTITY subseteq "&#x2286;"><!ENTITY SubsetEqual "&#x2286;">
+<!ENTITY supe "&#x2287;"><!ENTITY SupersetEqual "&#x2287;"><!ENTITY supseteq "&#x2287;">
+<!ENTITY nsube "&#x2288;"><!ENTITY NotSubsetEqual "&#x2288;"><!ENTITY nsubseteq "&#x2288;">
+<!ENTITY nsupe "&#x2289;"><!ENTITY NotSupersetEqual "&#x2289;"><!ENTITY nsupseteq "&#x2289;">
+<!ENTITY subne "&#x228A;"><!ENTITY subsetneq "&#x228A;">
+<!ENTITY vsubne "&#x228A;&#xFE00;"><!ENTITY varsubsetneq "&#x228A;&#xFE00;">
+<!ENTITY supne "&#x228B;"><!ENTITY supsetneq "&#x228B;">
+<!ENTITY vsupne "&#x228B;&#xFE00;"><!ENTITY varsupsetneq "&#x228B;&#xFE00;">
+<!ENTITY cupdot "&#x228D;">
+<!ENTITY uplus "&#x228E;"><!ENTITY UnionPlus "&#x228E;">
+<!ENTITY sqsub "&#x228F;"><!ENTITY sqsubset "&#x228F;"><!ENTITY SquareSubset "&#x228F;">
+<!ENTITY NotSquareSubset "&#x228F;&#x338;">
+<!ENTITY sqsup "&#x2290;"><!ENTITY sqsupset "&#x2290;"><!ENTITY SquareSuperset "&#x2290;">
+<!ENTITY NotSquareSuperset "&#x2290;&#x338;">
+<!ENTITY sqsube "&#x2291;"><!ENTITY sqsubseteq "&#x2291;"><!ENTITY SquareSubsetEqual "&#x2291;">
+<!ENTITY sqsupe "&#x2292;"><!ENTITY sqsupseteq "&#x2292;"><!ENTITY SquareSupersetEqual "&#x2292;">
+<!ENTITY sqcap "&#x2293;"><!ENTITY SquareIntersection "&#x2293;">
+<!ENTITY sqcaps "&#x2293;&#xFE00;">
+<!ENTITY sqcup "&#x2294;"><!ENTITY SquareUnion "&#x2294;">
+<!ENTITY sqcups "&#x2294;&#xFE00;">
+<!ENTITY oplus "&#x2295;"><!ENTITY CirclePlus "&#x2295;">
+<!ENTITY ominus "&#x2296;"><!ENTITY CircleMinus "&#x2296;">
+<!ENTITY otimes "&#x2297;"><!ENTITY CircleTimes "&#x2297;">
+<!ENTITY osol "&#x2298;">
+<!ENTITY odot "&#x2299;"><!ENTITY CircleDot "&#x2299;">
+<!ENTITY ocir "&#x229A;"><!ENTITY circledcirc "&#x229A;">
+<!ENTITY oast "&#x229B;"><!ENTITY circledast "&#x229B;">
+<!ENTITY odash "&#x229D;"><!ENTITY circleddash "&#x229D;">
+<!ENTITY plusb "&#x229E;"><!ENTITY boxplus "&#x229E;">
+<!ENTITY minusb "&#x229F;"><!ENTITY boxminus "&#x229F;">
+<!ENTITY timesb "&#x22A0;"><!ENTITY boxtimes "&#x22A0;">
+<!ENTITY sdotb "&#x22A1;"><!ENTITY dotsquare "&#x22A1;">
+<!ENTITY vdash "&#x22A2;"><!ENTITY RightTee "&#x22A2;">
+<!ENTITY dashv "&#x22A3;"><!ENTITY LeftTee "&#x22A3;">
+<!ENTITY top "&#x22A4;"><!ENTITY DownTee "&#x22A4;">
+<!ENTITY perp "&#x22A5;"><!ENTITY bottom "&#x22A5;"><!ENTITY bot "&#x22A5;"><!ENTITY UpTee "&#x22A5;">
+<!ENTITY models "&#x22A7;">
+<!ENTITY vDash "&#x22A8;"><!ENTITY DoubleRightTee "&#x22A8;">
+<!ENTITY Vdash "&#x22A9;">
+<!ENTITY Vvdash "&#x22AA;">
+<!ENTITY VDash "&#x22AB;">
+<!ENTITY nvdash "&#x22AC;">
+<!ENTITY nvDash "&#x22AD;">
+<!ENTITY nVdash "&#x22AE;">
+<!ENTITY nVDash "&#x22AF;">
+<!ENTITY prurel "&#x22B0;">
+<!ENTITY vltri "&#x22B2;"><!ENTITY LeftTriangle "&#x22B2;"><!ENTITY vartriangleleft "&#x22B2;">
+<!ENTITY vrtri "&#x22B3;"><!ENTITY RightTriangle "&#x22B3;"><!ENTITY vartriangleright "&#x22B3;">
+<!ENTITY ltrie "&#x22B4;"><!ENTITY LeftTriangleEqual "&#x22B4;"><!ENTITY trianglelefteq "&#x22B4;">
+<!ENTITY nvltrie "&#x22B4;&#x20D2;">
+<!ENTITY rtrie "&#x22B5;"><!ENTITY RightTriangleEqual "&#x22B5;"><!ENTITY trianglerighteq "&#x22B5;">
+<!ENTITY nvrtrie "&#x22B5;&#x20D2;">
+<!ENTITY origof "&#x22B6;">
+<!ENTITY imof "&#x22B7;">
+<!ENTITY mumap "&#x22B8;"><!ENTITY multimap "&#x22B8;">
+<!ENTITY hercon "&#x22B9;">
+<!ENTITY intcal "&#x22BA;"><!ENTITY intercal "&#x22BA;">
+<!ENTITY veebar "&#x22BB;">
+<!ENTITY barvee "&#x22BD;">
+<!ENTITY angrtvb "&#x22BE;">
+<!ENTITY lrtri "&#x22BF;">
+<!ENTITY xwedge "&#x22C0;"><!ENTITY bigwedge "&#x22C0;"><!ENTITY Wedge "&#x22C0;">
+<!ENTITY xvee "&#x22C1;"><!ENTITY bigvee "&#x22C1;"><!ENTITY Vee "&#x22C1;">
+<!ENTITY xcap "&#x22C2;"><!ENTITY bigcap "&#x22C2;"><!ENTITY Intersection "&#x22C2;">
+<!ENTITY xcup "&#x22C3;"><!ENTITY bigcup "&#x22C3;"><!ENTITY Union "&#x22C3;">
+<!ENTITY diam "&#x22C4;"><!ENTITY Diamond "&#x22C4;"><!ENTITY diamond "&#x22C4;">
+<!ENTITY sdot "&#x22C5;">
+<!ENTITY sstarf "&#x22C6;"><!ENTITY Star "&#x22C6;">
+<!ENTITY divonx "&#x22C7;"><!ENTITY divideontimes "&#x22C7;">
+<!ENTITY bowtie "&#x22C8;">
+<!ENTITY ltimes "&#x22C9;">
+<!ENTITY rtimes "&#x22CA;">
+<!ENTITY lthree "&#x22CB;"><!ENTITY leftthreetimes "&#x22CB;">
+<!ENTITY rthree "&#x22CC;"><!ENTITY rightthreetimes "&#x22CC;">
+<!ENTITY bsime "&#x22CD;"><!ENTITY backsimeq "&#x22CD;">
+<!ENTITY cuvee "&#x22CE;"><!ENTITY curlyvee "&#x22CE;">
+<!ENTITY cuwed "&#x22CF;"><!ENTITY curlywedge "&#x22CF;">
+<!ENTITY Sub "&#x22D0;"><!ENTITY Subset "&#x22D0;">
+<!ENTITY Sup "&#x22D1;"><!ENTITY Supset "&#x22D1;">
+<!ENTITY Cap "&#x22D2;">
+<!ENTITY Cup "&#x22D3;">
+<!ENTITY fork "&#x22D4;"><!ENTITY pitchfork "&#x22D4;">
+<!ENTITY epar "&#x22D5;">
+<!ENTITY ltdot "&#x22D6;"><!ENTITY lessdot "&#x22D6;">
+<!ENTITY gtdot "&#x22D7;"><!ENTITY gtrdot "&#x22D7;">
+<!ENTITY Ll "&#x22D8;">
+<!ENTITY nLl "&#x22D8;&#x338;">
+<!ENTITY Gg "&#x22D9;"><!ENTITY ggg "&#x22D9;">
+<!ENTITY nGg "&#x22D9;&#x338;">
+<!ENTITY leg "&#x22DA;"><!ENTITY lesseqgtr "&#x22DA;"><!ENTITY LessEqualGreater "&#x22DA;">
+<!ENTITY lesg "&#x22DA;&#xFE00;">
+<!ENTITY gel "&#x22DB;"><!ENTITY GreaterEqualLess "&#x22DB;"><!ENTITY gtreqless "&#x22DB;">
+<!ENTITY gesl "&#x22DB;&#xFE00;">
+<!ENTITY cuepr "&#x22DE;"><!ENTITY curlyeqprec "&#x22DE;">
+<!ENTITY cuesc "&#x22DF;"><!ENTITY curlyeqsucc "&#x22DF;">
+<!ENTITY nprcue "&#x22E0;"><!ENTITY NotPrecedesSlantEqual "&#x22E0;">
+<!ENTITY nsccue "&#x22E1;"><!ENTITY NotSucceedsSlantEqual "&#x22E1;">
+<!ENTITY nsqsube "&#x22E2;"><!ENTITY NotSquareSubsetEqual "&#x22E2;">
+<!ENTITY nsqsupe "&#x22E3;"><!ENTITY NotSquareSupersetEqual "&#x22E3;">
+<!ENTITY lnsim "&#x22E6;">
+<!ENTITY gnsim "&#x22E7;">
+<!ENTITY prnsim "&#x22E8;"><!ENTITY precnsim "&#x22E8;">
+<!ENTITY scnsim "&#x22E9;"><!ENTITY succnsim "&#x22E9;">
+<!ENTITY nltri "&#x22EA;"><!ENTITY NotLeftTriangle "&#x22EA;"><!ENTITY ntriangleleft "&#x22EA;">
+<!ENTITY nrtri "&#x22EB;"><!ENTITY NotRightTriangle "&#x22EB;"><!ENTITY ntriangleright "&#x22EB;">
+<!ENTITY nltrie "&#x22EC;"><!ENTITY NotLeftTriangleEqual "&#x22EC;"><!ENTITY ntrianglelefteq "&#x22EC;">
+<!ENTITY nrtrie "&#x22ED;"><!ENTITY NotRightTriangleEqual "&#x22ED;"><!ENTITY ntrianglerighteq "&#x22ED;">
+<!ENTITY vellip "&#x22EE;">
+<!ENTITY ctdot "&#x22EF;">
+<!ENTITY utdot "&#x22F0;">
+<!ENTITY dtdot "&#x22F1;">
+<!ENTITY disin "&#x22F2;">
+<!ENTITY isinsv "&#x22F3;">
+<!ENTITY isins "&#x22F4;">
+<!ENTITY isindot "&#x22F5;">
+<!ENTITY notindot "&#x22F5;&#x338;">
+<!ENTITY notinvc "&#x22F6;">
+<!ENTITY notinvb "&#x22F7;">
+<!ENTITY isinE "&#x22F9;">
+<!ENTITY notinE "&#x22F9;&#x338;">
+<!ENTITY nisd "&#x22FA;">
+<!ENTITY xnis "&#x22FB;">
+<!ENTITY nis "&#x22FC;">
+<!ENTITY notnivc "&#x22FD;">
+<!ENTITY notnivb "&#x22FE;">
+<!ENTITY barwed "&#x2305;"><!ENTITY barwedge "&#x2305;">
+<!ENTITY Barwed "&#x2306;"><!ENTITY doublebarwedge "&#x2306;">
+<!ENTITY lceil "&#x2308;"><!ENTITY LeftCeiling "&#x2308;">
+<!ENTITY rceil "&#x2309;"><!ENTITY RightCeiling "&#x2309;">
+<!ENTITY lfloor "&#x230A;"><!ENTITY LeftFloor "&#x230A;">
+<!ENTITY rfloor "&#x230B;"><!ENTITY RightFloor "&#x230B;">
+<!ENTITY drcrop "&#x230C;">
+<!ENTITY dlcrop "&#x230D;">
+<!ENTITY urcrop "&#x230E;">
+<!ENTITY ulcrop "&#x230F;">
+<!ENTITY bnot "&#x2310;">
+<!ENTITY profline "&#x2312;">
+<!ENTITY profsurf "&#x2313;">
+<!ENTITY telrec "&#x2315;">
+<!ENTITY target "&#x2316;">
+<!ENTITY ulcorn "&#x231C;"><!ENTITY ulcorner "&#x231C;">
+<!ENTITY urcorn "&#x231D;"><!ENTITY urcorner "&#x231D;">
+<!ENTITY dlcorn "&#x231E;"><!ENTITY llcorner "&#x231E;">
+<!ENTITY drcorn "&#x231F;"><!ENTITY lrcorner "&#x231F;">
+<!ENTITY frown "&#x2322;"><!ENTITY sfrown "&#x2322;">
+<!ENTITY smile "&#x2323;"><!ENTITY ssmile "&#x2323;">
+<!ENTITY cylcty "&#x232D;">
+<!ENTITY profalar "&#x232E;">
+<!ENTITY topbot "&#x2336;">
+<!ENTITY ovbar "&#x233D;">
+<!ENTITY solbar "&#x233F;">
+<!ENTITY angzarr "&#x237C;">
+<!ENTITY lmoust "&#x23B0;"><!ENTITY lmoustache "&#x23B0;">
+<!ENTITY rmoust "&#x23B1;"><!ENTITY rmoustache "&#x23B1;">
+<!ENTITY tbrk "&#x23B4;"><!ENTITY OverBracket "&#x23B4;">
+<!ENTITY bbrk "&#x23B5;"><!ENTITY UnderBracket "&#x23B5;">
+<!ENTITY bbrktbrk "&#x23B6;">
+<!ENTITY blank "&#x2423;">
+<!ENTITY oS "&#x24C8;"><!ENTITY circledS "&#x24C8;">
+<!ENTITY boxh "&#x2500;"><!ENTITY HorizontalLine "&#x2500;">
+<!ENTITY boxv "&#x2502;">
+<!ENTITY boxdr "&#x250C;">
+<!ENTITY boxdl "&#x2510;">
+<!ENTITY boxur "&#x2514;">
+<!ENTITY boxul "&#x2518;">
+<!ENTITY boxvr "&#x251C;">
+<!ENTITY boxvl "&#x2524;">
+<!ENTITY boxhd "&#x252C;">
+<!ENTITY boxhu "&#x2534;">
+<!ENTITY boxvh "&#x253C;">
+<!ENTITY boxH "&#x2550;">
+<!ENTITY boxV "&#x2551;">
+<!ENTITY boxdR "&#x2552;">
+<!ENTITY boxDr "&#x2553;">
+<!ENTITY boxDR "&#x2554;">
+<!ENTITY boxdL "&#x2555;">
+<!ENTITY boxDl "&#x2556;">
+<!ENTITY boxDL "&#x2557;">
+<!ENTITY boxuR "&#x2558;">
+<!ENTITY boxUr "&#x2559;">
+<!ENTITY boxUR "&#x255A;">
+<!ENTITY boxuL "&#x255B;">
+<!ENTITY boxUl "&#x255C;">
+<!ENTITY boxUL "&#x255D;">
+<!ENTITY boxvR "&#x255E;">
+<!ENTITY boxVr "&#x255F;">
+<!ENTITY boxVR "&#x2560;">
+<!ENTITY boxvL "&#x2561;">
+<!ENTITY boxVl "&#x2562;">
+<!ENTITY boxVL "&#x2563;">
+<!ENTITY boxHd "&#x2564;">
+<!ENTITY boxhD "&#x2565;">
+<!ENTITY boxHD "&#x2566;">
+<!ENTITY boxHu "&#x2567;">
+<!ENTITY boxhU "&#x2568;">
+<!ENTITY boxHU "&#x2569;">
+<!ENTITY boxvH "&#x256A;">
+<!ENTITY boxVh "&#x256B;">
+<!ENTITY boxVH "&#x256C;">
+<!ENTITY uhblk "&#x2580;">
+<!ENTITY lhblk "&#x2584;">
+<!ENTITY block "&#x2588;">
+<!ENTITY blk14 "&#x2591;">
+<!ENTITY blk12 "&#x2592;">
+<!ENTITY blk34 "&#x2593;">
+<!ENTITY square "&#x25A1;"><!ENTITY squ "&#x25A1;"><!ENTITY Square "&#x25A1;">
+<!ENTITY squarf "&#x25AA;"><!ENTITY squf "&#x25AA;"><!ENTITY FilledVerySmallSquare "&#x25AA;"><!ENTITY blacksquare "&#x25AA;">
+<!ENTITY EmptyVerySmallSquare "&#x25AB;">
+<!ENTITY rect "&#x25AD;">
+<!ENTITY marker "&#x25AE;">
+<!ENTITY fltns "&#x25B1;">
+<!ENTITY xutri "&#x25B3;"><!ENTITY bigtriangleup "&#x25B3;">
+<!ENTITY utrif "&#x25B4;"><!ENTITY blacktriangle "&#x25B4;">
+<!ENTITY utri "&#x25B5;"><!ENTITY triangle "&#x25B5;">
+<!ENTITY rtrif "&#x25B8;"><!ENTITY blacktriangleright "&#x25B8;">
+<!ENTITY rtri "&#x25B9;"><!ENTITY triangleright "&#x25B9;">
+<!ENTITY xdtri "&#x25BD;"><!ENTITY bigtriangledown "&#x25BD;">
+<!ENTITY dtrif "&#x25BE;"><!ENTITY blacktriangledown "&#x25BE;">
+<!ENTITY dtri "&#x25BF;"><!ENTITY triangledown "&#x25BF;">
+<!ENTITY ltrif "&#x25C2;"><!ENTITY blacktriangleleft "&#x25C2;">
+<!ENTITY ltri "&#x25C3;"><!ENTITY triangleleft "&#x25C3;">
+<!ENTITY loz "&#x25CA;"><!ENTITY lozenge "&#x25CA;">
+<!ENTITY cir "&#x25CB;">
+<!ENTITY tridot "&#x25EC;">
+<!ENTITY xcirc "&#x25EF;"><!ENTITY bigcirc "&#x25EF;">
+<!ENTITY ultri "&#x25F8;">
+<!ENTITY urtri "&#x25F9;">
+<!ENTITY lltri "&#x25FA;">
+<!ENTITY EmptySmallSquare "&#x25FB;">
+<!ENTITY FilledSmallSquare "&#x25FC;">
+<!ENTITY starf "&#x2605;"><!ENTITY bigstar "&#x2605;">
+<!ENTITY star "&#x2606;">
+<!ENTITY phone "&#x260E;">
+<!ENTITY female "&#x2640;">
+<!ENTITY male "&#x2642;">
+<!ENTITY spades "&#x2660;"><!ENTITY spadesuit "&#x2660;">
+<!ENTITY clubs "&#x2663;"><!ENTITY clubsuit "&#x2663;">
+<!ENTITY hearts "&#x2665;"><!ENTITY heartsuit "&#x2665;">
+<!ENTITY diams "&#x2666;"><!ENTITY diamondsuit "&#x2666;">
+<!ENTITY sung "&#x266A;">
+<!ENTITY flat "&#x266D;">
+<!ENTITY natur "&#x266E;"><!ENTITY natural "&#x266E;">
+<!ENTITY sharp "&#x266F;">
+<!ENTITY check "&#x2713;"><!ENTITY checkmark "&#x2713;">
+<!ENTITY cross "&#x2717;">
+<!ENTITY malt "&#x2720;"><!ENTITY maltese "&#x2720;">
+<!ENTITY sext "&#x2736;">
+<!ENTITY VerticalSeparator "&#x2758;">
+<!ENTITY xlarr "&#x27F5;"><!ENTITY LongLeftArrow "&#x27F5;"><!ENTITY longleftarrow "&#x27F5;">
+<!ENTITY xrarr "&#x27F6;"><!ENTITY LongRightArrow "&#x27F6;"><!ENTITY longrightarrow "&#x27F6;">
+<!ENTITY xharr "&#x27F7;"><!ENTITY LongLeftRightArrow "&#x27F7;"><!ENTITY longleftrightarrow "&#x27F7;">
+<!ENTITY xlArr "&#x27F8;"><!ENTITY DoubleLongLeftArrow "&#x27F8;"><!ENTITY Longleftarrow "&#x27F8;">
+<!ENTITY xrArr "&#x27F9;"><!ENTITY DoubleLongRightArrow "&#x27F9;"><!ENTITY Longrightarrow "&#x27F9;">
+<!ENTITY xhArr "&#x27FA;"><!ENTITY DoubleLongLeftRightArrow "&#x27FA;"><!ENTITY Longleftrightarrow "&#x27FA;">
+<!ENTITY xmap "&#x27FC;"><!ENTITY longmapsto "&#x27FC;">
+<!ENTITY dzigrarr "&#x27FF;">
+<!ENTITY nvlArr "&#x2902;">
+<!ENTITY nvrArr "&#x2903;">
+<!ENTITY nvHarr "&#x2904;">
+<!ENTITY Map "&#x2905;">
+<!ENTITY lbarr "&#x290C;">
+<!ENTITY rbarr "&#x290D;"><!ENTITY bkarow "&#x290D;">
+<!ENTITY lBarr "&#x290E;">
+<!ENTITY rBarr "&#x290F;"><!ENTITY dbkarow "&#x290F;">
+<!ENTITY RBarr "&#x2910;"><!ENTITY drbkarow "&#x2910;">
+<!ENTITY DDotrahd "&#x2911;">
+<!ENTITY UpArrowBar "&#x2912;">
+<!ENTITY DownArrowBar "&#x2913;">
+<!ENTITY Rarrtl "&#x2916;">
+<!ENTITY latail "&#x2919;">
+<!ENTITY ratail "&#x291A;">
+<!ENTITY lAtail "&#x291B;">
+<!ENTITY rAtail "&#x291C;">
+<!ENTITY larrfs "&#x291D;">
+<!ENTITY rarrfs "&#x291E;">
+<!ENTITY larrbfs "&#x291F;">
+<!ENTITY rarrbfs "&#x2920;">
+<!ENTITY nwarhk "&#x2923;">
+<!ENTITY nearhk "&#x2924;">
+<!ENTITY searhk "&#x2925;"><!ENTITY hksearow "&#x2925;">
+<!ENTITY swarhk "&#x2926;"><!ENTITY hkswarow "&#x2926;">
+<!ENTITY nwnear "&#x2927;">
+<!ENTITY nesear "&#x2928;"><!ENTITY toea "&#x2928;">
+<!ENTITY seswar "&#x2929;"><!ENTITY tosa "&#x2929;">
+<!ENTITY swnwar "&#x292A;">
+<!ENTITY rarrc "&#x2933;">
+<!ENTITY nrarrc "&#x2933;&#x338;">
+<!ENTITY cudarrr "&#x2935;">
+<!ENTITY ldca "&#x2936;">
+<!ENTITY rdca "&#x2937;">
+<!ENTITY cudarrl "&#x2938;">
+<!ENTITY larrpl "&#x2939;">
+<!ENTITY curarrm "&#x293C;">
+<!ENTITY cularrp "&#x293D;">
+<!ENTITY rarrpl "&#x2945;">
+<!ENTITY harrcir "&#x2948;">
+<!ENTITY Uarrocir "&#x2949;">
+<!ENTITY lurdshar "&#x294A;">
+<!ENTITY ldrushar "&#x294B;">
+<!ENTITY LeftRightVector "&#x294E;">
+<!ENTITY RightUpDownVector "&#x294F;">
+<!ENTITY DownLeftRightVector "&#x2950;">
+<!ENTITY LeftUpDownVector "&#x2951;">
+<!ENTITY LeftVectorBar "&#x2952;">
+<!ENTITY RightVectorBar "&#x2953;">
+<!ENTITY RightUpVectorBar "&#x2954;">
+<!ENTITY RightDownVectorBar "&#x2955;">
+<!ENTITY DownLeftVectorBar "&#x2956;">
+<!ENTITY DownRightVectorBar "&#x2957;">
+<!ENTITY LeftUpVectorBar "&#x2958;">
+<!ENTITY LeftDownVectorBar "&#x2959;">
+<!ENTITY LeftTeeVector "&#x295A;">
+<!ENTITY RightTeeVector "&#x295B;">
+<!ENTITY RightUpTeeVector "&#x295C;">
+<!ENTITY RightDownTeeVector "&#x295D;">
+<!ENTITY DownLeftTeeVector "&#x295E;">
+<!ENTITY DownRightTeeVector "&#x295F;">
+<!ENTITY LeftUpTeeVector "&#x2960;">
+<!ENTITY LeftDownTeeVector "&#x2961;">
+<!ENTITY lHar "&#x2962;">
+<!ENTITY uHar "&#x2963;">
+<!ENTITY rHar "&#x2964;">
+<!ENTITY dHar "&#x2965;">
+<!ENTITY luruhar "&#x2966;">
+<!ENTITY ldrdhar "&#x2967;">
+<!ENTITY ruluhar "&#x2968;">
+<!ENTITY rdldhar "&#x2969;">
+<!ENTITY lharul "&#x296A;">
+<!ENTITY llhard "&#x296B;">
+<!ENTITY rharul "&#x296C;">
+<!ENTITY lrhard "&#x296D;">
+<!ENTITY udhar "&#x296E;"><!ENTITY UpEquilibrium "&#x296E;">
+<!ENTITY duhar "&#x296F;"><!ENTITY ReverseUpEquilibrium "&#x296F;">
+<!ENTITY RoundImplies "&#x2970;">
+<!ENTITY erarr "&#x2971;">
+<!ENTITY simrarr "&#x2972;">
+<!ENTITY larrsim "&#x2973;">
+<!ENTITY rarrsim "&#x2974;">
+<!ENTITY rarrap "&#x2975;">
+<!ENTITY ltlarr "&#x2976;">
+<!ENTITY gtrarr "&#x2978;">
+<!ENTITY subrarr "&#x2979;">
+<!ENTITY suplarr "&#x297B;">
+<!ENTITY lfisht "&#x297C;">
+<!ENTITY rfisht "&#x297D;">
+<!ENTITY ufisht "&#x297E;">
+<!ENTITY dfisht "&#x297F;">
+<!ENTITY lopar "&#x2985;">
+<!ENTITY ropar "&#x2986;">
+<!ENTITY lbrke "&#x298B;">
+<!ENTITY rbrke "&#x298C;">
+<!ENTITY lbrkslu "&#x298D;">
+<!ENTITY rbrksld "&#x298E;">
+<!ENTITY lbrksld "&#x298F;">
+<!ENTITY rbrkslu "&#x2990;">
+<!ENTITY langd "&#x2991;">
+<!ENTITY rangd "&#x2992;">
+<!ENTITY lparlt "&#x2993;">
+<!ENTITY rpargt "&#x2994;">
+<!ENTITY gtlPar "&#x2995;">
+<!ENTITY ltrPar "&#x2996;">
+<!ENTITY vzigzag "&#x299A;">
+<!ENTITY vangrt "&#x299C;">
+<!ENTITY angrtvbd "&#x299D;">
+<!ENTITY ange "&#x29A4;">
+<!ENTITY range "&#x29A5;">
+<!ENTITY dwangle "&#x29A6;">
+<!ENTITY uwangle "&#x29A7;">
+<!ENTITY angmsdaa "&#x29A8;">
+<!ENTITY angmsdab "&#x29A9;">
+<!ENTITY angmsdac "&#x29AA;">
+<!ENTITY angmsdad "&#x29AB;">
+<!ENTITY angmsdae "&#x29AC;">
+<!ENTITY angmsdaf "&#x29AD;">
+<!ENTITY angmsdag "&#x29AE;">
+<!ENTITY angmsdah "&#x29AF;">
+<!ENTITY bemptyv "&#x29B0;">
+<!ENTITY demptyv "&#x29B1;">
+<!ENTITY cemptyv "&#x29B2;">
+<!ENTITY raemptyv "&#x29B3;">
+<!ENTITY laemptyv "&#x29B4;">
+<!ENTITY ohbar "&#x29B5;">
+<!ENTITY omid "&#x29B6;">
+<!ENTITY opar "&#x29B7;">
+<!ENTITY operp "&#x29B9;">
+<!ENTITY olcross "&#x29BB;">
+<!ENTITY odsold "&#x29BC;">
+<!ENTITY olcir "&#x29BE;">
+<!ENTITY ofcir "&#x29BF;">
+<!ENTITY olt "&#x29C0;">
+<!ENTITY ogt "&#x29C1;">
+<!ENTITY cirscir "&#x29C2;">
+<!ENTITY cirE "&#x29C3;">
+<!ENTITY solb "&#x29C4;">
+<!ENTITY bsolb "&#x29C5;">
+<!ENTITY boxbox "&#x29C9;">
+<!ENTITY trisb "&#x29CD;">
+<!ENTITY rtriltri "&#x29CE;">
+<!ENTITY LeftTriangleBar "&#x29CF;">
+<!ENTITY NotLeftTriangleBar "&#x29CF;&#x338;">
+<!ENTITY RightTriangleBar "&#x29D0;">
+<!ENTITY NotRightTriangleBar "&#x29D0;&#x338;">
+<!ENTITY race "&#x29DA;">
+<!ENTITY iinfin "&#x29DC;">
+<!ENTITY infintie "&#x29DD;">
+<!ENTITY nvinfin "&#x29DE;">
+<!ENTITY eparsl "&#x29E3;">
+<!ENTITY smeparsl "&#x29E4;">
+<!ENTITY eqvparsl "&#x29E5;">
+<!ENTITY lozf "&#x29EB;"><!ENTITY blacklozenge "&#x29EB;">
+<!ENTITY RuleDelayed "&#x29F4;">
+<!ENTITY dsol "&#x29F6;">
+<!ENTITY xodot "&#x2A00;"><!ENTITY bigodot "&#x2A00;">
+<!ENTITY xoplus "&#x2A01;"><!ENTITY bigoplus "&#x2A01;">
+<!ENTITY xotime "&#x2A02;"><!ENTITY bigotimes "&#x2A02;">
+<!ENTITY xuplus "&#x2A04;"><!ENTITY biguplus "&#x2A04;">
+<!ENTITY xsqcup "&#x2A06;"><!ENTITY bigsqcup "&#x2A06;">
+<!ENTITY qint "&#x2A0C;"><!ENTITY iiiint "&#x2A0C;">
+<!ENTITY fpartint "&#x2A0D;">
+<!ENTITY cirfnint "&#x2A10;">
+<!ENTITY awint "&#x2A11;">
+<!ENTITY rppolint "&#x2A12;">
+<!ENTITY scpolint "&#x2A13;">
+<!ENTITY npolint "&#x2A14;">
+<!ENTITY pointint "&#x2A15;">
+<!ENTITY quatint "&#x2A16;">
+<!ENTITY intlarhk "&#x2A17;">
+<!ENTITY pluscir "&#x2A22;">
+<!ENTITY plusacir "&#x2A23;">
+<!ENTITY simplus "&#x2A24;">
+<!ENTITY plusdu "&#x2A25;">
+<!ENTITY plussim "&#x2A26;">
+<!ENTITY plustwo "&#x2A27;">
+<!ENTITY mcomma "&#x2A29;">
+<!ENTITY minusdu "&#x2A2A;">
+<!ENTITY loplus "&#x2A2D;">
+<!ENTITY roplus "&#x2A2E;">
+<!ENTITY Cross "&#x2A2F;">
+<!ENTITY timesd "&#x2A30;">
+<!ENTITY timesbar "&#x2A31;">
+<!ENTITY smashp "&#x2A33;">
+<!ENTITY lotimes "&#x2A34;">
+<!ENTITY rotimes "&#x2A35;">
+<!ENTITY otimesas "&#x2A36;">
+<!ENTITY Otimes "&#x2A37;">
+<!ENTITY odiv "&#x2A38;">
+<!ENTITY triplus "&#x2A39;">
+<!ENTITY triminus "&#x2A3A;">
+<!ENTITY tritime "&#x2A3B;">
+<!ENTITY iprod "&#x2A3C;"><!ENTITY intprod "&#x2A3C;">
+<!ENTITY amalg "&#x2A3F;">
+<!ENTITY capdot "&#x2A40;">
+<!ENTITY ncup "&#x2A42;">
+<!ENTITY ncap "&#x2A43;">
+<!ENTITY capand "&#x2A44;">
+<!ENTITY cupor "&#x2A45;">
+<!ENTITY cupcap "&#x2A46;">
+<!ENTITY capcup "&#x2A47;">
+<!ENTITY cupbrcap "&#x2A48;">
+<!ENTITY capbrcup "&#x2A49;">
+<!ENTITY cupcup "&#x2A4A;">
+<!ENTITY capcap "&#x2A4B;">
+<!ENTITY ccups "&#x2A4C;">
+<!ENTITY ccaps "&#x2A4D;">
+<!ENTITY ccupssm "&#x2A50;">
+<!ENTITY And "&#x2A53;">
+<!ENTITY Or "&#x2A54;">
+<!ENTITY andand "&#x2A55;">
+<!ENTITY oror "&#x2A56;">
+<!ENTITY orslope "&#x2A57;">
+<!ENTITY andslope "&#x2A58;">
+<!ENTITY andv "&#x2A5A;">
+<!ENTITY orv "&#x2A5B;">
+<!ENTITY andd "&#x2A5C;">
+<!ENTITY ord "&#x2A5D;">
+<!ENTITY wedbar "&#x2A5F;">
+<!ENTITY sdote "&#x2A66;">
+<!ENTITY simdot "&#x2A6A;">
+<!ENTITY congdot "&#x2A6D;">
+<!ENTITY ncongdot "&#x2A6D;&#x338;">
+<!ENTITY easter "&#x2A6E;">
+<!ENTITY apacir "&#x2A6F;">
+<!ENTITY apE "&#x2A70;">
+<!ENTITY napE "&#x2A70;&#x338;">
+<!ENTITY eplus "&#x2A71;">
+<!ENTITY pluse "&#x2A72;">
+<!ENTITY Esim "&#x2A73;">
+<!ENTITY Colone "&#x2A74;">
+<!ENTITY Equal "&#x2A75;">
+<!ENTITY eDDot "&#x2A77;"><!ENTITY ddotseq "&#x2A77;">
+<!ENTITY equivDD "&#x2A78;">
+<!ENTITY ltcir "&#x2A79;">
+<!ENTITY gtcir "&#x2A7A;">
+<!ENTITY ltquest "&#x2A7B;">
+<!ENTITY gtquest "&#x2A7C;">
+<!ENTITY les "&#x2A7D;"><!ENTITY leqslant "&#x2A7D;"><!ENTITY LessSlantEqual "&#x2A7D;">
+<!ENTITY nles "&#x2A7D;&#x338;"><!ENTITY nleqslant "&#x2A7D;&#x338;"><!ENTITY NotLessSlantEqual "&#x2A7D;&#x338;">
+<!ENTITY ges "&#x2A7E;"><!ENTITY geqslant "&#x2A7E;"><!ENTITY GreaterSlantEqual "&#x2A7E;">
+<!ENTITY nges "&#x2A7E;&#x338;"><!ENTITY ngeqslant "&#x2A7E;&#x338;"><!ENTITY NotGreaterSlantEqual "&#x2A7E;&#x338;">
+<!ENTITY lesdot "&#x2A7F;">
+<!ENTITY gesdot "&#x2A80;">
+<!ENTITY lesdoto "&#x2A81;">
+<!ENTITY gesdoto "&#x2A82;">
+<!ENTITY lesdotor "&#x2A83;">
+<!ENTITY gesdotol "&#x2A84;">
+<!ENTITY lap "&#x2A85;"><!ENTITY lessapprox "&#x2A85;">
+<!ENTITY gap "&#x2A86;"><!ENTITY gtrapprox "&#x2A86;">
+<!ENTITY lne "&#x2A87;"><!ENTITY lneq "&#x2A87;">
+<!ENTITY gne "&#x2A88;"><!ENTITY gneq "&#x2A88;">
+<!ENTITY lnap "&#x2A89;"><!ENTITY lnapprox "&#x2A89;">
+<!ENTITY gnap "&#x2A8A;"><!ENTITY gnapprox "&#x2A8A;">
+<!ENTITY lEg "&#x2A8B;"><!ENTITY lesseqqgtr "&#x2A8B;">
+<!ENTITY gEl "&#x2A8C;"><!ENTITY gtreqqless "&#x2A8C;">
+<!ENTITY lsime "&#x2A8D;">
+<!ENTITY gsime "&#x2A8E;">
+<!ENTITY lsimg "&#x2A8F;">
+<!ENTITY gsiml "&#x2A90;">
+<!ENTITY lgE "&#x2A91;">
+<!ENTITY glE "&#x2A92;">
+<!ENTITY lesges "&#x2A93;">
+<!ENTITY gesles "&#x2A94;">
+<!ENTITY els "&#x2A95;"><!ENTITY eqslantless "&#x2A95;">
+<!ENTITY egs "&#x2A96;"><!ENTITY eqslantgtr "&#x2A96;">
+<!ENTITY elsdot "&#x2A97;">
+<!ENTITY egsdot "&#x2A98;">
+<!ENTITY el "&#x2A99;">
+<!ENTITY eg "&#x2A9A;">
+<!ENTITY siml "&#x2A9D;">
+<!ENTITY simg "&#x2A9E;">
+<!ENTITY simlE "&#x2A9F;">
+<!ENTITY simgE "&#x2AA0;">
+<!ENTITY LessLess "&#x2AA1;">
+<!ENTITY NotNestedLessLess "&#x2AA1;&#x338;">
+<!ENTITY GreaterGreater "&#x2AA2;">
+<!ENTITY NotNestedGreaterGreater "&#x2AA2;&#x338;">
+<!ENTITY glj "&#x2AA4;">
+<!ENTITY gla "&#x2AA5;">
+<!ENTITY ltcc "&#x2AA6;">
+<!ENTITY gtcc "&#x2AA7;">
+<!ENTITY lescc "&#x2AA8;">
+<!ENTITY gescc "&#x2AA9;">
+<!ENTITY smt "&#x2AAA;">
+<!ENTITY lat "&#x2AAB;">
+<!ENTITY smte "&#x2AAC;">
+<!ENTITY smtes "&#x2AAC;&#xFE00;">
+<!ENTITY late "&#x2AAD;">
+<!ENTITY lates "&#x2AAD;&#xFE00;">
+<!ENTITY bumpE "&#x2AAE;">
+<!ENTITY pre "&#x2AAF;"><!ENTITY PrecedesEqual "&#x2AAF;"><!ENTITY preceq "&#x2AAF;">
+<!ENTITY npre "&#x2AAF;&#x338;"><!ENTITY NotPrecedesEqual "&#x2AAF;&#x338;"><!ENTITY npreceq "&#x2AAF;&#x338;">
+<!ENTITY sce "&#x2AB0;"><!ENTITY SucceedsEqual "&#x2AB0;"><!ENTITY succeq "&#x2AB0;">
+<!ENTITY nsce "&#x2AB0;&#x338;"><!ENTITY NotSucceedsEqual "&#x2AB0;&#x338;"><!ENTITY nsucceq "&#x2AB0;&#x338;">
+<!ENTITY prE "&#x2AB3;">
+<!ENTITY scE "&#x2AB4;">
+<!ENTITY prnE "&#x2AB5;"><!ENTITY precneqq "&#x2AB5;">
+<!ENTITY scnE "&#x2AB6;"><!ENTITY succneqq "&#x2AB6;">
+<!ENTITY prap "&#x2AB7;"><!ENTITY precapprox "&#x2AB7;">
+<!ENTITY scap "&#x2AB8;"><!ENTITY succapprox "&#x2AB8;">
+<!ENTITY prnap "&#x2AB9;"><!ENTITY precnapprox "&#x2AB9;">
+<!ENTITY scnap "&#x2ABA;"><!ENTITY succnapprox "&#x2ABA;">
+<!ENTITY Pr "&#x2ABB;">
+<!ENTITY Sc "&#x2ABC;">
+<!ENTITY subdot "&#x2ABD;">
+<!ENTITY supdot "&#x2ABE;">
+<!ENTITY subplus "&#x2ABF;">
+<!ENTITY supplus "&#x2AC0;">
+<!ENTITY submult "&#x2AC1;">
+<!ENTITY supmult "&#x2AC2;">
+<!ENTITY subedot "&#x2AC3;">
+<!ENTITY supedot "&#x2AC4;">
+<!ENTITY subE "&#x2AC5;"><!ENTITY subseteqq "&#x2AC5;">
+<!ENTITY nsubE "&#x2AC5;&#x338;"><!ENTITY nsubseteqq "&#x2AC5;&#x338;">
+<!ENTITY supE "&#x2AC6;"><!ENTITY supseteqq "&#x2AC6;">
+<!ENTITY nsupE "&#x2AC6;&#x338;"><!ENTITY nsupseteqq "&#x2AC6;&#x338;">
+<!ENTITY subsim "&#x2AC7;">
+<!ENTITY supsim "&#x2AC8;">
+<!ENTITY subnE "&#x2ACB;"><!ENTITY subsetneqq "&#x2ACB;">
+<!ENTITY vsubnE "&#x2ACB;&#xFE00;"><!ENTITY varsubsetneqq "&#x2ACB;&#xFE00;">
+<!ENTITY supnE "&#x2ACC;"><!ENTITY supsetneqq "&#x2ACC;">
+<!ENTITY vsupnE "&#x2ACC;&#xFE00;"><!ENTITY varsupsetneqq "&#x2ACC;&#xFE00;">
+<!ENTITY csub "&#x2ACF;">
+<!ENTITY csup "&#x2AD0;">
+<!ENTITY csube "&#x2AD1;">
+<!ENTITY csupe "&#x2AD2;">
+<!ENTITY subsup "&#x2AD3;">
+<!ENTITY supsub "&#x2AD4;">
+<!ENTITY subsub "&#x2AD5;">
+<!ENTITY supsup "&#x2AD6;">
+<!ENTITY suphsub "&#x2AD7;">
+<!ENTITY supdsub "&#x2AD8;">
+<!ENTITY forkv "&#x2AD9;">
+<!ENTITY topfork "&#x2ADA;">
+<!ENTITY mlcp "&#x2ADB;">
+<!ENTITY Dashv "&#x2AE4;"><!ENTITY DoubleLeftTee "&#x2AE4;">
+<!ENTITY Vdashl "&#x2AE6;">
+<!ENTITY Barv "&#x2AE7;">
+<!ENTITY vBar "&#x2AE8;">
+<!ENTITY vBarv "&#x2AE9;">
+<!ENTITY Vbar "&#x2AEB;">
+<!ENTITY Not "&#x2AEC;">
+<!ENTITY bNot "&#x2AED;">
+<!ENTITY rnmid "&#x2AEE;">
+<!ENTITY cirmid "&#x2AEF;">
+<!ENTITY midcir "&#x2AF0;">
+<!ENTITY topcir "&#x2AF1;">
+<!ENTITY nhpar "&#x2AF2;">
+<!ENTITY parsim "&#x2AF3;">
+<!ENTITY parsl "&#x2AFD;">
+<!ENTITY nparsl "&#x2AFD;&#x20E5;">
+<!ENTITY fflig "&#xFB00;">
+<!ENTITY filig "&#xFB01;">
+<!ENTITY fllig "&#xFB02;">
+<!ENTITY ffilig "&#xFB03;">
+<!ENTITY ffllig "&#xFB04;">
+<!ENTITY Ascr "&#x1D49C;">
+<!ENTITY Cscr "&#x1D49E;">
+<!ENTITY Dscr "&#x1D49F;">
+<!ENTITY Gscr "&#x1D4A2;">
+<!ENTITY Jscr "&#x1D4A5;">
+<!ENTITY Kscr "&#x1D4A6;">
+<!ENTITY Nscr "&#x1D4A9;">
+<!ENTITY Oscr "&#x1D4AA;">
+<!ENTITY Pscr "&#x1D4AB;">
+<!ENTITY Qscr "&#x1D4AC;">
+<!ENTITY Sscr "&#x1D4AE;">
+<!ENTITY Tscr "&#x1D4AF;">
+<!ENTITY Uscr "&#x1D4B0;">
+<!ENTITY Vscr "&#x1D4B1;">
+<!ENTITY Wscr "&#x1D4B2;">
+<!ENTITY Xscr "&#x1D4B3;">
+<!ENTITY Yscr "&#x1D4B4;">
+<!ENTITY Zscr "&#x1D4B5;">
+<!ENTITY ascr "&#x1D4B6;">
+<!ENTITY bscr "&#x1D4B7;">
+<!ENTITY cscr "&#x1D4B8;">
+<!ENTITY dscr "&#x1D4B9;">
+<!ENTITY fscr "&#x1D4BB;">
+<!ENTITY hscr "&#x1D4BD;">
+<!ENTITY iscr "&#x1D4BE;">
+<!ENTITY jscr "&#x1D4BF;">
+<!ENTITY kscr "&#x1D4C0;">
+<!ENTITY lscr "&#x1D4C1;">
+<!ENTITY mscr "&#x1D4C2;">
+<!ENTITY nscr "&#x1D4C3;">
+<!ENTITY pscr "&#x1D4C5;">
+<!ENTITY qscr "&#x1D4C6;">
+<!ENTITY rscr "&#x1D4C7;">
+<!ENTITY sscr "&#x1D4C8;">
+<!ENTITY tscr "&#x1D4C9;">
+<!ENTITY uscr "&#x1D4CA;">
+<!ENTITY vscr "&#x1D4CB;">
+<!ENTITY wscr "&#x1D4CC;">
+<!ENTITY xscr "&#x1D4CD;">
+<!ENTITY yscr "&#x1D4CE;">
+<!ENTITY zscr "&#x1D4CF;">
+<!ENTITY Afr "&#x1D504;">
+<!ENTITY Bfr "&#x1D505;">
+<!ENTITY Dfr "&#x1D507;">
+<!ENTITY Efr "&#x1D508;">
+<!ENTITY Ffr "&#x1D509;">
+<!ENTITY Gfr "&#x1D50A;">
+<!ENTITY Jfr "&#x1D50D;">
+<!ENTITY Kfr "&#x1D50E;">
+<!ENTITY Lfr "&#x1D50F;">
+<!ENTITY Mfr "&#x1D510;">
+<!ENTITY Nfr "&#x1D511;">
+<!ENTITY Ofr "&#x1D512;">
+<!ENTITY Pfr "&#x1D513;">
+<!ENTITY Qfr "&#x1D514;">
+<!ENTITY Sfr "&#x1D516;">
+<!ENTITY Tfr "&#x1D517;">
+<!ENTITY Ufr "&#x1D518;">
+<!ENTITY Vfr "&#x1D519;">
+<!ENTITY Wfr "&#x1D51A;">
+<!ENTITY Xfr "&#x1D51B;">
+<!ENTITY Yfr "&#x1D51C;">
+<!ENTITY afr "&#x1D51E;">
+<!ENTITY bfr "&#x1D51F;">
+<!ENTITY cfr "&#x1D520;">
+<!ENTITY dfr "&#x1D521;">
+<!ENTITY efr "&#x1D522;">
+<!ENTITY ffr "&#x1D523;">
+<!ENTITY gfr "&#x1D524;">
+<!ENTITY hfr "&#x1D525;">
+<!ENTITY ifr "&#x1D526;">
+<!ENTITY jfr "&#x1D527;">
+<!ENTITY kfr "&#x1D528;">
+<!ENTITY lfr "&#x1D529;">
+<!ENTITY mfr "&#x1D52A;">
+<!ENTITY nfr "&#x1D52B;">
+<!ENTITY ofr "&#x1D52C;">
+<!ENTITY pfr "&#x1D52D;">
+<!ENTITY qfr "&#x1D52E;">
+<!ENTITY rfr "&#x1D52F;">
+<!ENTITY sfr "&#x1D530;">
+<!ENTITY tfr "&#x1D531;">
+<!ENTITY ufr "&#x1D532;">
+<!ENTITY vfr "&#x1D533;">
+<!ENTITY wfr "&#x1D534;">
+<!ENTITY xfr "&#x1D535;">
+<!ENTITY yfr "&#x1D536;">
+<!ENTITY zfr "&#x1D537;">
+<!ENTITY Aopf "&#x1D538;">
+<!ENTITY Bopf "&#x1D539;">
+<!ENTITY Dopf "&#x1D53B;">
+<!ENTITY Eopf "&#x1D53C;">
+<!ENTITY Fopf "&#x1D53D;">
+<!ENTITY Gopf "&#x1D53E;">
+<!ENTITY Iopf "&#x1D540;">
+<!ENTITY Jopf "&#x1D541;">
+<!ENTITY Kopf "&#x1D542;">
+<!ENTITY Lopf "&#x1D543;">
+<!ENTITY Mopf "&#x1D544;">
+<!ENTITY Oopf "&#x1D546;">
+<!ENTITY Sopf "&#x1D54A;">
+<!ENTITY Topf "&#x1D54B;">
+<!ENTITY Uopf "&#x1D54C;">
+<!ENTITY Vopf "&#x1D54D;">
+<!ENTITY Wopf "&#x1D54E;">
+<!ENTITY Xopf "&#x1D54F;">
+<!ENTITY Yopf "&#x1D550;">
+<!ENTITY aopf "&#x1D552;">
+<!ENTITY bopf "&#x1D553;">
+<!ENTITY copf "&#x1D554;">
+<!ENTITY dopf "&#x1D555;">
+<!ENTITY eopf "&#x1D556;">
+<!ENTITY fopf "&#x1D557;">
+<!ENTITY gopf "&#x1D558;">
+<!ENTITY hopf "&#x1D559;">
+<!ENTITY iopf "&#x1D55A;">
+<!ENTITY jopf "&#x1D55B;">
+<!ENTITY kopf "&#x1D55C;">
+<!ENTITY lopf "&#x1D55D;">
+<!ENTITY mopf "&#x1D55E;">
+<!ENTITY nopf "&#x1D55F;">
+<!ENTITY oopf "&#x1D560;">
+<!ENTITY popf "&#x1D561;">
+<!ENTITY qopf "&#x1D562;">
+<!ENTITY ropf "&#x1D563;">
+<!ENTITY sopf "&#x1D564;">
+<!ENTITY topf "&#x1D565;">
+<!ENTITY uopf "&#x1D566;">
+<!ENTITY vopf "&#x1D567;">
+<!ENTITY wopf "&#x1D568;">
+<!ENTITY xopf "&#x1D569;">
+<!ENTITY yopf "&#x1D56A;">
+<!ENTITY zopf "&#x1D56B;">
--- a/layout/Makefile.in
+++ b/layout/Makefile.in
@@ -55,18 +55,17 @@ PARALLEL_DIRS = \
 		$(NULL)
 
 ifdef NS_PRINTING
 PARALLEL_DIRS += printing
 endif
 
 ifdef MOZ_MATHML
 PARALLEL_DIRS += \
-  mathml/content/src \
-  mathml/base/src \
+  mathml \
   $(NULL)
 endif
 
 ifdef MOZ_SVG
 PARALLEL_DIRS += svg/base/src
 endif
 
 ifndef MOZ_NO_INSPECTOR_APIS
--- a/layout/base/Makefile.in
+++ b/layout/base/Makefile.in
@@ -179,18 +179,17 @@ LOCAL_INCLUDES += \
 		-I$(srcdir)/../../content/xbl/src \
 		-I$(srcdir)/../../view/src \
 		-I$(srcdir)/../../dom/base \
 		-I$(srcdir)/../../content/svg/content/src \
 		$(NULL)
 
 ifdef MOZ_MATHML
 LOCAL_INCLUDES += \
-        -I$(srcdir)/../mathml/content/src \
-        -I$(srcdir)/../mathml/base/src
+        -I$(srcdir)/../mathml
 endif
 
 ifdef MOZ_SVG
 LOCAL_INCLUDES += \
         -I$(srcdir)/../svg/base/src
 endif
 
 ifdef MOZ_MEDIA
--- a/layout/build/Makefile.in
+++ b/layout/build/Makefile.in
@@ -189,18 +189,17 @@ REQUIRES += \
       $(NULL)
 SHARED_LIBRARY_LIBS += ../inspector/src/$(LIB_PREFIX)inspector_s.$(LIB_SUFFIX)
 else
 DEFINES += -DMOZ_NO_INSPECTOR_APIS
 endif
 
 ifdef MOZ_MATHML
 SHARED_LIBRARY_LIBS += \
-		../mathml/content/src/$(LIB_PREFIX)gkmathmlcon_s.$(LIB_SUFFIX) \
-		../mathml/base/src/$(LIB_PREFIX)gkmathmlbase_s.$(LIB_SUFFIX) \
+		../mathml/$(LIB_PREFIX)gkmathml_s.$(LIB_SUFFIX) \
 		$(DEPTH)/content/mathml/content/src/$(LIB_PREFIX)gkcontentmathml_s.$(LIB_SUFFIX) \
 		$(NULL)
 endif
 
 ifdef MOZ_XTF
 SHARED_LIBRARY_LIBS += \
 		$(DEPTH)/content/xtf/src/$(LIB_PREFIX)gkcontentxtf_s.$(LIB_SUFFIX) \
 		$(NULL)
@@ -309,17 +308,17 @@ LOCAL_INCLUDES	+= -I$(srcdir)/../base \
 		   -I$(topsrcdir)/editor/libeditor/base \
 		   -I$(topsrcdir)/editor/libeditor/text \
 		   -I$(topsrcdir)/editor/libeditor/html \
 		   -I$(topsrcdir)/editor/txtsvc/src \
 		   -I$(topsrcdir)/editor/composer/src \
 		   $(NULL)
 
 ifdef MOZ_MATHML
-LOCAL_INCLUDES	+= -I$(srcdir)/../mathml/content/src
+LOCAL_INCLUDES	+= -I$(srcdir)/../mathml
 endif
 
 ifdef MOZ_SVG
 LOCAL_INCLUDES	+= -I$(topsrcdir)/content/svg/content/src
 endif
 
 DEFINES += -D_IMPL_NS_LAYOUT
 
new file mode 100644
--- /dev/null
+++ b/layout/mathml/Makefile.in
@@ -0,0 +1,146 @@
+#!gmake
+#
+# ***** 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
+# Heriot-Watt University, Edinburgh.
+# Portions created by the Initial Developer are Copyright (C) 1999
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#   David J. Fiddes <D.J.Fiddes@hw.ac.uk>
+#
+# 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 *****
+
+DEPTH=../..
+topsrcdir	= @top_srcdir@
+srcdir		= @srcdir@
+VPATH		= @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+MODULE = layout
+LIBRARY_NAME = gkmathml_s
+LIBXUL_LIBRARY	= 1
+
+REQUIRES	= xpcom \
+		  string \
+		  dom \
+		  content \
+		  gfx \
+		  thebes \
+		  widget \
+		  view \
+		  webshell \
+		  locale \
+		  unicharutil \
+		  necko \
+		  docshell \
+		  webbrwsr \
+		  pref \
+		  js \
+		  $(NULL)
+
+LOCAL_INCLUDES = \
+	-I$(srcdir)/../style \
+	-I$(srcdir)/../base \
+	-I$(srcdir)/../generic \
+	-I$(srcdir)/../tables \
+	-I$(srcdir)/content/src \
+	-I$(topsrcdir)/content/base/src \
+	-I$(topsrcdir)/content/mathml/content/src \
+	-I$(srcdir)/../xul/base/src \
+	$(NULL)
+
+CPPSRCS =         nsMathMLChar.cpp		        \
+                  nsMathMLFrame.cpp		\
+                  nsMathMLContainerFrame.cpp		\
+                  nsMathMLForeignFrameWrapper.cpp		\
+                  nsMathMLOperators.cpp \
+                  nsMathMLTokenFrame.cpp		\
+                  nsMathMLmoFrame.cpp			\
+                  nsMathMLmrowFrame.cpp		        \
+                  nsMathMLmphantomFrame.cpp		\
+                  nsMathMLmfencedFrame.cpp		\
+                  nsMathMLmfracFrame.cpp		\
+                  nsMathMLmsupFrame.cpp			\
+                  nsMathMLmsubFrame.cpp			\
+                  nsMathMLmsubsupFrame.cpp		\
+                  nsMathMLmmultiscriptsFrame.cpp	\
+                  nsMathMLmtableFrame.cpp		\
+                  nsMathMLmunderFrame.cpp		\
+                  nsMathMLmoverFrame.cpp		\
+                  nsMathMLmunderoverFrame.cpp		\
+                  nsMathMLmpaddedFrame.cpp		\
+                  nsMathMLmspaceFrame.cpp		\
+                  nsMathMLmstyleFrame.cpp		\
+                  nsMathMLmsqrtFrame.cpp		\
+                  nsMathMLmrootFrame.cpp		\
+                  nsMathMLmactionFrame.cpp		\
+                  $(NULL)
+
+include $(topsrcdir)/config/config.mk
+
+# we don't want the shared lib, but we want to force the creation of a static lib.
+# do we still want this? - DJF
+FORCE_STATIC_LIB = 1
+
+include $(topsrcdir)/config/rules.mk
+
+libs::
+	$(INSTALL) $(srcdir)/mathml.css $(DIST)/bin/res
+
+font_properties = \
+	mathfontUnicode.properties \
+	mathfontSTIXNonUnicode.properties \
+	mathfontSTIXSize1.properties \
+	mathfontStandardSymbolsL.properties \
+	$(NULL)
+
+ifeq ($(TARGET_MD_ARCH),win32)
+font_properties += \
+	mathfontSymbol.properties
+endif
+
+libs:: $(font_properties)
+	$(INSTALL) $^ $(DIST)/bin/res/fonts
+
+install:: $(font_properties)
+	$(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)/res/fonts
+
+math_properties = mathfont.properties
+
+$(DIST)/bin/res/fonts/$(math_properties) $(DESTDIR)$(mozappdir)/res/fonts/$(math_properties): $(math_properties) Makefile
+	test -d $(@D) || $(NSINSTALL) -D $(@D)
+	rm -f $@
+	$(PYTHON) $(MOZILLA_DIR)/config/Preprocessor.py --marker=% $(DEFINES) $(ACDEFINES) $< > $@
+
+libs:: $(DIST)/bin/res/fonts/$(math_properties)
+install:: $(DESTDIR)$(mozappdir)/res/fonts/$(math_properties)
+
+DEFINES += -D_IMPL_NS_LAYOUT
deleted file mode 100644
--- a/layout/mathml/base/src/Makefile.in
+++ /dev/null
@@ -1,142 +0,0 @@
-#!gmake
-#
-# ***** 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
-# Heriot-Watt University, Edinburgh.
-# Portions created by the Initial Developer are Copyright (C) 1999
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-#   David J. Fiddes <D.J.Fiddes@hw.ac.uk>
-#
-# 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 *****
-
-DEPTH=../../../..
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-MODULE = layout
-LIBRARY_NAME = gkmathmlbase_s
-LIBXUL_LIBRARY	= 1
-
-REQUIRES	= xpcom \
-		  string \
-		  dom \
-		  content \
-		  gfx \
-		  thebes \
-		  widget \
-		  view \
-		  webshell \
-		  locale \
-		  unicharutil \
-		  necko \
-		  docshell \
-		  webbrwsr \
-		  pref \
-		  js \
-		  $(NULL)
-
-LOCAL_INCLUDES = \
-	-I$(srcdir)/../../../style \
-	-I$(srcdir)/../../../base \
-	-I$(srcdir)/../../../generic \
-	-I$(srcdir)/../../../tables \
-	-I$(srcdir)/../../content/src \
-	-I$(topsrcdir)/content/base/src \
-	-I$(topsrcdir)/content/mathml/content/src \
-	-I$(srcdir)/../../../xul/base/src \
-	$(NULL)
-
-CPPSRCS =         nsMathMLChar.cpp		        \
-                  nsMathMLFrame.cpp		\
-                  nsMathMLContainerFrame.cpp		\
-                  nsMathMLForeignFrameWrapper.cpp		\
-                  nsMathMLTokenFrame.cpp		\
-                  nsMathMLmoFrame.cpp			\
-                  nsMathMLmrowFrame.cpp		        \
-                  nsMathMLmphantomFrame.cpp		\
-                  nsMathMLmfencedFrame.cpp		\
-                  nsMathMLmfracFrame.cpp		\
-                  nsMathMLmsupFrame.cpp			\
-                  nsMathMLmsubFrame.cpp			\
-                  nsMathMLmsubsupFrame.cpp		\
-                  nsMathMLmmultiscriptsFrame.cpp	\
-                  nsMathMLmtableFrame.cpp		\
-                  nsMathMLmunderFrame.cpp		\
-                  nsMathMLmoverFrame.cpp		\
-                  nsMathMLmunderoverFrame.cpp		\
-                  nsMathMLmpaddedFrame.cpp		\
-                  nsMathMLmspaceFrame.cpp		\
-                  nsMathMLmstyleFrame.cpp		\
-                  nsMathMLmsqrtFrame.cpp		\
-                  nsMathMLmrootFrame.cpp		\
-                  nsMathMLmactionFrame.cpp		\
-                  $(NULL)
-
-include $(topsrcdir)/config/config.mk
-
-# we don't want the shared lib, but we want to force the creation of a static lib.
-# do we still want this? - DJF
-FORCE_STATIC_LIB = 1
-
-include $(topsrcdir)/config/rules.mk
-
-font_properties = \
-	mathfontUnicode.properties \
-	mathfontSTIXNonUnicode.properties \
-	mathfontSTIXSize1.properties \
-	mathfontStandardSymbolsL.properties \
-	$(NULL)
-
-ifeq ($(TARGET_MD_ARCH),win32)
-font_properties += \
-	mathfontSymbol.properties
-endif
-
-libs:: $(font_properties)
-	$(INSTALL) $^ $(DIST)/bin/res/fonts
-
-install:: $(font_properties)
-	$(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)/res/fonts
-
-math_properties = mathfont.properties
-
-$(DIST)/bin/res/fonts/$(math_properties) $(DESTDIR)$(mozappdir)/res/fonts/$(math_properties): $(math_properties) Makefile
-	test -d $(@D) || $(NSINSTALL) -D $(@D)
-	rm -f $@
-	$(PYTHON) $(MOZILLA_DIR)/config/Preprocessor.py --marker=% $(DEFINES) $(ACDEFINES) $< > $@
-
-libs:: $(DIST)/bin/res/fonts/$(math_properties)
-install:: $(DESTDIR)$(mozappdir)/res/fonts/$(math_properties)
-
-DEFINES += -D_IMPL_NS_LAYOUT
deleted file mode 100644
--- a/layout/mathml/base/src/mathfont.properties
+++ /dev/null
@@ -1,526 +0,0 @@
-# ***** 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) 2001
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-#   Roger B. Sidje <rbs@maths.uq.edu.au>
-#   Karl Tomlinson <karlt+@karlt.net>, Mozilla Corporation
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either 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 *****
-
-##LOCALIZATION NOTE:
-# These are used to display an alert box to warn users when MathML fonts
-# are not installed on their system. The list of missing fonts will be
-# substituted in argument %1$S (see a screenshot in bug 128139).
-mathfont_missing_dialog_title = Missing MathML Fonts
-mathfont_missing_dialog_message = To properly display the MathML on this page you need to install the following fonts:\n%1$S.\n\n\nFor further information see:\nhttp://www.mozilla.org/projects/mathml/fonts
-
-##LOCALIZATION NOTE:
-# Do not translate anything else in this file
-
-# List of fonts that have corresponding properties files containing special
-# glyph tables for stretching MathML characters.  See the documentation at the
-# end of this file for details on the setup of the property file associated to
-# each font.  Do not include the Unicode table in this list.
-
-%ifdef XP_WIN
-font.mathfont-glyph-tables = STIXNonUnicode, STIXSize1, Standard Symbols L, Symbol
-%else
-font.mathfont-glyph-tables = STIXNonUnicode, STIXSize1, Standard Symbols L
-%endif
-
-# The ordered list of fonts with which to attempt to stretch MathML
-# characters is controlled by setting pref("font.mathfont-family",
-# "CMSY10, CMEX10, ...") for example, or by setting the font-family list in
-# :-moz-math-stretchy in mathml.css.
-#
-# Preferred fonts for particular stretchy characters may be specified in
-# preferences.  Each entry is specified using the Unicode format of the
-# character, and the comma-separated list of fonts like in the font-family
-# property of CSS.  A character can request different fonts for its variants
-# and for its parts.
-# e.g. pref("font.mathfont-family.\\u2264.base", "CMSY10, etc")
-# - A ".base" extension indicates the ordered list fonts to look for the glyph
-#   at its base size.
-# - The ".variants" extension indicates the ordered list of fonts where to
-#   look for glyphs of larger sizes.
-# - The ".parts" extension indicates the ordered list of fonts that should be
-#   used to look for the partial glyphs to be used to build up the character.
-#
-# Note: setting base fonts for non-stretchy characters only works
-# for operators that are ultimately handled by nsMathMLChar.
-# @see how |useMathMLChar| is set in nsMathMLmoFrame::Stretch() & Paint().
-
-
-
-# Mappings from Unicode BMP chars to style invariant chars (these chars have
-# their own intrinsic predefined styles).
-# http://www.w3.org/TR/2003/REC-MathML2-20031021/chapter6.html#chars.BMP-SMP
-#
-# The string consists of a list of UTF16 code triples.  For each i,
-# * the code at offset 3i is the BMP character
-# * the following two codes at offset 3i+1 and 3i+2 are either
-#   * (usually) a surrogate pair representing the corresponding character
-#     in the Mathematical Alphanumeric Symbols block, or
-#   * when the corresponding styled mathematical character is in the BMP, that
-#     BMP character followed by padding in the form of a UNICODE REPLACEMENT
-#     CHARACTER U+fffd.
-#
-# Currently only some transformations are performed, and only through the
-# style system.  (Bug 114365: Support for the 'mathvariant' attribute.)
-
-# there are no normal style-invariant mathematical alphanumeric symbols.
-#mathvariant.normal =
-
-mathvariant.bold = A\ud835\udc00B\ud835\udc01C\ud835\udc02D\ud835\udc03E\ud835\udc04F\ud835\udc05G\ud835\udc06H\ud835\udc07I\ud835\udc08J\ud835\udc09K\ud835\udc0aL\ud835\udc0bM\ud835\udc0cN\ud835\udc0dO\ud835\udc0eP\ud835\udc0fQ\ud835\udc10R\ud835\udc11S\ud835\udc12T\ud835\udc13U\ud835\udc14V\ud835\udc15W\ud835\udc16X\ud835\udc17Y\ud835\udc18Z\ud835\udc19a\ud835\udc1ab\ud835\udc1bc\ud835\udc1cd\ud835\udc1de\ud835\udc1ef\ud835\udc1fg\ud835\udc20h\ud835\udc21i\ud835\udc22j\ud835\udc23k\ud835\udc24l\ud835\udc25m\ud835\udc26n\ud835\udc27o\ud835\udc28p\ud835\udc29q\ud835\udc2ar\ud835\udc2bs\ud835\udc2ct\ud835\udc2du\ud835\udc2ev\ud835\udc2fw\ud835\udc30x\ud835\udc31y\ud835\udc32z\ud835\udc33\u0391\ud835\udea8\u0392\ud835\udea9\u0393\ud835\udeaa\u0394\ud835\udeab\u0395\ud835\udeac\u0396\ud835\udead\u0397\ud835\udeae\u0398\ud835\udeaf\u0399\ud835\udeb0\u039A\ud835\udeb1\u039B\ud835\udeb2\u039C\ud835\udeb3\u039D\ud835\udeb4\u039E\ud835\udeb5\u039F\ud835\udeb6\u03A0\ud835\udeb7\u03A1\ud835\udeb8\u03F4\ud835\udeb9\u03A3\ud835\udeba\u03A4\ud835\udebb\u03A5\ud835\udebc\u03A6\ud835\udebd\u03A7\ud835\udebe\u03A8\ud835\udebf\u03A9\ud835\udec0\u2207\ud835\udec1\u03B1\ud835\udec2\u03B2\ud835\udec3\u03B3\ud835\udec4\u03B4\ud835\udec5\u03B5\ud835\udec6\u03B6\ud835\udec7\u03B7\ud835\udec8\u03B8\ud835\udec9\u03B9\ud835\udeca\u03BA\ud835\udecb\u03BB\ud835\udecc\u03BC\ud835\udecd\u03BD\ud835\udece\u03BE\ud835\udecf\u03BF\ud835\uded0\u03C0\ud835\uded1\u03C1\ud835\uded2\u03C2\ud835\uded3\u03C3\ud835\uded4\u03C4\ud835\uded5\u03C5\ud835\uded6\u03C6\ud835\uded7\u03C7\ud835\uded8\u03C8\ud835\uded9\u03C9\ud835\udeda\u2202\ud835\udedb\u220A\ud835\udedc\u03D1\ud835\udedd\u03F0\ud835\udede\u03D5\ud835\udedf\u03F1\ud835\udee0\u03D6\ud835\udee10\ud835\udfce1\ud835\udfcf2\ud835\udfd03\ud835\udfd14\ud835\udfd25\ud835\udfd36\ud835\udfd47\ud835\udfd58\ud835\udfd69\ud835\udfd7
-mathvariant.italic = A\ud835\udc34B\ud835\udc35C\ud835\udc36D\ud835\udc37E\ud835\udc38F\ud835\udc39G\ud835\udc3aH\ud835\udc3bI\ud835\udc3cJ\ud835\udc3dK\ud835\udc3eL\ud835\udc3fM\ud835\udc40N\ud835\udc41O\ud835\udc42P\ud835\udc43Q\ud835\udc44R\ud835\udc45S\ud835\udc46T\ud835\udc47U\ud835\udc48V\ud835\udc49W\ud835\udc4aX\ud835\udc4bY\ud835\udc4cZ\ud835\udc4da\ud835\udc4eb\ud835\udc4fc\ud835\udc50d\ud835\udc51e\ud835\udc52f\ud835\udc53g\ud835\udc54h\u210e\ufffdi\ud835\udc56j\ud835\udc57k\ud835\udc58l\ud835\udc59m\ud835\udc5an\ud835\udc5bo\ud835\udc5cp\ud835\udc5dq\ud835\udc5er\ud835\udc5fs\ud835\udc60t\ud835\udc61u\ud835\udc62v\ud835\udc63w\ud835\udc64x\ud835\udc65y\ud835\udc66z\ud835\udc67\u0391\ud835\udee2\u0392\ud835\udee3\u0393\ud835\udee4\u0394\ud835\udee5\u0395\ud835\udee6\u0396\ud835\udee7\u0397\ud835\udee8\u0398\ud835\udee9\u0399\ud835\udeea\u039A\ud835\udeeb\u039B\ud835\udeec\u039C\ud835\udeed\u039D\ud835\udeee\u039E\ud835\udeef\u039F\ud835\udef0\u03A0\ud835\udef1\u03A1\ud835\udef2\u03F4\ud835\udef3\u03A3\ud835\udef4\u03A4\ud835\udef5\u03A5\ud835\udef6\u03A6\ud835\udef7\u03A7\ud835\udef8\u03A8\ud835\udef9\u03A9\ud835\udefa\u2207\ud835\udefb\u03B1\ud835\udefc\u03B2\ud835\udefd\u03B3\ud835\udefe\u03B4\ud835\udeff\u03B5\ud835\udf00\u03B6\ud835\udf01\u03B7\ud835\udf02\u03B8\ud835\udf03\u03B9\ud835\udf04\u03BA\ud835\udf05\u03BB\ud835\udf06\u03BC\ud835\udf07\u03BD\ud835\udf08\u03BE\ud835\udf09\u03BF\ud835\udf0a\u03C0\ud835\udf0b\u03C1\ud835\udf0c\u03C2\ud835\udf0d\u03C3\ud835\udf0e\u03C4\ud835\udf0f\u03C5\ud835\udf10\u03C6\ud835\udf11\u03C7\ud835\udf12\u03C8\ud835\udf13\u03C9\ud835\udf14\u2202\ud835\udf15\u220A\ud835\udf16\u03D1\ud835\udf17\u03F0\ud835\udf18\u03D5\ud835\udf19\u03F1\ud835\udf1a\u03D6\ud835\udf1b
-mathvariant.bold-italic = A\ud835\udc68B\ud835\udc69C\ud835\udc6aD\ud835\udc6bE\ud835\udc6cF\ud835\udc6dG\ud835\udc6eH\ud835\udc6fI\ud835\udc70J\ud835\udc71K\ud835\udc72L\ud835\udc73M\ud835\udc74N\ud835\udc75O\ud835\udc76P\ud835\udc77Q\ud835\udc78R\ud835\udc79S\ud835\udc7aT\ud835\udc7bU\ud835\udc7cV\ud835\udc7dW\ud835\udc7eX\ud835\udc7fY\ud835\udc80Z\ud835\udc81a\ud835\udc82b\ud835\udc83c\ud835\udc84d\ud835\udc85e\ud835\udc86f\ud835\udc87g\ud835\udc88h\ud835\udc89i\ud835\udc8aj\ud835\udc8bk\ud835\udc8cl\ud835\udc8dm\ud835\udc8en\ud835\udc8fo\ud835\udc90p\ud835\udc91q\ud835\udc92r\ud835\udc93s\ud835\udc94t\ud835\udc95u\ud835\udc96v\ud835\udc97w\ud835\udc98x\ud835\udc99y\ud835\udc9az\ud835\udc9b\u0391\ud835\udf1c\u0392\ud835\udf1d\u0393\ud835\udf1e\u0394\ud835\udf1f\u0395\ud835\udf20\u0396\ud835\udf21\u0397\ud835\udf22\u0398\ud835\udf23\u0399\ud835\udf24\u039A\ud835\udf25\u039B\ud835\udf26\u039C\ud835\udf27\u039D\ud835\udf28\u039E\ud835\udf29\u039F\ud835\udf2a\u03A0\ud835\udf2b\u03A1\ud835\udf2c\u03F4\ud835\udf2d\u03A3\ud835\udf2e\u03A4\ud835\udf2f\u03A5\ud835\udf30\u03A6\ud835\udf31\u03A7\ud835\udf32\u03A8\ud835\udf33\u03A9\ud835\udf34\u2207\ud835\udf35\u03B1\ud835\udf36\u03B2\ud835\udf37\u03B3\ud835\udf38\u03B4\ud835\udf39\u03B5\ud835\udf3a\u03B6\ud835\udf3b\u03B7\ud835\udf3c\u03B8\ud835\udf3d\u03B9\ud835\udf3e\u03BA\ud835\udf3f\u03BB\ud835\udf40\u03BC\ud835\udf41\u03BD\ud835\udf42\u03BE\ud835\udf43\u03BF\ud835\udf44\u03C0\ud835\udf45\u03C1\ud835\udf46\u03C2\ud835\udf47\u03C3\ud835\udf48\u03C4\ud835\udf49\u03C5\ud835\udf4a\u03C6\ud835\udf4b\u03C7\ud835\udf4c\u03C8\ud835\udf4d\u03C9\ud835\udf4e\u2202\ud835\udf4f\u220A\ud835\udf50\u03D1\ud835\udf51\u03F0\ud835\udf52\u03D5\ud835\udf53\u03F1\ud835\udf54\u03D6\ud835\udf55
-mathvariant.double-struck = A\ud835\udd38B\ud835\udd39C\u2102\ufffdD\ud835\udd3bE\ud835\udd3cF\ud835\udd3dG\ud835\udd3eH\u210d\ufffdI\ud835\udd40J\ud835\udd41K\ud835\udd42L\ud835\udd43M\ud835\udd44N\u2115\ufffdO\ud835\udd46P\u2119\ufffdQ\u211a\ufffdR\u211d\ufffdS\ud835\udd4aT\ud835\udd4bU\ud835\udd4cV\ud835\udd4dW\ud835\udd4eX\ud835\udd4fY\ud835\udd50Z\u2124\ufffda\ud835\udd52b\ud835\udd53c\ud835\udd54d\ud835\udd55e\ud835\udd56f\ud835\udd57g\ud835\udd58h\ud835\udd59i\ud835\udd5aj\ud835\udd5bk\ud835\udd5cl\ud835\udd5dm\ud835\udd5en\ud835\udd5fo\ud835\udd60p\ud835\udd61q\ud835\udd62r\ud835\udd63s\ud835\udd64t\ud835\udd65u\ud835\udd66v\ud835\udd67w\ud835\udd68x\ud835\udd69y\ud835\udd6az\ud835\udd6b0\ud835\udfd81\ud835\udfd92\ud835\udfda3\ud835\udfdb4\ud835\udfdc5\ud835\udfdd6\ud835\udfde7\ud835\udfdf8\ud835\udfe09\ud835\udfe1
-mathvariant.script = A\ud835\udc9cB\u212c\ufffdC\ud835\udc9eD\ud835\udc9fE\u2130\ufffdF\u2131\ufffdG\ud835\udca2H\u210b\ufffdI\u2110\ufffdJ\ud835\udca5K\ud835\udca6L\u2112\ufffdM\u2133\ufffdN\ud835\udca9O\ud835\udcaaP\ud835\udcabQ\ud835\udcacR\u211b\ufffdS\ud835\udcaeT\ud835\udcafU\ud835\udcb0V\ud835\udcb1W\ud835\udcb2X\ud835\udcb3Y\ud835\udcb4Z\ud835\udcb5a\ud835\udcb6b\ud835\udcb7c\ud835\udcb8d\ud835\udcb9e\u212f\ufffdf\ud835\udcbbg\u210a\ufffdh\ud835\udcbdi\ud835\udcbej\ud835\udcbfk\ud835\udcc0l\ud835\udcc1m\ud835\udcc2n\ud835\udcc3o\u2134\ufffdp\ud835\udcc5q\ud835\udcc6r\ud835\udcc7s\ud835\udcc8t\ud835\udcc9u\ud835\udccav\ud835\udccbw\ud835\udcccx\ud835\udccdy\ud835\udccez\ud835\udccf
-mathvariant.bold-script = A\ud835\udcd0B\ud835\udcd1C\ud835\udcd2D\ud835\udcd3E\ud835\udcd4F\ud835\udcd5G\ud835\udcd6H\ud835\udcd7I\ud835\udcd8J\ud835\udcd9K\ud835\udcdaL\ud835\udcdbM\ud835\udcdcN\ud835\udcddO\ud835\udcdeP\ud835\udcdfQ\ud835\udce0R\ud835\udce1S\ud835\udce2T\ud835\udce3U\ud835\udce4V\ud835\udce5W\ud835\udce6X\ud835\udce7Y\ud835\udce8Z\ud835\udce9a\ud835\udceab\ud835\udcebc\ud835\udcecd\ud835\udcede\ud835\udceef\ud835\udcefg\ud835\udcf0h\ud835\udcf1i\ud835\udcf2j\ud835\udcf3k\ud835\udcf4l\ud835\udcf5m\ud835\udcf6n\ud835\udcf7o\ud835\udcf8p\ud835\udcf9q\ud835\udcfar\ud835\udcfbs\ud835\udcfct\ud835\udcfdu\ud835\udcfev\ud835\udcffw\ud835\udd00x\ud835\udd01y\ud835\udd02z\ud835\udd03
-mathvariant.fraktur = A\ud835\udd04B\ud835\udd05C\u212d\ufffdD\ud835\udd07E\ud835\udd08F\ud835\udd09G\ud835\udd0aH\u210c\ufffdI\u2111\ufffdJ\ud835\udd0dK\ud835\udd0eL\ud835\udd0fM\ud835\udd10N\ud835\udd11O\ud835\udd12P\ud835\udd13Q\ud835\udd14R\u211c\ufffdS\ud835\udd16T\ud835\udd17U\ud835\udd18V\ud835\udd19W\ud835\udd1aX\ud835\udd1bY\ud835\udd1cZ\u2128\ufffda\ud835\udd1eb\ud835\udd1fc\ud835\udd20d\ud835\udd21e\ud835\udd22f\ud835\udd23g\ud835\udd24h\ud835\udd25i\ud835\udd26j\ud835\udd27k\ud835\udd28l\ud835\udd29m\ud835\udd2an\ud835\udd2bo\ud835\udd2cp\ud835\udd2dq\ud835\udd2er\ud835\udd2fs\ud835\udd30t\ud835\udd31u\ud835\udd32v\ud835\udd33w\ud835\udd34x\ud835\udd35y\ud835\udd36z\ud835\udd37
-mathvariant.bold-fraktur = A\ud835\udd6cB\ud835\udd6dC\ud835\udd6eD\ud835\udd6fE\ud835\udd70F\ud835\udd71G\ud835\udd72H\ud835\udd73I\ud835\udd74J\ud835\udd75K\ud835\udd76L\ud835\udd77M\ud835\udd78N\ud835\udd79O\ud835\udd7aP\ud835\udd7bQ\ud835\udd7cR\ud835\udd7dS\ud835\udd7eT\ud835\udd7fU\ud835\udd80V\ud835\udd81W\ud835\udd82X\ud835\udd83Y\ud835\udd84Z\ud835\udd85a\ud835\udd86b\ud835\udd87c\ud835\udd88d\ud835\udd89e\ud835\udd8af\ud835\udd8bg\ud835\udd8ch\ud835\udd8di\ud835\udd8ej\ud835\udd8fk\ud835\udd90l\ud835\udd91m\ud835\udd92n\ud835\udd93o\ud835\udd94p\ud835\udd95q\ud835\udd96r\ud835\udd97s\ud835\udd98t\ud835\udd99u\ud835\udd9av\ud835\udd9bw\ud835\udd9cx\ud835\udd9dy\ud835\udd9ez\ud835\udd9f
-mathvariant.sans-serif = A\ud835\udda0B\ud835\udda1C\ud835\udda2D\ud835\udda3E\ud835\udda4F\ud835\udda5G\ud835\udda6H\ud835\udda7I\ud835\udda8J\ud835\udda9K\ud835\uddaaL\ud835\uddabM\ud835\uddacN\ud835\uddadO\ud835\uddaeP\ud835\uddafQ\ud835\uddb0R\ud835\uddb1S\ud835\uddb2T\ud835\uddb3U\ud835\uddb4V\ud835\uddb5W\ud835\uddb6X\ud835\uddb7Y\ud835\uddb8Z\ud835\uddb9a\ud835\uddbab\ud835\uddbbc\ud835\uddbcd\ud835\uddbde\ud835\uddbef\ud835\uddbfg\ud835\uddc0h\ud835\uddc1i\ud835\uddc2j\ud835\uddc3k\ud835\uddc4l\ud835\uddc5m\ud835\uddc6n\ud835\uddc7o\ud835\uddc8p\ud835\uddc9q\ud835\uddcar\ud835\uddcbs\ud835\uddcct\ud835\uddcdu\ud835\uddcev\ud835\uddcfw\ud835\uddd0x\ud835\uddd1y\ud835\uddd2z\ud835\uddd30\ud835\udfe21\ud835\udfe32\ud835\udfe43\ud835\udfe54\ud835\udfe65\ud835\udfe76\ud835\udfe87\ud835\udfe98\ud835\udfea9\ud835\udfeb
-mathvariant.bold-sans-serif = A\ud835\uddd4B\ud835\uddd5C\ud835\uddd6D\ud835\uddd7E\ud835\uddd8F\ud835\uddd9G\ud835\udddaH\ud835\udddbI\ud835\udddcJ\ud835\uddddK\ud835\udddeL\ud835\udddfM\ud835\udde0N\ud835\udde1O\ud835\udde2P\ud835\udde3Q\ud835\udde4R\ud835\udde5S\ud835\udde6T\ud835\udde7U\ud835\udde8V\ud835\udde9W\ud835\uddeaX\ud835\uddebY\ud835\uddecZ\ud835\uddeda\ud835\uddeeb\ud835\uddefc\ud835\uddf0d\ud835\uddf1e\ud835\uddf2f\ud835\uddf3g\ud835\uddf4h\ud835\uddf5i\ud835\uddf6j\ud835\uddf7k\ud835\uddf8l\ud835\uddf9m\ud835\uddfan\ud835\uddfbo\ud835\uddfcp\ud835\uddfdq\ud835\uddfer\ud835\uddffs\ud835\ude00t\ud835\ude01u\ud835\ude02v\ud835\ude03w\ud835\ude04x\ud835\ude05y\ud835\ude06z\ud835\ude07\u0391\ud835\udf56\u0392\ud835\udf57\u0393\ud835\udf58\u0394\ud835\udf59\u0395\ud835\udf5a\u0396\ud835\udf5b\u0397\ud835\udf5c\u0398\ud835\udf5d\u0399\ud835\udf5e\u039A\ud835\udf5f\u039B\ud835\udf60\u039C\ud835\udf61\u039D\ud835\udf62\u039E\ud835\udf63\u039F\ud835\udf64\u03A0\ud835\udf65\u03A1\ud835\udf66\u03F4\ud835\udf67\u03A3\ud835\udf68\u03A4\ud835\udf69\u03A5\ud835\udf6a\u03A6\ud835\udf6b\u03A7\ud835\udf6c\u03A8\ud835\udf6d\u03A9\ud835\udf6e\u2207\ud835\udf6f\u03B1\ud835\udf70\u03B2\ud835\udf71\u03B3\ud835\udf72\u03B4\ud835\udf73\u03B5\ud835\udf74\u03B6\ud835\udf75\u03B7\ud835\udf76\u03B8\ud835\udf77\u03B9\ud835\udf78\u03BA\ud835\udf79\u03BB\ud835\udf7a\u03BC\ud835\udf7b\u03BD\ud835\udf7c\u03BE\ud835\udf7d\u03BF\ud835\udf7e\u03C0\ud835\udf7f\u03C1\ud835\udf80\u03C2\ud835\udf81\u03C3\ud835\udf82\u03C4\ud835\udf83\u03C5\ud835\udf84\u03C6\ud835\udf85\u03C7\ud835\udf86\u03C8\ud835\udf87\u03C9\ud835\udf88\u2202\ud835\udf89\u220A\ud835\udf8a\u03D1\ud835\udf8b\u03F0\ud835\udf8c\u03D5\ud835\udf8d\u03F1\ud835\udf8e\u03D6\ud835\udf8f0\ud835\udfec1\ud835\udfed2\ud835\udfee3\ud835\udfef4\ud835\udff05\ud835\udff16\ud835\udff27\ud835\udff38\ud835\udff49\ud835\udff5
-mathvariant.sans-serif-italic = A\ud835\ude08B\ud835\ude09C\ud835\ude0aD\ud835\ude0bE\ud835\ude0cF\ud835\ude0dG\ud835\ude0eH\ud835\ude0fI\ud835\ude10J\ud835\ude11K\ud835\ude12L\ud835\ude13M\ud835\ude14N\ud835\ude15O\ud835\ude16P\ud835\ude17Q\ud835\ude18R\ud835\ude19S\ud835\ude1aT\ud835\ude1bU\ud835\ude1cV\ud835\ude1dW\ud835\ude1eX\ud835\ude1fY\ud835\ude20Z\ud835\ude21a\ud835\ude22b\ud835\ude23c\ud835\ude24d\ud835\ude25e\ud835\ude26f\ud835\ude27g\ud835\ude28h\ud835\ude29i\ud835\ude2aj\ud835\ude2bk\ud835\ude2cl\ud835\ude2dm\ud835\ude2en\ud835\ude2fo\ud835\ude30p\ud835\ude31q\ud835\ude32r\ud835\ude33s\ud835\ude34t\ud835\ude35u\ud835\ude36v\ud835\ude37w\ud835\ude38x\ud835\ude39y\ud835\ude3az\ud835\ude3b
-mathvariant.sans-serif-bold-italic = A\ud835\ude3cB\ud835\ude3dC\ud835\ude3eD\ud835\ude3fE\ud835\ude40F\ud835\ude41G\ud835\ude42H\ud835\ude43I\ud835\ude44J\ud835\ude45K\ud835\ude46L\ud835\ude47M\ud835\ude48N\ud835\ude49O\ud835\ude4aP\ud835\ude4bQ\ud835\ude4cR\ud835\ude4dS\ud835\ude4eT\ud835\ude4fU\ud835\ude50V\ud835\ude51W\ud835\ude52X\ud835\ude53Y\ud835\ude54Z\ud835\ude55a\ud835\ude56b\ud835\ude57c\ud835\ude58d\ud835\ude59e\ud835\ude5af\ud835\ude5bg\ud835\ude5ch\ud835\ude5di\ud835\ude5ej\ud835\ude5fk\ud835\ude60l\ud835\ude61m\ud835\ude62n\ud835\ude63o\ud835\ude64p\ud835\ude65q\ud835\ude66r\ud835\ude67s\ud835\ude68t\ud835\ude69u\ud835\ude6av\ud835\ude6bw\ud835\ude6cx\ud835\ude6dy\ud835\ude6ez\ud835\ude6f\u0391\ud835\udf90\u0392\ud835\udf91\u0393\ud835\udf92\u0394\ud835\udf93\u0395\ud835\udf94\u0396\ud835\udf95\u0397\ud835\udf96\u0398\ud835\udf97\u0399\ud835\udf98\u039A\ud835\udf99\u039B\ud835\udf9a\u039C\ud835\udf9b\u039D\ud835\udf9c\u039E\ud835\udf9d\u039F\ud835\udf9e\u03A0\ud835\udf9f\u03A1\ud835\udfa0\u03F4\ud835\udfa1\u03A3\ud835\udfa2\u03A4\ud835\udfa3\u03A5\ud835\udfa4\u03A6\ud835\udfa5\u03A7\ud835\udfa6\u03A8\ud835\udfa7\u03A9\ud835\udfa8\u2207\ud835\udfa9\u03B1\ud835\udfaa\u03B2\ud835\udfab\u03B3\ud835\udfac\u03B4\ud835\udfad\u03B5\ud835\udfae\u03B6\ud835\udfaf\u03B7\ud835\udfb0\u03B8\ud835\udfb1\u03B9\ud835\udfb2\u03BA\ud835\udfb3\u03BB\ud835\udfb4\u03BC\ud835\udfb5\u03BD\ud835\udfb6\u03BE\ud835\udfb7\u03BF\ud835\udfb8\u03C0\ud835\udfb9\u03C1\ud835\udfba\u03C2\ud835\udfbb\u03C3\ud835\udfbc\u03C4\ud835\udfbd\u03C5\ud835\udfbe\u03C6\ud835\udfbf\u03C7\ud835\udfc0\u03C8\ud835\udfc1\u03C9\ud835\udfc2\u2202\ud835\udfc3\u220A\ud835\udfc4\u03D1\ud835\udfc5\u03F0\ud835\udfc6\u03D5\ud835\udfc7\u03F1\ud835\udfc8\u03D6\ud835\udfc9
-mathvariant.monospace = A\ud835\ude70B\ud835\ude71C\ud835\ude72D\ud835\ude73E\ud835\ude74F\ud835\ude75G\ud835\ude76H\ud835\ude77I\ud835\ude78J\ud835\ude79K\ud835\ude7aL\ud835\ude7bM\ud835\ude7cN\ud835\ude7dO\ud835\ude7eP\ud835\ude7fQ\ud835\ude80R\ud835\ude81S\ud835\ude82T\ud835\ude83U\ud835\ude84V\ud835\ude85W\ud835\ude86X\ud835\ude87Y\ud835\ude88Z\ud835\ude89a\ud835\ude8ab\ud835\ude8bc\ud835\ude8cd\ud835\ude8de\ud835\ude8ef\ud835\ude8fg\ud835\ude90h\ud835\ude91i\ud835\ude92j\ud835\ude93k\ud835\ude94l\ud835\ude95m\ud835\ude96n\ud835\ude97o\ud835\ude98p\ud835\ude99q\ud835\ude9ar\ud835\ude9bs\ud835\ude9ct\ud835\ude9du\ud835\ude9ev\ud835\ude9fw\ud835\udea0x\ud835\udea1y\ud835\udea2z\ud835\udea30\ud835\udff61\ud835\udff72\ud835\udff83\ud835\udff94\ud835\udffa5\ud835\udffb6\ud835\udffc7\ud835\udffd8\ud835\udffe9\ud835\udfff
-
-
-# Operator Dictionary indexed on the "form" (i.e., infix, prefix, or suffix).
-# Each entry lists the attributes of the operator, using its Unicode format.
-
-operator.\u0028.prefix = stretchy:vertical fence:true lspace:0em rspace:0em # (
-operator.\u0029.postfix = stretchy:vertical fence:true lspace:0em rspace:0em # )
-operator.\u005B.prefix = stretchy:vertical fence:true lspace:0em rspace:0em # [
-operator.\u005D.postfix = stretchy:vertical fence:true lspace:0em rspace:0em # ]
-operator.\u007B.prefix = stretchy:vertical fence:true lspace:0em rspace:0em # {
-operator.\u007D.postfix = stretchy:vertical fence:true lspace:0em rspace:0em # }
-operator.\u201D.postfix = fence:true lspace:0em rspace:0em # &CloseCurlyDoubleQuote;
-operator.\u2019.postfix = fence:true lspace:0em rspace:0em # &CloseCurlyQuote;
-operator.\u27E8.prefix = stretchy:vertical fence:true lspace:0em rspace:0em # &LeftAngleBracket;
-operator.\u2308.prefix = stretchy:vertical fence:true lspace:0em rspace:0em # &LeftCeiling;
-operator.\u27E6.prefix = stretchy:vertical fence:true lspace:0em rspace:0em # &LeftDoubleBracket;
-operator.\u230A.prefix = stretchy:vertical fence:true lspace:0em rspace:0em # &LeftFloor;
-operator.\u201C.prefix = fence:true lspace:0em rspace:0em # &OpenCurlyDoubleQuote;
-operator.\u2018.prefix = fence:true lspace:0em rspace:0em # &OpenCurlyQuote;
-operator.\u27E9.postfix = stretchy:vertical fence:true lspace:0em rspace:0em # &RightAngleBracket;
-operator.\u2309.postfix = stretchy:vertical fence:true lspace:0em rspace:0em # &RightCeiling;
-operator.\u27E7.postfix = stretchy:vertical fence:true lspace:0em rspace:0em # &RightDoubleBracket;
-operator.\u230B.postfix = stretchy:vertical fence:true lspace:0em rspace:0em # &RightFloor;
-operator.\u2063.infix = separator:true lspace:0em rspace:0em # &InvisibleComma;
-operator.\u002C.infix = separator:true lspace:0em rspace:verythickmathspace # ,
-operator.\u2500.infix = stretchy:horizontal minsize:0 lspace:0em rspace:0em # &HorizontalLine;
-operator.\u007C.infix = stretchy:vertical minsize:0 lspace:0em rspace:0em # &VerticalLine; |
-operator.\u003B.infix = separator:true lspace:0em rspace:thickmathspace # ;
-operator.\u003B.postfix = separator:true lspace:0em rspace:0em # ;
-operator.\u003A\u003D.infix = lspace:thickmathspace rspace:thickmathspace # :=
-operator.\u2254.infix = lspace:thickmathspace rspace:thickmathspace # &Assign;
-operator.\u2235.infix = lspace:thickmathspace rspace:thickmathspace # &Because;
-operator.\u2234.infix = lspace:thickmathspace rspace:thickmathspace # &Therefore;
-operator.\u2758.infix = stretchy:vertical lspace:thickmathspace rspace:thickmathspace # &VerticalSeparator;
-operator.\u002F\u002F.infix = lspace:thickmathspace rspace:thickmathspace # //
-operator.\u2237.infix = lspace:thickmathspace rspace:thickmathspace # &Colon; &Proportion;
-operator.\u0026.prefix = lspace:0em rspace:thickmathspace # &amp;
-operator.\u0026.postfix = lspace:thickmathspace rspace:0em # &amp;
-operator.\u002A\u003D.infix = lspace:thickmathspace rspace:thickmathspace # *=
-operator.\u002D\u003D.infix = lspace:thickmathspace rspace:thickmathspace # -=
-operator.\u002B\u003D.infix = lspace:thickmathspace rspace:thickmathspace # +=
-operator.\u002F\u003D.infix = lspace:thickmathspace rspace:thickmathspace # /=
-operator.\u002D\u003E.infix = lspace:thickmathspace rspace:thickmathspace # ->
-operator.\u003A.infix = lspace:thickmathspace rspace:thickmathspace # :
-operator.\u002E\u002E.postfix = lspace:mediummathspace rspace:0em # ..
-operator.\u002E\u002E\u002E.postfix = lspace:mediummathspace rspace:0em # ...
-operator.\u220B.infix = lspace:thickmathspace rspace:thickmathspace # &SuchThat; &ReverseElement;
-operator.\u2AE4.infix = lspace:thickmathspace rspace:thickmathspace # &DoubleLeftTee;
-operator.\u22A8.infix = lspace:thickmathspace rspace:thickmathspace # &DoubleRightTee;
-operator.\u22A4.infix = lspace:thickmathspace rspace:thickmathspace # &DownTee;
-operator.\u22A3.infix = lspace:thickmathspace rspace:thickmathspace # &LeftTee;
-operator.\u22A2.infix = lspace:thickmathspace rspace:thickmathspace # &RightTee;
-operator.\u21D2.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &Implies; &DoubleRightArrow;
-operator.\u2970.infix = lspace:thickmathspace rspace:thickmathspace # &RoundImplies;
-operator.\u007C\u007C.infix = lspace:mediummathspace rspace:mediummathspace # ||
-operator.\u2A54.infix = stretchy:vertical lspace:mediummathspace rspace:mediummathspace # &Or;
-operator.\u0026\u0026.infix = lspace:thickmathspace rspace:thickmathspace # &amp;&amp;
-operator.\u2A53.infix = stretchy:vertical lspace:mediummathspace rspace:mediummathspace # &And;
-operator.\u0026.infix = lspace:thickmathspace rspace:thickmathspace # &amp;
-operator.\u0021.prefix = lspace:0em rspace:thickmathspace # !
-operator.\u2AEC.prefix = lspace:0em rspace:thickmathspace # &Not;
-operator.\u2203.prefix = lspace:0em rspace:thickmathspace # &Exists;
-operator.\u2200.prefix = lspace:0em rspace:thickmathspace # &ForAll;
-operator.\u2204.prefix = lspace:0em rspace:thickmathspace # &NotExists;
-operator.\u2208.infix = lspace:thickmathspace rspace:thickmathspace # &Element;
-operator.\u2209.infix = lspace:thickmathspace rspace:thickmathspace # &NotElement;
-operator.\u220C.infix = lspace:thickmathspace rspace:thickmathspace # &NotReverseElement;
-operator.\u228F\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &NotSquareSubset;
-operator.\u22E2.infix = lspace:thickmathspace rspace:thickmathspace # &NotSquareSubsetEqual;
-operator.\u2290\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &NotSquareSuperset;
-operator.\u22E3.infix = lspace:thickmathspace rspace:thickmathspace # &NotSquareSupersetEqual;
-operator.\u2284.infix = lspace:thickmathspace rspace:thickmathspace # &nsub;
-operator.\u2282\u020D2.infix = lspace:thickmathspace rspace:thickmathspace # &NotSubset;
-operator.\u2288.infix = lspace:thickmathspace rspace:thickmathspace # &NotSubsetEqual;
-operator.\u2AC5\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &nsubseteqq;
-operator.\u2285.infix = lspace:thickmathspace rspace:thickmathspace # &nsup;
-operator.\u2283\u020D2.infix = lspace:thickmathspace rspace:thickmathspace # &NotSuperset;
-operator.\u2289.infix = lspace:thickmathspace rspace:thickmathspace # &NotSupersetEqual;
-operator.\u2AC6\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &nsubseteqq;
-operator.\u228F.infix = lspace:thickmathspace rspace:thickmathspace # &SquareSubset;
-operator.\u2291.infix = lspace:thickmathspace rspace:thickmathspace # &SquareSubsetEqual;
-operator.\u2290.infix = lspace:thickmathspace rspace:thickmathspace # &SquareSuperset;
-operator.\u2292.infix = lspace:thickmathspace rspace:thickmathspace # &SquareSupersetEqual;
-operator.\u22D0.infix = lspace:thickmathspace rspace:thickmathspace # &Subset;
-operator.\u2286.infix = lspace:thickmathspace rspace:thickmathspace # &SubsetEqual;
-operator.\u2AC5.infix = lspace:thickmathspace rspace:thickmathspace # &subseteqq;
-operator.\u2283.infix = lspace:thickmathspace rspace:thickmathspace # &Superset;
-operator.\u2287.infix = lspace:thickmathspace rspace:thickmathspace # &SupersetEqual;
-operator.\u2AC6.infix = lspace:thickmathspace rspace:thickmathspace # &supseteqq;
-operator.\u21D0.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &DoubleLeftArrow;
-operator.\u21D4.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &DoubleLeftRightArrow;
-operator.\u2950.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &DownLeftRightVector;
-operator.\u295E.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &DownLeftTeeVector;
-operator.\u21BD.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &DownLeftVector;
-operator.\u2956.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &DownLeftVectorBar;
-operator.\u295F.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &DownRightTeeVector;
-operator.\u21C1.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &DownRightVector;
-operator.\u2957.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &DownRightVectorBar;
-operator.\u2190.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &LeftArrow;
-operator.\u21E4.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &LeftArrowBar;
-operator.\u21C6.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &LeftArrowRightArrow;
-operator.\u2194.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &LeftRightArrow;
-operator.\u294E.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &LeftRightVector;
-operator.\u21A4.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &LeftTeeArrow;
-operator.\u295A.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &LeftTeeVector;
-operator.\u21BC.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &LeftVector;
-operator.\u2952.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &LeftVectorBar;
-operator.\u2199.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &LowerLeftArrow;
-operator.\u2198.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &LowerRightArrow;
-operator.\u2192.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &RightArrow;
-operator.\u21E5.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &RightArrowBar;
-operator.\u21C4.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &RightArrowLeftArrow;
-operator.\u21A6.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &RightTeeArrow;
-operator.\u295B.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &RightTeeVector;
-operator.\u21C0.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &RightVector;
-operator.\u2953.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &RightVectorBar;
-operator.\u2190\u200B.infix = lspace:thickmathspace rspace:thickmathspace # &ShortLeftArrow;
-operator.\u2192\u200B.infix = lspace:thickmathspace rspace:thickmathspace # &ShortRightArrow;
-operator.\u2196.infix = stretchy:vertical lspace:thickmathspace rspace:thickmathspace # &UpperLeftArrow;
-operator.\u2197.infix = stretchy:vertical lspace:thickmathspace rspace:thickmathspace # &UpperRightArrow;
-operator.\u003D.infix = lspace:thickmathspace rspace:thickmathspace # =
-operator.\u003C.infix = lspace:thickmathspace rspace:thickmathspace # &lt;
-operator.\u003E.infix = lspace:thickmathspace rspace:thickmathspace # >
-operator.\u0021\u003D.infix = lspace:thickmathspace rspace:thickmathspace # !=
-operator.\u003D\u003D.infix = lspace:thickmathspace rspace:thickmathspace # ==
-operator.\u003C\u003D.infix = lspace:thickmathspace rspace:thickmathspace # &lt;=
-operator.\u003E\u003D.infix = lspace:thickmathspace rspace:thickmathspace # >=
-operator.\u2261.infix = lspace:thickmathspace rspace:thickmathspace # &Congruent;
-operator.\u224D.infix = lspace:thickmathspace rspace:thickmathspace # &CupCap;
-operator.\u2250.infix = lspace:thickmathspace rspace:thickmathspace # &DotEqual;
-operator.\u2225.infix = stretchy:vertical lspace:thickmathspace rspace:thickmathspace # &DoubleVerticalBar;
-operator.\u2016.infix = stretchy:vertical lspace:thickmathspace rspace:thickmathspace # &Vert; &Verbar;
-operator.\u2A75.infix = lspace:thickmathspace rspace:thickmathspace # &Equal;
-operator.\u2242.infix = lspace:thickmathspace rspace:thickmathspace # &EqualTilde;
-operator.\u21CC.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &Equilibrium;
-operator.\u2265.infix = lspace:thickmathspace rspace:thickmathspace # &GreaterEqual;
-operator.\u22DB.infix = lspace:thickmathspace rspace:thickmathspace # &GreaterEqualLess;
-operator.\u2A8C.infix = lspace:thickmathspace rspace:thickmathspace # &gtreqqless;
-operator.\u2267.infix = lspace:thickmathspace rspace:thickmathspace # &GreaterFullEqual;
-operator.\u2AA2.infix = lspace:thickmathspace rspace:thickmathspace # &GreaterGreater;
-operator.\u2277.infix = lspace:thickmathspace rspace:thickmathspace # &GreaterLess;
-operator.\u2A7E.infix = lspace:thickmathspace rspace:thickmathspace # &GreaterSlantEqual;
-operator.\u2273.infix = lspace:thickmathspace rspace:thickmathspace # &GreaterTilde;
-operator.\u2A86.infix = lspace:thickmathspace rspace:thickmathspace # &gtrapprox;
-operator.\u224E.infix = lspace:thickmathspace rspace:thickmathspace # &HumpDownHump;
-operator.\u224F.infix = lspace:thickmathspace rspace:thickmathspace # &HumpEqual;
-operator.\u22B2.infix = lspace:thickmathspace rspace:thickmathspace # &LeftTriangle;
-operator.\u29CF.infix = lspace:thickmathspace rspace:thickmathspace # &LeftTriangleBar;
-operator.\u22B4.infix = lspace:thickmathspace rspace:thickmathspace # &LeftTriangleEqual;
-operator.\u2264.infix = lspace:thickmathspace rspace:thickmathspace # &le;
-operator.\u22DA.infix = lspace:thickmathspace rspace:thickmathspace # &LessEqualGreater;
-operator.\u2A8B.infix = lspace:thickmathspace rspace:thickmathspace # &lesseqqgtr;
-operator.\u2266.infix = lspace:thickmathspace rspace:thickmathspace # &LessFullEqual;
-operator.\u2276.infix = lspace:thickmathspace rspace:thickmathspace # &LessGreater;
-operator.\u2AA1.infix = lspace:thickmathspace rspace:thickmathspace # &LessLess;
-operator.\u2A7D.infix = lspace:thickmathspace rspace:thickmathspace # &LessSlantEqual;
-operator.\u2272.infix = lspace:thickmathspace rspace:thickmathspace # &LessTilde;
-operator.\u2A85.infix = lspace:thickmathspace rspace:thickmathspace # &lessapprox;
-operator.\u226B.infix = lspace:thickmathspace rspace:thickmathspace # &NestedGreaterGreater;
-operator.\u226A.infix = lspace:thickmathspace rspace:thickmathspace # &NestedLessLess;
-operator.\u2262.infix = lspace:thickmathspace rspace:thickmathspace # &NotCongruent;
-operator.\u226D.infix = lspace:thickmathspace rspace:thickmathspace # &NotCupCap;
-operator.\u2226.infix = lspace:thickmathspace rspace:thickmathspace # &NotDoubleVerticalBar;
-operator.\u2260.infix = lspace:thickmathspace rspace:thickmathspace # &NotEqual;
-operator.\u2242\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &NotEqualTilde;
-operator.\u226F.infix = lspace:thickmathspace rspace:thickmathspace # &NotGreater;
-operator.\u003E\u20D2.infix = lspace:thickmathspace rspace:thickmathspace # &nvgt;
-operator.\u2271.infix = lspace:thickmathspace rspace:thickmathspace # &NotGreaterEqual;
-operator.\u2266\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &NotGreaterFullEqual;
-operator.\u2A7D\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &NotLessSlantEqual;
-operator.\u226B\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &NotGreaterGreater;
-operator.\u2279.infix = lspace:thickmathspace rspace:thickmathspace # &NotGreaterLess;
-operator.\u2A7E\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &NotGreaterSlantEqual;
-operator.\u2275.infix = lspace:thickmathspace rspace:thickmathspace # &NotGreaterTilde;
-operator.\u224E\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &NotHumpDownHump;
-operator.\u224F\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &NotHumpEqual;
-operator.\u22EA.infix = lspace:thickmathspace rspace:thickmathspace # &NotLeftTriangle;
-operator.\u29CF\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &NotLeftTriangleBar;
-operator.\u22EC.infix = lspace:thickmathspace rspace:thickmathspace # &NotLeftTriangleEqual;
-operator.\u226E.infix = lspace:thickmathspace rspace:thickmathspace # &NotLess;
-operator.\u003C\u20D2.infix = lspace:thickmathspace rspace:thickmathspace # &nvlt;
-operator.\u2270.infix = lspace:thickmathspace rspace:thickmathspace # &NotLessEqual;
-# There is no &NotLessFullEqual;
-operator.\u2278.infix = lspace:thickmathspace rspace:thickmathspace # &NotLessGreater;
-operator.\u226A\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &NotLessLess;
-operator.\u2274.infix = lspace:thickmathspace rspace:thickmathspace # &NotLessTilde;
-operator.\u2AA2\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &NotNestedGreaterGreater;
-operator.\u2AA1\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &NotNestedLessLess;
-operator.\u2280.infix = lspace:thickmathspace rspace:thickmathspace # &NotPrecedes;
-operator.\u2AAF\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &NotPrecedesEqual;
-operator.\u22E0.infix = lspace:thickmathspace rspace:thickmathspace # &NotPrecedesSlantEqual;
-operator.\u22EB.infix = lspace:thickmathspace rspace:thickmathspace # &NotRightTriangle;
-operator.\u29D0\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &NotRightTriangleBar;
-operator.\u22ED.infix = lspace:thickmathspace rspace:thickmathspace # &NotRightTriangleEqual;
-operator.\u2281.infix = lspace:thickmathspace rspace:thickmathspace # &NotSucceeds;
-operator.\u2AB0\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &NotSucceedsEqual;
-operator.\u22E1.infix = lspace:thickmathspace rspace:thickmathspace # &NotSucceedsSlantEqual;
-operator.\u227F\u0338.infix = lspace:thickmathspace rspace:thickmathspace # &NotSucceedsTilde;
-operator.\u2241.infix = lspace:thickmathspace rspace:thickmathspace # &NotTilde;
-operator.\u2244.infix = lspace:thickmathspace rspace:thickmathspace # &NotTildeEqual;
-operator.\u2247.infix = lspace:thickmathspace rspace:thickmathspace # &NotTildeFullEqual;
-operator.\u2249.infix = lspace:thickmathspace rspace:thickmathspace # &NotTildeTilde;
-operator.\u2224.infix = lspace:thickmathspace rspace:thickmathspace # &NotVerticalBar;
-operator.\u227A.infix = lspace:thickmathspace rspace:thickmathspace # &Precedes;
-operator.\u2AAF.infix = lspace:thickmathspace rspace:thickmathspace # &PrecedesEqual;
-operator.\u227C.infix = lspace:thickmathspace rspace:thickmathspace # &PrecedesSlantEqual;
-operator.\u227E.infix = lspace:thickmathspace rspace:thickmathspace # &PrecedesTilde;
-operator.\u2AB3.infix = lspace:thickmathspace rspace:thickmathspace # &prE;
-operator.\u2AB7.infix = lspace:thickmathspace rspace:thickmathspace # &precapprox;
-operator.\u221D.infix = lspace:thickmathspace rspace:thickmathspace # &Proportional;
-operator.\u21CB.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &ReverseEquilibrium;
-operator.\u22B3.infix = lspace:thickmathspace rspace:thickmathspace # &RightTriangle;
-operator.\u29D0.infix = lspace:thickmathspace rspace:thickmathspace # &RightTriangleBar;
-operator.\u22B5.infix = lspace:thickmathspace rspace:thickmathspace # &RightTriangleEqual;
-operator.\u227B.infix = lspace:thickmathspace rspace:thickmathspace # &Succeeds;
-operator.\u2AB0.infix = lspace:thickmathspace rspace:thickmathspace # &SucceedsEqual;
-operator.\u227D.infix = lspace:thickmathspace rspace:thickmathspace # &SucceedsSlantEqual;
-operator.\u227F.infix = lspace:thickmathspace rspace:thickmathspace # &SucceedsTilde;
-operator.\u2AB4.infix = lspace:thickmathspace rspace:thickmathspace # &scE;
-operator.\u2AB8.infix = lspace:thickmathspace rspace:thickmathspace # &succapprox;
-operator.\u223C.infix = lspace:thickmathspace rspace:thickmathspace # &Tilde;
-operator.\u2243.infix = lspace:thickmathspace rspace:thickmathspace # &TildeEqual;
-operator.\u2245.infix = lspace:thickmathspace rspace:thickmathspace # &TildeFullEqual;
-operator.\u2248.infix = lspace:thickmathspace rspace:thickmathspace # &TildeTilde;
-operator.\u22A5.infix = lspace:thickmathspace rspace:thickmathspace # &UpTee;
-operator.\u2223.infix = stretchy:vertical lspace:thickmathspace rspace:thickmathspace # &VerticalBar;
-operator.\u2294.infix = stretchy:vertical lspace:mediummathspace rspace:mediummathspace # &SquareUnion;
-operator.\u22C3.infix = stretchy:vertical lspace:mediummathspace rspace:mediummathspace # &Union;
-operator.\u228E.infix = stretchy:vertical lspace:mediummathspace rspace:mediummathspace # &UnionPlus;
-operator.\u002D.infix = lspace:mediummathspace rspace:mediummathspace # -
-operator.\u002B.infix = lspace:mediummathspace rspace:mediummathspace # +
-operator.\u22C2.infix = stretchy:vertical lspace:mediummathspace rspace:mediummathspace # &Intersection;
-operator.\u2213.infix = lspace:mediummathspace rspace:mediummathspace # &MinusPlus;
-operator.\u00B1.infix = lspace:mediummathspace rspace:mediummathspace # &PlusMinus;
-operator.\u2293.infix = stretchy:vertical lspace:mediummathspace rspace:mediummathspace # &SquareIntersection;
-operator.\u22C1.prefix = stretchy:vertical largeop:true movablelimits:true lspace:0em rspace:thinmathspace # &Vee;
-operator.\u2296.prefix = largeop:true movablelimits:true lspace:0em rspace:thinmathspace # &CircleMinus;
-operator.\u2295.prefix = largeop:true movablelimits:true lspace:0em rspace:thinmathspace # &CirclePlus;
-operator.\u2A01.prefix = largeop:true movablelimits:true lspace:0em rspace:thinmathspace # &bigoplus;
-operator.\u2211.prefix = stretchy:vertical largeop:true movablelimits:true lspace:0em rspace:thinmathspace # &Sum;
-operator.\u22C3.prefix = stretchy:vertical largeop:true movablelimits:true lspace:0em rspace:thinmathspace # &Union;
-operator.\u228E.prefix = stretchy:vertical largeop:true movablelimits:true lspace:0em rspace:thinmathspace # &UnionPlus;
-operator.\u2A04.prefix = stretchy:vertical largeop:true movablelimits:true lspace:0em rspace:thinmathspace # &biguplus;
-operator.\u2A06.prefix = stretchy:vertical largeop:true movablelimits:true lspace:0em rspace:thinmathspace # &bigsqcup;
-operator.\u006C\u0069\u006D.prefix = movablelimits:true lspace:0em rspace:thinmathspace # lim
-operator.\u006D\u0061\u0078.prefix = movablelimits:true lspace:0em rspace:thinmathspace # max
-operator.\u006D\u0069\u006E.prefix = movablelimits:true lspace:0em rspace:thinmathspace # min
-operator.\u2212.infix = lspace:mediummathspace rspace:mediummathspace # official Unicode minus sign
-operator.\u2212.prefix = lspace:0em rspace:veryverythinmathspace # official Unicode minus sign
-operator.\u2296.infix = lspace:thinmathspace rspace:thinmathspace # &CircleMinus;
-operator.\u2295.infix = lspace:thinmathspace rspace:thinmathspace # &CirclePlus;
-operator.\u2232.prefix = stretchy:vertical largeop:true lspace:0em rspace:0em # &ClockwiseContourIntegral;
-operator.\u222E.prefix = stretchy:vertical largeop:true lspace:0em rspace:0em # &ContourIntegral;
-operator.\u2233.prefix = stretchy:vertical largeop:true lspace:0em rspace:0em # &CounterClockwiseContourIntegral;
-operator.\u222F.prefix = stretchy:vertical largeop:true lspace:0em rspace:0em # &DoubleContourIntegral;
-operator.\u222B.prefix = stretchy:vertical largeop:true lspace:0em rspace:0em # &Integral;
-operator.\u22D3.infix = lspace:thinmathspace rspace:thinmathspace # &Cup;
-operator.\u22D2.infix = lspace:thinmathspace rspace:thinmathspace # &Cap;
-operator.\u2240.infix = lspace:thinmathspace rspace:thinmathspace # &VerticalTilde;
-operator.\u22C0.prefix = stretchy:vertical largeop:true movablelimits:true lspace:0em rspace:thinmathspace # &Wedge;
-operator.\u2297.prefix = largeop:true movablelimits:true lspace:0em rspace:thinmathspace # &CircleTimes;
-operator.\u2A02.prefix = largeop:true movablelimits:true lspace:0em rspace:thinmathspace # &bigotimes;
-operator.\u2210.prefix = stretchy:vertical largeop:true movablelimits:true lspace:0em rspace:thinmathspace # &Coproduct;
-operator.\u220F.prefix = stretchy:vertical largeop:true movablelimits:true lspace:0em rspace:thinmathspace # &Product;
-operator.\u22C2.prefix = stretchy:vertical largeop:true movablelimits:true lspace:0em rspace:thinmathspace # &Intersection;
-operator.\u2210.infix = lspace:thinmathspace rspace:thinmathspace # &Coproduct;
-operator.\u2606.infix = lspace:thinmathspace rspace:thinmathspace # &star;
-operator.\u22C6.infix = lspace:thinmathspace rspace:thinmathspace # &Star;
-operator.\u2299.prefix = largeop:true movablelimits:true lspace:0em rspace:thinmathspace # &CircleDot;
-operator.\u2A00.prefix = largeop:true movablelimits:true lspace:0em rspace:thinmathspace # &bigodot;
-operator.\u002A.infix = lspace:thinmathspace rspace:thinmathspace # *
-operator.\u2062.infix = lspace:0em rspace:0em # &InvisibleTimes;
-operator.\u00B7.infix = lspace:thinmathspace rspace:thinmathspace # &CenterDot;
-operator.\u2297.infix = lspace:thinmathspace rspace:thinmathspace # &CircleTimes;
-operator.\u22C1.infix = lspace:thinmathspace rspace:thinmathspace # &Vee;
-operator.\u22C0.infix = lspace:thinmathspace rspace:thinmathspace # &Wedge;
-operator.\u22C4.infix = lspace:thinmathspace rspace:thinmathspace # &Diamond;
-operator.\u2216.infix = stretchy:vertical lspace:thinmathspace rspace:thinmathspace # &Backslash;
-operator.\u002F.infix = stretchy:vertical lspace:thinmathspace rspace:thinmathspace # /
-operator.\u002D.prefix = lspace:0em rspace:veryverythinmathspace # -
-operator.\u002B.prefix = lspace:0em rspace:veryverythinmathspace # +
-operator.\u2213.prefix = lspace:0em rspace:veryverythinmathspace # &MinusPlus;
-operator.\u00B1.prefix = lspace:0em rspace:veryverythinmathspace # &PlusMinus;
-operator.\u002E.infix = lspace:0em rspace:0em # .
-operator.\u2A2F.infix = lspace:verythinmathspace rspace:verythinmathspace # &Cross;
-operator.\u002A\u002A.infix = lspace:verythinmathspace rspace:verythinmathspace # **
-operator.\u2299.infix = lspace:verythinmathspace rspace:verythinmathspace # &CircleDot;
-operator.\u2218.infix = lspace:verythinmathspace rspace:verythinmathspace # &SmallCircle;
-operator.\u25A1.prefix = lspace:0em rspace:verythinmathspace # &Square;
-operator.\u2207.prefix = lspace:0em rspace:verythinmathspace # &Del;
-operator.\u2202.prefix = lspace:0em rspace:verythinmathspace # &PartialD;
-operator.\u2145.prefix = lspace:0em rspace:verythinmathspace # &CapitalDifferentialD;
-operator.\u2146.prefix = lspace:0em rspace:verythinmathspace # &DifferentialD;
-operator.\u221A.prefix = stretchy:vertical lspace:0em rspace:verythinmathspace # &Sqrt;
-operator.\u21D3.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &DoubleDownArrow;
-operator.\u27F8.infix = stretchy:horizontal lspace:verythinmathspace rspace:verythinmathspace # &DoubleLongLeftArrow;
-operator.\u27FA.infix = stretchy:horizontal lspace:verythinmathspace rspace:verythinmathspace # &DoubleLongLeftRightArrow;
-operator.\u27F9.infix = stretchy:horizontal lspace:verythinmathspace rspace:verythinmathspace # &DoubleLongRightArrow;
-operator.\u21D1.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &DoubleUpArrow;
-operator.\u21D5.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &DoubleUpDownArrow;
-operator.\u2193.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &DownArrow;
-operator.\u2913.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &DownArrowBar;
-operator.\u21F5.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &DownArrowUpArrow;
-operator.\u21A7.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &DownTeeArrow;
-operator.\u2961.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &LeftDownTeeVector;
-operator.\u21C3.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &LeftDownVector;
-operator.\u2959.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &LeftDownVectorBar;
-operator.\u2951.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &LeftUpDownVector;
-operator.\u2960.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &LeftUpTeeVector;
-operator.\u21BF.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &LeftUpVector;
-operator.\u2958.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &LeftUpVectorBar;
-operator.\u27F5.infix = stretchy:horizontal lspace:verythinmathspace rspace:verythinmathspace # &LongLeftArrow;
-operator.\u27F7.infix = stretchy:horizontal lspace:verythinmathspace rspace:verythinmathspace # &LongLeftRightArrow;
-operator.\u27F6.infix = stretchy:horizontal lspace:verythinmathspace rspace:verythinmathspace # &LongRightArrow;
-operator.\u296F.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &ReverseUpEquilibrium;
-operator.\u295D.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &RightDownTeeVector;
-operator.\u21C2.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &RightDownVector;
-operator.\u2955.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &RightDownVectorBar;
-operator.\u294F.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &RightUpDownVector;
-operator.\u295C.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &RightUpTeeVector;
-operator.\u21BE.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &RightUpVector;
-operator.\u2954.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &RightUpVectorBar;
-operator.\u2193\u200B.infix = lspace:verythinmathspace rspace:verythinmathspace # &ShortDownArrow;
-operator.\u2191\u200B.infix = lspace:verythinmathspace rspace:verythinmathspace # &ShortUpArrow;
-operator.\u2191.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &UpArrow;
-operator.\u2912.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &UpArrowBar;
-operator.\u21C5.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &UpArrowDownArrow;
-operator.\u2195.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &UpDownArrow;
-operator.\u296E.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &UpEquilibrium;
-operator.\u21A5.infix = stretchy:vertical lspace:verythinmathspace rspace:verythinmathspace # &UpTeeArrow;
-operator.\u005E.infix = lspace:verythinmathspace rspace:verythinmathspace # ^
-operator.\u003C\u003E.infix = lspace:verythinmathspace rspace:verythinmathspace # &lt;>
-operator.\u0027.postfix = lspace:verythinmathspace rspace:0em # '
-operator.\u0021.postfix = lspace:verythinmathspace rspace:0em # !
-operator.\u0021\u0021.postfix = lspace:verythinmathspace rspace:0em # !!
-operator.\u007E.infix = lspace:verythinmathspace rspace:verythinmathspace # ~
-operator.\u0040.infix = lspace:verythinmathspace rspace:verythinmathspace # @
-operator.\u002D\u002D.postfix = lspace:verythinmathspace rspace:0em # --
-operator.\u002D\u002D.prefix = lspace:0em rspace:verythinmathspace # --
-operator.\u002B\u002B.postfix = lspace:verythinmathspace rspace:0em # ++
-operator.\u002B\u002B.prefix = lspace:0em rspace:verythinmathspace # ++
-operator.\u2061.infix = lspace:0em rspace:0em # &ApplyFunction;
-operator.\u003F.infix = lspace:verythinmathspace rspace:verythinmathspace # ?
-operator.\u005F.infix = lspace:verythinmathspace rspace:verythinmathspace # _
-operator.\u02D8.postfix = accent:true lspace:0em rspace:0em # &Breve;
-operator.\u00B8.postfix = accent:true lspace:0em rspace:0em # &Cedilla;
-operator.\u0060.postfix = accent:true lspace:0em rspace:0em # &DiacriticalGrave;
-operator.\u02D9.postfix = accent:true lspace:0em rspace:0em # &DiacriticalDot;
-operator.\u02DD.postfix = accent:true lspace:0em rspace:0em # &DiacriticalDoubleAcute;
-operator.\u00B4.postfix = accent:true lspace:0em rspace:0em # &DiacriticalAcute;
-operator.\u02DC.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &DiacriticalTilde;
-operator.\u00A8.postfix = accent:true lspace:0em rspace:0em # &DoubleDot;
-operator.\u0311.postfix = accent:true lspace:0em rspace:0em # &DownBreve;
-operator.\u02C7.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &Hacek;
-operator.\u005E.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &Hat;
-operator.\u00AF.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &OverBar;
-operator.\u23DE.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &OverBrace; (Unicode)
-operator.\uFE37.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &OverBrace; (MathML 2.0)
-operator.\u23B4.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &OverBracket;
-operator.\u23DC.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &OverParenthesis; (Unicode)
-operator.\uFE35.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &OverParenthesis; (MathML 2.0)
-operator.\u20DB.postfix = accent:true lspace:0em rspace:0em # &TripleDot;
-operator.\u0332.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &UnderBar;
-operator.\u23DF.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &UnderBrace; (Unicode)
-operator.\uFE38.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &UnderBrace; (MathML 2.0)
-operator.\u23B5.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &UnderBracket;
-operator.\u23DD.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &UnderParenthesis; (Unicode)
-operator.\uFE36.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &UnderParenthesis; (MathML 2.0)
-operator.\u2225.prefix = stretchy:vertical fence:true lspace:.0em rspace:.0em # &DoubleVerticalBar;
-operator.\u2225.postfix = stretchy:vertical fence:true lspace:.0em rspace:.0em # &DoubleVerticalBar;
-operator.\u2016.prefix = stretchy:vertical fence:true lspace:.0em rspace:.0em # &Vert; &Verbar;
-operator.\u2016.postfix = stretchy:vertical fence:true lspace:.0em rspace:.0em # &Vert; &Verbar;
-operator.\u2223.prefix = stretchy:vertical fence:true lspace:.0em rspace:.0em # &VerticalBar;
-operator.\u2223.postfix = stretchy:vertical fence:true lspace:.0em rspace:.0em # &VerticalBar;
-operator.\u007C.prefix = stretchy:vertical fence:true lspace:.0em rspace:.0em # |
-operator.\u007C.postfix = stretchy:vertical fence:true lspace:.0em rspace:.0em # |
-operator.\u20D7.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &#x20D7;
-operator.\u20D6.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &#x20D6;
-operator.\u20E1.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &#x20E1;
-operator.\u20D1.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &#x20D1;
-operator.\u20D0.postfix = stretchy:horizontal accent:true lspace:0em rspace:0em # &#x20D0;
-operator.\u21A9.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &hookleftarrow; &larrhk;
-operator.\u21AA.infix = stretchy:horizontal lspace:thickmathspace rspace:thickmathspace # &hookrightarrow; &rarrhk;
-operator.\u23B0.prefix = stretchy:vertical fence:true lspace:0em rspace:0em # &lmoustache; &lmoust;
-operator.\u23B1.postfix = stretchy:vertical fence:true lspace:0em rspace:0em # &rmoustache; &rmoust;
-operator.\u22C5.infix = lspace:thinmathspace rspace:thinmathspace # &cdot;
-operator.\u2282.infix = lspace:thickmathspace rspace:thickmathspace # &subset;
-
-
-##################################################################################
-# DOCUMENTATION ON HOW TO SETUP THE PROPERTY FILE ASSOCIATED TO EACH FONT
-# More fonts can be supported for stretchy characters by setting up mathfont
-# property files as described below.
-#
-# Each font should have its set of glyph data. For example, the glyph data for
-# the "Symbol" font and the "MT Extra" font are in "mathfontSymbol.properties"
-# and "mathfontMTExtra.properties", respectively. The font property file is a
-# set of all the stretchy MathML characters that can be rendered with that font
-# using larger and/or partial glyphs. Each stretchy character is associated to
-# a list in the font property file which gives, in that order, the 4 partial
-# glyphs: top (or left), middle, bottom (or right), glue; and the variants of
-# bigger sizes (if any). A position that is not relevant to a particular character
-# is indicated there with the UNICODE REPLACEMENT CHARACTER 0xFFFD.
-#
-# Characters that need to be built from other characters are said to be composite.
-# For example, characters like over/underbrace in CMEX10 have to be built from two
-# half stretchy chars and joined in the middle (TeXbook, p.225). Several (i.e., 2
-# or more) child characters can be composed in order to render another chararacter.
-# To specify such characters, their list of glyphs in the property file should be
-# given as space-separated segments of glyphs. Each segment gives the 4 partial glyphs
-# with which to build the child character that will be joined with its other siblings.
deleted file mode 100644
--- a/layout/mathml/base/src/mathfontCMEX10.properties
+++ /dev/null
@@ -1,105 +0,0 @@
-# ***** 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) 2001
-# 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 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 *****
-
-#  LOCALIZATION NOTE: FILE
-#  Do not translate anything in this file
-
-# This file contains the list of all stretchy MathML chars that
-# can be rendered with the indicated mathfont.
-mathfont = CMEX10
-
-# There is a nebulous entanglement between the parts of stretchy chars in
-# TeX fonts. The convention used here is to enlist horizontal stretchy chars
-# in the property file of cmsy, and enlist vertical stretchy chars in the
-# property file of cmex. Exception: composite chars like under/over brace
-# are all enlisted in cmex.
-
-#        [ T/L |  M  | B/R |  G  | size0 ... size{N-1} ]
-\u0028 = \uF8FF\uFFFD\uF8FF\uF8FF\u0028\uF8FF\uF8FF\uF8FF\uF8FF # (
-\u0029 = \uF8FF\uFFFD\uF8FF\uF8FF\u0029\uF8FF\uF8FF\uF8FF\uF8FF # )
-\u002F = \uFFFD\uFFFD\uFFFD\uFFFD\u002F\uF8FF\uF8FF\uF8FF\uF8FF # /
-\u005B = \uF8FF\uFFFD\uF8FF\uF8FF\u005B\uF8FF\uF8FF\uF8FF\uF8FF # [
-\u005D = \uF8FF\uFFFD\uF8FF\uF8FF\u005D\uF8FF\uF8FF\uF8FF\uF8FF # ]
-\u007B = \uF8FF\uF8FF\uF8FF\uF8FF\u007B\uF8FF\uF8FF\uF8FF\uF8FF # {
-\u007D = \uF8FF\uF8FF\uF8FF\uFFFD\u007D\uF8FF\uF8FF\uF8FF\uF8FF # }
-\u02DC = \uFFFD\uFFFD\uFFFD\uFFFD\u02DC\uF8FF\uF8FF\uF8FF # DiacriticalTilde, tilde
-\u0302 = \uFFFD\uFFFD\uFFFD\uFFFD\u0302\uF8FF\uF8FF\uF8FF # Hat
-\u2191 = \uF8FF\uFFFD\uFFFD\uF8FF\u2191 # UpArrow, uarr, uparrow
-\u2193 = \uFFFD\uFFFD\uF8FF\uF8FF\u2193 # DownArrow, darr, downarrow
-\u2195 = \uF8FF\uFFFD\uF8FF\uF8FF\u2195 # UpDownArrow, updownarrow, varr
-\u21D1 = \uF8FF\uFFFD\uFFFD\uF8FF\u21D1 # DoubleUpArrow, Uparrow, uArr
-\u21D3 = \uFFFD\uFFFD\uF8FF\uF8FF\u21D3 # DoubleDownArrow, Downarrow, dArr
-\u21D5 = \uF8FF\uFFFD\uF8FF\uF8FF\u21D5 # DoubleUpDownArrow, Updownarrow, vArr
-\u220F = \uFFFD\uFFFD\uFFFD\uFFFD\u220F\uF8FF\uF8FF # Product, prod
-\u2210 = \uFFFD\uFFFD\uFFFD\uFFFD\u2210\uF8FF\uF8FF # Coproduct, coprod
-\u2211 = \uFFFD\uFFFD\uFFFD\uFFFD\u2211\uF8FF\uF8FF # Sum, sum
-\u2216 = \uFFFD\uFFFD\uFFFD\uFFFD\u2216\uF8FF\uF8FF\uF8FF\uF8FF # Backslash, setminus, setmn
-\u221A = \uF8FF\uFFFD\uF8FF\uF8FF\u221A\uF8FF\uF8FF\uF8FF\uF8FF # Sqrt, radic
-\u2223 = \uFFFD\uFFFD\uFFFD\uF8FF\u2223 # VerticalBar, mid
-\u2225 = \uFFFD\uFFFD\uFFFD\uF8FF\u2225 # DoubleVerticalBar, par, parallel
-\u2227 = \uFFFD\uFFFD\uFFFD\uFFFD\u2227\uF8FF\uF8FF # and, wedge
-\u2228 = \uFFFD\uFFFD\uFFFD\uFFFD\u2228\uF8FF\uF8FF # or, vee
-\u222B = \uFFFD\uFFFD\uFFFD\uFFFD\u222B\uF8FF\uF8FF # Integral, int
-\u222E = \uFFFD\uFFFD\uFFFD\uFFFD\u222E\uF8FF\uF8FF # ContourIntegral, conint, oint
-\u228E = \uFFFD\uFFFD\uFFFD\uFFFD\u228E\uF8FF\uF8FF # UnionPlus, biguplus, uplus, xuplus
-\u2294 = \uFFFD\uFFFD\uFFFD\uFFFD\u2294\uF8FF\uF8FF # SquareUnion, bigsqcup, sqcup, xsqcup
-\u2295 = \uFFFD\uFFFD\uFFFD\uFFFD\u2295\uF8FF\uF8FF # CirclePlus, bigoplus, oplus, xoplus
-\u2297 = \uFFFD\uFFFD\uFFFD\uFFFD\u2297\uF8FF\uF8FF # CircleTimes, bigotimes, otimes, xotime
-\u2299 = \uFFFD\uFFFD\uFFFD\uFFFD\u2299\uF8FF\uF8FF # CircleDot, bigodot, odot, xodot
-\u22C2 = \uFFFD\uFFFD\uFFFD\uFFFD\u22C2\uF8FF\uF8FF # Intersection, bigcap, xcap
-\u22C3 = \uFFFD\uFFFD\uFFFD\uFFFD\u22C3\uF8FF\uF8FF # Union, bigcup, xcup
-\u2308 = \u005B.T\uFFFD\uFFFD\u005B.G\u2308\uF8FF\uF8FF\uF8FF\uF8FF # LeftCeiling, lceil
-\u2309 = \u005D.T\uFFFD\uFFFD\u005D.G\u2309\uF8FF\uF8FF\uF8FF\uF8FF # RightCeiling, rceil
-\u230A = \uFFFD\uFFFD\u005B.B\u005B.G\u230A\uF8FF\uF8FF\uF8FF\uF8FF # LeftFloor, lfloor
-\u230B = \uFFFD\uFFFD\u005D.B\u005D.G\u230B\uF8FF\uF8FF\uF8FF\uF8FF # RightFloor, rfloor
-\u2329 = \uFFFD\uFFFD\uFFFD\uFFFD\u2329\uF8FF\uF8FF\uF8FF\uF8FF # LeftAngleBracket, lang, langle
-\u232A = \uFFFD\uFFFD\uFFFD\uFFFD\u232A\uF8FF\uF8FF\uF8FF\uF8FF # RightAngleBracket, rang, rangle
-
-# Support for under/over brace from space-separated composite pieces, note null glue and middle.
-# Use slightly different definitions -- their purpose is to illustrate possible annotations.
-\uFE37 = \uFE37.L\uFFFD\uFE38.R\uFFFD \uFE38.L\uFFFD\uFE37.R\uFFFD # OverBrace
-\uFE38 = \uF8FF\uFFFD\uFE37.R\uFFFD \uFE37.L\uFFFD\uF8FF\uFFFD # UnderBrace
-
-# Support for l/r moustache from the parts of lbrace { and rbrace } 
-\u23B0 = \u007B.T\uFFFD\u007D.B\u007B.G\u23B0 # lmoustache, lmoust
-\u23B1 = \u007D.T\uFFFD\u007B.B\u007D.G\u23B1 # rmoustache, rmoust
-
-# Make | behave like VerticalBar because most people use | for fences
-\u007C = \uFFFD\uFFFD\uFFFD\u2223.G\u007C # |
-
-#Make Vert behave like DoubleVerticalBar
-\u2016 = \uFFFD\uFFFD\uFFFD\u2225.G\u2016 # Vert, Verbar
deleted file mode 100644
--- a/layout/mathml/base/src/mathfontCMSY10.properties
+++ /dev/null
@@ -1,78 +0,0 @@
-# ***** 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) 2001
-# 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 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 *****
-
-#  LOCALIZATION NOTE: FILE
-#  Do not translate anything in this file
-
-# This file contains the list of all stretchy MathML chars that
-# can be rendered with the indicated mathfont.
-mathfont = CMSY10
-
-# There is a nebulous entanglement between the parts of stretchy chars in
-# TeX fonts. The convention used here is to enlist horizontal stretchy chars
-# in the property file of cmsy, and enlist vertical stretchy chars in the
-# property file of cmex. Exception: composite chars like under/over brace
-# are all enlisted in cmex.
-
-external.1 = CMR10
-external.2 = CMMI10
-
-#        [ T/L |  M  | B/R |  G  | size0 ... size{N-1} ]
-\u2190 = \u2190\uFFFD\uFFFD\u2212\u2190 # LeftArrow, larr, leftarrow
-\u2192 = \uFFFD\uFFFD\u2192\u2212\u2192 # RightArrow, rarr, rightarrow
-\u2194 = \u2190\uFFFD\u2192\u2212\u2194 # LeftRightArrow, harr, leftrightarrow
-\u21A9 = \u2190\uFFFD\uF8FF@2\u2212\u21A9 # hookleftarrow, larrhk
-\u21AA = \uF8FF@2\uFFFD\u2192\u2212\u21AA # hookrightarrow, rarrhk
-\u21A6 = \uF8FF\uFFFD\u2192\u2212\u21A6 # RightTeeArrow, map, mapsto
-\u21C0 = \uFFFD\uFFFD\u21C0@2\u2212\u21C0 # RightVector, rharu, rightharpoonup
-\u21C1 = \uFFFD\uFFFD\u21C1@2\u2212\u21C1 # DownRightVector, rhard, rightharpoondown
-\u21BC = \u21BC@2\uFFFD\uFFFD\u2212\u21BC # LeftVector, leftharpoonup, lharu
-\u21BD = \u21BD@2\uFFFD\uFFFD\u2212\u21BD # DownLeftVector, leftharpoondown, lhard
-\u295B = \uF8FF\uFFFD\u21C0@2\u2212\u295B  #RIGHTWARDS HARPOON WITH BARB UP FROM BAR, RightTeeVector
-\u295F = \uF8FF\uFFFD\u21C1@2\u2212\u295F  #RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR, DownRightTeeVector
-\u294E = \u21BC@2\uFFFD\u21C0@2\u2212\u294E #LEFT BARB UP RIGHT BARB UP HARPOON, LeftRightVector
-\u2950 = \u21BD@2\uFFFD\u21C1@2\u2212\u2950 #LEFT BARB DOWN RIGHT BARB DOWN HARPOON , DownLeftRightVector
-\u21D0 = \u21D0\uFFFD\uFFFD\u003D@1\u21D0 # DoubleLeftArrow, Leftarrow, lArr
-\u21D4 = \u21D0\uFFFD\u21D2\u003D@1\u21D4 # DoubleLeftRightArrow, Leftrightarrow, hArr, iff
-\u21D2 = \uFFFD\uFFFD\u21D2\u003D@1\u21D2 # DoubleRightArrow, Implies, Rightarrow, rArr
-
-\uF576 = \u2190\uFFFD\uFFFD\u2212\uF576 # LongLeftArrow
-\uF577 = \uFFFD\uFFFD\u2192\u2212\uF577 # LongRightArrow
-\uF578 = \u2190\uFFFD\u2192\u2212\uF578 # LongLeftRightArrow
-\uF579 = \u21D0\uFFFD\uFFFD\u003D@1\uF579 # DoubleLongLeftArrow
-\uF57A = \uFFFD\uFFFD\u21D2\u003D@1\uF57A # DoubleLongRightArrow
-\uF57B = \u21D0\uFFFD\u21D2\u003D@1\uF57B # DoubleLongLeftRightArrow
deleted file mode 100644
--- a/layout/mathml/base/src/mathfontMTExtra.properties
+++ /dev/null
@@ -1,52 +0,0 @@
-# ***** 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 University Of Queensland are
-# Copyright (C) 2001 The University Of Queensland.  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 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 *****
-
-#  LOCALIZATION NOTE: FILE
-#  Do not translate anything in this file
-
-# This file contains the list of all stretchy MathML chars that
-# can be rendered with the indicated mathfont.
-mathfont = MT Extra
-
-#        [ T/L |  M  | B/R |  G  | size0 ... size{N-1} ]
-\uF613 = \uEC00\uEC01\uEC02\uEC03\uF613
-\uF612 = \uEC04\uEC05\uEC06\uEC03\uF612
-#disable for now as they appear too small and don't align properly at default font-size
-#\u20D6 = \u20D6\uFFFD\uFFFD\uEB00\u20D6
-#\u20D7 = \uFFFD\uFFFD\u20D7\uEB00\u20D7
-#\u20E1 = \u20D6\uFFFD\u20D7\uEB00\u20E1
-#\u20D0 = \u20D0\uFFFD\uFFFD\uEB00\u20D0
-#\u20D1 = \uFFFD\uFFFD\u20D1\uEB00\u20D1
deleted file mode 100644
--- a/layout/mathml/base/src/mathfontMath1.properties
+++ /dev/null
@@ -1,67 +0,0 @@
-# ***** 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) 2001
-# 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 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 *****
-
-#  LOCALIZATION NOTE: FILE
-#  Do not translate anything in this file
-
-# This file contains the list of all stretchy MathML chars that
-# can be rendered with the indicated mathfont.
-mathfont = Math1
-
-#        [ T/L |  M  | B/R |  G  | size0 ... size{N-1} ]
-\u0028 = \uF8FF\uFFFD\uF8FF\uF8FF\u0028 # (
-\u0029 = \uF8FF\uFFFD\uF8FF\uF8FF\u0029 # )
-\u005B = \uF8FF\uFFFD\uF8FF\uF8FF\u005B # [
-\u005D = \uF8FF\uFFFD\uF8FF\uF8FF\u005D # ]
-\u007B = \uF8FF\uF8FF\uF8FF\uF8FF\u007B # {
-\u007D = \uF8FF\uF8FF\uF8FF\uF8FF\u007D # }
-\u007C = \uFFFD\uFFFD\uFFFD\u007C\u007C # |
-\u2190 = \u2190\uFFFD\uFFFD\uF8FF\u2190 # LeftArrow, larr, leftarrow
-\u2191 = \u2191\uFFFD\uFFFD\uF8FF\u2191 # UpArrow, uarr, uparrow
-\u2192 = \uFFFD\uFFFD\u2192\uF8FF\u2192 # RightArrow, rarr, rightarrow
-\u2193 = \uFFFD\uFFFD\u2193\uF8FF\u2193 # DownArrow, darr, downarrow
-\u2194 = \u2190\uFFFD\u2192\uF8FF\u2194 # LeftRightArrow, harr, leftrightarrow
-\u2195 = \u2193\uFFFD\u2191\uF8FF\u2195 # UpDownArrow, updownarrow, varr
-\u21D0 = \u21D0\uFFFD\uFFFD\uF8FF\u21D0 # DoubleLeftArrow, Leftarrow, lArr
-\u21D1 = \u21D1\uFFFD\uFFFD\uF8FF\u21D1 # DoubleUpArrow, Uparrow, uArr
-\u21D2 = \uFFFD\uFFFD\u21D2\uF8FF\u21D2 # DoubleRightArrow, Implies, Rightarrow, rArr
-\u21D3 = \uFFFD\uFFFD\u21D3\uF8FF\u21D3 # DoubleDownArrow, Downarrow, dArr
-\u21D4 = \u21D0\uFFFD\u21D2\uF8FF\u21D4 # DoubleLeftRightArrow, Leftrightarrow, hArr, iff
-\u21D5 = \u21D1\uFFFD\u21D3\uF8FF\u21D5 # DoubleUpDownArrow, Updownarrow, vArr
-\u222B = \u2320\uFFFD\u2321\uF8FF\u222B # Integral, int
-\u230A = \uFFFD\uFFFD\u005B.B\u005B.G\u230A # LeftFloor, lfloor
-\u230B = \uFFFD\uFFFD\u005D.B\u005D.G\u230B # RightFloor, rfloor
deleted file mode 100644
--- a/layout/mathml/base/src/mathfontMath2.properties
+++ /dev/null
@@ -1,93 +0,0 @@
-# ***** 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) 2001
-# 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 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 *****
-
-#  LOCALIZATION NOTE: FILE
-#  Do not translate anything in this file
-
-# This file contains the list of all stretchy MathML chars that
-# can be rendered with the indicated mathfont.
-mathfont = Math2
-
-#        [ T/L |  M  | B/R |  G  | size0 ... size{N-1} ]
-\u0028 = \uF8FF\uFFFD\uF8FF\uF8FF\u0028\uF8FF\uF8FF\uF8FF # (
-\u0029 = \uF8FF\uFFFD\uF8FF\uF8FF\u0029\uF8FF\uF8FF\uF8FF # )
-\u002F = \uFFFD\uFFFD\uFFFD\uFFFD\u002F\uF8FF\uF8FF\uF8FF # /
-\u005B = \uF8FF\uFFFD\uF8FF\uF8FF\u005B\uF8FF\uF8FF\uF8FF # [
-\u005D = \uF8FF\uFFFD\uF8FF\uF8FF\u005D\uF8FF\uF8FF\uF8FF # ]
-\u007B = \uF8FF\uF8FF\uF8FF\uF8FF\u007B\uF8FF\uF8FF\uF8FF # {
-\u007D = \uF8FF\uF8FF\uF8FF\uF8FF\u007D\uF8FF\uF8FF\uF8FF # }
-\u02DC = \uFFFD\uFFFD\uFFFD\uFFFD\u02DC\uF8FF\uF8FF\uF8FF # DiacriticalTilde, tilde
-\u21BC = \u21BC\uFFFD\uFFFD\uF8FF\u21BC # LeftVector, leftharpoonup, lharu
-\u21C0 = \uFFFD\uFFFD\u21C0\uF8FF\u21C0 # RightVector, rharu, rightharpoonup
-\u220F = \uFFFD\uFFFD\uFFFD\uFFFD\u220F\uF8FF\uF8FF # Product, prod
-\u2211 = \uFFFD\uFFFD\uFFFD\uFFFD\u2211\uF8FF\uF8FF # Sum, sum
-\u2216 = \uFFFD\uFFFD\uFFFD\uFFFD\u2216\uF8FF\uF8FF\uF8FF # Backslash, setminus, setmn
-\u221A = \uF8FF\uFFFD\uF8FF\uF8FF\u221A\uF8FF\uF8FF\uF8FF # Sqrt, radic
-\u2223 = \uFFFD\uFFFD\uFFFD\uF8FF\u2223\uF8FF\uF8FF\uF8FF # VerticalBar, mid
-\u2225 = \uFFFD\uFFFD\uFFFD\uF8FF\u2225\uF8FF\uF8FF\uF8FF # DoubleVerticalBar, par, parallel
-\u222B = \uFFFD\uFFFD\uFFFD\uFFFD\u222B\uF8FF\uF8FF # Integral, int
-\u222E = \uFFFD\uFFFD\uFFFD\uFFFD\u222E\uF8FF\uF8FF # ContourIntegral, conint, oint
-\u222F = \uFFFD\uFFFD\uFFFD\uFFFD\u222F\uF8FF\uF8FF # Conint, DoubleContourIntegral
-\u2232 = \uFFFD\uFFFD\uFFFD\uFFFD\u2232\uF8FF\uF8FF # ClockwiseContourIntegral, cwconint
-\u2233 = \uFFFD\uFFFD\uFFFD\uFFFD\u2233\uF8FF\uF8FF # CounterClockwiseContourIntegral, awconint
-\u228E = \uFFFD\uFFFD\uFFFD\uFFFD\u228E\uF8FF\uF8FF # UnionPlus, biguplus, uplus, xuplus
-\u2293 = \uFFFD\uFFFD\uFFFD\uFFFD\u2293\uF8FF\uF8FF # SquareIntersection, sqcap
-\u2294 = \uFFFD\uFFFD\uFFFD\uFFFD\u2294\uF8FF\uF8FF # SquareUnion, bigsqcup, sqcup, xsqcup
-\u22C0 = \uFFFD\uFFFD\uFFFD\uFFFD\u22C0\uF8FF\uF8FF # Wedge, bigwedge, xwedge
-\u22C1 = \uFFFD\uFFFD\uFFFD\uFFFD\u22C1\uF8FF\uF8FF # Vee, bigvee, xvee
-\u22C2 = \uFFFD\uFFFD\uFFFD\uFFFD\u22C2\uF8FF\uF8FF # Intersection, bigcap, xcap
-\u22C3 = \uFFFD\uFFFD\uFFFD\uFFFD\u22C3\uF8FF\uF8FF # Union, bigcup, xcup
-\u2329 = \uFFFD\uFFFD\uFFFD\uFFFD\u2329\uF8FF\uF8FF\uF8FF # LeftAngleBracket, lang, langle
-\u232A = \uFFFD\uFFFD\uFFFD\uFFFD\u232A\uF8FF\uF8FF\uF8FF # RightAngleBracket, rang, rangle
-\u294E = \u21BC\uFFFD\u21C0\uF8FF\u294E # LeftRightVector
-\u2A0D = \uFFFD\uFFFD\uFFFD\uFFFD\u2A0D\uF8FF\uF8FF # fpartint
-\u2A16 = \uFFFD\uFFFD\uFFFD\uFFFD\u2A16\uF8FF\uF8FF # quatint
-\u301A = \uF8FF\uFFFD\uF8FF\uF8FF\u301A\uF8FF\uF8FF\uF8FF # LeftDoubleBracket, lobrk
-\u301B = \uF8FF\uFFFD\uF8FF\uF8FF\u301B\uF8FF\uF8FF\uF8FF # RightDoubleBracket, robrk
-\u2758 = \uFFFD\uFFFD\uFFFD\u2758\u2758\uF8FF\uF8FF\uF8FF # VerticalSeparator
-
-\u2308 = \u005B.T\uFFFD\uFFFD\u005B.G\u2308\uF8FF\uF8FF\uF8FF # LeftCeiling, lceil
-\u2309 = \u005D.T\uFFFD\uFFFD\u005D.G\u2309\uF8FF\uF8FF\uF8FF # RightCeiling, rceil
-\u230A = \uFFFD\uFFFD\u005B.B\u005B.G\u230A\uF8FF\uF8FF\uF8FF # LeftFloor, lfloor
-\u230B = \uFFFD\uFFFD\u005D.B\u005D.G\u230B\uF8FF\uF8FF\uF8FF # RightFloor, rfloor
-
-\u20D6 = \u20D6\uFFFD\uFFFD\uF8FF\u20D6 
-\u20D7 = \uFFFD\uFFFD\u20D7\uF8FF\u20D7 
-\u20E1 = \u20D6\uFFFD\u20D7\uF8FF\u20E1 
-
-#Make Vert behave like DoubleVerticalBar
-\u2016 = \uFFFD\uFFFD\uFFFD\u2225.G\u2016\u2225.1\u2225.2\u2225.3 # Vert, Verbar
deleted file mode 100644
--- a/layout/mathml/base/src/mathfontMath4.properties
+++ /dev/null
@@ -1,110 +0,0 @@
-# ***** 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) 2001
-# 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 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 *****
-
-#  LOCALIZATION NOTE: FILE
-#  Do not translate anything in this file
-
-# This file contains the list of all stretchy MathML chars that
-# can be rendered with the indicated mathfont.
-mathfont = Math4
-
-#        [ T/L |  M  | B/R |  G  | size0 ... size{N-1} ]
-\u02C7 = \uFFFD\uFFFD\uFFFD\uFFFD\u02C7\uF8FF\uF8FF\uF8FF # Hacek, caron
-\u0302 = \uFFFD\uFFFD\uFFFD\uFFFD\u0302\uF8FF\uF8FF\uF8FF # Hat
-\u2190 = \u2190\uFFFD\uFFFD\uF8FF\u2190 # LeftArrow, larr, leftarrow
-\u2192 = \uFFFD\uFFFD\u2192\uF8FF\u2192 # RightArrow, rarr, rightarrow
-\u2194 = \u2190\uFFFD\u2192\uF8FF\u2194 # LeftRightArrow, harr, leftrightarrow
-\u2191 = \u2191\uFFFD\uFFFD\uF8FF\u2191 # UpArrow, uarr, uparrow
-\u2193 = \uFFFD\uFFFD\u2193\uFFFD\u2193 # DownArrow, darr, downarrow
-\u2196 = \uFFFD\uFFFD\uFFFD\uFFFD\u2196\uF8FF # UpperLeftArrow, nwarr, nwarrow
-\u2197 = \uFFFD\uFFFD\uFFFD\uFFFD\u2197\uF8FF # UpperRightArrow, nearr, nearrow
-\u2198 = \uFFFD\uFFFD\uFFFD\uFFFD\u2198\uF8FF # LowerRightArrow, searr, searrow
-\u2199 = \uFFFD\uFFFD\uFFFD\uFFFD\u2199\uF8FF # LowerLeftArrow, swarr, swarrow
-\u21A4 = \u2190.G\uFFFD\uF8FF\uF8FF\u21A4 # LeftTeeArrow, mapstoleft
-\u21A5 = \u2191\uFFFD\uF8FF\u2191.G\u21A5 # UpTeeArrow, mapstoup
-\u21A6 = \uF8FF\uFFFD\uFFFD\uF8FF\u21A6 # RightTeeArrow, map, mapsto
-\u21A7 = \uF8FF\uFFFD\u2193\u2193.G\u21A7 # DownTeeArrow, mapstodown
-\u21A9 = \u2190\uFFFD\uF8FF\u2212\u21A9 # hookleftarrow, larrhk
-\u21AA = \uF8FF\uFFFD\u2192\u2212\u21AA # hookrightarrow, rarrhk
-\u21C4 = \uF8FF\uFFFD\uF8FF\uF8FF\u21C4 # RightArrowLeftArrow, rightleftarrows, rlarr
-\u21C5 = \uF8FF\uFFFD\uF8FF\uF8FF\u21C5 # UpArrowDownArrow, udarr
-\u21C6 = \uF8FF\uFFFD\uF8FF\uF8FF\u21C6 # LeftArrowRightArrow, leftrightarrows, lrarr
-\u21CB = \uF8FF\uFFFD\uF8FF\uF8FF\u21CB # ReverseEquilibrium, leftrightharpoons, lrhar
-\u21CC = \uF8FF\uFFFD\uF8FF\uF8FF\u21CC # Equilibrium, rightleftharpoons, rlhar
-\u21F5 = \uF8FF\uFFFD\uF8FF\uF8FF\u21F5 # DownArrowUpArrow, duarr
-\u23B4 = \uF8FF\uFFFD\uF8FF\uF8FF\u23B4\uF8FF\uF8FF\uF8FF # OverBracket, tbrk
-\u23B5 = \uF8FF\uFFFD\uF8FF\uF8FF\u23B5\uF8FF\uF8FF\uF8FF # UnderBracket, bbrk
-\u295C = \u2191\uFFFD\u21A5.B\u2191.G\u295C # RightUpTeeVector
-\u295D = \u21A7.T\uFFFD\u21C2\u2193.G\u295D # RightDownTeeVector
-\u2960 = \u21BF\uFFFD\u21A5.B\u2191.G\u2960 # LeftUpTeeVector
-\u2961 = \u21A7.T\uFFFD\u21C3\u2191.G\u2961 # LeftDownTeeVector
-\u21C3 = \uFFFD\uFFFD\u21C3\u2191.G\u21C3 # LeftDownVector
-\u2959 = \uFFFD\uFFFD\u2959\u2191.G\u2959 # LeftDownVectorBar
-\u21BF = \u21BF\uFFFD\uFFFD\u2191.G\u21BF # LeftUpVector
-\u2958 = \u2958\uFFFD\uFFFD\u2191.G\u2958 # LeftUpVectorBar
-\u2951 = \u21BF\uFFFD\u21C3\u2191.G\u21BE # LeftUpDownVector
-\u21BE = \u21BE\uFFFD\uFFFD\u2191.G\u21BE # RightUpVector
-\u2954 = \u2954\uFFFD\uFFFD\u2191.G\u2954 # RightUpVectorBar
-\u21C2 = \uFFFD\uFFFD\u21C2\u2191.G\u21C2 # RightDownVector
-\u2955 = \uFFFD\uFFFD\u2955\u2191.G\u2955 # RightDownVectorBar
-\u294F = \u21BE\uFFFD\u21C2\u2191.G\u294F # RightUpDownVector
-\u21BC = \u21BC\uFFFD\uFFFD\uF8FF\u21BC # LeftVector, leftharpoonup, lharu
-\u21C0 = \uFFFD\uFFFD\u21C0\uF8FF\u21C0 # RightVector, rharu, rightharpoonup
-\u2912 = \u2912\uFFFD\uFFFD\u2191.G\u2912 # UpArrowBar
-\u21E4 = \u21E4\uFFFD\uFFFD\u2190.G\u21E4 # LeftArrowBar
-\u21E5 = \uFFFD\uFFFD\u21E5\u2192.G\u21E5 # RightArrowBar
-\u2913 = \uFFFD\uFFFD\u2913\u2193.G\u2913 # DownArrowBar
-\u2953 = \uFFFD\uFFFD\u2953\u2192.G\u2953 # RightVectorBar
-\u295E = \u21BD\uFFFD\u21A4.R\u21A4.G\u295E # DownLeftTeeVector
-\u2956 = \u2956\uFFFD\uFFFD\u2190.G\u2956 # DownLeftVectorBar
-\u2957 = \uFFFD\uFFFD\u2957\u2192.G\u2957 # DownRightVectorBar
-\u295A = \u21BC\uFFFD\u21A4.R\u21A4.G\u295A # LeftTeeVector
-\uFE35 = \uF8FF\uFFFD\uF8FF\uF8FF\uFE35\uF8FF\uF8FF\uF8FF # OverParenthesis
-\uFE36 = \uF8FF\uFFFD\uF8FF\uF8FF\uFE36\uF8FF\uF8FF\uF8FF # UnderParenthesis
-\uFE37 = \uF8FF\uF8FF\uF8FF\uF8FF\uFE37\uF8FF\uF8FF\uF8FF # OverBrace
-\uFE38 = \uF8FF\uF8FF\uF8FF\uF8FF\uFE38\uF8FF\uF8FF\uF8FF # UnderBrace
-
-\uF576 = \u2190\uFFFD\uFFFD\u2190.G\uF576 # LongLeftArrow
-\uF577 = \uFFFD\uFFFD\u2192\u2190.G\uF577 # LongRightArrow
-\uF578 = \u2190\uFFFD\u2192\u2190.G\uF578 # LongLeftRightArrow
-\uF579 = \u21D0\uFFFD\uFFFD\u21D0.G\uF579 # DoubleLongLeftArrow
-\uF57A = \uFFFD\uFFFD\u21D2\u21D0.G\uF57A # DoubleLongRightArrow
-\uF57B = \u21D0\uFFFD\u21D2\u21D0.G\uF57B # DoubleLongLeftRightArrow
-
-#Disabled - they don't align properly
-#\u296E = \uF8FF\uFFFD\uF8FF\uF8FF\u296E # UpEquilibrium, udhar
-#\u296F = \uF8FF\uFFFD\uF8FF\uF8FF\u296F # ReverseUpEquilibrium, duhar
deleted file mode 100644
--- a/layout/mathml/base/src/mathfontPUA.properties
+++ /dev/null
@@ -1,587 +0,0 @@
-# ***** 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) 2001
-# 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 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 *****
-
-#  LOCALIZATION NOTE: FILE
-#  Do not translate anything in this file
-
-# This file contains the list of all MathML assignments to the PUA (the
-# Unicode's Private Use Area 0xE000-0xF8FF). The file is automatically
-# updated by the Perl script encode.pl when processing new MathFont
-# Encoding Tables. Other additions can be made by hand editing.
-# The comments with '>' are *significant*. They guide the Perl
-# script in its automatic processing.
-# See also http://www.mozilla.org/projects/mathml/fonts/encoding/
-
-#>StartSection1#####################################################
-# Assignments for variants and parts of stretchy characters.
-#
-# This list is active during MathML processing, i.e., it is loaded
-# and used to resolve the indirect references made in the
-# MathFont Property Files for glyphs of stretchy characters.
-
-############
-##Predefined (hand-edited) mappings
-
-# Halves of the integral. Although they are not in the PUA, they are
-# placed here so that no assignments are made in the PUA for them
-\u222B.T = \u2320
-\u222B.B = \u2321
-# Mappings from the Adobe' Symbol font that have become defacto
-# standards and are inherited for compatibility
-\u2191.G = \uF8E6
-\u2193.G = \uF8E6
-\u2195.G = \uF8E6
-\u2190.G = \uF8E7
-\u2192.G = \uF8E7
-\u2194.G = \uF8E7
-\u0028.T = \uF8EB
-\u0028.G = \uF8EC
-\u0028.B = \uF8ED
-\u005B.T = \uF8EE
-\u005B.G = \uF8EF
-\u005B.B = \uF8F0
-\u007B.T = \uF8F1
-\u007B.M = \uF8F2
-\u007B.B = \uF8F3
-\u007B.G = \uF8F4
-\u007D.G = \uF8F4
-\u222B.G = \uF8F5
-\u0029.T = \uF8F6
-\u0029.G = \uF8F7
-\u0029.B = \uF8F8
-\u005D.T = \uF8F9
-\u005D.G = \uF8FA
-\u005D.B = \uF8FB
-\u007D.T = \uF8FC
-\u007D.M = \uF8FD
-\u007D.B = \uF8FE
-
-###########
-##Generated mappings
-
-\u21A6.L = \uEFB9
-\u295B.L = \uEFB9
-\u295F.L = \uEFB9
-\u21AA.L = \uEFBA
-\u21A9.R = \uEFBB
-\u0029.4 = \uEFBC
-\u005B.4 = \uEFBD
-\u005D.4 = \uEFBE
-\u230A.4 = \uEFBF
-\u230B.4 = \uEFC0
-\u2308.4 = \uEFC1
-\u2309.4 = \uEFC2
-\u007B.4 = \uEFC3
-\u007D.4 = \uEFC4
-\u3008.4 = \uEFC5
-\u3009.4 = \uEFC6
-\u002F.4 = \uEFC7
-\u2216.4 = \uEFC8
-\u002F.2 = \uEFC9
-\u2216.2 = \uEFCA
-\u3008.2 = \uEFCB
-\u3009.2 = \uEFCC
-\u2294.1 = \uEFCD
-\u2294.2 = \uEFCE
-\u222E.1 = \uEFCF
-\u222E.2 = \uEFD0
-\u2299.1 = \uEFD1
-\u2299.2 = \uEFD2
-\u2295.1 = \uEFD3
-\u2295.2 = \uEFD4
-\u2297.1 = \uEFD5
-\u2297.2 = \uEFD6
-\u2211.1 = \uEFD7
-\u220F.1 = \uEFD8
-\u222B.1 = \uEFD9
-\u22C3.1 = \uEFDA
-\u22C2.1 = \uEFDB
-\u228E.1 = \uEFDC
-\u2227.1 = \uEFDD
-\u2228.1 = \uEFDE
-\u2211.2 = \uEFDF
-\u220F.2 = \uEFE0
-\u222B.2 = \uEFE1
-\u22C3.2 = \uEFE2
-\u22C2.2 = \uEFE3
-\u228E.2 = \uEFE4
-\u2227.2 = \uEFE5
-\u2228.2 = \uEFE6
-\u2210.1 = \uEFE7
-\u2210.2 = \uEFE8
-\u0302.1 = \uEFE9
-\u0302.2 = \uEFEA
-\u0302.3 = \uEFEB
-\u02DC.1 = \uEFEC
-\u02DC.2 = \uEFED
-\u02DC.3 = \uEFEE
-\u005B.2 = \uEFEF
-\u005D.2 = \uEFF0
-\u230A.2 = \uEFF1
-\u230B.2 = \uEFF2
-\u2308.2 = \uEFF3
-\u2309.2 = \uEFF4
-\u007B.2 = \uEFF5
-\u007D.2 = \uEFF6
-\u221A.1 = \uEFF7
-\u221A.2 = \uEFF8
-\u221A.3 = \uEFF9
-\u221A.4 = \uEFFA
-\u221A.B = \uEFFB
-\u221A.G = \uEFFC
-\u221A.T = \uEFFD
-\u21D1.G = \uEFFE
-\u21D3.G = \uEFFE
-\u21D5.G = \uEFFE
-\u2191.T = \uEFFF
-\u2195.T = \uEFFF
-\u2193.B = \uF000
-\u2195.B = \uF000
-\uFE37.L = \uF001
-\uFE37.R = \uF002
-\uFE38.L = \uF003
-\uFE38.R = \uF004
-\u21D1.T = \uF005
-\u21D5.T = \uF005
-\u0028.1 = \uF006
-\u0029.1 = \uF007
-\u005B.1 = \uF008
-\u005D.1 = \uF009
-\u230A.1 = \uF00A
-\u230B.1 = \uF00B
-\u2308.1 = \uF00C
-\u2309.1 = \uF00D
-\u007B.1 = \uF00E
-\u007D.1 = \uF00F
-\u3008.1 = \uF010
-\u3009.1 = \uF011
-\u2223.G = \uF012
-\u2225.G = \uF013
-\u002F.1 = \uF014
-\u2216.1 = \uF015
-\u0028.2 = \uF016
-\u0029.2 = \uF017
-\u0028.3 = \uF018
-\u0029.3 = \uF019
-\u005B.3 = \uF01A
-\u005D.3 = \uF01B
-\u230A.3 = \uF01C
-\u230B.3 = \uF01D
-\u2308.3 = \uF01E
-\u2309.3 = \uF01F
-\u007B.3 = \uF020
-\u007D.3 = \uF021
-\u3008.3 = \uF022
-\u3009.3 = \uF023
-\u002F.3 = \uF024
-\u2216.3 = \uF025
-\u0028.4 = \uF026
-\u21D3.B = \uF027
-\u21D5.B = \uF027
-\u2329.4 = \uF028
-\u232A.4 = \uF029
-\u2329.2 = \uF02A
-\u232A.2 = \uF02B
-\u2329.1 = \uF02C
-\u232A.1 = \uF02D
-\u2329.3 = \uF02E
-\u232A.3 = \uF02F
-\u21D0.G = \uF030
-\u21D2.G = \uF030
-\u21D4.G = \uF030
-#27/03/2001 7:40AM
-\u21CC.L = \uF031
-\u21CC.R = \uF032
-\u21CB.L = \uF033
-\u21CB.R = \uF034
-\u21A4.R = \uF035
-\u21C4.L = \uF036
-\u21C4.R = \uF037
-\u21C6.R = \uF038
-\u21C6.L = \uF039
-\u21A5.B = \uF03A
-\u21A7.T = \uF03B
-\u296E.B = \uF03C
-\u296F.T = \uF03E
-\u296E.T = \uF03F
-\u296F.B = \uF041
-\u21C5.B = \uF042
-\u21F5.T = \uF043
-\u21C5.T = \uF044
-\u21F5.B = \uF045
-\u21CC.G = \uF046
-\u21CB.G = \uF046
-\u21C4.G = \uF046
-\u21C6.G = \uF046
-\u23B4.1 = \uF047
-\u23B4.2 = \uF048
-\u23B4.3 = \uF049
-\u23B4.L = \uF04A
-\u23B4.G = \uF04B
-\u23B4.R = \uF04C
-\u23B5.1 = \uF04D
-\u23B5.2 = \uF04E
-\u23B5.3 = \uF04F
-\u23B5.L = \uF050
-\u23B5.G = \uF051
-\u23B5.R = \uF052
-\u2199.1 = \uF053
-\u2196.1 = \uF054
-\u2197.1 = \uF055
-\u2198.1 = \uF056
-\uFE35.1 = \uF057
-\uFE35.2 = \uF058
-\uFE35.3 = \uF059
-\uFE35.L = \uF05A
-\uFE35.G = \uF05B
-\uFE35.R = \uF05C
-\uFE37.1 = \uF05D
-\uFE37.2 = \uF05E
-\uFE37.3 = \uF05F
-\uFE37.G = \uF060
-\uFE37.M = \uF061
-\uFE36.1 = \uF062
-\uFE36.2 = \uF063
-\uFE36.3 = \uF064
-\uFE36.L = \uF065
-\uFE36.G = \uF066
-\uFE36.R = \uF067
-\uFE38.1 = \uF068
-\uFE38.2 = \uF069
-\uFE38.3 = \uF06A
-\uFE38.G = \uF06B
-\uFE38.M = \uF06C
-\u02C7.1 = \uF06D
-\u02C7.2 = \uF06E
-\u02C7.3 = \uF06F
-\u21A4.G = \uF8E7
-\u21A6.G = \uF8E7
-\u301A.1 = \uF070
-\u301A.2 = \uF071
-\u301A.3 = \uF072
-\u301B.1 = \uF073
-\u301B.2 = \uF074
-\u301B.3 = \uF075
-\u2308.G = \uF076
-\u230A.G = \uF076
-\u2309.G = \uF077
-\u230B.G = \uF077
-\u301A.B = \uF078
-\u301A.G = \uF079
-\u301A.T = \uF07A
-\u301B.B = \uF07B
-\u301B.G = \uF07C
-\u301B.T = \uF07D
-\u2223.1 = \uF07E
-\u2223.2 = \uF07F
-\u2223.3 = \uF080
-\u222F.1 = \uF081
-\u2233.1 = \uF082
-\u2232.1 = \uF083
-\u2A16.1 = \uF084
-\u2293.1 = \uF085
-\u222F.2 = \uF086
-\u2233.2 = \uF087
-\u2232.2 = \uF088
-\u2A16.2 = \uF089
-\u2293.2 = \uF08A
-\u2225.1 = \uF08B
-\u2225.2 = \uF08C
-\u2225.3 = \uF08D
-\u2A0D.1 = \uF08E
-\u2A0D.2 = \uF08F
-\u20D6.G = \uF090
-\u20D7.G = \uF090
-\u20E1.G = \uF090
-\u21BC.G = \uF090
-\u21C0.G = \uF090
-\u294E.G = \uF090
-\u22C1.1 = \uF091
-\u22C1.2 = \uF092
-\u22C0.1 = \uF093
-\u22C0.2 = \uF094
-\u2758.1 = \uF095
-\u2758.2 = \uF096
-\u2758.3 = \uF097
-\u21C5.G = \uF03D
-\u21F5.G = \uF03D
-\u296E.G = \uF040
-\u296F.G = \uF040
-#>EndSection1#######################################################
-
-
-#>StartSection2#####################################################
-# Assignments for entity references.
-#
-# This list is in a commented format so that it doesn't get loaded
-# during MathML rendering. This list is parsed by encode.pl to
-# determine if an entity has already been assigned to the PUA. If
-# so, the PUA code is simply re-used. Otherwise, encode.pl assigns
-# a new PUA code to the entity and updates this list to include the
-# new assignment. In other words, whenever an entity is encountered,
-# while processing a MathFont Encoding Table, it will be attempted
-# to be resolved here, and if the resolution fails, a new assignment
-# to the PUA is made for the entity. The list is subsequently used to
-# customize the MathML DTD used by Mozilla. 
-
-##Predefined (hand-edited) mappings
-#
-##From Adobe' Symbol font
-#>\uF8E8 =  #Registered sign sans serif, from Symbol [?unknown entity]
-#>\uF8E9 =  #Copyright sign sans serif, from Symbol [?unknown entity]
-#>\uF8EA =  #Trade mark sign sans serif, from Symbol [?unknown entity]
-#
-##From the MathML REC
-#>\uF558 = loang #LEFT WHITE ANGULAR BRACKET
-#>\uF559 = roang #RIGHT WHITE ANGULAR BRACKET
-#>\uF576 = xlarr, longleftarrow, LongLeftArrow #LONG LEFTWARDS ARROW
-#>\uF577 = xrarr, longrightarrow, LongRightArrow #LONG RIGHTWARDS ARROW
-#>\uF578 = xharr, longleftrightarrow, LongLeftRightArrow #LONG LEFT RIGHT ARROW
-#>\uF579 = xlArr, Longleftarrow, DoubleLongLeftArrow #LONG LEFTWARDS DOUBLE ARROW
-#>\uF57A = xrArr, Longrightarrow, DoubleLongRightArrow #LONG RIGHTWARDS DOUBLE ARROW
-#>\uF57B = xhArr, Longleftrightarrow, DoubleLongLeftRightArrow #LONG LEFT RIGHT DOUBLE ARROW
-#>\uF57D = xmap, longmapsto #LONG RIGHTWARDS ARROW FROM BAR
-#>\uF59B = FilledVerySmallSquare #BLACK VERY SMALL SQUARE
-#>\uF59C = EmptyVerySmallSquare #WHITE VERY SMALL SQUARE
-#>\uF5A2 = dzigrarr #RIGHTWARDS LONG ZIG-ZAG ARROW
-
-##Generated mappings
-#>\uEF06 = thksim, thicksim # 223C-FE00
-#>\uEF07 = nvsim # 2241-0338
-#>\uEF08 = NotEqualTilde, nesim # 2242-0338
-#>\uEF09 = thkap, thickapprox # 2248-FE00
-#>\uEF80 = ofr # 1D52C
-#>\uEF81 = pfr # 1D52D
-#>\uEF82 = qfr # 1D52E
-#>\uEF0A = nvap # 2249-0338
-#>\uEF83 = rfr # 1D52F
-#>\uEF0B = napid # 224B-0338
-#>\uEF84 = sfr # 1D530
-#>\uEF0C = NotHumpDownHump, nbump # 224E-0338
-#>\uEF0D = nbumpe, NotHumpEqual # 224F-0338
-#>\uEF85 = tfr # 1D531
-#>\uEF0E = nedot # 2260-FE00
-#>\uEF86 = ufr # 1D532
-#>\uEF0F = bnequiv # 2261-20E5
-#>\uEF87 = vfr # 1D533
-#>\uEF88 = wfr # 1D534
-#>\uEF89 = xfr # 1D535
-#>\uEF8A = yfr # 1D536
-#>\uEF10 = lvnE, lvertneqq # 2268-FE00
-#>\uEF8B = zfr # 1D537
-#>\uEF11 = gvnE, gvertneqq # 2269-FE00
-#>\uEF8C = Aopf # 1D538
-#>\uEF12 = nLt # 226A-0338
-#>\uEF8D = Bopf # 1D539
-#>\uEF13 = nLtv, NotLessLess # 226A-0338-FE00
-#>\uEF8E = Dopf # 1D53B
-#>\uEF14 = nGt # 226B-0338
-#>\uEF8F = Eopf # 1D53C
-#>\uEF15 = nGtv, NotGreaterGreater # 226B-0338-FE00
-#>\uEF16 = nle, nleq, NotLessEqual # 2270-20E5
-#>\uEF17 = nge, ngeq, NotGreaterEqual # 2271-20E5
-#>\uEF18 = NotSucceedsTilde # 227F-0338
-#>\uEF19 = suphsol # 2283-002F
-#>\uEF90 = Fopf # 1D53D
-#>\uEF91 = Gopf # 1D53E
-#>\uEF92 = Iopf # 1D540
-#>\uEF1A = vsubne, vsubnE, varsubsetneq, varsubsetneqq # 228A-FE00
-#>\uEF93 = Jopf # 1D541
-#>\uEF1B = vsupne, vsupnE, varsupsetneq, varsupsetneqq # 228B-FE00
-#>\uEF1C = NotSquareSubset # 228F-0338
-#>\uEF94 = Kopf # 1D542
-#>\uEF1D = NotSquareSuperset # 2290-0338
-#>\uEF95 = Lopf, imped # 1D543
-#>\uEF1E = sqcaps # 2293-FE00
-#>\uEF96 = Mopf # 1D544
-#>\uEF1F = sqcups # 2294-FE00
-#>\uEF97 = Oopf # 1D546
-#>\uEF98 = Sopf # 1D54A
-#>\uEF99 = Topf # 1D54B
-#>\uEFA0 = bopf # 1D553
-#>\uEFA1 = copf # 1D554
-#>\uEF9A = Uopf # 1D54C
-#>\uEF20 = nLl # 22D8-0338
-#>\uEFA2 = dopf # 1D555
-#>\uEF9B = Vopf # 1D54D
-#>\uEF21 = nGg # 22D9-0338
-#>\uEFA3 = eopf # 1D556
-#>\uEF9C = Wopf # 1D54E
-#>\uEF22 = lesg # 22DA-FE00
-#>\uEFA4 = fopf # 1D557
-#>\uEF9D = Xopf # 1D54F
-#>\uEF23 = gesl # 22DB-FE00
-#>\uEFA5 = gopf # 1D558
-#>\uEF9E = Yopf # 1D550
-#>\uEF24 = nvltrie # 22EC-0338
-#>\uEFA6 = hopf # 1D559
-#>\uEF9F = aopf # 1D552
-#>\uEF25 = nvrtrie # 22ED-0338
-#>\uEFA7 = iopf # 1D55A
-#>\uEF26 = notindot # 22F6-FE00
-#>\uEFA8 = jopf # 1D55B
-#>\uEF27 = ShortUpArrow # 2303-FE00
-#>\uEFA9 = kopf # 1D55C
-#>\uEF28 = ShortDownArrow # 2304-FE00
-#>\uEF29 = NotNestedLessLess # 24A1-0338
-#>\uEFAA = lopf # 1D55D
-#>\uEFAB = mopf # 1D55E
-#>\uEFAC = nopf # 1D55F
-#>\uEF2A = NotNestedGreaterGreater # 24A2-0338
-#>\uEFAD = oopf # 1D560
-#>\uEF2B = nrarrc # 2933-0338
-#>\uEFAE = popf # 1D561
-#>\uEF2C = angrtvb # 299D-FE00
-#>\uEFAF = qopf # 1D562
-#>\uEF2D = NotLeftTriangleBar # 29CF-0338
-#>\uEF2E = NotRightTriangleBar # 29D0-0338
-#>\uEF2F = ncongdot # 2A6D-0338
-#>\uEFB0 = ropf # 1D563
-#>\uEFB1 = sopf # 1D564
-#>\uEF30 = napE # 2A70-0338
-#>\uEFB2 = topf # 1D565
-#>\uEF31 = smtes # 2AAC-FE00
-#>\uEFB3 = uopf # 1D566
-#>\uEF32 = lates # 2AAD-FE00
-#>\uEFB4 = vopf # 1D567
-#>\uEF33 = npre, NotPrecedesEqual, npreceq # 2AAF-0338
-#>\uEFB5 = wopf # 1D568
-#>\uEF34 = nsce, NotSucceedsEqual, nsucceq # 2AB0-0338
-#>\uEFB6 = xopf # 1D569
-#>\uEF35 = Ascr # 1D49C
-#>\uEFB7 = yopf # 1D56A
-#>\uEF36 = Cscr # 1D49E
-#>\uEFB8 = zopf # 1D56B
-#>\uEF37 = Dscr # 1D49F
-#>\uEF38 = Gscr # 1D4A2
-#>\uEF39 = Jscr # 1D4A5
-#>\uEF3A = Kscr # 1D4A6
-#>\uEF3B = Nscr # 1D4A9
-#>\uEF3C = Oscr # 1D4AA
-#>\uEF3D = Pscr # 1D4AB
-#>\uEF3E = Qscr # 1D4AC
-#>\uEF3F = Sscr # 1D4AE
-#>\uEEEE = bne # 003D-20E5
-#>\uEEEF = bsolhsub # 005C-2282
-#>\uEF40 = Tscr # 1D4AF
-#>\uEF41 = Uscr # 1D4B0
-#>\uEEF0 = jmath # 006A-FE00
-#>\uEF42 = Vscr # 1D4B1
-#>\uEEF1 = NegativeThickSpace # 2005-FE00
-#>\uEF43 = Wscr # 1D4B2
-#>\uEEF2 = ThickSpace # 2009-200A-200A
-#>\uEF44 = Xscr # 1D4B3
-#>\uEEF3 = NegativeThinSpace # 2009-FE00
-#>\uEF45 = Yscr # 1D4B4
-#>\uEEF4 = NegativeVeryThinSpace # 200A-FE00
-#>\uEF46 = Zscr # 1D4B5
-#>\uEEF5 = NegativeMediumSpace # 205F-FE00
-#>\uEF47 = ascr # 1D4B6
-#>\uEEF6 = planck, hbar # 210F-FE00
-#>\uEF48 = bscr # 1D4B7
-#>\uEEF7 = slarr, ShortLeftArrow # 2190-FE00
-#>\uEEF8 = srarr, ShortRightArrow # 2192-FE00
-#>\uEF49 = cscr # 1D4B8
-#>\uEEF9 = nrarrw # 219D-0338
-#>\uEF4A = dscr # 1D4B9
-#>\uEF4B = fscr # 1D4BB
-#>\uEEFA = npart # 2202-0338
-#>\uEF4C = hscr # 1D4BD
-#>\uEEFB = empty, emptyset # 2205-FE00
-#>\uEF4D = iscr # 1D4BE
-#>\uEEFC = notinva # 2209-0338
-#>\uEF4E = jscr # 1D4BF
-#>\uEEFD = ssetmn, smallsetminus # 2216-FE00
-#>\uEF4F = kscr # 1D4C0
-#>\uEEFE = nang # 2220-0338
-#>\uEEFF = smid, shortmid # 2223-FE00
-#>\uEF50 = mscr # 1D4C2
-#>\uEF51 = nscr # 1D4C3
-#>\uEF52 = pscr # 1D4C5
-#>\uEF53 = qscr # 1D4C6
-#>\uEF54 = rscr # 1D4C7
-#>\uEF55 = sscr # 1D4C8
-#>\uEF56 = tscr # 1D4C9
-#>\uEF57 = uscr # 1D4CA
-#>\uEF58 = vscr # 1D4CB
-#>\uEF59 = wscr # 1D4CC
-#>\uEF5A = xscr # 1D4CD
-#>\uEF5B = yscr # 1D4CE
-#>\uEF5C = zscr # 1D4CF
-#>\uEF5D = Afr # 1D504
-#>\uEF5E = Bfr # 1D505
-#>\uEF5F = Dfr # 1D507
-#>\uEF60 = Efr # 1D508
-#>\uEF61 = Ffr # 1D509
-#>\uEF62 = Gfr # 1D50A
-#>\uEF63 = Jfr # 1D50D
-#>\uEF64 = Kfr # 1D50E
-#>\uEF65 = Lfr # 1D50F
-#>\uEF66 = Mfr # 1D510
-#>\uEF67 = Nfr # 1D511
-#>\uEF68 = Ofr # 1D512
-#>\uEF69 = Pfr # 1D513
-#>\uEF6A = Qfr # 1D514
-#>\uEF6B = Sfr # 1D516
-#>\uEF6C = Tfr # 1D517
-#>\uEF6D = Ufr # 1D518
-#>\uEF6E = Vfr # 1D519
-#>\uEF6F = Wfr # 1D51A
-#>\uEF70 = Xfr # 1D51B
-#>\uEF71 = Yfr # 1D51C
-#>\uEF72 = afr # 1D51E
-#>\uEF73 = bfr # 1D51F
-#>\uEF74 = cfr # 1D520
-#>\uEF75 = dfr # 1D521
-#>\uEF76 = efr # 1D522
-#>\uEF77 = ffr # 1D523
-#>\uEF78 = gfr # 1D524
-#>\uEF79 = hfr # 1D525
-#>\uEF7A = ifr # 1D526
-#>\uEF00 = nsmid, nshortmid # 2224-FE00
-#>\uEF7B = jfr # 1D527
-#>\uEF01 = spar, parsl, shortparallel # 2225-FE00
-#>\uEF7C = kfr # 1D528
-#>\uEF02 = nparsl # 2225-FE00-20E5
-#>\uEF7D = lfr # 1D529
-#>\uEF03 = nspar, nshortparallel # 2226-FE00
-#>\uEF7E = mfr # 1D52A
-#>\uEF04 = caps # 2229-FE00
-#>\uEF7F = nfr # 1D52B
-#>\uEF05 = cups # 222A-FE00
-#27/03/2001 7:41AM
-#>EndSection2#######################################################
deleted file mode 100644
--- a/layout/mathml/base/src/mathfontSTIXNonUnicode.properties
+++ /dev/null
@@ -1,101 +0,0 @@
-# ***** 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) 2001
-# the Initial Developer. All Rights Reserved.
-#                                                                       
-# Contributor(s):                                                       
-#   Roger B. Sidje <rbs@maths.uq.edu.au>                                
-#   Karl Tomlinson <karlt+@karlt.net>, Mozilla Corporation
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either 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 *****
-
-#  LOCALIZATION NOTE: FILE
-#  Do not translate anything in this file
-
-# This file contains the list of some stretchy MathML chars that
-# can be rendered with STIXNonUnicode.
-
-external.1 = STIXGeneral
-
-#        [ T/L |  M  | B/R |  G  | size0 ... size{N-1} ]
-# E0B4 stix-arrow hookleft
-# E0B5 stix-arrow hookright
-# E10B stix-extender for horizontal solid (normal) arrow
-# E10B in STIXNonUnicode is the same height as U+23AF in STIXGeneral but has a
-# different advance.
-\u21A9 = \u2190@1\uFFFD\uE0B5\uE10B # hookleftarrow, larrhk
-\u21AA = \uE0B4\uFFFD\u2192@1\uE10B # hookrightarrow, rarrhk
-
-# 0E10E stix-stix-extender for vertical double arrow
-# 0E10F stix-extender for horizontal double arrow
-\u21D0 = \u21D0@1\uFFFD\uFFFD\uE10F\uFFFD\u27F8@1 # DoubleLeftArrow, Leftarrow, lArr
-\u21D1 = \u21D1@1\uFFFD\uFFFD\uE10E # DoubleUpArrow, Uparrow, uArr
-\u21D2 = \uFFFD\uFFFD\u21D2@1\uE10F\uFFFD\u27F9@1 # DoubleRightArrow, Implies, Rightarrow, rArr
-\u21D3 = \uFFFD\uFFFD\u21D3@1\uE10E # DoubleDownArrow, Downarrow, dArr
-\u21D4 = \u21D0@1\uFFFD\u21D2@1\uE10F\uFFFD\u27FA@1 # DoubleLeftRightArrow, Leftrightarrow, hArr, iff
-\u21D5 = \u21D1@1\uFFFD\u21D3@1\uE10E # DoubleUpDownArrow, Updownarrow, vArr
-
-# STIXGeneral U+22A2/U+22A3 RIGHT/LEFT TACK are different heights to U+23AF.
-# Could use LONG RIGHT/LEFT TACK instead, but STIXNonUnicode provides
-# E0B6 stix-maps-to-relation tail
-\u21A4 = \u2190@1\uFFFD\uE0B6\uE10B\uFFFD\u27FB@1 # LeftTeeArrow, mapstoleft
-\u21A6 = \uE0B6\uFFFD\u2192@1\uE10B\uFFFD\u27FC@1 # RightTeeArrow, map, mapsto
-\u295A = \u21BC@1\uFFFD\uE0B6\uE10B # LeftTeeVector
-\u295B = \uE0B6\uFFFD\u21C0@1\uE10B # RIGHTWARDS HARPOON WITH BARB UP FROM BAR, RightTeeVector
-\u295E = \u21BD@1\uFFFD\uE0B6\uE10B # DownLeftTeeVector
-\u295F = \uE0B6\uFFFD\u21C1@1\uE10B # RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR, DownRightTeeVector
-
-# E13B stix-left end of extensible overbrace
-# E13C stix-right end of extensible overbrace
-# E13D stix-left end of extensible underbrace
-# E13E stix-right end of extensible underbrace
-# E13F stix-extensible horizontal for curly over and under braces
-# E140 stix-center of extensible overbrace
-# E141 stix-center of extensible underbrace
-# E13F is the wrong height for overbrace:
-# use E14A stix-extensible horizontal for over paren or square bracket
-# U+FE37 and U+FE38 are from the MathML 2.0 spec.
-\uFE37 = \uE13B\uE140\uE13C\uE14A # OverBrace
-\uFE38 = \uE13D\uE141\uE13E\uE13F # UnderBrace
-# Unicode added U+23DE and U+23DF:
-# http://www.unicode.org/reports/tr25/#_TocDelimiters
-\u23DE = \uE13B\uE140\uE13C\uE14A # OverBrace
-\u23DF = \uE13D\uE141\uE13E\uE13F # UnderBrace
-# TODO: 
-# E142 stix-left end of extensible overparen (CMEX10 x40 rotated 90deg)
-# E143 stix-right end of extensible overparen (CMEX10 x30 rotated 90deg)
-# E144 stix-left end of extensible underparen (CMEX10 x41 rotated 90deg)
-# E145 stix-right end of extensible underparen (CMEX10 x31 rotated 90deg)
-# E146 stix-left end of extensible over square bracket (CMEX10 x34 rotated 90deg)
-# E147 stix-right end of extensible over square bracket (CMEX10 x32 rotated 90deg)
-# E148 stix-left end of extensible under square bracket (CMEX10 x35 rotated 90deg)
-# E149 stix-right end of extensible under square bracket (CMEX10 x33 rotated 90deg)
-# E14A stix-extensible horizontal for over paren or square bracket (CMEX10 x42 rotated 90deg)
-# E14B stix-extensible horizontal for under paren or square bracket
deleted file mode 100644
--- a/layout/mathml/base/src/mathfontSTIXSize1.properties
+++ /dev/null
@@ -1,64 +0,0 @@
-# ***** 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) 2001
-# the Initial Developer. All Rights Reserved.
-#                                                                       
-# Contributor(s):                                                       
-#   Roger B. Sidje <rbs@maths.uq.edu.au>                                
-#   Karl Tomlinson <karlt+@karlt.net>, Mozilla Corporation
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either 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 *****
-
-#  LOCALIZATION NOTE: FILE
-#  Do not translate anything in this file
-
-# This file contains the list of some stretchy MathML chars that
-# can be rendered with STIXSize* set of fonts,
-# with some help from STIXNonUnicode.
-
-external.1 = STIXNonUnicode
-external.2 = STIXSize2
-external.3 = STIXSize3
-external.4 = STIXSize4
-external.5 = STIXSize5
-
-#        [ T/L |  M  | B/R |  G  | size0 ... size{N-1} ]
-\u0028 = \u239B\uFFFD\u239D\u239C\uFFFD((@2(@3(@4 # (
-\u0029 = \u239E\uFFFD\u23A0\u239F\uFFFD))@2)@3)@4 # )
-\u005B = \u23A1\uFFFD\u23A3\u23A2\u005B[[@2[@3[@4 # [
-\u005D = \u23A4\uFFFD\u23A6\u23A5\u005D]]@2]@3]@4 # ]
-\u007B = \u23A7\u23A8\u23A9\u23AA\u007B{{@2{@3{@4 # {
-\u007D = \u23AB\u23AC\u23AD\u23AA\u007D}}@2}@3}@4 # }
-
-# E000 stix-radical symbol vertical extender
-# E001 stix-radical symbol top corner
-\u221A = \uE001@1\uFFFD\u221A@4\uE000@1\uFFFD\u221A\u221A@2\u221A@3 # Sqrt, radic
-
-\u222B = \u2320\uFFFD\u2321\u23AE\u222B # Integral, int
deleted file mode 100644
--- a/layout/mathml/base/src/mathfontStandardSymbolsL.properties
+++ /dev/null
@@ -1,77 +0,0 @@
-# ***** 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) 2001
-# the Initial Developer. All Rights Reserved.
-#                                                                       
-# Contributor(s):                                                       
-#   Roger B. Sidje <rbs@maths.uq.edu.au>                                
-#   Karl Tomlinson <karlt+@karlt.net>, Mozilla Corporation
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either 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 *****
-
-#  LOCALIZATION NOTE: FILE
-#  Do not translate anything in this file
-
-# This file contains the list of all stretchy MathML chars that
-# can be rendered with Standard Symbols L.
-
-#        [ T/L |  M  | B/R |  G  | size0 ... size{N-1} ]
-\u0028 = \uF8EB\uFFFD\uF8ED\uF8EC\u0028 # (
-\u0029 = \uF8F6\uFFFD\uF8F8\uF8F7\u0029 # )
-\u005B = \uF8EE\uFFFD\uF8F0\uF8EF\u005B # [
-\u005D = \uF8F9\uFFFD\uF8FB\uF8FA\u005D # ]
-\u007B = \uF8F1\uF8F2\uF8F3\uF8F4\u007B # {
-\u007C = \uFFFD\uFFFD\uFFFD\u007C\u007C # |
-\u007D = \uF8FC\uF8FD\uF8FE\uF8F4\u007D # }
-
-\u00AF = \uFFFD\uFFFD\uFFFD\uF8E5\u00AF # ad-hoc: overbar is stretched with the radical extender 
-\u0332 = \uFFFD\uFFFD\uFFFD\u005F\u0332 # ad-hock: UnderBar (0x0332) is stretched with underscore
-
-\u2190 = \u2190\uFFFD\uFFFD\uF8E7\u2190 # LeftArrow, larr, leftarrow
-\u2191 = \u2191\uFFFD\uFFFD\uF8E6\u2191 # UpArrow, uarr, uparrow
-\u2192 = \uFFFD\uFFFD\u2192\uF8E7\u2192 # RightArrow, rarr, rightarrow
-\u2193 = \uFFFD\uFFFD\u2193\uF8E6\u2193 # DownArrow, darr, downarrow
-\u2194 = \u2190\uFFFD\u2192\uF8E7\u2194 # LeftRightArrow, harr, leftrightarrow
-\u2195 = \u2191\uFFFD\u2193\uF8E6\u2195 # UpDownArrow, updownarrow, varr
-
-\u222B = \u2320\uFFFD\u2321\uF8F5\u222B # Integral, int
-# If there are problems with the font-supplied glue use a rule:
-# \u222B = \u2320\uFFFD\u2321\uFFFD\u222B # Integral, int
-
-# Using parts of [ and ]
-\u2308 = \uF8EE\uFFFD\uFFFD\uF8EF\u2308 # LeftCeiling, lceil
-\u2309 = \uF8F9\uFFFD\uFFFD\uF8FA\u2309 # RightCeiling, rceil
-\u230A = \uFFFD\uFFFD\uF8F0\uF8EF\u230A # LeftFloor, lfloor
-\u230B = \uFFFD\uFFFD\uF8FB\uF8FA\u230B # RightFloor, rfloor
-
-# same as normal arrows
-\u27F5 = \u2190\uFFFD\uFFFD\uF8E7\u27F5 # LongLeftArrow
-\u27F6 = \uFFFD\uFFFD\u2192\uF8E7\u27F6 # LongRightArrow
-\u27F7 = \u2190\uFFFD\u2192\uF8E7\u27F7 # LongLeftRightArrow
deleted file mode 100644
--- a/layout/mathml/base/src/mathfontSymbol.properties
+++ /dev/null
@@ -1,80 +0,0 @@
-# ***** 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) 2001
-# the Initial Developer. All Rights Reserved.
-#                                                                       
-# Contributor(s):                                                       
-#   Roger B. Sidje <rbs@maths.uq.edu.au>                                
-#   Karl Tomlinson <karlt+@karlt.net>, Mozilla Corporation
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either 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 *****
-
-#  LOCALIZATION NOTE: FILE
-#  Do not translate anything in this file
-
-# This file contains the list of all stretchy MathML chars that can be
-# rendered with Monotype's Symbol font.
-#
-# This file should normally only be installed on MS Windows systems as other
-# platforms have different fonts with the same family name but different
-# character codes.
-mathfont = Symbol
-
-#        [ T/L |  M  | B/R |  G  | size0 ... size{N-1} ]
-\u0028 = \uF0E6\uFFFD\uF0E8\uF0E7\uF028 # (
-\u0029 = \uF0F6\uFFFD\uF0F8\uF0F7\uF029 # )
-\u005B = \uF0E9\uFFFD\uF0EB\uF0EA\uF05B # [
-\u005D = \uF0F9\uFFFD\uF0FB\uF0FA\uF05D # ]
-\u007B = \uF0EC\uF0ED\uF0EE\uF0EF\uF07B # {
-\u007C = \uFFFD\uFFFD\uFFFD\uF07C\uF07C # |
-\u007D = \uF0FC\uF0FD\uF0FE\uF0EF\uF07D # }
-
-\u00AF = \uFFFD\uFFFD\uFFFD\uF060\uF060 # ad-hoc: overbar is stretched with the radical extender 
-\u0332 = \uFFFD\uFFFD\uFFFD\uF05F\uF05F # ad-hoc: UnderBar (0x0332) is stretched with underscore
-
-\u2190 = \uF0AC\uFFFD\uFFFD\uF0BE\uF0AC # LeftArrow, larr, leftarrow
-\u2191 = \uF0AD\uFFFD\uFFFD\uF0BD\uF0AD # UpArrow, uarr, uparrow
-\u2192 = \uFFFD\uFFFD\uF0AE\uF0BE\uF0AE # RightArrow, rarr, rightarrow
-\u2193 = \uFFFD\uFFFD\uF0AF\uF0BD\uF0AF # DownArrow, darr, downarrow
-\u2194 = \uF0AC\uFFFD\uF0AE\uF0BE\uF0B4 # LeftRightArrow, harr, leftrightarrow
-\u2195 = \uF0AD\uFFFD\uF0AF\uF0BD       # UpDownArrow, updownarrow, varr
-
-\u222B = \uF0F3\uFFFD\uF0F5\uF0F4\uF0F2 # Integral, int
-
-# Using parts of [ and ]
-\u2308 = \uF0E9\uFFFD\uFFFD\uF0EA\uF0E9 # LeftCeiling, lceil
-\u2309 = \uF0F9\uFFFD\uFFFD\uF0FA\uF0F9 # RightCeiling, rceil
-\u230A = \uFFFD\uFFFD\uF0EB\uF0EA\uF0EB # LeftFloor, lfloor
-\u230B = \uFFFD\uFFFD\uF0FB\uF0FA\uF0FB # RightFloor, rfloor
-
-# same as normal arrows
-\u27F5 = \uF0AC\uFFFD\uFFFD\uF0BE # LongLeftArrow
-\u27F6 = \uFFFD\uFFFD\uF0AE\uF0BE # LongRightArrow
-\u27F7 = \uF0AC\uFFFD\uF0AE\uF0BE # LongLeftRightArrow
deleted file mode 100644
--- a/layout/mathml/base/src/mathfontUnicode.properties
+++ /dev/null
@@ -1,123 +0,0 @@
-# ***** 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) 2001
-# the Initial Developer. All Rights Reserved.
-#                                                                       
-# Contributor(s):                                                       
-#   Roger B. Sidje <rbs@maths.uq.edu.au>                                
-#   Karl Tomlinson <karlt+@karlt.net>, Mozilla Corporation
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either 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 *****
-
-#  LOCALIZATION NOTE: FILE
-#  Do not translate anything in this file
-
-# This file contains the list of all stretchy MathML chars that
-# can be rendered using only Unicode code points.
-
-#        [ T/L |  M  | B/R |  G  | size0 ... size{N-1} ]
-\u0028 = \u239B\uFFFD\u239D\u239C\u0028 # (
-\u0029 = \u239E\uFFFD\u23A0\u239F\u0029 # )
-\u005B = \u23A1\uFFFD\u23A3\u23A2\u005B # [
-\u005D = \u23A4\uFFFD\u23A6\u23A5\u005D # ]
-\u007B = \u23A7\u23A8\u23A9\u23AA\u007B # {
-\u007C = \uFFFD\uFFFD\uFFFD\u007C\u007C # |
-\u007D = \u23AB\u23AC\u23AD\u23AA\u007D # }
-
-# OverBar is stretched with U+0305 COMBINING OVERLINE which "connects on left and right"
-\u00AF = \uFFFD\uFFFD\uFFFD\u0305\u00AF # OverBar
-#\u0305 doesn't appear to be referenced by the MathML spec
-\u0332 = \uFFFD\uFFFD\uFFFD\u0332\u0332 # COMBINING LOW LINE, UnderBar
-
-\u2016 = \uFFFD\uFFFD\uFFFD\u2016\u2016 # DOUBLE VERTICAL LINE, Vert, Verbar
-
-\u2190 = \u2190\uFFFD\uFFFD\u23AF\u2190\u27F5 # LeftArrow, larr, leftarrow
-\u2191 = \u2191\uFFFD\uFFFD\u23D0\u2191 # UpArrow, uarr, uparrow
-\u2192 = \uFFFD\uFFFD\u2192\u23AF\u2192\u27F6 # RightArrow, rarr, rightarrow
-\u2193 = \uFFFD\uFFFD\u2193\u23D0\u2193 # DownArrow, darr, downarrow
-\u2194 = \u2190\uFFFD\u2192\u23AF\u2194\u27F7 # LeftRightArrow, harr, leftrightarrow
-\u2195 = \u2191\uFFFD\u2193\u23D0\u2195 # UpDownArrow, updownarrow, varr
-
-# For STIXGeneral U+22A2/U+22A3 RIGHT/LEFT TACK are different heights to U+23AF.
-# Could use LONG RIGHT/LEFT TACK instead, but STIXNonUnicode provides
-# E0B6 stix-maps-to-relation tail
-#\u21A4 = \u2190\uFFFD\u27DE\u23AF\u21A6\u27FB # LeftTeeArrow, mapstoleft
-#\u21A6 = \u27DD\uFFFD\u2192\u23AF\u21A6\u27FC # RightTeeArrow, map, mapsto
-#\u295A = \u21BC\uFFFD\u27DE\u23AF\u295A # LeftTeeVector
-#\u295B = \u27DD\uFFFD\u21C0\u23AF\u295B # RIGHTWARDS HARPOON WITH BARB UP FROM BAR, RightTeeVector
-#\u295E = \u21BD\uFFFD\u27DE\u23AF\u295E # DownLeftTeeVector
-#\u295F = \u27DD\uFFFD\u21C1\u23AF\u295F # RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR, DownRightTeeVector
-# Cambria Math does not have U+27DD/U+27DE
-\u21A4 = \u2190\uFFFD\u22A3\u23AF\u21A6\u27FB # LeftTeeArrow, mapstoleft
-\u21A6 = \u22A2\uFFFD\u2192\u23AF\u21A6\u27FC # RightTeeArrow, map, mapsto
-\u295A = \u21BC\uFFFD\u22A3\u23AF\u295A # LeftTeeVector
-\u295B = \u22A2\uFFFD\u21C0\u23AF\u295B # RIGHTWARDS HARPOON WITH BARB UP FROM BAR, RightTeeVector
-\u295E = \u21BD\uFFFD\u22A3\u23AF\u295E # DownLeftTeeVector
-\u295F = \u22A2\uFFFD\u21C1\u23AF\u295F # RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR, DownRightTeeVector
-
-\u21C0 = \uFFFD\uFFFD\u21C0\u23AF\u21C0 # RightVector, rharu, rightharpoonup
-\u21C1 = \uFFFD\uFFFD\u21C1\u23AF\u21C1 # DownRightVector, rhard, rightharpoon down
-\u21BC = \u21BC\uFFFD\uFFFD\u23AF\u21BC # LeftVector, leftharpoonup, lharu
-\u21BD = \u21BD\uFFFD\uFFFD\u23AF\u21BD # DownLeftVector, leftharpoondown, lhard
-\u21D0 = \uFFFD\uFFFD\uFFFD\uFFFD\u21D0\u27F8 # DoubleLeftArrow, Leftarrow, lArr
-\u21D2 = \uFFFD\uFFFD\uFFFD\uFFFD\u21D2\u27F9 # DoubleRightArrow, Implies, Rightarro
-\u21D4 = \uFFFD\uFFFD\uFFFD\uFFFD\u21D4\u27FA # DoubleLeftRightArrow, Leftrightarrow, hArr, iff
-
-# \u221A radical may be made from RADICAL SYMBOL BOTTOM U+23B7 but few fonts
-# support this character and it is not clear what the appropriate vertical
-# glue whould be.
-
-\u2223 = \uFFFD\uFFFD\uFFFD\u2223\u2223 # VerticalBar, mid
-\u2225 = \uFFFD\uFFFD\uFFFD\u2225\u2225 # DoubleVerticalBar, par, parallel
-
-# If fonts have U+23AE INTEGRAL EXTENSION:
-# (STIXSize1, Cambria Math, DejaVu Sans/Serif, Apple's Symbol) 
-\u222B = \u2320\uFFFD\u2321\u23AE\u222B # Integral, int
-# Many fonts don't have U+23AE.  For these fonts, a rule can be used as glue:
-# \u222B = \u2320\uFFFD\u2321\uFFFD\u222B # Integral, int
-
-# Using parts of [ and ] (could use box drawings instead)
-\u2308 = \u23A1\uFFFD\uFFFD\u23A2\u2308 # LeftCeiling, lceil
-\u2309 = \u23A4\uFFFD\uFFFD\u23A5\u2309 # RightCeiling, rceil
-\u230A = \uFFFD\uFFFD\u23A3\u23A2\u230A # LeftFloor, lfloor
-\u230B = \uFFFD\uFFFD\u23A6\u23A5\u230B # RightFloor, rfloor
-
-# Support for l/r moustache from the parts of lbrace { and rbrace }
-\u23B0 = \u23A7\uFFFD\u23AD\u23AA\u23B0 # lmoustache, lmoust
-\u23B1 = \u23AB\uFFFD\u23A9\u23AA\u23B1 # rmoustache, rmoust
-
-# Using normal arrows as heads instead of long arrows for the sake of
-# Apple's Symbol font.
-\u27F5 = \u2190\uFFFD\uFFFD\u23AF\u27F5 # LongLeftArrow
-\u27F6 = \uFFFD\uFFFD\u2192\u23AF\u27F6 # LongRightArrow
-\u27F7 = \u2190\uFFFD\u2192\u23AF\u27F7 # LongLeftRightArrow
-
-\u294E = \u21BC\uFFFD\u21C0\u23AF\u294E #LEFT BARB UP RIGHT BARB UP HARPOON, LeftRightVector
-\u2950 = \u21BD\uFFFD\u21C1\u23AF\u2950 #LEFT BARB DOWN RIGHT BARB DOWN HARPOON , DownLeftRightVector
deleted file mode 100644
--- a/layout/mathml/base/src/nsIMathMLFrame.h
+++ /dev/null
@@ -1,419 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** 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 ***** */
-//#define SHOW_BOUNDING_BOX 1
-#ifndef nsIMathMLFrame_h___
-#define nsIMathMLFrame_h___
-
-#include "nsIRenderingContext.h"
-#include "nsIFrame.h"
-
-struct nsPresentationData;
-struct nsEmbellishData;
-struct nsHTMLReflowMetrics;
-
-// For MathML, this 'type' will be used to determine the spacing between frames
-// Subclasses can return a 'type' that will give them a particular spacing
-enum eMathMLFrameType {
-  eMathMLFrameType_UNKNOWN = -1,
-  eMathMLFrameType_Ordinary,
-  eMathMLFrameType_OperatorOrdinary,
-  eMathMLFrameType_OperatorInvisible,
-  eMathMLFrameType_OperatorUserDefined,
-  eMathMLFrameType_Inner,
-  eMathMLFrameType_ItalicIdentifier,
-  eMathMLFrameType_UprightIdentifier,
-  eMathMLFrameType_COUNT
-};
-
-// Abstract base class that provides additional methods for MathML frames
-class nsIMathMLFrame
-{
-public:
-  NS_DECLARE_FRAME_ACCESSOR(nsIMathMLFrame)
-
- /* SUPPORT FOR PRECISE POSITIONING */
- /*====================================================================*/
- 
- /* Metrics that _exactly_ enclose the text of the frame.
-  * The frame *must* have *already* being reflowed, before you can call
-  * the GetBoundingMetrics() method.
-  * Note that for a frame with nested children, the bounding metrics
-  * will exactly enclose its children. For example, the bounding metrics
-  * of msub is the smallest rectangle that exactly encloses both the 
-  * base and the subscript.
-  */
-  NS_IMETHOD
-  GetBoundingMetrics(nsBoundingMetrics& aBoundingMetrics) = 0;
-
-  NS_IMETHOD
-  SetBoundingMetrics(const nsBoundingMetrics& aBoundingMetrics) = 0;
-
-  NS_IMETHOD
-  GetReference(nsPoint& aReference) = 0;
-
-  NS_IMETHOD
-  SetReference(const nsPoint& aReference) = 0;
-
-  virtual eMathMLFrameType GetMathMLFrameType() = 0;
-
- /* SUPPORT FOR STRETCHY ELEMENTS */
- /*====================================================================*/
-
- /* Stretch :
-  * Called to ask a stretchy MathML frame to stretch itself depending
-  * on its context.
-  *
-  * An embellished frame is treated in a special way. When it receives a
-  * Stretch() command, it passes the command to its embellished child and
-  * the stretched size is bubbled up from the inner-most <mo> frame. In other
-  * words, the stretch command descend through the embellished hierarchy.
-  *
-  * @param aStretchDirection [in] the direction where to attempt to
-  *        stretch.
-  * @param aContainerSize [in] struct that suggests the maximumn size for
-  *        the stretched frame. Only member data of the struct that are 
-  *        relevant to the direction are used (the rest is ignored). 
-  * @param aDesiredStretchSize [in/out] On input the current size
-  *        of the frame, on output the size after stretching.
-  */
-  NS_IMETHOD 
-  Stretch(nsIRenderingContext& aRenderingContext,
-          nsStretchDirection   aStretchDirection,
-          nsBoundingMetrics&   aContainerSize,
-          nsHTMLReflowMetrics& aDesiredStretchSize) = 0;
-
- /* GetEmbellishData/SetEmbellishData :
-  * Get/Set the mEmbellishData member variable.
-  */
-
-  NS_IMETHOD
-  GetEmbellishData(nsEmbellishData& aEmbellishData) = 0;
-
-  NS_IMETHOD
-  SetEmbellishData(const nsEmbellishData& aEmbellishData) = 0;
-
-
- /* SUPPORT FOR SCRIPTING ELEMENTS */
- /*====================================================================*/
-
- /* GetPresentationData/SetPresentationData :
-  * Get/Set the mPresentationData member variable.
-  */
-
-  NS_IMETHOD
-  GetPresentationData(nsPresentationData& aPresentationData) = 0;
-
-  NS_IMETHOD
-  SetPresentationData(const nsPresentationData& aPresentationData) = 0;
-
-  /* InheritAutomaticData() / TransmitAutomaticData() :
-   * There are precise rules governing each MathML frame and its children.
-   * Properties such as the scriptlevel or the embellished nature of a frame
-   * depend on those rules. Also, certain properties that we use to emulate
-   * TeX rendering rules are frame-dependent too. These two methods are meant
-   * to be implemented by frame classes that need to assert specific properties
-   * within their subtrees.
-   *
-   * InheritAutomaticData() is called in a top-down manner [like nsIFrame::Init],
-   * as we descend the frame tree, whereas TransmitAutomaticData() is called in a
-   * bottom-up manner, as we ascend the tree [like nsIFrame::SetInitialChildList].
-   * However, unlike Init() and SetInitialChildList() which are called only once
-   * during the life-time of a frame (when initially constructing the frame tree),
-   * these two methods are called to build automatic data after the <math>...</math>
-   * subtree has been constructed fully, and are called again as we walk a child's
-   * subtree to handle dynamic changes that happen in the content model.
-   *
-   * As a rule of thumb:
-   *
-   * 1. Use InheritAutomaticData() to set properties related to your ancestors:
-   *    - set properties that are intrinsic to yourself
-   *    - set properties that depend on the state that you expect your ancestors
-   *      to have already reached in their own InheritAutomaticData().
-   *    - set properties that your descendants assume that you would have set in
-   *      your InheritAutomaticData() -- this way, they can safely query them and
-   *      the process will feed upon itself.
-   *
-   * 2. Use TransmitAutomaticData() to set properties related to your descendants:
-   *    - set properties that depend on the state that you expect your descendants
-   *      to have reached upon processing their own TransmitAutomaticData().
-   *    - transmit properties that your descendants expect that you will transmit to
-   *      them in your TransmitAutomaticData() -- this way, they remain up-to-date.
-   *    - set properties that your ancestors expect that you would set in your
-   *      TransmitAutomaticData() -- this way, they can safely query them and the
-   *      process will feed upon itself.
-   */
-
-  NS_IMETHOD
-  InheritAutomaticData(nsIFrame* aParent) = 0;
-
-  NS_IMETHOD
-  TransmitAutomaticData() = 0;
-
- /* UpdatePresentationData :
-  * Updates the frame's displaystyle and compression flags. The displaystyle
-  * flag of an environment gets updated according to the MathML specification.
-  * A frame becomes "compressed" (or "cramped") according to TeX rendering
-  * rules (TeXBook, Ch.17, p.140-141).
-  *
-  * Note that <mstyle> is the only tag which allows to set
-  * <mstyle displaystyle="true|false">
-  * Therefore <mstyle> has its own peculiar version of this method.
-  *
-  * @param aFlagsValues [in]
-  *        The new values (e.g., display, compress) that are going to be
-  *        updated.
-  *
-  * @param aWhichFlags [in]
-  *        The flags that are relevant to this call. Since not all calls
-  *        are meant to update all flags at once, aWhichFlags is used
-  *        to distinguish flags that need to retain their existing values
-  *        from flags that need to be turned on (or turned off). If a bit
-  *        is set in aWhichFlags, then the corresponding value (which
-  *        can be 0 or 1) is taken from aFlagsValues and applied to the
-  *        frame. Therefore, by setting their bits in aWhichFlags, and
-  *        setting their desired values in aFlagsValues, it is possible to
-  *        update some flags in the frame, leaving the other flags unchanged.
-  */
-  NS_IMETHOD
-  UpdatePresentationData(PRUint32        aFlagsValues,
-                         PRUint32        aWhichFlags) = 0;
-
- /* UpdatePresentationDataFromChildAt :
-  * Sets displaystyle and compression flags on the whole tree. For child frames
-  * at aFirstIndex up to aLastIndex, this method sets their displaystyle and
-  * compression flags. The update is propagated down the subtrees of each of
-  * these child frames. 
-  *
-  * Note that <mstyle> is the only tag which allows
-  * <mstyle displaystyle="true|false">
-  * Therefore <mstyle> has its own peculiar version of this method.
-  *
-  * @param aFirstIndex [in]
-  *        Index of the first child from where the update is propagated.
-  *
-  * @param aLastIndex [in]
-  *        Index of the last child where to stop the update.
-  *        A value of -1 means up to last existing child.
-  *
-  * @param aFlagsValues [in]
-  *        The new values (e.g., display, compress) that are going to be
-  *        assigned in the whole sub-trees.
-  *
-  * @param aWhichFlags [in]
-  *        The flags that are relevant to this call. See UpdatePresentationData()
-  *        for more details about this parameter.
-  */
-  NS_IMETHOD
-  UpdatePresentationDataFromChildAt(PRInt32         aFirstIndex,
-                                    PRInt32         aLastIndex,
-                                    PRUint32        aFlagsValues,
-                                    PRUint32        aWhichFlags) = 0;
-};
-
-// struct used by a container frame to keep track of its embellishments.
-// By convention, the data that we keep here is bubbled from the embellished
-// hierarchy, and it remains unchanged unless we have to recover from a change
-// that occurs in the embellished hierarchy. The struct remains in its nil
-// state in those frames that are not part of the embellished hierarchy.
-struct nsEmbellishData {
-  // bits used to mark certain properties of our embellishments 
-  PRUint32 flags;
-
-  // pointer on the <mo> frame at the core of the embellished hierarchy
-  nsIFrame* coreFrame;
-
-  // stretchy direction that the nsMathMLChar owned by the core <mo> supports
-  nsStretchDirection direction;
-
-  // spacing that may come from <mo> depending on its 'form'. Since
-  // the 'form' may also depend on the position of the outermost
-  // embellished ancestor, the set up of these values may require
-  // looking up the position of our ancestors.
-  nscoord leftSpace;
-  nscoord rightSpace;
-
-  nsEmbellishData() {
-    flags = 0;
-    coreFrame = nsnull;
-    direction = NS_STRETCH_DIRECTION_UNSUPPORTED;
-    leftSpace = 0;
-    rightSpace = 0;
-  }
-};
-
-// struct used by a container frame to modulate its presentation.
-// By convention, the data that we keep in this struct can change depending
-// on any of our ancestors and/or descendants. If a data can be resolved
-// solely from the embellished hierarchy, and it remains immutable once
-// resolved, we put it in |nsEmbellishData|. If it can be affected by other
-// things, it comes here. This struct is updated as we receive information
-// transmitted by our ancestors and is kept in sync with changes in our
-// descendants that affects us.
-struct nsPresentationData {
-  // bits for: displaystyle, compressed, etc
-  PRUint32 flags;
-
-  // handy pointer on our base child (the 'nucleus' in TeX), but it may be
-  // null here (e.g., tags like <mrow>, <mfrac>, <mtable>, etc, won't
-  // pick a particular child in their child list to be the base)
-  nsIFrame* baseFrame;
-
-  // up-pointer on the mstyle frame, if any, that defines the scope
-  nsIFrame* mstyle;
-
-  nsPresentationData() {
-    flags = 0;
-    baseFrame = nsnull;
-    mstyle = nsnull;
-  }
-};
-
-// ==========================================================================
-// Bits used for the presentation flags -- these bits are set
-// in their relevant situation as they become available
-
-// This bit is set if the frame is in the *context* of displaystyle=true.
-// Note: This doesn't mean that the frame has displaystyle=true as attribute,
-// the displaystyle attribute is only allowed on <mstyle> and <mtable>.
-// The bit merely tells the context of the frame. In the context of 
-// displaystyle="false", it is intended to slightly alter how the
-// rendering is done in inline mode.
-#define NS_MATHML_DISPLAYSTYLE                        0x00000001U
-
-// This bit is used to emulate TeX rendering. 
-// Internal use only, cannot be set by the user with an attribute.
-#define NS_MATHML_COMPRESSED                          0x00000002U
-
-// This bit is set if the frame will fire a vertical stretch
-// command on all its (non-empty) children.
-// Tags like <mrow> (or an inferred mrow), mpadded, etc, will fire a
-// vertical stretch command on all their non-empty children
-#define NS_MATHML_STRETCH_ALL_CHILDREN_VERTICALLY     0x00000004U
-
-// This bit is set if the frame will fire a horizontal stretch
-// command on all its (non-empty) children.
-// Tags like munder, mover, munderover, will fire a 
-// horizontal stretch command on all their non-empty children
-#define NS_MATHML_STRETCH_ALL_CHILDREN_HORIZONTALLY   0x00000008U
-
-// This bit is set if the frame has the explicit attribute
-// displaystyle="true" or "false". It is only relevant to <mstyle> and <mtable>
-// because they are the only tags where the attribute is allowed by the spec.
-#define NS_MATHML_EXPLICIT_DISPLAYSTYLE               0x00000020U
-
-// This bit is set when the frame cannot be formatted due to an
-// error (e.g., invalid markup such as a <msup> without an overscript).
-// When set, a visual feedback will be provided to the user.
-#define NS_MATHML_ERROR                               0x80000000U
-
-// a bit used for debug
-#define NS_MATHML_STRETCH_DONE                        0x20000000U
-
-// This bit is used for visual debug. When set, the bounding box
-// of your frame is painted. This visual debug enable to ensure that
-// you have properly filled your mReference and mBoundingMetrics in
-// Place().
-#define NS_MATHML_SHOW_BOUNDING_METRICS               0x10000000U
-
-// Macros that retrieve those bits
-
-#define NS_MATHML_IS_DISPLAYSTYLE(_flags) \
-  (NS_MATHML_DISPLAYSTYLE == ((_flags) & NS_MATHML_DISPLAYSTYLE))
-
-#define NS_MATHML_IS_COMPRESSED(_flags) \
-  (NS_MATHML_COMPRESSED == ((_flags) & NS_MATHML_COMPRESSED))
-
-#define NS_MATHML_WILL_STRETCH_ALL_CHILDREN_VERTICALLY(_flags) \
-  (NS_MATHML_STRETCH_ALL_CHILDREN_VERTICALLY == ((_flags) & NS_MATHML_STRETCH_ALL_CHILDREN_VERTICALLY))
-
-#define NS_MATHML_WILL_STRETCH_ALL_CHILDREN_HORIZONTALLY(_flags) \
-  (NS_MATHML_STRETCH_ALL_CHILDREN_HORIZONTALLY == ((_flags) & NS_MATHML_STRETCH_ALL_CHILDREN_HORIZONTALLY))
-
-#define NS_MATHML_HAS_EXPLICIT_DISPLAYSTYLE(_flags) \
-  (NS_MATHML_EXPLICIT_DISPLAYSTYLE == ((_flags) & NS_MATHML_EXPLICIT_DISPLAYSTYLE))
-
-#define NS_MATHML_HAS_ERROR(_flags) \
-  (NS_MATHML_ERROR == ((_flags) & NS_MATHML_ERROR))
-
-#define NS_MATHML_STRETCH_WAS_DONE(_flags) \
-  (NS_MATHML_STRETCH_DONE == ((_flags) & NS_MATHML_STRETCH_DONE))
-
-#define NS_MATHML_PAINT_BOUNDING_METRICS(_flags) \
-  (NS_MATHML_SHOW_BOUNDING_METRICS == ((_flags) & NS_MATHML_SHOW_BOUNDING_METRICS))
-
-// ==========================================================================
-// Bits used for the embellish flags -- these bits are set
-// in their relevant situation as they become available
-
-// This bit is set if the frame is an embellished operator. 
-#define NS_MATHML_EMBELLISH_OPERATOR                0x00000001
-
-// This bit is set if the frame is an <mo> frame or an embellihsed
-// operator for which the core <mo> has movablelimits="true"
-#define NS_MATHML_EMBELLISH_MOVABLELIMITS           0x00000002
-
-// This bit is set if the frame is an <mo> frame or an embellihsed
-// operator for which the core <mo> has accent="true"
-#define NS_MATHML_EMBELLISH_ACCENT                  0x00000004
-
-// This bit is set if the frame is an <mover> or <munderover> with
-// an accent frame
-#define NS_MATHML_EMBELLISH_ACCENTOVER              0x00000008
-
-// This bit is set if the frame is an <munder> or <munderover> with
-// an accentunder frame
-#define NS_MATHML_EMBELLISH_ACCENTUNDER             0x00000010
-
-// Macros that retrieve those bits
-
-#define NS_MATHML_IS_EMBELLISH_OPERATOR(_flags) \
-  (NS_MATHML_EMBELLISH_OPERATOR == ((_flags) & NS_MATHML_EMBELLISH_OPERATOR))
-
-#define NS_MATHML_EMBELLISH_IS_MOVABLELIMITS(_flags) \
-  (NS_MATHML_EMBELLISH_MOVABLELIMITS == ((_flags) & NS_MATHML_EMBELLISH_MOVABLELIMITS))
-
-#define NS_MATHML_EMBELLISH_IS_ACCENT(_flags) \
-  (NS_MATHML_EMBELLISH_ACCENT == ((_flags) & NS_MATHML_EMBELLISH_ACCENT))
-
-#define NS_MATHML_EMBELLISH_IS_ACCENTOVER(_flags) \
-  (NS_MATHML_EMBELLISH_ACCENTOVER == ((_flags) & NS_MATHML_EMBELLISH_ACCENTOVER))
-
-#define NS_MATHML_EMBELLISH_IS_ACCENTUNDER(_flags) \
-  (NS_MATHML_EMBELLISH_ACCENTUNDER == ((_flags) & NS_MATHML_EMBELLISH_ACCENTUNDER))
-
-#endif /* nsIMathMLFrame_h___ */
deleted file mode 100644
--- a/layout/mathml/base/src/nsMathMLChar.cpp
+++ /dev/null
@@ -1,2627 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** 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>
- *   Shyjan Mahamud <mahamud@cs.cmu.edu>
- *   Karl Tomlinson <karlt+@karlt.net>, Mozilla Corporation
- *
- * 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 ***** */
-
-#include "nsCOMPtr.h"
-#include "nsFrame.h"
-#include "nsPresContext.h"
-#include "nsStyleContext.h"
-#include "nsStyleConsts.h"
-#include "nsString.h"
-#include "nsUnicharUtils.h"
-#include "nsIRenderingContext.h"
-#include "gfxPlatform.h"
-#include "nsIFontMetrics.h"
-
-#include "nsIPrefBranch.h"
-#include "nsIPrefService.h"
-#include "nsISupportsPrimitives.h"
-#include "nsIComponentManager.h"
-#include "nsIPersistentProperties2.h"
-#include "nsIServiceManager.h"
-#include "nsIObserverService.h"
-#include "nsIObserver.h"
-#include "nsNetUtil.h"
-
-#include "nsILookAndFeel.h"
-#include "nsIDeviceContext.h"
-#include "nsCSSRendering.h"
-#include "prprf.h"         // For PR_snprintf()
-
-#if ALERT_MISSING_FONTS
-#include "nsIDOMWindow.h"
-#include "nsINonBlockingAlertService.h"
-#include "nsIWindowWatcher.h"
-#include "nsIStringBundle.h"
-#endif
-#include "nsDisplayList.h"
-
-#include "nsMathMLOperators.h"
-#include "nsMathMLChar.h"
-
-//#define SHOW_BORDERS 1
-//#define NOISY_SEARCH 1
-
-// -----------------------------------------------------------------------------------
-static const PRUnichar   kSpaceCh   = PRUnichar(' ');
-static const nsGlyphCode kNullGlyph = {0, 0};
-typedef enum {eExtension_base, eExtension_variants, eExtension_parts}
-  nsMathfontPrefExtension;
-
-// -----------------------------------------------------------------------------------
-// nsGlyphTable is a class that provides an interface for accessing glyphs
-// of stretchy chars. It acts like a table that stores the variants of bigger
-// sizes (if any) and the partial glyphs needed to build extensible symbols.
-// An instance of nsGlyphTable is associated to one primary font. Extra glyphs
-// can be taken in other additional fonts when stretching certain characters.
-// These supplementary fonts are referred to as "external" fonts to the table.
-//
-// A char for which nsGlyphTable::Has(aChar) is true means that the table
-// contains some glyphs (bigger and/or partial) that can be used to render
-// the char. Bigger sizes (if any) of the char can then be retrieved with
-// BigOf(aSize). Partial glyphs can be retrieved with TopOf(), GlueOf(), etc.
-//
-// A table consists of "nsGlyphCode"s which are viewed either as Unicode
-// points or as direct glyph indices, depending on the type of the table.
-// XXX The latter is not yet supported.
-
-// General format of MathFont Property Files from which glyph data are retrieved:
-// -----------------------------------------------------------------------------------
-// Each font should have its set of glyph data. For example, the glyph data for
-// the "Symbol" font and the "MT Extra" font are in "mathfontSymbol.properties"
-// and "mathfontMTExtra.properties", respectively. The mathfont property file is a
-// set of all the stretchy MathML characters that can be rendered with that font
-// using larger and/or partial glyphs. The entry of each stretchy character in the
-// mathfont property file gives, in that order, the 4 partial glyphs: Top (or Left),
-// Middle, Bottom (or Right), Glue; and the variants of bigger sizes (if any).
-// A position that is not relevant to a particular character is indicated there
-// with the UNICODE REPLACEMENT CHARACTER 0xFFFD.
-// Characters that need to be built recursively from other characters are said
-// to be composite. For example, chars like over/underbrace in CMEX10 have to
-// be built from two half stretchy chars and joined in the middle (TeXbook, p.225).
-// Such chars are handled in a special manner by the nsMathMLChar class, which allows
-// several (2 or more) child chars to be composed in order to render another char.
-// To specify such chars, their list of glyphs in the property file should be given
-// as space-separated segments of glyphs. Each segment gives the 4 partial
-// glyphs with which to build the child char that will be joined with its other
-// siblings. In this code, when this situation happens (see the detailed description
-// of Stretch() below), the original char (referred to as "parent") creates a
-// singly-linked list of child chars, asking them to stretch in an equally divided
-// space. The nsGlyphTable embeds the necessary logic to guarantee correctness in a
-// recursive stretch (and in the use of TopOf(), GlueOf(), etc) on these child chars.
-// -----------------------------------------------------------------------------------
-
-#define NS_TABLE_TYPE_UNICODE       0
-#define NS_TABLE_TYPE_GLYPH_INDEX   1
-
-#define NS_TABLE_STATE_ERROR       -1
-#define NS_TABLE_STATE_EMPTY        0
-#define NS_TABLE_STATE_READY        1
-
-// helper to check if a font is installed
-static PRBool
-CheckFontExistence(nsPresContext* aPresContext, const nsString& aFontName)
-{
-  PRBool aliased;
-  nsAutoString localName;
-  nsIDeviceContext *deviceContext = aPresContext->DeviceContext();
-  deviceContext->GetLocalFontName(aFontName, localName, aliased);
-  // XXXkt CheckFontExistence always returns NS_OK.
-  PRBool rv = (aliased || (NS_OK == deviceContext->CheckFontExistence(localName)));
-  // (see bug 35824 for comments about the aliased localName)
-  return rv;
-}
-
-#if ALERT_MISSING_FONTS
-// alert the user if some of the needed MathML fonts are not installed.
-// it is non-modal (i.e., it doesn't wait for input from the user)
-static void
-AlertMissingFonts(nsString& aMissingFonts)
-{
-  nsCOMPtr<nsIStringBundleService> sbs(do_GetService(NS_STRINGBUNDLE_CONTRACTID));
-  if (!sbs)
-    return;
-
-  nsCOMPtr<nsIStringBundle> sb;
-  sbs->CreateBundle("resource://gre/res/fonts/mathfont.properties", getter_AddRefs(sb));
-  if (!sb)
-    return;
-
-  nsXPIDLString title, message;
-  const PRUnichar* strings[] = { aMissingFonts.get() };
-  sb->GetStringFromName(NS_LITERAL_STRING("mathfont_missing_dialog_title").get(), getter_Copies(title));
-  sb->FormatStringFromName(NS_LITERAL_STRING("mathfont_missing_dialog_message").get(),
-                           strings, 1, getter_Copies(message));
-
-  nsCOMPtr<nsIWindowWatcher> wwatch(do_GetService(NS_WINDOWWATCHER_CONTRACTID));
-  if (!wwatch)
-    return;
-
-  nsCOMPtr<nsIDOMWindow> parent;
-  wwatch->GetActiveWindow(getter_AddRefs(parent));
-  nsresult rv;
-  nsCOMPtr<nsINonBlockingAlertService> prompter =
-    do_GetService("@mozilla.org/embedcomp/nbalert-service;1", &rv);
-
-  if (prompter && parent) {
-    prompter->ShowNonBlockingAlert(parent, title.get(), message.get());
-  }
-}
-#endif
-
-// helper to trim off comments from data in a MathFont Property File
-static void
-Clean(nsString& aValue)
-{
-  // chop the trailing # comment portion if any ...
-  PRInt32 comment = aValue.RFindChar('#');
-  if (comment > 0) aValue.Truncate(comment);
-  aValue.CompressWhitespace();
-}
-
-// helper to load a MathFont Property File
-static nsresult
-LoadProperties(const nsString& aName,
-               nsCOMPtr<nsIPersistentProperties>& aProperties)
-{
-  nsAutoString uriStr;
-  uriStr.AssignLiteral("resource://gre/res/fonts/mathfont");
-  uriStr.Append(aName);
-  uriStr.StripWhitespace(); // that may come from aName
-  uriStr.AppendLiteral(".properties");
-  return NS_LoadPersistentPropertiesFromURISpec(getter_AddRefs(aProperties), 
-                                                NS_ConvertUTF16toUTF8(uriStr));
-}
-
-// -----------------------------------------------------------------------------------
-
-class nsGlyphTable {
-public:
-  explicit nsGlyphTable(const nsString& aPrimaryFontName)
-    : mType(NS_TABLE_TYPE_UNICODE),
-      mFontName(1), // ensure space for primary font name.
-      mState(NS_TABLE_STATE_EMPTY),
-      mCharCache(0)
-  {
-    MOZ_COUNT_CTOR(nsGlyphTable);
-    mFontName.AppendElement(aPrimaryFontName);
-  }
-
-  ~nsGlyphTable() // not a virtual destructor: this class is not intended to be subclassed
-  {
-    MOZ_COUNT_DTOR(nsGlyphTable);
-  }
-
-  const nsAString& PrimaryFontName() const
-  {
-    return mFontName[0];
-  }
-
-  const nsAString& FontNameFor(const nsGlyphCode& aGlyphCode) const
-  {
-    return mFontName[aGlyphCode.font];
-  }
-
-  // True if this table contains some glyphs (variants and/or parts)
-  // or contains child chars that can be used to render this char
-  PRBool Has(nsPresContext* aPresContext, nsMathMLChar* aChar);
-
-  // True if this table contains variants of larger sizes to render this char
-  PRBool HasVariantsOf(nsPresContext* aPresContext, nsMathMLChar* aChar);
-
-  // True if this table contains parts (or composite parts) to render this char
-  PRBool HasPartsOf(nsPresContext* aPresContext, nsMathMLChar* aChar);
-
-  // True if aChar is to be assembled from other child chars in this table
-  PRBool IsComposite(nsPresContext* aPresContext, nsMathMLChar* aChar);
-
-  // The number of child chars to assemble in order to render aChar
-  PRInt32 ChildCountOf(nsPresContext* aPresContext, nsMathMLChar* aChar);
-
-  // Getters for the parts
-  nsGlyphCode TopOf(nsPresContext* aPresContext, nsMathMLChar* aChar) {
-    return ElementAt(aPresContext, aChar, 0);
-  }
-  nsGlyphCode MiddleOf(nsPresContext* aPresContext, nsMathMLChar* aChar) {
-    return ElementAt(aPresContext, aChar, 1);
-  }
-  nsGlyphCode BottomOf(nsPresContext* aPresContext, nsMathMLChar* aChar) {
-    return ElementAt(aPresContext, aChar, 2);
-  }
-  nsGlyphCode GlueOf(nsPresContext* aPresContext, nsMathMLChar* aChar) {
-    return ElementAt(aPresContext, aChar, 3);
-  }
-  nsGlyphCode BigOf(nsPresContext* aPresContext, nsMathMLChar* aChar, PRInt32 aSize) {
-    return ElementAt(aPresContext, aChar, 4 + aSize);
-  }
-  nsGlyphCode LeftOf(nsPresContext* aPresContext, nsMathMLChar* aChar) {
-    return ElementAt(aPresContext, aChar, 0);
-  }
-  nsGlyphCode RightOf(nsPresContext* aPresContext, nsMathMLChar* aChar) {
-    return ElementAt(aPresContext, aChar, 2);
-  }
-
-private:
-  nsGlyphCode ElementAt(nsPresContext* aPresContext, nsMathMLChar* aChar, PRUint32 aPosition);
-
-  // The type is either NS_TABLE_TYPE_UNICODE or NS_TABLE_TYPE_GLYPH_INDEX
-  PRInt32 mType;    
-                           
-  // mFontName[0] is the primary font associated to this table. The others 
-  // are possible "external" fonts for glyphs not in the primary font
-  // but which are needed to stretch certain characters in the table
-  nsTArray<nsString> mFontName; 
-                               
-  // Tri-state variable for error/empty/ready
-  PRInt32 mState;
-
-  // The set of glyph data in this table, as provided by the MathFont Property File
-  nsCOMPtr<nsIPersistentProperties> mGlyphProperties;
-
-  // For speedy re-use, we always cache the last data used in the table.
-  // mCharCache is the Unicode point of the last char that was queried in this
-  // table. mGlyphCache is a buffer containing the glyph data associated to
-  // that char. For a property line 'key = value' in the MathFont Property File,
-  // mCharCache will retain the 'key' -- which is a Unicode point, while mGlyphCache
-  // will retain the 'value', which is a consecutive list of nsGlyphCodes, i.e.,
-  // the pairs of 'code@font' needed by the char -- in which 'code@0' can be specified
-  // without the optional '@0'. However, to ease subsequent processing, mGlyphCache
-  // excludes the '@' symbol and explicitly inserts all optional '0' that indicates
-  // the primary font identifier. Specifically therefore, the k-th glyph is
-  // characterized by :
-  // 1) mGlyphCache[2*k] : its Unicode point (or glyph index -- depending on mType),
-  // 2) mGlyphCache[2*k+1] : the numeric identifier of the font where it comes from.
-  // A font identifier of '0' means the default primary font associated to this
-  // table. Other digits map to the "external" fonts that may have been specified
-  // in the MathFont Property File.
-  nsString  mGlyphCache;
-  PRUnichar mCharCache;
-};
-
-nsGlyphCode
-nsGlyphTable::ElementAt(nsPresContext* aPresContext, nsMathMLChar* aChar, PRUint32 aPosition)
-{
-  if (mState == NS_TABLE_STATE_ERROR) return kNullGlyph;
-  // Load glyph properties if this is the first time we have been here
-  if (mState == NS_TABLE_STATE_EMPTY) {
-    nsresult rv = LoadProperties(mFontName[0], mGlyphProperties);
-#ifdef NS_DEBUG
-    nsCAutoString uriStr;
-    uriStr.AssignLiteral("resource://gre/res/fonts/mathfont");
-    LossyAppendUTF16toASCII(mFontName[0], uriStr);
-    uriStr.StripWhitespace(); // that may come from mFontName
-    uriStr.AppendLiteral(".properties");
-    printf("Loading %s ... %s\n",
-            uriStr.get(),
-            (NS_FAILED(rv)) ? "Failed" : "Done");
-#endif
-    if (NS_FAILED(rv)) {
-      mState = NS_TABLE_STATE_ERROR; // never waste time with this table again
-      return kNullGlyph;
-    }
-    mState = NS_TABLE_STATE_READY;
-
-    // see if there are external fonts needed for certain chars in this table
-    nsCAutoString key;
-    nsAutoString value;
-    for (PRInt32 i = 1; ; i++) {
-      key.AssignLiteral("external.");
-      key.AppendInt(i, 10);
-      rv = mGlyphProperties->GetStringProperty(key, value);
-      if (NS_FAILED(rv)) break;
-      Clean(value);
-      mFontName.AppendElement(value); // i.e., mFontName[i] holds this font name
-    }
-  }
-
-  // If aChar is a child char to be used by a parent composite char, make
-  // sure that it is really attached to this table
-  if (aChar->mParent && (aChar->mGlyphTable != this)) return kNullGlyph;
-
-  // Update our cache if it is not associated to this character
-  PRUnichar uchar = aChar->mData[0];
-  if (mCharCache != uchar) {
-    // The key in the property file is interpreted as ASCII and kept
-    // as such ...
-    char key[10]; PR_snprintf(key, sizeof(key), "\\u%04X", uchar);
-    nsAutoString value;
-    nsresult rv = mGlyphProperties->GetStringProperty(nsDependentCString(key), value);
-    if (NS_FAILED(rv)) return kNullGlyph;
-    Clean(value);
-    // See if this char uses external fonts; e.g., if the 2nd glyph is taken from the
-    // external font '1', the property line looks like \uNNNN = \uNNNN\uNNNN@1\uNNNN.
-    // This is where mGlyphCache is pre-processed to explicitly store all glyph codes
-    // as combined pairs of 'code@font', excluding the '@' separator. This means that
-    // mGlyphCache[2*k] will later be rendered with mFontName[mGlyphCache[2*k+1]]
-    // Note: font identifier is internally an ASCII digit to avoid the null char issue
-    nsAutoString buffer;
-    PRInt32 length = value.Length();
-    PRInt32 i = 0; // index in value
-    PRInt32 j = 0; // part/variant index
-    while (i < length) {
-      PRUnichar code = value[i];
-      ++i;
-      PRUnichar font = 0;
-      // see if we are at the beginning of a child char
-      if (code == kSpaceCh) {
-        // reset the annotation indicator to be 0 for the next code point
-        j = -1;
-      }
-#if 0 // If we want this then the nsGlyphTableList must be declared
-      // or the UnicodeTable could be made a global.
-      // See if this code point is an *indirect reference* to the Unicode
-      // table and lookup the code there.
-      else if (code == PRUnichar(0xF8FF) && gGlyphTableList &&
-               this != &gGlyphTableList->mUnicodeTable) {
-        code = gGlyphTableList->mUnicodeTable.
-          ElementAt(aPresContext, aChar, aPosition).code;
-      }
-      // see if this code point is a *direct reference* to
-      // the Unicode table, and lookup the [TLMBRG1-9] position for code.
-      else if ((i+1 < length) && (value[i] == PRUnichar('.'))) {
-        ++i;
-        // Need to implement this if we want it:
-        // Set (new) code from the value[i] position for (current) code.
-        if (1)
-          return kNullGlyph;
-        ++i;
-      }
-#endif
-      // See if an external font is needed for the code point.
-      // Limit of 9 external fonts
-      if (i+1 < length && value[i] == PRUnichar('@') &&
-          value[i+1] >= PRUnichar('0') && value[i+1] <= PRUnichar('9')) {
-        ++i;
-        font = value[i] - '0';
-        ++i;
-        if (font >= mFontName.Length()) {
-          NS_ERROR("Non-existant font referenced in glyph table");
-          return kNullGlyph;
-        }
-        // The char cannot be handled if this font is not installed
-        if (!mFontName[font].Length() || !CheckFontExistence(aPresContext, mFontName[font])) {
-          return kNullGlyph;
-        }
-      }
-      buffer.Append(code);
-      buffer.Append(font);
-      ++j;
-    }
-    // update our cache with the new settings
-    mGlyphCache.Assign(buffer);
-    mCharCache = uchar;
-  }
-
-  // If aChar is a composite char, only its children are allowed
-  // to use its glyphs in this table, i.e., the parent char itself
-  // is disabled and cannot be stretched directly with these glyphs.
-  // This guarantees a coherent behavior in Stretch().
-  if (!aChar->mParent && (kNotFound != mGlyphCache.FindChar(kSpaceCh))) {
-    return kNullGlyph;
-  }
-
-  // If aChar is a child char, the index of the glyph is relative to
-  // the offset of the list of glyphs corresponding to the child char.
-  PRUint32 offset = 0;
-  PRUint32 length = mGlyphCache.Length();
-  if (aChar->mParent) {
-    nsMathMLChar* child = aChar->mParent->mSibling;
-    // XXXkt composite chars can't have size variants
-    while (child && (child != aChar)) {
-      offset += 5; // skip the 4 partial glyphs + the whitespace separator
-      child = child->mSibling;
-    }
-    length = 2*(offset + 4); // stay confined in the 4 partial glyphs of this child
-  }
-  PRUint32 index = 2*(offset + aPosition); // 2* is to account for the code@font pairs
-  if (index+1 >= length) return kNullGlyph;
-  nsGlyphCode ch;
-  ch.code = mGlyphCache.CharAt(index);
-  ch.font = mGlyphCache.CharAt(index + 1);
-  return (ch.code == PRUnichar(0xFFFD)) ? kNullGlyph : ch;
-}
-
-PRBool
-nsGlyphTable::IsComposite(nsPresContext* aPresContext, nsMathMLChar* aChar)
-{
-  // there is only one level of recursion in our model. a child
-  // cannot be composite because it cannot have its own children
-  if (aChar->mParent) return PR_FALSE;
-  // shortcut to sync the cache with this char...
-  mCharCache = 0; mGlyphCache.Truncate(); ElementAt(aPresContext, aChar, 0);
-  // the cache remained empty if the char wasn't found in this table
-  if (8 >= mGlyphCache.Length()) return PR_FALSE;
-  // the lists of glyphs of a composite char are space-separated
-  return (kSpaceCh == mGlyphCache.CharAt(8));
-}
-
-PRInt32
-nsGlyphTable::ChildCountOf(nsPresContext* aPresContext, nsMathMLChar* aChar)
-{
-  // this will sync the cache as well ...
-  if (!IsComposite(aPresContext, aChar)) return 0;
-  // the lists of glyphs of a composite char are space-separated
-  return 1 + mGlyphCache.CountChar(kSpaceCh);
-}
-
-PRBool
-nsGlyphTable::Has(nsPresContext* aPresContext, nsMathMLChar* aChar)
-{
-  return HasVariantsOf(aPresContext, aChar) || HasPartsOf(aPresContext, aChar);
-}
-
-PRBool
-nsGlyphTable::HasVariantsOf(nsPresContext* aPresContext, nsMathMLChar* aChar)
-{
-  //XXXkt all variants must be in the same file as size 1
-  return BigOf(aPresContext, aChar, 1).Exists();
-}
-
-PRBool
-nsGlyphTable::HasPartsOf(nsPresContext* aPresContext, nsMathMLChar* aChar)
-{
-  return GlueOf(aPresContext, aChar).Exists() ||
-    TopOf(aPresContext, aChar).Exists() ||
-    BottomOf(aPresContext, aChar).Exists() ||
-    MiddleOf(aPresContext, aChar).Exists() ||
-    IsComposite(aPresContext, aChar);
-}
-
-// -----------------------------------------------------------------------------------
-// This is the list of all the applicable glyph tables.
-// We will maintain a single global instance that will only reveal those
-// glyph tables that are associated to fonts currently installed on the
-// user' system. The class is an XPCOM shutdown observer to allow us to
-// free its allocated data at shutdown
-
-class nsGlyphTableList : public nsIObserver
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_NSIOBSERVER
-
-  nsGlyphTable mUnicodeTable;
-
-  nsGlyphTableList()
-    : mUnicodeTable(NS_LITERAL_STRING("Unicode"))
-  {
-    MOZ_COUNT_CTOR(nsGlyphTableList);
-  }
-
-  virtual ~nsGlyphTableList()
-  {
-    MOZ_COUNT_DTOR(nsGlyphTableList);
-  }
-
-  nsresult Initialize();
-  nsresult Finalize();
-
-  // Add a glyph table in the list, return the new table that was added
-  nsGlyphTable*
-  AddGlyphTable(const nsString& aPrimaryFontName);
-
-  // Find a glyph table in the list that has a glyph for the given char
-  nsGlyphTable*
-  GetGlyphTableFor(nsPresContext* aPresContext,
-                   nsMathMLChar*  aChar);
-
-  // Find the glyph table in the list corresponding to the given font family.
-  nsGlyphTable*
-  GetGlyphTableFor(const nsAString& aFamily);
-
-private:
-  nsGlyphTable* TableAt(PRInt32 aIndex) {
-    return &mTableList.ElementAt(aIndex);
-  }
-  PRInt32 Count() {
-    return mTableList.Length();
-  }
-
-  // List of glyph tables;
-  nsTArray<nsGlyphTable> mTableList;
-};
-
-NS_IMPL_ISUPPORTS1(nsGlyphTableList, nsIObserver)
-
-// -----------------------------------------------------------------------------------
-// Here is the global list of applicable glyph tables that we will be using
-static nsGlyphTableList* gGlyphTableList = nsnull;
-
-static PRBool gInitialized = PR_FALSE;
-
-// XPCOM shutdown observer
-NS_IMETHODIMP
-nsGlyphTableList::Observe(nsISupports*     aSubject,
-                          const char* aTopic,
-                          const PRUnichar* someData)
-{
-  Finalize();
-  return NS_OK;
-}
-
-// Add an observer to XPCOM shutdown so that we can free our data at shutdown
-nsresult
-nsGlyphTableList::Initialize()
-{
-  nsresult rv;
-  nsCOMPtr<nsIObserverService> obs = 
-           do_GetService("@mozilla.org/observer-service;1", &rv);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  rv = obs->AddObserver(this, NS_XPCOM_SHUTDOWN_OBSERVER_ID, PR_FALSE);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  return NS_OK;
-}
-
-// Remove our observer and free the memory that were allocated for us
-nsresult
-nsGlyphTableList::Finalize()
-{
-  // Remove our observer from the observer service
-  nsresult rv = NS_OK;
-  nsCOMPtr<nsIObserverService> obs = 
-           do_GetService("@mozilla.org/observer-service;1", &rv);
-  if (NS_SUCCEEDED(rv)) {
-    rv = obs->RemoveObserver(this, NS_XPCOM_SHUTDOWN_OBSERVER_ID);
-  }
-  gInitialized = PR_FALSE;
-  // our oneself will be destroyed when our |Release| is called by the observer
-  return rv;
-}
-
-nsGlyphTable*
-nsGlyphTableList::AddGlyphTable(const nsString& aPrimaryFontName)
-{
-  // See if there is already a special table for this family.
-  nsGlyphTable* glyphTable = GetGlyphTableFor(aPrimaryFontName);
-  if (glyphTable != &mUnicodeTable)
-    return glyphTable;
-
-  // allocate a table
-  glyphTable = mTableList.AppendElement(aPrimaryFontName);
-  return glyphTable;
-}
-
-nsGlyphTable*
-nsGlyphTableList::GetGlyphTableFor(nsPresContext* aPresContext, 
-                                   nsMathMLChar*   aChar)
-{
-  if (mUnicodeTable.Has(aPresContext, aChar))
-    return &mUnicodeTable;
-
-  PRInt32 i;
-  for (i = 0; i < Count(); i++) {
-    nsGlyphTable* glyphTable = TableAt(i);
-    if (glyphTable->Has(aPresContext, aChar)) {
-      return glyphTable;
-    }
-  }
-  return nsnull;
-}
-
-nsGlyphTable*
-nsGlyphTableList::GetGlyphTableFor(const nsAString& aFamily)
-{
-  for (PRInt32 i = 0; i < Count(); i++) {
-    nsGlyphTable* glyphTable = TableAt(i);
-    const nsAString& fontName = glyphTable->PrimaryFontName();
-    // TODO: would be nice to consider StripWhitespace and other aliasing
-    if (fontName.Equals(aFamily, nsCaseInsensitiveStringComparator())) {
-      return glyphTable;
-    }
-  }
-  // Fall back to default Unicode table
-  return &mUnicodeTable;
-}
-
-// -----------------------------------------------------------------------------------
-
-// retrieve a pref value set by the user
-static PRBool
-GetPrefValue(nsIPrefBranch* aPrefBranch, const char* aPrefKey, nsString& aPrefValue)
-{
-  aPrefValue.Truncate();
-  if (aPrefBranch) {
-    nsCOMPtr<nsISupportsString> prefString;
-    aPrefBranch->GetComplexValue(aPrefKey,
-                                 NS_GET_IID(nsISupportsString),
-                                 getter_AddRefs(prefString));
-    if (prefString) {
-      prefString->GetData(aPrefValue);
-    }
-  }
-  return !aPrefValue.IsEmpty();
-}
-
-// Lookup the preferences:
-// "font.mathfont-family.\uNNNN.base"     -- fonts for the base size
-// "font.mathfont-family.\uNNNN.variants" -- fonts for larger glyphs
-// "font.mathfont-family.\uNNNN.parts"    -- fonts for partial glyphs
-// Given the char code and mode of stretch, retrieve the preferred extension
-// font families.
-static PRBool
-GetFontExtensionPref(nsIPrefBranch* aPrefBranch, PRUnichar aChar,
-                     nsMathfontPrefExtension aExtension, nsString& aValue)
-{
-  // initialize OUT param
-  aValue.Truncate();
-
-  // We are going to try two keys because some users specify their pref as 
-  // user_pref("font.mathfont-family.\uNNNN.base", "...") rather than
-  // user_pref("font.mathfont-family.\\uNNNN.base", "...").
-  // The \uNNNN in the former is interpreted as an UTF16 escape sequence by
-  // JavaScript and is converted to the internal UTF8 string that JavaScript uses. 
-  // But clueless users who are not savvy of JavaScript have no idea as to what 
-  // is going on and are baffled as to why their pref setting is not working.
-  // So to save countless explanations, we are going to support both keys.
-
-  static const char* kMathFontPrefix = "font.mathfont-family.";
-
-  nsCAutoString extension;
-  switch (aExtension)
-  {
-    case eExtension_base:
-      extension.AssignLiteral(".base");
-    case eExtension_variants:
-      extension.AssignLiteral(".variants");
-    case eExtension_parts:
-      extension.AssignLiteral(".parts");
-    default:
-      return PR_FALSE;
-  }
-
-  // .\\uNNNN key
-  nsCAutoString key;
-  key.AssignASCII(kMathFontPrefix);
-  char ustr[10];
-  PR_snprintf(ustr, sizeof(ustr), "\\u%04X", aChar);
-  key.Append(ustr);
-  key.Append(extension);
-  // .\uNNNN key
-  nsCAutoString alternateKey;
-  alternateKey.AssignASCII(kMathFontPrefix);
-  NS_ConvertUTF16toUTF8 tmp(&aChar, 1);
-  key.Append(tmp);
-  key.Append(extension);
-
-  return GetPrefValue(aPrefBranch, key.get(), aValue) ||
-    GetPrefValue(aPrefBranch, alternateKey.get(), aValue);
-}
-
-#if ALERT_MISSING_FONTS
-struct MathFontEnumContext {
-  nsPresContext* mPresContext;
-  nsString*       mMissingFamilyList;
-};
-#endif
-
-static PRBool
-MathFontEnumCallback(const nsString& aFamily, PRBool aGeneric, void *aData)
-{
-#if ALERT_MISSING_FONTS
-  // check if the font is missing
-  MathFontEnumContext* context = (MathFontEnumContext*)aData;
-  nsPresContext* presContext = context->mPresContext;
-  nsString* missingFamilyList = context->mMissingFamilyList;
-  if (!CheckFontExistence(presContext, aFamily)) {
-//#ifndef _WIN32
-   // XXX In principle, the mathfont-family list in the mathfont.properties file
-   // is customizable depending on the platform. For now, this is here since there
-   // is no need to alert Linux users about TrueType fonts specific to Windows.
-   if (aFamily.LowerCaseEqualsLiteral("mt extra"))
-     return PR_TRUE; // continue to try other fonts
-//#endif
-    if (!missingFamilyList->IsEmpty()) {
-      missingFamilyList->AppendLiteral(", ");
-    }
-    missingFamilyList->Append(aFamily);
-  }
-#endif
-
-  if (!gGlyphTableList->AddGlyphTable(aFamily))
-    return PR_FALSE; // stop in low-memory situations
-  return PR_TRUE; // don't stop
-}
-
-static nsresult
-InitGlobals(nsPresContext* aPresContext)
-{
-  NS_ASSERTION(!gInitialized, "Error -- already initialized");
-  gInitialized = PR_TRUE;
-  PRUint32 count = nsMathMLOperators::CountStretchyOperator();
-  if (!count) {
-    // nothing to stretch, so why bother...
-    return NS_OK;
-  }
-
-  // Allocate the placeholders for the preferred parts and variants
-  nsresult rv = NS_ERROR_OUT_OF_MEMORY;
-  gGlyphTableList = new nsGlyphTableList();
-  if (gGlyphTableList) {
-    rv = gGlyphTableList->Initialize();
-  }
-  if (NS_FAILED(rv)) {
-    delete gGlyphTableList;
-    gGlyphTableList = nsnull;
-    return rv;
-  }
-  /*
-  else
-    The gGlyphTableList has been successfully registered as a shutdown observer.
-    It will be deleted at shutdown, even if a failure happens below.
-  */
-
-  nsCAutoString key;
-  nsAutoString value;
-  nsCOMPtr<nsIPersistentProperties> mathfontProp;
-  nsCOMPtr<nsIPrefBranch> prefBranch(do_GetService(NS_PREFSERVICE_CONTRACTID));
-
-  // Add the math fonts in the gGlyphTableList in order of preference ...
-  // Note: we only load font-names at this stage. The actual glyph tables will
-  // be loaded lazily (see nsGlyphTable::ElementAt()).
-
-  // Load the "mathfont.properties" file
-  value.Truncate();
-  rv = LoadProperties(value, mathfontProp);
-  if (NS_FAILED(rv)) return rv;
-
-  // Get the list of mathfonts having special glyph tables to be used for
-  // stretchy characters.
-  // We just want to iterate over the font-family list using the
-  // callback mechanism that nsFont has...
-  nsFont font("", 0, 0, 0, 0, 0, 0);
-  NS_NAMED_LITERAL_CSTRING(defaultKey, "font.mathfont-glyph-tables");
-  rv = mathfontProp->GetStringProperty(defaultKey, font.name);
-  if (NS_FAILED(rv)) return rv;
-
-  // Parse the font list and append an entry for each family to gGlyphTableList
-  nsAutoString missingFamilyList;
-
-#if ALERT_MISSING_FONTS
-  // We don't really need all these fonts, so alerting on some missing is not
-  // right.  The best place to alert would be Stretch when we notice that we
-  // can't get the char we want.  In this way the user would not be alerted
-  // unnecessarily when the document contains only simple math.  The alert
-  // also needs a "don't tell me again box".
-  MathFontEnumContext context = {aPresContext, &missingFamilyList};
-  font.EnumerateFamilies(MathFontEnumCallback, &context);
-  // alert the user if some of the expected fonts are missing
-  if (!missingFamilyList.IsEmpty()) {
-    AlertMissingFonts(missingFamilyList);
-  }
-#else
-  font.EnumerateFamilies(MathFontEnumCallback, nsnull);
-#endif
-  return rv;
-}
-
-// -----------------------------------------------------------------------------------
-// And now the implementation of nsMathMLChar
-
-nsStyleContext*
-nsMathMLChar::GetStyleContext() const
-{
-  NS_ASSERTION(!mParent, "invalid call - not allowed for child chars");
-  NS_ASSERTION(mStyleContext, "chars shoud always have style context");
-  return mStyleContext;
-  return NS_OK;
-}
-
-void
-nsMathMLChar::SetStyleContext(nsStyleContext* aStyleContext)
-{
-  NS_ASSERTION(!mParent, "invalid call - not allowed for child chars");
-  NS_PRECONDITION(aStyleContext, "null ptr");
-  if (aStyleContext != mStyleContext) {
-    if (mStyleContext)
-      mStyleContext->Release();
-    if (aStyleContext) {
-      mStyleContext = aStyleContext;
-      aStyleContext->AddRef();
-
-      // Sync the pointers of child chars.
-      nsMathMLChar* child = mSibling;
-      while (child) {
-        child->mStyleContext = mStyleContext;
-        child = child->mSibling;
-      }
-    }
-  }
-}
-
-void
-nsMathMLChar::SetData(nsPresContext* aPresContext,
-                      nsString&       aData)
-{
-  NS_ASSERTION(!mParent, "invalid call - not allowed for child chars");
-  if (!gInitialized) {
-    InitGlobals(aPresContext);
-  }
-  mData = aData;
-  // some assumptions until proven otherwise
-  // note that mGlyph is not initialized
-  mOperator = -1;
-  mDirection = NS_STRETCH_DIRECTION_UNSUPPORTED;
-  mBoundingMetrics.Clear();
-  mGlyphTable = nsnull;
-  // check if stretching is applicable ...
-  if (gGlyphTableList && (1 == mData.Length())) {
-    mOperator = nsMathMLOperators::FindStretchyOperator(mData[0]);
-    if (mOperator >= 0) {
-      mDirection = nsMathMLOperators::GetStretchyDirectionAt(mOperator);
-      // default tentative table (not the one that is necessarily going to be used)
-      mGlyphTable = gGlyphTableList->GetGlyphTableFor(aPresContext, this);
-      // commom case: we won't bother with the stretching if there is
-      // no glyph table for us...
-      if (!mGlyphTable) { // TODO: consider scaling the base char
-        // never try to stretch this operator again
-        nsMathMLOperators::DisableStretchyOperatorAt(mOperator);
-        mDirection = NS_STRETCH_DIRECTION_UNSUPPORTED;
-        mOperator = -1;
-      }
-    }
-  }
-}
-
-// -----------------------------------------------------------------------------------
-/*
- The Stretch:
- @param aContainerSize - suggested size for the stretched char
- @param aDesiredStretchSize - OUT parameter. The desired size
- after stretching. If no stretching is done, the output will
- simply give the base size.
-
- How it works?
- Summary:-
- The Stretch() method first looks for a glyph of appropriate
- size; If a glyph is found, it is cached by this object and
- its size is returned in aDesiredStretchSize. The cached
- glyph will then be used at the painting stage.
- If no glyph of appropriate size is found, a search is made
- to see if the char can be built by parts.
-
- Details:-
- A character gets stretched through the following pipeline :
-
- 1) If the base size of the char is sufficient to cover the
-    container' size, we use that. If not, it will still be
-    used as a fallback if the other stages in the pipeline fail.
-    Issues :
-    a) The base size, the parts and the variants of a char can
-       be in different fonts. For eg., the base size for '(' should
-       come from a normal ascii font if CMEX10 is used, since CMEX10
-       only contains the stretched versions. Hence, there are two
-       style contexts in use throughout the process. The leaf style
-       context of the char holds fonts with which to try to stretch
-       the char. The parent style context of the char contains fonts
-       for normal rendering. So the parent context is the one used
-       to get the initial base size at the start of the pipeline.
-    b) For operators that can be largeop's in display mode,
-       we will skip the base size even if it fits, so that
-       the next stage in the pipeline is given a chance to find
-       a largeop variant. If the next stage fails, we fallback
-       to the base size.
-
- 2) We search for the first larger variant of the char that fits the
-    container' size.  We first search for larger variants using the glyph
-    table corresponding to the first existing font specified in the list of
-    stretchy fonts held by the leaf style context (from -moz-math-stretchy in
-    mathml.css).  Generic fonts are resolved by the preference
-    "font.mathfont-family".
-    Issues :
-    a) the largeop and display settings determine the starting
-       size when we do the above search, regardless of whether
-       smaller variants already fit the container' size.
-    b) if it is a largeopOnly request (i.e., a displaystyle operator
-       with largeop=true and stretchy=false), we break after finding
-       the first starting variant, regardless of whether that
-       variant fits the container's size.
-
- 3) If a variant of appropriate size wasn't found, we see if the char
-    can be built by parts using the same glyph table.
-    Issues:
-    a) Certain chars like over/underbrace in CMEX10 have to be built
-       from two half stretchy chars and joined in the middle. Such
-       chars are handled in a special manner. When this situation is
-       detected, the initial char (referred to as "parent") creates a
-       singly-linked list of child chars, asking them to stretch in
-       a divided space. A convention is used in the setup of
-       nsGlyphTable to express that a composite parent char can be built
-       from child chars.
-    b) There are some chars that have no middle and glue glyphs. For
-       such chars, the parts need to be joined using the rule.
-       By convention (TeXbook p.225), the descent of the parts is
-       zero while their ascent gives the thickness of the rule that
-       should be used to join them.
-
- 4) If a match was not found in that glyph table, repeat from 2 to search the
-    ordered list of stretchy fonts for the first font with a glyph table that
-    provides a fit to the container size.  If no fit is found, the closest fit
-    is used.
-
- Of note:
- When the pipeline completes successfully, the desired size of the
- stretched char can actually be slighthly larger or smaller than
- aContainerSize. But it is the responsibility of the caller to
- account for the spacing when setting aContainerSize, and to leave
- any extra margin when placing the stretched char.
-*/
-// -----------------------------------------------------------------------------------
-
-
-// plain TeX settings (TeXbook p.152)
-#define NS_MATHML_DELIMITER_FACTOR             0.901f
-#define NS_MATHML_DELIMITER_SHORTFALL_POINTS   5.0f
-
-static PRBool
-IsSizeOK(nsPresContext* aPresContext, nscoord a, nscoord b, PRUint32 aHint)
-{
-  // Normal: True if 'a' is around +/-10% of the target 'b' (10% is
-  // 1-DelimiterFactor). This often gives a chance to the base size to
-  // win, especially in the context of <mfenced> without tall elements
-  // or in sloppy markups without protective <mrow></mrow>
-  PRBool isNormal =
-    (aHint & NS_STRETCH_NORMAL)
-    && PRBool(float(PR_ABS(a - b))
-              < (1.0f - NS_MATHML_DELIMITER_FACTOR) * float(b));
-  // Nearer: True if 'a' is around max{ +/-10% of 'b' , 'b' - 5pt },
-  // as documented in The TeXbook, Ch.17, p.152.
-  // i.e. within 10% and within 5pt
-  PRBool isNearer = PR_FALSE;
-  if (aHint & (NS_STRETCH_NEARER | NS_STRETCH_LARGEOP)) {
-    float c = PR_MAX(float(b) * NS_MATHML_DELIMITER_FACTOR,
-                     float(b) - aPresContext->PointsToAppUnits(NS_MATHML_DELIMITER_SHORTFALL_POINTS));
-    isNearer = PRBool(float(PR_ABS(b - a)) <= (float(b) - c));
-  }
-  // Smaller: Mainly for transitory use, to compare two candidate
-  // choices
-  PRBool isSmaller =
-    (aHint & NS_STRETCH_SMALLER)
-    && PRBool((float(a) >= (NS_MATHML_DELIMITER_FACTOR * float(b)))
-              && (a <= b));
-  // Larger: Critical to the sqrt code to ensure that the radical
-  // size is tall enough
-  PRBool isLarger =
-    (aHint & (NS_STRETCH_LARGER | NS_STRETCH_LARGEOP))
-    && PRBool(a >= b);
-  return (isNormal || isSmaller || isNearer || isLarger);
-}
-
-static PRBool
-IsSizeBetter(nscoord a, nscoord olda, nscoord b, PRUint32 aHint)
-{
-  if (0 == olda)
-    return PR_TRUE;
-  if (aHint & (NS_STRETCH_LARGER | NS_STRETCH_LARGEOP))
-    return (a >= olda) ? (olda < b) : (a >= b);
-  if (aHint & NS_STRETCH_SMALLER)
-    return (a <= olda) ? (olda > b) : (a <= b);
-
-  // XXXkt prob want log scale here i.e. 1.5 is closer to 1 than 0.5
-  return PR_ABS(a - b) < PR_ABS(olda - b);
-}
-
-// We want to place the glyphs even when they don't fit at their
-// full extent, i.e., we may clip to tolerate a small amount of
-// overlap between the parts. This is important to cater for fonts
-// with long glues.
-static nscoord
-ComputeSizeFromParts(nsPresContext* aPresContext,
-                     nsGlyphCode* aGlyphs,
-                     nscoord*     aSizes,
-                     nscoord      aTargetSize)
-{
-  enum {first, middle, last, glue};
-  // Add the parts that cannot be left out.
-  nscoord sum = 0;
-  for (PRInt32 i = first; i <= last; i++) {
-    if (aGlyphs[i] != aGlyphs[glue]) {
-      sum += aSizes[i];
-    }
-  }
-
-  // Determine how much is used in joins
-  nscoord oneDevPixel = aPresContext->AppUnitsPerDevPixel();
-  PRInt32 joins = aGlyphs[middle] == aGlyphs[glue] ? 1 : 2;
-
-  // Pick a maximum size using a maximum number of glue glyphs that we are
-  // prepared to draw for one character.
-  const PRInt32 maxGlyphs = 1000;
-
-  // This also takes into account the fact that, if the glue has no size,
-  // then the character can't be lengthened.
-  nscoord maxSize = sum - 2 * joins * oneDevPixel + maxGlyphs * aSizes[glue];
-  if (maxSize < aTargetSize)
-    return maxSize; // settle with the maximum size
-
-  // Get the minimum allowable size using some flex.
-  nscoord minSize = NSToCoordRound(NS_MATHML_DELIMITER_FACTOR * sum);
-
-  if (minSize > aTargetSize)
-    return minSize; // settle with the minimum size
-
-  // Fill-up the target area
-  return aTargetSize;
-}
-
-// Insert aFallbackFamilies before the first generic family in or at the end
-// of a CSS aFontName.
-static void
-AddFallbackFonts(nsAString& aFontName, const nsAString& aFallbackFamilies)
-{
-  if (aFallbackFamilies.IsEmpty())
-    return;
-
-  if (aFontName.IsEmpty()) {
-    return;
-  }
-
-  static const PRUnichar kSingleQuote  = PRUnichar('\'');
-  static const PRUnichar kDoubleQuote  = PRUnichar('\"');
-  static const PRUnichar kComma        = PRUnichar(',');
-
-  const PRUnichar *p_begin, *p_end;
-  aFontName.BeginReading(p_begin);
-  aFontName.EndReading(p_end);
-
-  const PRUnichar *p = p_begin;
-  const PRUnichar *p_name = nsnull;
-  while (p < p_end) {
-    while (nsCRT::IsAsciiSpace(*p))
-      if (++p == p_end)
-        goto insert;
-
-    p_name = p;
-    if (*p == kSingleQuote || *p == kDoubleQuote) {
-      // quoted font family
-      PRUnichar quoteMark = *p;
-      if (++p == p_end)
-        goto insert;
-
-      // XXX What about CSS character escapes?
-      while (*p != quoteMark)
-        if (++p == p_end)
-          goto insert;
-
-      while (++p != p_end && *p != kComma)
-        /* nothing */ ;
-
-    } else {
-      // unquoted font family
-      const PRUnichar *nameStart = p;
-      while (++p != p_end && *p != kComma)
-        /* nothing */ ;
-
-      nsAutoString family;
-      family = Substring(nameStart, p);
-      family.CompressWhitespace(PR_FALSE, PR_TRUE);
-
-      PRUint8 generic;
-      nsFont::GetGenericID(family, &generic);
-      if (generic != kGenericFont_NONE)
-        goto insert;
-    }
-
-    ++p; // may advance past p_end
-  }
-
-  aFontName.Append(NS_LITERAL_STRING(",") + aFallbackFamilies);
-  return;
-
-insert:
-  if (p_name) {
-    aFontName.Insert(aFallbackFamilies + NS_LITERAL_STRING(","),
-                     p_name - p_begin);
-  }
-  else { // whitespace or empty
-    aFontName = aFallbackFamilies;
-  }
-}
-
-// Update the font and rendering context if there is a family change
-static void
-SetFontFamily(nsPresContext*       aPresContext,
-              nsIRenderingContext& aRenderingContext,
-              nsFont&              aFont,
-              const nsGlyphTable*  aGlyphTable,
-              const nsGlyphCode&   aGlyphCode,
-              const nsAString&     aDefaultFamily)
-{
-  const nsAString& family =
-    aGlyphCode.font ? aGlyphTable->FontNameFor(aGlyphCode) : aDefaultFamily;
-  if (! family.Equals(aFont.name)) {
-    aFont.name = family;
-    aRenderingContext.SetFont(aFont, nsnull, aPresContext->GetUserFontSet());
-  }
-}
-
-class nsMathMLChar::StretchEnumContext {
-public:
-  StretchEnumContext(nsMathMLChar*        aChar,
-                     nsPresContext*       aPresContext,
-                     nsIRenderingContext& aRenderingContext,
-                     nsStretchDirection   aStretchDirection,
-                     nscoord              aTargetSize,
-                     PRUint32             aStretchHint,
-                     nsBoundingMetrics&   aStretchedMetrics,
-                     const nsAString&     aFamilies)
-    : mChar(aChar),
-      mPresContext(aPresContext),
-      mRenderingContext(aRenderingContext),
-      mDirection(aStretchDirection),
-      mTargetSize(aTargetSize),
-      mStretchHint(aStretchHint),
-      mBoundingMetrics(aStretchedMetrics),
-      mFamilies(aFamilies),
-      mTryVariants(PR_TRUE),
-      mTryParts(PR_TRUE) {}
-
-  static PRBool
-  EnumCallback(const nsString& aFamily, PRBool aGeneric, void *aData);
-
-private:
-  static PRBool
-  ResolverCallback (const nsAString& aFamily, void *aData);
-
-  PRBool TryVariants(nsGlyphTable* aGlyphTable, const nsAString& aFamily);
-  PRBool TryParts(nsGlyphTable* aGlyphTable, const nsAString& aFamily);
-
-  nsMathMLChar* mChar;
-  nsPresContext* mPresContext;
-  nsIRenderingContext& mRenderingContext;
-  const nsStretchDirection mDirection;
-  const nscoord mTargetSize;
-  const PRUint32 mStretchHint;
-  nsBoundingMetrics& mBoundingMetrics;
-  // Font families to search
-  const nsAString& mFamilies;
-
-public:
-  PRPackedBool mTryVariants;
-  PRPackedBool mTryParts;
-
-private:
-  nsAutoTArray<nsGlyphTable*,16> mTablesTried;
-  nsGlyphTable* mGlyphTable; // for this callback
-};
-
-
-// 2. See if there are any glyphs of the appropriate size.
-// Returns PR_TRUE if the size is OK, PR_FALSE to keep searching.
-// Always updates the char if a better match is found.
-PRBool
-nsMathMLChar::StretchEnumContext::TryVariants(nsGlyphTable*    aGlyphTable,
-                                              const nsAString& aFamily)
-{
-  // Use our stretchy style context now that stretching is in progress
-  nsFont font = mChar->mStyleContext->GetStyleFont()->mFont;
-  // Ensure mRenderingContext.SetFont will be called:
-  font.name.Truncate();
-
-  PRBool isVertical = (mDirection == NS_STRETCH_DIRECTION_VERTICAL);
-  PRBool largeop = (NS_STRETCH_LARGEOP & mStretchHint) != 0;
-  PRBool largeopOnly =
-    largeop && (NS_STRETCH_VARIABLE_MASK & mStretchHint) == 0;
-  PRBool maxWidth = (NS_STRETCH_MAXWIDTH & mStretchHint) != 0;
-
-  nscoord bestSize =
-    isVertical ? mBoundingMetrics.ascent + mBoundingMetrics.descent
-               : mBoundingMetrics.rightBearing - mBoundingMetrics.leftBearing;
-  PRBool haveBetter = PR_FALSE;
-
-  // figure out the starting size : if this is a largeop, start at 2 else 1
-  PRInt32 size = 1; // size=0 is the char at its normal size
-  if (largeop && aGlyphTable->BigOf(mPresContext, mChar, 2).Exists()) {
-    size = 2;
-  }
-#ifdef NOISY_SEARCH
-  printf("  searching in %s ...\n",
-           NS_LossyConvertUTF16toASCII(aFamily).get());
-#endif
-
-  nsGlyphCode ch;
-  while ((ch = aGlyphTable->BigOf(mPresContext, mChar, size)).Exists()) {
-
-    SetFontFamily(mChar->mStyleContext->PresContext(), mRenderingContext,
-                  font, aGlyphTable, ch, aFamily);
-
-    NS_ASSERTION(maxWidth || ch.code != mChar->mGlyph.code ||
-                 !font.name.Equals(mChar->mFamily),
-                 "glyph table incorrectly set -- duplicate found");
-
-    nsBoundingMetrics bm;
-    nsresult rv = mRenderingContext.GetBoundingMetrics(&ch.code, 1, bm);
-    if (NS_SUCCEEDED(rv)) {
-      nscoord charSize =
-        isVertical ? bm.ascent + bm.descent
-                   : bm.rightBearing - bm.leftBearing;
-
-      if (largeopOnly ||
-          IsSizeBetter(charSize, bestSize, mTargetSize, mStretchHint)) {
-        if (maxWidth) {
-          // IsSizeBetter() checked that charSize < maxsize;
-          // Leave ascent, descent, and bestsize as these contain maxsize.
-          if (mBoundingMetrics.width < bm.width)
-            mBoundingMetrics.width = bm.width;
-          if (mBoundingMetrics.leftBearing > bm.leftBearing)
-            mBoundingMetrics.leftBearing = bm.leftBearing;
-          if (mBoundingMetrics.rightBearing < bm.rightBearing)
-            mBoundingMetrics.rightBearing = bm.rightBearing;
-          // Continue to check other sizes unless largeopOnly
-          haveBetter = largeopOnly;
-        }
-        else {
-          mBoundingMetrics = bm;
-          haveBetter = PR_TRUE;
-          bestSize = charSize;
-          mChar->mGlyphTable = aGlyphTable;
-          mChar->mGlyph = ch;
-          mChar->mFamily = font.name;
-        }
-#ifdef NOISY_SEARCH
-        printf("    size:%d Current best\n", size);
-#endif
-      }
-      else {
-#ifdef NOISY_SEARCH
-        printf("    size:%d Rejected!\n", size);
-#endif
-        if (haveBetter)
-          break; // Not making an futher progress, stop searching
-      }
-    }
-
-    // if largeopOnly is set, break now
-    if (largeopOnly) break;
-    ++size;
-  }
-
-  return haveBetter &&
-    (largeopOnly || IsSizeOK(mPresContext, bestSize, mTargetSize, mStretchHint));
-}
-
-// 3. Build by parts.
-// Returns PR_TRUE if the size is OK, PR_FALSE to keep searching.
-// Always updates the char if a better match is found.
-PRBool
-nsMathMLChar::StretchEnumContext::TryParts(nsGlyphTable*    aGlyphTable,
-                                           const nsAString& aFamily)
-{
-  if (!aGlyphTable->HasPartsOf(mPresContext, mChar))
-    return PR_FALSE; // to next table
-
-  // See if this is a composite character /////////////////////////////////////
-  if (aGlyphTable->IsComposite(mPresContext, mChar)) {
-    // let the child chars do the job
-    nsBoundingMetrics compositeSize;
-    nsresult rv =
-      mChar->ComposeChildren(mPresContext, mRenderingContext, aGlyphTable,
-                             mTargetSize, compositeSize, mStretchHint);
-#ifdef NOISY_SEARCH
-    printf("    Composing %d chars in font %s %s!\n",
-           aGlyphTable->ChildCountOf(mPresContext, mChar),
-           NS_LossyConvertUTF16toASCII(fontName).get(),
-           NS_SUCCEEDED(rv)? "OK" : "Rejected");
-#endif
-    if (NS_FAILED(rv))
-      return PR_FALSE; // to next table
-
-    // all went well, painting will be delegated from now on to children
-    mChar->mGlyph = kNullGlyph; // this will tell paint to build by parts
-    mChar->mGlyphTable = aGlyphTable;
-    mBoundingMetrics = compositeSize;
-    return PR_TRUE; // no more searching
-  }
-
-  // See if the parts of this table fit in the desired space //////////////////
-
-  // Use our stretchy style context now that stretching is in progress
-  nsFont font = mChar->mStyleContext->GetStyleFont()->mFont;
-  // Ensure mRenderingContext.SetFont will be called:
-  font.name.Truncate();
-
-  // Compute the bounding metrics of all partial glyphs
-  nsGlyphCode chdata[4];
-  nsBoundingMetrics bmdata[4];
-  nscoord sizedata[4];
-  nsGlyphCode glue = aGlyphTable->GlueOf(mPresContext, mChar);
-
-  PRBool isVertical = (mDirection == NS_STRETCH_DIRECTION_VERTICAL);
-  PRBool maxWidth = (NS_STRETCH_MAXWIDTH & mStretchHint) != 0;
-
-  for (PRInt32 i = 0; i < 4; i++) {
-    nsGlyphCode ch;
-    switch (i) {
-    case 0: ch = aGlyphTable->TopOf(mPresContext, mChar);    break;
-    case 1: ch = aGlyphTable->MiddleOf(mPresContext, mChar); break;
-    case 2: ch = aGlyphTable->BottomOf(mPresContext, mChar); break;
-    case 3: ch = glue;                                       break;
-    }
-    // empty slots are filled with the glue if it is not null
-    if (!ch.Exists()) ch = glue;
-    nsBoundingMetrics bm;
-    chdata[i] = ch;
-    if (!ch.Exists()) {
-      // Null glue indicates that a rule will be drawn, which can stretch to
-      // fill any space.  Leave bounding metrics at 0.
-      sizedata[i] = mTargetSize;
-    }
-    else {
-      SetFontFamily(mChar->mStyleContext->PresContext(), mRenderingContext,
-                    font, aGlyphTable, ch, aFamily);
-      nsresult rv = mRenderingContext.GetBoundingMetrics(&ch.code, 1, bm);
-      if (NS_FAILED(rv)) {
-        // stop if we failed to compute the bounding metrics of a part.
-        NS_WARNING("GetBoundingMetrics failed");
-        return PR_FALSE; // to next table
-      }
-
-      // TODO: For the generic Unicode table, ideally we should check that the
-      // glyphs are actually found and that they each come from the same
-      // font.
-      bmdata[i] = bm;
-      sizedata[i] = isVertical ? bm.ascent + bm.descent
-                               : bm.rightBearing - bm.leftBearing;
-    }
-  }
-
-  // Build by parts if we have successfully computed the
-  // bounding metrics of all parts.
-  nscoord computedSize = ComputeSizeFromParts(mPresContext, chdata, sizedata,
-                                              mTargetSize);
-
-  nscoord currentSize =
-    isVertical ? mBoundingMetrics.ascent + mBoundingMetrics.descent
-               : mBoundingMetrics.rightBearing - mBoundingMetrics.leftBearing;
-
-  if (!IsSizeBetter(computedSize, currentSize, mTargetSize, mStretchHint)) {
-#ifdef NOISY_SEARCH
-    printf("    Font %s Rejected!\n",
-           NS_LossyConvertUTF16toASCII(fontName).get());
-#endif
-    return PR_FALSE; // to next table
-  }
-
-#ifdef NOISY_SEARCH
-  printf("    Font %s Current best!\n",
-         NS_LossyConvertUTF16toASCII(fontName).get());
-#endif
-
-  // The computed size is the best we have found so far...
-  // now is the time to compute and cache our bounding metrics
-  if (isVertical) {
-    PRInt32 i;
-    nscoord lbearing;
-    nscoord rbearing;
-    nscoord width;
-    if (maxWidth) {
-      lbearing = mBoundingMetrics.leftBearing;
-      rbearing = mBoundingMetrics.rightBearing;
-      width = mBoundingMetrics.width;
-      i = 0;
-    }
-    else {
-      lbearing = bmdata[0].leftBearing;
-      rbearing = bmdata[0].rightBearing;
-      width = bmdata[0].width;
-      i = 1;
-    }
-    for (; i < 4; i++) {
-      const nsBoundingMetrics& bm = bmdata[i];
-      if (width < bm.width) width = bm.width;
-      if (lbearing > bm.leftBearing) lbearing = bm.leftBearing;
-      if (rbearing < bm.rightBearing) rbearing = bm.rightBearing;
-    }
-    mBoundingMetrics.width = width;
-    // When maxWidth, updating ascent and descent indicates that no characters
-    // larger than this character's minimum size need to be checked as they
-    // will not be used.
-    mBoundingMetrics.ascent = bmdata[0].ascent; // not used except with descent for height
-    mBoundingMetrics.descent = computedSize - mBoundingMetrics.ascent;
-    mBoundingMetrics.leftBearing = lbearing;
-    mBoundingMetrics.rightBearing = rbearing;
-  }
-  else {
-    nscoord ascent = bmdata[0].ascent;
-    nscoord descent = bmdata[0].descent;
-    for (PRInt32 i = 1; i < 4; i++) {
-      const nsBoundingMetrics& bm = bmdata[i];
-      if (ascent < bm.ascent) ascent = bm.ascent;
-      if (descent < bm.descent) descent = bm.descent;
-    }
-    mBoundingMetrics.width = computedSize;
-    mBoundingMetrics.ascent = ascent;
-    mBoundingMetrics.descent = descent;
-    mBoundingMetrics.leftBearing = 0;
-    mBoundingMetrics.rightBearing = computedSize;
-  }
-  if (maxWidth)
-    return PR_FALSE; // Continue to check other sizes
-
-  // reset
-  mChar->mGlyph = kNullGlyph; // this will tell paint to build by parts
-  mChar->mGlyphTable = aGlyphTable;
-  mChar->mFamily = aFamily;
-
-  return IsSizeOK(mPresContext, computedSize, mTargetSize, mStretchHint);
-}
-
-// This is only called for glyph table corresponding to a family that exists.
-// See if the table has a glyph that matches the container
-PRBool
-nsMathMLChar::StretchEnumContext::ResolverCallback (const nsAString& aFamily,
-                                                    void *aData)
-{
-  StretchEnumContext* context = static_cast<StretchEnumContext*>(aData);
-  nsGlyphTable* glyphTable = context->mGlyphTable;
-
-  // Only try this table once.
-  context->mTablesTried.AppendElement(glyphTable);
-
-  // If the unicode table is being used, then search all font families.  If a
-  // special table is being used then the font in this family should have the
-  // specified glyphs.
-  const nsAString& family = glyphTable == &gGlyphTableList->mUnicodeTable ?
-    context->mFamilies : aFamily;
-
-  if(context->mTryVariants) {
-    PRBool isOK = context->TryVariants(glyphTable, family);
-    if (isOK)
-      return PR_FALSE; // no need to continue
-  }
-
-  if(context->mTryParts) {
-    PRBool isOK = context->TryParts(glyphTable, family);
-    if (isOK)
-      return PR_FALSE; // no need to continue
-  }
-  return PR_TRUE;
-}
-
-// This is called for each family, whether it exists or not
-PRBool
-nsMathMLChar::StretchEnumContext::EnumCallback(const nsString& aFamily,
-                                               PRBool aGeneric, void *aData)
-{
-  StretchEnumContext* context = static_cast<StretchEnumContext*>(aData);
-
-  // See if there is a special table for the family, but always use the
-  // Unicode table for generic fonts.
-  nsGlyphTable* glyphTable = aGeneric ?
-    &gGlyphTableList->mUnicodeTable : gGlyphTableList->GetGlyphTableFor(aFamily);
-
-  if (context->mTablesTried.IndexOf(glyphTable) != context->mTablesTried.NoIndex)
-    return PR_TRUE; // already tried this one
-
-  context->mGlyphTable = glyphTable;
-
-  if (aGeneric)
-    return ResolverCallback(aFamily, aData);
-
-  PRBool aborted;
-  gfxPlatform *pf = gfxPlatform::GetPlatform();
-  nsresult rv =
-    pf->ResolveFontName(aFamily, ResolverCallback, aData, aborted);
-  return NS_SUCCEEDED(rv) && !aborted; // true means continue
-}
-
-nsresult
-nsMathMLChar::StretchInternal(nsPresContext*           aPresContext,
-                              nsIRenderingContext&     aRenderingContext,
-                              nsStretchDirection&      aStretchDirection,
-                              const nsBoundingMetrics& aContainerSize,
-                              nsBoundingMetrics&       aDesiredStretchSize,
-                              PRUint32                 aStretchHint,
-                              // These are currently only used when
-                              // aStretchHint & NS_STRETCH_MAXWIDTH:
-                              float                    aMaxSize,
-                              PRBool                   aMaxSizeIsAbsolute)
-{
-  // if we have been called before, and we didn't actually stretch, our
-  // direction may have been set to NS_STRETCH_DIRECTION_UNSUPPORTED.
-  // So first set our direction back to its instrinsic value
-  nsStretchDirection direction = NS_STRETCH_DIRECTION_UNSUPPORTED;
-  if (mOperator >= 0) {
-    // mOperator is initialized in SetData() and remains unchanged
-    direction = nsMathMLOperators::GetStretchyDirectionAt(mOperator);
-  }
-
-  // Set default font and get the default bounding metrics
-  // mStyleContext is a leaf context used only when stretching happens.
-  // For the base size, the default font should come from the parent context
-  nsFont font = mStyleContext->GetParent()->GetStyleFont()->mFont;
-
-  // Override with specific fonts if applicable for this character
-  nsCOMPtr<nsIPrefBranch> prefBranch = do_GetService(NS_PREFSERVICE_CONTRACTID);
-  nsAutoString families;
-  if (GetFontExtensionPref(prefBranch, mData[0], eExtension_base, families)) {
-    font.name = families;
-  }
-
-  // Don't modify this nsMathMLChar when doing GetMaxWidth()
-  PRBool maxWidth = (NS_STRETCH_MAXWIDTH & aStretchHint) != 0;
-  if (!maxWidth) {
-    // Record the families in case there is no stretch.  But don't bother
-    // storing families when they are just those from the StyleContext.
-    mFamily = families;
-  }    
-
-  aRenderingContext.SetFont(font, nsnull, aPresContext->GetUserFontSet());
-  nsresult rv =
-    aRenderingContext.GetBoundingMetrics(mData.get(), PRUint32(mData.Length()),
-                                         aDesiredStretchSize);
-  if (NS_FAILED(rv)) {
-    NS_WARNING("GetBoundingMetrics failed");
-    return rv;
-  }
-
-  ////////////////////////////////////////////////////////////////////////////////////
-  // 1. Check the common situations where stretching is not actually needed
-  ////////////////////////////////////////////////////////////////////////////////////
-
-  // quick return if there is nothing special about this char
-  if (!mGlyphTable ||
-      (aStretchDirection != direction &&
-       aStretchDirection != NS_STRETCH_DIRECTION_DEFAULT) ||
-      (aStretchHint & ~NS_STRETCH_MAXWIDTH) == NS_STRETCH_NONE) {
-    return NS_OK;
-  }
-
-  // if no specified direction, attempt to stretch in our preferred direction
-  if (aStretchDirection == NS_STRETCH_DIRECTION_DEFAULT) {
-    aStretchDirection = direction;
-  }
-
-  // see if this is a particular largeop or largeopOnly request
-  PRBool largeop = (NS_STRETCH_LARGEOP & aStretchHint) != 0;
-  PRBool stretchy = (NS_STRETCH_VARIABLE_MASK & aStretchHint) != 0;
-  PRBool largeopOnly = largeop && !stretchy;
-
-  PRBool isVertical = (direction == NS_STRETCH_DIRECTION_VERTICAL);
-
-  nscoord targetSize =
-    isVertical ? aContainerSize.ascent + aContainerSize.descent
-    : aContainerSize.rightBearing - aContainerSize.leftBearing;
-
-  if (maxWidth) {
-    // See if it is only necessary to consider glyphs up to some maximum size.
-    // Set the current height to the maximum size, and set aStretchHint to
-    // NS_STRETCH_SMALLER if the size is variable, so that only smaller sizes
-    // are considered.  targetSize from GetMaxWidth() is 0.
-    if (stretchy) {
-      // variable size stretch - consider all sizes < maxsize
-      aStretchHint =
-        (aStretchHint & ~NS_STRETCH_VARIABLE_MASK) | NS_STRETCH_SMALLER;
-    }
-
-    // Use NS_MATHML_DELIMITER_FACTOR to allow some slightly larger glyphs as
-    // maxsize is not enforced exactly.
-    if (aMaxSize == NS_MATHML_OPERATOR_SIZE_INFINITY) {
-      aDesiredStretchSize.ascent = nscoord_MAX;
-      aDesiredStretchSize.descent = 0;
-    }
-    else {
-      nscoord height = aDesiredStretchSize.ascent + aDesiredStretchSize.descent;
-      if (height == 0) {
-        if (aMaxSizeIsAbsolute) {
-          aDesiredStretchSize.ascent =
-            NSToCoordRound(aMaxSize / NS_MATHML_DELIMITER_FACTOR);
-          aDesiredStretchSize.descent = 0;
-        }
-        // else: leave height as 0
-      }
-      else {
-        float scale = aMaxSizeIsAbsolute ? aMaxSize / height : aMaxSize;
-        scale /= NS_MATHML_DELIMITER_FACTOR;
-        aDesiredStretchSize.ascent =
-          NSToCoordRound(scale * aDesiredStretchSize.ascent);
-        aDesiredStretchSize.descent =
-          NSToCoordRound(scale * aDesiredStretchSize.descent);
-      }
-    }
-  }
-
-  if (!maxWidth && !largeop) {
-    // Doing Stretch() not GetMaxWidth(),
-    // and not a largeop in display mode; return if size fits
-    nscoord charSize =
-      isVertical ? aDesiredStretchSize.ascent + aDesiredStretchSize.descent
-      : aDesiredStretchSize.rightBearing - aDesiredStretchSize.leftBearing;
-
-    if ((targetSize <= 0) || 
-        ((isVertical && charSize >= targetSize) ||
-         IsSizeOK(aPresContext, charSize, targetSize, aStretchHint)))
-      return NS_OK;
-  }
-
-  ////////////////////////////////////////////////////////////////////////////////////
-  // 2/3. Search for a glyph or set of part glyphs of appropriate size
-  ////////////////////////////////////////////////////////////////////////////////////
-
-  font = mStyleContext->GetStyleFont()->mFont;
-  nsAutoString cssFamilies;
-  cssFamilies = font.name;
-
-  PRBool done = PR_FALSE;
-
-  // See if there are preferred fonts for the variants of this char
-  if (GetFontExtensionPref(prefBranch, mData[0], eExtension_variants,
-                           families)) {
-    font.name = families;
-
-    StretchEnumContext enumData(this, aPresContext, aRenderingContext,
-                                aStretchDirection, targetSize, aStretchHint,
-                                aDesiredStretchSize, font.name);
-    enumData.mTryParts = PR_FALSE;
-
-    done = !font.EnumerateFamilies(StretchEnumContext::EnumCallback, &enumData);
-  }
-
-  // See if there are preferred fonts for the parts of this char
-  if (!done && !largeopOnly
-      && GetFontExtensionPref(prefBranch, mData[0], eExtension_parts,
-                              families)) {
-    font.name = families;
-
-    StretchEnumContext enumData(this, aPresContext, aRenderingContext,
-                                aStretchDirection, targetSize, aStretchHint,
-                                aDesiredStretchSize, font.name);
-    enumData.mTryVariants = PR_FALSE;
-
-    done = !font.EnumerateFamilies(StretchEnumContext::EnumCallback, &enumData);
-  }
-
-  if (!done) { // normal case
-    // Use the css font-family but add preferred fallback fonts.
-    font.name = cssFamilies;
-    NS_NAMED_LITERAL_CSTRING(defaultKey, "font.mathfont-family");
-    nsAutoString fallbackFonts;
-    if (GetPrefValue(prefBranch, defaultKey.get(), fallbackFonts)) {
-      AddFallbackFonts(font.name, fallbackFonts);
-    }
-
-#ifdef NOISY_SEARCH
-    printf("Searching in "%s" for a glyph of appropriate size for: 0x%04X:%c\n",
-           font.name, mData[0], mData[0]&0x00FF);
-#endif
-    StretchEnumContext enumData(this, aPresContext, aRenderingContext,
-                                aStretchDirection, targetSize, aStretchHint,
-                                aDesiredStretchSize, font.name);
-    enumData.mTryParts = !largeopOnly;
-
-    font.EnumerateFamilies(StretchEnumContext::EnumCallback, &enumData);
-  }
-
-  return NS_OK;
-}
-
-nsresult
-nsMathMLChar::Stretch(nsPresContext*           aPresContext,
-                      nsIRenderingContext&     aRenderingContext,
-                      nsStretchDirection       aStretchDirection,
-                      const nsBoundingMetrics& aContainerSize,
-                      nsBoundingMetrics&       aDesiredStretchSize,
-                      PRUint32                 aStretchHint)
-{
-  NS_ASSERTION(!(aStretchHint &
-                 ~(NS_STRETCH_VARIABLE_MASK | NS_STRETCH_LARGEOP)),
-               "Unexpected stretch flags");
-
-  // This will be updated if a better match than the base character is found
-  mGlyph.font = -1;
-
-  mDirection = aStretchDirection;
-  nsresult rv =
-    StretchInternal(aPresContext, aRenderingContext, mDirection,
-                    aContainerSize, aDesiredStretchSize, aStretchHint);
-
-  if (mGlyph.font == -1) { // no stretch happened
-    // ensure that the char later behaves like a normal char
-    // (will be reset back to its intrinsic value in case of dynamic updates)
-    mDirection = NS_STRETCH_DIRECTION_UNSUPPORTED;
-  }
-
-  // Record the metrics
-  mBoundingMetrics = aDesiredStretchSize;
-
-  return rv;
-}
-
-// What happens here is that the StretchInternal algorithm is used but
-// modified by passing the NS_STRETCH_MAXWIDTH stretch hint.  That causes
-// StretchInternal to return horizontal bounding metrics that are the maximum
-// that might be returned from a Stretch.
-//
-// In order to avoid considering widths of some characters in fonts that will
-// not be used for any stretch size, StretchInternal sets the initial height
-// to infinity and looks for any characters smaller than this height.  When a
-// character built from parts is considered, (it will be used by Stretch for
-// any characters greater than its minimum size, so) the height is set to its
-// minimum size, so that only widths of smaller subsequent characters are
-// considered.
-nscoord
-nsMathMLChar::GetMaxWidth(nsPresContext* aPresContext,
-                          nsIRenderingContext& aRenderingContext,
-                          PRUint32 aStretchHint,
-                          float aMaxSize, PRBool aMaxSizeIsAbsolute)
-{
-  nsBoundingMetrics bm;
-  nsStretchDirection direction = NS_STRETCH_DIRECTION_VERTICAL;
-  const nsBoundingMetrics container; // zero target size
-
-  StretchInternal(aPresContext, aRenderingContext, direction, container,
-                  bm, aStretchHint | NS_STRETCH_MAXWIDTH);
-
-  return PR_MAX(bm.width, bm.rightBearing) - PR_MIN(0, bm.leftBearing);
-}
-
-nsresult
-nsMathMLChar::ComposeChildren(nsPresContext*      aPresContext,
-                              nsIRenderingContext& aRenderingContext,
-                              nsGlyphTable*        aGlyphTable,
-                              nscoord              aTargetSize,
-                              nsBoundingMetrics&   aCompositeSize,
-                              PRUint32             aStretchHint)
-{
-  PRInt32 i = 0;
-  nsMathMLChar* child;
-  PRInt32 count = aGlyphTable->ChildCountOf(aPresContext, this);
-  NS_ASSERTION(count, "something is wrong somewhere");
-  if (!count) return NS_ERROR_FAILURE;
-  // if we haven't been here before, create the linked list of children now
-  // otherwise, use what we have, adding more children as needed or deleting the extra
-  nsMathMLChar* last = this;
-  while ((i < count) && last->mSibling) {
-    i++;
-    last = last->mSibling;
-  }
-  while (i < count) {
-    child = new nsMathMLChar(this);
-    if (!child) {
-      if (mSibling) delete mSibling; // don't leave a dangling list ...
-      mSibling = nsnull;
-      return NS_ERROR_OUT_OF_MEMORY;
-    }
-    last->mSibling = child;
-    last = child;
-    i++;
-  }
-  if (last->mSibling) {
-    delete last->mSibling;
-    last->mSibling = nsnull;
-  }
-  // let children stretch in an equal space
-  nsBoundingMetrics splitSize;
-  if (NS_STRETCH_DIRECTION_HORIZONTAL == mDirection)
-    splitSize.width = aTargetSize / count;
-  else {
-    splitSize.ascent = aTargetSize / (count * 2);
-    splitSize.descent = splitSize.ascent;
-  }
-  nscoord dx = 0, dy = 0;
-  for (i = 0, child = mSibling; child; child = child->mSibling, i++) {
-    // child chars should just inherit our values - which may change between calls...
-    child->mData = mData;
-    child->mOperator = mOperator;
-    child->mDirection = mDirection;
-    child->mStyleContext = mStyleContext;
-    child->mGlyphTable = aGlyphTable; // the child is associated to this table
-    // there goes the Stretch() ...
-    nsBoundingMetrics childSize;
-    nsresult rv = child->Stretch(aPresContext, aRenderingContext, mDirection,
-                                 splitSize, childSize, aStretchHint);
-    // check if something went wrong or the child couldn't fit in the alloted space
-    if (NS_FAILED(rv) || (NS_STRETCH_DIRECTION_UNSUPPORTED == child->mDirection)) {
-      delete mSibling; // don't leave a dangling list behind ...
-      mSibling = nsnull;
-      return NS_ERROR_FAILURE;
-    }
-    child->SetRect(nsRect(dx, dy, childSize.width, childSize.ascent+childSize.descent));
-    if (0 == i)
-      aCompositeSize = childSize;
-    else {
-      if (NS_STRETCH_DIRECTION_HORIZONTAL == mDirection)
-        aCompositeSize += childSize;
-      else {
-        aCompositeSize.descent += childSize.ascent + childSize.descent;
-        if (aCompositeSize.leftBearing > childSize.leftBearing)
-          aCompositeSize.leftBearing = childSize.leftBearing;
-        if (aCompositeSize.rightBearing < childSize.rightBearing)
-          aCompositeSize.rightBearing = childSize.rightBearing;
-      }
-    }
-    if (NS_STRETCH_DIRECTION_HORIZONTAL == mDirection)
-      dx += childSize.width;
-    else
-      dy += childSize.ascent + childSize.descent;
-  }
-  return NS_OK;
-}
-
-class nsDisplayMathMLSelectionRect : public nsDisplayItem {
-public:
-  nsDisplayMathMLSelectionRect(nsIFrame* aFrame, const nsRect& aRect)
-    : nsDisplayItem(aFrame), mRect(aRect) {
-    MOZ_COUNT_CTOR(nsDisplayMathMLSelectionRect);
-  }
-#ifdef NS_BUILD_REFCNT_LOGGING
-  virtual ~nsDisplayMathMLSelectionRect() {
-    MOZ_COUNT_DTOR(nsDisplayMathMLSelectionRect);
-  }
-#endif
-
-  virtual void Paint(nsDisplayListBuilder* aBuilder, nsIRenderingContext* aCtx,
-     const nsRect& aDirtyRect);
-  NS_DISPLAY_DECL_NAME("MathMLSelectionRect")
-private:
-  nsRect    mRect;
-};
-
-void nsDisplayMathMLSelectionRect::Paint(nsDisplayListBuilder* aBuilder,
-     nsIRenderingContext* aCtx, const nsRect& aDirtyRect)
-{
-  // get color to use for selection from the look&feel object
-  nscolor bgColor = NS_RGB(0, 0, 0);
-  mFrame->PresContext()->LookAndFeel()->
-      GetColor(nsILookAndFeel::eColor_TextSelectBackground, bgColor);
-  aCtx->SetColor(bgColor);
-  aCtx->FillRect(mRect + aBuilder->ToReferenceFrame(mFrame));
-}
-
-class nsDisplayMathMLCharBackground : public nsDisplayItem {
-public:
-  nsDisplayMathMLCharBackground(nsIFrame* aFrame, const nsRect& aRect,
-      nsStyleContext* aStyleContext)
-    : nsDisplayItem(aFrame), mStyleContext(aStyleContext), mRect(aRect) {
-    MOZ_COUNT_CTOR(nsDisplayMathMLCharBackground);
-  }
-#ifdef NS_BUILD_REFCNT_LOGGING
-  virtual ~nsDisplayMathMLCharBackground() {
-    MOZ_COUNT_DTOR(nsDisplayMathMLCharBackground);
-  }
-#endif
-
-  virtual void Paint(nsDisplayListBuilder* aBuilder, nsIRenderingContext* aCtx,
-     const nsRect& aDirtyRect);
-  NS_DISPLAY_DECL_NAME("MathMLCharBackground")
-private:
-  nsStyleContext* mStyleContext;
-  nsRect          mRect;
-};
-
-void nsDisplayMathMLCharBackground::Paint(nsDisplayListBuilder* aBuilder,
-     nsIRenderingContext* aCtx, const nsRect& aDirtyRect)
-{
-  const nsStyleBorder* border = mStyleContext->GetStyleBorder();
-  const nsStyleBackground* backg = mStyleContext->GetStyleBackground();
-  nsRect rect(mRect + aBuilder->ToReferenceFrame(mFrame));
-  nsCSSRendering::PaintBackgroundWithSC(mFrame->PresContext(), *aCtx, mFrame,
-                                        aDirtyRect, rect, *backg, *border,
-                                        PR_TRUE);
-}
-
-class nsDisplayMathMLCharForeground : public nsDisplayItem {
-public:
-  nsDisplayMathMLCharForeground(nsIFrame* aFrame, nsMathMLChar* aChar,
-				PRBool aIsSelected)
-    : nsDisplayItem(aFrame), mChar(aChar), mIsSelected(aIsSelected) {
-    MOZ_COUNT_CTOR(nsDisplayMathMLCharForeground);
-  }
-#ifdef NS_BUILD_REFCNT_LOGGING
-  virtual ~nsDisplayMathMLCharForeground() {
-    MOZ_COUNT_DTOR(nsDisplayMathMLCharForeground);
-  }
-#endif
-
-  virtual nsRect GetBounds(nsDisplayListBuilder* aBuilder) {
-    nsRect rect;
-    mChar->GetRect(rect);
-    nsPoint offset =
-      aBuilder->ToReferenceFrame(mFrame) + rect.TopLeft();
-    nsBoundingMetrics bm;
-    mChar->GetBoundingMetrics(bm);
-    return nsRect(offset.x + bm.leftBearing, offset.y,
-                  bm.rightBearing - bm.leftBearing, bm.ascent + bm.descent);
-  }
-
-  virtual void Paint(nsDisplayListBuilder* aBuilder, nsIRenderingContext* aCtx,
-     const nsRect& aDirtyRect)
-  {
-    mChar->PaintForeground(mFrame->PresContext(), *aCtx,
-                         aBuilder->ToReferenceFrame(mFrame), mIsSelected);
-  }
-
-  NS_DISPLAY_DECL_NAME("MathMLCharForeground")
-
-private:
-  nsMathMLChar* mChar;
-  PRPackedBool  mIsSelected;
-};
-
-#ifdef NS_DEBUG
-class nsDisplayMathMLCharDebug : public nsDisplayItem {
-public:
-  nsDisplayMathMLCharDebug(nsIFrame* aFrame, const nsRect& aRect)
-    : nsDisplayItem(aFrame), mRect(aRect) {
-    MOZ_COUNT_CTOR(nsDisplayMathMLCharDebug);
-  }
-#ifdef NS_BUILD_REFCNT_LOGGING
-  virtual ~nsDisplayMathMLCharDebug() {
-    MOZ_COUNT_DTOR(nsDisplayMathMLCharDebug);
-  }
-#endif
-
-  virtual void Paint(nsDisplayListBuilder* aBuilder, nsIRenderingContext* aCtx,
-     const nsRect& aDirtyRect);
-  NS_DISPLAY_DECL_NAME("MathMLCharDebug")
-private:
-  nsRect    mRect;
-};
-
-void nsDisplayMathMLCharDebug::Paint(nsDisplayListBuilder* aBuilder,
-     nsIRenderingContext* aCtx, const nsRect& aDirtyRect)
-{
-  // for visual debug
-  PRIntn skipSides = 0;
-  nsPresContext* presContext = mFrame->PresContext();
-  const nsStyleBorder* border = mFrame->GetStyleBorder();
-  nsStyleContext* styleContext = mFrame->GetStyleContext();
-  nsRect rect = mRect + aBuilder->ToReferenceFrame(mFrame);
-  nsCSSRendering::PaintBorder(presContext, *aCtx, mFrame,
-                              aDirtyRect, rect, *border, styleContext,
-                              skipSides);
-  nsCSSRendering::PaintOutline(presContext, *aCtx, mFrame,
-                               aDirtyRect, rect, *border,
-                               *mFrame->GetStyleOutline(), styleContext);
-}
-#endif
-
-
-nsresult
-nsMathMLChar::Display(nsDisplayListBuilder*   aBuilder,
-                      nsIFrame*               aForFrame,
-                      const nsDisplayListSet& aLists,
-                      const nsRect*           aSelectedRect)
-{
-  nsresult rv = NS_OK;
-  nsStyleContext* parentContext = mStyleContext->GetParent();
-  nsStyleContext* styleContext = mStyleContext;
-
-  if (NS_STRETCH_DIRECTION_UNSUPPORTED == mDirection) {
-    // normal drawing if there is nothing special about this char
-    // Set default context to the parent context
-    styleContext = parentContext;
-  }
-
-  if (!styleContext->GetStyleVisibility()->IsVisible())
-    return NS_OK;
-
-  // if the leaf style context that we use for stretchy chars has a background
-  // color we use it -- this feature is mostly used for testing and debugging
-  // purposes. Normally, users will set the background on the container frame.
-  // paint the selection background -- beware MathML frames overlap a lot
-  if (aSelectedRect && !aSelectedRect->IsEmpty()) {
-    rv = aLists.BorderBackground()->AppendNewToTop(new (aBuilder)
-        nsDisplayMathMLSelectionRect(aForFrame, *aSelectedRect));
-    NS_ENSURE_SUCCESS(rv, rv);
-  }
-  else if (mRect.width && mRect.height) {
-    const nsStyleBackground* backg = styleContext->GetStyleBackground();
-    if (styleContext != parentContext &&
-        NS_GET_A(backg->mBackgroundColor) > 0) {
-      rv = aLists.BorderBackground()->AppendNewToTop(new (aBuilder)
-          nsDisplayMathMLCharBackground(aForFrame, mRect, styleContext));
-      NS_ENSURE_SUCCESS(rv, rv);
-    }
-    //else
-    //  our container frame will take care of painting its background
-
-#if defined(NS_DEBUG) && defined(SHOW_BOUNDING_BOX)
-    // for visual debug
-    rv = aLists.BorderBackground()->AppendToTop(new (aBuilder)
-        nsDisplayMathMLCharDebug(aForFrame, mRect));
-    NS_ENSURE_SUCCESS(rv, rv);
-#endif
-  }
-  return aLists.Content()->AppendNewToTop(new (aBuilder)
-        nsDisplayMathMLCharForeground(aForFrame, this,
-                                      aSelectedRect && !aSelectedRect->IsEmpty()));
-}
-
-void
-nsMathMLChar::PaintForeground(nsPresContext* aPresContext,
-                              nsIRenderingContext& aRenderingContext,
-                              nsPoint aPt,
-                              PRBool aIsSelected)
-{
-  nsStyleContext* parentContext = mStyleContext->GetParent();
-  nsStyleContext* styleContext = mStyleContext;
-
-  if (NS_STRETCH_DIRECTION_UNSUPPORTED == mDirection) {
-    // normal drawing if there is nothing special about this char
-    // Set default context to the parent context
-    styleContext = parentContext;
-  }
-
-  // Set color ...
-  nscolor fgColor = styleContext->GetStyleColor()->mColor;
-  if (aIsSelected) {
-    // get color to use for selection from the look&feel object
-    aPresContext->LookAndFeel()->
-      GetColor(nsILookAndFeel::eColor_TextSelectForeground, fgColor);
-  }
-  aRenderingContext.SetColor(fgColor);
-
-  nsFont theFont(styleContext->GetStyleFont()->mFont);
-  if (! mFamily.IsEmpty()) {
-    theFont.name = mFamily;
-  }
-  aRenderingContext.SetFont(theFont, nsnull, aPresContext->GetUserFontSet());
-
-  if (NS_STRETCH_DIRECTION_UNSUPPORTED == mDirection) {
-    // normal drawing if there is nothing special about this char ...
-    // Grab some metrics to adjust the placements ...
-    PRUint32 len = PRUint32(mData.Length());
-//printf("Painting %04X like a normal char\n", mData[0]);
-//aRenderingContext.SetColor(NS_RGB(255,0,0));
-    aRenderingContext.DrawString(mData.get(), len, mRect.x + aPt.x,
-                                 mRect.y + aPt.y + mBoundingMetrics.ascent);
-  }
-  else {
-    // Grab some metrics to adjust the placements ...
-    // if there is a glyph of appropriate size, paint that glyph
-    if (mGlyph.Exists()) {
-//printf("Painting %04X with a glyph of appropriate size\n", mData[0]);
-//aRenderingContext.SetColor(NS_RGB(0,0,255));
-      aRenderingContext.DrawString(&mGlyph.code, 1, mRect.x + aPt.x,
-                                   mRect.y + aPt.y + mBoundingMetrics.ascent);
-    }
-    else { // paint by parts
-      // see if this is a composite char and let children paint themselves
-      if (!mParent && mSibling) { // only a "root" having child chars can enter here
-        for (nsMathMLChar* child = mSibling; child; child = child->mSibling) {
-//if (!mStyleContext->Equals(child->mStyleContext))
-//  printf("char contexts are out of sync\n");
-          child->PaintForeground(aPresContext, aRenderingContext, aPt,
-                                 aIsSelected);
-        }
-        return; // that's all folks
-       }
-//aRenderingContext.SetColor(NS_RGB(0,255,0));
-      nsRect r = mRect + aPt;
-      if (NS_STRETCH_DIRECTION_VERTICAL == mDirection)
-        PaintVertically(aPresContext, aRenderingContext, theFont, styleContext,
-                        mGlyphTable, r);
-      else if (NS_STRETCH_DIRECTION_HORIZONTAL == mDirection)
-        PaintHorizontally(aPresContext, aRenderingContext, theFont, styleContext,
-                          mGlyphTable, r);
-    }
-  }
-}
-
-/* =================================================================================
-  And now the helper routines that actually do the job of painting the char by parts
- */
-
-class AutoPushClipRect {
-  nsIRenderingContext& mCtx;
-public:
-  AutoPushClipRect(nsIRenderingContext& aCtx, const nsRect& aRect)
-    : mCtx(aCtx) {
-    mCtx.PushState();
-    mCtx.SetClipRect(aRect, nsClipCombine_kIntersect);
-  }
-  ~AutoPushClipRect() {
-    mCtx.PopState();
-  }
-};
-
-static nsPoint
-SnapToDevPixels(const gfxContext* aThebesContext, PRInt32 aAppUnitsPerGfxUnit,
-                const nsPoint& aPt)
-{
-  gfxPoint pt(NSAppUnitsToFloatPixels(aPt.x, aAppUnitsPerGfxUnit),
-              NSAppUnitsToFloatPixels(aPt.y, aAppUnitsPerGfxUnit));
-  pt = aThebesContext->UserToDevice(pt);
-  pt.Round();
-  pt = aThebesContext->DeviceToUser(pt);
-  return nsPoint(NSFloatPixelsToAppUnits(pt.x, aAppUnitsPerGfxUnit),
-                 NSFloatPixelsToAppUnits(pt.y, aAppUnitsPerGfxUnit));
-}
-
-// paint a stretchy char by assembling glyphs vertically
-nsresult
-nsMathMLChar::PaintVertically(nsPresContext*      aPresContext,
-                              nsIRenderingContext& aRenderingContext,
-                              nsFont&              aFont,
-                              nsStyleContext*      aStyleContext,
-                              nsGlyphTable*        aGlyphTable,
-                              nsRect&              aRect)
-{
-  nsresult rv = NS_OK;
-  // Get the device pixel size in the vertical direction.
-  // (This makes no effort to optimize for non-translation transformations.)
-  nscoord oneDevPixel = aPresContext->AppUnitsPerDevPixel();
-
-  // get metrics data to be re-used later
-  PRInt32 i = 0;
-  nsGlyphCode ch, chdata[4];
-  nsBoundingMetrics bmdata[4];
-  PRInt32 glue, bottom;
-  nsGlyphCode chGlue = aGlyphTable->GlueOf(aPresContext, this);
-  for (PRInt32 j = 0; j < 4; ++j) {
-    switch (j) {
-      case 0:
-        ch = aGlyphTable->TopOf(aPresContext, this);
-        break;
-      case 1:
-        ch = aGlyphTable->MiddleOf(aPresContext, this);
-        if (!ch.Exists())
-          continue; // no middle
-        break;
-      case 2:
-        ch = aGlyphTable->BottomOf(aPresContext, this);
-        bottom = i;
-        break;
-      case 3:
-        ch = chGlue;
-        glue = i;
-        break;
-    }
-    // empty slots are filled with the glue if it is not null
-    if (!ch.Exists()) ch = chGlue;
-    // if (!ch.Exists()) glue is null, leave bounding metrics at 0
-    if (ch.Exists()) {
-      SetFontFamily(aPresContext, aRenderingContext,
-                    aFont, aGlyphTable, ch, mFamily);
-      rv = aRenderingContext.GetBoundingMetrics(&ch.code, 1, bmdata[i]);
-      if (NS_FAILED(rv)) {
-        NS_WARNING("GetBoundingMetrics failed");
-        return rv;
-      }
-    }
-    chdata[i] = ch;
-    ++i;
-  }
-  nscoord dx = aRect.x;
-  nscoord offset[3], start[3], end[3];
-  nsRefPtr<gfxContext> ctx = aRenderingContext.ThebesContext();
-  for (i = 0; i <= bottom; ++i) {
-    ch = chdata[i];
-    const nsBoundingMetrics& bm = bmdata[i];
-    nscoord dy;
-    if (0 == i) { // top
-      dy = aRect.y + bm.ascent;
-    }
-    else if (bottom == i) { // bottom
-      dy = aRect.y + aRect.height - bm.descent;
-    }
-    else { // middle
-      dy = aRect.y + bm.ascent + (aRect.height - (bm.ascent + bm.descent))/2;
-    }
-    // _cairo_scaled_font_show_glyphs snaps origins to device pixels.
-    // Do this now so that we can get the other dimensions right.
-    // (This may not achieve much with non-rectangular transformations.)
-    dy = SnapToDevPixels(ctx, oneDevPixel, nsPoint(dx, dy)).y;
-    // abcissa passed to DrawString
-    offset[i] = dy;
-    // _cairo_scaled_font_glyph_device_extents rounds outwards to the nearest
-    // pixel, so the bm values can include 1 row of faint pixels on each edge.
-    // Don't rely on this pixel as it can look like a gap.
-    start[i] = dy - bm.ascent + oneDevPixel; // top join
-    end[i] = dy + bm.descent - oneDevPixel; // bottom join
-  }
-
-  // If there are overlaps, then join at the mid point
-  for (i = 0; i < bottom; ++i) {
-    if (end[i] > start[i+1]) {
-      end[i] = (end[i] + start[i+1]) / 2;
-      start[i+1] = end[i];
-    }
-  }
-
-  nsRect unionRect = aRect;
-  unionRect.x += mBoundingMetrics.leftBearing;
-  unionRect.width =
-    mBoundingMetrics.rightBearing - mBoundingMetrics.leftBearing;
-  unionRect.Inflate(oneDevPixel, oneDevPixel);
-
-  /////////////////////////////////////
-  // draw top, middle, bottom
-  for (i = 0; i <= bottom; ++i) {
-    ch = chdata[i];
-    // glue can be null, and other parts could have been set to glue
-    if (ch.Exists()) {
-#ifdef SHOW_BORDERS
-      // bounding box of the part
-      aRenderingContext.SetColor(NS_RGB(0,0,0));
-      aRenderingContext.DrawRect(nsRect(dx,start[i],aRect.width+30*(i+1),end[i]-start[i]));
-#endif
-      nscoord dy = offset[i];
-      // Draw a glyph in a clipped area so that we don't have hairy chars
-      // pending outside
-      nsRect clipRect = unionRect;
-      // Clip at the join to get a solid edge (without overlap or gap), when
-      // this won't change the glyph too much.  If the glyph is too small to
-      // clip then we'll overlap rather than have a gap.
-      nscoord height = bmdata[i].ascent + bmdata[i].descent;
-      if (ch == chGlue ||
-          height * (1.0 - NS_MATHML_DELIMITER_FACTOR) > oneDevPixel) {
-        if (0 == i) { // top
-          clipRect.height = end[i] - clipRect.y;
-        }
-        else if (bottom == i) { // bottom
-          clipRect.height -= start[i] - clipRect.y;
-          clipRect.y = start[i];
-        }
-        else { // middle
-          clipRect.y = start[i];
-          clipRect.height = end[i] - start[i];
-        }
-      }
-      if (!clipRect.IsEmpty()) {
-        AutoPushClipRect clip(aRenderingContext, clipRect);
-        SetFontFamily(aPresContext, aRenderingContext,
-                      aFont, aGlyphTable, ch, mFamily);
-        aRenderingContext.DrawString(&ch.code, 1, dx, dy);
-      }
-    }
-  }
-
-  ///////////////
-  // fill the gap between top and middle, and between middle and bottom.
-  if (!chGlue.Exists()) { // null glue : draw a rule
-    // figure out the dimensions of the rule to be drawn :
-    // set lbearing to rightmost lbearing among the two current successive parts.
-    // set rbearing to leftmost rbearing among the two current successive parts.
-    // this not only satisfies the convention used for over/underbraces
-    // in TeX, but also takes care of broken fonts like the stretchy integral
-    // in Symbol for small font sizes in unix.
-    nscoord lbearing, rbearing;
-    PRInt32 first = 0, last = 1;
-    while (last <= bottom) {
-      if (chdata[last].Exists()) {
-        lbearing = bmdata[last].leftBearing;
-        rbearing = bmdata[last].rightBearing;
-        if (chdata[first].Exists()) {
-          if (lbearing < bmdata[first].leftBearing)
-            lbearing = bmdata[first].leftBearing;
-          if (rbearing > bmdata[first].rightBearing)
-            rbearing = bmdata[first].rightBearing;
-        }
-      }
-      else if (chdata[first].Exists()) {
-        lbearing = bmdata[first].leftBearing;
-        rbearing = bmdata[first].rightBearing;
-      }
-      else {
-        NS_ERROR("Cannot stretch - All parts missing");
-        return NS_ERROR_UNEXPECTED;
-      }
-      // paint the rule between the parts
-      nsRect rule(aRect.x + lbearing, end[first],
-                  rbearing - lbearing, start[last] - end[first]);
-      if (!rule.IsEmpty())
-        aRenderingContext.FillRect(rule);
-      first = last;
-      last++;
-    }
-  }
-  else if (bmdata[glue].ascent + bmdata[glue].descent > 0) {
-    // glue is present
-    nsBoundingMetrics& bm = bmdata[glue];
-    // Ensure the stride for the glue is not reduced to less than one pixel
-    if (bm.ascent + bm.descent >= 3 * oneDevPixel) {
-      // To protect against gaps, pretend the glue is smaller than it is,
-      // in order to trim off ends and thus get a solid edge for the join.
-      bm.ascent -= oneDevPixel;
-      bm.descent -= oneDevPixel;
-    }
-
-    SetFontFamily(aPresContext, aRenderingContext,
-                  aFont, aGlyphTable, chGlue, mFamily);
-    nsRect clipRect = unionRect;
-
-    for (i = 0; i < bottom; ++i) {
-      // Make sure not to draw outside the character
-      nscoord dy = PR_MAX(end[i], aRect.y);
-      nscoord fillEnd = PR_MIN(start[i+1], aRect.YMost());
-#ifdef SHOW_BORDERS
-      // exact area to fill
-      aRenderingContext.SetColor(NS_RGB(255,0,0));
-      clipRect.y = dy;
-      clipRect.height = fillEnd - dy;
-      aRenderingContext.DrawRect(clipRect);
-      {
-#endif
-      while (dy < fillEnd) {
-        clipRect.y = dy;
-        clipRect.height = PR_MIN(bm.ascent + bm.descent, fillEnd - dy);
-        AutoPushClipRect clip(aRenderingContext, clipRect);
-        dy += bm.ascent;
-        aRenderingContext.DrawString(&chGlue.code, 1, dx, dy);
-        dy += bm.descent;
-      }
-#ifdef SHOW_BORDERS
-      }
-      // last glyph that may cross past its boundary and collide with the next
-      nscoord height = bm.ascent + bm.descent;
-      aRenderingContext.SetColor(NS_RGB(0,255,0));
-      aRenderingContext.DrawRect(nsRect(dx, dy-bm.ascent, aRect.width, height));
-#endif
-    }
-  }
-#ifdef DEBUG
-  else {
-    for (i = 0; i < bottom; ++i) {
-      NS_ASSERTION(end[i] >= start[i+1],
-                   "gap between parts with missing glue glyph");
-    }
-  }
-#endif
-  return NS_OK;
-}
-
-// paint a stretchy char by assembling glyphs horizontally
-nsresult
-nsMathMLChar::PaintHorizontally(nsPresContext*      aPresContext,
-                                nsIRenderingContext& aRenderingContext,
-                                nsFont&              aFont,
-                                nsStyleContext*      aStyleContext,
-                                nsGlyphTable*        aGlyphTable,
-                                nsRect&              aRect)
-{
-  nsresult rv = NS_OK;
-  // Get the device pixel size in the horizontal direction.
-  // (This makes no effort to optimize for non-translation transformations.)
-  nscoord oneDevPixel = aPresContext->AppUnitsPerDevPixel();
-
-  // get metrics data to be re-used later
-  PRInt32 i = 0;
-  nsGlyphCode ch, chdata[4];
-  nsBoundingMetrics bmdata[4];
-  PRInt32 glue, right;
-  nsGlyphCode chGlue = aGlyphTable->GlueOf(aPresContext, this);
-  for (PRInt32 j = 0; j < 4; ++j) {
-    switch (j) {
-      case 0:
-        ch = aGlyphTable->LeftOf(aPresContext, this);
-        break;
-      case 1:
-        ch = aGlyphTable->MiddleOf(aPresContext, this);
-        if (!ch.Exists())
-          continue; // no middle
-        break;
-      case 2:
-        ch = aGlyphTable->RightOf(aPresContext, this);
-        right = i;
-        break;
-      case 3:
-        ch = chGlue;
-        glue = i;
-        break;
-    }
-    // empty slots are filled with the glue if it is not null
-    if (!ch.Exists()) ch = chGlue;
-    // if (!ch.Exists()) glue is null, leave bounding metrics at 0.
-    if (ch.Exists()) {
-      SetFontFamily(aPresContext, aRenderingContext,
-                    aFont, aGlyphTable, ch, mFamily);
-      rv = aRenderingContext.GetBoundingMetrics(&ch.code, 1, bmdata[i]);
-      if (NS_FAILED(rv)) {
-        NS_WARNING("GetBoundingMetrics failed");
-        return rv;
-      }
-    }
-    chdata[i] = ch;
-    ++i;
-  }
-  nscoord dy = aRect.y + mBoundingMetrics.ascent;
-  nscoord offset[3], start[3], end[3];
-  nsRefPtr<gfxContext> ctx = aRenderingContext.ThebesContext();
-  for (i = 0; i <= right; ++i) {
-    ch = chdata[i];
-    const nsBoundingMetrics& bm = bmdata[i];
-    nscoord dx;
-    if (0 == i) { // left
-      dx = aRect.x - bm.leftBearing;
-    }
-    else if (right == i) { // right
-      dx = aRect.x + aRect.width - bm.rightBearing;
-    }
-    else { // middle
-      dx = aRect.x + (aRect.width - bm.width)/2;
-    }
-    // _cairo_scaled_font_show_glyphs snaps origins to device pixels.
-    // Do this now so that we can get the other dimensions right.
-    // (This may not achieve much with non-rectangular transformations.)
-    dx = SnapToDevPixels(ctx, oneDevPixel, nsPoint(dx, dy)).x;
-    // abcissa passed to DrawString
-    offset[i] = dx;
-    // _cairo_scaled_font_glyph_device_extents rounds outwards to the nearest
-    // pixel, so the bm values can include 1 row of faint pixels on each edge.
-    // Don't rely on this pixel as it can look like a gap.
-    start[i] = dx + bm.leftBearing + oneDevPixel; // left join
-    end[i] = dx + bm.rightBearing - oneDevPixel; // right join
-  }
-
-  // If there are overlaps, then join at the mid point
-  for (i = 0; i < right; ++i) {
-    if (end[i] > start[i+1]) {
-      end[i] = (end[i] + start[i+1]) / 2;
-      start[i+1] = end[i];
-    }
-  }
-
-  nsRect unionRect = aRect;
-  unionRect.Inflate(oneDevPixel, oneDevPixel);
-
-  ///////////////////////////
-  // draw left, middle, right
-  for (i = 0; i <= right; ++i) {
-    ch = chdata[i];
-    // glue can be null, and other parts could have been set to glue
-    if (ch.Exists()) {
-#ifdef SHOW_BORDERS
-      aRenderingContext.SetColor(NS_RGB(255,0,0));
-      aRenderingContext.DrawRect(nsRect(start[i], dy - bmdata[i].ascent,
-                                 end[i] - start[i], bmdata[i].ascent + bmdata[i].descent));
-#endif
-      nscoord dx = offset[i];
-      nsRect clipRect = unionRect;
-      // Clip at the join to get a solid edge (without overlap or gap), when
-      // this won't change the glyph too much.  If the glyph is too small to
-      // clip then we'll overlap rather than have a gap.
-      nscoord width = bmdata[i].rightBearing - bmdata[i].leftBearing;
-      if (ch == chGlue ||
-          width * (1.0 - NS_MATHML_DELIMITER_FACTOR) > oneDevPixel) {
-        if (0 == i) { // left
-          clipRect.width = end[i] - clipRect.x;
-        }
-        else if (right == i) { // right
-          clipRect.width -= start[i] - clipRect.x;
-          clipRect.x = start[i];
-        }
-        else { // middle
-          clipRect.x = start[i];
-          clipRect.width = end[i] - start[i];
-        }
-      }
-      if (!clipRect.IsEmpty()) {
-        AutoPushClipRect clip(aRenderingContext, clipRect);
-        SetFontFamily(aPresContext, aRenderingContext,
-                      aFont, aGlyphTable, ch, mFamily);
-        aRenderingContext.DrawString(&ch.code, 1, dx, dy);
-      }
-    }
-  }
-
-  ////////////////
-  // fill the gap between left and middle, and between middle and right.
-  if (!chGlue.Exists()) { // null glue : draw a rule
-    // figure out the dimensions of the rule to be drawn :
-    // set ascent to lowest ascent among the two current successive parts.
-    // set descent to highest descent among the two current successive parts.
-    // this satisfies the convention used for over/underbraces, and helps
-    // fix broken fonts.
-    nscoord ascent, descent;
-    PRInt32 first = 0, last = 1;
-    while (last <= right) {
-      if (chdata[last].Exists()) {
-        ascent = bmdata[last].ascent;
-        descent = bmdata[last].descent;
-        if (chdata[first].Exists()) {
-          if (ascent > bmdata[first].ascent)
-            ascent = bmdata[first].ascent;
-          if (descent > bmdata[first].descent)
-            descent = bmdata[first].descent;
-        }
-      }
-      else if (chdata[first].Exists()) {
-        ascent = bmdata[first].ascent;
-        descent = bmdata[first].descent;
-      }
-      else {
-        NS_ERROR("Cannot stretch - All parts missing");
-        return NS_ERROR_UNEXPECTED;
-      }
-      // paint the rule between the parts
-      nsRect rule(end[first], dy - ascent,
-                  start[last] - end[first], ascent + descent);
-      if (!rule.IsEmpty())
-        aRenderingContext.FillRect(rule);
-      first = last;
-      last++;
-    }
-  }
-  else if (bmdata[glue].rightBearing - bmdata[glue].leftBearing > 0) {
-    // glue is present
-    nsBoundingMetrics& bm = bmdata[glue];
-    // Ensure the stride for the glue is not reduced to less than one pixel
-    if (bm.rightBearing - bm.leftBearing >= 3 * oneDevPixel) {
-      // To protect against gaps, pretend the glue is smaller than it is,
-      // in order to trim off ends and thus get a solid edge for the join.
-      bm.leftBearing += oneDevPixel;
-      bm.rightBearing -= oneDevPixel;
-    }
-
-    SetFontFamily(aPresContext, aRenderingContext,
-                  aFont, aGlyphTable, chGlue, mFamily);
-    nsRect clipRect = unionRect;
-
-    for (i = 0; i < right; ++i) {
-      // Make sure not to draw outside the character
-      nscoord dx = PR_MAX(end[i], aRect.x);
-      nscoord fillEnd = PR_MIN(start[i+1], aRect.XMost());
-#ifdef SHOW_BORDERS
-      // rectangles in-between that are to be filled
-      aRenderingContext.SetColor(NS_RGB(255,0,0));
-      clipRect.x = dx;
-      clipRect.width = fillEnd - dx;
-      aRenderingContext.DrawRect(clipRect);
-      {
-#endif
-      while (dx < fillEnd) {
-        clipRect.x = dx;
-        clipRect.width = PR_MIN(bm.rightBearing - bm.leftBearing, fillEnd - dx);
-        AutoPushClipRect clip(aRenderingContext, clipRect);
-        dx -= bm.leftBearing;
-        aRenderingContext.DrawString(&chGlue.code, 1, dx, dy);
-        dx += bm.rightBearing;
-      }
-#ifdef SHOW_BORDERS
-      }
-      // last glyph that may cross past its boundary and collide with the next
-      nscoord width = bm.rightBearing - bm.leftBearing;
-      aRenderingContext.SetColor(NS_RGB(0,255,0));
-      aRenderingContext.DrawRect(nsRect(dx + bm.leftBearing, aRect.y, width, aRect.height));
-#endif
-    }
-  }
-#ifdef DEBUG
-  else { // no glue
-    for (i = 0; i < right; ++i) {
-      NS_ASSERTION(end[i] >= start[i+1],
-                   "gap between parts with missing glue glyph");
-    }
-  }
-#endif
-  return NS_OK;
-}
deleted file mode 100644
--- a/layout/mathml/base/src/nsMathMLChar.h
+++ /dev/null
@@ -1,288 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** 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>
- *   Shyjan Mahamud <mahamud@cs.cmu.edu>
- *   Karl Tomlinson <karlt+@karlt.net>, Mozilla Corporation
- *
- * 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 ***** */
-
-#ifndef nsMathMLChar_h___
-#define nsMathMLChar_h___
-
-#include "nsMathMLOperators.h"
-#include "nsMathMLFrame.h"
-
-class nsGlyphTable;
-
-// Hints for Stretch() to indicate criteria for stretching
-enum {
-  // Don't stretch
-  NS_STRETCH_NONE     = 0x00,
-  // Variable size stretches
-  NS_STRETCH_VARIABLE_MASK = 0x0F,
-  NS_STRETCH_NORMAL   = 0x01, // try to stretch to requested size
-  NS_STRETCH_NEARER   = 0x02, // stretch very close to requested size
-  NS_STRETCH_SMALLER  = 0x04, // don't stretch more than requested size
-  NS_STRETCH_LARGER   = 0x08, // don't stretch less than requested size
-  // A largeop in displaystyle
-  NS_STRETCH_LARGEOP  = 0x10,
-  // Intended for internal use:
-  // Find the widest metrics that might be returned from a vertical stretch
-  NS_STRETCH_MAXWIDTH = 0x20
-};
-
-// A single glyph in our internal representation is characterized by a 'code@font' 
-// pair. The 'code' is interpreted as a Unicode point or as the direct glyph index
-// (depending on the type of nsGlyphTable where this comes from). The 'font' is a
-// numeric identifier given to the font to which the glyph belongs.
-struct nsGlyphCode {
-  PRUnichar code; 
-  PRInt32   font;
-
-  PRBool Exists() const
-  {
-    return (code != 0);
-  }
-  PRBool operator==(const nsGlyphCode& other) const
-  {
-    return other.code == code && other.font == font;
-  }
-  PRBool operator!=(const nsGlyphCode& other) const
-  {
-    return ! operator==(other);
-  }
-};
-
-// Class used to handle stretchy symbols (accent, delimiter and boundary symbols).
-// There are composite characters that need to be built recursively from other
-// characters. Since these are rare we use a light-weight mechanism to handle
-// them. Specifically, as need arises we append a singly-linked list of child
-// chars with their mParent pointing to the first element in the list, except in
-// the originating first element itself where it points to null. mSibling points
-// to the next element in the list. Since the originating first element is the
-// parent of the others, we call it the "root" char of the list. Testing !mParent
-// tells whether you are that "root" during the recursion. The parent delegates
-// most of the tasks to the children.
-class nsMathMLChar
-{
-public:
-  // constructor and destructor
-  nsMathMLChar(nsMathMLChar* aParent = nsnull) {
-    MOZ_COUNT_CTOR(nsMathMLChar);
-    mStyleContext = nsnull;
-    mSibling = nsnull;
-    mParent = aParent;
-  }
-
-  ~nsMathMLChar() { // not a virtual destructor: this class is not intended to be subclassed
-    MOZ_COUNT_DTOR(nsMathMLChar);
-    // there is only one style context owned by the "root" char
-    // and it may be used by child chars as well
-    if (!mParent && mStyleContext) { // only the "root" need to release it
-      mStyleContext->Release();
-    }
-    if (mSibling) {
-      delete mSibling;
-    }
-  }
-
-  nsresult
-  Display(nsDisplayListBuilder*   aBuilder,
-          nsIFrame*               aForFrame,
-          const nsDisplayListSet& aLists,
-          const nsRect*           aSelectedRect = nsnull);
-          
-  void PaintForeground(nsPresContext* aPresContext,
-                       nsIRenderingContext& aRenderingContext,
-                       nsPoint aPt,
-                       PRBool aIsSelected);
-
-  // This is the method called to ask the char to stretch itself.
-  // @param aContainerSize - IN - suggested size for the stretched char
-  // @param aDesiredStretchSize - OUT - the size that the char wants
-  nsresult
-  Stretch(nsPresContext*           aPresContext,
-          nsIRenderingContext&     aRenderingContext,
-          nsStretchDirection       aStretchDirection,
-          const nsBoundingMetrics& aContainerSize,
-          nsBoundingMetrics&       aDesiredStretchSize,
-          PRUint32                 aStretchHint = NS_STRETCH_NORMAL);
-
-  void
-  SetData(nsPresContext* aPresContext,
-          nsString&       aData);
-
-  void
-  GetData(nsString& aData) {
-    aData = mData;
-  }
-
-  PRInt32
-  Length() {
-    return mData.Length();
-  }
-
-  nsStretchDirection
-  GetStretchDirection() {
-    return mDirection;
-  }
-
-  // Sometimes we only want to pass the data to another routine,
-  // this function helps to avoid copying
-  const PRUnichar*
-  get() {
-    return mData.get();
-  }
-
-  void
-  GetRect(nsRect& aRect) {
-    aRect = mRect;
-  }
-
-  void
-  SetRect(const nsRect& aRect) {
-    mRect = aRect;
-    // shift the orgins of child chars if any 
-    if (!mParent && mSibling) { // only a "root" having child chars can enter here
-      for (nsMathMLChar* child = mSibling; child; child = child->mSibling) {
-        nsRect rect; 
-        child->GetRect(rect);
-        rect.MoveBy(mRect.x, mRect.y);
-        child->SetRect(rect);
-      }
-    }
-  }
-
-  // Get the maximum width that the character might have after a vertical
-  // Stretch().
-  //
-  // @param aStretchHint can be the value that will be passed to Stretch().
-  // It is used to determine whether the operator is stretchy or a largeop.
-  // @param aMaxSize is the value of the "maxsize" attribute.
-  // @param aMaxSizeIsAbsolute indicates whether the aMaxSize is an absolute
-  // value in app units (PR_TRUE) or a multiplier of the base size (PR_FALSE).
-  nscoord
-  GetMaxWidth(nsPresContext* aPresContext,
-              nsIRenderingContext& aRenderingContext,
-              PRUint32 aStretchHint = NS_STRETCH_NORMAL,
-              float aMaxSize = NS_MATHML_OPERATOR_SIZE_INFINITY,
-              // Perhaps just nsOperatorFlags aFlags.
-              // But need DisplayStyle for largeOp,
-              // or remove the largeop bit from flags.
-              PRBool aMaxSizeIsAbsolute = PR_FALSE);
-
-  // Metrics that _exactly_ enclose the char. The char *must* have *already*
-  // being stretched before you can call the GetBoundingMetrics() method.
-  // IMPORTANT: since chars have their own style contexts, and may be rendered
-  // with glyphs that are not in the parent font, just calling the default
-  // aRenderingContext.GetBoundingMetrics(aChar) can give incorrect results.
-  void
-  GetBoundingMetrics(nsBoundingMetrics& aBoundingMetrics) {
-    aBoundingMetrics = mBoundingMetrics;
-  }
-
-  void
-  SetBoundingMetrics(nsBoundingMetrics& aBoundingMetrics) {
-    mBoundingMetrics = aBoundingMetrics;
-  }
-
-  // Hooks to access the extra leaf style contexts given to the MathMLChars.
-  // They provide an interface to make them accessible to the Style System via
-  // the Get/Set AdditionalStyleContext() APIs. Owners of MathMLChars
-  // should honor these APIs.
-  nsStyleContext* GetStyleContext() const;
-
-  void SetStyleContext(nsStyleContext* aStyleContext);
-
-protected:
-  friend class nsGlyphTable;
-  nsString           mData;
-
-  // support for handling composite stretchy chars like TeX over/under braces
-  nsMathMLChar*      mSibling;
-  nsMathMLChar*      mParent;
-
-private:
-  nsRect             mRect;
-  PRInt32            mOperator;
-  nsStretchDirection mDirection;
-  nsBoundingMetrics  mBoundingMetrics;
-  nsStyleContext*    mStyleContext;
-  nsGlyphTable*      mGlyphTable;
-  nsGlyphCode        mGlyph;
-  // mFamily is non-empty when the family for the current size is different
-  // from the family in the nsStyleContext.
-  nsString           mFamily;
-
-  class StretchEnumContext;
-  friend class StretchEnumContext;
-
-  // helper methods
-  nsresult
-  StretchInternal(nsPresContext*           aPresContext,
-                  nsIRenderingContext&     aRenderingContext,
-                  nsStretchDirection&      aStretchDirection,
-                  const nsBoundingMetrics& aContainerSize,
-                  nsBoundingMetrics&       aDesiredStretchSize,
-                  PRUint32                 aStretchHint,
-                  float           aMaxSize = NS_MATHML_OPERATOR_SIZE_INFINITY,
-                  PRBool          aMaxSizeIsAbsolute = PR_FALSE);
-
-  nsresult
-  ComposeChildren(nsPresContext*       aPresContext,
-                  nsIRenderingContext& aRenderingContext,
-                  nsGlyphTable*        aGlyphTable,
-                  nscoord              aTargetSize,
-                  nsBoundingMetrics&   aCompositeSize,
-                  PRUint32             aStretchHint);
-
-  nsresult
-  PaintVertically(nsPresContext*       aPresContext,
-                  nsIRenderingContext& aRenderingContext,
-                  nsFont&              aFont,
-                  nsStyleContext*      aStyleContext,
-                  nsGlyphTable*        aGlyphTable,
-                  nsRect&              aRect);
-
-  nsresult
-  PaintHorizontally(nsPresContext*       aPresContext,
-                    nsIRenderingContext& aRenderingContext,
-                    nsFont&              aFont,
-                    nsStyleContext*      aStyleContext,
-                    nsGlyphTable*        aGlyphTable,
-                    nsRect&              aRect);
-};
-
-#endif /* nsMathMLChar_h___ */
deleted file mode 100644
--- a/layout/mathml/base/src/nsMathMLContainerFrame.cpp
+++ /dev/null
@@ -1,1477 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** 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>
- *   David J. Fiddes <D.J.Fiddes@hw.ac.uk>
- *   Pierre Phaneuf <pp@ludusdesign.com>
- *   Karl Tomlinson <karlt+@karlt.net>, Mozilla Corporation
- *
- * 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 ***** */
-
-#include "nsCOMPtr.h"
-#include "nsHTMLParts.h"
-#include "nsFrame.h"
-#include "nsPresContext.h"
-#include "nsIPresShell.h"
-#include "nsCSSAnonBoxes.h"
-#include "nsStyleContext.h"
-#include "nsStyleConsts.h"
-#include "nsINameSpaceManager.h"
-#include "nsIRenderingContext.h"
-#include "nsIFontMetrics.h"
-
-#include "nsIDOMText.h"
-#include "nsIDOMMutationEvent.h"
-#include "nsFrameManager.h"
-#include "nsStyleChangeList.h"
-
-#include "nsGkAtoms.h"
-#include "nsMathMLParts.h"
-#include "nsMathMLContainerFrame.h"
-#include "nsAutoPtr.h"
-#include "nsStyleSet.h"
-#include "nsDisplayList.h"
-#include "nsCSSFrameConstructor.h"
-#include "nsIReflowCallback.h"
-
-//
-// nsMathMLContainerFrame implementation
-//
-
-NS_QUERYFRAME_HEAD(nsMathMLContainerFrame)
-  NS_QUERYFRAME_ENTRY(nsMathMLFrame)
-NS_QUERYFRAME_TAIL_INHERITING(nsHTMLContainerFrame)
-
-// =============================================================================
-
-// error handlers
-// provide a feedback to the user when a frame with bad markup can not be rendered
-nsresult
-nsMathMLContainerFrame::ReflowError(nsIRenderingContext& aRenderingContext,
-                                    nsHTMLReflowMetrics& aDesiredSize)
-{
-  nsresult rv;
-
-  // clear all other flags and record that there is an error with this frame
-  mEmbellishData.flags = 0;
-  mPresentationData.flags = NS_MATHML_ERROR;
-
-  ///////////////
-  // Set font
-  nsLayoutUtils::SetFontFromStyle(&aRenderingContext, GetStyleContext());
-
-  // bounding metrics
-  nsAutoString errorMsg; errorMsg.AssignLiteral("invalid-markup");
-  rv = aRenderingContext.GetBoundingMetrics(errorMsg.get(),
-                                            PRUint32(errorMsg.Length()),
-                                            mBoundingMetrics);
-  if (NS_FAILED(rv)) {
-    NS_WARNING("GetBoundingMetrics failed");
-    aDesiredSize.width = aDesiredSize.height = 0;
-    aDesiredSize.ascent = 0;
-    return NS_OK;
-  }
-
-  // reflow metrics
-  nsCOMPtr<nsIFontMetrics> fm;
-  aRenderingContext.GetFontMetrics(*getter_AddRefs(fm));
-  fm->GetMaxAscent(aDesiredSize.ascent);
-  nscoord descent;
-  fm->GetMaxDescent(descent);
-  aDesiredSize.height = aDesiredSize.ascent + descent;
-  aDesiredSize.width = mBoundingMetrics.width;
-
-  // Also return our bounding metrics
-  aDesiredSize.mBoundingMetrics = mBoundingMetrics;
-
-  return NS_OK;
-}
-
-class nsDisplayMathMLError : public nsDisplayItem {
-public:
-  nsDisplayMathMLError(nsIFrame* aFrame)
-    : nsDisplayItem(aFrame) {
-    MOZ_COUNT_CTOR(nsDisplayMathMLError);
-  }
-#ifdef NS_BUILD_REFCNT_LOGGING
-  virtual ~nsDisplayMathMLError() {
-    MOZ_COUNT_DTOR(nsDisplayMathMLError);
-  }
-#endif
-
-  virtual void Paint(nsDisplayListBuilder* aBuilder, nsIRenderingContext* aCtx,
-     const nsRect& aDirtyRect);
-  NS_DISPLAY_DECL_NAME("MathMLError")
-};
-
-void nsDisplayMathMLError::Paint(nsDisplayListBuilder* aBuilder,
-     nsIRenderingContext* aCtx, const nsRect& aDirtyRect)
-{
-  // Set color and font ...
-  nsLayoutUtils::SetFontFromStyle(aCtx, mFrame->GetStyleContext());
-
-  nsPoint pt = aBuilder->ToReferenceFrame(mFrame);
-  aCtx->SetColor(NS_RGB(255,0,0));
-  aCtx->FillRect(nsRect(pt, mFrame->GetSize()));
-  aCtx->SetColor(NS_RGB(255,255,255));
-
-  nscoord ascent;
-  nsCOMPtr<nsIFontMetrics> fm;
-  aCtx->GetFontMetrics(*getter_AddRefs(fm));
-  fm->GetMaxAscent(ascent);
-
-  nsAutoString errorMsg; errorMsg.AssignLiteral("invalid-markup");
-  aCtx->DrawString(errorMsg.get(), PRUint32(errorMsg.Length()), pt.x, pt.y+ascent);
-}
-
-/* /////////////
- * nsIMathMLFrame - support methods for stretchy elements
- * =============================================================================
- */
-
-static PRBool
-IsForeignChild(const nsIFrame* aFrame)
-{
-  // This counts nsMathMLmathBlockFrame as a foreign child, because it
-  // uses block reflow
-  return !(aFrame->IsFrameOfType(nsIFrame::eMathML)) ||
-    aFrame->GetType() == nsGkAtoms::blockFrame;
-}
-
-static void
-DeleteHTMLReflowMetrics(void *aObject, nsIAtom *aPropertyName,
-                        void *aPropertyValue, void *aData)
-{
-  delete static_cast<nsHTMLReflowMetrics*>(aPropertyValue);
-}
-
-/* static */ void
-nsMathMLContainerFrame::SaveReflowAndBoundingMetricsFor(nsIFrame*                  aFrame,
-                                                        const nsHTMLReflowMetrics& aReflowMetrics,
-                                                        const nsBoundingMetrics&   aBoundingMetrics)
-{
-  nsHTMLReflowMetrics *metrics = new nsHTMLReflowMetrics(aReflowMetrics);
-  metrics->mBoundingMetrics = aBoundingMetrics;
-  aFrame->SetProperty(nsGkAtoms::HTMLReflowMetricsProperty, metrics,
-                      DeleteHTMLReflowMetrics);
-}
-
-// helper method to facilitate getting the reflow and bounding metrics
-/* static */ void
-nsMathMLContainerFrame::GetReflowAndBoundingMetricsFor(nsIFrame*            aFrame,
-                                                       nsHTMLReflowMetrics& aReflowMetrics,
-                                                       nsBoundingMetrics&   aBoundingMetrics,
-                                                       eMathMLFrameType*    aMathMLFrameType)
-{
-  NS_PRECONDITION(aFrame, "null arg");
-
-  nsHTMLReflowMetrics *metrics = static_cast<nsHTMLReflowMetrics*>
-    (aFrame->GetProperty(nsGkAtoms::HTMLReflowMetricsProperty));
-
-  // IMPOR