【问题标题】:ActionScript 3 & font embeddingActionScript 3 和字体嵌入
【发布时间】:2010-12-06 21:23:37
【问题描述】:

我在 actionscript 3 项目(flash CS4,不是 flex)中正确嵌入字体时遇到问题。

我按照这个 Adob​​e 指南进行字体嵌入: http://www.adobe.com/devnet/flash/quickstart/embedding_fonts/

指南告诉将 Textfield.embedFonts 属性设置为 true。如果我这样做并尝试在此文本字段中显示具有另一种字体的文本,则不会显示任何内容 - 很好,我希望它是这样的。

但现在我遇到了这个特殊的问题:

我以常规样式嵌入字体“Arial”,并在舞台上创建两个输入文本字段。其中一个我将 embedFonts 属性设置为 true(如指南中所述),另一个我保留原样。现在我将东西发布为 swf 并尝试在文本字段中输入以下(土耳其语)字符串

Yeni Yılın Barış ve Mutluluk Getirmesini Dileriz。

现在的问题是,未触及的文本字段正确显示字符串 - 但 embedFonts 设置为 true 的文本字段缺少一些字母(例如 ş 不显示)。但是 Arial 字体确实有这个字母,因为它在静态中正确显示 - 那么为什么当我设置此属性时它不能正确呈现(如指南中所述)?

在我的最终应用程序中应该有一个文本字段,但有多种嵌入字体和一种在它们之间切换的方式(例如,用户必须能够选择另一种字体来输入中文文本)。

谁能告诉我如何正确操作?

谢谢!

【问题讨论】:

  • 这里有一个简单的 fla 解释问题:neo.cycovery.com/fontembeddingtest.zip
  • 似乎并非所有字形都默认嵌入。检查这个kirupa.com/forum/showthread.php?t=289266
  • 我也遇到了这个问题...我没有嵌入任何字体,而是让用户选择他们喜欢的字体。当他们选择 Arial 时,(其他一些人也这样做)他们的一半字母丢失了。我不得不从我让他们选择的列表中排除嵌入的字体......这很痛苦!

标签: actionscript-3 fonts embedding


【解决方案1】:

如果您正在寻找可以在运行时加载不同字体的更强大的字体加载解决方案,我在此处 (http://labs.tomasino.org/2009/07/16/flash-as3-runtime-font-manager/) 发布了一些代码以及如何使用它的说明。

【讨论】:

    【解决方案2】:

    我使用系统字体,避免使用Arial等嵌入式字体。

      public function get availableFonts(): Array
      {
         var font: Font = null;
         var allFonts: Array = Font.enumerateFonts(true).sortOn("fontName", Array.CASEINSENSITIVE);
         var embeddedFonts: Array = Font.enumerateFonts(false);
    
         var excludeList: Object = {}
         for each(font in embeddedFonts)
         {
            excludeList[font.fontName] = '';
         }
    
         var ourFonts: Array = [];
         for each(font in allFonts)
         {
            if (!excludeList.hasOwnProperty(font.fontName))
            {
               ourFonts.push(font);
            }
         }
    
         return ourFonts;
      }
    

    返回的字体列表将包含所有字母。

    (如果 ActionScript 内置了一些更简单的方法来进行设置差异,那不是很好吗?)

    【讨论】:

      【解决方案3】:

      在 Flash 中嵌入字体并不像应有的那么简单,并且有很多特殊情况...确保您嵌入字体的正确字符的一种方法是启用“生成大小报告” Flash 发布设置....在那里您将看到正在嵌入的所有字体的所有字符。唯一的例外是使用 [EMBED 标签嵌入的字体不显示在那里。

      将字体添加到库中不会嵌入该字体的整个字符集(例如 Arial 大约 8mb)......它只嵌入其中的一个子集......我不确定它是否总是标准的西方拉丁语集,或者取决于计算机语言。 只要您使用实际的库字体名称(它显示在字体列表中,最后带有星号...在您的情况下,它将是“Arial*”)。

      您也可以使用带有 unicodeRange 的 [EMBED 标签来声明 de 字符集,但请记住,您声明的字体在编辑期间在 Flash IDE 中不可用...您需要在运行时设置它们使用 ActionScript(TextFormat、StyleSheet 等),这在使用 Flash 时不太实用。

      【讨论】:

      • 您好,感谢您的回答!奇怪的是,即使我创建了一个文本字段并输入字符串 Yeni Yılın Barış ve Mutluluk Getirmesini Dileriz。在创作环境中然后导出,文本的行为如下:-如果我将此文本字段的字符嵌入设置为“不嵌入”:文本看起来不错-如果我将此文本字段的字符嵌入设置为“全部”一些即使我将字符串粘贴到“嵌入这些字符”字段中,其中的字母也不会显示,导出后字符串将无法正常显示谢谢您的帮助
      猜你喜欢
      • 2012-05-01
      • 2013-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      • 2010-11-02
      • 2011-11-21
      • 2013-07-31
      相关资源
      最近更新 更多