0

我的目标是在 Flex 应用程序中嵌入 Arial 字体。我同时使用了 MX 和 SPARK 组件:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:s="library://ns.adobe.com/flex/spark"
    width="100%" height="100%" >
<mx:Style>
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";

@font-face {
    src:url("assets/arial.ttf");
    fontFamily: Arial;
    embedAsCFF: true;
}
</mx:Style> 
<s:Button label="Button"/>
<mx:TextArea x="213" y="156" width="264" height="131" fontFamily="Arial"/>
</mx:Application>

按钮显示良好。但是 textArea 有空白字符。如果我将 texteArea 字体更改为 Verdana(未嵌入),它可以正常工作!

我的问题是:如何在 Flex 中为 MX 和 SPARK 组件嵌入字体?

问候

4

1 回答 1

1

您需要为 MX 和 Spark 组件指定单独的字体声明。只有 Spark 组件支持 embedAsCFF: true。请参阅为 MX 组件嵌入非 CFF 版本的字体

下面,我将 Spark 字体声明命名为 ArialCFF,并将 s|Button fontFamily 样式属性设置为 ArialCFF。我还将全局默认 fontFamily 设置为 Arial,并将 mx|TextArea fontFamily 设置为 Arial。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:s="library://ns.adobe.com/flex/spark"
    width="100%" height="100%" >
<mx:Style>
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";

global {
    fontFamily: Arial;
}

@font-face {
    src:url("assets/arial.ttf");
    fontFamily: ArialCFF;
    embedAsCFF: true;
}

@font-face {
    src:url("assets/arial.ttf");
    fontFamily: Arial;
    embedAsCFF: false;
}

s|Button {
    fontFamily: ArialCFF;
}

mx|TextArea {
    fontFamily: Arial;
}

</mx:Style> 
<s:Button label="Button"/>
<mx:TextArea x="213" y="156" width="264" height="131"/>
</mx:Application>
于 2012-09-12T23:19:27.763 回答