Debian GNU/Linux の lenny というバージョンではビットマップフォントは少数派になっています。
ここではCourier(クーリエ)というフォントでビットマップフォントの実例をみてみます。
ビットマップは拡大するとギザギザが目立つし、縮小すると隙間がつぶれたり線がなくなったりと形が崩れます。
元々 12ptのA |
18ptを 12相当に縮小 |
18ptのA | 18ptを 32相当に拡大 |
元々 32ptのA |
|
本来の大きさ | |||||
4倍に拡大 |
そこで何種類かの大きさのものを設計します。
pt | 8 | 10 | 12 | 14 | 18 | 24 | 32 |
本来の大きさ | |||||||
4倍に拡大 |
しかし、この方法で次々と大きなフォントを作っていくとデータ量が莫大になってしまいます。Courier などビットマップ方式のフォントはLennyでは拡大しても、ある程度以上は大きくなりません。(ソフトによっては汚くなっても無理矢理拡大する場合があるかも知れません)そしてギザギザが見えています。このギザギザをエイリアシングといいます。
Courier とほぼ同じデザインでアウトラインフォントである Courier 10 Pitch で仕組みとデザインをみてみます。
アウトラインフォントの Courier 10 Pitch
pt | 8 | 10 | 12 | 14 | 18 | 24 | 32 |
本来の大きさ | |||||||
4倍に拡大 |
ビットマップフォントの Courier (再掲載)
pt | 8 | 10 | 12 | 14 | 18 | 24 | 32 |
本来の大きさ | |||||||
4倍に拡大 |
次の認識は間違いです。
最終的に表示される時はビットマップと同じにピクセルで表されますからギザギザが無くなるわけではありません。ビットマップでは大きなフォントが用意されていないために無理に拡大するとギザギザが拡大されて目立つということなので、大きなフォントをビットマップで用意すれば同等のきれいさを得ることができます。
特に小さな文字はアウトラインフォントでは返って汚くなりがちです。アウトラインフォントの中には小さい字のために内部にビットマップデータを隠し持っている場合があります。
大きなフォントをビットマップで用意すれば同等に表現できます。ビットマップは線の太さの違いなどを表現できないような小さな文字に使われることが多いので細かな変化を付けられないだけです。
上記の例では黒の他に灰色の部分がありギザギザの解消に一役買っています。小さい文字ではこれがないとつぶれて読めないことがありますが、色の濃さを使わないアウトラインフォントもあり得ますし、逆に灰色の部分を持つビットマップを作ることもできます
小さなフォントだけならビットマップの方がデータ量を少なくできます。しかし大きなフォントを品質を保って作るとなるとアウトラインの方が少なくできます。ビットマップは大きさが2倍になるとデータ量は4倍になります。しかも拡大・縮小をすると品質が落ちるのでいろいろな大きさのフォントをたくさん作る必要がありますのでアウトラインフォントと同じ品質で大きな文字を自由な大きさの字を作れるようにするにはビットマップの方がデータ量が多くなります。
確かに実際のビットマップフォントのファイル容量がはあアトラインフォントより小さいですが、これは大きなサイズの文字を入れていないことと、灰色の部分がなく白か黒かであることによります。
確かにアウトラインフォントは輪郭データと大きさから計算してビットマップにあたるデータを作り出してから表示しますから、ビットマップの方が表示が速そうです。小さな文字ではそれは揺るぎません。しかし大きな文字になるとビットマップでは文字のデータが大きくなり全部をあらかじめメモリ上に用意することができなくなる可能性があります。この場合ハードディスクなどに読みとりに行くことになりますがこれはかなり時間がかかる作業になります。こういう状況では一概にアウトラインフォントは表示に時間がかかると断言できません。