2

actionscript 3 プロジェクト (flex ではなく flash CS4) に適切なフォントを埋め込むのに問題があります。

この Adob​​e ガイドに従ってフォントの埋め込みを行いました: http://www.adobe.com/devnet/flash/quickstart/embedding_fonts/

このガイドでは、Textfield.embedFonts プロパティを true に設定するように指示しています。そうして、このテキストフィールドに別のフォントでテキストを表示しようとすると、何も表示されません-それで問題ありません。このようになると思います。

しかし今、私はこの特定の問題を抱えています:

フォント「Arial」を通常のスタイルで埋め込み、ステージ上に 2 つの入力テキスト フィールドを作成します。そのうちの 1 つは、embedFonts プロパティを true に設定し (ガイドで説明されているように)、もう 1 つはそのままにしておきます。今、私は物をswfとして公開し、次の(トルコ語)文字列をテキストフィールドに入力しようとしています

Yeni Yılın Barış ve Mutluluk Getirmesini Dileriz.

ここでの問題は、そのままのテキストフィールドに文字列が正しく表示されることですが、embedFonts が true に設定されているテキストフィールドでは、一部の文字が欠落しています (たとえば、ş が表示されません)。しかし、Arial フォントは静的に正しく表示されるため、この文字を持っています。では、このプロパティを設定すると (ガイドで説明されているように) 正しくレンダリングされないのはなぜですか?

私の最終的なアプリには、単一の textField がありますが、複数の埋め込みフォントとそれらを切り替える方法があります (たとえば、ユーザーは中国語のテキストを入力するために別のフォントを選択できる必要があります)。

誰かがそれを正しく行う方法を教えてもらえますか?

ありがとう!

4

3 に答える 3

2

システム フォントを使用し、Arial などの埋め込みフォントは使用しません。

  public function get availableFonts(): Array
  {
     var font: Font = null;
     var allFonts: Array = Font.enumerateFonts(true).sortOn("fontName", Array.CASEINSENSITIVE);
     var embeddedFonts: Array = Font.enumerateFonts(false);

     var excludeList: Object = {}
     for each(font in embeddedFonts)
     {
        excludeList[font.fontName] = '';
     }

     var ourFonts: Array = [];
     for each(font in allFonts)
     {
        if (!excludeList.hasOwnProperty(font.fontName))
        {
           ourFonts.push(font);
        }
     }

     return ourFonts;
  }

これが返すフォントのリストには、すべての文字が含まれます。

(ActionScript に集合差分を行うための簡単な方法が組み込まれていると便利だと思いませんか?)

于 2009-11-20T20:16:17.067 に答える
2

Flash へのフォントの埋め込みは、本来あるべきほど簡単ではなく、特殊なケースがたくさんあります... フォントの正しい文字を確実に埋め込む 1 つの方法は、Flash パブリッシュで [サイズ レポートの生成] を有効にすることです。設定....そこには、埋め込まれているすべてのフォントのすべての文字が表示されます。唯一の例外は、[EMBED タグを使用して埋め込まれたフォントがそこに表示されないことです。

フォントをライブラリに追加しても、そのフォントの文字セット全体は埋め込まれません (たとえば、Arial は約 8MB です)...それらのサブセットのみが埋め込まれます...常に標準の西洋文字であるかどうかはわかりませんラテン語セット、またはコンピューター言語に依存する場合。このセットは、実際のライブラリ フォント名を使用する限り (「文字の埋め込み...」ダイアログを使用して) ムービー内の任意のテキスト フィールドを使用して手動で拡張できます (フォント リストの最後にアスタリスクが付いて表示されます...あなたの場合は "Arial*" になります)。

[EMBED タグを unicodeRange と共に使用して文字セットを宣言することもできますが、そこで宣言したフォントは、編集時に Flash IDE で使用できないことに注意してください。実行時に ActionScript ( TextFormat、StyleSheet など)、これは Flash を扱う場合にはあまり実用的ではありません。

于 2009-10-15T10:33:52.743 に答える
0

実行時にさまざまなフォントをロードできる、より堅牢なフォント ロード ソリューションを探している場合は、ここにいくつかのコードを投稿しました ( http://labs.tomasino.org/2009/07/16/flash-as3-runtime -font-manager/ ) とその使用方法の説明。

于 2011-11-11T18:33:09.177 に答える