Labo

AS3で指定した文字数だけフォントを埋め込む

タイトルなど、後々変更がありそうな文字をスクリプトで書いておきたい場合があると思います。

var str:String = "AS3で指定した文字数だけフォントを埋め込む";

その方法として、ライブラリパネル + AS3を使用する方法があります。

まず、テキストツールを選択し、ステージ上にダイナミックテキストか、テキスト入力でフィールドを作り、使用したいフォントを選択します。今回は「FOT-ロダン Pro B」にします。

umekomi_font_1.jpg

次に埋め込みたい文字を指定します。

umekomi_font_2.jpg

今回は描画の結果を分かりやすくするために、「AS3で指定した文字数だけフォントを」の18文字だけを埋め込むことにしました。

次に、テキストフィールドをムービークリップシンボルにし、シンボル化が終わったらステージから削除してください。(MC名は「mcFont」にしました)

ライブラリパネルに「mcFont」ができるので、それを右クリックし「コンパイルされたクリップに変換」を実行します。

umekomi_font_3.jpg

すると、「McFont SWF」というコンポーネントができます。

umekomi_font_4.jpg

あとはフレームアクションに以下のスクリプトを記述します。

var textformat:TextFormat = new TextFormat();
textformat.font = "FOT-ロダン Pro B";
textformat.size = 32;

var textfield:TextField = new TextField();
textfield.autoSize = TextFieldAutoSize.LEFT;
textfield.embedFonts = true; //ここ重要!
textfield.defaultTextFormat = textformat;
textfield.text = "AS3で指定した文字数だけフォントを埋め込む";
textfield.rotation = 20; //20度回転
addChild(textfield);

「AS3で指定した文字数だけフォントを埋め込む」の文字を指定フォントで出力したかったのですが、実際に埋め込んでいる文字は「AS3で指定した文字数だけフォントを」までなので、最後の方の文字はswf上には出てきません。

"This is Demo Flash."

日本語フォントを全部埋め込んでしまうと、どうしても2MB〜4MBほどファイル容量が増えてしまいますし、swf書き出し時にも時間が掛かってしまいます。
しかしダイナミックテキストフィールドを、指定したフォントを使用しつつ、動的に生成したいという場面も結構あると思いますのでそういった時に便利な方法だと思います。
例えば平仮名だけを使用する場面にも有効ですし、特殊文字を省くだけでも容量を稼げます。

ちなみにこの方法は以下のエントリー記事を参考にさせていただきました。

□_level0.KAYAC
http://level0.kayac.com/2007/08/publish_font.php

□hedgehog's blog
http://d.hatena.ne.jp/iDrop/20071025/1193300968

09.07.12.PM09:31

Voice

Leave a Reply
name:
e-mail:
url:
voice:

Track Back

http://plamo-tokyo.com/site/mt-tb.cgi/46