我在[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
答案 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),然后再次运行。