Пример #1
0
		public static void DefaultContext(MathNode node)
		{
			if (node.Parent != null)
			{
				node.MathSize = node.Parent.MathSize;
				node.FontSize = node.Parent.FontSize;
				node.MetricList = node.Parent.MetricList;
				node.ScriptLevel = node.Parent.ScriptLevel;
				node.TightSpaces = node.Parent.TightSpaces;
				node.DisplayStyle = node.Parent.DisplayStyle;
				node.Color = node.Parent.Color;
				node.FontFamilies = node.Parent.FontFamilies;
				node.FontWeight = node.Parent.FontWeight;
				node.FontStyle = node.Parent.FontStyle;
				node.NodeDefaults = node.Parent.NodeDefaults;
				node.Parent.MakeChildContext(node);
			}
			else
			{
				node.MathSize = node.ParseLength(node.NodeDefaults["mathsize"]);
				node.FontSize = node.MathSize;
				node.MetricList = null;
				node.ScriptLevel = int.Parse(node.NodeDefaults["scriptlevel"]);
				node.TightSpaces = false;
				node.DisplayStyle = (node.NodeDefaults["displaystyle"] == "true");
				node.Color = node.NodeDefaults["mathcolor"];

				if (!node.Config.Variants.ContainsKey(node.NodeDefaults["mathvariant"]))
					throw new InvalidOperationException("Default mathvariant not defined in configuration file: configuration is unusable");

				MathVariant defaultVariant = node.Config.Variants[node.NodeDefaults["mathvariant"]];
				node.FontWeight = defaultVariant.Weight;
				node.FontStyle = defaultVariant.Style;
				node.FontFamilies = defaultVariant.Families;
			}

			node.ProcessFontAttributes();
			node.Width = 0;
			node.Height = 0;
			node.Depth = 0;
			node.Ascender = 0;
			node.Descender = 0;
			node.LeftSpace = 0;
			node.RightSpace = 0;
			node.AlignToAxis = false;
			node.Base = node;
			node.Core = node;
			node.Stretchy = false;
			node.Accent = false;
			node.MoveLimits = false;
			node.TextShift = 0;
			node.TextStretch = 1;
			node.LeftBearing = 0;
			node.RightBearing = 0;
			node.IsSpace = false;
			//Reset metrics list to None(so far, we used metrics from the parent)
			node.MetricList = null;
			node.NominalMetric = null;
		}
Пример #2
0
        public static void DefaultContext(MathNode node)
        {
            if (node.Parent != null)
            {
                node.MathSize     = node.Parent.MathSize;
                node.FontSize     = node.Parent.FontSize;
                node.MetricList   = node.Parent.MetricList;
                node.ScriptLevel  = node.Parent.ScriptLevel;
                node.TightSpaces  = node.Parent.TightSpaces;
                node.DisplayStyle = node.Parent.DisplayStyle;
                node.Color        = node.Parent.Color;
                node.FontFamilies = node.Parent.FontFamilies;
                node.FontWeight   = node.Parent.FontWeight;
                node.FontStyle    = node.Parent.FontStyle;
                node.NodeDefaults = node.Parent.NodeDefaults;
                node.Parent.MakeChildContext(node);
            }
            else
            {
                node.MathSize     = node.ParseLength(node.NodeDefaults["mathsize"]);
                node.FontSize     = node.MathSize;
                node.MetricList   = null;
                node.ScriptLevel  = int.Parse(node.NodeDefaults["scriptlevel"]);
                node.TightSpaces  = false;
                node.DisplayStyle = (node.NodeDefaults["displaystyle"] == "true");
                node.Color        = node.NodeDefaults["mathcolor"];

                if (!node.Config.Variants.ContainsKey(node.NodeDefaults["mathvariant"]))
                {
                    throw new InvalidOperationException("Default mathvariant not defined in configuration file: configuration is unusable");
                }

                MathVariant defaultVariant = node.Config.Variants[node.NodeDefaults["mathvariant"]];
                node.FontWeight   = defaultVariant.Weight;
                node.FontStyle    = defaultVariant.Style;
                node.FontFamilies = defaultVariant.Families;
            }

            node.ProcessFontAttributes();
            node.Width        = 0;
            node.Height       = 0;
            node.Depth        = 0;
            node.Ascender     = 0;
            node.Descender    = 0;
            node.LeftSpace    = 0;
            node.RightSpace   = 0;
            node.AlignToAxis  = false;
            node.Base         = node;
            node.Core         = node;
            node.Stretchy     = false;
            node.Accent       = false;
            node.MoveLimits   = false;
            node.TextShift    = 0;
            node.TextStretch  = 1;
            node.LeftBearing  = 0;
            node.RightBearing = 0;
            node.IsSpace      = false;
            //Reset metrics list to None(so far, we used metrics from the parent)
            node.MetricList    = null;
            node.NominalMetric = null;
        }