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.

This commit is contained in:
Dana Jansens 2007-05-09 21:41:16 +00:00
parent fa67faf88c
commit c4385c098f
2 changed files with 19 additions and 3 deletions

View file

@ -74,7 +74,7 @@ PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.6.0])
AC_SUBST(GLIB_CFLAGS)
AC_SUBST(GLIB_LIBS)
PKG_CHECK_MODULES(PANGO, [pango >= 1.16.0 pangoxft >= 1.8.0])
PKG_CHECK_MODULES(PANGO, [pango >= 1.8.0 pangoxft >= 1.8.0])
AC_SUBST(PANGO_CFLAGS)
AC_SUBST(PANGO_LIBS)

View file

@ -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,