在Flex中的ActionScript类中嵌入字体

时间:2011-03-30 10:23:26

标签: flex actionscript fonts embed

创建mxml组件时,很容易以这种方式嵌入所需的字体:

@font-face {
    src: local("Arial");
    fontFamily: ArialEmbedded;
}

在我的代码中,我需要嵌入一个组件的字体,该组件是* .as文件中实现的类的一部分。我怎么能这样做?

问候,拉法尔

2 个答案:

答案 0 :(得分:3)

几周前我在我的网站上报道了这一点。复制/粘贴的信息太多,因此您可以访问:http://divillysausages.com/blog/as3_font_embedding_masterclass

有代码&源文件也是如此。如果您有任何问题,请告诉我。

答案 1 :(得分:0)

以下是如何在自定义ActionScript组件中嵌入字体的简单示例:

package
{
import flash.display.DisplayObject;

import mx.core.IUITextField;
import mx.core.UIComponent;
import mx.core.UITextField;

[Style(name="fontFamily", type="String", inherit="yes")]
public class ComponentWithFontEmbedding extends UIComponent
{
    private var label:IUITextField;

    override protected function createChildren():void
    {
        super.createChildren();

        if (!label)
        {
            label = IUITextField(createInFontContext(UITextField));
            label.styleName = this;
            addChild(DisplayObject(label));
            label.text = "Hello";
        }
    }

    override protected function measure():void
    {
        measuredWidth = measuredMinWidth = 100;
        measuredHeight = measuredMinHeight = 50;
    }
}
}

为简单起见,我省略了实际测量。所以代码非常简单,使用非常轻量级的UITextField。但您可以使用样式以类似的方式使用Label。

示例用法如下:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600" xmlns:local="*">
    <mx:Style>
        @font-face {
            src: local("Arial");
            fontFamily: ArialEmbedded;
        }
    </mx:Style>
    <local:ComponentWithFontEmbedding fontFamily="ArialEmbedded" verticalCenter="0" horizontalCenter="0" />
</mx:Application>

希望这有帮助。