Hi emacs-devel, I'm cross-posting this from https://emacs.stackexchange.com/questions/17205 following Eli's suggestion; I couldn't figure this out from reading the manual. TL;DR: What's a simple way to reliably say: use Ubuntu Mono as the default font, FreeMono for the characters unsupported by Ubuntu Mono, and Symbola for characters unsupported by both? Since my main programming font does not cover all the mathematical symbols I need, I initially set up font fallback as shown below: (set-fontset-font t 'unicode (font-spec :name "FreeMono") nil 'append) (set-fontset-font t 'unicode (font-spec :name "Symbola") nil 'append) Unfortunately this also changed the font for some of the character that my main font (Ubuntu Mono) supports, so I changed it to (set-fontset-font t 'unicode (font-spec :name "Ubuntu Mono") nil) (set-fontset-font t 'unicode (font-spec :name "FreeMono") nil 'append) (set-fontset-font t 'unicode (font-spec :name "Symbola") nil 'append) If my understanding is correct, this should ensure that characters that Ubuntu Mono cannot handle are handled by FreeMono, unless FreeMono doesn't have them, in which case they should be displayed using Symbola. It is also my understanding that `t` does the same as `"fontset-default"` above. Unfortunately, there were still cases where the right font wasn't selected; I found that changing to (set-fontset-font t 'unicode (font-spec :name "Ubuntu Mono") nil) (set-fontset-font t 'unicode (font-spec :name "FreeMono") nil 'append) (set-fontset-font t 'unicode (font-spec :name "Symbola") nil 'append) (set-fontset-font "fontset-startup" 'unicode (font-spec :name "Ubuntu Mono") nil) (set-fontset-font "fontset-startup" 'unicode (font-spec :name "FreeMono") nil 'append) (set-fontset-font "fontset-startup" 'unicode (font-spec :name "Symbola") nil 'append) worked better, but not always: changing the font size using (set-face-attribute 'default nil :height some-size) caused the fallbacks to be ignored, due to new fontsets being created. My current solution is to do (set-fontset-font fontset 'unicode (font-spec :name "Ubuntu Mono") nil) (set-fontset-font fontset 'unicode (font-spec :name "FreeMono") nil 'append) (set-fontset-font fontset 'unicode (font-spec :name "Symbola") nil 'append) on each fontset (`fontset-list`), after each font size change. This is cumbersome, and I have trouble imagining that it's the right solution. What's the proper way to configure font fallback? *Note*: for testing purposes, here are a few math characters: `ℕ𝓟⧺×≠≥≤±¬∨∧∃∀λ⟿⟹⊥⊤⊢` *References*: Emacs manual on [fontsets](https://www.gnu.org/software/emacs/manual/html_node/emacs/Fontsets.html) and on [modifying fontsets](https://www.gnu.org/software/emacs/manual/html_node/emacs/Defining-Fontsets.html#Defining-Fontsets) Cheers, Clément.