Blob Blame Raw
diff -up gdm-2.23.2/gui/simple-greeter/gdm-language-chooser-widget.c.unknown-lang gdm-2.23.2/gui/simple-greeter/gdm-language-chooser-widget.c
--- gdm-2.23.2/gui/simple-greeter/gdm-language-chooser-widget.c.unknown-lang	2008-08-14 15:26:43.000000000 -0400
+++ gdm-2.23.2/gui/simple-greeter/gdm-language-chooser-widget.c	2008-08-14 15:26:50.000000000 -0400
@@ -133,6 +133,7 @@ gdm_language_chooser_widget_add_language
 static gboolean
 language_has_font (const char *locale)
 {
+  const FcCharSet *charset;
   FcPattern   *pattern;
   FcObjectSet *object_set;
   FcFontSet   *font_set;
@@ -146,22 +147,30 @@ language_has_font (const char *locale)
 
   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: