Emacs

Emacs のフォント設定について

More than 1 year has passed since last update.


はじめに

Emacs はヘビーユーザではないが、初めて使ったのは20年以上前になる。プログラム開発は vi、日本語ドキュメントの作成、編集に Emacs を使っていた。しかし、ここ最近は Emacs から遠ざかっていた。理由は最近の綺麗なフォントを利用するのが面倒だったから。Windows では xyzzy で MeiryoKe_Console に設定して使っている。

sublimetext, Atom など試してみて、しっくりこなかったので久しぶりに Emacs に戻ってみることにした。


参考 URL


メモ


  • 設定は frame か face に対して行う

  • fontset は character set 毎に font を指定したもの

  • fontset-default というものがある

  • 新しく fontset を定義して frame, face に割当る方が美しい感じだけど,fontset-default を変更してしまう方が簡単そう


使えるコマンド


  • character set の一覧を調べる: M-x list-character-sets

  • character set の文字一覧を確認する: M-x list-charset-chars RET japanese-jisx0208 RET

  • set-frame-font "font name" t

  • M-x describe-font

  • M-x describe-fontset

  • カーソル位置の face を調べる: (get-char-property (point) 'face)

  • カーソル位置の文字情報を調べる: "C-u C-x ="

  • フォントサイズが合わない: face-font-rescale-alist


設定の理解

(set-face-attribute 'default nil :family "Hoge" :height 140)

face名 'default

frame が nil

frame名を指定しないか、nil だった場合は新規の frame だけでなく既存の frame にも設定する


set-fontset-font

(set-fontset-font name character font-spec &optional ....


既存のフォントセット name に変更を加える。

character にマッチするものを font-spec で指定したものを適用する。

name が nil の場合、選択された frame か option で指定した frame(nil でない)を変更する

name が t の場合、default fonset を変更する、短縮名は fontset-default

character は cons 形式で (from . to) の codepoint

か font-spec (family . registry)

たとえば、default fontset で、 japanese-jisx0208 のすべての character について

family name が "Kochi Gothic" のフォントを利用するように変更したい場合

(set-fontset-font t 'japanese-jisx0208 (font-spec :family "Kochi Gothic"))


fontsetを作る

(create-fontset-from-fontset-spec fontset-spec &optional style-variant-p noerror)



フォントリストを表示する。

(dolist (x (x-list-fonts "*")) (print x))


Mac で family 名を確認する


  • font book を起動する

  • 確認したいフォントを選択する

  • ツールバーの i ボタンを押す

scrach バッファで

(dolist (x (font-family-list)) (print x))


Windows でフォント名を確認する

scrach バッファで下記を実行して、フォントセレクタで該当フォントを選択する。

(w32-select-font)


Windows 分の設定


  • 希望通りに設定されない。fontset を作ってしまうと rescale が全体にかかっているように見える

  • Inconsolata と MeiryoKe_Console をインストール

  • Windows 7 に gnupack 13.05 をインストール

  • 行間が詰まり気味なので、行間も調整している。


良いバージョン

(set-face-attribute 'default nil :family "Inconsolata" :height 110)

;(set-face-attribute 'default nil :family "Consolas" :height 104)
(set-fontset-font nil 'japanese-jisx0208 (font-spec :family "MeiryoKe_Console"))
(setq face-font-rescale-alist '(("MeiryoKe_Console" . 1.08)))


ダメバージョン

(create-fontset-from-ascii-font

"Inconsolata-14:weight=normal:slant=normal:pixelsize=18" nil "InconsolataMeiryoConsole")
(set-fontset-font
"fontset-InconsolataMeiryoConsole" 'japanese-jisx0208 (font-spec :family "MeiryoKe_Console" :size 14))
(add-to-list 'face-font-rescale-alist
'(".*MeiryoKe_Console.*" . 1.3))
(add-hook 'after-init-hook
(lambda () (set-frame-font "fontset-InconsolataMeiryoConsole")))
(add-to-list 'default-frame-alist
'((font . "fontset-InconsolataMeiryoConsole")
(ime-font . "fontset-InconsolataMeiryoConsole")))
(add-to-list 'initial-frame-alist
'((font . "fontset-InconsolataMeiryoConsole")
(ime-font . "fontset-InconsolataMeiryoConsole")))

(setq-default line-spacing 3)



引用

cocoa emacsでプログラミング用フォントRictyを使う


RictyDiminish

;; Fonts

(let* ((size 15)
(asciifont "Ricty")
(jpfont "Ricty")
(h (* size 10))
(fontspec (font-spec :family asciifont))
(jp-fontspec (font-spec :family jpfont)))
(set-face-attribute 'default nil :family asciifont :height h)
(set-fontset-font nil 'japanese-jisx0213.2004-1 jp-fontspec)
(set-fontset-font nil 'japanese-jisx0213-2 jp-fontspec)
(set-fontset-font nil 'katakana-jisx0201 jp-fontspec)
(set-fontset-font nil '(#x0080 . #x024F) fontspec)
(set-fontset-font nil '(#x0370 . #x03FF) fontspec))


愚痴

Winodws 7, 10 でどう頑張っても Mac と同レベルにはできなそう.

MacType をインストールして少しましになったけど,

"Source Han Code JP" がどうしても綺麗に表示されない。

Atom だったらなんの問題もないのに。 嘘,2:3 になってなかった.