summaryrefslogtreecommitdiff
path: root/render/font.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-09 21:41:16 +0000
committerDana Jansens <danakj@orodu.net>2007-05-09 21:41:16 +0000
commitc4385c098fb5547dd80b06636c946676f274d396 (patch)
tree9e503e5da19f4a791bf55dd79884cd140eb2ac58 /render/font.c
parentfa67faf88c6e9c62dcbac838b6dc1c572ea9831a (diff)
use pango 1.16 stuff if its there. and use the old stuff if not. also! save it in static variable so we dont have to update it over and over.
Diffstat (limited to 'render/font.c')
-rw-r--r--render/font.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/render/font.c b/render/font.c
index 7a6338b0..166b9abb 100644
--- a/render/font.c
+++ b/render/font.c
@@ -34,13 +34,29 @@
static void measure_font(const RrInstance *inst, RrFont *f)
{
PangoFontMetrics *metrics;
+ static PangoLanguage *lang = NULL;
+
+ if (lang == NULL) {
+#if PANGO_VERSION_CHECK(1,16,0)
+ lang = pango_language_get_default();
+#else
+ gchar *locale, *p;
+ /* get the default language from the locale
+ (based on gtk_get_default_language in gtkmain.c) */
+ locale = g_strdup(setlocale(LC_CTYPE, NULL));
+ if ((p = strchr(locale, '.'))) *p = '\0'; /* strip off the . */
+ if ((p = strchr(locale, '@'))) *p = '\0'; /* strip off the @ */
+ lang = pango_language_from_string(locale);
+ g_free(locale);
+#endif
+ }
/* measure the ascent and descent */
- metrics = pango_context_get_metrics(inst->pango, f->font_desc,
- pango_language_get_default());
+ metrics = pango_context_get_metrics(inst->pango, f->font_desc, lang);
f->ascent = pango_font_metrics_get_ascent(metrics);
f->descent = pango_font_metrics_get_descent(metrics);
pango_font_metrics_unref(metrics);
+
}
RrFont *RrFontOpen(const RrInstance *inst, const gchar *name, gint size,