Flex / Flash字体嵌入

时间:2010-09-11 19:19:54

标签: actionscript-3 flex4 font-embedding

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

我的理解是我的字体是嵌入式的。到底是什么?

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在样式表中,我需要嵌入一组单独的字体,样式为“embedAsCFF:false;”组。在追踪时,字体显示为嵌入式“嵌入式”而不是“embeddedCFF”,并在TextFormat对象中起作用。虽然确切的答案不存在,但我发现了一些演示文稿中的线索,Colin Moock在Flash CS3 / Flex Builder 3的互动性上首次亮相,他使用[Embed] metatag嵌入了embedAsCFF设置为false。我猜测有一种匹配的CSS风格,并且成了赢家。

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