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 = ‘
asdas dasdas
’;
//
}