设置字体表

如果创建用于 SWF 文件或分发给 Flash 开发人员的字体,可能需要设置字体表来控制字体在舞台上的呈现方式。

高级消除锯齿使用自适应采样距离字段 (ADF) 表示确定字型(字符)的轮廓。Flash 使用两个值:

在这两个截止值之间,映射函数是范围从外侧截止处的 0 到内侧截止处最大密度的线性曲线。

调整外侧截止值和内侧截止值会影响笔触粗细和边缘清晰度。这两个参数之间的间距相当于典型消除锯齿方法的滤镜半径的两倍;较窄的间距提供的边缘更清晰,而较宽的间距提供更柔滑、经过更多过滤的边缘。在间距为 0 时,生成的密度图像为双层位图。在间距非常宽时,生成的密度图像具有类似水彩画的边缘。

通常,对于小磅值,用户首选清晰的、高对比边缘;对于动画文本和较大的磅值,用户首选较柔滑的边缘。

外侧截止通常为负值,内侧截止为正值,其中点在 0 附近。对这些参数进行调整将中点向负无穷移动将增加笔触粗细;而将中点向正无穷移动则将减少笔触粗细。

注意

外侧截止应该始终小于或等于内侧截止。

Flash Player 包括 10 种基本字体的高级消除锯齿设置;对于这些字体,仅为从 6 到 20 的字体大小提供高级消除锯齿设置。对于这些字体,6 之下的所有字体将使用 6 的设置,20 之上的所有大小都使用 20 的设置。其它字体映射到提供的字体数据。通过 setAdvancedAntialiasingTable() 方法,可以为其它字体和字体大小设置自定义消除锯齿数据,或覆盖所提供字体的默认设置。有关创建消除锯齿表的更多信息,请参见下面的示例:

为嵌入字体创建高级消除锯齿表:

  1. 创建一个新的 Flash 文档,并将其另存为 advancedaatable.fla
  2. 从"库"面板弹出菜单中选择"新建字型"。
  3. 从"字体"弹出菜单中选择"Arial",然后将字体大小设置为 32 磅。
  4. 选择"粗体"和"斜体"选项。
  5. 在"名称"文本框中输入字体名称 Arial (embedded),然后单击"确定"。
  6. 右击 (Windows) 或按住 Control 单击 (Macintosh) 库中的字体元件,然后选择"链接"。
  7. 在"链接属性"对话框中:
    1. 在"标识符"文本框中键入 Arial-embedded
    2. 选中"为 ActionScript 导出"和"在第一帧导出"。
    3. 单击"确定"。
  8. 在主时间轴中选择第 1 帧,在"动作"面板中,添加下面的 ActionScript:
    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 对象,该对象用于从外部文本文件加载文本,以及填充舞台上的文本字段。

  9. 选择"控制">"测试影片"对该 Flash 文档进行测试。

    从远程服务器加载文本之后,Flash 将在文本字段显示一些文本,您将看到应用于文本字段的高级消除锯齿表属性。当前 insideCutoffoutsideCutoff 值会使舞台上的嵌入字体看起来会稍微有点模糊效果。