我在使用 Open Source Flex 4.5 SDK (Hero) 嵌入字体时遇到问题,尽管 Flex 4 Open Source SDK 也有同样的问题。我已将一些 ttf 文件添加到我的项目结构的资产目录中,并尝试访问我的 CSS 文件中的字体,如下所示:
@font-face {
src: url("../assets/DroidSans.ttf");
fontFamily: DroidSans;
embedAsCFF: true;
}
整个项目中的许多 spark 控件都需要使用这种特殊字体(这就是为什么 embedAsCFF 设置为 true 的原因,尽管我相信这个参数无论如何都是可选的)。但是,当它在其 fontFamily 属性中设置时,没有一个 spark 组件显示此字体。我在为每个尝试设置字体的 spark 组件编译时收到此错误:
警告:为 (controlName) 指定的嵌入字体“DroidSans”不兼容。该组件要求使用 embedAsCff=true 声明嵌入的字体。
奇怪的是,即使 embedAsCFF 设置为 true,上述字体也适用于 mx 组件(根据我在这个主题上的查找,对于 mx 组件应该设置为 false,对于 spark 应该设置为 true)。
上面的代码也可以在 Flash Builder 中运行,但是,这个项目需要使用开源 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”属性 - 它似乎有效。
我不知道 - 任何人都可以提出一些想法吗?