Ignore color fonts when using Xft

* src/font.c (syms_of_font): New configuration variable
xft-ignore-color-fonts, default t.
* src/ftfont.c (ftfont_spec_pattern): Tell fontconfig to ignore
color fonts if xft-ignore-color-fonts is t.  (Bug#30874, Bug#30045)
* etc/NEWS: Document xft-ignore-color-fonts.
This commit is contained in:
Robert Pluim 2018-04-03 11:06:01 +02:00
parent 55c9bb9f3c
commit f21fa142ac
3 changed files with 20 additions and 0 deletions

View file

@ -31,6 +31,12 @@ in its NEWS.)
* Changes in Emacs 26.2
---
** New variable 'xft-ignore-color-fonts'.
Default t means don't try to load color fonts when using Xft, as they
often cause crashes. Set it to nil if you really need those fonts.
(Bug#30874)
* Editing Changes in Emacs 26.2

View file

@ -5476,6 +5476,13 @@ Disabling compaction of font caches might enlarge the Emacs memory
footprint in sessions that use lots of different fonts. */);
inhibit_compacting_font_caches = 0;
DEFVAR_BOOL ("xft-ignore-color-fonts",
Vxft_ignore_color_fonts,
doc: /*
Non-nil means don't query fontconfig for color fonts, since they often
cause Xft crashes. Only has an effect in Xft builds. */);
Vxft_ignore_color_fonts = 1;
#ifdef HAVE_WINDOW_SYSTEM
#ifdef HAVE_FREETYPE
syms_of_ftfont ();

View file

@ -764,6 +764,13 @@ ftfont_spec_pattern (Lisp_Object spec, char *otlayout, struct OpenTypeSpec **ots
if (scalable >= 0
&& ! FcPatternAddBool (pattern, FC_SCALABLE, scalable ? FcTrue : FcFalse))
goto err;
#ifdef HAVE_XFT
/* We really don't like color fonts, they cause Xft crashes. See
Bug#30874. */
if (Vxft_ignore_color_fonts
&& ! FcPatternAddBool(pattern, FC_COLOR, FcFalse))
goto err;
#endif
goto finish;