gdm r6379 - in trunk: . gui/simple-greeter



Author: behdad
Date: Thu Aug 14 20:03:56 2008
New Revision: 6379
URL: http://svn.gnome.org/viewvc/gdm?rev=6379&view=rev

Log:
2008-08-14  Behdad Esfahbod  <behdad gnome org>

        Bug 547826 â Whitelist languages not known by fontconfig

        * configure.ac: Require fontconfig >= 2.6.0

        * gui/simple-greeter/gdm-language-chooser-widget.c
        (language_has_font): Accept language if FcLangGetCharSet()
        returns NULL on it.



Modified:
   trunk/ChangeLog
   trunk/configure.ac
   trunk/gui/simple-greeter/gdm-language-chooser-widget.c

Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac	(original)
+++ trunk/configure.ac	Thu Aug 14 20:03:56 2008
@@ -49,6 +49,7 @@
 POLICYKIT_REQUIRED_VERSION=0.8
 GNOME_PANEL_REQUIRED_VERSION=2.0.0
 LIBXKLAVIER_REQUIRED_VERSION=3.5
+FONTCONFIG_REQUIRED_VERSION=2.6.0
 
 EXTRA_COMPILE_WARNINGS(yes)
 
@@ -99,6 +100,7 @@
         gtk+-2.0 >= $GTK_REQUIRED_VERSION
         libglade-2.0 >= $LIBGLADE_REQUIRED_VERSION
         gconf-2.0 >= $GCONF_REQUIRED_VERSION
+	fontconfig >= $FONTCONFIG_REQUIRED_VERSION
 )
 AC_SUBST(SIMPLE_GREETER_CFLAGS)
 AC_SUBST(SIMPLE_GREETER_LIBS)

Modified: trunk/gui/simple-greeter/gdm-language-chooser-widget.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-language-chooser-widget.c	(original)
+++ trunk/gui/simple-greeter/gdm-language-chooser-widget.c	Thu Aug 14 20:03:56 2008
@@ -133,6 +133,7 @@
 static gboolean
 language_has_font (const char *locale)
 {
+  const FcCharSet *charset;
   FcPattern   *pattern;
   FcObjectSet *object_set;
   FcFontSet   *font_set;
@@ -146,22 +147,30 @@
 
   gdm_parse_language_name (locale, &language_code, NULL, NULL, NULL);
 
-  pattern = FcPatternBuild (NULL, FC_LANG, FcTypeString, language_code, NULL);
+  charset = FcLangGetCharSet ((FcChar8 *) language_code);
+  if (!charset)
+    /* fontconfig does not know about this language */
+    is_displayable = TRUE;
+  else
+    {
+      /* see if any fonts support rendering it */
+      pattern = FcPatternBuild (NULL, FC_LANG, FcTypeString, language_code, NULL);
+
+      if (pattern == NULL)
+	goto done;
+
+      object_set = FcObjectSetCreate ();
+
+      if (object_set == NULL)
+	goto done;
 
-  if (pattern == NULL)
-    goto done;
+      font_set = FcFontList (NULL, pattern, object_set);
 
-  object_set = FcObjectSetBuild (NULL, NULL);
+      if (font_set == NULL)
+	goto done;
 
-  if (object_set == NULL)
-    goto done;
-
-  font_set = FcFontList (NULL, pattern, object_set);
-
-  if (font_set == NULL)
-    goto done;
-
-  is_displayable = (font_set->nfont > 0);
+      is_displayable = (font_set->nfont > 0);
+    }
 
 done:
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]