Index: src/yelp-gecko-utils.cpp =================================================================== RCS file: /cvs/gnome/yelp/src/yelp-gecko-utils.cpp,v retrieving revision 1.16 diff -p -u -u -p -r1.16 yelp-gecko-utils.cpp --- src/yelp-gecko-utils.cpp 22 Jan 2006 18:06:35 -0000 1.16 +++ src/yelp-gecko-utils.cpp 4 Feb 2006 23:08:54 -0000 @@ -28,9 +28,41 @@ #include #include #include +#include +#include #include #include "yelp-gecko-utils.h" +#include "yelp-gecko-services.h" + +static const char *font_languages[] = { + "ar", + "el", + "he", + "ja", + "ko", + "th", + "tr", + "x-armn", + "x-baltic", + "x-beng", + "x-cans", + "x-central-euro", + "x-cyrillic", + "x-devanagari", + "x-ethi", + "x-geor", + "x-gujr", + "x-guru", + "x-khmr", + "x-mlym", + "x-tamil", + "x-unicode", + "x-western", + "zh-CN", + "zh-HK", + "zh-TW" +}; static gboolean yelp_util_split_font_string (const gchar *font_name, gchar **name, gint *size) @@ -39,6 +71,8 @@ yelp_util_split_font_string (const gchar PangoFontMask mask = (PangoFontMask) (PANGO_FONT_MASK_FAMILY | PANGO_FONT_MASK_SIZE); gboolean retval = FALSE; + if (!font_name) return FALSE; + desc = pango_font_description_from_string (font_name); if (!desc) return FALSE; @@ -130,14 +164,14 @@ yelp_gecko_set_color (YelpColorType type } extern "C" void -yelp_gecko_set_font (YelpFontType font_type, const gchar *fontname) +yelp_gecko_set_font (YelpFontType font_type, + const gchar *fontname) { - gchar *name; - gint size = 0; - - g_return_if_fail (fontname != NULL); + char *name = NULL; + char pref[128]; + int size = 0; + guint i; - name = NULL; if (!yelp_util_split_font_string (fontname, &name, &size)) { g_free (name); return; @@ -147,22 +181,32 @@ yelp_gecko_set_font (YelpFontType font_t switch (font_type) { case YELP_FONT_VARIABLE: - gecko_prefs_set_string ("font.name.variable.x-western", - name); - gecko_prefs_set_int ("font.size.variable.x-western", - size); - gecko_prefs_set_int ("font.minimum-size.x-western", - 8); + for (i = 0; i < G_N_ELEMENTS (font_languages); ++i) + { + g_snprintf (pref, sizeof (pref), "font.name.variable.%s", + font_languages[i]); + gecko_prefs_set_string (pref, name); + + g_snprintf (pref, sizeof (pref), "font.size.variable.%s", + font_languages[i]); + gecko_prefs_set_int (pref, size); + + g_snprintf (pref, sizeof (pref), "font.minimum-size.%s", + font_languages[i]); + gecko_prefs_set_int (pref, 8); + } break; case YELP_FONT_FIXED: - gecko_prefs_set_string ("font.name.monospace.x-western", - name); - gecko_prefs_set_int ("font.size.monospace.x-western", - size); - gecko_prefs_set_string ("font.name.fixed.x-western", - name); - gecko_prefs_set_int ("font.size.fixed.x-western", - size); + for (i = 0; i < G_N_ELEMENTS (font_languages); ++i) + { + g_snprintf (pref, sizeof (pref), "font.name.monospace.%s", + font_languages[i]); + gecko_prefs_set_string (pref, name); + + g_snprintf (pref, sizeof (pref), "font.size.monospace.%s", + font_languages[i]); + gecko_prefs_set_int (pref, size); + } break; default: break;