0

我有一个 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.

我的理解是我的字体是嵌入的。有没有搞错?

有任何想法吗?

4

1 回答 1

1

在样式表中,我需要嵌入一组单独的字体,其样式为“embedAsCFF: false;” 放。追踪时,字体显示为嵌入类型“embedded”而不是“embeddedCFF”,并且在 TextFormat 对象中起作用。虽然没有确切的答案,但我在 Colin Moock 在 Flash CS3/Flex Builder 3 交互性上首次亮相的演示文稿的一些幻灯片中找到了线索,他使用 [Embed] 元标记进行嵌入,并将 embedAsCFF 设置为 false。我猜想有一个匹配的 CSS 样式,结果是赢家。

所以现在我有了 WhitneyLight 和 WhitneyLightFlash,一个用于 Spark/Halo 标签,另一个用于 TextFormat/TextField 对象配对。

于 2010-09-12T05:33:21.663 回答