Programming

Emacsの日本語フォントが正しく表示されるように設定する ― Set Emacs to display Japanese fonts correctly.

World Administrator
2023年7月22日
2 分で読めます
Photo by Markus Spiske / Unsplash

素のEmacsではフォントが見づらいので変更をする。

フォントを設定する

EmacsWikiによれば以下のコマンドでフォントを設定できる。

(set-face-attribute 'default nil :family "Consolas" :height 110)
EmacsWiki: Change Fonts Permanently On Windows

Conseleの部分を好きなフォント名に変更したらそれで終わり。


Language Environmentを設定する

かと思いきや、大半の字体が正確に反映されていない。これはEmacsが自動で認識した言語情報Language Environmentが英語になっているからだ。

Emacsのマニュアルを見ると以下の記述が見つかる。

To select a language environment, customize current-language-environment or use the command M-x set-language-environment. It makes no difference which buffer is current when you use this command, because the effects apply globally to the Emacs session. See the variable language-info-alist for the list of supported language environments, and use the command C-h L lang-env RET (describe-language-environment) for more information about the language environment lang-env. Supported language environments include:

ASCII, Arabic, Belarusian, Bengali, Brazilian Portuguese, Bulgarian, Burmese, Cham, Chinese-BIG5, Chinese-CNS, Chinese-EUC-TW, Chinese-GB, Chinese-GB18030, Chinese-GBK, Croatian, Cyrillic-ALT, Cyrillic-ISO, Cyrillic-KOI8, Czech, Devanagari, Dutch, English, Esperanto, Ethiopic, French, Georgian, German, Greek, Gujarati, Hebrew, IPA, Italian, Japanese, Kannada, Khmer, Korean, Lao, Latin-1, Latin-2, Latin-3, Latin-4, Latin-5, Latin-6, Latin-7, Latin-8, Latin-9, Latvian, Lithuanian, Malayalam, Oriya, Persian, Polish, Punjabi, Romanian, Russian, Sinhala, Slovak, Slovenian, Spanish, Swedish, TaiViet, Tajik, Tamil, Telugu, Thai, Tibetan, Turkish, UTF-8, Ukrainian, Vietnamese, Welsh, and Windows-1255.

要するにM-x set-language-environmentで設定できるので、init.elで管理しよう。

Language Environments (GNU Emacs Manual)
Language Environments (GNU Emacs Manual)

以下のコードをinit.elに書き込めば完成!

;; Set Language Environment
(set-language-environment "Japanese")
;; Set Font
(set-face-attribute 'default nil :family "Consolas" :height 110)