【问题标题】:Alternative to embedding a font in as3在 as3 中嵌入字体的替代方法
【发布时间】:2011-07-19 00:07:43
【问题描述】:

我有一个非常基本的问题,以确保我没有遗漏一些明显的东西!

有人知道嵌入字体的替代方法吗?我正在开发一个全球应用程序,它将改变亚洲语言的字体。如果嵌入了这些字体,则会产生一个巨大的 SWF 文件,我想在亚洲系统上从 windows/fonts 文件夹中获取该字体。

干杯

【问题讨论】:

    标签: actionscript-3


    【解决方案1】:

    您可以通过将字体嵌入到外部 SWF 文件中来做到这一点。

    例如你有:

    Arial_EN.swf

    Arial_RU.swf

    Arial_JP.swf

    Arial_DE.swf

    然后在您的配置文件中定义要加载的 swf。 加载 SWF 后

    <!-- english Arial -->
    <o n="font">
    <o n="path">swf/Arial_DE.swf</o>
        <!-- Styles, under which names your fonts are exported while emebeded -->
    
        <o n="style">bold</o>
        <o n="style">bold_italic</o>
        <o n="style">italic</o>
        <o n="style">regular</o>
    </o>
    

    加载瑞士法郎:

    var fontLoader:Loader = new Loader ();
    //all the eventlistener and functions for it
    fontLoader.load ( xml.font.path )`
    

    加载 swf 并获得样式名称后,只需注册字体,如果您将使用 embedFonts=true 选项

    Font.registerFont ( fontLoader.getClass ( xml.font.style ) );
    

    【讨论】:

      【解决方案2】:

      我已经成功地使用诸如 Arial 之类的系统字体或简单的 _sans 用于具有特殊字符的语言。只需确保将 embedFonts 设置为 false。

      【讨论】:

      • +1 因为像亚洲这样的语言有太多的字符,你必须为一种字体嵌入 6-7MB(你需要额外嵌入粗体或斜体 => ±20MB)。对亚洲语言使用系统字体,仅对基于拉丁语的语言使用嵌入字体。
      • 这只有在您的设计团队允许的情况下才有效。我想如果我声明亚洲翻译必须使用系统字体,我会被涂上焦油和羽毛!
      • 同意这与我们在 webkinz.com 翻译 14 种不同语言时使用的方法相同。另请注意,您可以使用新的 TLFTextField,它可以更好地显示此类语言,并且还允许您将样式应用于系统字体,从而实现更全面的演示。
      • 如果您使用 TextFormat 根据位置设置字体,这会很好。这样,您就可以拥有具有所需字符和特殊字符后备的特殊字体。任何设计团队都很难找到带有西里尔文、泰文、普通话、日文和希腊文字符(仅举几例)的专业字体。
      • 伟大的 cmets 谢谢!这启发了我尝试使用 Arial 作为默认字体的 TextLayout 组件,该组件似乎运行良好。在这个应用程序的旧版本(as2)中实现嵌入字体是有原因的,所以不确定我是否可以只使用 Arial 或 _sans。
      【解决方案3】:

      您可以在不同的 swf 资产文件中嵌入您需要的不同字体,并且只在运行时加载所需的字体。

      【讨论】:

        猜你喜欢
        • 2012-10-10
        • 1970-01-01
        • 2011-12-10
        • 2013-07-17
        • 2012-09-27
        • 2010-11-07
        • 2011-11-16
        • 2011-09-25
        • 1970-01-01
        相关资源
        最近更新 更多