refactor: doom-unicode-font -> doom-symbol-font

No font supports all of Unicode or anywhere near it. It’s not even
really possible with current font formats. Therefore, rename
`doom-unicode-font` to `doom-symbol-font`. Only set it as a fallback for
characters in the `symbol` and `mathematical` scripts.
This commit is contained in:
Liam Hupfer 2023-09-24 21:39:01 -05:00 committed by Yann Esposito (Yogsototh)
parent 33d0fe9ab1
commit 0c6971a400
Signed by untrusted user who does not match committer: yogsototh
GPG key ID: 7B19A4C650D59646
8 changed files with 30 additions and 28 deletions

View file

@ -248,8 +248,7 @@ Doom exposes a couple variables for setting fonts. They are:
- [[var:doom-variable-pitch-font]]: used for non-monospace fonts (e.g. when using
variable-pitch-mode or mixed-pitch-mode). Popular for text modes, like Org or
Markdown.
- [[var:doom-unicode-font]]: used for rendering unicode glyphs. Emacs defaults to
Symbola. It is ignored if the [[doom-module::ui unicode]] module is enabled.
- [[var:doom-symbol-font]]: used for rendering symbols.
- [[var:doom-serif-font]]: the sans-serif font to use wherever the [[face:fixed-pitch-serif]]
face is used.
- [[var:doom-big-font]]: the large font to use when [[fn:doom-big-font-mode]] is active.
@ -267,7 +266,7 @@ For example:
;; in $DOOMDIR/config.el
(setq doom-font (font-spec :family "JetBrainsMono" :size 12 :weight 'light)
doom-variable-pitch-font (font-spec :family "DejaVu Sans" :size 13)
doom-unicode-font (font-spec :family "Symbola")
doom-symbol-font (font-spec :family "JuliaMono")
doom-big-font (font-spec :family "JetBrainsMono" :size 24))
#+end_src
@ -524,7 +523,7 @@ Here are a few common causes for random crashes:
- Some fonts cause Emacs to crash when they lack support for a particular glyph
(typically symbols). Try changing your font by changing ~doom-font~ or
~doom-unicode-font~.
~doom-symbol-font~.
- Ligatures can cause Emacs to crash. Try a different [[doom-module::ui ligatures +fira][ligature font]] or disable
the [[doom-module::ui ligatures]] module altogether.

View file

@ -36,14 +36,16 @@ Must be a `font-spec', a font object, an XFT font string, or an XLFD string. See
An omitted font size means to inherit `doom-font''s size.")
(defvar doom-unicode-font nil
"Fallback font for Unicode glyphs.
(defvar doom-symbol-font nil
"Fallback font for symbols.
Must be a `font-spec', a font object, an XFT font string, or an XLFD string. See
`doom-font' for examples. Emacs defaults to Symbola.
WARNING: if you specify a size for this font it will hard-lock any usage of this
font to that size. It's rarely a good idea to do so!")
(define-obsolete-variable-alias 'doom-unicode-font 'doom-symbol-font "3.0.0")
(defvar doom-emoji-fallback-font-families
'("Apple Color Emoji"
"Segoe UI Emoji"
@ -525,11 +527,13 @@ windows, switch to `doom-fallback-buffer'. Otherwise, delegate to original
(when (fboundp 'set-fontset-font)
(let ((fn (doom-rpartial #'member (font-family-list))))
(when-let (font (cl-find-if fn doom-symbol-fallback-font-families))
(set-fontset-font t 'symbol font))
(dolist (script '(symbol mathematical))
(set-fontset-font t script font)))
(when-let (font (cl-find-if fn doom-emoji-fallback-font-families))
(set-fontset-font t 'emoji font))
(when doom-unicode-font
(set-fontset-font t 'unicode doom-unicode-font)))
(set-fontset-font t 'emoji font)))
(when doom-symbol-font
(dolist (script '(symbol mathematical))
(set-fontset-font t script doom-symbol-font)))
;; Nerd Fonts use these Private Use Areas
(dolist (range '((#xe000 . #xf8ff) (#xf0000 . #xfffff)))
(set-fontset-font t range "Symbols Nerd Font Mono")))

View file

@ -1417,12 +1417,12 @@ emacs fontset to cover as many unicode glyphs as possible by scanning all
available glyphs from all available fonts.
When this module is enabled:
- Emacs will prefer to use the ~doom-unicode-font~ font to display non-latin
- Emacs will prefer to use the ~doom-symbol-font~ font to display non-latin
glyphs if it provides coverage for them.
- The first time you run Emacs a unicode cache will be generated -- this will
take a while!
- The cache will be regenerated every time Emacs is made aware of new fonts or
you change the font configuration e.g. by modifying ~doom-unicode-font~.
you change the font configuration e.g. by modifying ~doom-symbol-font~.
- The cache will be stored and should not be regenerated unless font-related
configuration or the versions of relevant packages changes.

View file

@ -71,13 +71,13 @@ core/core-ui.el has four relevant variables:
- ~doom-big-font~ :: the font to use when ~doom-big-font-mode~ is enabled.
- ~doom-variable-pitch-font~ :: the font to use when ~variable-pitch-mode~ is active
(or where the ~variable-pitch~ face is used).
- ~doom-unicode-font~ :: the font used to display unicode symbols. This is
- ~doom-symbol-font~ :: the font used to display unicode symbols. This is
ignored if the [[doom-module::ui unicode]] module is enabled.
#+begin_src emacs-lisp
(setq doom-font (font-spec :family "Fira Mono" :size 12)
doom-variable-pitch-font (font-spec :family "Fira Sans")
doom-unicode-font (font-spec :family "DejaVu Sans Mono")
doom-symbol-font (font-spec :family "JuliaMono")
doom-big-font (font-spec :family "Fira Mono" :size 19))
#+end_src

View file

@ -247,10 +247,9 @@ happen in all modes, you can use
** Some symbols are not rendering correctly
This can usually be fixed by doing one of the following:
- Make sure Symbola (the font) is installed on your system.
- Otherwise, change [[var:doom-unicode-font]] (set to Symbola by default).
- Disable the [[doom-module::ui unicode]] module. It not only overrides [[var:doom-unicode-font]], but
should only be used as a last resort.
- Set [[var:doom-symbol-font]].
- Disable the [[doom-module::ui unicode]] module. It overrides [[var:doom-symbol-font]]
and should only be used as a last resort.
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]

View file

@ -13,12 +13,12 @@ emacs fontset to cover as many unicode glyphs as possible by scanning all
available glyphs from all available fonts.
When this module is enabled:
- Emacs will prefer to use the ~doom-unicode-font~ font to display non-latin
- Emacs will prefer to use the ~doom-symbol-font~ font to display non-latin
glyphs if it provides coverage for them.
- The first time you run Emacs a unicode cache will be generated -- this will
take a while!
- The cache will be regenerated every time Emacs is made aware of new fonts or
you change the font configuration e.g. by modifying ~doom-unicode-font~.
you change the font configuration e.g. by modifying ~doom-symbol-font~.
- The cache will be stored and should not be regenerated unless font-related
configuration or the versions of relevant packages changes.
@ -54,16 +54,16 @@ When this module is enabled:
#+end_quote
The first font that will be analyzed to see if it contains the glyphs of
non-latin characters will be ~doom-unicode-font~:
non-latin characters will be ~doom-symbol-font~:
#+begin_src emacs-lisp
;; in $DOOMDIR/config.el
(setq doom-unicode-font (font-spec :family "Fira Mono"))
(setq doom-symbol-font (font-spec :family "JuliaMono"))
#+end_src
If your ~doom-font~ provides good unicode coverage use:
#+begin_src emacs-lisp
;; in $DOOMDIR/config.el
(setq doom-unicode-font doom-font)
(setq doom-symbol-font doom-font)
#+end_src
If your font does not provide some glyphs, this package will try its best to

View file

@ -12,14 +12,14 @@ necessary."
(defun +unicode-setup-fonts-h (&optional frame)
"Initialize `unicode-fonts', if in a GUI session.
If doom-unicode-font is set, add it as preferred font for all unicode blocks."
If doom-symbol-font is set, add it as a preferred font for all Unicode blocks."
(when (and frame (display-multi-font-p frame))
(with-selected-frame frame
(require 'unicode-fonts)
(when doom-unicode-font
(let ((doom-unicode-font-family (plist-get (font-face-attributes doom-unicode-font) :family)))
(when doom-symbol-font
(let ((doom-symbol-font-family (plist-get (font-face-attributes doom-symbol-font) :family)))
(dolist (unicode-block unicode-fonts-block-font-mapping)
(push doom-unicode-font-family (cadr unicode-block)))))
(push doom-symbol-font-family (cadr unicode-block)))))
;; NOTE: will impact startup time on first run
(let (inhibit-redisplay inhibit-message)
(unicode-fonts-setup)))))

View file

@ -15,7 +15,7 @@
;; - `doom-variable-pitch-font' -- a non-monospace font (where applicable)
;; - `doom-big-font' -- used for `doom-big-font-mode'; use this for
;; presentations or streaming.
;; - `doom-unicode-font' -- for unicode glyphs
;; - `doom-symbol-font' -- for symbols
;; - `doom-serif-font' -- for the `fixed-pitch-serif' face
;;
;; See 'C-h v doom-font' for documentation and more examples of what they