6

フラッシュへのフォントの埋め込みに関連する質問をたくさん見ましたが、問題の答えが見つからないようです。

フォントswfからフォントをロードし、子swfsで使用できるように高レベルで登録します。問題は、子swfもこれらのフォントを埋め込む可能性があることですが、明示的にはそうではありません。つまり、子swfにはフォントの特定の文字を使用するフィールドがあるため、これらのフォントは埋め込まれるだけです。これは、子のテキストフィールドが、親または任意のレベルの祖父母に登録されている埋め込み完全セットではなく、不完全な埋め込みフォントを使用することを意味します。また、これは、この子の子になる可能性のあるswfsが完全なフォントを取得しないことを意味します。

私の質問:コンパイル時にフラッシュに、どのような状況でもフォントをswfに埋め込まないように指示する方法はありますか?そうでない場合は、コンパイルされたswfから埋め込みフォントを削除するツールはありますか?

これまでに私が考えた/気づいたことがいくつかあります:

  • 各FontクラスがApplicationDomainに関連付けられているように見えます。(これを確認すると便利です)
  • テキストフィールドでデバイスフォントを使用しても、フォントは埋め込まれません。(ただし、親swfから実行時にフォントを埋め込むためのフィールドが必要なため、オプションではありません。)
  • フォントの登録を解除する方法や、ロードされた子swfsに親フォントを使用するように指示する方法が見つかりません。これは、ロードされた子swfsに適用するのに役立ちます。
  • フォントの親定義が子定義をオーバーライドできるようにする別のコンテキストで子をロードできる場合があります。(または、2つの定義があり、その場合、どちらが優先されますか?)
  • 子のライブラリからアセットをロードしてステージに追加すると、フォントの親定義が取得されます。(アセットは子のドメイン外で作成されるため、これは理にかなっています)
  • 考えられる解決策は、swfのコンパイル用にテキストフィールドに文字を追加しないことですが、フォントを使用した静的テキストが必要なため、これも実際にはオプションではありません。

私は自分の頭の中で間違っているかもしれない問題の定義を作り始めたので、必要に応じて少し前に戻って、問題について別の見方をしてください。これまでのところ、私が上で尋ねた質問は答える正しい質問であるように思われ、それに対する解決策があれば、私の問題はすべてなくなります。

ありがとう!

4

3 に答える 3

0

私が理解しているのであれば、すでにロードされているが別のswfに埋め込まれているこの特定のフォントのバージョンほど完全ではないすべてのフォントを削除/登録解除したいですか?

埋め込まれているすべてのフォントはクラスを作成し、Loaderクラスを介してロードするすべてのswfは、名前空間の衝突を防ぐためにデフォルトで独自のアプリケーションドメインにロードされますが、»ローダーを使用してローダーにすべてを現在のアプリケーションドメインにロードさせることができますローダーのload()メソッドのcontext«パラメーター。したがって、この方法では、同じ名前空間内のクラスを相互にオーバーライドするように強制できますが、破棄するクラスを制御できないため、どのフォントにグリフが多いかを確認できません。(おそらく、オーバーライドする代わりにエラーをスローし、まったく実行されません。これについてはよくわかりません)。

一方、フォントが実際に子のswfファイルにどのように埋め込まれているのか疑問に思う必要があります。フォントを次のように埋め込む以外に方法はありません。

* .fla-filesで»ライブラリシンボル«として、またはflashbuilderまたはflexのコードで次のようになります: [Embed(source="c:/windows/fonts/verdana.ttf", fontFamily="Verdana", embedAsCFF="false")]

またはこれ:

@font-face {
    src: url("../assets/MyriadWebPro.ttf");
    fontFamily: myFontFamily;
    advancedAntiAliasing: true;
}

mxmlファイル内。したがって、(私が推測する)結果として生成されるクラスの名前は、開発者が指定した»font-family«プロパティ(またはさらに多くの設定)に依存します。つまり、同じフォントがクラスの2倍に埋め込まれている場合でも-設定により名前が異なる場合があります。

また、Font.unregisterFont()メソッドがないため、同じFontクラスが何らかの形で見つかる可能性がある場合に備えて、これをどのように管理するかは良い質問です(おそらく、RegExpはフレンドリーなヘルパーになります)。

これを適切に解決するには、コンパイル時に制御する必要があると思います。xmlベースの* .xflプロジェクトファイルを使用すると役立つ場合がありますが、参照されるFont-Fileの名前が異なる場合もあります。

いい問題、頑張って

于 2012-10-23T23:07:53.147 に答える
0

フラッシュでフォントを使用する際に多くの問題が発生しました。さまざまなブラウザがさまざまな方法でレンダリングするHTMLでは、依然として問題があります。

とにかく、フラッシュのために、私は私を大いに助けるこのツールキットを作りました。フォントをカスタマイズする方法を確認してください。あなたがステップを実行するならば、私は問題が解決されるとかなり確信しています。

https://github.com/tbwa/AS3-Toolkit/tree/master/src/com/utils/text

于 2012-10-25T00:13:23.943 に答える
0

これは私のバージョンのFlashProfessionalのバグであることがわかりました。更新を行い、ランタイム共有フォントが可能になりました。おそらく、共有フォントをフォントの不正なURLにポイントします。そうすると、フォントは子swfsにコンパイルされないため、親アプリケーションドメインから取得されます。現在、Flash ProfessionalCS5.511.5.1を使用しています。CS5.511.5.0を使用していました。

http://forums.adobe.com/message/3926344

時間を無駄にしてくれたAdobeに感謝します。

于 2012-10-27T00:11:58.127 に答える