[embed]标签和字体的问题

时间:2010-05-14 13:24:37

标签: actionscript-3 fonts embed

我在[embed]标签上遇到了一些问题。即使我将textfield的embedFonts属性设置为true,文本也不会显示。

事情是它以前工作过,并且经过一些更改(与字体无关)后却没有。我想了解字体的嵌入过程如何在我的代码中找到错误。

我宣布:

[Embed(source = 'asset/font.ttf', fontName="font", mimeType="application/x-font-truetype")] private static var font:String;

将字体分配给程序。

然后我在声明textFormat时调用“font”。 “fontName”属性是与textformat的链接吗?

我使用flashdevelop和flex_sdk_4.0.0.14159(大的adobe,带空气(~140mo))

Thx!

-Leg

2 个答案:

答案 0 :(得分:2)

这可能是一件非常棘手的事情。大约10天前,我不得不与此斗争,只有尝试了几种名称和参数组合才能使其工作。

我阅读的博客报告中有轶事建议,如果你需要粗体或什么,你必须包括fontStyle。这是对我有用的咒语:

[Embed(source="assets/HelveticaBold.ttf",
       fontName="HelveticaBold",
       fontWeight="bold",
       unicodeRange='U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E')]
private static var HelveticaBold:Class;

我不认为unicodeRange是绝对必要的,但我不需要整个字体,而上面给出的相当于IDE中的“Basic Latin”。

当我想使用字体时,我这样做:

    var titleFormat:TextFormat = new TextFormat();
    titleFormat.font = "HelveticaBold";
    titleFormat.bold = true;
    titleFormat.color = 0x0;
    titleFormat.size = 18;

    var errorTitle:TextField = new TextField();
    addChild(errorTitle);
    errorTitle.embedFonts = true;
    errorTitle.autoSize = TextFieldAutoSize.LEFT;
    errorTitle.antiAliasType = AntiAliasType.ADVANCED;
    errorTitle.x = 5;
    errorTitle.y = 5;
    errorTitle.defaultTextFormat = titleFormat;

我无法相信我错过了最重要的一块。在强制mxmlc编译器使用自定义字体管理器之前,上述操作无效。

将以下内容添加为编译器选项:

-managers=flash.fonts.AFEFontManager

troubleshooting fonts in Flex 3上有一个Adobe技术说明列出了可用的字体管理器。试试它们,直到找到有效的方法。

答案 1 :(得分:0)

问题来自4.0 Flex SDK的修改

http://opensource.adobe.com/wiki/display/flexsdk/Font+Embedding+Reprise

我将兼容性设置为Flash player 9(使用sdk 3.4),然后再次运行。