点の集合体として設計されたフォントをビットマップフォントといいます。
各点は描画されるか否かの1ビットの情報です。一般に8ビットごとにまとめてバイト列で表現します。
上図のAの部分の1行目が□□□■■□□□ですから、白が0、黒が1であるとして 00011000 つまり16進表記で 0x18。 次の行も同じで、その次が 00100100 なので 0x24 というようにしていきます。このようにして A は、
18 18 24 24 24 7E 42 42 42
B は、
7C 42 42 42 7C 42 42 42 7C
ビットマップフォントは小さい文字だけならばデータ量も少なくて済み、表示のための負担も少ないのでWindowシステムのGUIになる前から使われています。
ビットマップ方式の小さいフォントを無理矢理拡大するとギザギザが拡大されます(このギザギザをエイリアシングといいます)。これを防ぐには次々と大きなフォントを作っていくことになりますが、これではデータ量が莫大になってしまいます。大きなフォントは次に説明するアウトラインフォントを使います。
大きく拡大しても形が美しいように、また線の太さの変化や「はね」や「はらい」などのデザインを表現するために文字を構成する線の輪郭(outline)を線のデータとして記憶するようにしました。これがアウトラインフォントです。
IPAフォント | さざなみフォント |
ディスプレイは点の集まりですから、アウトラインフォントも最終的には点のデータに変換されます。これをラスタライズといいます。まず輪郭線のデータを拡大してから、その中にある点を塗りつぶして文字を作ります。
赤い線が文字の形を表す線です。緑の線が画面を作っているピクセルを表しています。この赤い枠の中にあれば100%の濃さで黒く塗り、一部がかかっていればその量に応じて薄く塗ってみました。このようにすれば拡大が自由にできます。
輪郭データ | 18x18ピクセル程度に出力 (拡大した概念図) |
36x36ピクセル程度に出力 (拡大した概念図) |
180x180ピクセル程度に出力 (実際の出力) |
ビットマップ (Courier) |
拡大・縮小で品質が下がる いろいろな大きさを作るとデータ量が多くなるので、 大きな文字はビットマップで用意せず、アウトラインで作る。 |
|
アウトライン (Courier 10 Pitch) |
拡大・縮小でも品質が保たれる 一つのデータからいろいろな大きさを作れるのでデータ量を減らせる |