我有一个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可以使用给定styleName的subBranding显示指定的字体。当我尝试在TextFormat对象中引用这些字体时出现问题。我可以通过正确的字体名称(“Whitney Light”)来引用它们,只要在包含文本/字体的TextField上embedFonts未设置为true,它就会显示出来。这可能是因为我实际上安装了字体。当我将它们称为WhitneyLight时:
new TextFormat("WhitneyLight", 18, 0x000000);
我使用embedFonts = false结果使用Times或其他东西,而且embedFonts = true没有任何内容,因为根据TextFormat,“WhitneyLight”不存在。然后,就字体对象而言,我对字体进行了枚举:
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.
我的理解是我的字体是嵌入式的。到底是什么?
有什么想法吗?
答案 0 :(得分:1)
在样式表中,我需要嵌入一组单独的字体,样式为“embedAsCFF:false;”组。在追踪时,字体显示为嵌入式“嵌入式”而不是“embeddedCFF”,并在TextFormat对象中起作用。虽然确切的答案不存在,但我发现了一些演示文稿中的线索,Colin Moock在Flash CS3 / Flex Builder 3的互动性上首次亮相,他使用[Embed] metatag嵌入了embedAsCFF设置为false。我猜测有一种匹配的CSS风格,并且成了赢家。
所以现在我有WhitneyLight和WhitneyLightFlash,一个用于Spark / Halo标签,另一个用于TextFormat / TextField对象。