好きなフォントを設定したいんだけど?
フォントを見直す季節になりましたね。
見つけたばかりのフォントを Emacs でも表示したい…そんな人もおられるかと思います。
また、OS を股にかけて同じ設定ファイル群を使っているんだけど、Windows では MS Gothic、
Mac OS X ではヒラギノ、Linux では Ricty を使いたい…なんて人もいるんじゃないかと思います。
前振り考えるのとってもめんどい…。
ということで、私が使っているフォント設定用の関数を晒そうと思います:
(defun setting-font (font-name) (let* ((fontset-name font-name) (size 13) (ascii-font font-name) (multibyte-font font-name) (h (* size 10)) (font (format "%s-%d:weight=normal:slant=normal" ascii-font size)) (ascii-fontspec (font-spec :family ascii-font)) (multibyte-fontspec (font-spec :family multibyte-font)) (fontset (create-fontset-from-ascii-font font nil fontset-name))) (set-face-attribute 'default nil :family ascii-font) (set-fontset-font fontset 'japanese-jisx0213.2004-1 multibyte-fontspec) (set-fontset-font fontset 'japanese-jisx0213-2 multibyte-fontspec) (set-fontset-font fontset 'katakana-jisx0201 multibyte-fontspec) ; 半角カナ (set-fontset-font fontset '(#x0080 . #x024F) ascii-fontspec) ; 分音符付きラテン (set-fontset-font fontset '(#x0370 . #x03FF) ascii-fontspec) ; ギリシャ文字 ))
どこかから拾ってきたのを適当に関数化しただけですが、引数の font-name にフォント名を渡して呼べばいいだけです。
簡単ですね。
違う OS で同じフォントを使いたいところですが、Ricty は Windows では使えませんし、Mac だとデフォルトのフォントじゃないと 行番号が変な感じになったりするので、同じフォントを使うというのはやっぱり無理があります。
そこで考えたのが、好きなフォントの中で存在したフォント設定しようぜという B 戦法です。
(dolist (font-name after-font-name-list '("Ricty" "TakaoGothic" "IPAGothic" "MS Gothic")) (if (find-font (font-spec :family font-name)) (progn (setting-font font-name) (setq after-font-name-list nil))))
とやりたかったんですが、このようにすると、最初に見つかったフォントではなく、最後に見つかったフォントが設定されてしまうので、 どうにかして dolist のループを終了しなければいけません。
3 分経ったのがこちら:
(let ((font-name) (after-font-name-list '("Ricty" "TakaoGothic" "IPAGothic" "MS Gothic"))) (while (not (null after-font-name-list)) ;; x:xs を設定します。 (setq font-name (car after-font-name-list) after-font-name-list (cdr after-font-name-list)) ;; font-name が存在するかどうか調べます。 (if (find-font (font-spec :family font-name)) (progn (setting-font font-name) ;; 存在したら、after-font-name-list に nil を設定して終了するようにします。 (setq after-font-name-list nil)))))