diff --git a/include/common/font.h b/include/common/font.h index c9e9c179..1712beca 100644 --- a/include/common/font.h +++ b/include/common/font.h @@ -12,7 +12,17 @@ enum font_slant { enum font_weight { FONT_WEIGHT_NORMAL = 0, - FONT_WEIGHT_BOLD + FONT_WEIGHT_THIN, + FONT_WEIGHT_ULTRALIGHT, + FONT_WEIGHT_LIGHT, + FONT_WEIGHT_SEMILIGHT, + FONT_WEIGHT_BOOK, + FONT_WEIGHT_MEDIUM, + FONT_WEIGHT_SEMIBOLD, + FONT_WEIGHT_BOLD, + FONT_WEIGHT_ULTRABOLD, + FONT_WEIGHT_HEAVY, + FONT_WEIGHT_ULTRAHEAVY }; struct font { diff --git a/src/common/font.c b/src/common/font.c index 0014eaf1..33623a9a 100644 --- a/src/common/font.c +++ b/src/common/font.c @@ -23,8 +23,43 @@ font_to_pango_desc(struct font *font) if (font->slant == FONT_SLANT_OBLIQUE) { pango_font_description_set_style(desc, PANGO_STYLE_OBLIQUE); } - if (font->weight == FONT_WEIGHT_BOLD) { + switch (font->weight) { + case FONT_WEIGHT_THIN: + pango_font_description_set_weight(desc, PANGO_WEIGHT_THIN); + break; + case FONT_WEIGHT_ULTRALIGHT: + pango_font_description_set_weight(desc, PANGO_WEIGHT_ULTRALIGHT); + break; + case FONT_WEIGHT_LIGHT: + pango_font_description_set_weight(desc, PANGO_WEIGHT_LIGHT); + break; + case FONT_WEIGHT_SEMILIGHT: + pango_font_description_set_weight(desc, PANGO_WEIGHT_SEMILIGHT); + break; + case FONT_WEIGHT_BOOK: + pango_font_description_set_weight(desc, PANGO_WEIGHT_BOOK); + break; + case FONT_WEIGHT_NORMAL: + pango_font_description_set_weight(desc, PANGO_WEIGHT_NORMAL); + break; + case FONT_WEIGHT_MEDIUM: + pango_font_description_set_weight(desc, PANGO_WEIGHT_MEDIUM); + break; + case FONT_WEIGHT_SEMIBOLD: + pango_font_description_set_weight(desc, PANGO_WEIGHT_SEMIBOLD); + break; + case FONT_WEIGHT_BOLD: pango_font_description_set_weight(desc, PANGO_WEIGHT_BOLD); + break; + case FONT_WEIGHT_ULTRABOLD: + pango_font_description_set_weight(desc, PANGO_WEIGHT_ULTRABOLD); + break; + case FONT_WEIGHT_HEAVY: + pango_font_description_set_weight(desc, PANGO_WEIGHT_HEAVY); + break; + case FONT_WEIGHT_ULTRAHEAVY: + pango_font_description_set_weight(desc, PANGO_WEIGHT_ULTRAHEAVY); + break; } return desc; } diff --git a/src/config/rcxml.c b/src/config/rcxml.c index cad132f8..a92e84c5 100644 --- a/src/config/rcxml.c +++ b/src/config/rcxml.c @@ -862,8 +862,31 @@ set_font_attr(struct font *font, const char *nodename, const char *content) font->slant = FONT_SLANT_NORMAL; } } else if (!strcmp(nodename, "weight")) { - font->weight = !strcasecmp(content, "bold") ? - FONT_WEIGHT_BOLD : FONT_WEIGHT_NORMAL; + if (!strcasecmp(content, "thin")) { + font->weight = FONT_WEIGHT_THIN; + } else if (!strcasecmp(content, "ultralight")) { + font->weight = FONT_WEIGHT_ULTRALIGHT; + } else if (!strcasecmp(content, "light")) { + font->weight = FONT_WEIGHT_LIGHT; + } else if (!strcasecmp(content, "semilight")) { + font->weight = FONT_WEIGHT_SEMILIGHT; + } else if (!strcasecmp(content, "book")) { + font->weight = FONT_WEIGHT_BOOK; + } else if (!strcasecmp(content, "medium")) { + font->weight = FONT_WEIGHT_MEDIUM; + } else if (!strcasecmp(content, "semibold")) { + font->weight = FONT_WEIGHT_SEMIBOLD; + } else if (!strcasecmp(content, "bold")) { + font->weight = FONT_WEIGHT_BOLD; + } else if (!strcasecmp(content, "ultrabold")) { + font->weight = FONT_WEIGHT_ULTRABOLD; + } else if (!strcasecmp(content, "heavy")) { + font->weight = FONT_WEIGHT_HEAVY; + } else if (!strcasecmp(content, "ultraheavy")) { + font->weight = FONT_WEIGHT_ULTRAHEAVY; + } else { + font->weight = FONT_WEIGHT_NORMAL; + } } }