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:
parent
fa67faf88c
commit
c4385c098f
2 changed files with 19 additions and 3 deletions
|
@ -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)
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue