maya's blog

About programming, aws and ubuntu

emacsフォントの変更方法

Introduction

マシンをmacからubuntuに変えてから半端な設定がちらほら残っていました。

そのうちの1つがEmacsで、macを使っていた頃は特に気にならなかったためフォント設定をしていませんでした。

ubuntuにしてからデフォルトのフォントだと英数字と日本語が異なるフォントだったりで統一感がないので設定したい…とずっと思っていました。

f:id:maya2250:20190406162706p:plain
こんな感じ

(ちなみに僕の環境では英数字はUbuntu Mono、日本語はNoto Serif CJK TCになっていました)

Environment

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.10
DISTRIB_CODENAME=cosmic
DISTRIB_DESCRIPTION="Ubuntu 18.10"
$ emacs --version
GNU Emacs 26.1
Copyright (C) 2018 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GNU Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.

emacsはppa(http://ppa.launchpad.net/kelleyk/emacs/ubuntu/)をaptのrepositoryに追加しインストールしたものを使用しました。

最初は野良ビルドしたものを使っていたのですが、ubuntuにインストールしているフォントを認識できておらず設定できませんでした… (恐らくビルドオプションに何か足りなかったのかも…)

How to

  1. 使用したいフォントをインストール

    今回は Rictyを使用しました。

    Rictyをインストールするには公式にインストール手順があるので、それ通りにするのが確実です。 (依存物を準備してからricty_generator.sh autoでインストール)

    一応gnome-font-viewerでインストールできたかを確認します。

    gnome-font-viewer

  2. emacsからフォントが使えるようになっているか確認

    font-family-list関数を評価して、インストールされているフォントを認識しているか見ます。

    例えば

    • *scratch*バッファで(dolist (x (font-family-list)) (print x))を評価してRictyがあるか探す
    • M-:(eval-expression)で(member "Ricty" (font-family-list))を実行してnilだったらない

    とか色々やり方はあります

  3. 設定ファイルinit.elに書き込む

    以下を追記しました

     ;; font
     (when (member "Ricty" (font-family-list))
     (add-to-list 'default-frame-alist '(font . "Ricty 11")))
    

    これを追記しC-M-x(eval-defun)で評価しても即時反映はされません。

    即時確認するには(set-default-font "Ricty")を評価してやるとよいです。 (*scratch*バッファやM-:等)

Font patterns

GNU Emacs Manual*1によるとフォントの指定の仕方は3通りあるそうです。

Fontconfig pattern

Monospace
Monospace-12
Monospace-12:bold
DejaVu Sans Mono:bold:italic
Monospace-12:weight=bold:slant=italic

GTK font pattern

Monospace 12
Monospace Bold Italic 12

XLFD (X Logical Font Description)

-misc-fixed-medium-r-semicondensed--13-*-*-*-c-60-iso8859-1

色々調べているとXLDFの書き方はくそ、みたく言っている人もいます。 まぁパット見難しそうな形式なので基本的にFontconfigかGTKの形式で良いかと思われます。

font setting command

今回設定する際に触ったコマンドです。

Emacs

  • describe-charまたはC-u C-x =: カーソル位置の文字の情報を表示。xft:-PfEd-Ricty-bold-...の部分を見れば使用されているフォントを確認できます。
  • describe-font RET <FONT>: 入力されたフォントのfullname, 格納場所等が表示されます
  • describe-font-sets RET <FONTSET>: FONTSET無指定だとデフォルトで現在のフレームで使用されているフォントセットを表示します。

Terminal

  • fc-list: インストールされているフォントを表示します。
    • オプション無指定だとフォントのフルパス表示
    • fc-list : familyでフォントファミリー表示
    • 基本:の後に何か指定して表示するものを変えたり絞り込みができます

References