« いろいろありすぎた週末 | トップページ | Re:package livetune feat. 初音ミク »

2008.04.10

フォント

自前のフォント描画プログラムを使って、四角い図形の上に上下左右センタリングして文字を描画した。
文字列は「LOAD」「SAVE」「WIDTH」「HEIGHT」とかそんなの。
フォントはある等幅フォント。

画面に描画された状態をチェックするとあきらかに図形の中心より2、3ピクセル下にずれているように見える。

デバックをしてみたが、きちんとフォントの高さは生成したときと同じ18ピクセルと取得できる。
フォント生成ツールも描画ルーチンも自前だったので、いろいろな場所を疑って1日経過したが原因がつかめない…。

そこで発想をかえてAdobeのPhotoshopElementsで同じものを描画したらどうなるか確認してみた…。

Gw20080410092054

グリッドは18ピクセルで区切り、フォントも等幅18ピクセル。
あれ?やっぱり大文字は上にずれて見える。
小文字もやってみたが大文字ほどではないにしろ、下に少しずれて見える…。

実はすでに1文字目を打った時点で原因に気づいてしまった…。
そうか…。

Gw20080410092237

こういうことか…。
私の自前ルーチンに記録されているフォントの高さは最大のものを記録しているだけだ。
大文字だけで構成された文字列をその値で四角い図形の上にセンタリングすると上にずれて見える(いや実際そうなんだけど)原因は「セルの高さ」と「文字列の高さ」は違うことに気がつかなかった自分にあったわけだ…くぅ。

そこで文字列の中で一番高い縦幅を取得する関数を作って、その値でセンタリングをすることにした。

結果

Gw20080410094320

くぅ、こんなこと気づかないなんて…もう歳かしら…

|

« いろいろありすぎた週末 | トップページ | Re:package livetune feat. 初音ミク »

プログラム」カテゴリの記事

プログラミング」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: フォント:

« いろいろありすぎた週末 | トップページ | Re:package livetune feat. 初音ミク »