summaryrefslogtreecommitdiff
path: root/gui
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@gnome.org>2008-08-14 20:03:56 +0000
committerBehdad Esfahbod <behdad@src.gnome.org>2008-08-14 20:03:56 +0000
commit6117f3497515ed689489e802a186e11a356cc91f (patch)
tree617d9908c7afe89a47930cd86a9a858c019e15d1 /gui
parentda53ce2763a9fdc0d38440a2280b202f3cd9d760 (diff)
downloadgdm-6117f3497515ed689489e802a186e11a356cc91f.tar.gz
Bug 547826 – Whitelist languages not known by fontconfig
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. svn path=/trunk/; revision=6379
Diffstat (limited to 'gui')
-rw-r--r--gui/simple-greeter/gdm-language-chooser-widget.c29
1 files changed, 19 insertions, 10 deletions
diff --git a/gui/simple-greeter/gdm-language-chooser-widget.c b/gui/simple-greeter/gdm-language-chooser-widget.c
index 0c323ba6..d43112ab 100644
--- a/gui/simple-greeter/gdm-language-chooser-widget.c
+++ b/gui/simple-greeter/gdm-language-chooser-widget.c
@@ -133,6 +133,7 @@ gdm_language_chooser_widget_add_language (GdmLanguageChooserWidget *widget,
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;
+ if (pattern == NULL)
+ goto done;
- object_set = FcObjectSetBuild (NULL, NULL);
+ object_set = FcObjectSetCreate ();
- if (object_set == NULL)
- goto done;
+ if (object_set == NULL)
+ goto done;
- font_set = FcFontList (NULL, pattern, object_set);
+ font_set = FcFontList (NULL, pattern, object_set);
- if (font_set == NULL)
- goto done;
+ if (font_set == NULL)
+ goto done;
- is_displayable = (font_set->nfont > 0);
+ is_displayable = (font_set->nfont > 0);
+ }
done: