カテゴリー
未分類

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

AS3での埋め込みフォントの共有について:其の一の続きです。
子swfのを親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設定しているオブジェクトがあるのに、タイムラインに配置していないとがクラッシュするバグがあるようです)
ただ問題点としてRSLはStageの初期化前に無条件で読み込みを開始しするため、Loadingの制御が出来ない(多分)。Progressionとかでこれをやると普通では”_onInit”が発動しなくなります。
あ、あと余談ですが、ステージ上に配置しなくても、「最初のフレームに書き出し」設定しているMovieClipオブジェクトの中にRSLを配置してもそのタイミングで初期化されます。ただしRSLの読み込みのタイミングはStageに配置しているのと同じで最先で発生して、Loading状況の取得もどこでやるのか良く分からない感じになっています。
でやってみたところ、それ以前の問題が・・・汗
共有自体は問題ないのですが、親swfに同じフォントを用いた静的テキストを配置するとダイナミックにレンダリングできないw (Player8までは出来ていたと思うけど)
共有の意味が・・・・汗
使えないソースはこちらから
http://www.img8.com/src/test_font3.zip
泣きたいわ・・・。

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

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

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

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

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

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です