return img;
}
-static htmlfont_t *mkFont(char **atts)
+static htmlfont_t *mkFont(char **atts, int flags, int ul)
{
htmlfont_t *font = NEW(htmlfont_t);
font->size = -1.0; /* unassigned */
- doAttrs(font, font_items, sizeof(font_items) / ISIZE, atts, "<FONT>");
+ font->flags = flags;
+ font->ul = ul;
+ if (atts)
+ doAttrs(font, font_items, sizeof(font_items) / ISIZE, atts, "<FONT>");
return font;
}
htmllval.cell = mkCell(atts);
state.tok = T_cell;
} else if (strcasecmp(name, "FONT") == 0) {
- htmllval.font = mkFont(atts);
+ htmllval.font = mkFont(atts, 0, 0);
state.tok = T_font;
+ } else if (strcasecmp(name, "B") == 0) {
+ htmllval.font = mkFont(0, HTML_BF, 0);
+ state.tok = T_bold;
+ } else if (strcasecmp(name, "U") == 0) {
+ htmllval.font = mkFont(0, 0, 1);
+ state.tok = T_underline;
+ } else if (strcasecmp(name, "I") == 0) {
+ htmllval.font = mkFont(0, HTML_IF, 0);
+ state.tok = T_italic;
} else if (strcasecmp(name, "BR") == 0) {
mkBR(atts);
state.tok = T_br;
state.tok = T_end_html;
} else if (strcasecmp(name, "FONT") == 0) {
state.tok = T_end_font;
+ } else if (strcasecmp(name, "B") == 0) {
+ state.tok = T_n_bold;
+ } else if (strcasecmp(name, "U") == 0) {
+ state.tok = T_n_underline;
+ } else if (strcasecmp(name, "I") == 0) {
+ state.tok = T_n_italic;
} else if (strcasecmp(name, "BR") == 0) {
if (state.tok == T_br)
state.tok = T_BR;
case T_IMG:
s = "T_IMG";
break;
+ case T_underline:
+ s = "T_underline";
+ break;
+ case T_n_underline:
+ s = "T_underline";
+ break;
+ case T_italic:
+ s = "T_italic";
+ break;
+ case T_n_italic:
+ s = "T_italic";
+ break;
+ case T_bold:
+ s = "T_bold";
+ break;
+ case T_n_bold:
+ s = "T_bold";
+ break;
default:
s = "<unknown>";
}
f->size = curfont->size;
if (!f->name && curfont->name)
f->name = strdup(curfont->name);
+ if (!f->flags && curfont->flags)
+ f->flags = curfont->flags;
+ if (!f->ul && curfont->ul)
+ f->ul = curfont->ul;
}
ft->cfont = dupFont (f);
%token T_end_br T_end_img T_row T_end_row T_html T_end_html
%token T_end_table T_end_cell T_end_font T_string T_error
+%token T_n_italic T_n_bold T_n_underline
%token <i> T_BR T_br
%token <img> T_IMG T_img
%token <tbl> T_table
%token <cell> T_cell
-%token <font> T_font
+%token <font> T_font T_italic T_bold T_underline
%type <txt> fonttext
%type <i> br
textitem : string { appendFItemList(HTMLstate.str);}
| br {appendFLineList($1);}
- | sfont text nfont
+ | font text n_font
+ | italic text n_italic
+ | underline text n_underline
+ | bold text n_bold
;
-sfont : T_font { pushFont ($1); }
+font : T_font { pushFont ($1); }
;
-nfont : T_end_font { popFont (); }
+n_font : T_end_font { popFont (); }
;
+italic : T_italic {pushFont($1);}
+ ;
+
+n_italic : T_n_italic {popFont();}
+ ;
+
+bold : T_bold {pushFont($1);}
+ ;
+
+n_bold : T_n_bold {popFont();}
+ ;
+
+underline : T_underline {pushFont($1);}
+ ;
+
+n_underline : T_n_underline {popFont();}
+ ;
+
br : T_br T_end_br { $$ = $1; }
| T_BR { $$ = $1; }
;
;
fonttable : table { $$ = $1; }
- | sfont table nfont { $$=$2; }
+ | font table n_font { $$=$2; }
+ | italic table n_italic { $$=$2; }
+ | underline table n_underline { $$=$2; }
+ | bold table n_bold { $$=$2; }
;
opt_space : string