Behdad Esfahbod fabca32
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
Behdad Esfahbod fabca32
--- gdm-2.23.2/gui/simple-greeter/gdm-language-chooser-widget.c.unknown-lang	2008-08-14 15:26:43.000000000 -0400
Behdad Esfahbod fabca32
+++ gdm-2.23.2/gui/simple-greeter/gdm-language-chooser-widget.c	2008-08-14 15:26:50.000000000 -0400
Behdad Esfahbod fabca32
@@ -133,6 +133,7 @@ gdm_language_chooser_widget_add_language
Behdad Esfahbod fabca32
 static gboolean
Behdad Esfahbod fabca32
 language_has_font (const char *locale)
Behdad Esfahbod fabca32
 {
Behdad Esfahbod fabca32
+  const FcCharSet *charset;
Behdad Esfahbod fabca32
   FcPattern   *pattern;
Behdad Esfahbod fabca32
   FcObjectSet *object_set;
Behdad Esfahbod fabca32
   FcFontSet   *font_set;
Behdad Esfahbod fabca32
@@ -146,22 +147,30 @@ language_has_font (const char *locale)
Behdad Esfahbod fabca32
 
Behdad Esfahbod fabca32
   gdm_parse_language_name (locale, &language_code, NULL, NULL, NULL);
Behdad Esfahbod fabca32
 
Behdad Esfahbod fabca32
-  pattern = FcPatternBuild (NULL, FC_LANG, FcTypeString, language_code, NULL);
Behdad Esfahbod fabca32
+  charset = FcLangGetCharSet ((FcChar8 *) language_code);
Behdad Esfahbod fabca32
+  if (!charset)
Behdad Esfahbod fabca32
+    /* fontconfig does not know about this language */
Behdad Esfahbod fabca32
+    is_displayable = TRUE;
Behdad Esfahbod fabca32
+  else
Behdad Esfahbod fabca32
+    {
Behdad Esfahbod fabca32
+      /* see if any fonts support rendering it */
Behdad Esfahbod fabca32
+      pattern = FcPatternBuild (NULL, FC_LANG, FcTypeString, language_code, NULL);
Behdad Esfahbod fabca32
+
Behdad Esfahbod fabca32
+      if (pattern == NULL)
Behdad Esfahbod fabca32
+	goto done;
Behdad Esfahbod fabca32
+
Behdad Esfahbod fabca32
+      object_set = FcObjectSetCreate ();
Behdad Esfahbod fabca32
+
Behdad Esfahbod fabca32
+      if (object_set == NULL)
Behdad Esfahbod fabca32
+	goto done;
Behdad Esfahbod fabca32
 
Behdad Esfahbod fabca32
-  if (pattern == NULL)
Behdad Esfahbod fabca32
-    goto done;
Behdad Esfahbod fabca32
+      font_set = FcFontList (NULL, pattern, object_set);
Behdad Esfahbod fabca32
 
Behdad Esfahbod fabca32
-  object_set = FcObjectSetBuild (NULL, NULL);
Behdad Esfahbod fabca32
+      if (font_set == NULL)
Behdad Esfahbod fabca32
+	goto done;
Behdad Esfahbod fabca32
 
Behdad Esfahbod fabca32
-  if (object_set == NULL)
Behdad Esfahbod fabca32
-    goto done;
Behdad Esfahbod fabca32
-
Behdad Esfahbod fabca32
-  font_set = FcFontList (NULL, pattern, object_set);
Behdad Esfahbod fabca32
-
Behdad Esfahbod fabca32
-  if (font_set == NULL)
Behdad Esfahbod fabca32
-    goto done;
Behdad Esfahbod fabca32
-
Behdad Esfahbod fabca32
-  is_displayable = (font_set->nfont > 0);
Behdad Esfahbod fabca32
+      is_displayable = (font_set->nfont > 0);
Behdad Esfahbod fabca32
+    }
Behdad Esfahbod fabca32
 
Behdad Esfahbod fabca32
 done:
Behdad Esfahbod fabca32