はじめに
Emacs はヘビーユーザではないが、初めて使ったのは20年以上前になる。プログラム開発は vi、日本語ドキュメントの作成、編集に Emacs を使っていた。しかし、ここ最近は Emacs から遠ざかっていた。理由は最近の綺麗なフォントを利用するのが面倒だったから。Windows では xyzzy で MeiryoKe_Console に設定して使っている。
sublimetext, Atom など試してみて、しっくりこなかったので久しぶりに Emacs に戻ってみることにした。
参考 URL
- http://d.hatena.ne.jp/kazu-yamamoto/20140625/1403674172
- http://dminor11th.blogspot.com/2011/08/face.html
- http://d.hatena.ne.jp/tomoya/20100828/1282948135
- http://d.hatena.ne.jp/dundubhi/20100828/1283089489
- http://ics-web.jp/lab/archives/7010
- http://extra-vision.blogspot.co.uk/2016/07/emacs.html
メモ
- 設定は 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 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"))
(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を使う
;; 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 になってなかった.