ローカルフォントのアンチエイリアス

次期バージョンのプリントマジックでは、ローカルフォントを使えるようにしたいと思っているのだけど、なかなか難しい。

ローカルフォントを使うこと自体はすでに実装済みなのだけど、ローカルフォントは埋め込みフォントじゃないので、環境によってはアンチエイリアスがかからない。
この対策が一筋縄ではいかない。

まず試みたのは、BitmapDataにdrawして拡大縮小するという方法。
BitmapDataのスムージング機能を使ってアンチエイリアスをかけちゃおうというやり方です。
この方法で9割方上手くいくのだけど、ごく一部のフォント(と文字サイズ)によっては潰れてしまって見るに堪えなくなるのが珠にきず。

ならば、BitmapDataにdrawしたデータをもとに、ベクターデータを生成して描画してやる方法はどうか、と。
調べると、PotrAsというライブラリがあったので、これを使えば行けるんじゃないかと思ったのだけれど、GPLライセンスだったので使用を断念。
また、やはり一部のフォントによっては上手く描画できなかったりもしたし。

ならば、自分でベクターデータを生成する処理を書くか、と思ったけれど、当然のようにかなりの難易度で、途中で面倒くさくなって断念。
輪郭をトレースするところまではできても、それを曲線化するのが難しいね。

ならば、ビットマップデータに対して独自にアンチエイリアスをかける処理を書こうとしたけれど、どうもいまひとつきれいなアンチエイリアスが生成できない。
9割方のケースでは、BitmapDataのスムージングのほうが美しい。

うーん、どうしたものか。
悩ましいな。

Leave a Reply