Exemplo n.º 1
0
        /// <summary>
        /// This method parses the value of 'font' attribute and returns a Properties object.
        /// </summary>
        /// <param name="str">a string of this form: 'style1 ... styleN size/leading font1 ... fontN'</param>
        /// <returns>a Properties object</returns>
        public static Properties parseFont(string str)
        {
            Properties result = new Properties();

            if (str == null)
            {
                return(result);
            }
            int    pos = 0;
            string value;

            str = str.Trim();
            while (str.Length > 0)
            {
                pos = str.IndexOf(" ", pos);
                if (pos == -1)
                {
                    value = str;
                    str   = "";
                }
                else
                {
                    value = str.Substring(0, pos);
                    str   = str.Substring(pos).Trim();
                }
                if (value.ToLower().Equals("bold"))
                {
                    result.Add(MarkupTags.CSS_FONTWEIGHT, MarkupTags.CSS_BOLD);
                    continue;
                }
                if (value.ToLower().Equals("italic"))
                {
                    result.Add(MarkupTags.CSS_FONTSTYLE, MarkupTags.CSS_ITALIC);
                    continue;
                }
                if (value.ToLower().Equals("oblique"))
                {
                    result.Add(MarkupTags.CSS_FONTSTYLE, MarkupTags.CSS_OBLIQUE);
                    continue;
                }
                float f;
                if ((f = parseLength(value)) > 0)
                {
                    result.Add(MarkupTags.CSS_FONTSIZE, f.ToString() + "pt");
                    int p = value.IndexOf("/");
                    if (p > -1 && p < value.Length - 1)
                    {
                        result.Add(MarkupTags.CSS_LINEHEIGHT, value.Substring(p + 1) + "pt");
                    }
                }
                if (value.EndsWith(","))
                {
                    value = value.Substring(0, value.Length - 1);
                    if (FontFactory.contains(value))
                    {
                        result.Add(MarkupTags.CSS_FONTFAMILY, value);
                        return(result);
                    }
                }
                if ("".Equals(str) && FontFactory.contains(value))
                {
                    result.Add(MarkupTags.CSS_FONTFAMILY, value);
                }
            }
            return(result);
        }