Flex SDK 3 と Flex SDK 4 ではフォントの埋め込み方法が若干異なる

Flex SDK 3 と Flex SDK 4 で、フォント埋め込みのための Embed メタデータタグの記述が若干異なるようです。

下記のコードは Flex SDK 3 では正しく動作しますが、Flex SDK 4 では上手くいきません。

[Embed(source="hoge.ttf", fontName="hoge")]

Flex SDK 4 で動作させるためには embedAsCFF='false' を追記する必要があります。

[Embed(source="hoge.ttf", fontName="hoge", embedAsCFF='false')]

何故 embedAsCFF を false に指定するのか

FlashPlayer 10 は新しいテキストエンジン (FTE/Flash Text Engine) が搭載され、テキストの表示機能が強化されました。

FTE で使用するフォントのフォーマットは CFF (Compact Font Format) というもので、CFF は主に flash.text.engine パッケージのクラスで使用します。しかし、残念ながら FlashPlayer 9 のクラスである TextField では CFF を扱うことができません。

従って TextField で埋め込みフォントを使用するためには、CFF で書き出す機能を明示的にオフにする必要があります。

参考にしたサイト