我试图在Flash Builder 4.5中嵌入一个字体到我的Actionscript 3项目。我找到了几个例子和修复,但没有一个有我的问题。我的嵌入式字体出现在enumeratedFonts列表中,我没有得到任何错误,但当我在TextFormat中使用它时,它只是回落到系统默认字体。我已经尝试使用几个嵌入()属性和编译器参数从这篇文章:http://divillysausages.com/blog/as3_font_embedding_masterclass
package {
import flash.display.Sprite;
import fl.text.TLFTextField;
import flash.text.TextFieldAutoSize;
import flash.text.Font;
import flash.text.TextFormat;
import flashx.textLayout.elements.*;
import flashx.textLayout.formats.*;
public class FontTest extends Sprite {
[Embed(source="assets/Nanami.otf", fontName="NanamiRegular", embedAsCFF= "false")]
private var myEmbeddedFont:Class;
public function FontTest() {
var fonts:Array = Font.enumerateFonts(false);
for(var i:int = 0; i < fonts.length; i++) {
trace(fonts[i].fontName);
}
var fmt:TextFormat = new TextFormat();
fmt.color = 0xFF0000;
fmt.font = "NanamiRegular";
fmt.size = 32;
var tlfTxt:TLFTextField = new TLFTextField();
tlfTxt.defaultTextFormat = fmt;
tlfTxt.embedFonts = true;
tlfTxt.border = true;
tlfTxt.text = "Lorem ipsum dolor sit amet.";
tlfTxt.wordWrap = true;
tlfTxt.width = 300;
tlfTxt.autoSize = TextFieldAutoSize.LEFT;
tlfTxt.x = tlfTxt.y = 40;
tlfTxt.rotation = 20;
addChild(tlfTxt);
}
}
}
能否尝试将fontName
更改为其他内容,如"testfontname"并提供一个字体族,如"testfontfamily"
[Embed(source="assets/Nanami.otf", fontName="testfontname", fontFamily="testfontfamily" embedAsCFF= "false")]
然后嵌入该名称:
fmt.font = "testfontname";
如果你使用的是TLFTextField,你必须改变"embedAsCFF"值为true,因为TLFText使用新的Flash文本引擎。