【问题标题】:Issues with the [embed] tag and fonts[embed] 标签和字体的问题
【发布时间】:2011-02-19 12:54:42
【问题描述】:

我对 [embed] 标签有一些问题。即使我将文本字段的 embedFonts 属性设置为 true,文本也不会显示。

问题是它之前有效,但经过一些更改(与字体无关)后却无效。我想了解字体的嵌入过程如何在我的代码中找到错误。

我声明:

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

将字体分配给程序。

然后我在声明我的 textFormat 时调用“字体”。 “fontName”属性是文本格式的链接吗?

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

谢谢!

-腿

【问题讨论】:

  • 您说它以前有效(在您进行更改之前)...您进行了哪些更改?值得我将嵌入字体键入为类而不是字符串。我还经常需要在 embed 语句中设置 fontStyle 和 fontWeight 属性以使它们正确嵌入。你在调用 Font.registerFont(font) 吗?
  • 那是很久以前的事了。我想我没有改变任何关于字体的东西。我尝试注册,它也没有改变任何东西^^。不错的尝试 :)。文档在这方面很差:/

标签: actionscript-3 fonts embed


【解决方案1】:

要做到恰到好处,这可能是一件棘手的事情。大约 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 上有一个 Adob​​e 技术说明,其中列出了可用的字体管理器。尝试它们,直到找到一个有效的方法。

【讨论】:

  • fontName 或 fontFamily 在 [embed] 标签中:有关系吗?如果我将管理器行添加到编译器选项,它会返回错误:“找不到指定的文件”。这非常棘手:/
  • 经过网上的其他一切,编译器标志终于为我解决了。
【解决方案2】:

问题出在 4.0 Flex SDK 中的修改

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

我将兼容性设置为 Flash player 9(使用 sdk 3.4),它又可以正常工作了。

【讨论】:

    猜你喜欢
    • 2012-01-04
    • 1970-01-01
    • 2019-03-07
    • 2011-03-08
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多