【问题标题】:Embedding fonts for AS3. How?为 AS3 嵌入字体。如何?
【发布时间】:2011-11-16 18:19:01
【问题描述】:

我使用 Flash Professional CS5 嵌入了字体,但我仍然无法在我的 AS 代码中使用它。我应该如何嵌入字体才能在 AS3 以及 Flash Professional CS5 中使用它?

【问题讨论】:

    标签: flash actionscript-3 embed


    【解决方案1】:
    1. 将字体嵌入到 fonts.fla 文件中。 http://www.adobe.com/devnet/flash/quickstart/embedding_fonts.html

    2. 将 fonts.fla 导出到 SWC 库。 (在导出设置下选中 Flash CS5 中的 SWC 框)

    3. 将 swc 与代码一起使用!

    那你应该可以看到了:

    【讨论】:

    • 您答案中的链接已损坏
    【解决方案2】:

    我做了一些稍微不同的事情。 :D embedAsCFF 如果您希望使用旧的 TextFields 应该为 false,或者如果您使用新的文本引擎则为 true。

    public class Font_Arial
    {
    
        [Embed(source   = 'Arial.ttf'
        ,fontFamily     ='_Arial_'
        ,fontStyle      = 'normal'  // normal|italic
        ,fontWeight     = 'normal'  // normal|bold
        ,mimeType       = "application/x-font-truetype"
        ,unicodeRange   = 'U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E'
        ,embedAsCFF     = 'false'
        )]
        private const _regular:Class;
    
        [Embed(source   = 'Arial_i.ttf'
        ,fontFamily     ='_Arial_'
        ,fontStyle      = 'italic'  // normal|italic
        ,fontWeight     = 'normal'  // normal|bold
        ,mimeType       = "application/x-font-truetype"
        ,unicodeRange   = 'U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E'
        ,embedAsCFF     = 'false'
        )]
        private const _italic:Class;
    
        [Embed(source   = 'Arial_b.ttf'
        ,fontFamily     ='_Arial_'
        ,fontStyle      = 'normal'  // normal|italic
        ,fontWeight     = 'bold'    // normal|bold
        ,mimeType       = "application/x-font-truetype"
        ,unicodeRange   = 'U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E'
        ,embedAsCFF     = 'false'
        )]
        private const _bold:Class;
    
        [Embed(source   = 'Arial_bi.ttf'
        ,fontFamily     ='_Arial_'
        ,fontStyle      = 'italic'  // normal|italic
        ,fontWeight     = 'bold'    // normal|bold
        ,mimeType       = "application/x-font-truetype"
        ,unicodeRange   = 'U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E'
        ,embedAsCFF     = 'false'
        )]
        private const _boldItalic:Class;
    
        public static const name:String = "_Arial_";
    
        public function Font_Arial()
        {
            Font.registerFont(_regular);
            Font.registerFont(_italic);
            Font.registerFont(_bold);
            Font.registerFont(_boldItalic);
        }
    }
    

    然后你可以使用类似的东西

    var _format:TextFormat = new TextFormat(Font_Arial.name, 16,....)
    

    您需要确保name 静态常量与字体中的fontFamily 相同。它们都被赋予相同的名称,因此它们都充当 1 字体,如果文本字段设置为粗体或斜体或粗体和斜体或只是普通的旧常规,则文本字段将选择正确的样式。

    然后我会为不同的字体“集”创建一个不同的类

    【讨论】:

    • PS:您需要将 Arial.ttf 放在与课程相同的文件夹中。
    • 不要忘记将您的文本字段设置为 myTextField.embedFonts = true;
    • 哦,是的,这是真的。我忘了提到,因为我使用扩展的 TextField 类,当通过阅读 Font.enumerateFonts() 更改字体时打开/关闭它
    猜你喜欢
    • 2012-10-10
    • 2011-12-10
    • 2013-07-17
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    相关资源
    最近更新 更多