[Mplus-fonts-dev 93] Re: スクリプトアップデート

Back to archive index

MURAOKA Taro koron****@tka*****
2003年 11月 21日 (金) 16:43:41 JST


村岡です。

> これの意図がよく分からないのですが。
> ・スクリプトから SetPanose() が呼び出されるたびごとに、pfminfo
>   を初期化する
> ・SetPanose() が一度でも呼び出された場合には、(何かのタイミング、
>   おそらくは保存時に) pfminfo を初期化する
> のどちらの意味でしょうか? また、初期化する時の値はどこから
> 持って来るのでしょうか?

対象はtottf.c:SFDefaultOS2Info()です。

オリジナルのコードの意図は私にも検討がつかなかったのですが、動作は
  1. _sfがセット(pfmset)されていればpfminfoを_sf->pminfoで上書する。
     (但しpfminfoと_sf->pminfoが同じ場合、無駄なコピーは避けている)
  2. pfminfoがセット(pfmset)されていれば、pfminfoをクリアしてフォント
     名等からそれらしい値を決定し初期値とする。
  3. どちらもセットされていない場合には何もしない。
という風になっていました。

実際の使用ではSFDefaultOS2Infoの最初の呼び出しのほとんどのケースでpminfo
と_sf->pminfoが同じもの、かつpfmsetされてない状態で呼ばれるので3となり何
も実行されません。しかしSetPanose()ではscripting.c:bSetPanose()で
SFDefaultOS2Info()を呼んだ直後にpfmset=1しています。そのためSetPanose()
を繰り返しても初めは3、あとは1だけが実行されるだけで2は実質実行されない
のです。

ここでちゃんと考えてみると2の「pfminfoをクリアしてフォント名等からそれら
しい値を決定し初期値とする」というのはフォントのpfminfoが全く設定されて
いない時にこそ意味があるものですから、条件の「pfminfoがセット(pfmset)さ
れていれば」は間違いで正しくは「pfminfoがセットされていなければ」が正し
いのではないかと推測しました。

どうでしょう?
----
MURAOKA Taro  <koron****@tka*****>



mplus-fonts-dev メーリングリストの案内
Back to archive index