代码之家  ›  专栏  ›  技术社区  ›  Aaron

Flex/Flash字体嵌入

  •  0
  • Aaron  · 技术社区  · 14 年前

    <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能够用子品牌的给定样式名显示指定的字体。当我尝试在TextFormat对象中引用这些字体时,问题就出现了。我可以通过它们的正确字体名(“Whitney Light”)来引用它们,只要在包含text/font的textfonts字段中embedFonts没有设置为true,它就会显示出来。这可能是因为我已经安装了字体。当我称之为WhitneyLight时:

    new TextFormat("WhitneyLight", 18, 0x000000);
    

    我以embedFonts=false和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 回复  |  直到 14 年前
        1
  •  1
  •   Aaron    14 年前

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

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