您的位置:首页 > 其它

flash as3 嵌入字体方法总结(二)

2012-10-18 12:15 288 查看
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");

该文本就使用嵌入的字体来显示,如显示的内容没有嵌入,则不显示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: