зеркало из https://github.com/mozilla/gecko-dev.git
[NOT PART OF THE DEFAULT BUILD] Pick stretchy glyphs from the Math4 font. Make the stretchy code more robust by explicitly re-ordering the font-family list to place the selected font to be used in first position
This commit is contained in:
Родитель
32d8d79f6a
Коммит
4731458891
|
@ -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 ...
|
||||
|
|
|
@ -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
|
||||
|
|
Загрузка…
Ссылка в новой задаче