aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJorge Arellano Cid <jcid@dillo.org>2010-10-07 13:02:49 -0400
committerJorge Arellano Cid <jcid@dillo.org>2010-10-07 13:02:49 -0400
commit5f9b0fc0767a50bc5e658aa589aa71ad1f925882 (patch)
tree4c57a8a7064a841d37e526672e3d6d443f61d431 /src
parent53997164c2e61962543a84eb14968b980e8d27a6 (diff)
CSS part for font-variant: small-caps support
(some uppercasing is done but not utf8)
Diffstat (limited to 'src')
-rw-r--r--src/cssparser.cc7
-rw-r--r--src/styleengine.cc6
2 files changed, 11 insertions, 2 deletions
diff --git a/src/cssparser.cc b/src/cssparser.cc
index 00ba7428..23085352 100644
--- a/src/cssparser.cc
+++ b/src/cssparser.cc
@@ -77,6 +77,10 @@ static const char *const Css_font_style_enum_vals[] = {
"normal", "italic", "oblique", NULL
};
+static const char *const Css_font_variant_enum_vals[] = {
+ "normal", "small-caps", NULL
+};
+
static const char *const Css_font_weight_enum_vals[] = {
"bold", "bolder", "light", "lighter", "normal", NULL
};
@@ -169,7 +173,8 @@ const CssPropertyInfo Css_property_info[CSS_PROPERTY_LAST] = {
{"font-size-adjust", {CSS_TYPE_UNUSED}, NULL},
{"font-stretch", {CSS_TYPE_UNUSED}, NULL},
{"font-style", {CSS_TYPE_ENUM, CSS_TYPE_UNUSED}, Css_font_style_enum_vals},
- {"font-variant", {CSS_TYPE_UNUSED}, NULL},
+ {"font-variant", {CSS_TYPE_ENUM, CSS_TYPE_UNUSED},
+ Css_font_variant_enum_vals},
{"font-weight", {CSS_TYPE_ENUM, CSS_TYPE_FONT_WEIGHT, CSS_TYPE_UNUSED},
Css_font_weight_enum_vals},
{"height", {CSS_TYPE_LENGTH_PERCENTAGE, CSS_TYPE_UNUSED}, NULL},
diff --git a/src/styleengine.cc b/src/styleengine.cc
index 3233b69c..c7820760 100644
--- a/src/styleengine.cc
+++ b/src/styleengine.cc
@@ -41,6 +41,7 @@ StyleEngine::StyleEngine (dw::core::Layout *layout) {
font_attrs.weight = 400;
font_attrs.style = FONT_STYLE_NORMAL;
font_attrs.letterSpacing = 0;
+ font_attrs.fontVariant = FONT_VARIANT_NORMAL;
style_attrs.initValues ();
style_attrs.font = Font::create (layout, &font_attrs);
@@ -227,7 +228,7 @@ void StyleEngine::apply (StyleAttrs *attrs, CssPropertyList *props) {
char *c, *fontName;
int lineHeight;
- /* Determine font first so it can be used to resolve relative lenths. */
+ /* Determine font first so it can be used to resolve relative lengths. */
for (int i = 0; i < props->size (); i++) {
CssProperty *p = props->getRef (i);
@@ -363,6 +364,9 @@ void StyleEngine::apply (StyleAttrs *attrs, CssPropertyList *props) {
else if (fontAttrs.letterSpacing < -1000)
fontAttrs.letterSpacing = -1000;
break;
+ case CSS_PROPERTY_FONT_VARIANT:
+ fontAttrs.fontVariant = (FontVariant) p->value.intVal;
+ break;
default:
break;
}