diff options
author | Behdad Esfahbod <behdad@gnome.org> | 2008-08-14 20:03:56 +0000 |
---|---|---|
committer | Behdad Esfahbod <behdad@src.gnome.org> | 2008-08-14 20:03:56 +0000 |
commit | 6117f3497515ed689489e802a186e11a356cc91f (patch) | |
tree | 617d9908c7afe89a47930cd86a9a858c019e15d1 /gui | |
parent | da53ce2763a9fdc0d38440a2280b202f3cd9d760 (diff) | |
download | gdm-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.c | 29 |
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: |