0
在试图在flex 4中使用嵌入字体时遇到了相当多的问题。这里是情况。使用在运行时加载的嵌入字体的示例Flex 4运行时加载模块
我有一个主要的应用程序,拳头通过URL加载字体。这是字体文件代码:
package{
import flash.display.Sprite;
import flash.text.Font;
public class FontLib extends Sprite
{
[Embed(source="MyriadPro-Regular.otf", fontWeight= "normal", fontName="Myriad Pro", fontFamily="Myriad Pro",mimeType="application/x-font", embedAsCFF="true")]
public const myriadFont:Class;
public function FontLib()
{
Font.registerFont(myriadFont);
var fonts:Array = Font.enumerateFonts(false);
trace('libsss',fonts);
}
}}
这似乎工作正常。跟踪显示加载字体swf时的嵌入字体。
[SWF] /assets/FontLib.swf - 89,594 bytes after decompression libsss [object Font],[object FontLib_myriadFont]
一旦加载了字体swf,然后通过使用ModuleLoader的URL加载第一个模块。在模块I执行上创作完成,看看下面的代码,如果字体加载:
protected function bookstoremodule1_creationCompleteHandler(event:FlexEvent):void
{
var fonts:Array = Font.enumerateFonts(false);
trace('bs',fonts); // This shows Verdana as a registered font
}
那加载模块似乎已经拿起字体:
load module success: bs [object FontLib_myriadFont]
然而,当我不能让它适用于火花RichText组件。下面是它的mxml:
<s:RichText fontLookup="embeddedCFF" renderingMode="cff" ai:aa="2" color="#2F4160" columnCount="1" fontFamily="Myriad Pro" fontSize="18.0737" height="20" d:id="4" kerning="on" tabStops="S40.665699005127 S81.3313980102539 S121.997097015381 S162.662796020508" text="Shopping Cart (0)" d:userLabel="Shopping Cart (0)" flm:variant="1" whiteSpaceCollapse="preserve" width="168" x="53" y="12" x.down="54" y.down="13" id="richtext1">
<s:filters>
<s:DropShadowFilter blurX="0" blurY="0" color="#FFFFFF" distance="1.41421" quality="2"/>
</s:filters>
</s:RichText>
当字体直接嵌入到模块中时,mxml定义没问题。当字体被加载为swf时,它会停止工作。
任何想法?我已经试过的东西负荷,但仍没有运气:(
感谢
感谢那肯定帮助我了解升技更多。如果我的理解,这意味着SWF中加载字体SWF则SWF中加载的SWF B,这意思是Swf B永远不会找到由SWF A加载的字体,因为它不在正确的SWF上下文中?如果是这样,那么Swf B如何列举正确的字体呢? – charleetm 2010-07-14 18:25:11