#+TITLE: unicode-fonts layer

#+TAGS: font|layer

* Table of Contents                     :TOC_5_gh:noexport:
- [[#description][Description]]
  - [[#features][Features:]]
- [[#install][Install]]
- [[#ligature-fonts][Ligature Fonts]]

* Description
This layer adds support for [[https://github.com/rolandwalker/unicode-fonts][unicode-fonts]] package. It is recommended to
install the fonts listed in the [[https://github.com/rolandwalker/unicode-fonts#quickstart][Quickstart]] section of the unicode-fonts README.

** Features:
- Display unicode glyphs using the best available font.
- Easily override glyphs or sections of glyphs.
- Display color emoji on both the macOS port version of Emacs and emacs-plus (with
  =unicode-fonts-force-multi-color-on-mac= set to non nil).
- Enable support for font ligature in Emacs 27 + via [[https://github.com/mickeynp/ligature.el][ligatures.el]].

* Install
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
add =unicode-fonts= to the existing =dotspacemacs-configuration-layers= list in this
file.

If using [[https://github.com/d12frosted/homebrew-emacs-plus/][emacs-plus]], you can set =unicode-fonts-force-multi-color-on-mac= to
enable color emoji.

#+BEGIN_SRC elisp
  (unicode-fonts :variables unicode-fonts-force-multi-color-on-mac t)
#+END_SRC

If you want ligature support Emacs must be built with =Harfbuzz= and a ligature
font must be installed and configured you can see the [[https://github.com/mickeynp/ligature.el#compatibility-and-version-requirements][upstream]] docs for a full
list of requirements. By default this is not enabled you can enable it with
=unicode-fonts-enable-ligatures=.

#+BEGIN_SRC elisp
  (unicode-fonts :variables unicode-fonts-enable-ligatures t)
#+END_SRC

By default ligatures will be enabled in all programing modes.
You can enable ligatures for specific modes with
=unicode-fonts-ligature-modes= variable.

#+BEGIN_SRC elisp
  (unicode-fonts :variables unicode-fonts-ligature-modes '(php-mode js-mode))
#+END_SRC

To enable only for text modes you can use =text-mode=

#+BEGIN_SRC elisp
  (unicode-fonts :variables unicode-fonts-ligature-modes '(text-mode))
#+END_SRC

To configure the ligature set that gets used with your font there is a
=unicode-fonts-ligature-set= variable. To only enable the ligatures in
=if= statements you can limit the =unicode-fonts-ligature-set=

#+BEGIN_SRC elisp
  (unicode-fonts :variables unicode-fonts-ligature-set '("==" "===" "!=" "!==" "||" "&&"))
#+END_SRC

* Ligature Fonts
- [[https://github.com/tonsky/FiraCode][Fira Code]]
- [[https://github.com/microsoft/cascadia-code][Cascadia Code]]
- [[https://github.com/be5invis/Iosevka/][Iosevka]]
