/// <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); }