LoginSignup
59
56

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-09-26

はじめに

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 になってなかった.

59
56
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
59
56