あまつぶ

10.3 15:30

 本当は「Geneva2Osakaの未解決のバグ」というのを書く予定だったのだけど、解決できたようなので変更(笑)。
 前からずっと気にはなっていたのだけど原因がわからなくて対処できていなかったもの。システムフォントを変更したときに一部のフォントサイズが12ポイントになってしまうというものだ。
 フォントをシステムフォントにして文字を表示するとき、その大きさはカレントポートで指定されているものとは関係なく、システムグローバルSysFontSizeで指定されたものになる。だから例えばポップアップメニューを表示しようと思ったときにカレントポートのフォントサイズを変更してもメニューには影響しない。これを変更しようと思ったらシステムグローバルを変更する必要がある。このことは知っていた。
 今回のプログラムでは、システムフォントで表示しようとしたところをつかまえて別のフォントに変更している。このときに、フォントサイズを調整してやらないといけない。システムフォントのサイズをチェックしてそれをカレントポートのサイズに設定。表示が終わればまたそれらを元に戻す。この「元に戻す」を忘れていたためにこのバグが起こってしまった。また、TextFontでもシステムフォントが渡されたときに変更していたため、実際に表示するときにシステムフォントのサイズで表示すべきなのかカレントポートのサイズに従うべきなのかがわからないという状況になっていたわけだ。
 0.95b3ではTextFontでの変更はやめてすべて他の部分でチェックするようにしてみた。一応うまくいけている感じで、まずは一安心かな。

 これでおそらくまだ未解決な問題は「ハハハ」問題くらいか(あと行間の問題というのもあったっけ)。それから設定アプリケーションでフォントを変更したら再起動しなくてもokというのをがんばって作りたい。機能拡張のグローバル変数にアクセスできるようにして、変更したら画面全体を再描画させてやればいけるかな。再描画させる方法が思い付かないとなんとも言えないけど…。

to October 2, 1998 ↑ to October index → to October 4, 1998