プリントマジック3.0.0

こちらのブログでも書きましたが、プリントマジック3.0.0がリリースされました。
3.0.0の注目はもちろん「達筆化」ですが、達筆化の変換処理自体はぼくが作ったわけではないので、ぼく個人としてのアピールポイントはTextLayoutFramework(TLF)だったりします。
TLFはFlash(AIR)でDTP用アプリケーションのような文字組を可能にする新しいテキストエンジンで、これを使えば日本語の表示機能が格段にアップするというシロモノです。
ただ、まだ正式にリリースされていないのかな?
とにかく登場したばかりで、リファレンスなども英語オンリー。
現状、日本語での情報がほとんどないような有様です。
ですから、日本語でここまで本格的かつ実用的にTLFを使用したのは、このプリントマジック3.0.0が初めてなんじゃないかなーと思います。
調べていないので分かりませんけど、たぶん。
なにせ情報がほとんどないので、実装には苦労しました。
TLF自体もまだまだ開発途中ゆえか、動作のあやしいところがいくつかあったりして。
とくに、フォントによっては縦書きで長音記号(ー)がきちんと縦にならないとか、Algerianフォントに至っては実行エラーが発生して使えないとか。
使い勝手では、まだまだ埋め込みフォントに及ばないというのが正直なところですが、でもまあ、あるとないとでは大違いですから。
そんなこんなで。
いろいろパワーアップしたプリントマジック、ぜひお試しください。
そして、不具合などがあればご一報いただけると嬉しいです。

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

次期バージョンのプリントマジックでは、ローカルフォントを使えるようにしたいと思っているのだけど、なかなか難しい。
ローカルフォントを使うこと自体はすでに実装済みなのだけど、ローカルフォントは埋め込みフォントじゃないので、環境によってはアンチエイリアスがかからない。
この対策が一筋縄ではいかない。
まず試みたのは、BitmapDataにdrawして拡大縮小するという方法。
BitmapDataのスムージング機能を使ってアンチエイリアスをかけちゃおうというやり方です。
この方法で9割方上手くいくのだけど、ごく一部のフォント(と文字サイズ)によっては潰れてしまって見るに堪えなくなるのが珠にきず。
ならば、BitmapDataにdrawしたデータをもとに、ベクターデータを生成して描画してやる方法はどうか、と。
調べると、PotrAsというライブラリがあったので、これを使えば行けるんじゃないかと思ったのだけれど、GPLライセンスだったので使用を断念。
また、やはり一部のフォントによっては上手く描画できなかったりもしたし。
ならば、自分でベクターデータを生成する処理を書くか、と思ったけれど、当然のようにかなりの難易度で、途中で面倒くさくなって断念。
輪郭をトレースするところまではできても、それを曲線化するのが難しいね。
ならば、ビットマップデータに対して独自にアンチエイリアスをかける処理を書こうとしたけれど、どうもいまひとつきれいなアンチエイリアスが生成できない。
9割方のケースでは、BitmapDataのスムージングのほうが美しい。
うーん、どうしたものか。
悩ましいな。