diff options
-rw-r--r-- | src/css.cc | 2 | ||||
-rw-r--r-- | src/css.hh | 12 | ||||
-rw-r--r-- | src/styleengine.cc | 15 |
3 files changed, 27 insertions, 2 deletions
@@ -114,7 +114,7 @@ CssStyleSheet * CssContext::buildUserAgentStyle () { // <b> props = new CssPropertyList (); - props->set (CssProperty::CSS_PROPERTY_FONT_WEIGHT, 700); + props->set (CssProperty::CSS_PROPERTY_FONT_WEIGHT, CssProperty::CSS_FONT_WEIGHT_BOLDER); s->addRule (new CssSelector(a_Html_tag_index("b"), NULL, NULL), props); // <i> @@ -101,6 +101,18 @@ class CssProperty { CSS_PROPERTY_LAST } Name; + typedef enum { + CSS_FONT_WEIGHT_LIGHTER = -1, + CSS_FONT_WEIGHT_BOLDER = -2, + CSS_FONT_WEIGHT_STEP = 300, + /* Some special font weights. */ + CSS_FONT_WEIGHT_LIGHT = 100, + CSS_FONT_WEIGHT_NORMAL = 400, + CSS_FONT_WEIGHT_BOLD = 700, + CSS_FONT_WEIGHT_MIN = 100, + CSS_FONT_WEIGHT_MAX = 900, + } CssFontWeightExtensions; + Name name; Value value; }; diff --git a/src/styleengine.cc b/src/styleengine.cc index 9123007e..c1b4f718 100644 --- a/src/styleengine.cc +++ b/src/styleengine.cc @@ -120,7 +120,20 @@ void StyleEngine::apply (StyleAttrs *attrs, CssPropertyList *props) { fontAttrs.style = (FontStyle) p->value.intVal; break; case CssProperty::CSS_PROPERTY_FONT_WEIGHT: - fontAttrs.weight = p->value.intVal; + switch (p->value.intVal) { + case CssProperty::CSS_FONT_WEIGHT_LIGHTER: + fontAttrs.weight -= CssProperty::CSS_FONT_WEIGHT_STEP; + break; + case CssProperty::CSS_FONT_WEIGHT_BOLDER: + fontAttrs.weight += CssProperty::CSS_FONT_WEIGHT_STEP; + break; + default: + fontAttrs.weight = p->value.intVal; + } + if (fontAttrs.weight < CssProperty::CSS_FONT_WEIGHT_MIN) + fontAttrs.weight = CssProperty::CSS_FONT_WEIGHT_MIN; + if (fontAttrs.weight > CssProperty::CSS_FONT_WEIGHT_MAX) + fontAttrs.weight = CssProperty::CSS_FONT_WEIGHT_MAX; break; case CssProperty::CSS_PROPERTY_LIST_STYLE_TYPE: attrs->listStyleType = (ListStyleType) p->value.intVal; |