From 7fa5eac9e5ec7e84f13b792d9ffe71298d770b0e Mon Sep 17 00:00:00 2001 From: Mikael Magnusson Date: Tue, 29 Apr 2008 16:56:31 +0200 Subject: [PATCH] Allow to use a pango font description string. --- obrender/font.c | 9 +++++++++ obrender/render.h | 2 ++ openbox/config.c | 6 ++++++ 3 files changed, 17 insertions(+) diff --git a/obrender/font.c b/obrender/font.c index 0f56a552..47606aee 100644 --- a/obrender/font.c +++ b/obrender/font.c @@ -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) { diff --git a/obrender/render.h b/obrender/render.h index f125847c..b75310b4 100644 --- a/obrender/render.h +++ b/obrender/render.h @@ -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 diff --git a/openbox/config.c b/openbox/config.c index 92c4fe0c..a7f796f6 100644 --- a/openbox/config.c +++ b/openbox/config.c @@ -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); + } } } -- 2.34.1