+ return output;
+}
+
+
+
+namespace {
+
+string fontToTag(html::FontTypes type)
+{
+ switch(type) {
+ case FT_EMPH:
+ return "em";
+ case FT_BOLD:
+ return "b";
+ case FT_NOUN:
+ return "dfn";
+ case FT_UBAR:
+ case FT_WAVE:
+ case FT_DBAR:
+ return "u";
+ case FT_SOUT:
+ return "del";
+ case FT_ITALIC:
+ return "i";
+ case FT_UPRIGHT:
+ case FT_SLANTED:
+ case FT_SMALLCAPS:
+ case FT_ROMAN:
+ case FT_SANS:
+ case FT_TYPE:
+ case FT_SIZE_TINY:
+ case FT_SIZE_SCRIPT:
+ case FT_SIZE_FOOTNOTE:
+ case FT_SIZE_SMALL:
+ case FT_SIZE_NORMAL:
+ case FT_SIZE_LARGE:
+ case FT_SIZE_LARGER:
+ case FT_SIZE_LARGEST:
+ case FT_SIZE_HUGE:
+ case FT_SIZE_HUGER:
+ case FT_SIZE_INCREASE:
+ case FT_SIZE_DECREASE:
+ return "span";
+ }
+ // kill warning
+ return "";
+}
+
+string fontToAttribute(html::FontTypes type)
+{
+ switch(type) {
+ case FT_EMPH:
+ case FT_BOLD:
+ return "";
+ case FT_NOUN:
+ return "class='lyxnoun'";
+ case FT_UBAR:
+ return "";
+ case FT_DBAR:
+ return "class='dline'";
+ case FT_SOUT:
+ return "class='strikeout'";
+ case FT_WAVE:
+ return "class='wline'";
+ case FT_ITALIC:
+ return "";
+ case FT_UPRIGHT:
+ return "style='font-style:normal;'";
+ case FT_SLANTED:
+ return "style='font-style:oblique;'";
+ case FT_SMALLCAPS:
+ return "style='font-variant:small-caps;'";
+ case FT_ROMAN:
+ return "style='font-family:serif;'";
+ case FT_SANS:
+ return "style='font-family:sans-serif;'";
+ case FT_TYPE:
+ return "style='font-family:monospace;'";
+ case FT_SIZE_TINY:
+ case FT_SIZE_SCRIPT:
+ case FT_SIZE_FOOTNOTE:
+ return "style='font-size:x-small;'";
+ case FT_SIZE_SMALL:
+ return "style='font-size:small;'";
+ case FT_SIZE_NORMAL:
+ return "style='font-size:normal;'";
+ case FT_SIZE_LARGE:
+ return "style='font-size:large;'";
+ case FT_SIZE_LARGER:
+ case FT_SIZE_LARGEST:
+ return "style='font-size:x-large;'";
+ case FT_SIZE_HUGE:
+ case FT_SIZE_HUGER:
+ return "style='font-size:xx-large;'";
+ case FT_SIZE_INCREASE:
+ return "style='font-size:larger;'";
+ case FT_SIZE_DECREASE:
+ return "style='font-size:smaller;'";
+ }
+ // kill warning
+ return "";
+}
+
+} // end anonymous namespace
+
+
+FontTag::FontTag(FontTypes type)
+ : StartTag(fontToTag(type), fontToAttribute(type)), font_type_(type)
+{}
+
+
+bool FontTag::operator==(StartTag const & tag) const
+{
+ FontTag const * const ftag = tag.asFontTag();
+ if (!ftag)
+ return false;
+ return (font_type_ == ftag->font_type_);