Emacs on OS Xのフォント設定


はじめに

OS XのEmacsで下記の通り動作するようにinit.elにフォント設定を追加する。

  • 欧文フォントはXcodeやターミナルでデフォルトのMenloを使用する。
  • 日本語フォントはヒラギノ角ゴ ProNを使用する(JIS X 0213:2004対応)。
  • 一般的な等幅フォント(半角:全角 = 1:2)の設定とする。

動作確認環境

  • OS X 10.11.5
  • X11 Emacs 24.5.1(Cocoa Emacsでは未確認)

設定内容

init.elに追加したフォント設定は以下の通り。

(when (and (>= emacs-major-version 24) (not (null window-system)))
  (let* ((font-family "Menlo")
         (font-size 9)
         (font-height (* font-size 10))
         (jp-font-family "ヒラギノ角ゴ ProN"))
    (set-face-attribute 'default nil :family font-family :height font-height)
    (let ((name (frame-parameter nil 'font))
          (jp-font-spec (font-spec :family jp-font-family))
          (jp-characters '(katakana-jisx0201
                           cp932-2-byte
                           japanese-jisx0212
                           japanese-jisx0213-2
                           japanese-jisx0213.2004-1))
          (font-spec (font-spec :family font-family))
          (characters '((?\u00A0 . ?\u00FF)    ; Latin-1
                        (?\u0100 . ?\u017F)    ; Latin Extended-A
                        (?\u0180 . ?\u024F)    ; Latin Extended-B
                        (?\u0250 . ?\u02AF)    ; IPA Extensions
                        (?\u0370 . ?\u03FF)))) ; Greek and Coptic
      (dolist (jp-character jp-characters)
        (set-fontset-font name jp-character jp-font-spec))
      (dolist (character characters)
        (set-fontset-font name character font-spec))
      (add-to-list 'face-font-rescale-alist (cons jp-font-family 1.2)))))

内容の説明

  • 1行目のwhenマクロでemacs-major-version24以上でかつwindow-systemnilでない場合を指定。system-versionの制約は特になし。
  • 2〜5行目で欧文フォントと日本語フォントを指定。

    • ファミリーはemacs上で確認

      (dolist (font-family (font-family-list)) (print font-family))
      
  • 6行目のset-face-attributeでデフォルトフレームのフェイスの属性(フォントファミリーと高さ)を指定。

  • 9〜13行目で今回対象とする日本語文字セットを指定。

    • JIS X 0201、JIS X 0213とJIS X 0212の未重複部を網羅するように指定。1 JIS文字集合の関係概念図
  • 15〜19行目で上記日本語文字セットに含まれるが、欧文(半角)として表示したい文字を指定。

    • ラテン文字やギリシア文字など。
  • デフォルトでは半角:全角 = 1:2とならないため、最終行のface-font-rescale-alistで日本語フォントは1.2倍で表示するよう指定。

結果

Emacsの通常使用において期待する結果を得られた。

注意点

  • ヒラギノ角ゴ ProNに含まれないグリフは正しく表示されない(推測)。
  • 「Apple カラー絵文字」を使って絵文字表示対応を試みたが、Emacsがクラッシュするため未実施。