protected void Write(Font font, Properties styleAttributes) {
if (font == null || !IsOtherFont(font) /*|| styleAttributes == null*/) return;
Write(" ");
Write(HtmlTags.STYLE);
Write("=\"");
if (styleAttributes != null) {
foreach (String key in styleAttributes.Keys) {
WriteCssProperty(key, styleAttributes[key]);
}
}
if (IsOtherFont(font)) {
WriteCssProperty(Markup.CSS_KEY_FONTFAMILY, font.Familyname);
if (font.Size != Font.UNDEFINED) {
WriteCssProperty(Markup.CSS_KEY_FONTSIZE, font.Size.ToString() + "pt");
}
if (font.Color != null) {
WriteCssProperty(Markup.CSS_KEY_COLOR, HtmlEncoder.Encode(font.Color));
}
int fontstyle = font.Style;
BaseFont bf = font.BaseFont;
if (bf != null) {
String ps = bf.PostscriptFontName.ToLower(CultureInfo.InvariantCulture);
if (ps.IndexOf("bold") >= 0) {
if (fontstyle == Font.UNDEFINED)
fontstyle = 0;
fontstyle |= Font.BOLD;
}
if (ps.IndexOf("italic") >= 0 || ps.IndexOf("oblique") >= 0) {
if (fontstyle == Font.UNDEFINED)
fontstyle = 0;
fontstyle |= Font.ITALIC;
}
}
if (fontstyle != Font.UNDEFINED && fontstyle != Font.NORMAL) {
switch (fontstyle & Font.BOLDITALIC) {
case Font.BOLD:
WriteCssProperty(Markup.CSS_KEY_FONTWEIGHT, Markup.CSS_VALUE_BOLD);
break;
case Font.ITALIC:
WriteCssProperty(Markup.CSS_KEY_FONTSTYLE, Markup.CSS_VALUE_ITALIC);
break;
case Font.BOLDITALIC:
WriteCssProperty(Markup.CSS_KEY_FONTWEIGHT, Markup.CSS_VALUE_BOLD);
WriteCssProperty(Markup.CSS_KEY_FONTSTYLE, Markup.CSS_VALUE_ITALIC);
break;
}
// CSS only supports one decoration tag so if both are specified
// only one of the two will display
if ((fontstyle & Font.UNDERLINE) > 0) {
WriteCssProperty(Markup.CSS_KEY_TEXTDECORATION, Markup.CSS_VALUE_UNDERLINE);
}
if ((fontstyle & Font.STRIKETHRU) > 0) {
WriteCssProperty(Markup.CSS_KEY_TEXTDECORATION, Markup.CSS_VALUE_LINETHROUGH);
}
}
}
Write("\"");
}