2010-11-29 17 views
0

11か国語に翻訳された大規模なFlashサイトがあります。私たちは、各言語でサイトを表示するのに必要なすべての文字が外部swfs(11 swfs)に組み込まれているフォントロードシステムを持っています。実行時に外部SWFに埋め込まれたCFF埋め込みフォントのトラブルシューティング

最近のサイト更新では、新しいCFF形式に埋め込まれたフォントだけをサポートするテキスト表示の1つの領域にテキストレイアウトフレームワーク(TLF)を使用する必要があります。私はembedAsCFF="true"というタグを使ってフォントの2番目のインスタンスを埋め込みましたが、フォント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ビルドです。

答えて

3

私は答えを見つけました。それは私たちが、むしろデフォルト(BatikFontManager/AFEFontManager/JREFontManager)よりも、フォントをトランスコードする場合AFEFontManagerを使用するようにコンパイラに指示コンパイラー引数

-managers flash.fonts.AFEFontManager 

を使用していたが判明しました。これらのフォントマネージャは、フォントファイルを取り込み、それらをベクトルアウトラインに変換してFlashでレンダリングします。さらに詳しい情報はAbout the font managersです。

この引数を含めると、タグembedAsCff="true"を使用していても、DefineFont4(CFF)ではなく古いDefineFont3メソッドを使用してすべてのフォントが埋め込まれているようです。

フォントを埋め込むために実際にどの方法が使用されたかを簡単に確認するには、Font.enumerateFonts()によって返されたフォントのfontTypeプロパティを確認します。値が "埋め込み"の場合はDefineFont3が使用され、 "埋め込みCFF"の場合はDefineFont4が使用されます。

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

+0

上記で参照したアドビリンクの最新バージョンがあります:http://help.adobe.com/jp/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7e09.html – geo

+0

これは私を助けました。ありがとう! – eldamar

0

これは非常に便利だとわかりました:"デフォルトでは、MXコンポーネントはテキスト表示にTextFieldを使用し、TextFieldはCFFフォントを使用できません.FindFieldは埋め込みフォントを使用するように指示されていますが、フォント内のその文字のグリフを使用することができます。SparkコンポーネントはFTEを使用し、FTEはCFFフォントを必要とするため、2つのフォントを混在させるのは問題ありません。 MXFTEText.cssファイルを使用するか、プロジェクトプロパティのチェックボックスをオンにすると、MXコンポーネントはFTEおよびCFFフォントを使用するように切り替わります。 by Alex Harui - 2010年9月2日の午後9時12分

このように、対象に関連する非常に詳細な(そして長い)説明には、hereがあります。

関連する問題