学习 Flash 中的 ActionScript 2.0 |
|
|
|
| 使用文本和字符串 > 关于字体呈现和消除锯齿文本 > 设置字体表 | |||
如果创建用于 SWF 文件或分发给 Flash 开发人员的字体,可能需要设置字体表来控制字体在舞台上的呈现方式。
高级消除锯齿使用自适应采样距离字段 (ADF) 表示确定字型(字符)的轮廓。Flash 使用两个值:
在这两个截止值之间,映射函数是范围从外侧截止处的 0 到内侧截止处最大密度的线性曲线。
调整外侧截止值和内侧截止值会影响笔触粗细和边缘清晰度。这两个参数之间的间距相当于典型消除锯齿方法的滤镜半径的两倍;较窄的间距提供的边缘更清晰,而较宽的间距提供更柔滑、经过更多过滤的边缘。在间距为 0 时,生成的密度图像为双层位图。在间距非常宽时,生成的密度图像具有类似水彩画的边缘。
通常,对于小磅值,用户首选清晰的、高对比边缘;对于动画文本和较大的磅值,用户首选较柔滑的边缘。
外侧截止通常为负值,内侧截止为正值,其中点在 0 附近。对这些参数进行调整将中点向负无穷移动将增加笔触粗细;而将中点向正无穷移动则将减少笔触粗细。
|
注意 |
外侧截止应该始终小于或等于内侧截止。 |
Flash Player 包括 10 种基本字体的高级消除锯齿设置;对于这些字体,仅为从 6 到 20 的字体大小提供高级消除锯齿设置。对于这些字体,6 之下的所有字体将使用 6 的设置,20 之上的所有大小都使用 20 的设置。其它字体映射到提供的字体数据。通过 setAdvancedAntialiasingTable() 方法,可以为其它字体和字体大小设置自定义消除锯齿数据,或覆盖所提供字体的默认设置。有关创建消除锯齿表的更多信息,请参见下面的示例:
为嵌入字体创建高级消除锯齿表:
import flash.text.TextRenderer;
var arialTable:Array = new Array();
arialTable.push({fontSize:16.0, insideCutoff:0.516, outsideCutoff:0.416});
arialTable.push({fontSize:32.0, insideCutoff:2.8, outsideCutoff:-2.8});
TextRenderer.setAdvancedAntialiasingTable("Arial", "bolditalic", "dark", arialTable);
var my_fmt:TextFormat = new TextFormat();
my_fmt.align = "justify";
my_fmt.font = "Arial-embedded";
my_fmt.size = 32;
this.createTextField("my_txt", 999, 10, 10, Stage.width-20, Stage.height-20);
my_txt.antiAliasType = "advanced";
my_txt.embedFonts = true;
my_txt.multiline = true;
my_txt.setNewTextFormat(my_fmt);
my_txt.sharpness = 0;
my_txt.thickness = 0;
my_txt.wordWrap = true;
var lorem_lv:LoadVars = new LoadVars();
lorem_lv.onData = function(src:String):Void {
if (src != undefined) {
my_txt.text = src + "\n\n" + src;
} else {
trace("error downloading text file");
}
};
lorem_lv.load("http://www.helpexamples.com/flash/lorem.txt");
前面的代码分为四个部分。第一部分代码导入 TextRenderer 类并为两种大小不同的 Arial 字体定义一个新的消除锯齿表。第二部分代码定义一个新的 TextFormat 对象,通过该对象可将文本格式应用于文本字段(在下一部分代码中创建)。第三部分代码创建一个新的文本字段(实例名称为 my_txt),启用高级消除锯齿,应用文本格式对象(前面创建)并启用多行文本和自动换行。最后一部分代码定义一个 LoadVars 对象,该对象用于从外部文本文件加载文本,以及填充舞台上的文本字段。
从远程服务器加载文本之后,Flash 将在文本字段显示一些文本,您将看到应用于文本字段的高级消除锯齿表属性。当前 insideCutoff 和 outsideCutoff 值会使舞台上的嵌入字体看起来会稍微有点模糊效果。
|
|
|
|