0

11 か国語に翻訳された大きなフラッシュ サイトがあります。各言語でサイトを表示するために必要なすべての文字が外部の swfs (つまり 11 個の swfs) に埋め込まれているフォント ロード システムがあります。

サイトの最近の更新では、テキスト表示の 1 つの領域にテキスト レイアウト フレームワーク (TLF) を使用する必要がありましたが、これはもちろん、新しい CFF 形式に埋め込まれたフォントのみをサポートしています。タグ を使用してフォントの 2 番目のインスタンスを埋め込もうとしましembedAsCFF="true"た。フォント SWF にロードした後、 によって返された配列に表示されるため、このフォントが正しく登録されていることがわかりますFont.enumerateFonts

私が使用している TextFlow インスタンスには、次のプロパティ セットがあります。

textFlow.fontLookup = FontLookup.EMBEDDED_CFF;
textFlow.renderingMode = RenderingMode.CFF;
textFlow.fontFamily = "HeadingFontCFF";

ただし、表示されるテキストは埋め込みフォントを見つけられません。Times New Roman デバイス フォントで表示されます。[Embed]タグを TLF コードと同じクラス (つまり、同じ SWF に埋め込む) に配置すると、フォントが正しく表示されるため、TLF が正しく設定されていると確信しています。そのため、外部 SWF にロードされたフォントにのみ関連しているようです。

この問題は、ここにリストされているものに関連していると思います: Example of using embedded fonts loaded at runtime Flex 4 runtime loaded modules、ただし、この投稿は Flex 4 ビルドを参照していますが、私たちのものは純粋な Flash 10 ビルドです。

4

2 に答える 2

3

さて、たくさん掘り下げた後、答えを見つけました。コンパイラ引数を使用していたことがわかりました

-managers flash.fonts.AFEFontManager

これは、フォントのトランスコード時にデフォルト (BatikFontManager/AFEFontManager/JREFontManager) ではなく、AFEFontManager を使用するようにコンパイラに指示します。これらのフォント マネージャーは、フォント ファイルを取得し、Flash でレンダリングされるベクター アウトラインに変換します。詳細については、フォント マネージャーについてを参照してください。

この引数を入れると、タグを使ってもDefineFont4(CFF)ではなく、古いDefineFont3の方法で全てのフォントが埋め込まれているようですembedAsCff="true"

フォントの埋め込みに実際に使用されたメソッドを確認する簡単な方法は、 によってfontType返されたフォントのプロパティを確認することFont.enumerateFonts()です。値が「embedded」の場合は DefineFont3 が使用され、「embeddedCFF」の場合は DefineFont4 が使用されました。

これが誰かを助けることを願っています!

于 2010-11-30T15:00:57.437 に答える
0

「デフォルトでは、MX コンポーネントはテキスト表示に TextField を使用し、TextField は CFF フォントを使用できません。埋め込みフォントを使用するように指示された場合、TextField は空白を表示しますが、使用できるフォントやその文字のグリフがありませんSpark コンポーネントは FTE を使用し、FTE には CFF フォントが必要です. したがって、この 2 つを混在させると問題があります. CFF true と false の両方でフォントを 2 回埋め込むことができますが、それはあまり効率的ではありません. ほとんどの場合、MXFTEText を使用する場合. css ファイルを変更するか、プロジェクト プロパティのチェックボックスをオンにすると、MX コンポーネントは FTE および CFF フォントの使用に切り替わります。」投稿者: Alex Harui - 2010 年 9 月 2 日午後 9 時 12 分

ここに見られるように、主題に関連する非常に詳細な (そして長い) 説明があります。

于 2011-08-22T14:44:18.213 に答える