2012-01-16 87 views
1

我工作的一個需要動態地加載基於用戶打開一個給定的文檔中使用的字體,字體的應用程序。字體在RichEditableTextControl中使用,因此需要爲CFF格式。嵌入字體不承認

如果我的代碼添加:

[Embed(source="/assets/fonts/AvenirLTStd Book.otf", 
fontFamily="EmbedAvenir LT Std 45 Book", 
mimeType="application/x-font", 
embedAsCFF="true")] 
public const embeddedFont:Class; 

到主SWF然後將文本與嵌入字體顯示正確但代碼移動到一個單獨的文件中,並添加裝載機按照我發現在所述信息下面的鏈接不加載該字體 - http://www.scottgmorgan.com/blog/index.php/2007/06/18/runtime-font-embedding-in-as3-there-is-no-need-to-embed-the-entire-fontset-anymore/

裝載機代碼是:

private function loadFont(url:String):void { 
    var loader:Loader = new Loader(); 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, fontLoaded); 
    loader.load(new URLRequest(url)); 
} 

private function fontLoaded(event:Event):void { 
    var FontLibrary:Class = event.target.applicationDomain.getDefinition("FontAvenirLTStd") as Class; 
    Font.registerFont(FontLibrary.embeddedFont); 
} 

有一個在引發的錯誤行表示要傳遞的參數不能爲空。我檢查了調試模式,問題似乎是類存在,但沒有任何內容。 FontLibrary類被實例化,但調試器中唯一的子項是_prototype,所以試圖訪問embeddedFont屬性確實返回undefined。

目前的字體SWF是在主項目的資產文件夾,所以我不認爲應該有任何安全限制,正如我所說,SWF裝載部分似乎工作。

一件事是阻礙我的診斷是,我不知道這個問題是字體SWF不是正確創建並沒有內容,或者如果主應用程序無法加載它。任何幫助,至少能夠縮小這一點,將不勝感激。

我很感激所有幫助我可以在此得到,因爲我一直停留在這個問題一段時間,它是應用程序的一個重要組成部分。

在此先感謝大家。

回答

1

對於任何來自Google的人來說,只要簡單提一下便會發現,問題在於我已經設法從頂部模塊的embeddedFont常量定義中丟失了靜態關鍵字。這本來是public static const embeddedFont:Class;

希望這可以幫助別人。