幅の合計が合わない
やっぱりフォントの扱いはハンパじゃなく難しい。
この画像で何をやっているかというと、文字の並び方で幅が変っちゃうという検証。
真魚の内部では、「て」の文字幅と「し」の文字幅をいったん算出しちゃったら、
その文字幅を覚えておくことで、「て」や「し」が何度出てきても算出ナシで描画している。
文字幅を全部計算してたら激遅なので、1文字につき計算するのは1度きりだ。
それでうまくいくフォントもあれば、うまくいかないフォントもあるってこと。
2行目と3行目をみれば、「て」と「し」が同じ幅であることがわかる。
だが、4行目と5行目で「あ」の位置が違っていることに注目だ。
「て」の文字幅 + 「し」の文字幅 = 「てし」の文字幅
コレはうまくいっているが、
「て」の文字幅 + 「し」の文字幅 ≠ 「して」の文字幅
つまり、
「てし」の文字幅 ≠ 「して」の文字幅
ってことになっちゃったので、内部での処理方法が破綻してしまう。
カーソルとか選択とかの位置がおかしいことになってしまう。
同じフォントを違うエディタで試してみる。
メモ帳では、「てし」≠「して」で表示されているが、カーソル位置はマトモ。
EmEditorでは、「てし」=「して」で表示している。
理想はメモ帳と同じ動作だが、真魚を修正するならEmEditor風にするしかあるまい。
もう一つの問題。
http://www.microsoft.com/japan/msdn/windows/windowsxp/FixedPitchFont.asp
今回のプロポーショナルフォント対応は、XPでしか動作検証していない。
2000では、この問題のせいで等幅フォントをまともに表示できてない可能性がある。
でも、もう2000をインストールしたマシンはない。
またまた素人の壁を感じている。