FreeTypeは,David Turner 氏等によって開発されたフリーな TrueType font のラスタライズエンジン (ライブラリ) です. 元々は OS/2 のために Pascal 言語で開発されていたようですが, 現在は C 言語に移植されており多くのプラットフォームで利用可能です. hinting や anti-aliasing をサポートしているなど非常に完成度が高く, 本家の Mac OS や Win95 と比べても遜色のない美しい品質を実現しています. 日本語を含む 2 byte 系の Font も問題無く扱えるようです.
FreeType は長らく Public beta version の状態が続いていましたが, Jan. 29 1998 に待望の正式版 (FreeType 1.0) がリリースされ, 現在は FreeType 1.1 が公開中です. また,次期バージョン (FreeType 2.0) に向けての作業も進行中で, 最新の snapshot を freetype-current として入手することもできます.
FreeType のパッケージには configure スクリプトが用意されていますので, UNIX 系の OS ならば特に苦労することなくライブラリ (libttf.a) とサンプルプログラムを make できると思います. UNIX の他にも DOS, OS/2, amiga などに移植されているようです.
FreeType を使って日本語のフォントを簡単に利用できるようにするため, VFlib (角川裕次氏によるベクトルフォントライブラリ) のための FreeType driver (VFlib の API を FreeType の API に変換する wrapper) を作ってみました. VFlib は現在 Version 3.x (the project TypeHack) が開発中ですが, 対応アプリの多いことを考慮して VFlib-2.22 用の font driver として実装しています.
cd VFlib-2.22pl8/src
patch < somewhere/VFlib-2.22-Patch9
patch < somewhere/VFlib-2.22-Patch10
cd ..
zcat somewhere/VFlib-FT1.0-PL2.diff.gz | patch
のようにパッチを当てて make して下さい また,VFlib (+ FreeType) の共有ライブラリを作成する方法については, 塩崎拓也氏による 解説を参照して下さい. なお,VFlib-FT1.0.diff.gz は, このページにある共有ライブラリの作成をサポートするパッチ (VFlib-shlib-support.patch) を含んでいます.
FreeType driver を利用するためには, vfontcap の中でフォントタイプを ft=freetype と指定します. このとき,フォントファイルのパス (ff=) は拡張子 (.ttf/.ttc) も含めて指定してください (FreeType driver を利用する場合 .tti ファイルは必要ありません).
とりあえず,VFlib の API のうち利用頻度の多いと思われる
※
VFlib version 3.4.1 & VFlib version 2.23.1
がリリースされました.(June 25 1998)
VFlib version 2 系列の最新版となる ver.2.23.1 では,
上の FreeType パッチが統合され
標準で FreeType を利用できるようになりました.
一方 VFlib 3.4.1 には,より高機能な FreeType ドライバが実装されており,
日本語以外の TrueType font もサポートしています.
VFlib version 3.4.1 & 2.23.1 はいずれも
TypeHack packageに含まれています.
以下に VFlib で得られたビットマップの例を示します. 特に低解像度で文字の潰れがなくなり,かなり読みやすくなっていると思います.
![[Win95 WordPad (16 dot)]](wpad16.gif)
Win95 (WordPad) の表示画面 (12 point/96 dpi)
![[VFlib:ft=freetype (16 dot)]](vfft16.gif)
vftest -x 16 -y 16 -s 7 の出力 (ft=freetype)
![[VFlib:ft=truetype (16 dot)]](vftt16.gif)
vftest -x 16 -y 16 -s 7 の出力 (ft=truetype)
![[Win95 WordPad (24 dot)]](wpad24.gif)
Win95 (WordPad) の表示画面 (18 point/96 dpi)
![[VFlib:ft=freetype (24 dot)]](vfft24.gif)
vftest -x 24 -y 24 -s 7 の出力 (ft=freetype)
![[VFlib:ft=truetype (24 dot)]](vftt24.gif)
vftest -x 24 -y 24 -s 7 の出力 (ft=truetype)
当初は FreeType から hinting 後のアウトラインを取得する方法を考えていたのですが, ghostscript 側のラスタライズ処理と相性が悪いためか, 期待した程の効果は得られませんでした. そこで,gs2.61 の日本語パッチに付属していた pcf や jTeX ドライバを参考に, ビットマップデータでグリフを受渡しする方法を採用してみました. このとき, 出力デバイスの情報から常に適切なサイズ(=ラスタライズ時のサイズ) のビットマップデータを求めてやれば, 拡大縮小による歪みのないスケーラブルな文字データが得られるというわけです.
このパッチは Aladdin Ghostscript 5.10 + 田中哲氏による VFlib サポートパッチ 1.1 (or 1.2) + 片山紀生氏による Ghostscript 5.10 with VFlib 1.1 用日本語 PDF パッチ に対する差分になっています. 日本語 PDF パッチを使わない場合は, 必要に応じて kanji/kconfig を手で修正して下さい. また make の際は, 使用する makefile の kanji.dev kfvflib.dev のエントリを kfVFlibBM.mak の内容に置き換えて下さい.
使い方は,従来の kfvflib ドライバとほとんど同じですが, kanji/kconfig の中の VFlibkanji を VFlibBMkanji に書き換えることで, outlinekanji の代わりに bitmapkanji が使用されるようになります. 従来の VFlibkanji を指定することも可能です. VFlib に FreeType on VFlib が組み込まれている場合は, 一般に VFlibBMkanji を使った方が綺麗に表示されると思います.
※ 田中哲氏による VFlib サポートパッチ 1.4 がリリースされました. このパッチでは xfont (external font) interface を利用して, VFlib から取得したグリフを直接描画する方式が採用されています. VFlibBM と比較して処理速度等の面で優れており,要注目です!!
![[kfftype.dev (article9.ps, 72dpi)]](art9ft.gif)
FreeType を利用した場合の表示例 (article9.ps, 72dpi)
![[kfVFlib.dev (article9.ps, 72dpi)]](art9vf.gif)
従来の kfvflib による表示例 (article9.ps, 72dpi)