アーカイブ

TLF (Text Layout Framework) と戯れる #09

埋め込みフォント サンプル

TLF に埋め込みフォントを適応させるための手段について書きます。
FTE の仕様上、TLF の埋め込みフォントフォーマットは DefineFont4(CFF) フォーマットである必要があります。( 従来の TextField に使用されているフォントフォーマットは DefineFont3 フォーマットです )

フォント埋め込み方法

AS, MXML のどちらを使用しても CFF 形式でフォントを埋め込むことは可能ですが、Flash Builder 4 β 2 付属の SDK(4.0.0.10485) で確認したところ、フォント埋め込み時の Embed メタデータタグの引数 cff が、embedAsCFF と名称変更されていたので注意が必要です。

AS での埋め込み例

package {
import flash.display.Sprite;
public class TaigaFont extends Sprite {
    [Embed(
        source               = "asset/font/KozMinPro-Bold.otf",
        fontName             = "testFont",
        mimeType             = "application/x-font",
        embedAsCFF           = "true",
        advancedAntiAliasing = "true",
        unicodeRange         = "U+5927, U+96c5" //大雅
    )]
    public static const FONT:Class;
}
}

上記コードは、フォントを埋め込んだクラスを SWF に書き出して、Loader クラスから外部読み込みして使用することを想定したものですが、この場合、基底クラスは Sprite または MovieClip クラスである必要があります。( Font クラスを基底クラスにしても mxmlc は SWF を書き出せますが、Loader が読み込んでくれません )

読み込み完了後、作成した TextFlow インスタンスの fontLookup プロパティの値を “embeddedCFF” (FontLookup.EMBEDDED_CFF) に定義して、TextLayoutFormat の fontFamily に取得したフォント名を定義します。