Subject: Re: bug#36288: 27.0.50; Cannot use menu-set-font

From: YAMAMOTO Mitsuharu <[email-masked]>
Date: Sun, 23 Jun 2019 15:34:23 +0900

On Thu, 20 Jun 2019 11:54:21 +0900,
YAMAMOTO Mitsuharu wrote:
> 
> On Wed, 19 Jun 2019 16:48:04 +0900,
> Robert Pluim wrote:
> > 
> > emacs -Q
> > M-x menu-set-font
> > select Ubuntu Mono Regular =>
> > 
> > "set-face-attribute: Font not available: #<font-spec xft nil Ubuntu\ Mono nil nil normal normal nil 10.0 nil nil nil ((:name . "Ubuntu Mono"))>"
> > 
> > I can select Ubuntu Mono using M-x customize-face. Why does
> > menu-set-font try to use an xft spec?
> > 
> > (frame-parameter nil 'font-backend) =>
> > (xfthb x)
> 
> Maybe better to use the first entry of the font-backend frame
> parameter rather than hardcoded one?

On second thought, it seems to be better to leave the font type
unspecified.  Hard-coding the wanted font type was introduced as a
"fix" for Bug#3228, but I suspect its reasoning is no longer valid (I
couldn't find fonts.alias in the Type1 font directory in CentOS or
Linux Mint).  Also, probably we should set the :family font property
instead of :name.

				     YAMAMOTO Mitsuharu
				[email-masked]

diff --git a/src/gtkutil.c b/src/gtkutil.c
index dccee159254..1d15aec253e 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -2277,26 +2277,19 @@ xg_get_font (struct frame *f, const char *default_name)
 
       if (desc)
 	{
-	  const char *name   = pango_font_description_get_family (desc);
+	  const char *family = pango_font_description_get_family (desc);
 	  gint        size   = pango_font_description_get_size (desc);
 	  PangoWeight weight = pango_font_description_get_weight (desc);
 	  PangoStyle  style  = pango_font_description_get_style (desc);
 
-#ifdef USE_CAIRO
-#define FONT_TYPE_WANTED (Qftcr)
-#else
-#define FONT_TYPE_WANTED (Qxft)
-#endif
 	  font = CALLN (Ffont_spec,
-			QCname, build_string (name),
+			QCfamily, build_string (family),
 			QCsize, make_float (pango_units_to_double (size)),
 			QCweight, XG_WEIGHT_TO_SYMBOL (weight),
-			QCslant, XG_STYLE_TO_SYMBOL (style),
-			QCtype,
-                        FONT_TYPE_WANTED);
+			QCslant, XG_STYLE_TO_SYMBOL (style));
 
 	  pango_font_description_free (desc);
-	  dupstring (&x_last_font_name, name);
+	  dupstring (&x_last_font_name, family);
 	}
 
 #else /* Use old font selector, which just returns the font name.  */