Date: Thursday, July 5, 2018 @ 12:04:54 Author: juergen Revision: 327988
Fix FS#58934: Backports to solve emacs crash related to color fonts Added: emacs/trunk/0001-Ignore-color-fonts-when-using-Xft.patch emacs/trunk/0001-Port-FC_COLOR-change-to-older-fontconfig.patch emacs/trunk/0001-src-ftfont.c-ftfont_spec_pattern-Fix-whitespace.patch Modified: emacs/trunk/PKGBUILD ------------------------------------------------------------+ 0001-Ignore-color-fonts-when-using-Xft.patch | 72 +++++++++++ 0001-Port-FC_COLOR-change-to-older-fontconfig.patch | 32 ++++ 0001-src-ftfont.c-ftfont_spec_pattern-Fix-whitespace.patch | 25 +++ PKGBUILD | 19 ++ 4 files changed, 145 insertions(+), 3 deletions(-) Added: 0001-Ignore-color-fonts-when-using-Xft.patch =================================================================== --- 0001-Ignore-color-fonts-when-using-Xft.patch (rev 0) +++ 0001-Ignore-color-fonts-when-using-Xft.patch 2018-07-05 12:04:54 UTC (rev 327988) @@ -0,0 +1,72 @@ +From f21fa142aca53e3de5783e1ce6fe1bf116174aeb Mon Sep 17 00:00:00 2001 +From: Robert Pluim <[email protected]> +Date: Tue, 3 Apr 2018 11:06:01 +0200 +Subject: [PATCH] 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. +--- + etc/NEWS | 6 ++++++ + src/font.c | 7 +++++++ + src/ftfont.c | 7 +++++++ + 3 files changed, 20 insertions(+) + +diff --git a/etc/NEWS b/etc/NEWS +index 873e2dfd1d..2bec8de0ea 100644 +--- a/etc/NEWS ++++ b/etc/NEWS +@@ -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 e53935a15c..305bb14576 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 c2e093e633..24a92dd52e 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; + +-- +2.17.1 + Added: 0001-Port-FC_COLOR-change-to-older-fontconfig.patch =================================================================== --- 0001-Port-FC_COLOR-change-to-older-fontconfig.patch (rev 0) +++ 0001-Port-FC_COLOR-change-to-older-fontconfig.patch 2018-07-05 12:04:54 UTC (rev 327988) @@ -0,0 +1,32 @@ +From 97d61f878e6378efbde73923a36f71caac73a4a0 Mon Sep 17 00:00:00 2001 +From: Paul Eggert <[email protected]> +Date: Tue, 3 Apr 2018 08:12:41 -0700 +Subject: [PATCH] Port FC_COLOR change to older fontconfig +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Problem reported by John ff in: +https://lists.gnu.org/r/emacs-devel/2018-04/msg00058.html +* src/ftfont.c (ftfont_spec_pattern) [!FC_COLOR]: +Don’t use FC_COLOR on older fontconfigs that don’t have it. +--- + src/ftfont.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/ftfont.c b/src/ftfont.c +index 24a92dd52e..84e4a30389 100644 +--- a/src/ftfont.c ++++ b/src/ftfont.c +@@ -764,7 +764,7 @@ 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 ++#if defined HAVE_XFT && defined FC_COLOR + /* We really don't like color fonts, they cause Xft crashes. See + Bug#30874. */ + if (Vxft_ignore_color_fonts +-- +2.17.1 + Added: 0001-src-ftfont.c-ftfont_spec_pattern-Fix-whitespace.patch =================================================================== --- 0001-src-ftfont.c-ftfont_spec_pattern-Fix-whitespace.patch (rev 0) +++ 0001-src-ftfont.c-ftfont_spec_pattern-Fix-whitespace.patch 2018-07-05 12:04:54 UTC (rev 327988) @@ -0,0 +1,25 @@ +From acaebed014951fdd13855aa7bba9aee60618785f Mon Sep 17 00:00:00 2001 +From: Eli Zaretskii <[email protected]> +Date: Tue, 3 Apr 2018 19:59:40 +0300 +Subject: [PATCH] ; * src/ftfont.c (ftfont_spec_pattern): Fix whitespace. + +--- + src/ftfont.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/ftfont.c b/src/ftfont.c +index 84e4a30389..8f048d2983 100644 +--- a/src/ftfont.c ++++ b/src/ftfont.c +@@ -768,7 +768,7 @@ ftfont_spec_pattern (Lisp_Object spec, char *otlayout, struct OpenTypeSpec **ots + /* We really don't like color fonts, they cause Xft crashes. See + Bug#30874. */ + if (Vxft_ignore_color_fonts +- && ! FcPatternAddBool(pattern, FC_COLOR, FcFalse)) ++ && ! FcPatternAddBool (pattern, FC_COLOR, FcFalse)) + goto err; + #endif + +-- +2.17.1 + Modified: PKGBUILD =================================================================== --- PKGBUILD 2018-07-05 11:28:34 UTC (rev 327987) +++ PKGBUILD 2018-07-05 12:04:54 UTC (rev 327988) @@ -4,7 +4,7 @@ pkgname=emacs pkgver=26.1 -pkgrel=1 +pkgrel=2 pkgdesc="The extensible, customizable, self-documenting real-time display editor" arch=('x86_64') url="http://www.gnu.org/software/emacs/emacs.html" @@ -11,10 +11,23 @@ license=('GPL3') depends=('librsvg' 'gpm' 'giflib' 'libxpm' 'libotf' 'm17n-lib' 'gtk3' 'hicolor-icon-theme' 'gconf' 'desktop-file-utils' 'alsa-lib' 'libmagick6' 'gnutls') validpgpkeys=('B29426DEFB07724C3C35E5D36592E9A3A0B0F199' '28D3BED851FDF3AB57FEF93C233587A47C207910') -source=(ftp://ftp.gnu.org/gnu/emacs/$pkgname-$pkgver.tar.xz{,.sig}) +source=(ftp://ftp.gnu.org/gnu/emacs/$pkgname-$pkgver.tar.xz{,.sig} + 0001-Ignore-color-fonts-when-using-Xft.patch + 0001-Port-FC_COLOR-change-to-older-fontconfig.patch + 0001-src-ftfont.c-ftfont_spec_pattern-Fix-whitespace.patch) sha1sums=('53c01d987b2613701f42d9f941c2d5225a5874c4' - 'SKIP') + 'SKIP' + 'e6b77aadf6c60dfdc1ec6b61d5968e64d959257d' + '6b40ad3d8936bfd068398c8d46cb8e0b9501fe64' + '51b3e6a2c32be315c9a15c55ca2e97e84d204f32') +prepare() { + cd $pkgname-$pkgver + patch -Np1 -i "${srcdir}/0001-Ignore-color-fonts-when-using-Xft.patch" + patch -Np1 -i "${srcdir}/0001-Port-FC_COLOR-change-to-older-fontconfig.patch" + patch -Np1 -i "${srcdir}/0001-src-ftfont.c-ftfont_spec_pattern-Fix-whitespace.patch" +} + build() { cd "$srcdir"/$pkgname-$pkgver PKG_CONFIG_PATH="/usr/lib/imagemagick6/pkgconfig" \
