嵌入字体不承认
我工作的一个需要动态地加载基于用户打开一个给定的文档中使用的字体,字体的应用程序。字体在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不是正确创建并没有内容,或者如果主应用程序无法加载它。任何帮助,至少能够缩小这一点,将不胜感激。
我很感激所有帮助我可以在此得到,因为我一直停留在这个问题一段时间,它是应用程序的一个重要组成部分。
在此先感谢大家。
对于任何来自Google的人来说,只要简单提一下便会发现,问题在于我已经设法从顶部模块的embeddedFont常量定义中丢失了静态关键字。这本来是public static const embeddedFont:Class;
希望这可以帮助别人。