diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2007-04-16 05:41:15 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2007-04-16 05:41:15 +0000 |
commit | 839719a70498485a26889ee86086e768ead87d1b (patch) | |
tree | 3cebaabeab426e1982639647da93b57438794499 /src | |
parent | 16de7229895d8c8da1ed334a2b638d1795c51626 (diff) |
win32: check for the loadability of the default font.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@1637 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src')
-rw-r--r-- | src/gtkutils.c | 30 | ||||
-rw-r--r-- | src/gtkutils.h | 2 | ||||
-rw-r--r-- | src/main.c | 28 |
3 files changed, 60 insertions, 0 deletions
diff --git a/src/gtkutils.c b/src/gtkutils.c index 585e75d3..9294587b 100644 --- a/src/gtkutils.c +++ b/src/gtkutils.c @@ -42,6 +42,10 @@ #include <stdlib.h> #include <stdarg.h> +#ifdef G_OS_WIN32 +# include <pango/pangowin32.h> +#endif + #include "gtkutils.h" #include "utils.h" #include "codeconv.h" @@ -106,6 +110,32 @@ void gtkut_widget_set_small_font_size(GtkWidget *widget) pango_font_description_free(font_desc); } +gboolean gtkut_font_can_load(const gchar *str) +{ +#ifdef G_OS_WIN32 + PangoFontDescription *desc; + PangoContext *context; + PangoFont *font; + gboolean can_load = FALSE; + + desc = pango_font_description_from_string(str); + if (desc) { + context = pango_win32_get_context(); + font = pango_context_load_font(context, desc); + if (font) { + can_load = TRUE; + g_object_unref(font); + } + g_object_unref(context); + pango_font_description_free(desc); + } + + return can_load; +#else + return FALSE; +#endif +} + void gtkut_convert_int_to_gdk_color(gint rgbvalue, GdkColor *color) { g_return_if_fail(color != NULL); diff --git a/src/gtkutils.h b/src/gtkutils.h index d7e18c5c..ea5ff429 100644 --- a/src/gtkutils.h +++ b/src/gtkutils.h @@ -93,6 +93,8 @@ PangoFontDescription *gtkut_get_default_font_desc (void); void gtkut_widget_set_small_font_size (GtkWidget *widget); +gboolean gtkut_font_can_load (const gchar *str); + void gtkut_convert_int_to_gdk_color (gint rgbvalue, GdkColor *color); @@ -225,6 +225,34 @@ int main(int argc, char *argv[]) prefs_actions_read_config(); prefs_display_header_read_config(); +#ifdef G_OS_WIN32 + { + gchar *path; + path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, + NULL); + if (!is_file_exist(path) && conv_is_ja_locale()) { + const gchar *str; + + debug_print("fixing prefs_common.textfont setting\n"); + str = "MS Gothic 12"; + if (!gtkut_font_can_load(str)) { + debug_print("font '%s' load failed\n", str); + str = "\xef\xbc\xad\xef\xbc\xb3 \xe3\x82\xb4\xe3\x82\xb7\xe3\x83\x83\xe3\x82\xaf 12"; + if (!gtkut_font_can_load(str)) { + debug_print("font '%s' load failed\n", str); + str = NULL; + } + } + if (str) { + debug_print("font '%s' load ok\n", str); + g_free(prefs_common.textfont); + prefs_common.textfont = g_strdup(str); + } + } + g_free(path); + } +#endif + gtkut_stock_button_set_set_reverse(!prefs_common.comply_gnome_hig); check_gpg(); |