簡體   English   中英

使用fontswf創建的在運行時加載的字體的定義名稱是什么?

[英]What's the definition name for fonts loaded at runtime created with 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並注冊該字體。

我知道這並不完全是您的問題的答案,但我知道它是可行的。 ;)

您可以使用反編譯器軟件對字體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);
   }
}

這未經測試,我在這里找到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM