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

1. Поправила многочисленные баги, связанные с амперсандами (в связи с тем что...

1. Поправила многочисленные баги, связанные с амперсандами (в связи с тем что не хватало некоторых функций, которые есть в CMathText)
2. Вынесла общий функционал классов CMathText и CMathAmp в общий класс CMathBaseText

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@62824 954022d7-b5bf-4e40-9824-e11837661b57
parent 46bb66b3
......@@ -604,15 +604,12 @@ ParaMath.prototype.Add = function(Item)
var NewElement = null;
if (para_Text === Type)
{
// заглушка для текстовых настроек плейсхолдера
if(oContent.bRoot == false && Run.IsPlaceholder())
{
var ctrPrp = oContent.Parent.Get_CtrPrp(); // копия ctrPrp
Run.Apply_TextPr(ctrPrp, undefined, true);
//Run.Apply_TextPr();
}
if(Item.Value == 38)
......@@ -3203,7 +3200,6 @@ CMathRecalculateInfo.prototype.ClearRecalculate = function()
this.bCorrect_FontSize = false;
};
function CMathRecalculateObject()
{
this.WrapState = ALIGN_EMPTY;
......
......@@ -1994,8 +1994,6 @@ CMathBase.prototype.UpdateMetrics = function(PRS, Size)
if(PRS.LineDescent < Size.height - Size.ascent)
PRS.LineDescent = Size.height - Size.ascent;
//PRS.ContentMetrics.UpdateMetrics(Size);
};
CMathBase.prototype.Recalculate_Range_Width = function(PRSC, _CurLine, _CurRange)
{
......
......@@ -37,12 +37,103 @@ CMathSize.prototype.Set = function(size)
this.ascent = size.ascent;
};
function CMathBaseText()
{
this.Type = null;
this.bJDraw = false;
this.value = null;
this.bEmptyGapLeft = false;
this.bEmptyGapRight = false;
this.ParaMath = null;
this.Parent = null;
this.Flags = 0;
this.size = new CMathSize();
this.Width = 0; // special for Run размер буквы без Gaps
// в действительности это поле не должно использоваться, нужно использовать функциии Get_Width, Get_Width_2 ,Get_WidthVisible
this.pos = new CMathPosition();
this.GapLeft = 0;
this.GapRight = 0;
}
CMathBaseText.prototype.Get_Width = function() // работаем через функцию, т.к. поля GapLeft и GapRight могут измениться из-за изменения переноса, а пересчет (Measure) в этом случае не прийдет
{
var Width = this.size.width;
if(this.bEmptyGapLeft == false)
Width += this.GapLeft;
if(this.bEmptyGapRight == false)
Width += this.GapRight;
return (Width*TEXTWIDTH_DIVIDER) | 0;
};
CMathBaseText.prototype.Get_Width2 = function() // работаем через функцию, т.к. поля GapLeft и GapRight могут измениться из-за изменения переноса, а пересчет (Measure) в этом случае не прийдет
{
return ( (this.size.width + this.GapLeft + this.GapRight)* TEXTWIDTH_DIVIDER ) | 0;
};
CMathBaseText.prototype.Get_WidthVisible = function()
{
var Width = this.size.width;
if(this.bEmptyGapLeft == false)
Width += this.GapLeft;
if(this.bEmptyGapRight == false)
Width += this.GapRight;
return Width;
};
CMathBaseText.prototype.Update_StateGapLeft = function(bState)
{
this.bEmptyGapLeft = bState;
};
CMathBaseText.prototype.Update_StateGapRight = function(bState)
{
this.bEmptyGapRight = bState;
};
CMathBaseText.prototype.GetLocationOfLetter = function()
{
var pos = new CMathPosition();
pos.x = this.pos.x;
pos.y = this.pos.y;
return pos;
};
CMathBaseText.prototype.IsPlaceholder = function()
{
return this.Type == para_Math_Placeholder;
};
CMathBaseText.prototype.IsJustDraw = function()
{
return false;
};
// For ParaRun
CMathBaseText.prototype.Is_Punctuation = function()
{
var bPunc = 1 === g_aPunctuation[this.value],
bMathSign = this.value == 0x2217 || this.value == 0x2212;
return bPunc || bMathSign;
};
CMathBaseText.prototype.Is_NBSP = function()
{
return false;
};
CMathBaseText.prototype.Can_AddNumbering = function()
{
return true;
};
function CMathText(bJDraw)
{
// для Para_Run
CMathText.superclass.constructor.call(this);
this.Type = para_Math_Text;
this.bJDraw = (undefined === bJDraw ? false : bJDraw);
this.value = null;
this.RecalcInfo =
{
......@@ -53,21 +144,8 @@ function CMathText(bJDraw)
bSpecialOperator: false
};
this.bEmptyGapLeft = false;
this.bEmptyGapRight = false;
this.ParaMath = null;
this.Flags = 0;
this.Parent = null;
this.size = new CMathSize();
this.Width = 0; // для Recalculate_Range
this.pos = new CMathPosition();
this.rasterOffsetX = 0;
this.rasterOffsetY = 0;
this.GapLeft = 0;
this.GapRight = 0;
this.FontSlot = fontslot_ASCII;
......@@ -83,23 +161,25 @@ function CMathText(bJDraw)
};*/
}
CMathText.prototype =
Asc.extendClass(CMathText, CMathBaseText);
CMathText.prototype.add = function(code)
{
constructor: CMathText,
add: function(code)
{
this.value = code;
if( this.Is_BreakOperator(code) )
if( this.private_Is_BreakOperator(code) )
this.Type = para_Math_BreakOperator;
},
addTxt: function(txt)
{
};
CMathText.prototype.addTxt = function(txt)
{
var code = txt.charCodeAt(0);
this.add(code);
},
getCode: function()
{
};
CMathText.prototype.getCodeChr = function()
{
return this.value;
};
CMathText.prototype.private_getCode = function()
{
var code = this.value;
var bNormal = this.bJDraw ? null : this.Parent.IsNormalText();
......@@ -550,18 +630,14 @@ CMathText.prototype =
}*/
return code;
},
getCodeChr: function()
{
return this.value;
},
fillPlaceholders: function()
{
};
CMathText.prototype.fillPlaceholders = function()
{
this.Type = para_Math_Placeholder;
this.value = StartTextElement;
},
Measure: function(oMeasure, TextPr, InfoMathText)
{
};
CMathText.prototype.Measure = function(oMeasure, TextPr, InfoMathText)
{
/*
var metricsTxt = g_oTextMeasurer.Measure2Code(letter);
var _width = metricsTxt.Width;
......@@ -584,7 +660,7 @@ CMathText.prototype =
this.FontSlot = InfoMathText.GetFontSlot(this.value); // возвращает fontslot_ASCII || fontslot_EastAsia || fontslot_CS || fontslot_HAnsi
var letter = this.getCode();
var letter = this.private_getCode();
// в не математическом тексте i и j не подменяются на i и j без точек
var bAccentIJ = !InfoMathText.bNormalText && this.Parent.IsAccent() && (this.value == 0x69 || this.value == 0x6A);
......@@ -644,60 +720,17 @@ CMathText.prototype =
this.Width = (this.size.width * TEXTWIDTH_DIVIDER) | 0;
},
PreRecalc: function(Parent, ParaMath, ArgSize, RPI)
{
};
CMathText.prototype.PreRecalc = function(Parent, ParaMath, ArgSize, RPI)
{
this.ParaMath = ParaMath;
if(!this.bJDraw)
this.Parent = Parent;
else
this.Parent = null;
},
Get_Width: function() // работаем через функцию, т.к. поля GapLeft и GapRight могут измениться из-за изменения переноса, а пересчет (Measure) в этом случае не прийдет
{
var Width = this.size.width;
if(this.bEmptyGapLeft == false)
Width += this.GapLeft;
if(this.bEmptyGapRight == false)
Width += this.GapRight;
return (Width*TEXTWIDTH_DIVIDER) | 0;
},
Get_Width2: function() // работаем через функцию, т.к. поля GapLeft и GapRight могут измениться из-за изменения переноса, а пересчет (Measure) в этом случае не прийдет
{
return ( (this.size.width + this.GapLeft + this.GapRight)* TEXTWIDTH_DIVIDER ) | 0;
},
Get_WidthVisible: function()
{
var Width = this.size.width;
if(this.bEmptyGapLeft == false)
Width += this.GapLeft;
if(this.bEmptyGapRight == false)
Width += this.GapRight;
return Width;
},
Update_StateGapLeft: function(bState)
{
this.bEmptyGapLeft = bState;
},
Update_StateGapRight: function(bState)
{
this.bEmptyGapRight = bState;
},
Draw_Elements: function(PDSE)
{
var PosLine = this.ParaMath.GetLinePosition(PDSE.Line);
this.Draw(PosLine.x, PosLine.y, PDSE.Graphics);
},
Draw: function(x, y, pGraphics, InfoTextPr)
{
};
CMathText.prototype.Draw = function(x, y, pGraphics, InfoTextPr)
{
var X = this.pos.x + x,
Y = this.pos.y + y;
......@@ -728,7 +761,6 @@ CMathText.prototype =
pGraphics.transform(sx, shy, shx, sy, 0, 0);*/
if(this.bJDraw)
{
pGraphics.FillTextCode(X, Y, this.RecalcInfo.StyleCode); //на отрисовку символа отправляем положение baseLine
......@@ -753,10 +785,9 @@ CMathText.prototype =
pGraphics.FillTextCode(X, Y, this.RecalcInfo.StyleCode); //на отрисовку символа отправляем положение baseLine
}
},
setPosition: function(pos)
{
};
CMathText.prototype.setPosition = function(pos)
{
if (!this.bJDraw) // for text
{
this.pos.x = pos.x;
......@@ -767,20 +798,9 @@ CMathText.prototype =
this.pos.x = pos.x - this.rasterOffsetX;
this.pos.y = pos.y - this.rasterOffsetY + this.size.ascent;
}
},
GetLocationOfLetter: function()
{
var pos = new CMathPosition();
pos.x = this.pos.x;
pos.y = this.pos.y;
return pos;
},
Is_InclineLetter: function()
{
};
CMathText.prototype.Is_InclineLetter = function()
{
var code = this.value;
var bCapitale = (code > 0x0040 && code < 0x005B),
......@@ -797,77 +817,38 @@ CMathText.prototype =
bScript = MPrp.scr == TXT_SCRIPT;
return bAlphabet && (bRomanSerif || bScript);
},
setCoeffTransform: function(sx, shx, shy, sy)
{
this.transform = {sx: sx, shx: shx, shy: shy, sy: sy};
//здесь надо будет по-другому считать размер, после трансформации размер будет выставляться в g_oTextMeasurer
//
//MathControl.pGraph.transform(sx, shy, shx, sy, 0, 0);
this.applyTransformation();
},
applyTransformation: function()
{
var sx = this.transform.sx, shx = this.transform.shx,
shy = this.transform.shy, sy = this.transform.sy;
sy = (sy < 0) ? -sy : sy;
this.size.width = this.size.width*sx + (-1)*this.size.width*shx;
this.size.height = this.size.height*sy + this.size.height*shy;
this.size.ascent = this.size.ascent*(sy + shy);
this.size.descent = this.size.descent*(sy + shy);
this.size.center = this.size.center*(sy + shy);
},
IsJustDraw: function()
{
};
CMathText.prototype.IsJustDraw = function()
{
return this.bJDraw;
},
relate: function(parent) // for symbol only drawing
{
this.Parent = parent;
},
IsPlaceholder: function()
{
return this.Type == para_Math_Placeholder;
},
IsAlignPoint: function()
{
};
CMathText.prototype.relate = function(Parent)
{
this.Parent = Parent;
};
CMathText.prototype.IsAlignPoint = function()
{
return false;
},
IsText: function()
{
};
CMathText.prototype.IsText = function()
{
return true;
},
Is_BreakOperator: function(val)
{
};
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);
return bSimpleOper || bArrows || bOtherSymbols || bFishes;
},
Is_CompareOperator: function()
{
};
CMathText.prototype.Is_CompareOperator = function()
{
return this.value == 0x3C || this.value == 0x3D || this.value == 0x3E;
},
// For ParaRun
Is_Punctuation: function()
{
var bPunc = 1 === g_aPunctuation[this.value],
bMathSign = this.value == 0x2217 || this.value == 0x2212;
return bPunc || bMathSign;
},
Is_NBSP: function()
{
return false;
},
Is_SpecilalOperator: function()
{
};
CMathText.prototype.Is_SpecilalOperator = function()
{
var val = this.value,
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,
......@@ -878,21 +859,40 @@ CMathText.prototype =
// отдельно Cambria Math 0x27
return bSpecialOperator || bSpecialArrow || bSpecialSymbols || bOtherArrows;
},
Can_AddNumbering: function()
{
return true;
},
////
Copy: function()
{
};
////
CMathText.prototype.setCoeffTransform = function(sx, shx, shy, sy)
{
this.transform = {sx: sx, shx: shx, shy: shy, sy: sy};
//здесь надо будет по-другому считать размер, после трансформации размер будет выставляться в g_oTextMeasurer
//
//MathControl.pGraph.transform(sx, shy, shx, sy, 0, 0);
this.applyTransformation();
};
CMathText.prototype.applyTransformation = function()
{
var sx = this.transform.sx, shx = this.transform.shx,
shy = this.transform.shy, sy = this.transform.sy;
sy = (sy < 0) ? -sy : sy;
this.size.width = this.size.width*sx + (-1)*this.size.width*shx;
this.size.height = this.size.height*sy + this.size.height*shy;
this.size.ascent = this.size.ascent*(sy + shy);
this.size.descent = this.size.descent*(sy + shy);
this.size.center = this.size.center*(sy + shy);
};
CMathText.prototype.Copy = function()
{
var NewLetter = new CMathText(this.bJDraw);
NewLetter.Type = this.Type;
NewLetter.value = this.value;
return NewLetter;
},
Write_ToBinary : function(Writer)
{
};
CMathText.prototype.Write_ToBinary = function(Writer)
{
// Пишем тип дла раза, 1 раз для общей функции чтения, второй раз
// для разделения обычного MathText от PlaceHolder
Writer.WriteLong(this.Type);
......@@ -901,119 +901,79 @@ CMathText.prototype =
// Long : value
Writer.WriteLong(this.Type);
Writer.WriteLong(this.value) ;
},
Read_FromBinary : function(Reader)
{
};
CMathText.prototype.Read_FromBinary = function(Reader)
{
this.Type = Reader.GetLong();
this.value = Reader.GetLong();
}
};
function CMathAmp()
{
CMathAmp.superclass.constructor.call(this);
this.bEqArray = false;
this.Type = para_Math_Ampersand;
this.GapLeft = 0;
this.GapRight = 0;
this.pos = new CMathPosition();
this.value = 0x26;
this.AmpText = new CMathText(false);
this.AmpText.add(0x26);
this.size = null;
this.Parent = null;
this.Width = 0;
this.AmpText.add(this.value);
}
CMathAmp.prototype =
Asc.extendClass(CMathAmp, CMathBaseText);
CMathAmp.prototype.Measure = function(oMeasure, TextPr, InfoMathText)
{
Measure: function(oMeasure, TextPr, InfoMathText)
{
this.bEqArray = InfoMathText.bEqArray;
this.AmpText.Measure(oMeasure, TextPr, InfoMathText);
if(this.bEqArray)
{
this.size =
{
width: 0,
height: 0,
ascent: 0
};
this.Width = 0;
this.size.width = 0;
this.size.ascent = 0;
this.size.height = 0;
}
else
{
this.size =
{
width: this.AmpText.size.width/* + this.GapLeft + this.GapRight*/,
height: this.AmpText.size.height,
ascent: this.AmpText.size.ascent
};
this.Width = this.AmpText.Width;
this.size.width = this.AmpText.size.width;
this.size.height = this.AmpText.size.height;
this.size.ascent = this.AmpText.size.ascent;
}
},
PreRecalc: function(Parent, ParaMath, ArgSize, RPI)
{
this.Width = (this.size.width * TEXTWIDTH_DIVIDER) | 0;
};
CMathAmp.prototype.PreRecalc = function(Parent, ParaMath, ArgSize, RPI)
{
this.Parent = Parent;
this.AmpText.PreRecalc(Parent, ParaMath, ArgSize, RPI);
},
getCodeChr: function()
{
};
CMathAmp.prototype.getCodeChr = function()
{
var code = null;
if(!this.bEqArray)
code = this.AmpText.getCodeChr();
return code;
},
IsText: function()
{
};
CMathAmp.prototype.IsText = function()
{
return !this.bEqArray;
},
// special for Run
Get_WidthVisible: function()
{
return this.size.width + this.GapLeft + this.GapRight;
},
// работаем через функцию, т.к. поля GapLeft и GapRight могут измениться из-за изменения переноса, а пересчет (Measure) в этом случае не прийдет
Get_Width: function()
{
return this.size.width + this.GapLeft + this.GapRight;
},
Get_Width2: function()
{
return ( (this.size.width + this.GapLeft + this.GapRight)* TEXTWIDTH_DIVIDER ) | 0;
},
Update_GapLeft: function(Gap)
{
this.GapLeft = Gap;
},
Update_GapRight: function(Gap)
{
this.GapRight = Gap;
},
relate: function(parent)
{
this.Parent = parent;
},
setPosition: function(pos)
{
};
CMathAmp.prototype.setPosition = function(pos)
{
this.pos.x = pos.x;
this.pos.y = pos.y;
if(this.bEqArray==false)
if(this.bEqArray == false)
this.AmpText.setPosition(pos);
},
Draw: function(x, y, pGraphics, InfoTextPr)
{
};
CMathAmp.prototype.relate = function(Parent)
{
this.Parent = Parent;
this.AmpText.relate(Parent);
};
CMathAmp.prototype.Draw = function(x, y, pGraphics, InfoTextPr)
{
if(this.bEqArray==false)
this.AmpText.Draw(x + this.GapLeft, y, pGraphics, InfoTextPr);
else if(editor.ShowParaMarks) // показать метки выравнивания, если включена отметка о знаках параграфа
......@@ -1024,205 +984,26 @@ CMathAmp.prototype =
pGraphics.drawVerLine(0, X, Y, Y2, 0.1);
}
},
GetLocationOfLetter: function()
{
var pos = new CMathPosition();
pos.x = this.pos.x;
pos.y = this.pos.y;
return pos;
},
IsPlaceholder: function()
{
return false;
},
GetCompiled_ScrStyles: function()
{
return this.Parent.GetCompiled_ScrStyles();
},
IsAccent: function()
{
return this.Parent.IsAccent();
},
IsAlignPoint: function()
{
return this.bEqArray;
},
Copy : function()
{
return new CMathAmp();
},
Can_AddNumbering: function()
{
return false;
},
Write_ToBinary : function(Writer)
{
// Long : Type
Writer.WriteLong( this.Type );
},
Read_FromBinary : function(Reader)
{
}
};
var MathFont_ForMathText = 1;
var MathFont_ForSpecialOperator = 2;
function GetMathModifiedFont(type, TextPr, Class)
CMathAmp.prototype.Is_InclineLetter = function()
{
var NewMathTextPr = new CTextPr();
if(type == MathFont_ForMathText)
{
// RFonts влияют на отрисовку текста в формулах
NewMathTextPr.RFonts = TextPr.RFonts;
NewMathTextPr.FontFamily = TextPr.FontFamily;
NewMathTextPr.Bold = TextPr.Bold;
NewMathTextPr.Italic = TextPr.Italic;
NewMathTextPr.FontSize = MathApplyArgSize(TextPr.FontSize, Class.Parent.Compiled_ArgSz.value);
// скопируем эти свойства для SetFontSlot
// для SpecialOperator нужны уже скомпилированные для мат текста текстовые настройки, поэтому важно эи свойства скопировать именно здесь, а не передавать в MathText обычные текст. настройки
NewMathTextPr.CS = TextPr.CS;
NewMathTextPr.bRTL = TextPr.RTL;
NewMathTextPr.Lang = TextPr.Lang;
//if(Class.IsMathematicalText())
if(!Class.IsNormalText()) // выставляем false, чтобы не применился наклон к спец символам
{
NewMathTextPr.Italic = false;
NewMathTextPr.Bold = false;
}
}
else if(type == MathFont_ForSpecialOperator)
{
NewMathTextPr.FontFamily = {Name : "Cambria Math", Index : -1};
NewMathTextPr.RFonts.Set_All("Cambria Math",-1);
NewMathTextPr.FontSize = TextPr.FontSize;
NewMathTextPr.Bold = TextPr.Bold;
NewMathTextPr.Italic = TextPr.Italic;
//pGraphics.SetFont(FFont);
}
return NewMathTextPr;
}
function CMathInfoTextPr(TextPr, ArgSize, bNormalText, Theme)
return false;
};
CMathAmp.prototype.IsAlignPoint = function()
{
this.BFirstSetTextPr = true;
this.TextPr = new CTextPr();
this.CurrentTextPr = new CTextPr();
this.bNormalText = bNormalText;
this.bSpecialOperator = false;
this.Theme = Theme;
this.RFontsCompare = [];
this.SetTextPr(TextPr, ArgSize);
}
CMathInfoTextPr.prototype.SetTextPr = function(TextPr, ArgSize)
return this.bEqArray;
};
CMathAmp.prototype.Copy = function()
{
this.TextPr.RFonts = TextPr.RFonts;
this.TextPr.FontFamily = TextPr.FontFamily;
this.TextPr.Bold = TextPr.Bold;
this.TextPr.Italic = TextPr.Italic;
this.TextPr.FontSize = MathApplyArgSize(TextPr.FontSize, ArgSize);
// скопируем эти свойства для SetFontSlot
// для SpecialOperator нужны уже скомпилированные для мат текста текстовые настройки, поэтому важно эи свойства скопировать именно здесь, а не передавать в MathText обычные текст. настройки
this.TextPr.CS = TextPr.CS;
this.TextPr.RTL = TextPr.RTL;
this.TextPr.Lang = TextPr.Lang;
this.RFontsCompare[fontslot_ASCII] = undefined !== this.TextPr.RFonts.Ascii && this.TextPr.RFonts.Ascii.Name == "Cambria Math";
this.RFontsCompare[fontslot_HAnsi] = undefined !== this.TextPr.RFonts.HAnsi && this.TextPr.RFonts.HAnsi.Name == "Cambria Math";
this.RFontsCompare[fontslot_CS] = undefined !== this.TextPr.RFonts.CS && this.TextPr.RFonts.CS.Name == "Cambria Math";
this.RFontsCompare[fontslot_EastAsia] = undefined !== this.TextPr.RFonts.EastAsia && this.TextPr.RFonts.EastAsia.Name == "Cambria Math";
this.CurrentTextPr.Merge(this.TextPr);
return new CMathAmp();
};
CMathInfoTextPr.prototype.NeedUpdateTextPrp = function(code, fontSlot, IsPlaceholder)
CMathAmp.prototype.Write_ToBinary = function(Writer)
{
var NeedUpdate = false;
if(this.BFirstSetTextPr == true)
{
this.BFirstSetTextPr = false;
NeedUpdate = true;
}
// IsMathematicalText || Placeholder ?
if(this.bNormalText == false || IsPlaceholder)
{
var BoldItalicForMath = this.RFontsCompare[fontSlot] == true && (this.CurrentTextPr.Bold !== false || this.CurrentTextPr.Italic !== false),
BoldItalicForOther = this.RFontsCompare[fontSlot] == false && (this.CurrentTextPr.Bold !== this.TextPr.Bold || this.CurrentTextPr.Italic !== this.TextPr.Italic);
var BoldItalicPlh = IsPlaceholder && (this.CurrentTextPr.Bold !== false || this.CurrentTextPr.Italic !== false);
if(BoldItalicForMath || BoldItalicPlh) // Cambria Math
{
this.CurrentTextPr.Italic = false;
this.CurrentTextPr.Bold = false;
NeedUpdate = true;
}
else if(BoldItalicForOther) // Not Cambria Math
{
this.CurrentTextPr.Bold = this.TextPr.Bold;
this.CurrentTextPr.Italic = this.TextPr.Italic;
NeedUpdate = true;
}
var checkSpOperator = Math_Is_SpecilalOperator(code),
IsPlh = IsPlaceholder && this.RFontsCompare[fontSlot] == false;
if( checkSpOperator !== this.bSpecialOperator || IsPlh)
{
if(checkSpOperator == false)
{
this.CurrentTextPr.FontFamily = this.TextPr.FontFamily;
this.CurrentTextPr.RFonts.Set_FromObject(this.TextPr.RFonts);
this.bSpecialOperator = false;
NeedUpdate = true;
}
else if(this.RFontsCompare[fontSlot] == false)
{
this.CurrentTextPr.FontFamily = {Name : "Cambria Math", Index : -1};
this.CurrentTextPr.RFonts.Set_All("Cambria Math",-1);
this.bSpecialOperator = true;
NeedUpdate = true;
}
}
}
return NeedUpdate;
// Long : Type
Writer.WriteLong( this.Type );
};
CMathInfoTextPr.prototype.GetFontSlot = function(code)
CMathAmp.prototype.Read_FromBinary = function(Reader)
{
var Hint = this.TextPr.RFonts.Hint;
var bCS = this.TextPr.CS;
var bRTL = this.TextPr.RTL;
var lcid = this.TextPr.Lang.EastAsia;
return g_font_detector.Get_FontClass(code, Hint, lcid, bCS, bRTL);
};
var MathTextInfo_MathText = 1;
......
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