[AS3]埋め込みフォントの盲点
フォントを埋め込んで外部ファイル化するときに
ぶつかったちょっとした問題の原因がわかったのでメモ。
まず埋め込みフォントの外部ファイル化の仕方。
フォントを埋め込んだswf
・ライブラリで右クリック
・新しいフォント
・名前をアルファベットで入力
・フォントを選択してok押下
・ライブラリに出来た「A」を右クリックしてリンケージを選択
・「ActionScriptに書き出し」「最初のフレームに書き出し」をチェック
・クラス名、基本クラスはデフォのままok押下
・パブリッシュ
外部埋め込みフォントを使うswf
・上述したswfをloaderでload
・読み込むときのコードは↓こんな感じ。いつもとちょっと違う
var urlRequest:URLRequest=new URLRequest(url); var loaderContext:LoaderContext=new LoaderContext(); loaderContext.applicationDomain=ApplicationDomain.currentDomain; target_loader.load(urlRequest, loaderContext);
・ロードが終わったら今度は↓のコード実行してフォント名を取得
var class_name="フォントシンボルのリンケージ"; var loadedFont:Font = new Font(); var LoadFontClass:Class=ApplicationDomain.currentDomain.getDefinition(class_name) as Class; Font.registerFont(LoadFontClass); loadedFont = new LoadFontClass(); font_name=loadedFont.fontName;
・フォント名が取得できたら任意のテキストフィールドに適応させる
var tex:TextField=テキストフィールド; var texf=tex.getTextFormat(); texf.font=font_name; tex.setTextFormat(texf); tex.embedFonts=true; tex.antiAliasType=AntiAliasType.NORMAL;
以上の処理で外部埋め込みフォントを使用できる。
しかしさっき特定の文字しか表示されないという問題が起こってしまいました。
色々調べたらどうやらloadするswfに外部のフォントと同じフォントを埋め込んでおくと
外部のフォントが適応されないらしい。言ってる意味がわかるだろうか。。。
埋め込むフォント:ヒラギノ角ゴ
font.swf :フォントを埋め込んだ外部ファイル
main.swf :font.swfをロードするファイル
とするとmain.swfにヒラギノ角ゴのフォントを一文字でも埋め込んでおくと
main.swfに埋め込んだ文字しか表示されなくなるということみたいです。
こんなことで2時間ちかく使ってしまった。
追記
同じフォントの静止テキストも無いほうが良いようです。

[...] = true; _tf.defaultTextFormat = _format; _tf.text = “foobar”; addChild(_tf); 参考リンク http://zapruder.main.jp/blog/?p=75 Filed under: [...]