10 月 03 2007
FlashCS3で埋め込みフォントが上手くいかない時の対処法
FlashCS3のIDE上で、フォントシンボルを使った埋め込みフォントが、全く上手く行かなかったので 対処法を探しました。いやーハマった。
まず何も考えずに僕が試した方法は、以下の通り。 Flash8の感覚でやると、こうではなかろうか?
間違った方法
// テキストフォーマットを作成
var format:TextFormat = new TextFormat();
format.size = 30;
//フォントをリンケージ名で指定する
format.font = 'MyFont';
// テキストフィールドを作成
var field:TextField = new TextField();
field.defaultTextFormat = format;
field.embedFonts = true;
field.antiAliasType = AntiAliasType.ADVANCED;
field.text = 'テスト';
// ステージに配置
addChild( field );
そして、ライブラリに「新しいフォント」シンボルを作る、 埋め込むフォントを指定して、リンケージを設定だ。


これでコンパイルすると、フォントが表示されません。。
調べた
で、調べてみるとあった。
Font embedding problems in Flash CS3 IDE
ざっくりと呼んでみると Font.enumerateFonts()で埋め込んだフォントを調べてみると フォントの名前がリンケージ名じゃないから TextFormat.fontでリンケージ名を指定しても、フォントが見つからないって寸法だ。
やってみた
それを回避するための方法が以下
format.font = new MyFont().fontName;
できた!
ライブラリにフォントシンボルを作って、リンケージを指定するときに ベースクラスがflash.text.Fontだった事に気づいていると思う。 CS3では、リンケージ名=クラス名だから、クラスのインスタンスプロパティを使ってあげれば良いという事になる。