10 月 03 2007

FlashCS3で埋め込みフォントが上手くいかない時の対処法

Published by haga at 15:29 under actionscript3.0, flash, 日記

FlashCS3のIDE上で、フォントシンボルを使った埋め込みフォントが、全く上手く行かなかったので 対処法を探しました。いやーハマった。

まず何も考えずに僕が試した方法は、以下の通り。 Flash8の感覚でやると、こうではなかろうか?

間違った方法

import flash.text.*;

//  テキストフォーマットを作成
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 );


そして、ライブラリに「新しいフォント」シンボルを作る、 埋め込むフォントを指定して、リンケージを設定だ。

fontsymbol1.png

fontsymbol2.png

これでコンパイルすると、フォントが表示されません。。

調べた

で、調べてみるとあった。

Font embedding problems in Flash CS3 IDE

ざっくりと呼んでみると Font.enumerateFonts()で埋め込んだフォントを調べてみると フォントの名前がリンケージ名じゃないから TextFormat.fontでリンケージ名を指定しても、フォントが見つからないって寸法だ。

やってみた

それを回避するための方法が以下

//FontクラスのサブクラスMyFontからフォント名を取得
format.font = new MyFont().fontName;


fontsymbol3.png できた!

ライブラリにフォントシンボルを作って、リンケージを指定するときに ベースクラスがflash.text.Fontだった事に気づいていると思う。 CS3では、リンケージ名=クラス名だから、クラスのインスタンスプロパティを使ってあげれば良いという事になる。

Trackback URI | Comments RSS

Leave a Reply