[Macemacsjp-users 733] Re: little problem about fixed-width-fontset

Back to archive index

Takashi Hiromatsu matsu****@ca2*****
2005年 11月 13日 (日) 17:50:04 JST


本庄さん、

解説有難うございます。英語MLで、議論が有るのは知ってましたが、この所、本業
に手を取られて、メール追えてませんでした。

> 英語 ML のやりとり中に fixed-width-fontset について、ちょっとした問題
> を発見したので報告します。
> 10pt 以下のフォントを使用する場合に、set-default-font を指定しないで
> default-frame-alist で指定するか、initial-frame-alist で 10pt より大き
> いフォントを指定し、default-frame-alist で 10pt より小さいフォントを指
> 定した場合、bold face に幅(サイズ?)の異なるフォントが使用されるよう
> です。
> 
> 以下に設定例と結果を記載します。
> これは正常に表示されます。
> 
> (set-default-font "-*-*-medium-r-normal--10-*-*-*-*-*-fontset-hiraginomin")
> (add-to-list
>  'default-frame-alist
>  '(font . "-*-*-medium-r-normal--10-*-*-*-*-*-fontset-hiraginokaku"))

set-default-font は、set-frame-font の alias で、名前の default に反して、
単純に、カレントフレームの、font を変更するだけなんです。なので、.emacs に
書いた場合は、initial-frame の、font を変更します。
又、この時、fixed-fontset が、face-font-rescale-alist を、適切な値に設定し
ます。

default-frame-alist のみに設定した場合、initial frame の、
face-font-rescale-alist は設定されません。これは、2番目以降の、Frame に有効
です。

ということで、以下の現象は、仕様的には正しい動作です。

> これは bold face の幅がおかしくなります。
> 
> (set-default-font "-*-*-medium-r-normal--12-*-*-*-*-*-fontset-hiraginomin")
> (add-to-list
>  'default-frame-alist
>  '(font . "-*-*-medium-r-normal--10-*-*-*-*-*-fontset-hiraginokaku"))

上に書いたように、set-default-font で、12point用の、
face-font-rescale-alistが設定されますが、その後で、default-frame-alist で、
10point に書き換えられたために、適切な幅になりません。

> これも bold face の幅がおかしくなります。
> 
> (set-default-font "-*-*-medium-r-normal--10-*-*-*-*-*-fontset-hiraginomin")
> (add-to-list
>  'initial-frame-alist
>  '(font . "-*-*-medium-r-normal--12-*-*-*-*-*-fontset-hiraginokaku"))
> (add-to-list
>  'default-frame-alist
>  '(font . "-*-*-medium-r-normal--10-*-*-*-*-*-fontset-hiraginokaku"))

これは、上と逆で、initial-frame に対して、10point 用の
face-font-rescale-alist が設定された後で、initial-frame のfont が変更されて
います。


> これは新しいフレームを開くまで、最初のフレームの bold face の幅がおか
> しくなります。
> 
> (add-to-list
>  'initial-frame-alist
>  '(font . "-*-*-medium-r-normal--10-*-*-*-*-*-fontset-hiraginokaku"))
> (add-to-list
>  'default-frame-alist
>  '(font . "-*-*-medium-r-normal--10-*-*-*-*-*-fontset-hiraginokaku"))
initial-frame に対して、
(set-default-font "-*-*-medium-r-normal--10-*-*-*-*-*-fontset-hiraginomin")
が、必要です。

もし、initial-frame と、二番目以降の frame で font を変えたい場合は、次に様
にする必要が有る筈です。

;; 12 point on the initial-frame
(set-default-font "-*-*-medium-r-normal--12-*-*-*-*-*-fontset-hiraginomin")
(add-to-list
 'initial-frame-alist
 '(font . "-*-*-medium-r-normal--12-*-*-*-*-*-fontset-hiraginokaku"))
;; 10 point on other frames
(add-to-list
 'default-frame-alist
 '(font . "-*-*-medium-r-normal--10-*-*-*-*-*-fontset-hiraginokaku"))

現状では、これを完全に改善するには、C source code を弄らないと駄目なので、
手が止まってます。

その内、もう少し、ましな動作にしようと思ってますので、お待ち下さい。

又、銭谷さんの、パッケージで、2番目のフレームを作るときに、エラーが出る件に
関しては、原因が判りましたので、時間の有るときに手を入れます。
    ;; site-start.el の中で fixed-fontset を呼ぶと、initial-frame のポイン
    ;; タの取得に失敗するようですので、別の手を考えます。

廣松



Macemacsjp-users メーリングリストの案内
Back to archive index