--- dillo/src/html.c	Sat Dec  9 12:43:49 2000
+++ dillo.new/src/html.c	Sun Dec 10 03:43:30 2000
@@ -770,32 +770,42 @@ static void Html_tag_open_br(DilloHtml *
    a_Dw_page_linebreak((DwPage *) html->dw);
 }
 
+/*
+ * <font>. Currenlty check for FACE, SIZE and COLOR qualifiers.
+ */
 static void Html_tag_open_font(DilloHtml *html, char *tag, gint tagsize)
 {
-#if 0
    DwPage *page;
-   DwPageAttr attr, curr_attr;
-   gint32 color;
-   char textcolor[256];
+   DwPageAttr attr;
+   DwPageFont font;
+   char tagtext[256];
+   
+   Html_push_tag(html, tag, tagsize);
 
    page = (DwPage *) html->dw;
+   attr = page->attrs[html->stack[html->stack_top].attr];
+   font = page->fonts[attr.font];
+
+   if (Html_get_attr(tag, tagsize, "color", tagtext, sizeof(tagtext))){
+      attr.color = a_Dw_page_find_color(page, a_Color_parse(tagtext, attr.color));
+   }
+   
+   if (Html_get_attr(tag, tagsize, "size", tagtext, sizeof(tagtext))){
 
-   curr_attr = page->attrs[html->stack[html->stack_top].attr];
-   a_Dw_page_init_attr(page, &attr);
-   attr.color = curr_attr.color;
-   attr.font = curr_attr.font;
+      if (strchr(tagtext, '-') || strchr(tagtext, '+')){
+	 font.size = page->fonts[0].size + strtol(tagtext, NULL, 10)*4;
+      } else {
+	 font.size = strtol(tagtext, NULL, 10)*4;
+      }
+   }
 
-   if (Html_get_attr(tag, tagsize, "color", textcolor, sizeof(textcolor))){
-      /* use current text color as default */
-      color = a_Color_parse(textcolor, curr_attr.color);
-      attr.color = a_Dw_page_find_color(page, color);
+   if (Html_get_attr(tag, tagsize, "face", tagtext, sizeof(tagtext))){
+      font.name = tagtext;
    }
 
+   attr.font = a_Dw_page_find_font(page, &font);
    html->stack[html->stack_top].attr = a_Dw_page_add_attr(page, &attr);
-#endif
-   Html_push_tag(html, tag, tagsize);
 }
-
 
 /*
  * <B>
--- dillo/src/colors.c	Sat Dec  9 12:43:46 2000
+++ dillo.new/src/colors.c	Sun Dec 10 03:28:49 2000
@@ -1,6 +1,7 @@
 #include <string.h>
 #include <stdlib.h>
 #include <glib.h>
+#include <ctype.h>   /* for `tolower' */
 #include "colors.h"
 
 /*
@@ -202,7 +203,7 @@ gint32 a_Color_parse (char *subtag, gint
 {
    char *cp;
    gint32 ret_color;
-   gint ret, low, mid, high;
+   gint ret, low, mid, high, i;
 
    ret_color = default_color;
 
@@ -213,7 +214,11 @@ gint32 a_Color_parse (char *subtag, gint
       cp = strchr (subtag, 'x');
       cp++;
       ret_color = strtol (cp, NULL, 16);
+   } else if (strlen(subtag) == 6) {
+     ret_color = strtol(subtag, NULL, 16);
    } else {
+      for (i = 0; i < strlen(subtag); i++)
+	 subtag[i] = tolower(subtag[i]);
       /* Binary search */
       low = 0;
       high = NCOLORS;            /* Number of colors */
