我有一个 Flex 4 项目,它处于 Flex/Flash AS3 的混合状态。我在 Window 的基本组件中声明了一个样式表:
<fx:Style source="styles/styles.css" />
而且我所有的 Flex 组件都可以显示这种字体。样式表如下所示:
@font-face {
src: url("../fonts/Whitney-Light-Pro.otf");
fontFamily: WhitneyLight;
advancedAntiAliasing: true;
}
...
.subBranding {
fontFamily: WhitneyLight;
fontSize: 20;
color: #000000;
}
Flex 能够以给定的 subBranding 的 styleName 显示指定的字体。当我尝试在 TextFormat 对象中引用这些字体时,问题就出现了。我可以通过它们的正确字体名称(“Whitney Light”)来引用它们,只要包含文本/字体的 TextField 上的 embedFonts 未设置为 true,它就会显示出来。这可能是因为我实际上安装了字体。当我将它们称为 WhitneyLight 时:
new TextFormat("WhitneyLight", 18, 0x000000);
我以 embedFonts = false 的 Times 或类似效果结束,而 embedFonts = true 则没有,因为根据 TextFormat 不存在“WhitneyLight”。然后,就 Font 对象而言,我列举了字体:
var fontArray:Array = Font.enumerateFonts(false);
trace("Fontarray length: " + fontArray.length);
for(var j:int = 0; j < fontArray.length; j++) {
var thisFont:Font = fontArray[j];
trace("FONT " + j + ":: name: " + thisFont.fontName + " embedded as type:" + thisFont.fontType + ".");
}
我得到的输出是:
Fontarray length: 1
FONT 0:: name: WhitneyLight is embedded as type: embeddedCFF.
我的理解是我的字体是嵌入的。有没有搞错?
有任何想法吗?