我在使用Open Source Flex 4.5 SDK(Hero)嵌入字体时遇到问题,尽管与Flex 4 Open Source SDK存在相同的问题。我已经将一些ttf文件添加到我的项目结构的assets目录中,并尝试访问我的CSS文件中的字体,如下所示:
@font-face {
src: url("../assets/DroidSans.ttf");
fontFamily: DroidSans;
embedAsCFF: true;
}
这个特定的字体需要在整个项目中用于许多火花控制(这就是为什么embedAsCFF被设置为true,尽管我认为这个参数是可选的)。但是,当在fontFamily属性中设置时,没有任何spark组件显示此字体。我在编译我尝试设置字体的每个spark组件时遇到此错误:
警告:嵌入字体不兼容 'DroidSans'指定 (controlName)。这个组件 要求嵌入字体 用embedAsCff = true声明。
奇怪的是,即使embedAsCFF设置为true,上面的字体也适用于mx组件(根据我对此主题的看法,对于mx组件应该设置为false,对于spark应该设置为true)。
上述代码也可以在Flash Builder中使用,但是,这个项目需要使用Open Source SDK进行开发,但它失败了。
有什么想法吗?当然其他人有同样的问题吗?
运行以下脚本时,会显示字体是“嵌入式”的,但不是“CFFEmbedded”。 adobe文档说这些需要说“CFFEmbedded”
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 + ".");
}
由于
鲍勃
[编辑]
好的 - 我终于设法嵌入了字体。我尝试过来自CS4的SWC,来自Flash Builder 4的SWC,来自CS4和Flash Builder的SWF ....
最终修复
1)将字体打包到Flash Builder 4中的SWF中 2)使用以下CSS
引用编译的SWF @font-face {
cff: false;
src: url('../bin/DroidSansFont.swf');
fontFamily: DroidSansMX;
}
@font-face {
cff: true;
src: url('../bin/DroidSansFont.swf');
fontFamily: DroidSans;
}
疯狂的是 - 使用“cff:true”指令。所有文档都说使用“embedAsCFF”。这会引发错误,同时使用“cff”属性 - 它似乎有效。
我不知道 - 任何人都可以提出一些想法吗?
答案 0 :(得分:0)
可能您使用的是较旧的SDK和编译器,“cff”在最新的SDK版本中被重命名为“embedAsCFF”,从构建Flex SDK 4.0.7972版本开始,请参阅此讨论http://forums.adobe.com/thread/36399以获取Flex SDK的评论工程师,证明
答案 1 :(得分:0)
我有一个非常类似的问题,但我无法加载任何已编译的SWF字体文件(Flex SDK 4.1)。最后,我能够使用以下代码解决此问题:
MXML:
<fx:Style>
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";
@font-face {
src: url("fonts/files/HelveticaNeueLTPro-Md.otf");
font-family: HelveticaNeueLTPro-Md;
embed-as-cff: true;
}
@font-face {
src: url("fonts/files/HelveticaNeueLTPro-Bd.otf");
font-family: HelveticaNeueLTPro-Bd;
embed-as-cff: true;
}
.helvetica {
font-family: HelveticaNeueLTPro-Md;
font-lookup: embeddedCFF;
}
.helveticaBold {
font-family: HelveticaNeueLTPro-Bd;
font-lookup: embeddedCFF;
}
</fx:Style>
如您所见,这是针对OpenType格式的HelveticaNeue字体(常规和粗体),但我也成功使用了TrueType。重要的CSS属性是“ font-lookup:embeddedCFF ”。一旦我没有设置它,编译工作但嵌入的字体从未显示。同样适用于加载由fontswf实用程序创建的SWF - 对我来说也没用。
答案 2 :(得分:0)
所描述的问题可能是由于使用一组默认的字体管理器引起的。您需要使用 CFFFontManager 。通常,您可以定义所有四个可能的管理器以允许一些回退。这通常是MX应用程序尝试使用spark组件的问题。
另见:http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7e09.html
可能:https://docs.sonatype.org/display/FLEXMOJOS/Using+Adobe+Font+Manager+to+embed+fonts
随后是Flexmojos的配置(你可以使用类似的flex-config.xml文件,上面的viz链接):
<fonts>
<managers>
<manager-class>flash.fonts.JREFontManager</manager-class>
<manager-class>flash.fonts.BatikFontManager</manager-class>
<manager-class>flash.fonts.AFEFontManager</manager-class>
<manager-class>flash.fonts.CFFFontManager</manager-class>
</managers>
</fonts>
请注意,首选经理位于底部。