diff --git a/mozilla/layout/mathml/base/src/nsMathMLChar.cpp b/mozilla/layout/mathml/base/src/nsMathMLChar.cpp index 6475d16d6df..03130f398ab 100644 --- a/mozilla/layout/mathml/base/src/nsMathMLChar.cpp +++ b/mozilla/layout/mathml/base/src/nsMathMLChar.cpp @@ -113,7 +113,7 @@ public: void GetFontName(nsString& aFontName) { - aFontName = mFontName; + aFontName.Assign(mFontName); } nsGlyphTable* GetNextTable(void) @@ -503,13 +503,38 @@ nsGlyphTable(NS_TABLE_TYPE_UNICODE, "CMSY10", gCharDataCMSY, sizeof(gCharDataCMSY) / sizeof(gCharDataCMSY[0]), gGlyphCodeCMSY, sizeof(gGlyphCodeCMSY) / sizeof(gGlyphCodeCMSY[0])); +// ----------------------------------------------------------------------------------- +// Data for strecthy chars that are supported by the Math4 font ---------------------- + +static nsCharData gCharDataMath4[] = { +#define WANT_MATH4_DATA +#define WANT_CHAR_DATA + #include "nsMathMLCharList.h" +#undef WANT_CHAR_DATA +#undef WANT_MATH4_DATA +}; + +static nsGlyphCode gGlyphCodeMath4[] = { +#define WANT_MATH4_DATA +#define WANT_GLYPH_DATA + #include "nsMathMLCharList.h" +#undef WANT_GLYPH_DATA +#undef WANT_MATH4_DATA +}; + +nsGlyphTable gGlyphTableMath4 = +nsGlyphTable(NS_TABLE_TYPE_UNICODE, "Math4", + gCharDataMath4, sizeof(gCharDataMath4) / sizeof(gCharDataMath4[0]), + gGlyphCodeMath4, sizeof(gGlyphCodeMath4) / sizeof(gGlyphCodeMath4[0])); + // ----------------------------------------------------------------------------------- // All the glyph tables in order of preference ... nsGlyphTable* gAllGlyphTables[] = { - &gGlyphTableCMSY, + &gGlyphTableCMSY, // should be first to pick the single sqrt glyph therein &gGlyphTableCMEX, &gGlyphTableMTExtra, + &gGlyphTableMath4, &gGlyphTableSymbol, nsnull @@ -579,6 +604,8 @@ nsMathMLChar::SetData(nsIPresContext* aPresContext, mEnum = eMathMLChar_DONT_STRETCH; } #ifdef NS_DEBUG + // hitting this assertion? + // check nsMathMLCharList to ensure that enum and Unicode (of size0) match in MATHML_CHAR(index, enum, ...) else NS_ASSERTION(mGlyphTable->Has(nsGlyphCode(mData[0])), "Something is wrong somewhere"); #endif } @@ -696,6 +723,32 @@ IsSizeBetter(nscoord a, nscoord olda, nscoord b, PRInt32 aHint) return PR_FALSE; } +static PRBool +FontEnumCallback(const nsString& aFamily, PRBool aGeneric, void *aData) +{ + nsAutoString* familyList = (nsAutoString*)aData; + if (familyList->Find(aFamily, PR_TRUE) == kNotFound) { + familyList->Append(','); + // XXX could enclose in quotes if weird font problems develop + familyList->Append(aFamily); + } + return PR_TRUE; // don't stop +} + +// re-order the font-family list of aFont to put aFamily in first position +static void SetFirstFamily(nsFont& aFont, const nsString& aFamily) +{ + // put aFamily in first position + nsAutoString familyList(aFamily); + // XXX hack to force CMSY10 to be at least the second best choice ! + if (!aFamily.EqualsIgnoreCase("CMSY10")) + familyList.Append(",CMSY10"); + // loop over font-family: (skipping aFamily if present) + aFont.EnumerateFamilies(FontEnumCallback, &familyList); + // overwrite the old value of font-family: + aFont.name.Assign(familyList); +} + nsresult nsMathMLChar::Stretch(nsIPresContext* aPresContext, nsIRenderingContext& aRenderingContext, @@ -715,8 +768,13 @@ nsMathMLChar::Stretch(nsIPresContext* aPresContext, /////////////// // Set font + nsAutoString fontName; nsStyleFont font; mStyleContext->GetStyle(eStyleStruct_Font, font); + if (mGlyphTable) { + mGlyphTable->GetFontName(fontName); + SetFirstFamily(font.mFont, fontName); // force precedence on this font + } aRenderingContext.SetFont(font.mFont); ////////////// @@ -800,9 +858,10 @@ nsMathMLChar::Stretch(nsIPresContext* aPresContext, while (glyphTable && !sizeOK) { if (glyphTable->Has(mEnum) && glyphTable->BigOf(mEnum, 1)) { // see if this table has a glyph that matches the size -#ifdef NOISY_SEARCH - nsAutoString fontName; glyphTable->GetFontName(fontName); + SetFirstFamily(font.mFont, fontName); // force precedence on this font + aRenderingContext.SetFont(font.mFont); +#ifdef NOISY_SEARCH char str[50]; fontName.ToCString(str, sizeof(str)); printf(" searching in %s ...\n", str); @@ -871,6 +930,9 @@ nsMathMLChar::Stretch(nsIPresContext* aPresContext, glyphTable = gGlyphTableList.FirstTable(); while (glyphTable) { if (glyphTable->Has(mEnum) && glyphTable->GlueOf(mEnum)) { + glyphTable->GetFontName(fontName); + SetFirstFamily(font.mFont, fontName); // force precedence on this font + aRenderingContext.SetFont(font.mFont); ch = glyphTable->GlueOf(mEnum); rv = glyphTable->GetBoundingMetrics(aRenderingContext, ch, bm); if (NS_SUCCEEDED(rv)) { @@ -889,7 +951,6 @@ nsMathMLChar::Stretch(nsIPresContext* aPresContext, } #ifdef NOISY_SEARCH if (gCharInfo[mEnum].mGlyphTable) { - nsAutoString fontName; gCharInfo[mEnum].mGlyphTable->GetFontName(fontName); char str[50]; fontName.ToCString(str, sizeof(str)); @@ -899,7 +960,6 @@ nsMathMLChar::Stretch(nsIPresContext* aPresContext, } #ifdef NOISY_SEARCH if (gCharInfo[mEnum].mGlyphTable) { - nsAutoString fontName; gCharInfo[mEnum].mGlyphTable->GetFontName(fontName); char str[50]; fontName.ToCString(str, sizeof(str)); @@ -921,6 +981,9 @@ nsMathMLChar::Stretch(nsIPresContext* aPresContext, // we are going to build by parts... // using the glyph table with the smallest glue glyphTable = gCharInfo[mEnum].mGlyphTable; + glyphTable->GetFontName(fontName); + SetFirstFamily(font.mFont, fontName); // force precedence on this font + aRenderingContext.SetFont(font.mFont); PRInt32 i; @@ -1059,6 +1122,12 @@ nsMathMLChar::Paint(nsIPresContext* aPresContext, nsStyleFont font; mStyleContext->GetStyle(eStyleStruct_Font, font); aRenderingContext.SetColor(color.mColor); + + if (mGlyphTable) { + nsAutoString fontName; + mGlyphTable->GetFontName(fontName); + SetFirstFamily(font.mFont, fontName); // force precedence on this font + } aRenderingContext.SetFont(font.mFont); // grab some metrics that will help to adjust the placements ... diff --git a/mozilla/layout/mathml/base/src/nsMathMLCharList.h b/mozilla/layout/mathml/base/src/nsMathMLCharList.h index 2a1892c6277..fa0ba2c8b75 100644 --- a/mozilla/layout/mathml/base/src/nsMathMLCharList.h +++ b/mozilla/layout/mathml/base/src/nsMathMLCharList.h @@ -208,11 +208,11 @@ MATHML_CHAR(DiacriticalTilde, 0x02DC, STRETCH_HORIZONTAL) MATHML_CHAR(Hacek, 0x02C7, STRETCH_HORIZONTAL) MATHML_CHAR(Hat, 0x0302, STRETCH_HORIZONTAL) MATHML_CHAR(OverCurlyBracket, 0xF612, STRETCH_HORIZONTAL) -MATHML_CHAR(OverBracket, 0xF614, STRETCH_HORIZONTAL) +MATHML_CHAR(OverSquareBracket, 0xF614, STRETCH_HORIZONTAL) MATHML_CHAR(OverParenthesis, 0xF610, STRETCH_HORIZONTAL) MATHML_CHAR(UnderBar, 0x0332, STRETCH_HORIZONTAL) MATHML_CHAR(UnderCurlyBracket, 0xF613, STRETCH_HORIZONTAL) -MATHML_CHAR(UnderBracket, 0xF615, STRETCH_HORIZONTAL) +MATHML_CHAR(UnderSquareBracket, 0xF615, STRETCH_HORIZONTAL) MATHML_CHAR(UnderParenthesis, 0xF611, STRETCH_HORIZONTAL) MATHML_CHAR(CircleDot, 0x2299, STRETCH_VERTICAL) MATHML_CHAR(CirclePlus, 0x2295, STRETCH_VERTICAL) @@ -279,58 +279,82 @@ MATHML_CHAR(36, RightHarpoonAccent, 0x0000 _ 0x0000 _ 0x20D1 _ 0xEB00, 0x20D1) // Data for strecthy chars that are supported by TeX's CMSY font --------------------- // ----------------------------------------------------------------------------------- - #if defined(WANT_CMSY_DATA) //[top/left][middle][bot/right][glue] [size0 ... size{N-1}] -MATHML_CHAR( 0, DoubleLeftArrow, 0x21D0 _ 0x0000 _ 0x0000 _ '=', 0x21D0) -MATHML_CHAR( 6, DoubleRightArrow, 0x0000 _ 0x0000 _ 0x21D2 _ '=', 0x21D2) -MATHML_CHAR(12, DoubleLeftRightArrow,0x21D0 _ 0x0000 _ 0x21D2 _ '=', 0x21D4) -MATHML_CHAR(18, DoubleLongLeftArrow, 0x21D0 _ 0x0000 _ 0x0000 _ '=', 0xE200) -MATHML_CHAR(24, DoubleLongRightArrow,0x0000 _ 0x0000 _ 0x21D2 _ '=', 0xE204) -MATHML_CHAR(30, DoubleLongLeftRightArrow, 0x21D0 _ 0x0000 _ 0x21D2 _ '=', 0xE202) + #if defined(WANT_CMSY_DATA) //[top/left][middle][bot/right][glue] [size0 ... size{N-1}] +MATHML_CHAR( 0, Sqrt, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x221A) +MATHML_CHAR( 6, DoubleLeftArrow, 0x21D0 _ 0x0000 _ 0x0000 _ '=', 0x21D0) +MATHML_CHAR(12, DoubleRightArrow, 0x0000 _ 0x0000 _ 0x21D2 _ '=', 0x21D2) +MATHML_CHAR(18, DoubleLeftRightArrow,0x21D0 _ 0x0000 _ 0x21D2 _ '=', 0x21D4) +MATHML_CHAR(24, DoubleLongLeftArrow, 0x21D0 _ 0x0000 _ 0x0000 _ '=', 0xE200) +MATHML_CHAR(30, DoubleLongRightArrow,0x0000 _ 0x0000 _ 0x21D2 _ '=', 0xE204) +MATHML_CHAR(36, DoubleLongLeftRightArrow, 0x21D0 _ 0x0000 _ 0x21D2 _ '=', 0xE202) #endif // defined(WANT_CMSY_DATA) // Data for strecthy chars that are supported by TeX's CMEX font --------------------- // ----------------------------------------------------------------------------------- #if defined(WANT_CMEX_DATA) // [top/left][middle][bot/right][glue] [size0 ... size{N-1}] -MATHML_CHAR( 0, LeftParenthesis, 0xE030 _ 0x0000 _ 0xE040 _ 0xE042, 0x0028 _ 0xE072 _ 0xE089 _ 0xE08B _ 0xE099) -MATHML_CHAR( 10, RightParenthesis, 0xE031 _ 0x0000 _ 0xE041 _ 0xE043, 0x0029 _ 0xE073 _ 0xE08A _ 0xE08C _ 0xE021) -MATHML_CHAR( 20, LeftSquareBracket, 0xE032 _ 0x0000 _ 0xE034 _ 0xE036, 0x005B _ 0xE074 _ 0xE08D _ 0xE05B _ 0xE022) -MATHML_CHAR( 30, RightSquareBracket, 0xE033 _ 0x0000 _ 0xE035 _ 0xE037, 0x005D _ 0xE075 _ 0xE08E _ 0xE05C _ 0xE023) -MATHML_CHAR( 40, LeftFloor, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x230A _ 0xE076 _ 0xE08F _ 0xE05D _ 0xE024) -MATHML_CHAR( 50, RightFloor, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x230B _ 0xE077 _ 0xE090 _ 0xE05E _ 0xE025) -MATHML_CHAR( 60, LeftCeiling, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2308 _ 0xE078 _ 0xE091 _ 0xE05F _ 0xE026) -MATHML_CHAR( 70, RightCeiling, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2309 _ 0xE079 _ 0xE092 _ 0xE060 _ 0xE027) -MATHML_CHAR( 80, LeftCurlyBracket, 0xE038 _ 0xE03C _ 0xE03A _ 0xE03E, 0x007B _ 0xE07A _ 0xE093 _ 0xE061 _ 0xE028) -MATHML_CHAR( 90, RightCurlyBracket, 0xE039 _ 0xE03D _ 0xE03B _ 0xE03E, 0x007D _ 0xE07B _ 0xE094 _ 0xE062 _ 0xE029) -MATHML_CHAR(100, LeftAngleBracket, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x3008 _ 0xE07C _ 0xE095 _ 0xE044 _ 0xE02A) -MATHML_CHAR(110, RightAngleBracket, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x3009 _ 0xE07D _ 0xE096 _ 0xE045 _ 0xE02B) -MATHML_CHAR(120, SquareUnion, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2294 _ 0xE046) -MATHML_CHAR(127, ContourIntegral, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x222E _ 0xE047) -MATHML_CHAR(134, CircleDot, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2299 _ 0xE048) -MATHML_CHAR(141, CirclePlus, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2249 _ 0xE04A) -MATHML_CHAR(148, CircleMultiply, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2297 _ 0xE04B) -MATHML_CHAR(155, Sum, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2211 _ 0xE04C) -MATHML_CHAR(162, Product, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x220F _ 0xE04D) -MATHML_CHAR(169, Slash, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, '/' _ 0xE02E _ 0xE097 _ 0xE080 _ 0xE02C) -MATHML_CHAR(179, Integral, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x222B _ 0xE04E) -MATHML_CHAR(186, Union, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x22C3 _ 0xE04F) -MATHML_CHAR(193, Intersection, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x22C2 _ 0xE050) -MATHML_CHAR(200, UnionPlus, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x228E _ 0xE051) -MATHML_CHAR(207, And, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2227 _ 0xE052) -MATHML_CHAR(214, Or, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2228 _ 0xE053) -MATHML_CHAR(221, Coproduct, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2210 _ 0xE054) -MATHML_CHAR(228, Hat, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x0302 _ 0xE055 _ 0xE056 _ 0xE057) -MATHML_CHAR(237, Tilde, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x223C _ 0xE058 _ 0xE059 _ 0xE05A) -MATHML_CHAR(246, Sqrt, 0xE069 _ 0x0000 _ 0xE067 _ 0xE068, 0x221A _ 0xE063 _ 0xE064 _ 0xE065 _ 0xE066) -MATHML_CHAR(256, UpArrow, 0xE06B _ 0x0000 _ 0x0000 _ 0xE03F, 0x2191) -MATHML_CHAR(262, DownArrow, 0x0000 _ 0x0000 _ 0xE06C _ 0xE03F, 0x2193) -MATHML_CHAR(268, UpDownArrow, 0xE06B _ 0x0000 _ 0xE06C _ 0xE03F, 0x2195) -MATHML_CHAR(274, DoubleUpArrow, 0xE071 _ 0x0000 _ 0x0000 _ 0xE06A, 0x21D1) -MATHML_CHAR(280, DoubleDownArrow, 0x0000 _ 0x0000 _ 0xE09A _ 0xE06A, 0x21D3) -MATHML_CHAR(286, DoubleUpDownArrow, 0xE071 _ 0x0000 _ 0xE09A _ 0xE06A, 0x21D5) +MATHML_CHAR( 0, LeftParenthesis, 0xE030 _ 0x0000 _ 0xE040 _ 0xE042, 0x0028 _ 0xE07F _ 0xE08F _ 0xE091 _ 0xE09F) +MATHML_CHAR( 10, RightParenthesis, 0xE031 _ 0x0000 _ 0xE041 _ 0xE043, 0x0029 _ 0xE080 _ 0xE090 _ 0xE092 _ 0xE021) +MATHML_CHAR( 20, LeftSquareBracket, 0xE032 _ 0x0000 _ 0xE034 _ 0xE036, 0x005B _ 0xE081 _ 0xE093 _ 0xE068 _ 0xE022) +MATHML_CHAR( 30, RightSquareBracket, 0xE033 _ 0x0000 _ 0xE035 _ 0xE037, 0x005D _ 0xE082 _ 0xE094 _ 0xE069 _ 0xE023) +MATHML_CHAR( 40, LeftFloor, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x230A _ 0xE083 _ 0xE095 _ 0xE06A _ 0xE024) +MATHML_CHAR( 50, RightFloor, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x230B _ 0xE084 _ 0xE096 _ 0xE06B _ 0xE025) +MATHML_CHAR( 60, LeftCeiling, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2308 _ 0xE085 _ 0xE097 _ 0xE06C _ 0xE026) +MATHML_CHAR( 70, RightCeiling, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2309 _ 0xE086 _ 0xE098 _ 0xE06D _ 0xE027) +MATHML_CHAR( 80, LeftCurlyBracket, 0xE038 _ 0xE03C _ 0xE03A _ 0xE03E, 0x007B _ 0xE087 _ 0xE099 _ 0xE06E _ 0xE028) +MATHML_CHAR( 90, RightCurlyBracket, 0xE039 _ 0xE03D _ 0xE03B _ 0xE03E, 0x007D _ 0xE088 _ 0xE09A _ 0xE06F _ 0xE029) +MATHML_CHAR(100, LeftAngleBracket, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x3008 _ 0xE089 _ 0xE09B _ 0xE044 _ 0xE02A) +MATHML_CHAR(110, RightAngleBracket, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x3009 _ 0xE08A _ 0xE09C _ 0xE045 _ 0xE02B) +MATHML_CHAR(120, SquareUnion, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2294 _ 0xE046 _ 0xE047) +MATHML_CHAR(128, ContourIntegral, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x222E _ 0xE048 _ 0xE049) +MATHML_CHAR(136, CircleDot, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2299 _ 0xE04A _ 0xE04B) +MATHML_CHAR(144, CirclePlus, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2295 _ 0xE04C _ 0xE04D) +MATHML_CHAR(152, CircleMultiply, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2297 _ 0xE04E _ 0xE04F) +MATHML_CHAR(160, Sum, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2211 _ 0xE050 _ 0xE058) +MATHML_CHAR(168, Product, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x220F _ 0xE051 _ 0xE059) +MATHML_CHAR(176, Slash, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, '/' _ 0xE02E _ 0xE09D _ 0xE08D _ 0xE02C) +MATHML_CHAR(186, Union, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x22C3 _ 0xE053 _ 0xE05B) +MATHML_CHAR(194, Intersection, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x22C2 _ 0xE054 _ 0xE05C) +MATHML_CHAR(202, UnionPlus, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x228E _ 0xE055 _ 0xE05D) +MATHML_CHAR(210, And, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2227 _ 0xE056 _ 0xE05E) +MATHML_CHAR(218, Or, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2228 _ 0xE057 _ 0xE05F) +MATHML_CHAR(226, Coproduct, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x2210 _ 0xE060 _ 0xE061) +MATHML_CHAR(234, Hat, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x0302 _ 0xE062 _ 0xE063 _ 0xE064) +MATHML_CHAR(243, Tilde, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x223C _ 0xE065 _ 0xE066 _ 0xE067) +MATHML_CHAR(252, Sqrt, 0xE076 _ 0x0000 _ 0xE074 _ 0xE075, 0x221A _ 0xE070 _ 0xE071 _ 0xE072 _ 0xE073) +MATHML_CHAR(262, UpArrow, 0xE078 _ 0x0000 _ 0x0000 _ 0xE03F, 0x2191) +MATHML_CHAR(268, DownArrow, 0x0000 _ 0x0000 _ 0xE079 _ 0xE03F, 0x2193) +MATHML_CHAR(274, UpDownArrow, 0xE078 _ 0x0000 _ 0xE079 _ 0xE03F, 0x2195) +MATHML_CHAR(280, DoubleUpArrow, 0xE07E _ 0x0000 _ 0x0000 _ 0xE077, 0x21D1) +MATHML_CHAR(286, DoubleDownArrow, 0x0000 _ 0x0000 _ 0xE0A0 _ 0xE077, 0x21D3) +MATHML_CHAR(292, DoubleUpDownArrow, 0xE07E _ 0x0000 _ 0xE0A0 _ 0xE077, 0x21D5) +//XXX awaiting the italic correction +//MATHML_CHAR(298, Integral, 0x0000 _ 0x0000 _ 0x0000 _ 0x0000, 0x222B _ 0xE052 _ 0xE05A) #endif // defined(WANT_CMEX_DATA) +// Data for strecthy chars that are supported by the Math4 font ---------------------- +// ----------------------------------------------------------------------------------- + #if defined(WANT_MATH4_DATA) // [top/left][middle][bot/right][glue] [size0 ... size{N-1}] +MATHML_CHAR( 0, UnderCurlyBracket, 0xEC00 _ 0xEC01 _ 0xEC02 _ 0xEC03, 0xF613 _ 0xEC29 _ 0xEC2A _ 0xEC2B) +MATHML_CHAR( 9, OverCurlyBracket, 0xEC04 _ 0xEC05 _ 0xEC06 _ 0xEC07, 0xF612 _ 0xEC25 _ 0xEC26 _ 0xEC27) +MATHML_CHAR(18, UnderSquareBracket, 0xEC08 _ 0x0000 _ 0xEC0A _ 0xEC09, 0xF615 _ 0xEC19 _ 0xEC1A _ 0xEC1B) +MATHML_CHAR(27, OverSquareBracket, 0xEC0B _ 0x0000 _ 0xEC0D _ 0xEC0C, 0xF614 _ 0xEC15 _ 0xEC16 _ 0xEC17) +MATHML_CHAR(36, UnderParenthesis, 0xEC0E _ 0x0000 _ 0xEC10 _ 0xEC0F, 0xF611 _ 0xEC21 _ 0xEC22 _ 0xEC23) +MATHML_CHAR(45, OverParenthesis, 0xEC11 _ 0x0000 _ 0xEC13 _ 0xEC12, 0xF610 _ 0xEC1D _ 0xEC1E _ 0xEC1F) + #endif // defined(WANT_MATH4_DATA) + #undef _ #endif // defined(WANT_CHAR_DATA) || defined(WANT_GLYPH_DATA) #undef MATHML_CHAR + + +#if 0 +// awaiting PUA codes from Math4 + 0xD0 0x002F [Forward slash (solidus)] + 0xD1 0x002F [Forward slash (solidus)] + 0xD2 0x002F [Forward slash (solidus)] + 0xD3 0x002F [Forward slash (solidus)] + 0xD4 0x002F [Forward slash (solidus)] + 0xD5 0x002F [Forward slash (solidus)] +#endif