diff options
author | Robert Pluim <rpluim@gmail.com> | 2018-04-03 11:06:01 +0200 |
---|---|---|
committer | Robert Pluim <rpluim@gmail.com> | 2018-06-05 14:08:08 +0200 |
commit | f21fa142aca53e3de5783e1ce6fe1bf116174aeb (patch) | |
tree | abf916233ec6c14b7993be6a563dbb72a024bf3f | |
parent | 55c9bb9f3c2971e347caeea1402f97fb603c4210 (diff) | |
download | emacs-f21fa142aca53e3de5783e1ce6fe1bf116174aeb.tar.gz |
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.
-rw-r--r-- | etc/NEWS | 6 | ||||
-rw-r--r-- | src/font.c | 7 | ||||
-rw-r--r-- | src/ftfont.c | 7 |
3 files changed, 20 insertions, 0 deletions
@@ -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 diff --git a/src/font.c b/src/font.c index e53935a15cc..305bb14576a 100644 --- a/src/font.c +++ b/src/font.c @@ -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 (); diff --git a/src/ftfont.c b/src/ftfont.c index c2e093e633d..24a92dd52e8 100644 --- a/src/ftfont.c +++ b/src/ftfont.c @@ -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; |