flash as3 嵌入字体方法总结(二)
2.利用代码嵌入
package
{
import flash.display.Sprite;
import flash.text.Font;
import flash.text.TextField;
import flash.text.TextFormat;
[SWF(width = 800,height = 600,backgroundColor = 0xffffff)]
public class MyFont extends Sprite
{
/**
* source="MSYH.TTF"--- 字体资源,路径
* fontName="myMSYHFont" ---- 字体自定义名称
* unicodeRange="" ---- 需要嵌入的字体,16进制unicode码,U+ 为前缀
*/
[Embed(source="MSYH.TTF", fontName="myMSYHFont",
unicodeRange="U+2a,U+2b,U+2d,U+2f,U+30-U+39,U+41-U+5a,U+61-U+7a,U+6597,U+5730,U+4e3b",
mimeType="application/x-font" ,embedAsCFF="false")]
public var myMSYHFontClass:Class;//微软雅黑
public function MyFont()
{
Font.registerFont(myMSYHFontClass);//注册字体
test();
}
private function test():void
{
var tlf :TextField = new TextField();
tlf.width = 800;
tlf.height = 600;
tlf.selectable = false;
tlf.wordWrap = true;
var textFormat :TextFormat = new TextFormat();
textFormat.font = "myMSYHFont";
textFormat.size = 36;
textFormat.color = 0xff0000;
tlf.appendText( "0123456789\n");
tlf.appendText( "abcdefghijklmnopqrstuvwxyz\n");
tlf.appendText( "ABCDEFGHIJKLMNOPQRSTUVWXYZ\n");
tlf.appendText( "斗地主\n");
tlf.appendText( "/ * + -\n");
tlf.embedFonts = true;
tlf.setTextFormat(textFormat);
addChild(tlf);
//返回16进制unicode码
function toOxString(str:String):String
{
var result:String="";
var len:int=str.length;
for (var i:int=0; i < len; i++)
{
result += "U+" + (str.charCodeAt(i)).toString(16);
if(i < len - 1)
{
result += ",";
}
}
return result;
}
trace(toOxString("斗地主/*+-"));
}
}
}
运行显示所嵌入的字体:
生成的MyFont.swf,可以在项目预加载载入,以后项目的其他地方就可以直接用嵌入的字体
/**
*设置文本嵌入字体
* @param tlf 实例
* @param textFormat tlf的defaultFormat
* @param fontName --- 嵌入的字体名称,如上面的"myMSYHFont"
*/
public static function setFontByTextFormat(tlf:TextField,
textFormat :TextFormat,
fontName :String):void
{
if(tlf == null || textFormat == null)
{
return;
}
textFormat.font = fontName;
tlf.setTextFormat(textFormat);
}
如:
var tlf :TextField = new TextField();
setFontByTextFormat(tlf,tlf.defaultTextFormat,"myMSYHFont");
该文本就使用嵌入的字体来显示,如显示的内容没有嵌入,则不显示
补充:综合编程 , 其他综合 ,