使用fontswf创建的运行时加载的字体的定义名称是什么?

我遇到'fontswf'实用程序将TTF字体嵌入到SWF中,我很难在运行时从我的应用程序加载它们。我在网上找到的所有例子都是通过[Embed]加载字体,但我实际上是用flash.display.Loader加载它们,从我收集的内容,一旦Loader.contentLoaderInfo触发Event.INIT,我需要注册字体,像这样:
public function handleLoaderComplete( event:Event ):void {
  var FontClass:Class = event.target.applicationDomain.getDefinition( fontName );
  Font.registerFont( FontClass );
}
问题是我不知道传递什么作为fontName。我通过以下方式生成SWF:
$ fontswf -a belshaw -o belshaw.swf belshaw.ttf
但是当我尝试调用getDefinition('belshaw')时,我收到一条错误,上面写着'变量belshaw未定义'。有关如何实现这一目标的任何建议? 另一种方法是通过模板化.as文件并编译它们来生成我的SWF文件,但我宁愿使用像fontswf这样的内置工具,如果已经存在的话。 谢谢 鲁伊     
已邀请:
我在一个项目,必须允许用户动态上传自己的字体。我们尝试让fontswf工作并在问题后遇到问题,可怕的文档没有任何帮助。最后我们创建了一个模板并使用bash脚本将.ttf文件嵌入到新的.swf中,服务将url返回到.swf,然后主应用程序加载.swf并注册字体。 我知道这不是你问题的答案,但我确实知道它有效。 ;)     
您可以使用反编译器psoftware反编译字体SWF以查看嵌入的字体。 要么 ... 您可以遍历嵌入式文件运行时中的字体:
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.net.URLRequest;
import flash.events.Event;

var fontLoader:Loader = new Loader();
var fontLoaderInfo:LoaderInfo = fontLoader.contentLoaderInfo;

fontLoaderInfo.addEventListener(Event.COMPLETE, onFontLoaded);

fontLoader.load(new URLRequest("Verdana.swf"));

function onFontLoaded (e:Event):void {
   var info:LoaderInfo = e.currentTarget as LoaderInfo;
   var loader:Loader = info.content as Loader;
   var embeddedFonts:Array = Font.enumerateFonts(false);
   for(var i:Number = 0; i < embeddedFonts.length; i++){
      var item:Font = embeddedFonts[i];
      trace("[" + i + "] name:" + item.fontName + ", style: " + item.fontStyle + ", type: " + item.fontType);
   }
}
这没有经过测试,我在这里找到了     

要回复问题请先登录注册