Commit 60d9cab0 authored by Anna.Pavlova's avatar Anna.Pavlova Committed by Alexander.Trofimov

1. Таблица операторов (не полная)

2. Таблица символов, которые всегда отрисовываются в Cambria Math (независимо от того, что выставлено св-во мат текст)
3. Обновила тестовые функции (к п.1)

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@63922 954022d7-b5bf-4e40-9824-e11837661b57
parent b3f8e0fe
......@@ -5911,7 +5911,7 @@ ParaRun.prototype.Apply_Pr = function(TextPr)
{
this.private_AddCollPrChangeMine();
if(this.Type == para_Math_Run && !this.IsNormalText())
if(this.Type == para_Math_Run && false === this.IsNormalText())
{
if(null === TextPr.Bold && null === TextPr.Italic)
this.Math_Apply_Style(undefined);
......@@ -9227,13 +9227,6 @@ ParaRun.prototype.IsNormalText = function()
var comp_MPrp = this.MathPrp.GetCompiled_ScrStyles();
return comp_MPrp.nor === true;
};
ParaRun.prototype.IsMathematicalText = function()
{
var MathText = !this.IsNormalText();
var bMFont = this.Get_CompiledPr(false).FontFamily.Name == "Cambria Math";
return MathText && bMFont;
};
ParaRun.prototype.getPropsForWrite = function()
{
var wRPrp = this.Pr.Copy(),
......
......@@ -20,6 +20,253 @@
//change FontSize
//editor.put_TextPrFontSize(parseInt("37"));
var TEST_MATH_FIRST_SYMBOL = 0x21;
var TEST_MATH_SYMBOL = 0x21;
var TEST_MATH_COUNT = 35;
var TEST_LAST_SYMBOL = 0x1D7FF;
// добавить в конструктор ParaMath
// this.TEST_SYMBOLS = true;
function _To_Run_To_Recalculate_Range(oRun)
{
if(oRun.Type == para_Math_Run && TEST_MATH_SYMBOL <= TEST_LAST_SYMBOL)
{
if(oRun.ParaMath.TEST_SYMBOLS == true)
{
for(var Pos = 0; Pos < TEST_MATH_COUNT && TEST_MATH_SYMBOL <= TEST_LAST_SYMBOL; Pos++)
{
TEST_MATH_SYMBOL = oTEST_MATH_RANGE.Check_Skip(TEST_MATH_SYMBOL);
oTEST_MATH_RANGE.Check_Space(TEST_MATH_SYMBOL, oRun.Content, true, this, oRun.ParaMath);
var oText = new CMathText(false);
oText.add(TEST_MATH_SYMBOL);
oText.PreRecalc(this, oRun.ParaMath);
oRun.Content.push(oText);
TEST_MATH_SYMBOL++;
}
oRun.ParaMath.TEST_SYMBOLS = false;
}
}
if(oRun.Content.length == 1 && oRun.Content[0].Type == para_Text && true === oRun.RecalcInfo.Measure)
{
if(oRun.Content[0].Value == 97)
{
TEST_MATH_SYMBOL = TEST_MATH_FIRST_SYMBOL;
oTEST_MATH_RANGE = new TEST_MATH_RANGES();
oRun.Content.length = 0;
for(var Pos = 0; TEST_MATH_SYMBOL<=0x35A8; Pos++)
{
TEST_MATH_SYMBOL = oTEST_MATH_RANGE.Check_Skip(TEST_MATH_SYMBOL);
oTEST_MATH_RANGE.Check_Space(TEST_MATH_SYMBOL, oRun.Content, false, this, oRun.ParaMath);
var oText = new ParaText();
oText.Set_CharCode(TEST_MATH_SYMBOL);
oRun.Content.push(oText);
TEST_MATH_SYMBOL++;
}
TEST_MATH_SYMBOL = TEST_MATH_FIRST_SYMBOL;
}
}
}
var oTEST_MATH_RANGE = new TEST_MATH_RANGES();
function TEST_MATH_RANGES()
{
this.Skips =
[
[0x7E, 0xA1],
[0x36F, 0x37A],
[0x37E, 0x384],
[0x38A, 0x38C],
[0x38C, 0x38E],
[0x3A1, 0x3A3],
[0x513, 0x524],
[0x525, 0x0E3F],
[0x0E3F, 0x1D00],
[0x1DCA, 0x1DFE],
[0x1E9B, 0x1EA0],
[0x1EF9, 0x1F00],
[0x1F15, 0x1F18],
[0x1F1D, 0x1F20],
[0x1F45, 0x1F48],
[0x1F4D, 0x1F50],
[0x1F57, 0x1F59],
[0x1F59, 0x1F5B],
[0x1F5B, 0x1F5D],
[0x1F5D, 0x1F5F],
[0x1F7D, 0x1F80],
[0x1FB4, 0x1FB6],
[0x1FC4, 0x1FC6],
[0x1FD3, 0x1FD6],
[0x1FDB, 0x1FDD],
[0x1FEF, 0x1FF2],
[0x1FFE, 0x2010],
[0x2010, 0x2012],
[0x2022, 0x2026],
[0x2026, 0x2030],
[0x2030, 0x2032],
[0x2034, 0x2039],
[0x203A, 0x203C],
[0x203C, 0x203E],
[0x203E, 0x2044],
[0x2046, 0x2057],
[0x2057, 0x205E],
[0x205E, 0x2070],
[0x2071, 0x2074],
[0x208E, 0x2090],
[0x2094, 0x20A0],
[0x20B5, 0x20B8],
[0x20B8, 0x20D0],
[0x20DF, 0x20E1],
[0x20E1, 0x20E5],
[0x20E6, 0x20E8],
[0x20EA, 0x2102],
[0x2105, 0x2107],
[0x211D, 0x2122],
[0x2122, 0x2124],
[0x213A, 0x213D],
[0x214B, 0x214D],
[0x214E, 0x2153],
[0x215E, 0x2183],
[0x2184, 0x2190],
[0x23CF, 0x23DC],
[0x23E0, 0x2460],
[0x2473, 0x24EA],
[0x24F4, 0x24FF],
[0x2500, 0x2502],
[0x2502, 0x250C],
[0x250C, 0x2510],
[0x2510, 0x2514],
[0x2514, 0x2518],
[0x2518, 0x251C],
[0x251C, 0x2524],
[0x2524, 0x252C],
[0x252C, 0x2534],
[0x2534, 0x2581],
[0x2581, 0x2588],
[0x2588, 0x2592],
[0x2592, 0x25A0],
[0x25A1, 0x25AD],
[0x25AD, 0x25B3],
[0x25B3, 0x25CA],
[0x25CB, 0x2660],
[0x2661, 0x2666],
[0x2666, 0x2776],
[0x277F, 0x27D0],
[0x27EB, 0x27F0],
[0x27FF, 0x2900],
[0x2AFF, 0x2B04],
[0x2B04, 0x2B06],
[0x2B07, 0x2B0C],
[0x2B0D, 0x2C60],
[0x2C6C, 0x2C74],
[0x2C77, 0x2E17],
[0x2E17, 0x3000],
[0x3020, 0x3030],
[0x3037, 0x303B],
[0x303D, 0x3041],
[0x3096, 0x3099],
[0x30FF, 0x3131],
[0x318E, 0x31F0],
[0x321E, 0x3220],
[0x3243, 0x3251],
[0x32CB, 0x32D0],
[0x32FE, 0x3300],
[0x3376, 0x337B],
[0x33DD, 0x33E0],
[0x33FE, 0x3402],
[0x3402, 0x3406],
[0x3406, 0x342C],
[0x342C, 0x342E],
[0x342E, 0x3468],
[0x3468, 0x346A],
[0x346A, 0x3492],
[0x3492, 0x34B5],
[0x34B5, 0x34BC],
[0x34BC, 0x34C1],
[0x34C1, 0x34C7],
[0x34C7, 0x34DB],
[0x34DB, 0x351F],
[0x351F, 0x355D],
[0x355E, 0x3563],
[0x3563, 0x356E],
[0x356E, 0x35A6],
[0x35A6, 0x35A8]
];
this.Spaces =
[
[0x2FE, 0x370],
[0x481, 0x48A],
[0x1DBF, 0x1E00],
[0x20D2, 0x20E0],
[0x20E4, 0x20E7]
];
this.CountSpaces =
{
0x20DD: 7, 0x20DE: 7, 0x20DF: 9, 0x35D: 7, 0x0488: 8, 0x0489: 8, 0x35E: 6
}
}
TEST_MATH_RANGES.prototype.Check_Skip = function(code)
{
var resCode = code;
while(this.Skips.length > 0 && code >= this.Skips[0][1])
{
this.Skips.splice(0, 1);
}
if(this.Skips.length > 0 && code > this.Skips[0][0] && code < this.Skips[0][1])
{
resCode = this.Skips[0][1];
}
return resCode;
};
TEST_MATH_RANGES.prototype.Check_Space = function(code, Content, bMath, Run, ParaMath)
{
while(this.Spaces.length > 0 && code >= this.Spaces[0][1])
{
this.Spaces.splice(0, 1);
}
if(this.Spaces.length > 0 && code > this.Spaces[0][0] && code < this.Spaces[0][1])
{
var Count = this.CountSpaces[code] !== undefined ? this.CountSpaces[code] : 4;
for(var i = 0; i < Count; i++)
{
var oSpace;
if(bMath)
{
oSpace = new CMathText(false);
oSpace.add(0x20);
oSpace.PreRecalc(Run, ParaMath);
}
else
{
oSpace = new ParaSpace();
}
Content.push(oSpace);
}
}
};
function TEST_MATH_JUCTIFICATION(mcJc)
{
......
......@@ -419,10 +419,6 @@ CMathBoxPr.prototype.Set_FromObject = function(Obj)
else
this.opEmu = false;
};
/*CMathBoxPr.prototype.IsBreak = function()
{
return this.brk ! == undefined;
};*/
CMathBoxPr.prototype.Copy = function()
{
var NewPr = new CMathBoxPr();
......
......@@ -641,13 +641,6 @@ CMathText.prototype.private_getCode = function()
}
}
/*if(!bNormal && code == 0x27)
{
// рисовать в Calibri
code = 3; GID
this.RecalcInfo.bApostrophe = true;
}*/
return code;
};
CMathText.prototype.fillPlaceholders = function()
......@@ -688,12 +681,12 @@ CMathText.prototype.Measure = function(oMeasure, TextPr, InfoMathText)
this.RecalcInfo.StyleCode = letter;
this.RecalcInfo.bAccentIJ = bAccentIJ;
var bApostrophe = (letter == 0x2032 || letter == 0x2033 || letter == 0x2034 || letter == 0x2057) && this.bJDraw == false;
var bApostrophe = 1 == q_Math_Apostrophe[letter] && this.bJDraw == false;
if(bAccentIJ)
oMeasure.SetStringGid(true);
if( InfoMathText.NeedUpdateFont(this.value, this.FontSlot, this.IsPlaceholder(), bApostrophe) )
if( InfoMathText.NeedUpdateFont(letter, this.FontSlot, this.IsPlaceholder(), bApostrophe) )
{
g_oTextMeasurer.SetFont(InfoMathText.Font);
//g_oTextMeasurer.SetTextPr(InfoTextPr.CurrentTextPr, InfoTextPr.Theme);
......@@ -719,10 +712,10 @@ CMathText.prototype.Measure = function(oMeasure, TextPr, InfoMathText)
width = metricsTxt.Width;
height = metricsTxt.Height;
InfoMathText.NeedUpdateFont(0x1D44E, this.FontSlot, false, false);
InfoMathText.NeedUpdateFont(0x1D44E, this.FontSlot, false, false); // a
g_oTextMeasurer.SetFont(InfoMathText.Font);
var metricsA = oMeasure.MeasureCode(0x1D44E);
var metricsA = oMeasure.MeasureCode(0x1D44E); // a
this.rasterOffsetY = metricsA.Height - metricsTxt.Ascent; // смещение для позиции
ascent = metricsA.Height;
......@@ -805,7 +798,7 @@ CMathText.prototype.Draw = function(x, y, pGraphics, InfoTextPr)
}
else if(this.RecalcInfo.bSpaceSpecial == false)
{
if( InfoTextPr.NeedUpdateFont(this.value, this.FontSlot, this.IsPlaceholder(), this.RecalcInfo.bApostrophe) )
if( InfoTextPr.NeedUpdateFont(this.RecalcInfo.StyleCode, this.FontSlot, this.IsPlaceholder(), this.RecalcInfo.bApostrophe) )
{
pGraphics.SetFont(InfoTextPr.Font);
//pGraphics.SetTextPr(InfoTextPr.CurrentTextPr, InfoTextPr.Theme);
......@@ -894,16 +887,13 @@ CMathText.prototype.IsText = function()
};
CMathText.prototype.private_Is_BreakOperator = function(val)
{
var bSimpleOper = val == 0x2D || val == 0x2B || val == 0x3D || val == 0x2A || val == 0x2F || val == 0x5C || val == 0x3C || val == 0x3E || val == 0xB1 || val == 0x2213 || val == 0x2219,
bArrows = (val >= 0x2190 && val <= 0x21B3) || val == 0x21B6 || val == 0x21B7 || (val >= 0x21BA && val <= 0x21E9) || (val >= 0x21F4 && val <= 0x21FF),
bOtherSymbols = (val >= 0x2234 && val <= 0x2237) || val == 0x2239 || (val >= 0x223B && val <= 0x228B) || (val >= 0x228F && val <= 0x2292) || (val >= 0x22A2 && val <= 0x22B9),
bFishes = (val >= 0x22C8 && val <= 0x22CD) || val == 0x22D0 ||val == 0x22D1 || (val >= 0x22D5 && val <= 0x22EE) || (val >= 0x22F0 && val <= 0x22FF) || (val >= 0x27F0 && val <= 0x297F ) || ( val >= 0x29CE && val <= 0x29D5);
var rOper = q_Math_BreakOperators[val];
return bSimpleOper || bArrows || bOtherSymbols || bFishes;
return rOper == 1 || rOper == 2;
};
CMathText.prototype.Is_CompareOperator = function()
{
return this.value == 0x3C || this.value == 0x3D || this.value == 0x3E;
return q_Math_BreakOperators[this.value] == 2;
};
CMathText.prototype.Is_LeftBracket = function()
{
......@@ -1110,20 +1100,20 @@ function CMathInfoTextPr(InfoTextPr)
CMathInfoTextPr.prototype.NeedUpdateFont = function(code, fontSlot, IsPlaceholder, IsApostrophe)
{
var NeedUpdateFont = false;
var bMathText = this.bNormalText == false || IsPlaceholder;
var bMathText = this.bNormalText == false || IsPlaceholder === true;
var Type;
if(bMathText && (this.RFontsCompare[fontSlot] == true || IsPlaceholder))
Type = MathTextInfo_MathText;
else if(bMathText && this.RFontsCompare[fontSlot] == false && this.IsSpecilalOperator(code))
else if(bMathText && this.RFontsCompare[fontSlot] == false && true === this.IsSpecilalOperator(code))
Type = MathTextInfo_SpecialOperator;
else
Type = MathTextInfo_NormalText;
var bChangeType = this.CurrType !== MathTextInfo_MathText && this.CurrType !== MathTextInfo_SpecialOperator; // -1 or MathTextInfo_NormalText
var ArgSize = this.ArgSize;
if(bChangeType && Type !== MathTextInfo_NormalText)
// CurrType -1 or MathTextInfo_NormalText
if(this.CurrType !== MathTextInfo_MathText && this.CurrType !== MathTextInfo_SpecialOperator && Type !== MathTextInfo_NormalText)
{
NeedUpdateFont = true;
}
......@@ -1168,13 +1158,153 @@ CMathInfoTextPr.prototype.GetFontSlot = function(code)
};
CMathInfoTextPr.prototype.IsSpecilalOperator = function(val)
{
var bSpecialOperator = val == 0x21 || val == 0x23 || (val >= 0x28 && val <= 0x2F) || (val >= 0x3A && val <= 0x3F) || (val >=0x5B && val <= 0x5F) || (val >= 0x7B && val <= 0xA1) || val == 0xAC || val == 0xB1 || val == 0xB7 || val == 0xBF || val == 0xD7 || val == 0xF7 || (val >= 0x2010 && val <= 0x2014) || val == 0x2016 || (val >= 0x2020 && val <= 0x2022) || val == 0x2026,
bSpecialArrow = val >= 0x2190 && val <= 0x21FF,
bSpecialSymbols = val == 0x2200 || val == 0x2201 || val == 0x2203 || val == 0x2204 || val == 0x2206|| (val >= 0x2208 && val <= 0x220D) || (val >= 0x220F && val <= 0x221E) || (val >= 0x2223 && val <= 0x223E) || (val >= 0x223F && val <= 0x22BD) || (val >= 0x22C0 && val <= 0x22FF) || val == 0x2305 || val == 0x2306 || (val >= 0x2308 && val <= 0x230B) || (val >= 0x231C && val <= 0x231F) || val == 0x2322 || val == 0x2323 || val == 0x2329 || val == 0x232A ||val == 0x233F || val == 0x23B0 || val == 0x23B1,
bOtherArrows = (val >= 0x27D1 && val <= 0x2980) || (val >= 0x2982 && val <= 0x299A) || (val >= 0x29B6 && val <= 0x29B9) || val == 0x29C0 || val == 0x29C1 || (val >= 0x29C4 && val <= 0x29C8) || (val >= 0x29CE && val <= 0x29DB) || val == 0x29DF || (val >= 0x29E1 && val <= 0x29E6) || val == 0x29EB || (val >= 0x29F4 && val <= 0x2AFF && val !== 0x2AE1 && val !== 0x2AF1) || (val >= 0x3014 && val <= 0x3017);
var bSpecialOperator = false;
// apostrophe GetMathModifiedFont
// отдельно Cambria Math 0x27
// символы из интервала val >= 0x2E2 && val <= 0x36F есть, как правило, в шрифтах и используют именно их, а не заменяют символами из Cambria Math
if(val >= 0x2190 && val <= 0x21E9)
{
bSpecialOperator = q_Math_Arrows[val] !== 0;
}
else if(val >= 0x21F4 && val <= 0x22FF)
{
bSpecialOperator = q_Math_SpecialEquals[val] !== 0;
}
else if(val >= 0x2701 && val <= 0x299A)
{
bSpecialOperator = val !== 0x2981;
}
else if(val >= 0x29F4 && val <= 0x2AFF)
{
bSpecialOperator = val !== 0x2AE1 && val !== 0x2AF1;
}
else
{
bSpecialOperator = q_Math_SpecialSymbols[val] == 1;
}
return bSpecialOperator;
};
return bSpecialOperator || bSpecialArrow || bSpecialSymbols || bOtherArrows;
var q_Math_Arrows =
{
0x21B4: 0, 0x21B5: 0, 0x21B8: 0, 0x21B9: 0
};
var q_Math_SpecialEquals =
{
0x2205: 0, 0x220E: 0, 0x221F: 0, 0x2220: 0, 0x2221: 0, 0x2222: 0, 0x223F: 0, 0x22BE: 0, 0x22BF: 0, 0x22A4: 0
};
var q_Math_SpecialSymbols =
{
0x0021: 1, 0x0023: 1, 0x0028: 1, 0x0029: 1, 0x002A: 1, 0x002B: 1, 0x002C: 1, 0x002D: 1, 0x002E: 1, 0x002F: 1,
0x003A: 1, 0x003B: 1, 0x003C: 1, 0x003D: 1, 0x003E: 1, 0x003F: 1, 0x005B: 1, 0x005C: 1, 0x005D: 1, 0x005E: 1,
0x005F: 1, 0x007B: 1, 0x007C: 1, 0x007D: 1, 0x007E: 1, 0x00A1: 1, 0x00AC: 1, 0x00B1: 1, 0x00B7: 1, 0X00BF: 1,
0x00D7: 1, 0x00F7: 1, 0x2010: 1, 0x2012: 1, 0x2013: 1, 0x2014: 1, 0x2016: 1, 0x2020: 1, 0x2021: 1, 0x2022: 1,
0x2026: 1, 0x2140: 1, 0x2145: 1, 0x2146: 1, 0x2147: 1, 0x2148: 1, 0x2149: 1,
0x2305: 1, 0x2306: 1, 0x2308: 1, 0x2309: 1, 0x230A: 1, 0x230B: 1, 0x231C: 1, 0x231D: 1, 0x231E: 1, 0x231F: 1,
0x2322: 1, 0x2323: 1, 0x2329: 1, 0x232A: 1, 0x233D: 1, 0x233F: 1, 0x23B0: 1, 0x23B1: 1,
0x29B6: 1, 0x29B7: 1, 0x29B8: 1, 0x29B9: 1, 0x29C0: 1, 0x29C1: 1, 0x29C4: 1, 0x29C5: 1, 0x29C6: 1, 0x29C7: 1,
0x29C8: 1, 0x29CE: 1, 0x29CF: 1, 0x29D0: 1, 0x29D1: 1, 0x29D2: 1, 0x29D3: 1, 0x29D4: 1, 0x29D5: 1, 0x29D6: 1,
0x29D7: 1, 0x29D8: 1, 0x29D9: 1, 0x29DA: 1, 0x29DB: 1, 0x29DF: 1, 0x29E1: 1, 0x29E2: 1, 0x29E3: 1, 0x29E4: 1,
0x29E5: 1, 0x29E6: 1, 0x29EB: 1, 0x3014: 1, 0x3015: 1, 0x3016: 1, 0x3017: 1,
0x1DC0: 1, 0x1DC1: 1, 0x1DC2: 1, 0x1DC3: 1
};
var q_Math_Apostrophe =
{
0x2032: 1, 0x2033: 1, 0x2034 : 1, 0x2057: 1
};
var q_Math_BreakOperators =
{
0x002A: 1, 0x002B: 1, 0x002D: 1, 0x002F: 1,0x003C: 2, 0x003D: 2,
0x003E: 2, 0x005C: 1, 0x2190: 2, 0x2191: 2, 0x2192: 2, 0x2193: 2,
0x2194: 2, 0x2195: 2, 0x2196: 2, 0x2197: 2,0x2198: 2, 0x2199: 2,
0x219A: 2, 0x219B: 2, 0x219C: 2, 0x219D: 2,0x219E: 2,0x219F: 2,
0x21A0: 2, 0x21A1: 2, 0x21A2: 2, 0x21A3: 2, 0x21A4: 2, 0x21A5: 2,
0x21A6: 2, 0x21A7: 2, 0x21A8: 2, 0x21A9: 2, 0x21AA: 2, 0x21AB: 2,
0x21AC: 2, 0x21AD: 2, 0x21AE: 2, 0x21AF: 2, 0x21B0: 2, 0x21B1: 2,
0x21B2: 2, 0x21B3: 2, 0x21B4: 2, 0x21B5: 2, 0x21B6: 2, 0x21B7: 2,
0x21BA: 2, 0x21BB: 2, 0x21BC: 2, 0x21BD: 2,
0x21BE: 2, 0x21BF: 2, 0x21C0: 2, 0x21C1: 2, 0x21C2: 2, 0x21C3: 2,
0x21C4: 2, 0x21C5: 2, 0x21C6: 2, 0x21C7: 2, 0x21C8: 2, 0x21C9: 2,
0x21CA: 2, 0x21CB: 2, 0x21CC: 2, 0x21CD: 2, 0x21CE: 2, 0x21CF: 2,
0x21D0: 2, 0x21D1: 2, 0x21D2: 2, 0x21D3: 2, 0x21D4: 2, 0x21D5: 2,
0x21D6: 2, 0x21D7: 2, 0x21D8: 2, 0x21D9: 2, 0x21DA: 2, 0x21DB: 2,
0x21DC: 2, 0x21DD: 2, 0x21DE: 2, 0x21DF: 2, 0x21E0: 2, 0x21E1: 2,
0x21E2: 2, 0x21E3: 2, 0x21E4: 2, 0x21E5: 2, 0x21E6: 2, 0x21E7: 2,
0x21E8: 2, 0x21E9: 2, 0x21F4: 2, 0x21F5: 2, 0x21F6: 2, 0x21F7: 2,
0x21F8: 2, 0x21F9: 2, 0x21FA: 2, 0x21FB: 2, 0x21FC: 2, 0x21FD: 2,
0x21FE: 2, 0x21FF: 2, 0x2208: 2, 0x2209: 2, 0x220A: 2, 0x220B: 2,
0x220C: 2, 0x220D: 2, 0x2212: 1, 0x2213: 1, 0x2214: 1, 0x2215: 1,
0x2216: 1, 0x2217: 1, 0x2218: 1, 0x2219: 1, 0x221D: 2, 0x2223: 2,
0x2224: 2, 0x2225: 2, 0x2226: 2, 0x2227: 1, 0x2228: 1, 0x2229: 1,
0x222A: 1, 0x2234: 2, 0x2235: 2, 0x2236: 2, 0x2237: 2, 0x2238: 1,
0x2239: 2, 0x223A: 1, 0x223B: 2, 0x223C: 2, 0x223D: 2, 0x223E: 2,
0x2240: 1, 0x2241: 2, 0x2242: 2, 0x2243: 2, 0x2244: 2, 0x2245: 2,
0x2246: 2, 0x2247: 2, 0x2248: 2, 0x2249: 2, 0x224A: 2, 0x224B: 2,
0x224C: 2, 0x224D: 2, 0x224E: 2, 0x224F: 2, 0x2250: 2, 0x2251: 2,
0x2252: 2, 0x2253: 2, 0x2254: 2, 0x2255: 2, 0x2256: 2, 0x2257: 2,
0x2258: 2, 0x2259: 2, 0x225A: 2, 0x225B: 2, 0x225C: 2, 0x225D: 2,
0x225E: 2, 0x225F: 2, 0x2260: 2, 0x2261: 2, 0x2262: 2, 0x2263: 2,
0x2264: 2, 0x2265: 2, 0x2266: 2, 0x2267: 2, 0x2268: 2, 0x2269: 2,
0x226A: 2, 0x226B: 2, 0x226C: 2, 0x226D: 2, 0x226E: 2, 0x226F: 2,
0x2270: 2, 0x2271: 2, 0x2272: 2, 0x2273: 2, 0x2274: 2, 0x2275: 2,
0x2276: 2, 0x2277: 2, 0x2278: 2, 0x2279: 2, 0x227A: 2, 0x227B: 2,
0x227C: 2, 0x227D: 2, 0x227E: 2, 0x227F: 2, 0x2280: 2, 0x2281: 2,
0x2282: 2, 0x2283: 2, 0x2284: 2, 0x2285: 2, 0x2286: 2, 0x2287: 2,
0x2288: 2, 0x2289: 2, 0x228A: 2, 0x228B: 2, 0x228C: 1, 0x228D: 1,
0x228E: 1, 0x228F: 2, 0x2290: 2, 0x2291: 2, 0x2292: 2, 0x2293: 1,
0x2294: 1, 0x22D0: 2, 0x22D1: 2, 0x22D2: 1, 0x22D3: 1, 0x22D4: 2,
0x22D5: 2, 0x22D6: 2, 0x22D7: 2, 0x22D8: 2, 0x22D9: 2, 0x22DA: 2,
0x22DB: 2, 0x22DC: 2, 0x22DD: 2, 0x22DE: 2, 0x22DF: 2, 0x22E0: 2,
0x22E1: 2, 0x22E2: 2, 0x22E3: 2, 0x22E4: 2, 0x22E5: 2, 0x22E6: 2,
0x22E7: 2, 0x22E8: 2, 0x22E9: 2, 0x233F: 2, 0x233D: 1, 0x23B0: 2,
0x23B1: 2, 0x27DC: 2, 0x27DD: 2, 0x27DE: 2,
0x27F5: 2, 0x27F6: 2, 0x27F7: 2, 0x27F8: 2, 0x27F9: 2, 0x27FA: 2,
0x27FB: 2, 0x27FC: 2, 0x27FD: 2, 0x27FE: 2, 0x27FF: 2, 0x2900: 2,
0x2901: 2, 0x2902: 2, 0x2903: 2, 0x2904: 2, 0x2905: 2, 0x2906: 2,
0x2907: 2, 0x2908: 2, 0x2909: 2, 0x290A: 2, 0x290B: 2, 0x290C: 2,
0x290D: 2, 0x290E: 2, 0x290F: 2, 0x2910: 2, 0x2911: 2, 0x2912: 2,
0x2913: 2, 0x2914: 2, 0x2915: 2, 0x2916: 2, 0x2917: 2, 0x2918: 2,
0x2919: 2, 0x291A: 2, 0x291B: 2, 0x291C: 2, 0x291D: 2, 0x291E: 2,
0x291F: 2, 0x2920: 2, 0x2921: 2, 0x2922: 2, 0x2923: 2, 0x2924: 2,
0x2925: 2, 0x2926: 2, 0x2927: 2, 0x2928: 2, 0x2929: 2, 0x292A: 2,
0x292B: 2, 0x292C: 2, 0x292D: 2, 0x292E: 2, 0x292F: 2, 0x2930: 2,
0x2931: 2, 0x2932: 2, 0x2933: 2, 0x2934: 2, 0x2935: 2, 0x2936: 2,
0x2937: 2, 0x2938: 2, 0x2939: 2, 0x293A: 2, 0x293B: 2, 0x293C: 2,
0x293D: 2, 0x293E: 2, 0x293F: 2, 0x2940: 2, 0x2941: 2, 0x2942: 2,
0x2943: 2, 0x2944: 2, 0x2945: 2, 0x2946: 2, 0x2947: 2, 0x2948: 2,
0x2949: 2, 0x294A: 2, 0x294B: 2, 0x294C: 2, 0x294D: 2, 0x294E: 2,
0x294F: 2, 0x2950: 2, 0x2951: 2, 0x2952: 2, 0x2953: 2, 0x2954: 2,
0x2955: 2, 0x2956: 2, 0x2957: 2, 0x2958: 2, 0x2959: 2, 0x295A: 2,
0x295B: 2, 0x295C: 2, 0x295D: 2, 0x295E: 2, 0x295F: 2, 0x2960: 2,
0x2961: 2, 0x2962: 2, 0x2963: 2, 0x2964: 2, 0x2965: 2, 0x2966: 2,
0x2967: 2, 0x2968: 2, 0x2969: 2, 0x296A: 2, 0x296B: 2, 0x296C: 2,
0x296D: 2, 0x296E: 2, 0x296F: 2, 0x2970: 2, 0x2971: 2, 0x2972: 2,
0x2973: 2, 0x2974: 2, 0x2975: 2, 0x2976: 2, 0x2977: 2, 0x2978: 2,
0x2979: 2, 0x297A: 2, 0x297B: 2, 0x2A52: 1, 0x2A53: 1, 0x2A54: 1,
0x2A55: 1, 0x2A56: 1, 0x2A57: 1, 0x2A58: 1, 0x2A59: 1, 0x2A5A: 1,
0x2A5B: 1, 0x2A5C: 1, 0x2A5D: 1, 0x2A5E: 1, 0x2A5F: 1, 0x2A60: 1,
0x2A61: 1, 0x2A62: 1, 0x2A63: 1, 0x2A64: 1, 0x2A65: 1, 0x2A66: 2,
0x2A67: 2, 0x2A68: 2, 0x2A69: 2, 0x2A6A: 2, 0x2A6B: 2, 0x2A6C: 2,
0x2A6D: 2, 0x2A6E: 2, 0x2A6F: 2, 0x2A70: 2, 0x2A71: 1, 0x2A72: 1,
0x2A73: 2, 0x2A74: 2, 0x2A75: 2, 0x2A76: 2, 0x2A77: 2, 0x2A78: 2,
0x2A79: 2, 0x2A7A: 2, 0x2A7B: 2, 0x2A7C: 2, 0x2A7D: 2, 0x2A7E: 2,
0x2A7F: 2, 0x2A80: 2, 0x2A81: 2, 0x2A82: 2, 0x2A83: 2, 0x2A84: 2,
0x2A85: 2, 0x2A86: 2, 0x2A87: 2, 0x2A88: 2, 0x2A89: 2, 0x2A8A: 2,
0x2A8B: 2, 0x2A8C: 2, 0x2A8D: 2, 0x2A8E: 2, 0x2A8F: 2, 0x2A90: 2,
0x2A91: 2, 0x2A92: 2, 0x2A93: 2, 0x2A94: 2, 0x2A95: 2, 0x2A96: 2,
0x2A97: 2, 0x2A98: 2, 0x2A99: 2, 0x2A9A: 2, 0x2A9B: 2, 0x2A9C: 2,
0x2A9D: 2, 0x2A9E: 2, 0x2A9F: 2, 0x2AA0: 2, 0x2AA1: 2, 0x2AA2: 2,
0x2AA3: 2, 0x2AA4: 2, 0x2AA5: 2, 0x2AA6: 2, 0x2AA7: 2, 0x2AA8: 2,
0x2AA9: 2, 0x2AAA: 2, 0x2AAB: 2, 0x2AAC: 2, 0x2AAD: 2, 0x2AAE: 2,
0x2AAF: 2, 0x2AB0: 2, 0x2AB1: 2, 0x2AB2: 2, 0x2AB3: 2, 0x2AB4: 2,
0x2AB5: 2, 0x2AB6: 2, 0x2AB7: 2, 0x2AB8: 2, 0x2AB9: 2, 0x2ABA: 2,
0x2ABB: 2, 0x2ABC: 2, 0x2ABD: 2, 0x2ABE: 2, 0x2ABF: 2, 0x2AC0: 2,
0x2AC1: 2, 0x2AC2: 2, 0x2AC3: 2, 0x2AC4: 2, 0x2AC5: 2, 0x2AC6: 2,
0x2AC7: 2, 0x2AC8: 2, 0x2AC9: 2, 0x2ACA: 2, 0x2ACB: 2, 0x2ACC: 2,
0x2ACD: 2, 0x2ACE: 2, 0x2ACF: 2, 0x2AD0: 2, 0x2AD1: 2, 0x2AD2: 2,
0x2AD3: 2, 0x2AD4: 2, 0x2AD5: 2, 0x2AD6: 2, 0x2AD7: 2, 0x2AD8: 2,
0x2AD9: 2, 0x2ADA: 2, 0x2ADB: 2, 0x2ADC: 2, 0x2ADD: 2
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment