changeset 89605:fd68f6dd4993

(x_list_fonts): Fix excluding of auto-scaled fonts.
author Kenichi Handa <handa@m17n.org>
date Fri, 24 Oct 2003 00:40:10 +0000
parents 333811aa4aac
children bc6493a5b7ab
files src/xterm.c
diffstat 1 files changed, 14 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/xterm.c	Thu Oct 23 08:42:54 2003 +0000
+++ b/src/xterm.c	Fri Oct 24 00:40:10 2003 +0000
@@ -9416,7 +9416,7 @@
    If SIZE is > 0, it is the size (maximum bounds width) of fonts
    to be listed.
 
-   SIZE < 0 means include scalable fonts.
+   SIZE < 0 means include auto scaled fonts.
 
    Frame F null means we have not yet created any frame on X, and
    consult the first display in x_display_list.  MAXNAMES sets a limit
@@ -9436,11 +9436,11 @@
   Display *dpy = dpyinfo->display;
   int try_XLoadQueryFont = 0;
   int count;
-  int allow_scalable_fonts_p = 0;
+  int allow_auto_scaled_font = 0;
 
   if (size < 0)
     {
-      allow_scalable_fonts_p = 1;
+      allow_auto_scaled_font = 1;
       size = 0;
     }
 
@@ -9463,7 +9463,7 @@
 	 ((((PATTERN . MAXNAMES) . SCALABLE) (FONTNAME . WIDTH) ...) ...)  */
       tem = XCDR (dpyinfo->name_list_element);
       key = Fcons (Fcons (pattern, make_number (maxnames)),
-		   allow_scalable_fonts_p ? Qt : Qnil);
+		   allow_auto_scaled_font ? Qt : Qnil);
       list = Fassoc (key, tem);
       if (!NILP (list))
 	{
@@ -9569,25 +9569,28 @@
 	    {
 	      int width = 0;
 	      char *p = names[i];
-	      int average_width = -1, dashes = 0;
+	      int average_width = -1, resx = 0, dashes = 0;
 
 	      /* Count the number of dashes in NAMES[I].  If there are
-		 14 dashes, and the field value following 12th dash
-		 (AVERAGE_WIDTH) is 0, this is a auto-scaled font which
-		 is usually too ugly to be used for editing.  Let's
-		 ignore it.  */
+		 14 dashes, the field value following 9th dash
+		 (RESOLUTION_X) is nonzero, and the field value
+		 following 12th dash (AVERAGE_WIDTH) is 0, this is a
+		 auto-scaled font which is usually too ugly to be used
+		 for editing.  Let's ignore it.  */
 	      while (*p)
 		if (*p++ == '-')
 		  {
 		    dashes++;
 		    if (dashes == 7) /* PIXEL_SIZE field */
 		      width = atoi (p);
+		    else if (dashes == 9)
+		      resx = atoi (p);
 		    else if (dashes == 12) /* AVERAGE_WIDTH field */
 		      average_width = atoi (p);
 		  }
 
-	      if (allow_scalable_fonts_p
-		  || dashes < 14 || average_width != 0)
+	      if (allow_auto_scaled_font
+		  || dashes < 14 || average_width != 0 || resx == 0)
 		{
 		  tem = build_string (names[i]);
 		  if (NILP (Fassoc (tem, list)))