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

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

近状報告

随分久しぶりの更新になります。
この2か月ほど、プリントマジックのCS3からFlex3への移植作業を行っているわけですが、当初の予想以上に難航しています。
おかげで、しばらくこれにかかりっきり。
モバイルウィジェットとか、結局やる暇なく、締め切り迎えて断念ですね。
ま、おかげで移植のほうは、なんとかゴールが見えてきましたが。
今回の作業を通して、Flexについて感じたことなど。
1.ファイルサイズが巨大化する。
CS版のプリントマジックが300KBほどなのに対して、Flex版は700KBほどになる。
まぁ、ブロードバンドの時代から、このくらいのファイルサイズは問題ないけど、「倍になるのか・・・」という驚きはある。
2.処理が重い。
ステージ上に新しいコンポーネントを動的に生成するとき、そのコンポーネントが子沢山だと、生成処理に時間がかかる。
使い勝手としては、アクションに対しては即リアクションが欲しいところなので、このもたつきはとても気になる。
Flexプログラミング要諦は、こうしたところでいかに効果的な処理を組めるか、にあるのだろう。
その部分で、まだまだ経験とノウハウが足りない。
3.ActionScriptとMXMLとCSSとが混在して、うとおしい。
なんとなく、覚えることが無駄に多いような気がしてしまう。
いっそActionScriptだけで作ったほうが楽なのかもしれないけど、MXMLでできることはMXMLを使ったほうが楽な気がして、なんとなくどっちつかずなコードを書いてしまう。
このへんも、自分の中で「これはAS、これはMXML」という使い分けのノウハウが貯まるのを待つしかない。
──とまぁ、そんなこんなで。
やはり、CSに比べてFlexのほうがプログラミングの難易度が高い気がしますね。
とはいえ、一度Flexに来ると、再びCSに戻る気にはなりませんけど。
とりあえず、今はせっせと経験値稼ぎです。