[AS3] Flex SDKのfontswfを使って埋め込み処理を簡略化する

2011/07/10

埋め込みの公式を見ていたら便利そうなツールを発見しました。

>> Using the fontswf utility

コマンドラインから埋め込み処理ずみのswfを作ってくれるというものです。
おお、結構便利。

macでどうやって使うのかなと思ったら、コマンドの最初に
./
の文字をつけないと認識しなかったです。.はカレントディレクトリの意味です。

だから terminalを起動して

cd "/Applications/Adobe Flash Builder 4.5/sdks/4.5.1/bin"

とbinフォルダまで移動。スペースがパスの間にはさむときは「”」ではさむのを忘れない。

./fontswf オプション 埋め込みフォントへのパス

とすれば良いです。

各オプションは

-a, -alias name
フォントのエイリアス名、デフォルトはフォントのファミリーネーム

-b, -bold
ボールドフェースを埋め込み

-i, -italic
イタリックフェースを埋め込み

-o, -output file_path
書き出し場所のパスを指定(最後はxx.swfとしておくとよいです)

-u, -unicode-range range
unicodeの範囲指定。デフォルトは全部の範囲。

-3
Flex3までのTextFieldに向けての埋め込み

-4
CFF=trueのFlex4(Flash Player10向け)での埋め込み。-3とではこっちがデフォルト

となっています。
unicodeの指定を漢字第一水準までの長いやつにしようとすると、terminalからだと
動作が重くなってしまうので、コマンドをテキストファイルにして、terminalから
シェルスクリプトとして実行するといい感じになりました。

こんなテキストファイルを作って
これをbinの一個上のフォルダにおきます。
binにおいてもいいのだけど、大事なものに混ざっちゃうのはいやなので、そうしました。

terminalから

cd /Applications/Adobe Flash Builder 4.5/sdks/4.5.1

と打って、(さっきのbinからだったら、cd ../ でもOK)
テキストファイルの位置に移動

テキストファイルの最後の部分に

-a Myfont -o /Users/foo/temp.swf /Users/foo/A-OTF-FutoGoB101Pro-Bold.otf

と書いてあります。
ここがさきほどのオプションの部分です。
Myfont は自分で決める書き出し用のシンボル名なので、com.foo.BarFont とかしてもOKです。

-o に続く/Users/foo/temp.swfが書き出しファイル名
最後の/Users/foo/A-OTF-FutoGoB101Pro-Bold.otfがフォントの場所

この辺は環境に応じて適宜かえます。

それで、terminal上から

sh MyEmbedCommand

とうてば、埋め込み済みのswfが完成します。
たくさん埋め込むときには、名前の部分をかえればいいだけなので、楽かも。

使うときは、Embedでまずswfを埋め込みます。
Loader使ってもいいみたいなので、気になる人はググるといいかも。

		[Embed(source="temp.swf",symbol="Myfont")]
		private var _fontClass:Class;

symbolの部分がさきほどの-aオプションの部分でつけた名前です。
ひもづけられる_fontClassの部分は適当に。実際には使わないです。

			var cf:TextLayoutFormat = new TextLayoutFormat();
			cf.fontSize = 48;
			cf.fontFamily = "Myfont";

とかやれば、無事にcffのフォントとして認識されます。
埋め込みでcffじゃなく前のバージョンでやりたいときは、下のページで紹介されてます。
基本はやり方一緒です。-a のところと symbol のところがポイント。

>> FontSwf Utility in FLEX SDK 4


自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る