mirror of
https://github.com/doomemacs/doomemacs.git
synced 2026-03-25 07:40:37 -07:00
There's little reason for users to use these macros in their private configs over plain ol' `with-eval-after-load` and `use-package`, unless they're writing their own modules. It's my fault for signal boosting them in documentation and whenever I'm asked for help, because beginners now believe they are somehow required for Doom to work correctly (there are guides out there telling beginners that migrating to Doom involves replacing all instances of `with-eval-after-load` and `use-package` in their pre-existing configs with `after!` and `use-package!` -- which was never true). What's more, I plan to replace `use-package`, internally, so the `use-package!` macro won't exist for much longer.
138 lines
7 KiB
Org Mode
138 lines
7 KiB
Org Mode
#+title: :ui unicode
|
|
#+subtitle: Extended unicode support for various languages
|
|
#+created: June 08, 2020
|
|
#+since: 2.0.0
|
|
|
|
* Description :unfold:
|
|
This module extends Doom's ability to display non-English unicode. It is
|
|
primarily useful for non-English Emacs users, for whom Doom's built-in unicode
|
|
support in insufficient.
|
|
|
|
This module relies on the [[https://github.com/rolandwalker/unicode-fonts][unicode-fonts]] package. It tries to setup the default
|
|
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-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-symbol-font~.
|
|
- The cache will be stored and should not be regenerated unless font-related
|
|
configuration or the versions of relevant packages changes.
|
|
|
|
** Maintainers
|
|
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
|
|
|
|
** Module flags
|
|
/This module has no flags./
|
|
|
|
** Packages
|
|
- [[doom-package:unicode-fonts]]
|
|
|
|
** Hacks
|
|
/No hacks documented for this module./
|
|
|
|
** TODO Changelog
|
|
# This section will be machine generated. Don't edit it by hand.
|
|
/This module does not have a changelog yet./
|
|
|
|
* Installation
|
|
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
|
|
|
|
/This module has no external requirements./
|
|
|
|
* TODO Usage
|
|
#+begin_quote
|
|
This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
|
|
#+end_quote
|
|
|
|
* TODO Configuration
|
|
#+begin_quote
|
|
/This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
|
|
#+end_quote
|
|
|
|
The first font that will be analyzed to see if it contains the glyphs of
|
|
non-latin characters will be ~doom-symbol-font~:
|
|
#+begin_src emacs-lisp
|
|
;; in $DOOMDIR/config.el
|
|
(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-symbol-font doom-font)
|
|
#+end_src
|
|
|
|
If your font does not provide some glyphs, this package will try its best to
|
|
find another font that does.
|
|
|
|
** Getting fonts with good coverage
|
|
A list of fonts with good unicode coverage can be found on the page of the
|
|
[[https://github.com/rolandwalker/unicode-fonts#minimum-useful-fonts][unicode-fonts]] package.
|
|
|
|
** Advanced configuration
|
|
Consult the [[https://github.com/rolandwalker/unicode-fonts][unicode-fonts]] package documentation for a description of more
|
|
advanced configuration. The configuration should be placed, as usual, in
|
|
=$DOOMDIR/config.el= wrapped in an ~(with-eval-after-load 'unicode-fonts)~ block.
|
|
The variable ~unicode-fonts-blocks~ contains a list of all unicode block names and
|
|
their character ranges. The default fonts to search for glyphs are in the
|
|
variable ~unicode-fonts-block-font-mapping~.
|
|
|
|
If you want to use the font =Symbola= for =Miscellaneous Symbols= by default
|
|
use:
|
|
#+begin_src emacs-lisp
|
|
;; in $DOOMDIR/config.el
|
|
(with-eval-after-load 'unicode-fonts
|
|
(push "Symbola" (cadr (assoc "Miscellaneous Symbols" unicode-fonts-block-font-mapping))))
|
|
#+end_src
|
|
|
|
If you want to redefine several blocks an efficient way would be:
|
|
#+begin_src emacs-lisp
|
|
(with-eval-after-load 'unicode-fonts
|
|
(dolist (unicode-block '("Mathematical Alphanumeric Symbols"
|
|
"Mathematical Operators"
|
|
"Miscellaneous Mathematical Symbols-A"
|
|
"Miscellaneous Mathematical Symbols-B"
|
|
"Miscellaneous Symbols"
|
|
"Miscellaneous Symbols and Arrows"
|
|
"Miscellaneous Symbols and Pictographs"))
|
|
(push "DejaVu Math TeX Gyre" (cadr (assoc unicode-block unicode-fonts-block-font-mapping)))))
|
|
#+end_src
|
|
|
|
You can find a list of fonts available to emacs using ~M-x counsel-fonts~.
|
|
|
|
* Troubleshooting
|
|
[[doom-report:][Report an issue?]]
|
|
|
|
** TODO Emacs daemon mode ([[doom-ref:][#3328]])
|
|
This module may fail to setup fonts when emacs is run in a daemon session.
|
|
|
|
** Common error: ~void-variable \.\.\.~ ([[doom-ref:][#7164]])
|
|
Users for this module may see the error similar to:
|
|
|
|
#+begin_src
|
|
Debugger entered--Lisp error: (void-variable \.\.\.)
|
|
(progn (set-fontset-font "fontset-default" '(64256 . 64335) (font-spec :name "Arial Unicode MS:" :registry "iso10646-1")) (set-fontset-font "fontset-default" '(65856 . 65935) (font-spec :name "Apple Symbols:" :registry "iso10646-1")) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Courier New:" :registry "iso10646-1")) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Geeza Pro:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Baghdad:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Damascus:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Al Bayan:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Arial Unicode MS:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Nadeem:" :registry "iso10646-1") nil 'append) \.\.\.)
|
|
eval((progn (set-fontset-font "fontset-default" '(64256 . 64335) (font-spec :name "Arial Unicode MS:" :registry "iso10646-1")) (set-fontset-font "fontset-default" '(65856 . 65935) (font-spec :name "Apple Symbols:" :registry "iso10646-1")) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Courier New:" :registry "iso10646-1")) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Geeza Pro:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Baghdad:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Damascus:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Al Bayan:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Arial Unicode MS:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Nadeem:" :registry "iso10646-1") nil 'append) \.\.\.))
|
|
unicode-fonts--setup-1("fontset-default" nil)
|
|
unicode-fonts-setup()
|
|
#+end_src
|
|
|
|
This is a known issue with an unidentified cause. See
|
|
[[doom-ref:][rolandwalker/unicode-fonts#36]]. A workaround is to delete your
|
|
unicode-fonts cache and restart Emacs:
|
|
#+begin_src bash
|
|
# $EMACSDIR == where you cloned Doom Emacs
|
|
rm -f $EMACSDIR/.local/cache/pcache/unicode-fonts
|
|
#+end_src
|
|
|
|
* Frequently asked questions
|
|
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
|
|
|
|
* TODO Appendix
|
|
#+begin_quote
|
|
This module has no appendix yet. [[doom-contrib-module:][Write one?]]
|
|
#+end_quote
|