使用在运行时加载的嵌入字体的示例Flex 4运行时加载的模块

时间:2010-07-13 16:46:17

标签: flex fonts module flex4

我在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加载第一个模块。在模块中,我在创建完成时执行以下代码以查看字体是否已加载:

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]

然而,当我无法将其应用于Spark 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加载时它停止工作。

有什么想法吗?我尝试过很多东西,但仍然没有运气:(

谢谢

1 个答案:

答案 0 :(得分:0)

遗憾的是,我没有太多时间仔细研究这个问题,但本文可能会让您感兴趣:

http://blogs.adobe.com/aharui/2010/03/flex_and_embedded_fonts.html

它讨论了注册字体并在模块中使用它们