mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-28 16:21:07 -08:00
(x_list_fonts): Fix excluding of auto-scaled fonts.
This commit is contained in:
parent
c052767cc1
commit
285f930490
1 changed files with 14 additions and 11 deletions
25
src/xterm.c
25
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)))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue