]> git.mdlowis.com Git - proto/labwc.git/commitdiff
Add support for all Pango font weight options
authorSimon Long <simon@raspberrypi.com>
Wed, 23 Apr 2025 16:03:02 +0000 (17:03 +0100)
committerGitHub <noreply@github.com>
Wed, 23 Apr 2025 16:03:02 +0000 (18:03 +0200)
include/common/font.h
src/common/font.c
src/config/rcxml.c

index c9e9c179803fa0564f9b2d30cdc5441b2164100b..1712becae74d102350a0ad0ff674ba0bcec35141 100644 (file)
@@ -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 {
index 0014eaf107e62e417cdb6d1d7a33a4fe75bf3fef..33623a9a15077fe2fd33d13c79ff90bdf117188f 100644 (file)
@@ -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;
 }
index cad132f856c7aa090def5524fb2c7bccbc17b714..a92e84c548ccc9dfc3caab202010e52f959ec36d 100644 (file)
@@ -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;
+               }
        }
 }