diff options
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(); |