« AS3での埋め込みフォントの共有について:其の弐(未解決) | Home | AS3での埋め込みフォントの共有について:其の四[ランタイム共有ライブラリ+フォントクラス編](ちょっと解決) »

Feb 072009

AS3での埋め込みフォントの共有について:其の参[ランタイム共有ライブラリ編](未解決)

AS3での埋め込みフォントの共有について:其の一の続きです。

子swfのFontクラスを親swfで使用するやり方は便利な面もありますが、先のエントリーに書いたようにコンフリクトが発生する可能性があります。コンフリクトをクリアするには、子swfの中でそのフォントのTextFieldを適応したTextFieldを生成して親に戻してやれば親swf上で表示可能ですが、早い話がTextFormatのテンプレートを内包する必要があり、TextFormatが追加になるたびにデータサイズの大きいフォントを内包する子swfを更新、その都度ユーザに読み込み負荷をかけることになり、本来の目的に則していないことになります。(コンパイル時間の短縮という制作サイドの利点もありますが、あくまでユーザの利点ベースで考えていきます。)

ということで、他のフォント共有方法というと昔からあるRSL(ランタイム共有ライブラリ)のやり方です。昔はこのやり方のほうにフォントのコンフリクトが発生していたのですが、どうもこの一連の検証をしていてフォントの管理方法がPlayer9からクラスベース(リンケージネーム)からFont.fontName(String)に変更されたような感じです。(この辺はapeirophobia: 特定の文字だけを埋め込んだフォントのランタイム共有方法(AS 2.0)に書いているように、Player9からコンフリクトが改善されている)

ということでまぁこなれた手法ではありますが、一応検証。


1)簡単なやり方
まず非常に一般的なやり方は、子swfにフォント埋め込み指定したTextFieldを内包したMovieClipを作成。それを「ActionScriptに書き出し」「ランタイム共有用に書き出し」「最初のフレームに書き出し」すべてチェックして、URLにはこの子swfのファイル名を記述。これをコピーして親swfにペースト。ステージ上に配置してやると、後はTextFormatで埋め込んだフォント名を指定。(※CS3からRSL設定しているオブジェクトがあるのに、タイムラインに配置していないとFlashがクラッシュするバグがあるようです)

ただ問題点としてRSLはStageの初期化前に無条件で読み込みを開始しするため、Loadingの制御が出来ない(多分)。Progressionとかでこれをやると普通では"_onInit"が発動しなくなります。

あ、あと余談ですが、ステージ上に配置しなくても、「最初のフレームに書き出し」設定しているMovieClipオブジェクトの中にRSLを配置してもそのタイミングで初期化されます。ただしRSLの読み込みのタイミングはStageに配置しているのと同じで最優先で発生して、Loading状況の取得もどこでやるのか良く分からない感じになっています。

でやってみたところ、それ以前の問題が・・・汗

共有自体は問題ないのですが、親swfに同じフォントを用いた静的テキストを配置するとダイナミックにレンダリングできないw (Player8までは出来ていたと思うけど)

共有の意味が・・・・汗

使えないソースはこちらから
http://www.img8.com/src/test_font3.zip


泣きたいわ・・・。

6 Comments

あ、ちなみに埋め込みで全文字を選択するとfont classで埋め込みするよりもファイルサイズが増加する場合があります。理由はちょっと分からないけど、埋め込みとFont classでは文字情報の持ち方が違うのかもしれません。しらんけど。

なんか読み込みRSLを入れた親SWFの書き出しファイルサイズが偉い増加しているのだが・・・何故に?埋め込んだフォント分サイズが増えているような気がする・・・意味ねえ・・・汗

なんと、共有フォントと一緒のフォントで親SWFにStaticテキストを配置すると、親の方でもフォントを全部コンパイルするっぽい。なんじゃそりゃ?一体どういう仕様なんだ?!

っとコンフリクトがこっちでも発生した!?
なにーーー?!
ちょっと一度このエントリ保留!!

この結果を踏まえると、Font classを用いる手法で、子swf内でTextFormat適応したTextFieldを戻すやり方が一番確実なのか?なんということだ?!
なんか根本的なミスをしていて
簡単に解決できる!
とか希望・・・・汗

お!!!
解決できるかも!

Leave a comment

Search and Archives