2

Open Source Flex 4.5 SDK (Hero) でフォントを埋め込む際に問題がありますが、Flex 4 Open Source SDK でも同じ問題があります。プロジェクト構造の assets ディレクトリにいくつかの ttf ファイルを追加し、次のように CSS ファイルのフォントにアクセスしようとしています。

@font-face { 
src: url("../assets/DroidSans.ttf"); 
fontFamily: DroidSans;
embedAsCFF: true; 
}

この特定のフォントは、プロジェクト全体で多数の Spark コントロールに使用する必要があります (これが、embedAsCFF が true に設定されている理由ですが、このパラメーターはオプションであると考えています)。ただし、fontFamily プロパティで設定されている場合、どの Spark コンポーネントもこのフォントを表示しません。フォントを設定しようとするすべてのsparkコンポーネントをコンパイルすると、次のエラーが発生します。

警告: 互換性のない埋め込みフォント 'DroidSans' が (controlName) に指定されました。このコンポーネントでは、embedAsCff=true で埋め込みフォントを宣言する必要があります。

奇妙なことに、embedAsCFF が true に設定されていても、上記のフォントは mx コンポーネントで機能します (この件について調べたところ、mx コンポーネントでは false、spark では true に設定する必要があります)。

上記のコードは Flash Builder でも機能しますが、このプロジェクトはオープン ソース SDK を使用して開発する必要があり、失敗します。

何か案は?確かに他の誰かが同じ問題を抱えていましたか?

次のスクリプトを実行すると、フォントが「埋め込まれている」ことが示されますが、「CFFEmbedded」ではありません。Adobeのドキュメントには、これらは「CFFEmbedded」と言う必要があると書かれています

var fontArray:Array = Font.enumerateFonts(false); 
trace("Fontarray length: " + fontArray.length); 
for(var j:int = 0; j < fontArray.length; j++) { 
    var thisFont:Font = fontArray[j]; 
    trace("FONT " + j + ":: name: " + thisFont.fontName + " embedded as type:" + thisFont.fontType + "."); 
} 

ありがとう

ボブ

[編集]

OK - ようやくフォントを埋め込むことができました。CS4 の SWC、Flash Builder 4 の SWC、CS4 と Flash Builder の両方の SWF を試しました。

最終的な修正

1) Flash Builder 4 でフォントを SWF にパッケージ化します 2) 次の CSS を使用して、コンパイル済みの SWF を参照します

    @font-face {
        cff: false;
        src: url('../bin/DroidSansFont.swf');
        fontFamily: DroidSansMX;
    }

    @font-face {
        cff: true;
        src: url('../bin/DroidSansFont.swf');
        fontFamily: DroidSans;

    }

クレイジーなことは、「cff: true」ディレクティブの使用です。すべてのドキュメントには、「embedAsCFF」を使用するように記載されています。これは、「cff」属性を使用しているときにエラーをスローします-動作しているようです。

私にはわかりません - 誰かアイデアを教えてもらえますか?

4

3 に答える 3

0

おそらく古いSDKとコンパイラを使用しているため、最新のSDKビルドでは「cff」の名前が「embedAsCFF」に変更されました。ビルドFlex SDK 4.0.7972ビルド以降、このディスカッションhttp://forums.adobe.com/thread/36399を参照してください。それを証明するFlexSDKエンジニアからのコメント

于 2011-01-17T08:58:23.310 に答える
0

記載されている問題は、おそらくデフォルトのフォント マネージャセットを使用したことが原因です。CFFFontManagerを使用する必要があります。通常、フォールバックを許可するために、4 つの可能なマネージャーすべてを定義します。これは通常、spark コンポーネントを使用しようとする MX アプリケーションの問題です。

参照: http: //help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7e09.html

おそらく: https://docs.sonatype.org/display/FLEXMOJOS/Using+Adobe+Font+Manager+to+embed+fonts

Flexmojos の構成は次のとおりです (flex-config.xml ファイルについても同様に使用できます。上記のリンクを参照してください)。

<fonts> 
  <managers> 
    <manager-class>flash.fonts.JREFontManager</manager-class> 
    <manager-class>flash.fonts.BatikFontManager</manager-class> 
    <manager-class>flash.fonts.AFEFontManager</manager-class> 
    <manager-class>flash.fonts.CFFFontManager</manager-class> 
  </managers> 
</fonts> 

優先マネージャーが一番下にあることに注意してください。

于 2013-09-09T11:29:35.573 に答える
0

かなり似た問題がありましたが、コンパイルされた SWF フォント ファイル (Flex SDK 4.1) をロードできませんでした。最後に、次のコードを使用してこの問題を解決できました。

MXML:

<fx:Style>
    @namespace s "library://ns.adobe.com/flex/spark";
    @namespace mx "library://ns.adobe.com/flex/mx";
    @font-face {
        src: url("fonts/files/HelveticaNeueLTPro-Md.otf");
        font-family: HelveticaNeueLTPro-Md;
        embed-as-cff: true;
    }

    @font-face {
        src: url("fonts/files/HelveticaNeueLTPro-Bd.otf");
        font-family: HelveticaNeueLTPro-Bd;
        embed-as-cff: true;
    }

    .helvetica {
        font-family: HelveticaNeueLTPro-Md;
        font-lookup: embeddedCFF;
    }
    .helveticaBold {
        font-family: HelveticaNeueLTPro-Bd;
        font-lookup: embeddedCFF;
    }
</fx:Style>

ご覧のとおり、これは OpenType 形式の HelveticaNeue フォント (通常および太字) 用ですが、TrueType でも成功しました。重要な CSS 属性は " font-lookup: embeddedCFF " でした。これを設定しなかった場合、コンパイルは機能しましたが、埋め込まれたフォントは表示されませんでした。fontswf ユーティリティによって作成された SWF をロードする場合も同様です。

于 2011-05-30T15:11:34.447 に答える