【问题标题】:Embed fonts in Actionscript 3 project在 Actionscript 3 项目中嵌入字体
【发布时间】:2013-06-17 09:54:16
【问题描述】:

我正在尝试在 Flash Builder 4.5 中将字体嵌入到我的 Actionscript 3 项目中。我找到了几个示例和修复程序,但没有一个有我的问题。我的嵌入字体显示在 enumeratedFonts 列表中,我没有收到任何错误,但是当我在 TextFormat 中使用它时,它只是回退到系统默认字体。我已经尝试使用这篇文章中的几个 Embed() 属性和编译器参数:http://divillysausages.com/blog/as3_font_embedding_masterclass

package {
import flash.display.Sprite;
import fl.text.TLFTextField;
import flash.text.TextFieldAutoSize;
import flash.text.Font;
import flash.text.TextFormat;
import flashx.textLayout.elements.*;
import flashx.textLayout.formats.*;

public class FontTest extends Sprite {
    [Embed(source="assets/Nanami.otf", fontName="NanamiRegular", embedAsCFF= "false")]
    private var myEmbeddedFont:Class;

    public function FontTest() {
        var fonts:Array = Font.enumerateFonts(false);

        for(var i:int = 0; i < fonts.length; i++) {
            trace(fonts[i].fontName);
        }

        var fmt:TextFormat = new TextFormat();
        fmt.color = 0xFF0000;
        fmt.font = "NanamiRegular";
        fmt.size = 32;

        var tlfTxt:TLFTextField = new TLFTextField();
        tlfTxt.defaultTextFormat = fmt;
        tlfTxt.embedFonts = true;
        tlfTxt.border = true;
        tlfTxt.text = "Lorem ipsum dolor sit amet.";
        tlfTxt.wordWrap = true;
        tlfTxt.width = 300;
        tlfTxt.autoSize = TextFieldAutoSize.LEFT;
        tlfTxt.x = tlfTxt.y = 40;
        tlfTxt.rotation = 20;
        addChild(tlfTxt);
    }
}

}

【问题讨论】:

    标签: actionscript-3 actionscript fonts flash-builder embed


    【解决方案1】:

    您能否尝试将fontName 更改为其他内容,例如“testfontname”并提供字体系列,例如“testfontfamily”

    [Embed(source="assets/Nanami.otf", fontName="testfontname", fontFamily="testfontfamily" embedAsCFF= "false")]
    

    然后使用该名称嵌入它:

    fmt.font = "testfontname";
    

    【讨论】:

    • 感谢您的回复!我已将 fontName 更改为“testfontname”并添加了 fontFamily,但没有任何运气。我还下载了另一种字体 (ttf),但也没有用。
    • 奇怪。我假设您还更新了 TextFormat 上的字体名称?我没有将字体嵌入与 tlf-text 一起使用,但是对于普通的文本字段,它在这里可以正常工作: [Embed(source="fonts/OpenSans-Semibold.ttf", fontName="DefaultFont", fontFamily="spittfonts", mimeType=" application/x-font-truetype", embedAsCFF="false")] public static var defaultFont:Class; new TextFormat("DefaultFont", 12, 0x000000);
    • 该死的,你明白了!将 TLFTextField 更改为 TextField,现在它可以工作了!奇怪的是 TLFTextField 不起作用。我已经尝试解决这个问题好几个小时了,我认为问题在于嵌入字体。谢谢玛丽恩!
    【解决方案2】:

    如果您使用 TLFTextField,则必须将“embedAsCFF”值更改为 true,因为 TLFText 使用新的 Flash 文本引擎。

    【讨论】:

      猜你喜欢
      • 2010-12-06
      • 2012-05-01
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 2010-11-02
      • 2011-11-21
      • 2011-12-27
      相关资源
      最近更新 更多