2011-01-06 117 views
2

我在使用开源Flex 4.5 SDK(英雄)嵌入字体时遇到了问题,但是与Flex 4开源SDK有相同的问题。我已经添加了一些TTF文件到我的项目结构的资产目录中,我试图访问我的CSS文件中的字体如下:需要Flex 4为Spark组件嵌入字体

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

这种特殊字体用于许多火花控制整个项目(这就是为什么embedAsCFF设置为true,尽管我相信这个参数是可选的)。但是,当它设置在fontFamily属性中时,没有任何spark组件会显示该字体。我得到的编译对于每个Spark组件我试图设置字体此错误:

警告:不兼容的嵌入字体 “DroidSans”的 规定(控件名称)。该组件 要求使用embedAsCff = true声明嵌入字体为 。

奇怪的是上面的字体与MX组件协同工作,即使embedAsCFF设置为true(从我抬头对这个问题本应设置为false MX组件和火花真)。

上面的代码也适用于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的SWC的从Flash Builder 4,SWF来自CS4和Flash Builder的....

- 最终修复

1)包装的字体到在Flash Builder 4 2的SWF)参考编译的SWF使用以下CSS

@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

`直接使用cff`,救命!并且它不需要将字体打包到swf文件中 – gone 2016-05-29 17:21:34

回答

0

可能您正在使用较旧的SDK和编译器,在最新的SDK构建中将“cff”重命名为“embedAsCFF”,从构建Flex SDK 4.0.7972构建开始,请参阅此讨论http://forums.adobe.com/thread/36399以获得来自Flex SDK工程师的意见

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也同样如此 - 也从未为我工作过。

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(你可以用柔性的config.xml文件类似,上面即链接):

<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> 

公告首选经理位于底部。

相关问题