Mercurial > emacs
changeset 96657:fb9629443416
(xfont_open): Add workaround for X's bug.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Mon, 14 Jul 2008 07:44:46 +0000 |
parents | 58d5695cb004 |
children | 339fc2e9557b |
files | src/xfont.c |
diffstat | 1 files changed, 29 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xfont.c Mon Jul 14 07:05:33 2008 +0000 +++ b/src/xfont.c Mon Jul 14 07:44:46 2008 +0000 @@ -540,6 +540,35 @@ x_clear_errors (display); xfont = NULL; } + else if (! xfont) + { + /* Some version of X lists: + -misc-fixed-medium-r-normal--20-*-75-75-c-100-iso8859-1 + -misc-fixed-medium-r-normal--20-*-100-100-c-100-iso8859-1 + but can open only: + -misc-fixed-medium-r-normal--20-*-100-100-c-100-iso8859-1 + and + -misc-fixed-medium-r-normal--20-*-*-*-c-100-iso8859-1 + So, we try again with wildcards in RESX and RESY. */ + Lisp_Object temp; + + temp = Fcopy_font_spec (entity); + ASET (temp, FONT_DPI_INDEX, Qnil); + len = font_unparse_xlfd (temp, pixel_size, name, 256); + if (len <= 0) + { + font_add_log (" x:unparse failed", temp, Qnil); + return Qnil; + } + xfont = XLoadQueryFont (display, name); + if (x_had_errors_p (display)) + { + /* This error is perhaps due to insufficient memory on X server. + Let's just ignore it. */ + x_clear_errors (display); + xfont = NULL; + } + } fullname = Qnil; /* Try to get the full name of FONT. */ if (xfont && XGetFontProperty (xfont, XA_FONT, &value))