2011-07-12 51 views
2

對於一個大的項目,我有以下設置:加載的SWF的字體與裝載機完全在的Flex SDK 3.5 - 不是的Flex SDK 4

  • 使用Flex SDK 3.5
  • 內容做了內容編輯器使用Flex SDK 4.1製作的查看器

兩者都需要使用動態加載的字體,因爲用戶可以使用他想要的字體。

所以我們用這種方法:

  • 轉換與Flash Professional中的字體文件到SWF的文件(Creating a Font SWF
  • 編輯:用的加載器加載的字體(Loading a SWF font
  • 的字體可以再在應用程序中完美地用於生成htmlText
  • viewer:加載字體的相同方法+使用Font.registerFont註冊它們(Flex 4 Embed font from swf

現在的問題:雖然在追蹤Font.enumerateFonts(false)時列出了加載的字體,但它們並未在textarea中使用。那裏的文字顯示爲默認字體。

也許問題是字體被加載爲文本佈局框架的embedAsCFF,並且這種方式在mx.controls.TextArea中不可用?但是由於我無法將其更改爲SparkArea,原因有很多,我需要一個解決方案來使用該mx.controls.TextArea中的加載字體。

任何想法?提前感謝!

Frank

回答

1

此問題出現在項目屬性中。

在「Flex編譯器」設置中,必須取消選中「在MX組件中使用Flash文本引擎」複選框!

0

我不確定您爲什麼使用Flash Pro創建字體swf。您可以使用CSS embedding the fonts輕鬆完成,並將其編譯爲主題swf,該文件可能爲loaded on runtime

這應該適用於Flex 3和Flex 4(帶有TLF)。

0

這個CSS代碼有效地翻修,MX textarea的接受CFF字體:

mx|global{ 
    textFieldClass:   ClassReference("mx.core.UIFTETextField"); 
} 

從文檔:「當MX組件使用FTE,他們可以使用相同的嵌入字體Spark組件,它總是使用FTE。否則,字體必須嵌入embedAsCFF =「false」以供基於TextField的組件使用,並且embedAsCFF =「true」以供基於FTE的組件使用。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/UIFTETextField.html