2011-01-06 118 views
2

我在使用開源Flex 4.5 SDK(英雄)嵌入字體時遇到了問題,但是與Flex 4開源SDK有相同的問題。我已經添加了一些TTF文件到我的項目結構的資產目錄中,我試圖訪問我的CSS文件中的字體如下:需要Flex 4爲Spark組件嵌入字體

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

這種特殊字體用於許多火花控制整個項目(這就是爲什麼embedAsCFF設置爲true,儘管我相信這個參數是可選的)。但是,當它設置在fontFamily屬性中時,沒有任何spark組件會顯示該字體。我得到的編譯對於每個Spark組件我試圖設置字體此錯誤:

警告:不兼容的嵌入字體 「DroidSans」的 規定(控件名稱)。該組件 要求使用embedAsCff = true聲明嵌入字體爲 。

奇怪的是上面的字體與MX組件協同工作,即使embedAsCFF設置爲true(從我擡頭對這個問題本應設置爲false MX組件和火花真)。

上面的代碼也適用於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 + "."); 
} 

感謝

鮑勃

[編輯]

行 - 我終於成功地嵌入字體。我試圖從CS4,SWC的SWC的從Flash Builder 4,SWF來自CS4和Flash Builder的....

- 最終修復

1)包裝的字體到在Flash Builder 4 2的SWF)參考編譯的SWF使用以下CSS

@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」屬性時引發錯誤 - 它似乎可行。

我不知道 - 任何人都可以參與一些想法嗎?

+0

`直接使用cff`,救命!並且它不需要將字體打包到swf文件中 – gone 2016-05-29 17:21:34

回答

0

可能您正在使用較舊的SDK和編譯器,在最新的SDK構建中將「cff」重命名爲「embedAsCFF」,從構建Flex SDK 4.0.7972構建開始,請參閱此討論http://forums.adobe.com/thread/36399以獲得來自Flex SDK工程師的意見

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也同樣如此 - 也從未爲我工作過。

0

所描述的問題可能是由於使用默認的字體管理器引起的。您需要使用CFFFontManager。通常情況下,您可以定義全部四種可能的管理器以允許一些回退這通常是MX應用程序試圖使用Spark組件的問題。

另見: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(你可以用柔性的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> 

公告首選經理位於底部。

相關問題