各プラットフォームのフォントの高さについて
フォントの高さ、というのがプラットフォーム毎に少しずつ違うようなので、簡単にまとめてみた。
ここで言う「高さ」とは、一行表示する際に必要になる高さのこと。つまり、次の行との余白は含まない。
Microsoft (Win32 API) の場合
- Height = Ascent + Descent + InternalLeading
Win32 API は ExternalLeading というのが特徴的。要するに、上余白と下余白で、そこを API で細かく操作できるのは優位性がある。
Oracle (Java) の場合
- Height = Ascent + Descent + Leading
Leading は図にはないが、Win32 API の InternalLeading と同じ位置にある。また、図では Ascent がアルファベットの頂点にあるように書かれているが、実際にはもっと高い位置にあり、情報として使えない。
青が Ascent、紫が Leading、緑が Descent で、なんかスカスカすぎてこれでは高度なテキスト描画はできない。
Adobe (Flush) の場合
- Height = Ascent + Descent
情報が非常に細かい。ここまでの情報が取得できるのであれば、Flash 上に独自コンポーネントを構築することも難しくはないだろう。
Apple (Cocoa) の場合
- Height = Ascent + Descent
Win32 API と異なり、余白が下にある。続く行がないのに下に余白があるのはどうなんだろうか。X-height や Cap height という情報は使い勝手が良さそう。