From 33584111a5a6146936f9b8c0a89aa907c4fc629c Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Mon, 9 Feb 2026 09:41:36 -0600 Subject: fix(font): prevent HarfBuzz SIGSEGV crash on emoji in mu4e headers Emacs 30.2 + HarfBuzz 12.3.2 segfaults when arabic-shape-gstring is called on emoji characters during mu4e header rendering. Disable Arabic composition ranges, set inhibit-compacting-font-caches, and disable auto-composition in mu4e-headers-mode. Remove duplicate bidi settings from system-defaults.el (already in early-init.el). --- modules/font-config.el | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'modules/font-config.el') diff --git a/modules/font-config.el b/modules/font-config.el index c6422065..c3192b2d 100644 --- a/modules/font-config.el +++ b/modules/font-config.el @@ -44,6 +44,30 @@ (require 'host-environment) +;; ---------------------- HarfBuzz Font Cache Crash Fix ----------------------- +;; Prevents Emacs from compacting font caches during GC. Without this, GC can +;; free font cache entries that HarfBuzz still references, causing SIGSEGV +;; crashes during glyph shaping (e.g., rendering emoji in mu4e headers). +;; See: Emacs bug#12746, coredump traces through hb_shape_full. + +(setq inhibit-compacting-font-caches t) + +;; --------------- Disable Arabic Shaping (Prevents HarfBuzz SIGSEGV) --------- +;; Emacs 30.2 + HarfBuzz crashes (SIGSEGV in hb_shape_full) when +;; arabic-shape-gstring is called on emoji characters in mu4e headers. +;; Since bidi display is already disabled in early-init.el and Arabic text +;; shaping is not needed, remove it from the composition function table. +;; This prevents HarfBuzz from ever using the Arabic shaper. Programming +;; ligatures and emoji rendering use different shapers and are unaffected. + +(with-eval-after-load 'misc-lang + (dolist (range '((#x0600 . #x06FF) ;; Arabic + (#x0750 . #x077F) ;; Arabic Supplement + (#x08A0 . #x08FF) ;; Arabic Extended-A + (#xFB50 . #xFDFF) ;; Arabic Presentation Forms-A + (#xFE70 . #xFEFF))) ;; Arabic Presentation Forms-B + (set-char-table-range composition-function-table range nil))) + ;; ----------------------- Font Family And Size Selection ---------------------- ;; preset your fixed and variable fonts, then apply them to text as a set -- cgit v1.2.3