reddit / emacs

How to debug or solve the problem of "Font not available: #<font-spec nil nil JetBrains\ Mono nil nil nil nil nil 16 nil nil nil nil>"?

yubrshen · 2022-06-17 15:17
With doom emacs, I have the following in my config.el (setq doom-font (font-spec :family "JetBrains Mono" :size 16) I evaluated it manually without any error, and M-x doom-reload-font, then I got the error: Font not available: #<font-spec nil nil JetBrains\ Mono nil nil nil nil nil 16 nil nil nil nil> and the desired font was not used in the emacs session. (With the above configuration, when starting doom emacs, I got the same error, which aborted the starting up the emacs session.) I checked my \~/.font directory, there are many font files that may match the specification. Furthermore, this problem only occur with certain unknown packages' upgrade, as the configuration used to work before the upgrade. Here are the fonts relevant that are available. ls -lt ~/.fonts/JetBrainsMono* (base) -rwxrwxrwx 1 yshen yshen 68064 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-Thin.woff2* -rwxrwxrwx 1 yshen yshen 71180 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-ThinItalic.woff2* -rwxrwxrwx 1 yshen yshen 74088 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-SemiBoldItalic.woff2* -rwxrwxrwx 1 yshen yshen 70820 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-SemiBold.woff2* -rwxrwxrwx 1 yshen yshen 69440 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-Regular.woff2* -rwxrwxrwx 1 yshen yshen 70480 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-Medium.woff2* -rwxrwxrwx 1 yshen yshen 73704 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-MediumItalic.woff2* -rwxrwxrwx 1 yshen yshen 73552 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-LightItalic.woff2* -rwxrwxrwx 1 yshen yshen 72268 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-Italic.woff2* -rwxrwxrwx 1 yshen yshen 70416 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-Light.woff2* -rwxrwxrwx 1 yshen yshen 72520 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-ExtraLightItalic.woff2* -rwxrwxrwx 1 yshen yshen 73264 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-ExtraBoldItalic.woff2* -rwxrwxrwx 1 yshen yshen 69780 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-ExtraLight.woff2* -rwxrwxrwx 1 yshen yshen 70124 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-ExtraBold.woff2* -rwxrwxrwx 1 yshen yshen 73976 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-BoldItalic.woff2* -rwxrwxrwx 1 yshen yshen 71180 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-Bold.woff2* -rwxrwxrwx 1 yshen yshen 230248 Oct 22 2021 '/home/yshen/.fonts/JetBrainsMono[wght].ttf'* -rwxrwxrwx 1 yshen yshen 237112 Oct 22 2021 '/home/yshen/.fonts/JetBrainsMono-Italic[wght].ttf'* -rwxrwxrwx 1 yshen yshen 147448 Oct 22 2021 /home/yshen/.fonts/JetBrainsMonoNL-ThinItalic.ttf* -rwxrwxrwx 1 yshen yshen 143284 Oct 22 2021 /home/yshen/.fonts/JetBrainsMonoNL-Thin.ttf* -rwxrwxrwx 1 yshen yshen 149388 Oct 22 2021 /home/yshen/.fonts/JetBrainsMonoNL-SemiBoldItalic.ttf* -rwxrwxrwx 1 yshen yshen 145112 Oct 22 2021 /home/yshen/.fonts/JetBrainsMonoNL-SemiBold.ttf* -rwxrwxrwx 1 yshen yshen 144120 Oct 22 2021 /home/yshen/.fonts/JetBrainsMonoNL-Regular.ttf* -rwxrwxrwx 1 yshen yshen 148484 Oct 22 2021 /home/yshen/.fonts/JetBrainsMonoNL-MediumItalic.ttf* -rwxrwxrwx 1 yshen yshen 143920 Oct 22 2021 /home/yshen/.fonts/JetBrainsMonoNL-Medium.ttf* -rwxrwxrwx 1 yshen yshen 148596 Oct 22 2021 /home/yshen/.fonts/JetBrainsMonoNL-Italic.ttf* -rwxrwxrwx 1 yshen yshen 145560 Oct 22 2021 /home/yshen/.fonts/JetBrainsMonoNL-Light.ttf* -rwxrwxrwx 1 yshen yshen 149124 Oct 22 2021 /home/yshen/.fonts/JetBrainsMonoNL-LightItalic.ttf* -rwxrwxrwx 1 yshen yshen 147592 Oct 22 2021 /home/yshen/.fonts/JetBrainsMonoNL-ExtraLightItalic.ttf* -rwxrwxrwx 1 yshen yshen 144488 Oct 22 2021 /home/yshen/.fonts/JetBrainsMonoNL-ExtraLight.ttf* -rwxrwxrwx 1 yshen yshen 150672 Oct 22 2021 /home/yshen/.fonts/JetBrainsMonoNL-ExtraBoldItalic.ttf* -rwxrwxrwx 1 yshen yshen 149552 Oct 22 2021 /home/yshen/.fonts/JetBrainsMonoNL-BoldItalic.ttf* -rwxrwxrwx 1 yshen yshen 147236 Oct 22 2021 /home/yshen/.fonts/JetBrainsMonoNL-ExtraBold.ttf* -rwxrwxrwx 1 yshen yshen 206184 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-ThinItalic.ttf* -rwxrwxrwx 1 yshen yshen 145828 Oct 22 2021 /home/yshen/.fonts/JetBrainsMonoNL-Bold.ttf* -rwxrwxrwx 1 yshen yshen 202076 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-Thin.ttf* -rwxrwxrwx 1 yshen yshen 212844 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-SemiBoldItalic.ttf* -rwxrwxrwx 1 yshen yshen 209524 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-SemiBold.ttf* -rwxrwxrwx 1 yshen yshen 203952 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-Regular.ttf* -rwxrwxrwx 1 yshen yshen 204140 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-Medium.ttf* -rwxrwxrwx 1 yshen yshen 211020 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-MediumItalic.ttf* -rwxrwxrwx 1 yshen yshen 211428 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-LightItalic.ttf* -rwxrwxrwx 1 yshen yshen 205672 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-Light.ttf* -rwxrwxrwx 1 yshen yshen 211180 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-Italic.ttf* -rwxrwxrwx 1 yshen yshen 204132 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-ExtraLight.ttf* -rwxrwxrwx 1 yshen yshen 209508 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-ExtraLightItalic.ttf* -rwxrwxrwx 1 yshen yshen 210688 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-ExtraBold.ttf* -rwxrwxrwx 1 yshen yshen 214464 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-ExtraBoldItalic.ttf* -rwxrwxrwx 1 yshen yshen 212756 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-BoldItalic.ttf* -rwxrwxrwx 1 yshen yshen 210128 Oct 22 2021 /home/yshen/.fonts/JetBrainsMono-Bold.ttf*
kaushalmodi · 2022-06-17 16:40
If I remember correctly, the font look up needs to happen after the Emacs "gui phase" has started. I don't know how Doom does it, but I [do that in `focus-in-hook`](https://github.com/kaushalmodi/.emacs.d/blob/44b9e0c685f34aa2610b068d9ba288fd65a5504a/init.el#L375-L394).
hlissner · 2022-06-17 19:06
A font-not-available error is often an OS issue (font not installed properly or its name has been misspelled), but it's also possible that Emacs wasn't compiled with freetype support (e.g. if you installed a no-x version of Emacs). 1. To rule out installation, try `fc-list | grep JetBrain`. 2. To rule out misspellings, try `JetBrainsMono` (this is the name I use, but the precise family name can vary depending on how you got the font, the `fc-list` command above will help you find its real name). 3. To rule out build features, see the `features` section of `M-x doom/info` (or `$ bin/doom info`). Make sure `FREETYPE` and/or `LIBOTF` are present, at least. If it's missing, you need to reinstall/rebuild Emacs with those features.
Kefim_Wod · 2022-06-18 19:32
Have you tried `JetBrainsMono` instead of `JetBrains Mono`?