GithubHelp home page GithubHelp logo

unicode-fonts's Introduction

Build Status

unicode-fonts

Configure Unicode fonts for Emacs.

Using the Native Mac backend

Quickstart

Testing

Keystrokes Notes
C-h h same as M-x view-hello-file
M-x list-charset-chars RET unicode-bmp RET search for eg 210x
M-x list-charset-chars RET unicode-smp RET if your display backend supports astral chars
M-x unicode-fonts-debug-insert-block RET Mathematical_Operators RET

Customization

M-x customize-group RET unicode-fonts RET

Overview

Emacs maintains font mappings on a per-glyph basis, meaning that multiple fonts are used at the same time (transparently) to display any character for which you have a font. Furthermore, Emacs does this out of the box.

However, font mappings via fontsets are a bit difficult to configure. In addition, the default setup does not always pick the most legible fonts. As the manual warns, the choice of font actually displayed for a non-ASCII character is "somewhat random".

The Unicode standard provides a way to organize font mappings: it divides character ranges into logical groups called "blocks". This library configures Emacs in a Unicode-friendly way by providing mappings from

each Unicode block  ---to--->   a font with good coverage

and makes the settings available via the customization interface.

This library provides font mappings for 233 of the 255 blocks in the Unicode 8.0 standard which are public and have displayable characters. It assumes that 6 Latin blocks are covered by the default font. 16/255 blocks are not mapped to any known font.

To use unicode-fonts, place the unicode-fonts.el file somewhere Emacs can find it, and add the following to your ~/.emacs file:

