summaryrefslogtreecommitdiff
path: root/css/ruleset.c
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2004-01-28 23:08:28 +0000
committerJames Bursa <james@netsurf-browser.org>2004-01-28 23:08:28 +0000
commitae4cb4c56dd865654a718c80693d8ac046126ace (patch)
tree341ea61d33b7dd8712afe4151cf83b7eb8041307 /css/ruleset.c
parent1ee029cee6ff5455a5e3c894035319dd67da22de (diff)
downloadnetsurf-ae4cb4c56dd865654a718c80693d8ac046126ace.tar.gz
netsurf-ae4cb4c56dd865654a718c80693d8ac046126ace.tar.bz2
[project @ 2004-01-28 23:08:28 by bursa]
Improve font-family. svn path=/import/netsurf/; revision=515
Diffstat (limited to 'css/ruleset.c')
-rw-r--r--css/ruleset.c51
1 files changed, 16 insertions, 35 deletions
diff --git a/css/ruleset.c b/css/ruleset.c
index 00b536aba..578704af6 100644
--- a/css/ruleset.c
+++ b/css/ruleset.c
@@ -44,7 +44,7 @@ static void parse_color(struct css_style * const s, const struct css_node * cons
static void parse_display(struct css_style * const s, const struct css_node * const v);
static void parse_float(struct css_style * const s, const struct css_node * const v);
static void parse_font(struct css_style * const s, const struct css_node * v);
-static void parse_font_family(struct css_style * const s, const struct css_node * const v);
+static void parse_font_family(struct css_style * const s, const struct css_node * v);
static void parse_font_size(struct css_style * const s, const struct css_node * const v);
static void parse_font_style(struct css_style * const s, const struct css_node * const v);
static void parse_font_weight(struct css_style * const s, const struct css_node * const v);
@@ -56,7 +56,6 @@ static void parse_visibility(struct css_style * const s, const struct css_node *
static void parse_width(struct css_style * const s, const struct css_node * const v);
static void parse_white_space(struct css_style * const s, const struct css_node * const v);
static css_text_decoration css_text_decoration_parse(const char * const s);
-static css_font_family css_font_family_parse(const char * const s);
/* table of property parsers: MUST be sorted by property name */
@@ -398,7 +397,7 @@ void parse_float(struct css_style * const s, const struct css_node * const v)
void parse_font(struct css_style * const s, const struct css_node * v)
{
- css_font_family ff;
+ css_font_family ff;
css_font_style fs;
css_font_weight fw;
s->font_family = CSS_FONT_FAMILY_SANS_SERIF;
@@ -444,30 +443,22 @@ void parse_font(struct css_style * const s, const struct css_node * v)
}
}
-void parse_font_family(struct css_style * const s, const struct css_node * const v)
+void parse_font_family(struct css_style * const s, const struct css_node * v)
{
- /* TODO - font-family values are found in a comma separated list.
- * Each list element should be considered in turn.
- * The first match should be used.
- * White space in a quoted string should be left alone,
- * other white space should be reduced to a single space.*/
- struct css_node *temp;
css_font_family z;
- if (v->type != CSS_NODE_IDENT)
- return;
- z = css_font_family_parse(v->data);
- if (z == CSS_FONT_FAMILY_INHERIT) {
- if (v->next != 0)
- return;
- s->font_family = z;
+ for (; v; v = v->next) {
+ switch (v->type) {
+ case CSS_NODE_IDENT:
+ z = css_font_family_parse(v->data);
+ if (z != CSS_FONT_FAMILY_UNKNOWN) {
+ s->font_family = z;
+ return;
+ }
+ break;
+ default:
+ break;
+ }
}
- if (z != CSS_FONT_FAMILY_UNKNOWN)
- s->font_family = z;
- /* for now, take the first item */
- /*for (temp = v->next; temp; temp=temp->next) {
- z = css_font_family_parse(temp->data);
- s->font_family |= z;
- }*/
}
void parse_font_size(struct css_style * const s, const struct css_node * const v)
@@ -519,7 +510,7 @@ void parse_font_style(struct css_style * const s, const struct css_node * const
void parse_font_weight(struct css_style * const s, const struct css_node * const v)
{
css_font_weight z;
- if (v->type != CSS_NODE_IDENT || v->next != 0)
+ if ((v->type != CSS_NODE_IDENT && v->type != CSS_NODE_NUMBER) || v->next != 0)
return;
z = css_font_weight_parse(v->data);
if (z != CSS_FONT_WEIGHT_UNKNOWN)
@@ -624,13 +615,3 @@ css_text_decoration css_text_decoration_parse(const char * const s)
return CSS_TEXT_DECORATION_UNKNOWN;
}
-css_font_family css_font_family_parse(const char * const s)
-{
- if (strcasecmp(s, "inherit") == 0) return CSS_FONT_FAMILY_INHERIT;
- if (strcasecmp(s, "sans-serif") == 0) return CSS_FONT_FAMILY_SANS_SERIF;
- if (strcasecmp(s, "serif") == 0) return CSS_FONT_FAMILY_SERIF;
- if (strcasecmp(s, "monospace") == 0) return CSS_FONT_FAMILY_MONOSPACE;
- if (strcasecmp(s, "cursive") == 0) return CSS_FONT_FAMILY_CURSIVE;
- if (strcasecmp(s, "fantasy") == 0) return CSS_FONT_FAMILY_FANTASY;
- return CSS_TEXT_DECORATION_UNKNOWN;
-}