0
我已经完全用完了这个想法。它遵循,是我刚才的问题的一部分:嵌入字体flash.text.engine
embedding a font in a swf using as3
我似乎就是不能够得到使用我的嵌入字体的flash.text.engine。注意,在用户选择了两种语言(用于翻译)之后,必须将字体加载到应用程序中(如嵌入到swf中)。似乎有一点信息意味着现在有必要使用sdk中的fontswf应用程序。我已经尝试过这种方法并生成了可加载的swf文件,但是我找不到有关如何加载这些文件的任何信息(即下面的getDefinition和registerFont位不起作用,因为这些swf中没有类)并应用于text.engine对象。嵌入的来源在我对上述问题的回答中。这是一个测试as3,它演示了它如何不起作用!
package
{
import flash.display.Loader;
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.text.engine.ElementFormat;
import flash.text.engine.FontDescription;
import flash.text.engine.TextBlock;
import flash.text.engine.TextLine;
import flash.text.engine.TextElement;
import flash.net.URLRequest;
import flash.text.Font;
public class Main extends Sprite
{
private var loader:Loader;
private var tl:TextLine;
public function Main():void
{
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,fontLoaded);
loader.load(new URLRequest("EnglishF.swf"));
}
private function fontLoaded(evt:Event):void {
var FontClass:Class
FontClass = evt.target.applicationDomain.getDefinition("EnglishF") as Class;
try {
Font.registerFont(FontClass.myFont);
trace("successfully loaded " + FontClass);
// gives 'successfully loaded EnglishF'
} catch (err:Error) {}
var fontList:Array = Font.enumerateFonts();
for (var i:int = 0; i < fontList.length; i++) {
trace(fontList[i].fontName, fontList[i].fontType);
// gives 'EnglishF embeddedCFF'
}
var block:TextBlock = new TextBlock();
var font:FontDescription = new FontDescription("EnglishF");
var formt:ElementFormat = new ElementFormat(font, 30);
trace(FontDescription.isFontCompatible("EnglishF","normal","normal"), formt.fontDescription.fontName);
// gives 'true EnglishF'
formt.color = 0x882233;
var span:TextElement = new TextElement("Hello World. This is certainly NOT in the Font provided!", formt);
block.content = span;
tl = block.createTextLine();
tl.x = 10;
tl.y = tl.ascent + 10;
addChild(tl);
}
}
}
我做错了什么,或者这是不可能的?