From e9b7ab963b49d6eaaa2359ac903a1fe80943ec95 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20Dj=C3=A4rv?= Date: Tue, 22 Jun 2010 09:55:08 +0200 Subject: [PATCH] Don't use font names from GConf if font backend can't handle it (bug#6478). * xfns.c (x_default_font_parameter): Try to open font from system before using it (bug#6478). Rename got_from_gconf to got_from_system. --- src/ChangeLog | 5 +++++ src/xfns.c | 26 ++++++++++++++++---------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 121d06577b0..3d8e962e070 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2010-06-22 Jan Djärv + + * xfns.c (x_default_font_parameter): Try to open font from system + before using it (bug#6478). Rename got_from_gconf to got_from_system. + 2010-06-22 Keith Packard (tiny change) * font.c (font_parse_fcname): Allow . for sizes like 7.5 (bug#6437). diff --git a/src/xfns.c b/src/xfns.c index d19914e8dec..4f9afeef6cc 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -3064,8 +3064,8 @@ x_default_font_parameter (f, parms) struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); Lisp_Object font_param = x_get_arg (dpyinfo, parms, Qfont, NULL, NULL, RES_TYPE_STRING); - Lisp_Object font; - int got_from_gconf = 0; + Lisp_Object font = Qnil; + int got_from_system = 0; if (EQ (font_param, Qunbound)) font_param = Qnil; @@ -3075,14 +3075,20 @@ x_default_font_parameter (f, parms) regardless of font-use-system-font because .emacs may not have been read yet. */ const char *system_font = xsettings_get_system_font (); - if (system_font) font_param = make_string (system_font, - strlen (system_font)); + if (system_font) + { + char *name = xstrdup (system_font); + font = font_open_by_name (f, name); + got_from_system = ! NILP (font); + free (name); + } } - - font = !NILP (font_param) ? font_param - : x_get_arg (dpyinfo, parms, Qfont, "font", "Font", RES_TYPE_STRING); - if (! STRINGP (font)) + if (NILP (font)) + font = !NILP (font_param) ? font_param + : x_get_arg (dpyinfo, parms, Qfont, "font", "Font", RES_TYPE_STRING); + + if (! FONTP (font) && ! STRINGP (font)) { char *names[] = { @@ -3120,8 +3126,8 @@ x_default_font_parameter (f, parms) } x_default_parameter (f, parms, Qfont, font, - got_from_gconf ? NULL : "font", - got_from_gconf ? NULL : "Font", + got_from_system ? NULL : "font", + got_from_system ? NULL : "Font", RES_TYPE_STRING); } -- 2.39.2