From 285f930490fbcd4529f2dca6618d2f86a49a0fe8 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Fri, 24 Oct 2003 00:40:10 +0000 Subject: [PATCH] (x_list_fonts): Fix excluding of auto-scaled fonts. --- src/xterm.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/xterm.c b/src/xterm.c index c31318c88f4..0457be6d73b 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -9416,7 +9416,7 @@ x_get_font_info (f, font_idx) 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 @@ x_list_fonts (f, pattern, size, maxnames) 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 @@ x_list_fonts (f, pattern, size, maxnames) ((((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 @@ x_list_fonts (f, pattern, size, maxnames) { 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))) -- 2.39.2