[Macemacsjp-users 522] Re: font の設定方法

アーカイブの一覧に戻る

Kazu Yamamoto ( 山本和彦 ) kazu****@iij*****
2005年 7月 26日 (火) 12:18:35 JST


> CVS 先端で、以下の関数を定義しておいて、

すいませんが、まずここだけ質問させて下さい。
なぜ再帰を利用するのでしょうか?

ignore ではない、carbon-font.el の関数ですが、以下のように定義するので
はダメなんでしょうか?

あと、append を利用するのは、セルを無駄遣いするので、あまりよいことでは
ありません。

# carbon-font-get-scale は、もう少し奇麗にする余地があると思います。

-------------------
;;  関数定義
;;
;;  カレントフレームで使われているフォントの、リスケールファクターを、
;;  carbon-font-scale-alist から、取得する。

(defun carbon-font-get-scale (font-name)
  "current frame で、font-name の、rescale parameter を返す"
  (let ((x (cdr (assoc (substring (cdr (assoc 'font (frame-parameters))) -2 nil)
		       (assoc font-name
			      (if carbon-font-auto-rescale-enable
				  carbon-font-scale-alist-without-silk
				carbon-font-scale-alist-with-silk))))))
    (or x 1.0)))

;;  取得したリスケールファクターで、face-font-rescale-alistを書き換える。

(defun carbon-font-append-factor ()
  (let ((scale-list (if carbon-font-auto-rescale-enable
			carbon-font-scale-alist-without-silk
		      carbon-font-scale-alist-with-silk))
	ent font new old key)
    (while scale-list
      (setq ent (car scale-list))
      (setq scale-list (cdr scale-list))
      (setq font (car ent))
      (setq key (format ".*%s.*" font))
      (setq new (cons key (carbon-font-get-scale font)))
      (setq old (assoc key face-font-rescale-alist))
      (setq face-font-rescale-alist (delete old face-font-rescale-alist))
      (setq face-font-rescale-alist (cons new face-font-rescale-alist)))))

;;  フォントが変更された場合にフックをかけて、
;;  carbon-font-append-factor を起動する。

(add-hook 'after-setting-font-hook 'carbon-font-append-factor)
-------------------



Macemacsjp-users メーリングリストの案内
アーカイブの一覧に戻る