在flash as3中使用嵌入字体embedFonts
2009-01-04 19:17:38 来源:WEB开发网Flash一直对字体渲染支持不好,特别是中文,存在锯齿、模糊、失真等等问题。而且系统的字体不能旋转,不能设置alpha(作为bitmap处理除外)。因此在有些时候,就不得不考虑使用嵌入字体。
使用之前必须定义字体类,在library面板选择新建字体(new font),为新建的字体设置链接,制定Class的值,这个Class就要要注册的字体类。比如你为你新建字体的Class设置为Comic ,下面代码就外这种字体注册到全局字体库里面:Font.registerFont(Comic); 这样就可以在本文件或者所有加载这个文件的程序使用这种字体了。
在flash as3中,使用嵌入字体有两种方式,一种是通过TextFormat.font属性设置,另外一种通过StyleSheet设置样式,文本使用class来应用。
在使用字体之前,最好使用Font.enumerateFonts();得到的字体的fontName来用,因为有些字体名字跟看到的不一样,特别是只用粗体和斜体的时候。
使用这两种方法前,都要设置文本的embedFonts = true;,这样文本就会按照嵌入字体进行渲染。
效果:
embedFonts
源文件:
embedFonts.rar
具体使用的代码:
//———————————————————————–
//使用嵌入字体
//Arial
//var a = Font.enumerateFonts();
//trace(a[0].fontName);
//
//Font.registerFont(Arial);
//a = Font.enumerateFonts();
//trace(a);
//trace(a[0].fontName);
//trace(a[1].fontName);
//把库里面的字体注册到全局字体库里面,如果在本文件内使用,可以不注册,但是如果作为字体库供其他文件调用,必须要注册到全局
//Font.registerFont(Birch);
//
var l:Loader = new Loader();
//加载字体库
l.load(new URLRequest(’fontlib.swf’));
l.contentLoaderInfo.addEventListener(’complete’,lc);
//
function lc(e)
{
//获取嵌入的字体数组
var a = Font.enumerateFonts();
trace(a);
//嵌入字体的名字
trace(a[0].fontName);
trace(a[1].fontName);
//使用TextFormat.font设置字体
var tf:TextFormat = new TextFormat();
tf.font = a[0].fontName;
t.embedFonts = true;
t.text = ‘asdas dasdas’;
t.setTextFormat(tf);
//
//
//使用StyleSheet设置字体
var CSS:StyleSheet = new StyleSheet();
css.setStyle(’.font’,{fontFamily:a[1].fontName});
//
t1.embedFonts = true;
t1.styleSheet = css;
t1.htmlText = ‘<p class=”font”>asdas dasdas</p>’;
//
}
更多精彩
赞助商链接