Allow to use a pango font description string.
authorMikael Magnusson <mikachu@comhem.se>
Tue, 29 Apr 2008 14:56:31 +0000 (16:56 +0200)
committerMikael Magnusson <mikachu@gmail.com>
Mon, 12 Mar 2018 12:34:11 +0000 (13:34 +0100)
obrender/font.c
obrender/render.h
openbox/config.c

index 0f56a55..47606ae 100644 (file)
@@ -60,6 +60,15 @@ static void measure_font(const RrInstance *inst, RrFont *f)
 
 }
 
+void RrFontDescriptionFromString(RrFont *font, gchar *description)
+{
+    PangoFontDescription *desc;
+    desc = pango_font_description_from_string(description);
+    pango_font_description_merge(font->font_desc, desc, TRUE);
+    pango_font_description_free(desc);
+    pango_layout_set_font_description(font->layout, font->font_desc);
+}
+
 RrFont *RrFontOpen(const RrInstance *inst, const gchar *name, gint size,
                    RrFontWeight weight, RrFontSlant slant)
 {
index f125847..b75310b 100644 (file)
@@ -397,6 +397,8 @@ RrSize *RrFontMeasureString (const RrFont *f, const gchar *str,
                              gboolean flow, gint maxwidth);
 gint    RrFontHeight        (const RrFont *f, gint shadow_offset_y);
 gint    RrFontMaxCharWidth  (const RrFont *f);
+/*! Select a font from a pango description string */
+void    RrFontDescriptionFromString(RrFont *font, gchar *description);
 
 /* Paint into the appearance. The old pixmap is returned (if there was one). It
    is the responsibility of the caller to call XFreePixmap on the return when
index 92c4fe0..a7f796f 100644 (file)
@@ -785,6 +785,12 @@ static void parse_theme(xmlNodePtr node, gpointer d)
 
         *font = RrFontOpen(ob_rr_inst, name, size, weight, slant);
         g_free(name);
+
+        if ((fnode = obt_xml_find_node(n->children, "description"))) {
+            gchar *s = obt_xml_node_string(fnode);
+            RrFontDescriptionFromString(*font, s);
+            g_free(s);
+        }
     }
 }