emacs 26 のフォントの設定 M-x view-hello-file

emacs 26では”[emacsのフォントの設定 M-x view-hello-file - Qiita](https://qiita.com/styzo/items/f9d9db9d1455efd24dbe "emacsのフォントの設定 M-x view-hello-file - Qiita")”のままではうまく動かなくなった。
バッファに中国語の文字が含まれているとemacsのプロセスが高負荷になる。たとえば[Wikipediaの中国語のページ](https://zh.wikipedia.org/wiki/Wikipedia:%E9%A6%96%E9%A1%B5 "维基百科，自由的百科全书")をewwやw3mで表示すると暫く固まり、カーソルを動かすたびに固まる。この現象はおそらくemacs 25から起きている。参考：(Reddit) [Emacs not playing well with Chinese characters : emacs](https://www.reddit.com/r/emacs/comments/84spld/emacs_not_playing_well_with_chinese_characters/ "Emacs not playing well with Chinese characters : emacs")。
このRedditのページではすべての文字のフォントを"Microsoft Yahei"にすることで解決しているが、このフォントで日本語を表示するとあまりきれいではない。
![キャプチャ3.PNG](https://qiita-image-store.s3.amazonaws.com/0/40128/4eaf40cf-84a7-8ef8-3339-bb503a5cd79c.png)
このため日本語の漢字や記号類は日本語のフォントで表示したい。
日本語は"MeiryoKe_Console"、その他の漢字は"Microsoft Yahei"で表示する。
デフォルトでは矢印(→)が半角になるので、全角で表示されるようにする。([Emacs 25.2以降でASCIIと日本語のフォントを別々に設定する(一部の記号のフォントが変更できない場合) | Misohena Blog](http://misohena.jp/blog/2017-09-26-symbol-font-settings-for-emacs25.html "Emacs 25.2以降でASCIIと日本語のフォントを別々に設定する(一部の記号のフォントが変更できない場合) | Misohena Blog"))

試行錯誤した結果：
![キャプチャ4.PNG](https://qiita-image-store.s3.amazonaws.com/0/40128/f2b94518-71e1-022c-9059-ec04ec6606f8.png)

設定：

```elisp:
  (set-face-attribute 'default nil :family "Consolas" :height 120)
  (setq use-default-font-for-symbols nil) ; http://misohena.jp/blog/2017-09-26-symbol-font-settings-for-emacs25.html
  (setq inhibit-compacting-font-caches t)
  
  (set-fontset-font t 'arabic (font-spec :family "Courier New"))
  (set-fontset-font t 'sinhala (font-spec :family "Nirmala UI"))
  (set-fontset-font t 'devanagari (font-spec :family "Nirmala UI"))
  (set-fontset-font t 'bengali (font-spec :family "Nirmala UI"))
  (set-fontset-font t 'gujarati (font-spec :family "Nirmala UI"))
  (set-fontset-font t 'kannada (font-spec :family "Nirmala UI"))
  (set-fontset-font t 'malayalam (font-spec :family "Nirmala UI"))
  (set-fontset-font t 'oriya (font-spec :family "Nirmala UI"))
  (set-fontset-font t 'gurmukhi (font-spec :family "Nirmala UI"))
  (set-fontset-font t 'tamil (font-spec :family "Nirmala UI"))
  (set-fontset-font t 'telugu (font-spec :family "Nirmala UI"))
  (set-fontset-font t 'mongolian (font-spec :family "Mongolian Baiti"))
  (set-fontset-font t 'burmese (font-spec :family "Padauk"))
  (set-fontset-font t 'tibetan (font-spec :family "Microsoft Himalaya"))
  (set-fontset-font t 'thai (font-spec :family "Leelawadee UI"))
  (set-fontset-font t 'khmer (font-spec :family "Leelawadee UI"))
  (set-fontset-font t 'lao (font-spec :family "Leelawadee UI"))
  (set-fontset-font t 'yi (font-spec :family "Microsoft Yi Baiti"))
  (set-fontset-font t 'lisu (font-spec :family "Quivira"))
  (set-fontset-font t 'vai (font-spec :family "Quivira"))
  (set-fontset-font t 'tai-lue (font-spec :family "Microsoft New Tai Lue"))
  (set-fontset-font t 'tai-le (font-spec :family "Microsoft Tai Le"))
  (set-fontset-font
   t (cons (decode-char 'ucs #x10330) (decode-char 'ucs #x1034F))
   (font-spec :family "Segoe UI Historic")) ;ゴート文字
  (set-fontset-font
   t (cons (decode-char 'ucs #x10380) (decode-char 'ucs #x1039F))
   (font-spec :family "Segoe UI Historic")) ;ウガリット文字
  (set-fontset-font
   t (cons (decode-char 'ucs #x13000) (decode-char 'ucs #x1342F))
   (font-spec :family "Segoe UI Historic")) ;ヒエログリフ
  (set-fontset-font
   t (cons (decode-char 'ucs #x1F000) (decode-char 'ucs #x1F6FF))
   (font-spec :family "Segoe UI Symbol"))
  (set-fontset-font
   t (cons (decode-char 'ucs #x1F700) (decode-char 'ucs #x1FFFF))
   (font-spec :family "Symbola"))
  (set-fontset-font
   t (cons (decode-char 'ucs #x2000) (decode-char 'ucs #x206f))
   (font-spec :family "Symbola"))	;General Punctuation
  (set-fontset-font
   t (cons (decode-char 'ucs #x2400) (decode-char 'ucs #x243f))
   (font-spec :family "Symbola"))	;Control Pictures
  (set-fontset-font
   t (cons (decode-char 'ucs #x2900) (decode-char 'ucs #x297f))
   (font-spec :family "Segoe UI Symbol")) ;Supplemental Arrows-B
  (set-fontset-font
   t (cons (decode-char 'ucs #x20000) (decode-char 'ucs #x2B81F))
   (font-spec :family "MingLiU-ExtB")) ;CJK Unified Ideographs Extension B-D
  (set-fontset-font
   t (cons (decode-char 'ucs #x2B820) (decode-char 'ucs #x2CEAF))
   (font-spec :family "BabelStone Han")) ;CJK Unified Ideographs Extension E
  (set-fontset-font
   t (cons (decode-char 'ucs #x2F800) (decode-char 'ucs #x2FA1F))
   (font-spec :family "BabelStone Han")) ;CJK Compatibility Ideographs Supplement

  (set-fontset-font t 'big5 (font-spec :family "Microsoft Yahei"))
  (set-fontset-font t 'big5-hkscs (font-spec :family "Microsoft Yahei"))
  (set-fontset-font t 'chinese-cns11643-1 (font-spec :family "Microsoft Yahei"))
  (set-fontset-font t 'chinese-cns11643-15 (font-spec :family "Microsoft Yahei"))
  (set-fontset-font t 'chinese-cns11643-2 (font-spec :family "Microsoft Yahei"))
  (set-fontset-font t 'chinese-cns11643-3 (font-spec :family "Microsoft Yahei"))
  (set-fontset-font t 'chinese-cns11643-4 (font-spec :family "Microsoft Yahei"))
  (set-fontset-font t 'chinese-cns11643-5 (font-spec :family "Microsoft Yahei"))
  (set-fontset-font t 'chinese-cns11643-6 (font-spec :family "Microsoft Yahei"))
  (set-fontset-font t 'chinese-cns11643-7 (font-spec :family "Microsoft Yahei"))
  (set-fontset-font t 'chinese-gb2312 (font-spec :family "Microsoft Yahei"))
  (set-fontset-font t 'chinese-gbk (font-spec :family "Microsoft Yahei"))
  (set-fontset-font t 'kanbun (font-spec :family "Microsoft Yahei"))
  (set-fontset-font t 'bopomofo (font-spec :family "Microsoft Yahei"))
  (set-fontset-font t 'han (font-spec :family "Microsoft Yahei"))
  (set-fontset-font t 'han (font-spec :family "MeiryoKe_Console") nil 'add)

  (set-fontset-font t 'japanese-jisx0208 (font-spec :family "MeiryoKe_Console"))
  (set-fontset-font t 'japanese-jisx0208-1978 (font-spec :family "MeiryoKe_Console"))
  (set-fontset-font t 'japanese-jisx0212 (font-spec :family "MeiryoKe_Console"))
  (set-fontset-font t 'japanese-jisx0213-1 (font-spec :family "MeiryoKe_Console"))
  (set-fontset-font t 'japanese-jisx0213-2 (font-spec :family "MeiryoKe_Console"))
  (set-fontset-font t 'japanese-jisx0213.2004-1 (font-spec :family "MeiryoKe_Console"))
  (set-fontset-font t 'jisx0201 (font-spec :family "MeiryoKe_Console"))
  (set-fontset-font t 'kana (font-spec :family "MeiryoKe_Console"))
  (set-fontset-font t 'symbol (font-spec :family "MeiryoKe_Console") nil 'add)
  (add-to-list 'face-font-rescale-alist '("MeiryoKe_Console" . 1.09))
  (add-to-list 'face-font-rescale-alist '("Microsoft Yahei" . 1.13))
```

テスト方法：
`C-h h (view-hello-file)`
`M-: (eww "http://yue.sakura.ne.jp/melody/ware/all-code-list.html")`
`M-: (eww "https://www.wikipedia.org/")`

参考：

- [Emacs not playing well with Chinese characters : emacs](https://www.reddit.com/r/emacs/comments/84spld/emacs_not_playing_well_with_chinese_characters/ "Emacs not playing well with Chinese characters : emacs")
- [utf 8 - How to set Chinese fonts in modern Emacs - Emacs Stack Exchange](https://emacs.stackexchange.com/questions/22406/how-to-set-chinese-fonts-in-modern-emacs "utf 8 - How to set Chinese fonts in modern Emacs - Emacs Stack Exchange")
- [Emacs 25.2以降でASCIIと日本語のフォントを別々に設定する(一部の記号のフォントが変更できない場合) | Misohena Blog](http://misohena.jp/blog/2017-09-26-symbol-font-settings-for-emacs25.html "Emacs 25.2以降でASCIIと日本語のフォントを別々に設定する(一部の記号のフォントが変更できない場合) | Misohena Blog")
- [u-ch: NTEmacs 23 で (view-hello-file) ぜんぶ表示してみた](https://u.hoso.net/2009/03/ntemacs-23-view-hello-file.html "u-ch: NTEmacs 23 で (view-hello-file) ぜんぶ表示してみた")
- [ALL実体参照！](http://yue.sakura.ne.jp/melody/ware/all-code-list.html "ALL実体参照！") `M-: (eww "http://yue.sakura.ne.jp/melody/ware/all-code-list.html")`
- [Unicode 8.0.0対応フォント一覧 - てきとーになんか書きます](http://spark6251.hatenablog.com/entry/2015/06/24/234606 "Unicode 8.0.0対応フォント一覧 - てきとーになんか書きます")
- [Out of Dimension: Emacs のフォント設定を克服する](http://extra-vision.blogspot.com/2016/07/emacs.html "Out of Dimension: Emacs のフォント設定を克服する") -- たくさんのフォントを設定すると効率が悪いらしい。 `M-x describe-fontset`
- [emacsのフォントの設定 M-x view-hello-file - Qiita](https://qiita.com/styzo/items/f9d9db9d1455efd24dbe "emacsのフォントの設定 M-x view-hello-file - Qiita")