Labo
AS3で指定した文字数だけフォントを埋め込む
タイトルなど、後々変更がありそうな文字をスクリプトで書いておきたい場合があると思います。
var str:String = "AS3で指定した文字数だけフォントを埋め込む";
その方法として、ライブラリパネル + AS3を使用する方法があります。
まず、テキストツールを選択し、ステージ上にダイナミックテキストか、テキスト入力でフィールドを作り、使用したいフォントを選択します。今回は「FOT-ロダン Pro B」にします。
次に埋め込みたい文字を指定します。
今回は描画の結果を分かりやすくするために、「AS3で指定した文字数だけフォントを」の18文字だけを埋め込むことにしました。
次に、テキストフィールドをムービークリップシンボルにし、シンボル化が終わったらステージから削除してください。(MC名は「mcFont」にしました)
ライブラリパネルに「mcFont」ができるので、それを右クリックし「コンパイルされたクリップに変換」を実行します。
すると、「McFont SWF」というコンポーネントができます。
あとはフレームアクションに以下のスクリプトを記述します。
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上には出てきません。
日本語フォントを全部埋め込んでしまうと、どうしても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