(require 'unicode-fonts)
(unicode-fonts-setup)

See important notes about startup speed below.

Minimum Useful Fonts

To gain any benefit from the library, you must have fonts with good Unicode support installed on your system. If you are running a recent version of OS X or Microsoft Windows, you already own some good multi-lingual fonts, though you would do very well to download and install the six items below:

From https://dejavu-fonts.github.io/Download.html

DejaVu Sans, DejaVu Sans Mono

From http://www.quivira-font.com/downloads.php

Quivira

From https://dn-works.com/wp-content/uploads/2020/UFAS-Fonts/Symbola.zip

Symbola

From http://www.google.com/get/noto/

Noto Sans, Noto Sans Symbols

It is also recommended to remove GNU Unifont from your system. Unifont is very useful for debugging, but not useful for reading.

Startup Speed

The default options favor correctness and completeness over speed, and can add many seconds to initial startup time in GUI mode.

However, when possible a font cache is kept between sessions. If you have persistent-soft.el installed, when you start Emacs the second time, the startup cost should be negligible.

The disk cache will be rebuilt during Emacs startup whenever a font is added or removed, or any relevant configuration variables are changed. To increase the speed of occasionally building the disk cache, you may use the customization interface to remove fonts from unicode-fonts-block-font-mapping which are not present on your system.

Unmapped Blocks

On the assumption that an extended Latin font such as Monaco, Consolas, or DejaVu Sans Mono is already being used for the default face, no separate mappings are provided for the following Unicode blocks:

Basic Latin
Latin Extended Additional
Latin Extended-A
Latin Extended-B
Latin-1 Supplement
Spacing Modifier Letters

though some of these remain configurable via customize.

Emoji

Color Emoji are enabled by default when using the Native Mac port on OS X. This can be disabled by customizing each relevant mapping, or by turning off all multicolor glyphs here:

M-x customize-variable RET unicode-fonts-skip-font-groups RET

Bugs

Calling set-fontset-font can easily crash Emacs. There is a workaround, but it may not be sufficient on all platforms. Tested on Cocoa Emacs, Native Mac Emacs, X11/XQuartz, MS Windows XP.

Widths of alternate fonts do not behave as expected on MS Windows. For example, DejaVu Sans Mono box-drawing characters may use a different width than the default font.

Free International and Symbol Fonts

Free fonts recognized by this package may be downloaded from the following locations. For any language, it is increasingly likely that Noto Sans provides coverage:

From http://www.google.com/get/noto/

Noto Sans and friends         ; 181 Unicode blocks and counting; sole
                              ; source for these blocks:
                              ;
                              ;   Bamum / Bamum Supplement / Kaithi
                              ;   Mandaic / Meetei Mayek Extensions
                              ;   Sundanese Supplement
                              ;
                              ; Also a good source for recently-added
                              ; glyphs such as "Turkish Lira Sign".

From http://scripts.sil.org/cms/scripts/page.php?item_id=CharisSIL_download
or http://scripts.sil.org/cms/scripts/page.php?item_id=DoulosSIL_download

Charis SIL or Doulos SIL      ; Extended European and diacritics

From http://scripts.sil.org/cms/scripts/page.php?item_id=Gentium_download

Gentium Plus                  ; Greek

From http://users.teilar.gr/~g1951d/ ; NOTE: site is down as of July 2015

Aegean, Aegyptus, Akkadian    ; Ancient languages
Analecta                      ; Ancient languages, Deseret
Anatolian                     ; Ancient languages
Musica                        ; Musical Symbols
Nilus                         ; Ancient languages

From http://www.wazu.jp/gallery/views/View_MPH2BDamase.html

MPH 2B Damase                 ; Arabic, Armenian, Buginese, Cherokee, Georgian,
                              ; Glagolitic, Hanunoo, Kharoshthi, Limbu, Osmanya,
                              ; Shavian, Syloti Nagri, Tai Le, Thaana

From http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=NamdhinggoSIL

Namdhinggo SIL                ; Limbu

From http://wenq.org/wqy2/index.cgi?FontGuide

WenQuanYi Zen Hei             ; CJK (Simplified Chinese)

From http://babelstone.co.uk/Fonts/

BabelStone Han                ; CJK (Simplified Chinese)
BabelStone Phags-pa Book      ; Phags-pa
BabelStone Modern             ; Tags / Specials / Selectors

From http://vietunicode.sourceforge.net/fonts/fonts_hannom.html

HAN NOM A, HAN NOM B          ; CJK (Nôm Chinese)

From http://kldp.net/projects/unfonts/

Un Batang                     ; CJK (Hangul)

From http://sourceforge.jp/projects/hanazono-font/releases/

Hana Min A, Hana Min B        ; CJK (Japanese)

From http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=SILYi_home

Nuosu SIL                     ; CJK (Yi)

From http://www.daicing.com/manchu/index.php?page=fonts-downloads

Daicing Xiaokai               ; Mongolian

From http://www.library.gov.bt/IT/fonts.html

Jomolhari                     ; Tibetan

From http://www.thlib.org/tools/scripts/wiki/tibetan%20machine%20uni.html

Tibetan Machine Uni           ; Tibetan

From http://scripts.sil.org/cms/scripts/page.php?item_id=Padauk

Padauk                        ; Myanmar

From https://code.google.com/p/myanmar3source/downloads/list

Myanmar3                      ; Myanmar

From http://www.yunghkio.com/unicode/

Yunghkio                      ; Myanmar

From https://code.google.com/p/tharlon-font/downloads/list

TharLon                       ; Myanmar

From http://sourceforge.net/projects/prahita/files/Myanmar%20Unicode%20Fonts/MasterpieceUniSans/

Masterpiece Uni Sans          ; Myanmar

From http://sarovar.org/projects/samyak/

Samyak                        ; Gujarati, Malayalam, Oriya, Tamil

From http://software.sil.org/annapurna/download/

Annapurna SIL                 ; Devanagari

From http://guca.sourceforge.net/typography/fonts/anmoluni/

AnmolUni                      ; Gurmukhi

From http://brahmi.sourceforge.net/downloads2.html

Kedage                        ; Kannada

From http://www.omicronlab.com/bangla-fonts.html

Mukti Narrow                  ; Bengali

From http://www.kamban.com.au/downloads.html

Akshar Unicode                ; Sinhala

From http://tabish.freeshell.org/eeyek/download.html

Eeyek Unicode                 ; Meetei Mayek

From http://scripts.sil.org/CMS/scripts/page.php?&item_id=Mondulkiri

Khmer Mondulkiri              ; Khmer

From http://www.laoscript.net/downloads/

Saysettha MX                  ; Lao

From http://www.geocities.jp/simsheart_alif/taithamunicode.html

Lanna Alif                    ; Tai Tham

From http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=DaiBannaSIL

Dai Banna SIL                 ; New Tai Lue

From http://scripts.sil.org/cms/scripts/page.php?item_id=TaiHeritage

Tai Heritage Pro              ; Tai Viet

From http://sabilulungan.org/aksara/

Sundanese Unicode             ; Sundanese

From http://www.amirifont.org/

Amiri                         ; Arabic (Naskh)

From http://scripts.sil.org/cms/scripts/page.php?item_id=Scheherazade

Scheherazade                  ; Arabic (Naskh)

From http://www.farsiweb.ir/wiki/Persian_fonts

Koodak                        ; Arabic (Farsi)

From http://openfontlibrary.org/font/ahuramazda/

Ahuramzda                     ; Avestan

From http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=AbyssinicaSIL

Abyssinica SIL                ; Ethiopic

From http://www.bethmardutho.org/index.php/resources/fonts.html

Estrangelo Nisibin            ; Syriac

From http://www.evertype.com/fonts/nko/

Conakry                       ; N'ko

From http://uni.hilledu.com/download-ribenguni

Ribeng                        ; Chakma

From http://www.virtualvinodh.com/downloads

Adinatha Tamil Brahmi         ; Brahmi

From http://ftp.gnu.org/gnu/freefont/

FreeMono, etc (FreeFont)      ; Kayah Li (and others)

From http://ulikozok.com/aksara-batak/batak-font/

Batak-Unicode                 ; Batak

From http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=Mingzat

Mingzat                       ; Lepcha

From http://phjamr.github.io/lisu.html#install
http://phjamr.github.io/miao.html#install
http://phjamr.github.io/mro.html#install

Lisu Unicode                  ; Lisu
Miao Unicode                  ; Miao
Mro Unicode                   ; Mro

From http://scholarsfonts.net/cardofnt.html

Cardo                         ; Historical Languages

From http://sourceforge.net/projects/junicode/files/junicode/

Junicode                      ; Historical Languages

From http://www.evertype.com/fonts/vai/

Dukor                         ; Vai

From http://sourceforge.net/projects/zhmono/

ZH Mono                       ; Inscriptional Pahlavi / Parthian

From http://culmus.sourceforge.net/ancient/index.html

Aramaic Imperial Yeb          ; Imperial Aramaic

From http://www.languagegeek.com/font/fontdownload.html

Aboriginal Sans               ; Aboriginal Languages
Aboriginal Serif

From http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=EzraSIL_Home

Ezra SIL                      ; Hebrew

From http://www.evertype.com/fonts/coptic/

Antinoou                      ; Coptic / General Punctuation

From http://apagreekkeys.org/NAUdownload.html

New Athena Unicode            ; Ancient Languages / Symbols

From http://markmail.org/thread/g57mk4sbdycblxds

KhojkiUnicodeOT               ; Khojki

From https://github.com/andjc/ahom-unicode/tree/master/font

AhomUnicode                   ; Ahom

From https://github.com/MihailJP/oldsindhi/releases

OldSindhi                     ; Khudawadi

From https://github.com/MihailJP/Muktamsiddham/releases

MuktamsiddhamG                ; Siddham  (note trailing "G" on font name)

From https://github.com/MihailJP/MarathiCursive/releases

MarathiCursiveG               ; Modi  (note trailing "G" on font name)

From https://github.com/OldHungarian/old-hungarian-font/releases

OldHungarian                  ; Old Hungarian

From http://tutohtml.perso.sfr.fr/unicode.html

Albanian                      ; Elbasan / Takri / Sharada

From https://github.com/enabling-languages/cham-unicode/tree/master/fonts/ttf

Cham OI_Tangin                ; Cham

From https://ctan.org/tex-archive/fonts/Asana-Math?lang=en

Asana Math                    ; Mathematical Symbols

Non-free Fonts

Many non-free fonts are referenced by the default settings. However, free alternatives are also given wherever possible, and patches are of course accepted to improve every case.

Chinese and Arabic Scripts

If you are using a language written in Chinese or Arabic script, try customizing unicode-fonts-skip-font-groups to control which script you see, and send a friendly bug report.

Unicode "Scripts"

Unicode also defines the notion of a "script" as a higher-level abstraction which is independent of "blocks". Modern fonts can report their script coverage, and Emacs may also access that information. However, this library ignores scripts in favor of blocks and glyphs.

Compatibility and Requirements

GNU Emacs version 23.3 and higher : yes
GNU Emacs version 22.3 and lower  : no

Requires fonts-utils.el, ucs-utils.el

Uses if present: persistent-soft.el (Recommended)

unicode-fonts's People

Contributors

barrettj12 avatar ksinkar avatar rolandwalker avatar wyuenho avatar yelinkyaw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

unicode-fonts's Issues

Initializing under daemon?

The readme says use (unicode-fonts-setup) in the init file. When starting Emacs as daemon, this is executed but has no effect. Afterwards, running an emacsclient -c . opens an X frame, with fonts at their defaults.

What do I need to hook so that (unicode-fonts-setup) is run for X frames created for emacsclient?

Cannot change certain font's size after unicode-font-setup

    (unicode-fonts-setup)
    (dolist (charset '(kana han cjk-misc bopomofo))
      (set-fontset-font (frame-parameter nil 'font) charset
                        (font-spec :family "WenQuanYi Zen Hei" :size 13)))

I'm trying to decrease the font size of certain charset. But the above elisp doesn't work.

Suggestions to drastically simplify this package

All this package does is to override Emacs' font backends to provide a better font fallback behavior, but right now, every block especially the CJK blocks are littered with a mix of serif and sans-serif fonts, and some old optional system fonts that require additional downloads either from the OS font manager or manually from the internet, and all in different orderings. This makes the out of the box experience not much better than the default Emacs behavior. The font choices are just as random for each block.

The reason seems to be the unicode-fonts-known-font-characteristics variable is just a dump of old Windows and macOS system font lists. In addition, a lot of the fonts like the brush, cursive, pen and Kai styles are purely stylistic and not designed to provide good Unicode coverage or used for plaintext display, but somehow made into the block mappings.

In the course of fixing this, I've discovered that with the exception of a couple of symbol blocks, a block only requires a couple of fonts to provide good coverage - a few from Windows, a few from macOS, Noto and maybe an exotic font purely designed for coverage for that block, so here's my suggestions for improvements to provide a better default experience:

  1. Drastically reduce the list of known fonts to the most basic serif and sans-serif default system fonts with good coverage and a couple of good fallbacks fonts for their respective blocks (i.e. Arial Unicode MS, MS JhengHei, PingFang, Noto*, Dejavu, Symbola etc.)
  2. Label each font with their typeface, and add 2 entries into unicode-fonts-skip-font-groups (serif and sans-serif, so the user can choose to filter out those that conflict with their default font typeface)
  3. Let the user to put unknown fonts in the block mapping without skipping, so we don't have keep maintaining the ever-expanding list of known fonts.
  4. Redo the entire list of block mappings to provide consistent ordering, sorted by (typeface, coverage)
  5. Maybe a different custom option per block so we don't get a massive dump of the entire block mapping into the custom file when the user just wants to remap one block.

What do you think?

don't update font cache if running remotely

I've notice that when running emacs over ssh with X forwarding the font cache gets rebuilt. I'm not sure why this is (e.g., is it updating to mach fonts available on the client?), but I would like to make it stop. I looked for a way to determine (in elisp) if emacs is running over ssh, but didn't turn anything up. I would appreciate any suggestions for preventing font cache updating when running over ssh.

Error on recent Emacs-29 build

With an Emacs-29 built from 45b16bfb496, I get the following error/backtrace when calling unicode-fonts-setup:

Debugger entered--Lisp error: (wrong-number-of-arguments #<subr puthash> 1)
  puthash(("Symbola" nil nil nil))
  font-utils-exists-p("Symbola" nil nil nil)
  unicode-fonts-font-exists-p("Symbola")
  cl-remove(nil ("Symbola" "Quivira") :if-not unicode-fonts-font-exists-p)
  cl-remove-if-not(unicode-fonts-font-exists-p ("Symbola" "Quivira"))
  unicode-fonts--generate-instructions("fontset-default")
  unicode-fonts--load-or-generate-instructions("fontset-default" nil)
  unicode-fonts--setup-1("fontset-default" nil)
  unicode-fonts-setup()

The "Symbola" font is installed.

Mappings ignored

Okay so this is gonna sound weird.

Unicode 9 has this 🤜 character (among others). It's in "Supplemental Symbols and Pictographs", with code x1F91C, in which you can also find 🤐

I installed Noto Emoji, which supports this character. I have my unicode-fonts-block-mappings setup like so for this block:

("Supplemental Symbols and Pictographs"
      ("Noto Emoji" "Noto Sans Symbols"))

I removed the symbola font from this mapping (in fact I hate symbola so much I replaced it everywhere with Noto Emoji and Noto Sans Symbols)

But even though, spacemacs displays 🤜 with no font (so I get this square representation of the code) and 🤐 with symbola.

Is it because the blocks are not the same in Unicode 8 and Unicode 9?

How would I go about supporting Unicode 9 ?

Startup cost with cache is not "negligible"

In the documentation:

[...] when you start Emacs the second time, the startup cost should be negligible.

For me, at least, it is not. Without the cache, running unicode-fonts-setup takes 68 seconds; with the cache it takes 24 seconds. This is a huge improvement, but it's still not something I can put into my init.el without thinking twice.

Issue #7 is probably related.

Is it possible to change certain font?

Hi, a great package, almost all symbols are shown correctly.

I used to use https://github.com/tumashu/chinese-fonts-setup to set up Chinese fonts.
However, it cannot set symbols correctly.

But when using unicode-fonts, symbols are all right but lack two features that the above package provided:

  1. The ability to change fonts.
  2. The correct width of alignment (1 Chinese char = 2 latin char)

Is there is way to do these two functions inside this package?

`(void-variable \.\.\.)`

void-variable error while calling (unicode-fonts-setup).

This happens on Emacs startup.

Very interestingly:

  • It only happens recently for unknown reason. (There's no Emacs upgrade or unicode-fonts package upgrade)
  • Even if I try to M-x unicode-fonts-setup, it may fail with the same error a few times before it succeed. It seems that the result of running this command is non-deterministic.

Below is the backtrace:

Debugger entered--Lisp error: (void-variable \.\.\.)
  (progn (set-fontset-font "fontset-default" nil (font-spec :name "Symbola:" :registry "iso10646-1")) (set-fontset-font "fontset-default" nil (font-spec :name "Quivira:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(65792 . 65855) (font-spec :name "Noto Sans Symbols:" :registry "iso10646-1")) (set-fontset-font "fontset-default" '(65792 . 65855) (font-spec :name "Symbola:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(65792 . 65855) (font-spec :name "Quivira:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(128768 . 128895) (font-spec :name "Noto Sans Symbols:" :registry "iso10646-1")) (set-fontset-font "fontset-default" '(128768 . 128895) (font-spec :name "Symbola:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(128768 . 128895) (font-spec :name "Quivira:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(64256 . 64335) (font-spec :name "DejaVu Sans:width=condensed:" :registry "iso10646-1")) \.\.\.)
  eval((progn (set-fontset-font "fontset-default" nil (font-spec :name "Symbola:" :registry "iso10646-1")) (set-fontset-font "fontset-default" nil (font-spec :name "Quivira:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(65792 . 65855) (font-spec :name "Noto Sans Symbols:" :registry "iso10646-1")) (set-fontset-font "fontset-default" '(65792 . 65855) (font-spec :name "Symbola:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(65792 . 65855) (font-spec :name "Quivira:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(128768 . 128895) (font-spec :name "Noto Sans Symbols:" :registry "iso10646-1")) (set-fontset-font "fontset-default" '(128768 . 128895) (font-spec :name "Symbola:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(128768 . 128895) (font-spec :name "Quivira:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(64256 . 64335) (font-spec :name "DejaVu Sans:width=condensed:" :registry "iso10646-1")) \.\.\.))(void-variable \.\.\.)
  unicode-fonts--setup-1("fontset-default" nil)
  unicode-fonts-setup()
  (display-graphic-p (unicode-fonts-setup))
  (if (display-graphic-p (unicode-fonts-setup)) (add-hook 'after-make-frame-functions #'unicode-fonts//setup-fonts))
  (progn (if (and (boundp 'unicode-fonts-force-multi-color-on-mac) unicode-fonts-force-multi-color-on-mac) (progn (warn "`unicode-fonts-force-multi-color-on-mac' is no lon..."))) (if (display-graphic-p (unicode-fonts-setup)) (add-hook 'after-make-frame-functions #'unicode-fonts//setup-fonts)) (run-hooks 'use-package--unicode-fonts--post-init-hook))
  (if (run-hook-with-args-until-failure 'use-package--unicode-fonts--pre-init-hook) (progn (if (and (boundp 'unicode-fonts-force-multi-color-on-mac) unicode-fonts-force-multi-color-on-mac) (progn (warn "`unicode-fonts-force-multi-color-on-mac' is no lon..."))) (if (display-graphic-p (unicode-fonts-setup)) (add-hook 'after-make-frame-functions #'unicode-fonts//setup-fonts)) (run-hooks 'use-package--unicode-fonts--post-init-hook)))
  (when (run-hook-with-args-until-failure 'use-package--unicode-fonts--pre-init-hook) (if (and (boundp 'unicode-fonts-force-multi-color-on-mac) unicode-fonts-force-multi-color-on-mac) (progn (warn "`unicode-fonts-force-multi-color-on-mac' is no lon..."))) (if (display-graphic-p (unicode-fonts-setup)) (add-hook 'after-make-frame-functions #'unicode-fonts//setup-fonts)) (run-hooks 'use-package--unicode-fonts--post-init-hook))
  (condition-case err (when (run-hook-with-args-until-failure 'use-package--unicode-fonts--pre-init-hook) (if (and (boundp 'unicode-fonts-force-multi-color-on-mac) unicode-fonts-force-multi-color-on-mac) (progn (warn "`unicode-fonts-force-multi-color-on-mac' is no lon..."))) (if (display-graphic-p (unicode-fonts-setup)) (add-hook 'after-make-frame-functions #'unicode-fonts//setup-fonts)) (run-hooks 'use-package--unicode-fonts--post-init-hook)) ((debug error) (funcall use-package--warning379 :init err)))
  (condition-case-unless-debug err (when (run-hook-with-args-until-failure 'use-package--unicode-fonts--pre-init-hook) (if (and (boundp 'unicode-fonts-force-multi-color-on-mac) unicode-fonts-force-multi-color-on-mac) (progn (warn "`unicode-fonts-force-multi-color-on-mac' is no lon..."))) (if (display-graphic-p (unicode-fonts-setup)) (add-hook 'after-make-frame-functions #'unicode-fonts//setup-fonts)) (run-hooks 'use-package--unicode-fonts--post-init-hook)) (error (funcall use-package--warning379 :init err)))
  (progn (condition-case-unless-debug err (when (run-hook-with-args-until-failure 'use-package--unicode-fonts--pre-init-hook) (if (and (boundp 'unicode-fonts-force-multi-color-on-mac) unicode-fonts-force-multi-color-on-mac) (progn (warn "`unicode-fonts-force-multi-color-on-mac' is no lon..."))) (if (display-graphic-p (unicode-fonts-setup)) (add-hook 'after-make-frame-functions #'unicode-fonts//setup-fonts)) (run-hooks 'use-package--unicode-fonts--post-init-hook)) (error (funcall use-package--warning379 :init err))) (let ((now (current-time))) (message "%s..." "Loading package unicode-fonts") (prog1 (if (not (require 'unicode-fonts nil t)) (display-warning 'use-package (format "Cannot load %s" 'unicode-fonts) :error) (let ((now (current-time))) (message "%s..." "Configuring package unicode-fonts") (prog1 (condition-case-unless-debug err (progn ... t) (error ...)) (let (...) (if ... ... ...))))) (let ((elapsed (float-time (time-subtract ... now)))) (if (> elapsed 0.1) (message "%s...done (%.3fs)" "Loading package unicode-fonts" elapsed) (message "%s...done" "Loading package unicode-fonts"))))))
  (condition-case err (progn (condition-case-unless-debug err (when (run-hook-with-args-until-failure 'use-package--unicode-fonts--pre-init-hook) (if (and (boundp 'unicode-fonts-force-multi-color-on-mac) unicode-fonts-force-multi-color-on-mac) (progn (warn "`unicode-fonts-force-multi-color-on-mac' is no lon..."))) (if (display-graphic-p (unicode-fonts-setup)) (add-hook 'after-make-frame-functions #'unicode-fonts//setup-fonts)) (run-hooks 'use-package--unicode-fonts--post-init-hook)) (error (funcall use-package--warning379 :init err))) (let ((now (current-time))) (message "%s..." "Loading package unicode-fonts") (prog1 (if (not (require 'unicode-fonts nil t)) (display-warning 'use-package (format "Cannot load %s" 'unicode-fonts) :error) (let ((now ...)) (message "%s..." "Configuring package unicode-fonts") (prog1 (condition-case-unless-debug err ... ...) (let ... ...)))) (let ((elapsed (float-time ...))) (if (> elapsed 0.1) (message "%s...done (%.3fs)" "Loading package unicode-fonts" elapsed) (message "%s...done" "Loading package unicode-fonts")))))) ((debug error) (funcall use-package--warning379 :catch err)))
  (condition-case-unless-debug err (progn (condition-case-unless-debug err (when (run-hook-with-args-until-failure 'use-package--unicode-fonts--pre-init-hook) (if (and (boundp 'unicode-fonts-force-multi-color-on-mac) unicode-fonts-force-multi-color-on-mac) (progn (warn "`unicode-fonts-force-multi-color-on-mac' is no lon..."))) (if (display-graphic-p (unicode-fonts-setup)) (add-hook 'after-make-frame-functions #'unicode-fonts//setup-fonts)) (run-hooks 'use-package--unicode-fonts--post-init-hook)) (error (funcall use-package--warning379 :init err))) (let ((now (current-time))) (message "%s..." "Loading package unicode-fonts") (prog1 (if (not (require 'unicode-fonts nil t)) (display-warning 'use-package (format "Cannot load %s" 'unicode-fonts) :error) (let ((now ...)) (message "%s..." "Configuring package unicode-fonts") (prog1 (condition-case-unless-debug err ... ...) (let ... ...)))) (let ((elapsed (float-time ...))) (if (> elapsed 0.1) (message "%s...done (%.3fs)" "Loading package unicode-fonts" elapsed) (message "%s...done" "Loading package unicode-fonts")))))) (error (funcall use-package--warning379 :catch err)))
  (progn (defvar use-package--warning379 #'(lambda (keyword err) (let ((msg (format "%s/%s: %s" ... keyword ...))) (display-warning 'use-package msg :error)))) (condition-case-unless-debug err (progn (condition-case-unless-debug err (when (run-hook-with-args-until-failure 'use-package--unicode-fonts--pre-init-hook) (if (and (boundp ...) unicode-fonts-force-multi-color-on-mac) (progn (warn "`unicode-fonts-force-multi-color-on-mac' is no lon..."))) (if (display-graphic-p (unicode-fonts-setup)) (add-hook 'after-make-frame-functions #'unicode-fonts//setup-fonts)) (run-hooks 'use-package--unicode-fonts--post-init-hook)) (error (funcall use-package--warning379 :init err))) (let ((now (current-time))) (message "%s..." "Loading package unicode-fonts") (prog1 (if (not (require ... nil t)) (display-warning 'use-package (format "Cannot load %s" ...) :error) (let (...) (message "%s..." "Configuring package unicode-fonts") (prog1 ... ...))) (let ((elapsed ...)) (if (> elapsed 0.1) (message "%s...done (%.3fs)" "Loading package unicode-fonts" elapsed) (message "%s...done" "Loading package unicode-fonts")))))) (error (funcall use-package--warning379 :catch err))))
  (use-package unicode-fonts :init (if (and (boundp 'unicode-fonts-force-multi-color-on-mac) unicode-fonts-force-multi-color-on-mac) (progn (warn "`unicode-fonts-force-multi-color-on-mac' is no lon..."))) (if (display-graphic-p (unicode-fonts-setup)) (add-hook 'after-make-frame-functions #'unicode-fonts//setup-fonts)))
  unicode-fonts/init-unicode-fonts()
  funcall(unicode-fonts/init-unicode-fonts)
  (let* ((pkg-name (eieio-oref pkg ':name)) (owner (car (eieio-oref pkg ':owners)))) (spacemacs-buffer/message (format "%S -> init (%S)..." pkg-name owner)) (funcall (intern (format "%S/init-%S" owner pkg-name))))
  configuration-layer//configure-package(#<cfgl-package cfgl-package-156ccf7af954>)
  mapc(configuration-layer//configure-package (#<cfgl-package cfgl-package-156ccf7b4f4c> #<cfgl-package cfgl-package-156ccf7b1e00> #<cfgl-package cfgl-package-156ccf7b1a78> #<cfgl-package cfgl-package-156ccf7b8480> #<cfgl-package cfgl-package-156ccf7b84a4> #<cfgl-package cfgl-package-156ccf7b63cc> #<cfgl-package cfgl-package-156ccf7b8ca8> #<cfgl-package cfgl-package-156ccf7ab4a0> #<cfgl-package cfgl-package-156ccf7b8ccc> #<cfgl-package cfgl-package-156ccf7b4f60> #<cfgl-package cfgl-package-156ccf7aac2c> #<cfgl-package cfgl-package-156ccf7ae5b4> #<cfgl-package cfgl-package-156ccf7ae0dc> #<cfgl-package cfgl-package-156ccf7b2628> #<cfgl-package cfgl-package-156ccf7af5a8> #<cfgl-package cfgl-package-156ccf7b22d8> #<cfgl-package cfgl-package-156ccf7b26d0> #<cfgl-package cfgl-package-156ccf7b84b8> #<cfgl-package cfgl-package-156ccf7b22c4> #<cfgl-package cfgl-package-156ccf7b4f84> #<cfgl-package cfgl-package-156ccf7b63e0> #<cfgl-package cfgl-package-156ccf7abc58> #<cfgl-package cfgl-package-156ccf7b4f98> #<cfgl-package cfgl-package-156ccf7a9bf0> #<cfgl-package cfgl-package-156ccf7b4fbc> #<cfgl-package cfgl-package-156ccf7b4ae4> #<cfgl-package cfgl-package-156ccf7ab024> #<cfgl-package cfgl-package-156ccf7ad110> #<cfgl-package cfgl-package-156ccf7ac864> #<cfgl-package cfgl-package-156ccf7b7fe0> #<cfgl-package cfgl-package-156ccf7ad134> #<cfgl-package cfgl-package-156ccf7b6404> #<cfgl-package cfgl-package-156ccf7aabd0> #<cfgl-package cfgl-package-156ccf7abc7c> #<cfgl-package cfgl-package-156ccf7a9400> #<cfgl-package cfgl-package-156ccf7b67a0> #<cfgl-package cfgl-package-156ccf7b4af8> #<cfgl-package cfgl-package-156ccf7af9d8> #<cfgl-package cfgl-package-156ccf7b2a7c> #<cfgl-package cfgl-package-156ccf7ab4c4> #<cfgl-package cfgl-package-156ccf7ae128> #<cfgl-package cfgl-package-156ccf7ad148> #<cfgl-package cfgl-package-156ccf7aabf4> #<cfgl-package cfgl-package-156ccf7ac480> #<cfgl-package cfgl-package-156ccf7ae114> #<cfgl-package cfgl-package-156ccf7b1e24> #<cfgl-package cfgl-package-156ccf7b1e5c> #<cfgl-package cfgl-package-156ccf7ae14c> #<cfgl-package cfgl-package-156ccf7ac878> #<cfgl-package cfgl-package-156ccf7ad8ec> ...))
  (let (packages-to-configure) (let ((--dolist-tail-- packages)) (while --dolist-tail-- (let ((pkg-name (car --dolist-tail--))) (let ((pkg (configuration-layer/get-package pkg-name))) (cond ((eieio-oref pkg ...) (spacemacs-buffer/message ...)) ((and ... ...) (spacemacs-buffer/message ...)) ((null ...) (spacemacs-buffer/message ...)) ((not ...) (spacemacs-buffer/message ...)) ((not ...) (spacemacs-buffer/message ...)) (t (let ... ...) (if ... nil ...) (cond ... ...)))) (setq --dolist-tail-- (cdr --dolist-tail--))))) (setq packages-to-configure (reverse packages-to-configure)) (mapc 'configuration-layer//configure-package packages-to-configure) (mapc 'configuration-layer//post-configure-package packages-to-configure))
  configuration-layer//configure-packages-2((abbrev ac-ispell ace-jump-helm-line ace-link ace-window add-node-modules-path aggressive-indent all-the-icons anaconda-mode ansi-colors arc-mode attrap auctex auctex-latexmk auth-source-pass auto-compile auto-complete auto-dictionary auto-highlight-symbol auto-yasnippet autorevert avy blacken bookmark browse-at-remote buffer-menu bug-reference buttercup cargo cc-mode ccls centered-cursor-mode clang-format clean-aindent-mode cmm-mode code-cells color-identifiers-mode column-enforce-mode comint common-lisp-snippets company company-anaconda company-auctex company-box company-c-headers company-cabal company-go company-math company-posframe company-quickhelp ...))
  configuration-layer//configure-packages((abbrev ac-ispell ace-jump-helm-line ace-link ace-window add-node-modules-path aggressive-indent all-the-icons anaconda-mode ansi-colors arc-mode async attrap auctex auctex-latexmk auth-source-pass auto-compile auto-complete auto-dictionary auto-highlight-symbol auto-yasnippet autorevert avy bind-key bind-map blacken bookmark browse-at-remote buffer-menu bug-reference buttercup cargo cc-mode ccls centered-cursor-mode clang-format clean-aindent-mode cmm-mode code-cells color-identifiers-mode column-enforce-mode comint common-lisp-snippets company company-anaconda company-auctex company-box company-c-headers company-cabal company-go ...))
  configuration-layer//load()
  (cond (changed-since-last-dump-p (configuration-layer//load) (if (spacemacs/emacs-with-pdumper-set-p) (progn (configuration-layer/message "Layer list has changed since last dump.") (configuration-layer//dump-emacs)))) (spacemacs-force-dump (configuration-layer//load) (if (spacemacs/emacs-with-pdumper-set-p) (progn (configuration-layer/message (concat "--force-dump passed on the command line or configu..." "been reloaded, forcing a redump.")) (configuration-layer//dump-emacs)))) ((spacemacs-is-dumping-p) (configuration-layer//load)) ((and (spacemacs/emacs-with-pdumper-set-p) (spacemacs-run-from-dump-p)) (configuration-layer/message "Running from a dumped file. Skipping the loading p...")) (t (configuration-layer//load) (if (spacemacs/emacs-with-pdumper-set-p) (progn (configuration-layer/message (concat "Layer list has not changed since last time. " "Skipping dumping process!"))))))
  configuration-layer/load()
  (let ((file-name-handler-alist nil)) (require 'core-spacemacs) (spacemacs/dump-restore-load-path) (configuration-layer/load-lock-file) (spacemacs/init) (configuration-layer/stable-elpa-init) (configuration-layer/load) (spacemacs-buffer/display-startup-note) (spacemacs/setup-startup-hook) (spacemacs/dump-eval-delayed-functions) (if (and dotspacemacs-enable-server (not (spacemacs-is-dumping-p))) (progn (require 'server) (if dotspacemacs-server-socket-dir (progn (setq server-socket-dir dotspacemacs-server-socket-dir))) (if (server-running-p) nil (message "Starting a server...") (server-start)))))
  (if (not (version<= spacemacs-emacs-min-version emacs-version)) (error (concat "Your version of Emacs (%s) is too old. " "Spacemacs requires Emacs version %s or above.") emacs-version spacemacs-emacs-min-version) (let ((file-name-handler-alist nil)) (require 'core-spacemacs) (spacemacs/dump-restore-load-path) (configuration-layer/load-lock-file) (spacemacs/init) (configuration-layer/stable-elpa-init) (configuration-layer/load) (spacemacs-buffer/display-startup-note) (spacemacs/setup-startup-hook) (spacemacs/dump-eval-delayed-functions) (if (and dotspacemacs-enable-server (not (spacemacs-is-dumping-p))) (progn (require 'server) (if dotspacemacs-server-socket-dir (progn (setq server-socket-dir dotspacemacs-server-socket-dir))) (if (server-running-p) nil (message "Starting a server...") (server-start))))))
  load-with-code-conversion("/home/lucius/.emacs.d/init.el" "/home/lucius/.emacs.d/init.el" t t)
  load("/home/lucius/.emacs.d/init" noerror nomessage)
  startup--load-user-init-file(#f(compiled-function () #<bytecode 0x4c9a6189c0281>) #f(compiled-function () #<bytecode -0x1f3c686ddc0cdc35>) t)
  command-line()
  normal-top-level()

How to find out why Emoticon block got mapped to Symbola?

After inserting GRINNING FACE with ucs-utils-ucs-insert in the scratch buffer, I moved my point to the smiley, and then did a M-x describe-char, it shows me the glyph came from mac-ct:-*-Symbola-normal-normal-semicondensed-*-12-*-*-*-p-0-iso10646-1 (#x292E), why is that? I'm running everything stock and Emacs 27 should be able to display multicolor fonts now. I see Apple Color Emoji is the first font in the Emoticon block in unicode-fonts-block-font-mapping, and I have installed all the minimum useful fonts except Quivira (I couldn't, some OTF table messed up in the latest release). All default-*-coding-system is set to utf-8-unix.

Screen Shot 2020-06-18 at 15 27 28

Emacs version

GNU Emacs 27.0.91 (build 1, x86_64-apple-darwin18.7.0, NS appkit-1671.60 Version 10.14.6 (Build 18G5033)) of 2020-06-14

Remapping unicode fonts on each startup

There is some problem with the cache saving. I have persistent-soft installed and unicode-fonts, too.

my init.el has:

(require 'unicode-fonts)
(unicode-fonts-setup)

But every time I launch emacs the font mapping starts again. I do not understand why.

Apple Color Emoji?

Hi,

I assume the reason it doesn't work is because Emacs doesn't support it's flavour of bitmap fonts?

How to debug missing glyphs present on system?

Hi Roland et. al.—

I thought I had unicode-font-setup working correctly, but then I noticed I was missing the character ("⁴" (8308, 2074, &#8308;) SUPERSCRIPT FOUR (NUMBER 4)). It's definitely available on my system; here's a PopChar screenshot:

If you're not familiar with PopChar, the black characters are ones available in the default font (Liberation Mono), the blue are available in some installed font, and the fonts in the sidebar marked with a circle are the fixed-width fonts installed that include the glyph in question. Note specifically that while Liberation Mono does not include the superscript 4, Monaco does include it.

Now, here's Emacs showing that Unicode block and the value of unicode-fonts-block-font-mapping centered at that block:

One would think from this that since Monaco is an available font for the Superscripts and Subscripts block, it would display, but it doesn't. (Note from comparing the PopChar and Emacs shots that all the block characters are available in some font or another, but only the "ⁿ" (8319, 207F, &#8319;) SUPERSCRIPT LATIN SMALL LETTER N is shown. That would initially make sense because PopChar displays it in black, meaning my default Liberation Mono includes it.

But upon further examination it's weirder: Liberation Mono includes the glyphs x2090–x2094, but Emacs does not display those glyphs in the block table, either.

How might I go about trying to debug this? I tried evaluating:

(unicode-fonts-setup nil t)

to regenerate the table, but that didn't seem to do anything (it returned nil).

Startup: improve speed

Is there a way to prevent Mapping unicode blocks at every start of Emacs? It really slows down the startup.

I disabled many Keys in unicode-fonts-block-font-mapping, but still it takes 89.8 seconds to start.

If I close Emacs immediately after it is up and then start it again, it still takes 92.0 seconds.

Only way I am able to resolve this is by starting Emacs as daemon and connect to it with emacsclient.

unicode-fonts-setup error

When I install unicode-fonts through melpa and execute (unicode-fonts-setup), I get the following error. How do I fix this please?

Debugger entered--Lisp error: (cl-assertion-failed ((tconc-p tc) "TC must be created by `make-tconc'."))
  cl--assertion-failed((tconc-p tc) "TC must be created by `make-tconc'." nil nil)
  tconc-list([cl-struct-tconc nil nil] (("LATIN CAPITAL LETTER YOGH" . 540) ("LATIN SMALL LETTER YOGH" . 541) ("CYRILLIC CAPITAL LETTER E" . 1069) ("CYRILLIC CAPITAL LETTER I" . 1048) ("CYRILLIC SMALL LETTER I" . 1080) ("CYRILLIC SMALL LETTER E" . 1101) ("DOUBLE VERTICAL BAR" . 9208) ("GEORGIAN SMALL LETTER AN" . 11520) ("GEORGIAN SMALL LETTER BAN" . 11521) ("GEORGIAN SMALL LETTER GAN" . 11522) ("GEORGIAN SMALL LETTER DON" . 11523) ("GEORGIAN SMALL LETTER EN" . 11524) ("GEORGIAN SMALL LETTER VIN" . 11525) ("GEORGIAN SMALL LETTER ZEN" . 11526) ("GEORGIAN SMALL LETTER TAN" . 11527) ("GEORGIAN SMALL LETTER IN" . 11528) ("GEORGIAN SMALL LETTER KAN" . 11529) ("GEORGIAN SMALL LETTER LAS" . 11530) ("GEORGIAN SMALL LETTER MAN" . 11531) ("GEORGIAN SMALL LETTER NAR" . 11532) ("GEORGIAN SMALL LETTER ON" . 11533) ("GEORGIAN SMALL LETTER PAR" . 11534) ("GEORGIAN SMALL LETTER ZHAR" . 11535) ("GEORGIAN SMALL LETTER RAE" . 11536) ("GEORGIAN SMALL LETTER SAN" . 11537) ("GEORGIAN SMALL LETTER TAR" . 11538) ("GEORGIAN SMALL LETTER UN" . 11539) ("GEORGIAN SMALL LETTER PHAR" . 11540) ("GEORGIAN SMALL LETTER KHAR" . 11541) ("GEORGIAN SMALL LETTER GHAN" . 11542) ("GEORGIAN SMALL LETTER QAR" . 11543) ("GEORGIAN SMALL LETTER SHIN" . 11544) ("GEORGIAN SMALL LETTER CHIN" . 11545) ("GEORGIAN SMALL LETTER CAN" . 11546) ("GEORGIAN SMALL LETTER JIL" . 11547) ("GEORGIAN SMALL LETTER CIL" . 11548) ("GEORGIAN SMALL LETTER CHAR" . 11549) ("GEORGIAN SMALL LETTER XAN" . 11550) ("GEORGIAN SMALL LETTER JHAN" . 11551) ("GEORGIAN SMALL LETTER HAE" . 11552) ("GEORGIAN SMALL LETTER HE" . 11553) ("GEORGIAN SMALL LETTER HIE" . 11554) ("GEORGIAN SMALL LETTER WE" . 11555) ("GEORGIAN SMALL LETTER HAR" . 11556) ("GEORGIAN SMALL LETTER HOE" . 11557) ("HANGUL LETTER KIYEOK" . 12593) ("HANGUL LETTER PIEUP" . 12610) ("HANGUL LETTER CIEUC" . 12616) ("PARENTHESIZED HANGUL KIYEOK" . 12800) ("PARENTHESIZED HANGUL PIEUP" . 12805) ...))
  ucs-utils-names()
  ucs-utils-names-hash()
  ucs-utils--lookup("Symbol for Escape")
  ucs-utils-char("Symbol for Escape" nil)
  unicode-fonts--generate-instructions("fontset-default")
  unicode-fonts--load-or-generate-instructions("fontset-default" nil)
  unicode-fonts--setup-1("fontset-default" nil)
  unicode-fonts-setup()
  eval((unicode-fonts-setup) nil)
  elisp--eval-last-sexp(nil)
  #f(compiled-function (eval-last-sexp-arg-internal) "Evaluate sexp before point; print value in the echo area.\nInteractively, with a non `-' prefix argument, print output into\ncurrent buffer.\n\nNormally, this function truncates long output according to the\nvalue of the variables `eval-expression-print-length' and\n`eval-expression-print-level'.  With a prefix argument of zero,\nhowever, there is no such truncation.\nInteger values are printed in several formats (decimal, octal,\nand hexadecimal).  When the prefix argument is -1 or the value\ndoesn't exceed `eval-expression-print-maximum-character', an\ninteger value is also printed as a character of that codepoint.\n\nIf `eval-expression-debug-on-error' is non-nil, which is the default,\nthis command arranges for all errors to enter the debugger." (interactive "P") #<bytecode 0x1000cf72f>)(nil)
  apply(#f(compiled-function (eval-last-sexp-arg-internal) "Evaluate sexp before point; print value in the echo area.\nInteractively, with a non `-' prefix argument, print output into\ncurrent buffer.\n\nNormally, this function truncates long output according to the\nvalue of the variables `eval-expression-print-length' and\n`eval-expression-print-level'.  With a prefix argument of zero,\nhowever, there is no such truncation.\nInteger values are printed in several formats (decimal, octal,\nand hexadecimal).  When the prefix argument is -1 or the value\ndoesn't exceed `eval-expression-print-maximum-character', an\ninteger value is also printed as a character of that codepoint.\n\nIf `eval-expression-debug-on-error' is non-nil, which is the default,\nthis command arranges for all errors to enter the debugger." (interactive "P") #<bytecode 0x1000cf72f>) nil)
  eval-last-sexp(nil)
  funcall-interactively(eval-last-sexp nil)
  #<subr call-interactively>(eval-last-sexp nil nil)
  apply(#<subr call-interactively> eval-last-sexp (nil nil))
  call-interactively@ido-cr+-record-current-command(#<subr call-interactively> eval-last-sexp nil nil)
  apply(call-interactively@ido-cr+-record-current-command #<subr call-interactively> (eval-last-sexp nil nil))
  call-interactively(eval-last-sexp nil nil)
  command-execute(eval-last-sexp)

In GNU Emacs 26.3 (build 1, x86_64-w64-mingw32)
of 2019-08-29 built on CIRROCUMULUS
Repository revision: 96dd0196c28bc36779584e47fffcca433c9309cd
Windowing system distributor 'Microsoft Corp.', version 10.0.18363
Recent messages:
[2020-07-10::15:05:23:992] Unicode Fonts - Mapping Unicode Blocks in fontset-default ... 19%
[2020-07-10::15:05:24:187] Unicode Fonts - Mapping Unicode Blocks in fontset-default ... 30%
[2020-07-10::15:05:24:382] Unicode Fonts - Mapping Unicode Blocks in fontset-default ... 41%
[2020-07-10::15:05:24:598] Unicode Fonts - Mapping Unicode Blocks in fontset-default ... 55%
[2020-07-10::15:05:24:781] Unicode Fonts - Mapping Unicode Blocks in fontset-default ... 76%
[2020-07-10::15:05:24:987] Unicode Fonts - Mapping Unicode Blocks in fontset-default ... 94%
[2020-07-10::15:05:25:030] Unicode Fonts - Mapping Unicode Blocks in fontset-default ... done
[2020-07-10::15:05:25:031] Unicode Fonts - Mapping Overrides in fontset-default ...
[2020-07-10::15:05:25:150] Entering debugger...
[2020-07-10::15:05:25:204] [2 times]
mwheel-scroll: Beginning of buffer [4 times]
Configured using:
'configure --without-dbus --host=x86_64-w64-mingw32
--without-compress-install 'CFLAGS=-O2 -static -g3''

Configured features:
XPM JPEG TIFF GIF PNG RSVG SOUND NOTIFY ACL GNUTLS LIBXML2 ZLIB
TOOLKIT_SCROLL_BARS THREADS LCMS2

Important settings:
value of $LANG: ENN
locale-coding-system: utf-8

font sizes wonky on Windows

Box-drawing characters are assigned here to DejaVu Sans Mono. The character widths are not consistent with other platforms. This is a problem if you actually want to draw a box.

Unsafe call to `eieio-persistent-read'.

I am not sure if this is a load-order issue, a pcache issue, or a persistent-soft issue, but I figured I would start here.

When doing a (unicode-fonts-setup) I get the error message Unsafe call to `eieio-persistent-read'.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.