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>
Sat, 11 Oct 2014 00:17:18 +0000 (02:17 +0200)
obrender/font.c
obrender/render.h
openbox/config.c

index a22e23f50b1d9f19be1dfe2a32c14f4dd738aaec..988e3f2c19c9a09dc2c3d57b5959fbce590a6219 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 59e77660cc1d237590c52938b2e926969339b217..c4937780382e9d333336f5c279d8f96990f9bd8d 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 6c38eed1a975e14d1bea3a514393c0885117d852..b824822b55ae55bf51db421cc7fa07c6ec8a69da 100644 (file)
@@ -756,6 +756,13 @@ 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);
+        }
+
     next_font:
         n = obt_xml_find_node(n->next, "font");
     }